From b2b1a7bb171134426cfb944bdf88baf8d98521f6 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 05:57:20 +0000 Subject: [PATCH 01/17] WIP: group chats (native binding, records file, models, requests) AI assistance: Claude Code. --- lib/src/crypto/backend.dart | 4 + lib/src/crypto/group_crypto.dart | 45 + lib/src/db/account_erasure.dart | 1 + lib/src/db/group_record_file.dart | 102 + lib/src/model/groups/group_models.dart | 97 + lib/src/model/groups/group_requests.dart | 68 + .../lib/fireplace_crypto.dart | 1 + .../lib/src/crypto/groups.dart | 128 + packages/fireplace_native/rust/Cargo.lock | 2407 +++++++++++++++-- packages/fireplace_native/rust/Cargo.toml | 4 +- 10 files changed, 2670 insertions(+), 187 deletions(-) create mode 100644 lib/src/crypto/group_crypto.dart create mode 100644 lib/src/db/group_record_file.dart create mode 100644 lib/src/model/groups/group_models.dart create mode 100644 lib/src/model/groups/group_requests.dart create mode 100644 packages/fireplace_native/lib/src/crypto/groups.dart diff --git a/lib/src/crypto/backend.dart b/lib/src/crypto/backend.dart index 64d154d..ad57aae 100644 --- a/lib/src/crypto/backend.dart +++ b/lib/src/crypto/backend.dart @@ -56,6 +56,10 @@ NativeCrypto get _nativeCrypto => _core ??= NativeCrypto( ), ); +/// One device's MLS group store (decision 0050); groups use the Rust core only. +NativeGroupStore openNativeGroupStore(List records) => + _nativeCrypto.openGroupStore(records); + T _sessionOperation(T Function() operation) { try { return operation(); diff --git a/lib/src/crypto/group_crypto.dart b/lib/src/crypto/group_crypto.dart new file mode 100644 index 0000000..48ff5d9 --- /dev/null +++ b/lib/src/crypto/group_crypto.dart @@ -0,0 +1,45 @@ +import 'dart:typed_data'; + +import 'package:fireplace/src/crypto/backend.dart' show openNativeGroupStore; +import 'package:fireplace_native/fireplace_crypto.dart'; + +/// A refused or malformed group operation. [invalid] is bad input; otherwise +/// the core refused it on protocol grounds (a forged credential, a Commit for +/// another epoch, a message it cannot decrypt). +class GroupCryptoException implements Exception { + GroupCryptoException(this.code); + final int code; + bool get invalid => code == 1; + @override + String toString() => 'Group operation refused ($code).'; +} + +/// One device's MLS store (mobile decision 0050). Groups use the Rust core +/// only: there is no Dart implementation of MLS. +/// +/// A changing request returns `changes` and leaves the store open until +/// [accept] or [rollback]. The caller saves the changes in between, so a crash +/// before [accept] reloads the old records and loses nothing. +class GroupCrypto { + GroupCrypto._(this._native); + + /// Opens the store from saved records (empty for a new device). + factory GroupCrypto.open(List records) => + GroupCrypto._(openNativeGroupStore(records)); + + final NativeGroupStore _native; + + Map call(Map request) { + try { + return _native.call(request); + } on NativeCryptoException catch (e) { + throw GroupCryptoException(e.code); + } + } + + void accept() => call({'op': 'accept'}); + void rollback() => call({'op': 'rollback'}); + Uint8List records() => _native.records(); + void close() => _native.close(); + bool get isClosed => _native.isClosed; +} diff --git a/lib/src/db/account_erasure.dart b/lib/src/db/account_erasure.dart index 7e8f603..36c1a9f 100644 --- a/lib/src/db/account_erasure.dart +++ b/lib/src/db/account_erasure.dart @@ -31,6 +31,7 @@ Future eraseAccountSecrets(SecretStore store, String uid) async { 'device', 'bundle', 'msgkey', + 'groupkey', 'chatprefskey', 'hidden', 'pushasked', diff --git a/lib/src/db/group_record_file.dart b/lib/src/db/group_record_file.dart new file mode 100644 index 0000000..0376d91 --- /dev/null +++ b/lib/src/db/group_record_file.dart @@ -0,0 +1,102 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:cryptography/cryptography.dart'; +import 'package:fireplace/src/crypto/codec.dart'; +import 'package:fireplace/src/db/secret_store.dart'; + +/// The device's MLS records (mobile decision 0050), encrypted with their own +/// account key (`groupkey:{uid}`) in one file in the account's history folder, +/// so account erasure removes it with the history. +/// +/// The records are kept in memory as a map; [apply] takes the changes the core +/// returned and [save] writes the whole set atomically (a temporary file, then +/// a rename), so a crash leaves either the old records or the new ones. +class GroupRecordFile { + GroupRecordFile._(this._file, this._key, this._aad, this._records); + + static final _aead = AesGcm.with256bits(); + + final File _file; + final SecretKey _key; + final List _aad; + final Map _records; + + static String keyName(String uid) => 'groupkey:$uid'; + + static Future open({ + required Directory historyDir, + required SecretStore secrets, + required String uid, + }) async { + var raw = await secrets.read(keyName(uid)); + if (raw == null) { + raw = b64(randomBytes(32)); + await secrets.write(keyName(uid), raw); + } + await historyDir.create(recursive: true); + final file = File('${historyDir.path}/groups.bin'); + final key = SecretKey(unb64(raw)); + final aad = utf8Bytes('fireplace-groups-v1:$uid'); + final records = {}; + if (await file.exists()) { + final data = await file.readAsBytes(); + if (data.length < 28) { + throw const FormatException('Group records damaged.'); + } + final box = SecretBox( + data.sublist(12, data.length - 16), + nonce: data.sublist(0, 12), + mac: Mac(data.sublist(data.length - 16)), + ); + final plain = await _aead.decrypt(box, secretKey: key, aad: aad); + final parts = plain.isEmpty ? const [] : unlp(plain); + if (parts.length.isOdd) { + throw const FormatException('Group records damaged.'); + } + for (var i = 0; i < parts.length; i += 2) { + records[b64(parts[i])] = parts[i + 1]; + } + } + return GroupRecordFile._(file, key, aad, records); + } + + /// The records in the core's blob form: `lp(key, value, ...)`, keys sorted. + Uint8List blob() { + final keys = _records.keys.toList()..sort(); + if (keys.isEmpty) return Uint8List(0); + return lp([ + for (final k in keys) ...[unb64(k), _records[k]!], + ]); + } + + bool get isEmpty => _records.isEmpty; + + /// Applies `changes` from a core result: `[{k, v | null}]`, base64. + void apply(Object? changes) { + if (changes is! List) return; + for (final c in changes) { + final k = (c as Map)['k'] as String; + final v = c['v']; + if (v == null) { + _records.remove(k); + } else { + _records[k] = unb64(v as String); + } + } + } + + Future save() async { + final nonce = randomBytes(12); + final box = await _aead.encrypt( + blob(), + secretKey: _key, + nonce: nonce, + aad: _aad, + ); + final bytes = concat([nonce, box.cipherText, box.mac.bytes]); + final tmp = File('${_file.path}.tmp'); + await tmp.writeAsBytes(bytes, flush: true); + await tmp.rename(_file.path); + } +} diff --git a/lib/src/model/groups/group_models.dart b/lib/src/model/groups/group_models.dart new file mode 100644 index 0000000..562b0f3 --- /dev/null +++ b/lib/src/model/groups/group_models.dart @@ -0,0 +1,97 @@ +/// Group chats (mobile decision 0050, `docs/protocol/group-chats-v1.md`). +abstract final class GroupLimits { + static const maxMembers = 16; + static const maxNameChars = 40; + static const keyPackagesPerDevice = 10; +} + +/// The local history's chat id for a group. Never passed to the 1:1 code. +String groupChatId(String gid) => 'group-$gid'; +bool isGroupChatId(String chatId) => chatId.startsWith('group-'); +String gidOfChat(String chatId) => chatId.substring('group-'.length); + +/// One member of a group, as MLS authenticated it. +class GroupMember { + const GroupMember({ + required this.uid, + required this.devices, + required this.admin, + }); + final String uid; + final List devices; + final bool admin; +} + +/// What this device knows of a group: from its MLS state, never from the +/// server's roster alone. +class GroupInfo { + const GroupInfo({ + required this.gid, + required this.name, + required this.epoch, + required this.members, + required this.active, + }); + final String gid; + final String name; + final int epoch; + final List members; + + /// False once this device has been removed. + final bool active; + + String get chatId => groupChatId(gid); + bool isAdmin(String uid) => + members.any((m) => m.uid == uid && m.admin) || + // When nobody administers the group, everybody does (as the server). + !members.any((m) => m.admin); + + static GroupInfo fromCore(Map j) { + final admins = {...(j['admins'] as List).cast()}; + final byUid = >{}; + for (final m in (j['members'] as List).cast()) { + byUid.putIfAbsent(m['uid'] as String, () => []).add(m['device'] as String); + } + return GroupInfo( + gid: j['gid'] as String, + name: j['name'] as String, + epoch: j['epoch'] as int, + active: j['active'] as bool, + members: [ + for (final e in byUid.entries) + GroupMember(uid: e.key, devices: e.value, admin: admins.contains(e.key)), + ], + ); + } +} + +/// An invitation waiting for this account to answer. +class GroupInvitation { + const GroupInvitation({required this.gid, required this.inviter, required this.at}); + final String gid; + final String inviter; + final DateTime at; +} + +/// Each member's chosen colour name (a ChatBubbleColor's name), shared only +/// inside the group (0050). +typedef MemberColors = Map; + +/// A membership request the server refused, with its reason. +class GroupRefused implements Exception { + GroupRefused(this.reason); + final String reason; + @override + String toString() => 'Group request refused ($reason).'; + + /// Plain words for people. + String get message => switch (reason) { + 'full' => 'This group is full.', + 'limit' => 'You have made the most groups allowed today. Try again tomorrow.', + 'too many groups' => 'You are in the most groups allowed.', + 'not an administrator' => 'Only administrators can do that.', + 'expired' => 'This invitation has expired.', + 'no invite' => 'This invitation is no longer open.', + _ => 'That did not work. Try again.', + }; +} diff --git a/lib/src/model/groups/group_requests.dart b/lib/src/model/groups/group_requests.dart new file mode 100644 index 0000000..aa1c56d --- /dev/null +++ b/lib/src/model/groups/group_requests.dart @@ -0,0 +1,68 @@ +import 'dart:async'; + +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:fireplace/src/crypto/codec.dart'; +import 'package:fireplace/src/model/common/daily_counter.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; + +/// Membership requests (backend decision 0023): a document the server's +/// function completes with `status: done | refused`. Each is counted in +/// `limits/groupOps` in the same batch, as the rules require. +class GroupRequests { + GroupRequests(this._db, this.uid, {Duration? timeout}) + : _timeout = timeout ?? const Duration(seconds: 30), + _counter = DailyCounter(_db, uid, 'groupOps'); + + final FirebaseFirestore _db; + final String uid; + final Duration _timeout; + final DailyCounter _counter; + + static String newId() => + b64(randomBytes(12)).replaceAll('+', '-').replaceAll('/', '_'); + + /// An account-level request: create, accept or decline. + Future account(String kind, Map fields) => + _run(_db.doc('users/$uid/groupOps/${newId()}'), kind, fields); + + /// A request about one group: invite, add, addDevice, remove, leave, + /// finalize or roles. + Future group(String gid, String kind, Map fields) => + _run(_db.doc('groups/$gid/ops/${newId()}'), kind, fields); + + /// Writes the request and waits for the server's answer. Throws + /// [GroupRefused] with the server's reason, or [TimeoutException] when the + /// outcome is not known yet (the request may still be handled). + Future _run( + DocumentReference> ref, + String kind, + Map fields, + ) async { + await _counter.withCount((add) async { + final batch = _db.batch() + ..set(ref, { + 'kind': kind, + 'by': uid, + 'at': FieldValue.serverTimestamp(), + ...fields, + }); + add(CounterWrite.batch(batch)); + await batch.commit(); + }); + final done = Completer(); + final sub = ref.snapshots().listen((snap) { + final status = snap.data()?['status']; + if (status == 'done' && !done.isCompleted) done.complete(); + if (status == 'refused' && !done.isCompleted) { + done.completeError(GroupRefused('${snap.data()?['reason'] ?? 'refused'}')); + } + }, onError: (Object e) { + if (!done.isCompleted) done.completeError(e); + }); + try { + await done.future.timeout(_timeout); + } finally { + await sub.cancel(); + } + } +} diff --git a/packages/fireplace_native/lib/fireplace_crypto.dart b/packages/fireplace_native/lib/fireplace_crypto.dart index 63aa809..3fd296a 100644 --- a/packages/fireplace_native/lib/fireplace_crypto.dart +++ b/packages/fireplace_native/lib/fireplace_crypto.dart @@ -10,6 +10,7 @@ import 'src/crypto/memory.dart'; part 'src/crypto/calls.dart'; part 'src/crypto/sessions.dart'; part 'src/crypto/api.dart'; +part 'src/crypto/groups.dart'; class NativeCryptoException implements Exception { const NativeCryptoException(this.code); diff --git a/packages/fireplace_native/lib/src/crypto/groups.dart b/packages/fireplace_native/lib/src/crypto/groups.dart new file mode 100644 index 0000000..c4ec33d --- /dev/null +++ b/packages/fireplace_native/lib/src/crypto/groups.dart @@ -0,0 +1,128 @@ +part of '../../fireplace_crypto.dart'; + +/// One device's MLS group store in the Rust core (Cargo feature `groups`, +/// mobile decision 0050). Requests and results are JSON; see the core's +/// `src/group/mod.rs`. A store can hold several megabytes, so this binding +/// allows larger buffers than the 1:1 calls. +class NativeGroupStore implements Finalizable { + NativeGroupStore._(this._core, this._handle) + : _finalizer = _finalizerFor(_core) { + try { + _finalizer.attach(this, _handle, detach: this); + } catch (_) { + _destroy(_handle); + _handle = nullptr; + rethrow; + } + } + + static const maxBytes = 64 * 1024 * 1024; + + final NativeCrypto _core; + Pointer _handle; + final NativeFinalizer _finalizer; + static final _finalizers = {}; + static NativeFinalizer _finalizerFor(NativeCrypto core) { + final callback = core.library + .lookup)>>( + 'fp_group_destroy', + ); + return _finalizers.putIfAbsent( + callback.address, + () => NativeFinalizer(callback), + ); + } + + late final _destroy = _core.library + .lookupFunction< + Void Function(Pointer), + void Function(Pointer) + >('fp_group_destroy'); + late final _call = _core.library + .lookupFunction< + Int32 Function( + Pointer, + Pointer, + UintPtr, + Pointer, + ), + int Function(Pointer, Pointer, int, Pointer) + >('fp_group_call'); + late final _records = _core.library + .lookupFunction< + Int32 Function(Pointer, Pointer), + int Function(Pointer, Pointer) + >('fp_group_records'); + + /// Runs one request. Throws [NativeCryptoException] with the core's code. + Map call(Map request) { + _ensureOpen(); + final bytes = NativeCrypto.jsonBytes(request); + return _core._scope((scope) { + final input = _input(scope, bytes); + final out = scope.output(); + NativeCrypto._check(_call(_handle, input, bytes.length, out)); + return NativeCrypto.decodeJson(_copy(out)); + }); + } + + /// Every record, as the length-prefixed blob `fp_group_open` takes. + Uint8List records() { + _ensureOpen(); + return _core._scope((scope) { + final out = scope.output(); + NativeCrypto._check(_records(_handle, out)); + return _copy(out); + }); + } + + void close() { + if (_handle == nullptr) return; + _finalizer.detach(this); + _destroy(_handle); + _handle = nullptr; + } + + bool get isClosed => _handle == nullptr; + + void _ensureOpen() { + if (_handle == nullptr) throw StateError('The group store is closed.'); + } + + static Pointer _input(NativeScope scope, List bytes) { + if (bytes.length > maxBytes) { + throw const FormatException('Group request exceeds the size limit.'); + } + final pointer = scope.allocate(bytes.length); + pointer.asTypedList(bytes.length).setAll(0, bytes); + return pointer; + } + + static Uint8List _copy(Pointer output) { + final size = output.ref.len; + if (size == 0) return Uint8List(0); + if (output.ref.ptr == nullptr || size > maxBytes) { + throw StateError('Invalid group output buffer.'); + } + return Uint8List.fromList(output.ref.ptr.asTypedList(size)); + } +} + +extension NativeCryptoGroups on NativeCrypto { + /// Opens a store from saved records (empty for a new device). + NativeGroupStore openGroupStore(List records) { + final open = library + .lookupFunction< + Int32 Function(Pointer, UintPtr, Pointer>), + int Function(Pointer, int, Pointer>) + >('fp_group_open'); + return _scope((scope) { + final input = NativeGroupStore._input(scope, records); + final handle = scope + .allocate(sizeOf>()) + .cast>(); + NativeCrypto._check(open(input, records.length, handle)); + return NativeGroupStore._(this, handle.value); + }); + } +} diff --git a/packages/fireplace_native/rust/Cargo.lock b/packages/fireplace_native/rust/Cargo.lock index 1fcd432..4836b47 100644 --- a/packages/fireplace_native/rust/Cargo.lock +++ b/packages/fireplace_native/rust/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common 0.1.7", + "generic-array", +] + [[package]] name = "aead" version = "0.6.1" @@ -9,7 +19,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common 0.2.2", - "inout", + "inout 0.2.6", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures 0.2.17", ] [[package]] @@ -18,45 +39,105 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138" dependencies = [ - "cipher", + "cipher 0.5.2", "cpubits", "cpufeatures 0.3.1", "zeroize", ] +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.1", + "subtle", +] + [[package]] name = "aes-gcm" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f2b8006a0c83f52b62ba44a97b58bf76fe2f70a329e588f67f89691d93d498f" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", + "aead 0.6.1", + "aes 0.9.1", + "cipher 0.5.2", + "ctr 0.10.1", "ctutils", - "ghash", + "ghash 0.6.0", "zeroize", ] +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + [[package]] name = "anyhow" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" +[[package]] +name = "async-trait" +version = "0.1.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.10", +] + [[package]] name = "autocfg" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64ct" version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex 1.3.0", + "syn 2.0.119", +] + [[package]] name = "bitflags" version = "2.13.2" @@ -82,12 +163,83 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bumpalo" +version = "3.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87a0cf66fd1eb2fb7b822cb78370d82303750809bc6ba855f3f58e517d3238db" + +[[package]] +name = "cc" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ef9e3e8154a45c7a95cff4c1299702106ad94062d7bb85fdc5d3a5afd91d45" +dependencies = [ + "find-msvc-tools", + "shlex 2.0.1", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures 0.2.17", +] + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.0", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead 0.5.2", + "chacha20 0.9.1", + "cipher 0.4.4", + "poly1305", + "zeroize", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common 0.1.7", + "inout 0.1.4", + "zeroize", +] + [[package]] name = "cipher" version = "0.5.2" @@ -96,7 +248,18 @@ checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ "block-buffer 0.12.1", "crypto-common 0.2.2", - "inout", + "inout 0.2.6", +] + +[[package]] +name = "clang-sys" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" +dependencies = [ + "glob", + "libc", + "libloading", ] [[package]] @@ -105,12 +268,29 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "const-oid" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be95d4a884358a21a199689323c29e9256b4a1b315e22f183d155422041d3a9a" +[[package]] +name = "core-models" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee3344d349528f449816cfa85e558c439bdca5a6d8a738cfb21e69f0b2b1952f" +dependencies = [ + "hax-lib", + "pastey", + "rand", +] + [[package]] name = "cpubits" version = "0.1.1" @@ -135,6 +315,54 @@ dependencies = [ "libc", ] +[[package]] +name = "crabgrind" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7459e07732f6de74001fcf73a3fdfbb0f368e4fd8e2392f4a2206a065e6e95" +dependencies = [ + "bindgen", + "cc", + "pkg-config", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -142,6 +370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -151,8 +380,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ + "getrandom 0.4.1", "hybrid-array", - "rand_core", + "rand_core 0.10.0", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher 0.4.4", ] [[package]] @@ -161,7 +400,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baaca1c4b237092596f64d571e9db6ce4109c4ef9742e27590f1709594461f21" dependencies = [ - "cipher", + "cipher 0.5.2", ] [[package]] @@ -173,6 +412,22 @@ dependencies = [ "cmov", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto 0.2.9", + "rustc_version", + "subtle", + "zeroize", +] + [[package]] name = "curve25519-dalek" version = "5.0.0" @@ -183,7 +438,7 @@ dependencies = [ "cpufeatures 0.3.1", "curve25519-dalek-derive", "digest 0.11.3", - "fiat-crypto", + "fiat-crypto 0.3.0", "rustc_version", "subtle", "zeroize", @@ -200,16 +455,36 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid 0.9.6", + "pem-rfc7468", + "zeroize", +] + [[package]] name = "der" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a996a108feb8b427a6e12fcf6af4aa83409b79d72c15337d7741368131ee004" dependencies = [ - "const-oid", + "const-oid 0.10.3", "zeroize", ] +[[package]] +name = "deranged" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e9de72ce2ad1f90dc62fa25f0f430ef85eb4b0d8fa0be4f30373bc40a21d28e" +dependencies = [ + "serde_core", +] + [[package]] name = "digest" version = "0.10.7" @@ -217,6 +492,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid 0.9.6", "crypto-common 0.1.7", "subtle", ] @@ -228,18 +504,70 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer 0.12.1", + "const-oid 0.10.3", "crypto-common 0.2.2", + "ctutils", "zeroize", ] +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.10", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der 0.7.10", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.2.0", + "spki 0.7.3", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.2.0", +] + [[package]] name = "ed25519" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ - "pkcs8", - "signature", + "pkcs8 0.11.0", + "signature 3.0.0", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "rand_core 0.6.4", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", ] [[package]] @@ -248,11 +576,38 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 5.0.0", + "ed25519 3.0.0", "serde", "sha2 0.11.1", - "signature", + "signature 3.0.0", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "hkdf 0.12.4", + "pem-rfc7468", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1", "subtle", "zeroize", ] @@ -263,28 +618,66 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826" +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "fiat-crypto" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" +[[package]] +name = "find-msvc-tools" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48" + [[package]] name = "fireplace-crypto" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d230c2cdc16ebad88c19ae86fe5c66469f1b9d8dc167288c0d0a6c23b9a307" +source = "git+https://github.com/fireplacechat/fireplace-crypto?rev=276eaacce7764f2c4914eb975040d9347db18079#276eaacce7764f2c4914eb975040d9347db18079" dependencies = [ - "aes-gcm", - "ed25519-dalek", - "getrandom", - "hkdf", + "aes-gcm 0.11.1", + "ed25519-dalek 3.0.0", + "getrandom 0.4.1", + "hkdf 0.12.4", "ml-dsa", "ml-kem", - "rand_core", + "openmls", + "openmls_basic_credential", + "openmls_memory_storage", + "openmls_rust_crypto", + "openmls_traits", + "rand_core 0.10.0", "sha2 0.10.9", "subtle", - "x25519-dalek", + "x25519-dalek 3.0.0", "zeroize", ] @@ -301,6 +694,39 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -309,32 +735,71 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", - "r-efi", - "rand_core", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "rand_core 0.10.0", "wasip2", "wasip3", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval 0.6.2", +] + [[package]] name = "ghash" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eecf2d5dc9b66b732b97707a0210906b1d30523eb773193ab777c0c84b3e8d5" dependencies = [ - "polyval", + "polyval 0.7.3", "zeroize", ] +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "hashbrown" version = "0.15.5" @@ -350,19 +815,83 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "hax-lib" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a33cb227f97ee5c419064c31d7c55a7d895f28d8019ccdadc311cc036500c4" +dependencies = [ + "hax-lib-macros", + "num-bigint", + "num-traits", +] + +[[package]] +name = "hax-lib-macros" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28da835a5f153e9f3d0cc1f42ee605a1cfa9093c93348193793d60a1b0908b51" +dependencies = [ + "hax-lib-macros-types", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "hax-lib-macros-types" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed327e9a28d6ee018a4a9ba842d4ee27e378c8a591d2beb6f42f32b24a02fcb" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "uuid", +] + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + [[package]] name = "hkdf" version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ - "hmac", + "hmac 0.12.1", +] + +[[package]] +name = "hkdf" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" +dependencies = [ + "hmac 0.13.0", ] [[package]] @@ -374,6 +903,84 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "hmac" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" +dependencies = [ + "digest 0.11.3", +] + +[[package]] +name = "hpke-rs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812de62ab573b876c6c40d7553bae9402ae3bad95b64af06f964388eecb9b7b1" +dependencies = [ + "hpke-rs-crypto", + "hpke-rs-libcrux", + "hpke-rs-rust-crypto", + "libcrux-sha3", + "log", + "serde", + "subtle", + "tls_codec", + "zeroize", +] + +[[package]] +name = "hpke-rs-crypto" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c461da2e0c9c93d875b597f0c78214fb0d2d5c57834b2ef2a2fa057fa20e24" +dependencies = [ + "rand", + "zeroize", +] + +[[package]] +name = "hpke-rs-libcrux" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c1ace95ef11fbbd84527eada5fc1304f66720fc4c008db30d888d62d3c52613" +dependencies = [ + "hpke-rs-crypto", + "libcrux-aead", + "libcrux-ecdh", + "libcrux-hkdf", + "libcrux-kem", + "libcrux-traits", + "rand", + "rand_chacha 0.10.0", + "rand_core 0.10.0", + "zeroize", +] + +[[package]] +name = "hpke-rs-rust-crypto" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a606ac19851da841862ef5f39d26d6227bfcfb4047417801a66c1f6e6652d71" +dependencies = [ + "aes-gcm 0.10.3", + "chacha20poly1305", + "hkdf 0.13.0", + "hpke-rs-crypto", + "k256", + "ml-kem", + "p256", + "p384", + "rand", + "rand_chacha 0.10.0", + "rand_core 0.10.0", + "sha2 0.11.1", + "subtle", + "x-wing", + "x25519-dalek 2.0.1", + "zeroize", +] + [[package]] name = "hybrid-array" version = "0.4.15" @@ -385,12 +992,116 @@ dependencies = [ "zeroize", ] +[[package]] +name = "icu_collections" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe090a42a0d3140fed8c63263ed1fecc02422cb2f4bfe55cd8de2de1b8e105dd" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25d29b57c17c6528d0dc4c2141cfa2d08200465acb537a3909c8b9b8a4a984c0" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "404a3b8c486f205c87fe7f23ab6894d84a4ad76d6e4671ae1981ba7def87c599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20f0088bfb7441f7a37fa0c9e20cb1e9cba1cac6b9ce8cd2a6dc44294f8e8cbc" + +[[package]] +name = "icu_properties" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ea83d991c56158f7cf898bf86436c1dfe7c07ee82fe88951f2695c9f37a379f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98f29af82d02b163fe50161388350e743bb3107cc8e8c2f7314cb505faddfcf" + +[[package]] +name = "icu_provider" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413099315636c588ee8f011190b329b971a09a8fae9d157e01dcae8379468514" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "id-arena" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "indexmap" version = "2.14.2" @@ -403,6 +1114,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + [[package]] name = "inout" version = "0.2.6" @@ -412,12 +1132,42 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bd1574e617a9a6c1f8f8181bd7e841e1f20e4277607ef28945765188d6284d4" +[[package]] +name = "js-sys" +version = "0.3.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc09d2154098bbf4ef54eab6b117a3c24cbbffe94046b16ee6d6d4510584d3a" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "elliptic-curve", +] + [[package]] name = "keccak" version = "0.2.2" @@ -435,7 +1185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01737161ba802849cfd486b5bd209d38ba4943494c249a8126005170c7621edd" dependencies = [ "crypto-common 0.2.2", - "rand_core", + "rand_core 0.10.0", ] [[package]] @@ -451,170 +1201,1175 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a" [[package]] -name = "log" -version = "0.4.35" +name = "libcrux-aead" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d15f86d12da44cd8d4ec3c73984537eb7f4cadcb9776a575a0a8a05ca11005c" +checksum = "22acbe68be84b7b41aaba6e39b87036fc4324dee628d94773750bf3d7e906d69" +dependencies = [ + "libcrux-aes", + "libcrux-chacha20poly1305", + "libcrux-secrets", + "libcrux-traits", +] [[package]] -name = "memchr" -version = "2.8.3" +name = "libcrux-aes" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" +checksum = "57cc95b11dbc797b1e169467b1fc4205c4e6ee2ce516a035ad7342ce5f6ae971" +dependencies = [ + "libcrux-intrinsics", + "libcrux-platform", + "libcrux-secrets", + "libcrux-traits", +] [[package]] -name = "ml-dsa" -version = "0.1.2" +name = "libcrux-chacha20poly1305" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f6d49c3f3f0e10e18ca975ffda66f8da0ec36521c1d911adcbc521bf0743f5c" +checksum = "537e6eee5cdc9a980014d058784b0be09614f0596df789b114f7833aa9f35d75" dependencies = [ - "crypto-common 0.2.2", - "ctutils", - "hybrid-array", - "module-lattice", - "pkcs8", - "shake", - "signature", - "zeroize", + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-poly1305", + "libcrux-secrets", + "libcrux-traits", ] [[package]] -name = "ml-kem" -version = "0.3.4" +name = "libcrux-curve25519" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84ca78b66f46050d49fa21693ae8adab2081d8101b65d8067316b6b70b64a0d1" +checksum = "e4f3cfd5e31cb9745e290ee061222c380ec42884654b09fc7d12a5b0ed63e028" dependencies = [ - "hybrid-array", - "kem", - "module-lattice", - "pkcs8", - "rand_core", - "sha3", - "shake", - "zeroize", + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-secrets", + "libcrux-traits", ] [[package]] -name = "module-lattice" -version = "0.2.4" +name = "libcrux-ecdh" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e412c8ee83a1c678f427806219c49c96b2511b9f07497514f0e43fb26155" +checksum = "4a227590b89ff55ce7cd97b5a7468c82d231db8f3b890bb4d4fb6d271e7524d7" dependencies = [ - "ctutils", - "hybrid-array", - "num-traits", - "zeroize", + "libcrux-curve25519", + "libcrux-p256", + "rand", + "tls_codec", ] [[package]] -name = "num-traits" -version = "0.2.19" +name = "libcrux-ed25519" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "cc463d32f41c47e03dc664547596928a13cb3d79c03453a9b3fe654649313982" dependencies = [ - "autocfg", + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-sha2", + "rand_core 0.10.0", ] [[package]] -name = "pkcs8" -version = "0.11.0" +name = "libcrux-hacl-rs" +version = "0.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" +checksum = "66106db376ae249af86911aee048cf73ea1f394d6653026fc988dd22cf2a4ace" dependencies = [ - "der", - "spki", + "libcrux-macros", ] [[package]] -name = "polyval" -version = "0.7.3" +name = "libcrux-hkdf" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0fa31d631f2b2cb2a544d0aa321ce847a94764d701ca2becc411138b93d49cd" +checksum = "dc94e651dca4d47edbcdd88bb2428ce16a2bd86b7a4e7170da87b505478f9839" dependencies = [ - "cpubits", - "cpufeatures 0.3.1", - "universal-hash", - "zeroize", + "libcrux-hacl-rs", + "libcrux-hmac", + "libcrux-secrets", ] [[package]] -name = "prettyplease" -version = "0.2.37" +name = "libcrux-hmac" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +checksum = "500ad9b32c715161b594172ca1fb11503a1c033b393ff4c0c33505ce51c1943c" dependencies = [ - "proc-macro2", - "syn 2.0.119", + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-sha2", + "libcrux-traits", ] [[package]] -name = "proc-macro2" -version = "1.0.107" +name = "libcrux-hmac-drbg" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +checksum = "860985647c344b7357ce950bf8e13f076db47df36132d49b48a6fff30abe5be6" dependencies = [ - "unicode-ident", + "libcrux-hmac", + "rand", ] [[package]] -name = "quote" -version = "1.0.47" +name = "libcrux-intrinsics" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +checksum = "98a0c574d4eb81d0814bc2b91e4a433d7e0b35851b1d62eb5dd95c064f1f76d0" dependencies = [ - "proc-macro2", + "core-models", + "hax-lib", ] [[package]] -name = "r-efi" -version = "5.3.0" +name = "libcrux-kem" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "541a7377fb35060892e0620982e224e47419f10da8c212453bf642dafe529691" +dependencies = [ + "libcrux-curve25519", + "libcrux-ecdh", + "libcrux-ml-kem", + "libcrux-p256", + "libcrux-sha3", + "libcrux-traits", + "rand", +] [[package]] -name = "rand_core" -version = "0.10.0" +name = "libcrux-macros" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" +checksum = "ffd6aa2dcd5be681662001b81d493f1569c6d49a32361f470b0c955465cd0338" +dependencies = [ + "quote", + "syn 2.0.119", +] [[package]] -name = "rustc_version" -version = "0.4.1" +name = "libcrux-ml-kem" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "1d8160f7d64fd2716b4fd05cc886a042f8dcda18d9206c0d506e2c67bdf97daa" dependencies = [ - "semver", + "hax-lib", + "libcrux-intrinsics", + "libcrux-platform", + "libcrux-secrets", + "libcrux-sha3", + "libcrux-traits", + "rand", + "tls_codec", ] [[package]] -name = "semver" -version = "1.0.28" +name = "libcrux-p256" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +checksum = "3400732702d578be622257b98cec85e9b0cd34a67f1f06d3ebe9ae34963cdf02" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-secrets", + "libcrux-sha2", + "libcrux-traits", +] [[package]] -name = "serde" -version = "1.0.229" +name = "libcrux-platform" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9e21d7ed31a92ac539bd69a8c970b183ee883872d2d19ce27036e24cb8ecc4" +dependencies = [ + "libc", +] + +[[package]] +name = "libcrux-poly1305" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a9144949845813a0b8787d08cbba47baabe59c83f3043e558e6e92385c40cc" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", +] + +[[package]] +name = "libcrux-secrets" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79054fc9037cb70d6a546cf094cea7d7df06af5e49d230ba24103d27ccc886f1" +dependencies = [ + "crabgrind", + "hax-lib", +] + +[[package]] +name = "libcrux-sha2" +version = "0.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e46e1be0b77098cc6ce82137864936ecad3a1b9fd4303dd51202ca140dd1e" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-traits", +] + +[[package]] +name = "libcrux-sha3" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c09f5c39afae0528e1f70a3c1e3c6ee649ec1f19dda26fc9b6ea91108fb879ef" +dependencies = [ + "hax-lib", + "libcrux-intrinsics", + "libcrux-platform", + "libcrux-traits", +] + +[[package]] +name = "libcrux-traits" +version = "0.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fa7a21e8c2e8baa8b40f0b176740f2ca4baadd79d1b00e48d6b1e363c42085a" +dependencies = [ + "libcrux-secrets", + "rand", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "log" +version = "0.4.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d15f86d12da44cd8d4ec3c73984537eb7f4cadcb9776a575a0a8a05ca11005c" + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "ml-dsa" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f6d49c3f3f0e10e18ca975ffda66f8da0ec36521c1d911adcbc521bf0743f5c" +dependencies = [ + "const-oid 0.10.3", + "crypto-common 0.2.2", + "ctutils", + "hybrid-array", + "module-lattice", + "pkcs8 0.11.0", + "shake", + "signature 3.0.0", + "zeroize", +] + +[[package]] +name = "ml-kem" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84ca78b66f46050d49fa21693ae8adab2081d8101b65d8067316b6b70b64a0d1" +dependencies = [ + "hybrid-array", + "kem", + "module-lattice", + "pkcs8 0.11.0", + "rand_core 0.10.0", + "sha3", + "shake", + "zeroize", +] + +[[package]] +name = "module-lattice" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e412c8ee83a1c678f427806219c49c96b2511b9f07497514f0e43fb26155" +dependencies = [ + "ctutils", + "hybrid-array", + "num-traits", + "zeroize", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openmls" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce4173f914cbc2dd28d9499f19e92f3e1bfebd9eea1607889924a77ca63d3ffc" +dependencies = [ + "log", + "openmls_basic_credential", + "openmls_libcrux_crypto", + "openmls_memory_storage", + "openmls_rust_crypto", + "openmls_serialization_helpers", + "openmls_sqlite_storage", + "openmls_test", + "openmls_traits", + "rayon", + "serde", + "serde_bytes", + "thiserror", + "tls_codec", + "zeroize", +] + +[[package]] +name = "openmls_basic_credential" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbd3f0c3422e7c7a8496f042b547b0c28d0793f8ba97feb401966e58196a1e40" +dependencies = [ + "ed25519-dalek 2.2.0", + "ml-dsa", + "openmls_traits", + "p256", + "p384", + "rand_core 0.6.4", + "serde", + "tls_codec", + "zeroize", +] + +[[package]] +name = "openmls_libcrux_crypto" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41e6367fb30f91f21e4d30f4f58a8d3b41f96f55c3e4b5acfa1d6d18c9dd4855" +dependencies = [ + "hpke-rs", + "hpke-rs-crypto", + "hpke-rs-libcrux", + "libcrux-aead", + "libcrux-ed25519", + "libcrux-hkdf", + "libcrux-hmac", + "libcrux-hmac-drbg", + "libcrux-sha2", + "libcrux-traits", + "openmls_memory_storage", + "openmls_traits", + "rand", + "tls_codec", +] + +[[package]] +name = "openmls_memory_storage" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce927945a16eaa19302ed5ccef052f01ba68f2ba7ae67e4ac4ff2fc661445364" +dependencies = [ + "hex", + "log", + "openmls_traits", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "openmls_rust_crypto" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36bf3fe824ead6e81d22f49a9cd7feffca3494979fac14c1248e19516e3625f1" +dependencies = [ + "aes-gcm 0.10.3", + "chacha20poly1305", + "ed25519-dalek 2.2.0", + "hkdf 0.13.0", + "hmac 0.13.0", + "hpke-rs", + "hpke-rs-crypto", + "hpke-rs-rust-crypto", + "ml-dsa", + "openmls_memory_storage", + "openmls_traits", + "p256", + "p384", + "rand_chacha 0.3.1", + "rand_core 0.10.0", + "rand_core 0.6.4", + "sha2 0.11.1", + "thiserror", + "tls_codec", +] + +[[package]] +name = "openmls_serialization_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e2cf2193541e83ce1a89aaa44c2fd4783abd54853823075a32b60ef032284c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "thiserror", +] + +[[package]] +name = "openmls_sqlite_storage" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a48acaffbed1bbed61c5030193e374ff4914331ed5f4a604bd5a4692c0a713" +dependencies = [ + "openmls_traits", + "refinery", + "rusqlite", + "serde", +] + +[[package]] +name = "openmls_test" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b4f925203b593f1ac9b5155d71f74355ef6a3ef34a081a4749bbc92288c761" +dependencies = [ + "openmls_libcrux_crypto", + "openmls_rust_crypto", + "openmls_sqlite_storage", + "openmls_traits", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openmls_traits" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac13edad8698eb1917cbc1dab99591fa1594d84320904fe3fc5121854f95831c" +dependencies = [ + "serde", + "tls_codec", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.9", +] + +[[package]] +name = "p384" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.9", +] + +[[package]] +name = "pastey" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.10", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" +dependencies = [ + "der 0.8.3", + "spki 0.8.1", +] + +[[package]] +name = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash 0.5.1", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash 0.5.1", +] + +[[package]] +name = "polyval" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0fa31d631f2b2cb2a544d0aa321ce847a94764d701ca2becc411138b93d49cd" +dependencies = [ + "cpubits", + "cpufeatures 0.3.1", + "universal-hash 0.6.1", + "zeroize", +] + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6394b9e965e73d0a289ee54f589087e2c676aedf60885baf52c76b771e4958" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.119", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +dependencies = [ + "chacha20 0.10.2", + "getrandom 0.4.1", + "rand_core 0.10.0", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" +dependencies = [ + "ppv-lite86", + "rand_core 0.10.0", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "refinery" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2a344cdb48871e27addeafbbaffab8828cc12cec2b9041119e9bea0c0f551a" +dependencies = [ + "refinery-core", + "refinery-macros", +] + +[[package]] +name = "refinery-core" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eeafd893124f29183dd6afa9137a27e7bef59250223b8b660005279c60aea4" +dependencies = [ + "async-trait", + "cfg-if", + "log", + "regex", + "rusqlite", + "serde", + "siphasher", + "thiserror", + "time", + "toml", + "url", + "walkdir", +] + +[[package]] +name = "refinery-macros" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90cea6d11a9a4e8a85a884b6305461004101b28ca65dd35ec028e009a898e16" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "refinery-core", + "regex", + "syn 2.0.119", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "rusqlite" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der 0.7.10", + "generic-array", + "pkcs8 0.10.2", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ - "serde_core", + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.10", +] + +[[package]] +name = "serde_json" +version = "1.0.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c187e0a369471c550af028cba56d4f4fa2a489ad28151ae95a4d340a2a8b782" +dependencies = [ + "serde_core", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "digest 0.11.3", +] + +[[package]] +name = "sha3" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" +dependencies = [ + "digest 0.11.3", + "keccak", + "sponge-cursor", +] + +[[package]] +name = "shake" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09057cb2149ad4cbd2da1e26b351f9a4c354219421229c69c3063e6f61947c4a" +dependencies = [ + "digest 0.11.3", + "keccak", + "sponge-cursor", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" +dependencies = [ + "digest 0.11.3", + "rand_core 0.10.0", +] + +[[package]] +name = "siphasher" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.16.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "149309498a5f7334b12ddae0cad8aba81ce785fe91755068867e017cf98fee46" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der 0.7.10", +] + +[[package]] +name = "spki" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef958a98b9d5da290cfc78946e9f3e61e1e62a18db0d92cac0b83cc161491a9" +dependencies = [ + "base64ct", + "der 0.8.3", +] + +[[package]] +name = "sponge-cursor" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" +dependencies = [ + "zeroize", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "serde_core" -version = "1.0.229" +name = "syn" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +checksum = "4ae9ccbea3a7b0b09443036490c8f34a8b1b760fd345e5c0dae0aac718faea79" dependencies = [ - "serde_derive", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "serde_derive" -version = "1.0.229" +name = "synstructure" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" dependencies = [ "proc-macro2", "quote", @@ -622,119 +2377,127 @@ dependencies = [ ] [[package]] -name = "serde_json" -version = "1.0.154" +name = "thiserror" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", + "thiserror-impl", ] [[package]] -name = "sha2" -version = "0.10.9" +name = "thiserror-impl" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "digest 0.10.7", + "proc-macro2", + "quote", + "syn 3.0.10", ] [[package]] -name = "sha2" -version = "0.11.1" +name = "time" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", - "digest 0.11.3", + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", ] [[package]] -name = "sha3" -version = "0.12.0" +name = "time-core" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" -dependencies = [ - "digest 0.11.3", - "keccak", - "sponge-cursor", -] +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] -name = "shake" -version = "0.1.0" +name = "time-macros" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09057cb2149ad4cbd2da1e26b351f9a4c354219421229c69c3063e6f61947c4a" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ - "digest 0.11.3", - "keccak", - "sponge-cursor", + "num-conv", + "time-core", ] [[package]] -name = "signature" -version = "3.0.0" +name = "tinystr" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" +checksum = "abc840c238154d58f9e86b2792261edfde565a17696e1cda1a449de27979801a" dependencies = [ - "digest 0.11.3", - "rand_core", + "displaydoc", + "zerovec", ] [[package]] -name = "spki" -version = "0.8.1" +name = "tls_codec" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef958a98b9d5da290cfc78946e9f3e61e1e62a18db0d92cac0b83cc161491a9" +checksum = "18cc98286004cea38f717e2b03d990fc774fbfd38a82720de40e5c94365067c8" dependencies = [ - "base64ct", - "der", + "serde", + "serde_bytes", + "tls_codec_derive", + "zeroize", ] [[package]] -name = "sponge-cursor" -version = "0.1.0" +name = "tls_codec_derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" +checksum = "674f41dd95f76cdeb005c83f9444e20cf43daebef37cde9e49a9ca6f4e87b423" dependencies = [ - "zeroize", + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "toml" +version = "1.2.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "d5755c51863cdac711f1956baf8eb9588e060755f7d3c4c979e70ea1e1f32cd7" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] [[package]] -name = "syn" -version = "2.0.119" +name = "toml_datetime" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +checksum = "173f25c883cd2176a2d8212155638c0a60d484a9d84546d270866f40f56b6e49" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "serde_core", ] [[package]] -name = "syn" -version = "3.0.10" +name = "toml_parser" +version = "1.1.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae9ccbea3a7b0b09443036490c8f34a8b1b760fd345e5c0dae0aac718faea79" +checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "winnow", ] +[[package]] +name = "toml_writer" +version = "1.2.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "009dbb7700f11c55ef83aebbe4c0e9cf1f1ac0844bd8d6f00dc38f302026e13a" + [[package]] name = "typenum" version = "1.20.1" @@ -753,6 +2516,16 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common 0.1.7", + "subtle", +] + [[package]] name = "universal-hash" version = "0.6.1" @@ -763,12 +2536,72 @@ dependencies = [ "ctutils", ] +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3bd9d3e571c26fcce9d033b87ea5ab061b8d2ffe9b7a5675d810d68f03edf0" +dependencies = [ + "utf_types", +] + +[[package]] +name = "utf_types" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3b425286980a367278453f3b6d28cdcb134b574e5a35824a6ff5eebad50bb6" + +[[package]] +name = "uuid" +version = "1.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bed99139f7dac9b5cfe5f17be4d66dc7079a34dee1d74bcc77217119240e267c" +dependencies = [ + "getrandom 0.4.1", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -787,6 +2620,50 @@ dependencies = [ "wit-bindgen 0.51.0", ] +[[package]] +name = "wasm-bindgen" +version = "0.2.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0181c14ddd6c7b8b0b0132a5f1ea2f32be0d893cd3ea97b6e3b28886b8a3d1c" +dependencies = [ + "cfg-if", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e931a02a39abdbf66966fc35902b5ed58344750a70885bed4ebb3d8eaf28ed9" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ca4b54280e455bd831e33a6b8e734baf432fe63fbc35c42ac14ce67a043a53a" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 3.0.10", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b1f9c3798725016c6ee5f2f57869ec0831e8bbc0ab0310a86e787e97f41389e" +dependencies = [ + "unicode-ident", +] + [[package]] name = "wasm-encoder" version = "0.244.0" @@ -821,6 +2698,36 @@ dependencies = [ "semver", ] +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3b93199df0ab874cdf0c6a94f0a0dc3423fe41f1cafb62b8bd7b1deb277aef" + [[package]] name = "wit-bindgen" version = "0.51.0" @@ -915,22 +2822,117 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "x-wing" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01576e56599d01d75c5efcd5b30fa5de29e776f5a225e43fbf8c92c7302d4c8b" +dependencies = [ + "kem", + "ml-kem", + "sha3", + "shake", + "x25519-dalek 3.0.0", +] + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek 4.1.3", + "rand_core 0.6.4", + "serde", + "zeroize", +] + [[package]] name = "x25519-dalek" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ - "curve25519-dalek", - "rand_core", + "curve25519-dalek 5.0.0", + "rand_core 0.10.0", "zeroize", ] +[[package]] +name = "yoke" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "417ef3fcf6c300b7dbd25c85531a746931c02ad536f3cf4786ed1e88223340b3" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.10", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5fe1f8f1b06191a00962174c61aa5005e0bb391a6d80d07e24d115c01a92ed8" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863ad3ac83293fb4d740aedbfdc9240dd8d1a50c1099acd76ce80ce7c7230c7f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.10", + "synstructure", +] + [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879" dependencies = [ "zeroize_derive", ] @@ -946,6 +2948,39 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f58a2799cfe9a1670c7ea8edbd52ef8edb93cb37a7f83bf31ba9e35d9dae6a40" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3743ddbf47738d929cd1ae2e199d40d0162979dfe31aef8ae646d2bf00bf97a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.10", +] + [[package]] name = "zmij" version = "1.0.23" diff --git a/packages/fireplace_native/rust/Cargo.toml b/packages/fireplace_native/rust/Cargo.toml index 91db7c0..ef2299f 100644 --- a/packages/fireplace_native/rust/Cargo.toml +++ b/packages/fireplace_native/rust/Cargo.toml @@ -12,7 +12,9 @@ crate-type = ["cdylib"] # Select this dependency directly with `cargo build --package fireplace-crypto` # so the host library exports the core's C ABI without another Rust wrapper. [dependencies] -fireplace-crypto = "=0.1.1" +# Group chats (decision 0050): the groups branch of fireplace-crypto until it is +# released; then back to an exact crates.io version. +fireplace-crypto = { git = "https://github.com/fireplacechat/fireplace-crypto", rev = "276eaacce7764f2c4914eb975040d9347db18079", features = ["groups"] } [features] # Only the separate host comparison build enables this; no app build does. From 26189c87bbad6c468ed1ab375f54cdd736aeb215 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 06:22:42 +0000 Subject: [PATCH 02/17] Group chats model: GroupService over the MLS core, with tests. GroupService keeps one device's groups: key packages, membership requests, Commits applied strictly in epoch order and checked against the group's rules (renames and roles only from administrators, no membership change in a self-update), messages bound to their authenticated sender and id, member colours shared inside the group, and sends that are never resent automatically. Its MLS records and cursors are saved atomically in an encrypted file. Nine tests run two devices through the real Rust core. AI assistance: Claude Code. --- lib/src/db/group_record_file.dart | 17 + lib/src/model/groups/group_models.dart | 19 +- lib/src/model/groups/group_requests.dart | 23 +- lib/src/model/groups/group_service.dart | 845 ++++++++++++++++++++++ test/model/groups/group_service_test.dart | 257 +++++++ test/support/fake_group_server.dart | 181 +++++ 6 files changed, 1329 insertions(+), 13 deletions(-) create mode 100644 lib/src/model/groups/group_service.dart create mode 100644 test/model/groups/group_service_test.dart create mode 100644 test/support/fake_group_server.dart diff --git a/lib/src/db/group_record_file.dart b/lib/src/db/group_record_file.dart index 0376d91..ff13502 100644 --- a/lib/src/db/group_record_file.dart +++ b/lib/src/db/group_record_file.dart @@ -72,6 +72,23 @@ class GroupRecordFile { bool get isEmpty => _records.isEmpty; + // App records (cursors) live beside the core's, under `app:` names, and are + // saved in the same atomic write. The core ignores them. + static String _appKey(String name) => b64(utf8Bytes('app:$name')); + + Uint8List? app(String name) => _records[_appKey(name)]; + + void setApp(Map?> values) { + for (final e in values.entries) { + final v = e.value; + if (v == null) { + _records.remove(_appKey(e.key)); + } else { + _records[_appKey(e.key)] = Uint8List.fromList(v); + } + } + } + /// Applies `changes` from a core result: `[{k, v | null}]`, base64. void apply(Object? changes) { if (changes is! List) return; diff --git a/lib/src/model/groups/group_models.dart b/lib/src/model/groups/group_models.dart index 562b0f3..71efc88 100644 --- a/lib/src/model/groups/group_models.dart +++ b/lib/src/model/groups/group_models.dart @@ -50,7 +50,9 @@ class GroupInfo { final admins = {...(j['admins'] as List).cast()}; final byUid = >{}; for (final m in (j['members'] as List).cast()) { - byUid.putIfAbsent(m['uid'] as String, () => []).add(m['device'] as String); + byUid + .putIfAbsent(m['uid'] as String, () => []) + .add(m['device'] as String); } return GroupInfo( gid: j['gid'] as String, @@ -59,7 +61,11 @@ class GroupInfo { active: j['active'] as bool, members: [ for (final e in byUid.entries) - GroupMember(uid: e.key, devices: e.value, admin: admins.contains(e.key)), + GroupMember( + uid: e.key, + devices: e.value, + admin: admins.contains(e.key), + ), ], ); } @@ -67,7 +73,11 @@ class GroupInfo { /// An invitation waiting for this account to answer. class GroupInvitation { - const GroupInvitation({required this.gid, required this.inviter, required this.at}); + const GroupInvitation({ + required this.gid, + required this.inviter, + required this.at, + }); final String gid; final String inviter; final DateTime at; @@ -87,7 +97,8 @@ class GroupRefused implements Exception { /// Plain words for people. String get message => switch (reason) { 'full' => 'This group is full.', - 'limit' => 'You have made the most groups allowed today. Try again tomorrow.', + 'limit' => + 'You have made the most groups allowed today. Try again tomorrow.', 'too many groups' => 'You are in the most groups allowed.', 'not an administrator' => 'Only administrators can do that.', 'expired' => 'This invitation has expired.', diff --git a/lib/src/model/groups/group_requests.dart b/lib/src/model/groups/group_requests.dart index aa1c56d..691b33f 100644 --- a/lib/src/model/groups/group_requests.dart +++ b/lib/src/model/groups/group_requests.dart @@ -50,15 +50,20 @@ class GroupRequests { await batch.commit(); }); final done = Completer(); - final sub = ref.snapshots().listen((snap) { - final status = snap.data()?['status']; - if (status == 'done' && !done.isCompleted) done.complete(); - if (status == 'refused' && !done.isCompleted) { - done.completeError(GroupRefused('${snap.data()?['reason'] ?? 'refused'}')); - } - }, onError: (Object e) { - if (!done.isCompleted) done.completeError(e); - }); + final sub = ref.snapshots().listen( + (snap) { + final status = snap.data()?['status']; + if (status == 'done' && !done.isCompleted) done.complete(); + if (status == 'refused' && !done.isCompleted) { + done.completeError( + GroupRefused('${snap.data()?['reason'] ?? 'refused'}'), + ); + } + }, + onError: (Object e) { + if (!done.isCompleted) done.completeError(e); + }, + ); try { await done.future.timeout(_timeout); } finally { diff --git a/lib/src/model/groups/group_service.dart b/lib/src/model/groups/group_service.dart new file mode 100644 index 0000000..6dc740b --- /dev/null +++ b/lib/src/model/groups/group_service.dart @@ -0,0 +1,845 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:cryptography/cryptography.dart'; +import 'package:fireplace/src/crypto/codec.dart'; +import 'package:fireplace/src/crypto/group_crypto.dart'; +import 'package:fireplace/src/db/group_record_file.dart'; +import 'package:fireplace/src/db/local_messages.dart'; +import 'package:fireplace/src/db/secret_store.dart'; +import 'package:fireplace/src/model/chat/message_payload.dart'; +import 'package:fireplace/src/model/chat/send_allowance.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/model/groups/group_requests.dart'; +import 'package:fireplace/src/model/keys/key_service.dart'; + +/// Group chats for one account on this device (mobile decision 0050, +/// `docs/protocol/group-chats-v1.md`, backend decision 0023). +/// +/// All MLS work runs one call at a time. Each change from the core is checked, +/// saved (MLS records and this service's cursors together, atomically) and +/// only then accepted, so a crash loses nothing and repeats nothing. +/// +/// Commits are applied strictly in epoch order. A Commit is checked against +/// the group's rules before it is kept: a rename or role change only from an +/// administrator; a self-update adds and removes nobody; members are added +/// only by administrators (or an account adding its own device), and removed +/// only by administrators or once the server has fenced them. +class GroupService { + GroupService({ + required FirebaseFirestore db, + required this.uid, + required this._device, + required this._secrets, + required this._historyDir, + required this._messages, + SendAllowance? allowance, + Duration? requestTimeout, + DateTime Function()? clock, + }) : _db = db, + _allowance = allowance ?? SendAllowance(), + _now = clock ?? DateTime.now, + _requests = GroupRequests(db, uid, timeout: requestTimeout); + + final FirebaseFirestore _db; + final String uid; + final LocalDevice _device; + final SecretStore _secrets; + final Directory _historyDir; + final LocalMessageStore _messages; + final SendAllowance _allowance; + final DateTime Function() _now; + final GroupRequests _requests; + + late GroupRecordFile _file; + late GroupCrypto _crypto; + Future _tail = Future.value(); + bool _closed = false; + + final _groups = {}; + final _groupsCtrl = StreamController>.broadcast(); + var _invitations = []; + final _invitesCtrl = StreamController>.broadcast(); + final _colors = {}; + final _colorsCtrl = StreamController.broadcast(); + final _subs = >[]; + final _groupSubs = >>{}; + final _rosters = >{}; + // Events that arrived ahead of this device's epoch, waiting for Commits. + final _waiting = + >>>{}; + final _pending = {}; // groups with an own Commit awaiting its slot + + String get deviceId => _device.keys.deviceId; + + /// The groups this device is in, as MLS authenticated them. + Map get groups => Map.unmodifiable(_groups); + Stream> watchGroups() async* { + yield groups; + yield* _groupsCtrl.stream; + } + + List get invitations => _invitations; + Stream> watchInvitations() async* { + yield _invitations; + yield* _invitesCtrl.stream; + } + + MemberColors colorsOf(String gid) => + Map.unmodifiable(_colors[gid] ?? const {}); + Stream get colorChanges => _colorsCtrl.stream; + + // ---------------------------------------------------------------- start + + Future start() async { + _file = await GroupRecordFile.open( + historyDir: _historyDir, + secrets: _secrets, + uid: uid, + ); + _crypto = GroupCrypto.open(_file.blob()); + if (_file.isEmpty) { + final hash = await Sha256().hash(_device.bundle.cert); + await _change({ + 'op': 'device', + 'identity': jsonEncode(_device.identity.toJson()), + 'uid': uid, + 'device': deviceId, + 'deviceCertHash': b64(hash.bytes), + 'generation': 1, + }); + } + await _loadColors(); + for (final gid + in (_crypto.call({'op': 'groups'})['groups'] as List).cast()) { + final info = _info(gid); + if (info != null && info.active) _groups[gid] = info; + // An own Commit saved before a restart still waits for its epoch's slot. + try { + if (_crypto.call({'op': 'info', 'gid': gid})['pending'] == true) { + _pending.add(gid); + } + } on GroupCryptoException { + // Unknown group. + } + } + _emitGroups(); + await _replenishPackages(); + _subs.add( + _db + .collection('users/$uid/groupRefs') + .snapshots() + .listen((s) => _serial(() => _onRefs(s)), onError: (_) {}), + ); + _subs.add( + _db.collection('users/$uid/groupInvites').snapshots().listen((s) { + _invitations = [ + for (final d in s.docs) + GroupInvitation( + gid: d.id, + inviter: '${d.data()['by']}', + at: (d.data()['at'] as Timestamp?)?.toDate() ?? _now(), + ), + ]; + _invitesCtrl.add(_invitations); + }, onError: (_) {}), + ); + } + + Future close() async { + _closed = true; + for (final s in [..._subs, for (final l in _groupSubs.values) ...l]) { + await s.cancel(); + } + await _tail.catchError((Object _) {}); + _crypto.close(); + await _groupsCtrl.close(); + await _invitesCtrl.close(); + await _colorsCtrl.close(); + } + + // ---------------------------------------------------------------- the core + + /// Runs [f] after every earlier MLS call has finished. + Future _serial(Future Function() f) { + final run = _tail.then((_) => f()); + _tail = run.then((_) {}, onError: (Object _) {}); + return run; + } + + /// One changing core call: [check] may refuse the result (then nothing is + /// kept); otherwise the changes and [extra] app records are saved, then the + /// core accepts. + Future> _change( + Map request, { + bool Function(Map result)? check, + Map?> extra = const {}, + Future Function(Map result)? beforeSave, + }) async { + final result = _crypto.call(request); + try { + if (check != null && !check(result)) { + throw GroupCryptoException(2); + } + await beforeSave?.call(result); + _file.apply(result['changes']); + _file.setApp(extra); + await _file.save(); + } catch (_) { + _crypto.rollback(); + _file = await GroupRecordFile.open( + historyDir: _historyDir, + secrets: _secrets, + uid: uid, + ); + rethrow; + } + _crypto.accept(); + return result; + } + + GroupInfo? _info(String gid) { + try { + return GroupInfo.fromCore(_crypto.call({'op': 'info', 'gid': gid})); + } on GroupCryptoException { + return null; + } + } + + void _emitGroups() { + if (!_groupsCtrl.isClosed) _groupsCtrl.add(groups); + } + + /// Keeps ten key packages published, so admins can add this device. + Future _replenishPackages() => _serial(() async { + final col = _db.collection('users/$uid/devices/$deviceId/mlsPackages'); + final have = {for (final d in (await col.get()).docs) d.id}; + final missing = [ + for (var i = 0; i < GroupLimits.keyPackagesPerDevice; i++) + if (!have.contains('$i')) '$i', + ]; + if (missing.isEmpty) return; + final result = await _change({ + 'op': 'key_packages', + 'count': missing.length, + }); + final batch = _db.batch(); + final packages = (result['packages'] as List).cast(); + for (var i = 0; i < missing.length; i++) { + batch.set(col.doc(missing[i]), { + 'kp': Blob(unb64(packages[i]['keyPackage'] as String)), + 'createdAt': FieldValue.serverTimestamp(), + }); + } + await batch.commit(); + }); + + // ---------------------------------------------------------------- groups + + Future _onRefs(QuerySnapshot> refs) async { + final listed = {for (final d in refs.docs) d.id: d.data()}; + for (final entry in listed.entries) { + final gid = entry.key; + if (!_groups.containsKey(gid)) { + await _joinFromWelcome( + gid, + (entry.value['joinedEpoch'] as num?)?.toInt() ?? 0, + ); + } + if (_groups.containsKey(gid) && !_groupSubs.containsKey(gid)) _watch(gid); + } + // Removed by the server (left, removed, fenced): stop and forget the + // group's keys. Its history stays on this device. + for (final gid in [..._groups.keys]) { + if (!listed.containsKey(gid)) await _drop(gid); + } + } + + Future _joinFromWelcome(String gid, int joinedEpoch) async { + final welcomes = await _db + .collection('groups/$gid/welcomes') + .where('uid', isEqualTo: uid) + .get(); + for (final w in welcomes.docs) { + if (((w.data()['epoch'] as num?)?.toInt() ?? 0) < joinedEpoch) continue; + final ct = w.data()['ct']; + if (ct is! Blob) continue; + try { + // A Welcome for another of this account's devices is refused; try the next. + final result = await _change({'op': 'join', 'welcome': b64(ct.bytes)}); + final info = GroupInfo.fromCore(result); + if (info.gid != gid) continue; + _groups[gid] = info; + _emitGroups(); + unawaited(_sendProfile(gid)); + return; + } on GroupCryptoException { + continue; + } + } + } + + Future _drop(String gid) async { + for (final s + in _groupSubs.remove(gid) ?? const >[]) { + await s.cancel(); + } + _groups.remove(gid); + _rosters.remove(gid); + try { + await _change({'op': 'forget', 'gid': gid}); + } on GroupCryptoException { + // Already forgotten. + } + _emitGroups(); + } + + void _watch(String gid) { + final subs = >[]; + subs.add( + _db.doc('groups/$gid').snapshots().listen((s) { + final data = s.data(); + if (data == null) return; + _rosters[gid] = data; + unawaited(_serial(() => _maintain(gid, data))); + }, onError: (_) {}), + ); + // Administrators add accounts once they accept their invitation. + subs.add( + _db + .collection('groups/$gid/invites') + .where('status', isEqualTo: 'accepted') + .snapshots() + .listen((s) { + final roster = _rosters[gid]; + if (s.docs.isNotEmpty && roster != null) { + unawaited(_serial(() => _maintain(gid, roster))); + } + }, onError: (_) {}), + ); + subs.add( + _db + .collection('groups/$gid/commits') + .where('e', isGreaterThanOrEqualTo: _groups[gid]?.epoch ?? 0) + .snapshots() + .listen((s) => _serial(() => _onCommits(gid, s)), onError: (_) {}), + ); + final cursor = _cursor(gid); + var events = _db.collection('groups/$gid/events').orderBy('at'); + if (cursor != null) events = events.startAfter([cursor]); + subs.add( + events.snapshots().listen( + (s) => _serial(() => _onEvents(gid, s.docs)), + onError: (_) {}, + ), + ); + _groupSubs[gid] = subs; + } + + static String _slot(int epoch) => '$epoch'.padLeft(12, '0'); + + Timestamp? _cursor(String gid) { + final raw = _file.app('cursor:$gid'); + if (raw == null) return null; + final micros = int.tryParse(utf8.decode(raw)); + return micros == null ? null : Timestamp.fromMicrosecondsSinceEpoch(micros); + } + + Map?> _cursorAt(String gid, Object? at) => at is Timestamp + ? {'cursor:$gid': utf8.encode('${at.microsecondsSinceEpoch}')} + : const {}; + + // ---------------------------------------------------------------- commits + + Future _onCommits( + String gid, + QuerySnapshot> snap, + ) async { + // In epoch order (sorted here; the query only skips old Commits). + final docs = [...snap.docs] + ..sort( + (a, b) => ((a.data()['e'] as num?) ?? 0).compareTo( + (b.data()['e'] as num?) ?? 0, + ), + ); + for (final doc in docs) { + final info = _groups[gid]; + if (info == null || _closed) return; + final epoch = (doc.data()['e'] as num?)?.toInt(); + if (doc.id != _slot(epoch ?? -1)) continue; // not a slot document + if (epoch == null || epoch < info.epoch) continue; + if (epoch > info.epoch) return; // a gap: wait for the missing Commit + await _applyCommit(gid, doc.data()); + } + } + + Future _applyCommit(String gid, Map doc) async { + final before = _groups[gid]!; + final mine = doc['by'] == uid && doc['device'] == deviceId; + if (_pending.contains(gid)) { + _pending.remove(gid); + if (mine) { + final result = await _change({'op': 'merge_pending', 'gid': gid}); + _afterCommit(gid, result); + return; + } + // Another Commit won this epoch. + await _change({'op': 'discard_pending', 'gid': gid}); + } + final ct = doc['ct']; + if (ct is! Blob) return; + final kind = doc['kind']; + final roster = + _rosters[gid]?['members'] as Map? ?? const {}; + try { + final result = await _change({ + 'op': 'process', + 'gid': gid, + 'message': b64(ct.bytes), + }, check: (r) => _commitAllowed(before, r, kind, roster, doc['by'])); + _afterCommit(gid, result); + } on GroupCryptoException { + // An invalid or refused Commit changes nothing here; the group waits for + // a valid one (proposal, "Event ordering"). + } + } + + bool _commitAllowed( + GroupInfo before, + Map r, + Object? kind, + Map roster, + Object? by, + ) { + if (r['kind'] != 'commit') return false; + final committer = (r['committer'] as Map)['uid'] as String; + if (committer != by) return false; + final added = (r['added'] as List).cast(); + final removed = (r['removed'] as List).cast(); + final admin = before.isAdmin(committer); + final admins = (r['admins'] as List).cast().toSet(); + final wereAdmins = { + for (final m in before.members) + if (m.admin) m.uid, + }; + final metaChanged = + r['name'] != before.name || + admins.length != wereAdmins.length || + !admins.containsAll(wereAdmins); + if (metaChanged && !admin) return false; + if (kind == 'update' || kind == 'meta') { + return added.isEmpty && removed.isEmpty; + } + final addsOk = added.every((m) => admin || m['uid'] == committer); + final removesOk = removed.every((m) { + if (admin) return true; + // Fenced by the server: no longer in its roster for that device. + final member = roster[m['uid']] as Map?; + final devices = (member?['devices'] as List?)?.cast() ?? const []; + return !devices.contains(m['device']); + }); + return addsOk && removesOk; + } + + void _afterCommit(String gid, Map result) { + final info = GroupInfo.fromCore(result); + if (!info.active) { + unawaited(_serial(() => _drop(gid))); + return; + } + _groups[gid] = info; + _emitGroups(); + final waiting = _waiting.remove(gid); + if (waiting != null) unawaited(_serial(() => _onEvents(gid, waiting))); + } + + /// Work the group needs from any member: finalising a removal the server + /// fenced, and (administrators) adding accounts that accepted. + Future _maintain(String gid, Map roster) async { + final info = _groups[gid]; + if (info == null || _pending.contains(gid)) return; + final fence = (roster['fence'] as List?)?.cast() ?? const []; + if (fence.isNotEmpty) { + final members = + (_crypto.call({'op': 'info', 'gid': gid})['members'] as List) + .cast(); + final leaves = [ + for (final m in members) + for (final f in fence) + if (f['uid'] == m['uid'] && + ((f['devices'] as List?) ?? const []).contains(m['device'])) + m['leaf'], + ]; + if (leaves.isEmpty) return; + await _ownCommit( + gid, + {'op': 'commit_remove', 'gid': gid, 'leaves': leaves}, + (r) => _requests.group(gid, 'finalize', { + 'epoch': info.epoch, + 'device': deviceId, + 'commit': Blob(unb64(r['commit'] as String)), + }), + ); + return; + } + if (!info.isAdmin(uid)) return; + final accepted = await _db + .collection('groups/$gid/invites') + .where('status', isEqualTo: 'accepted') + .limit(1) + .get(); + if (accepted.docs.isEmpty) return; + final invite = accepted.docs.first; + final devices = ((invite.data()['devices'] as List?) ?? const []) + .cast(); + final packages = >[]; + final bytes = []; + for (final d in devices) { + final p = await _db + .collection('users/${invite.id}/devices/$d/mlsPackages') + .limit(1) + .get(); + if (p.docs.isEmpty) return; + final kp = p.docs.first.data()['kp']; + if (kp is! Blob) return; + packages.add({'device': d, 'slot': p.docs.first.id}); + bytes.add(b64(kp.bytes)); + } + await _ownCommit( + gid, + {'op': 'commit_add', 'gid': gid, 'keyPackages': bytes}, + (r) => _requests.group(gid, 'add', { + 'uid': invite.id, + 'epoch': info.epoch, + 'device': deviceId, + 'commit': Blob(unb64(r['commit'] as String)), + 'welcome': Blob(unb64(r['welcome'] as String)), + 'packages': packages, + }), + ); + } + + /// Prepares this device's Commit, saves it as pending and publishes it. The + /// Commit listener later merges it (it won its epoch) or discards it. + Future _ownCommit( + String gid, + Map request, + Future Function(Map result) publish, + ) async { + final result = await _change(request); + _pending.add(gid); + try { + await publish(result); + } on GroupRefused { + if (_pending.remove(gid)) { + await _change({'op': 'discard_pending', 'gid': gid}); + } + } on FirebaseException { + if (_pending.remove(gid)) { + await _change({'op': 'discard_pending', 'gid': gid}); + } + } on TimeoutException { + // Unknown: the Commit slot decides when it appears. + } + } + + // ---------------------------------------------------------------- events + + Future _onEvents( + String gid, + List>> docs, + ) async { + for (final doc in docs) { + final info = _groups[gid]; + if (info == null || _closed) return; + final data = doc.data(); + final epoch = (data['epoch'] as num?)?.toInt() ?? -1; + if (epoch > info.epoch) { + (_waiting[gid] ??= []).add(doc); + continue; + } + if (await _messages.has(groupChatId(gid), doc.id)) continue; + // This device's own messages are saved when sent; MLS cannot decrypt them. + if (data['device'] == deviceId) continue; + final ct = data['ct']; + if (ct is! Blob) continue; + try { + await _change( + {'op': 'process', 'gid': gid, 'message': b64(ct.bytes)}, + // The authenticated sender and id must be what the server says. + check: (r) => + r['kind'] == 'application' && + (r['sender'] as Map)['uid'] == data['by'] && + (r['sender'] as Map)['device'] == data['device'] && + utf8.decode(unb64(r['aad'] as String)) == doc.id, + extra: _cursorAt(gid, data['at']), + beforeSave: (r) => + _store(gid, doc.id, data, unb64(r['plain'] as String)), + ); + } on GroupCryptoException { + // Undecryptable (too old, or not for this device): skip it. + } + } + } + + Future _store( + String gid, + String id, + Map data, + List plain, + ) async { + final sender = data['by'] as String; + try { + final json = jsonDecode(utf8.decode(plain)); + if (json is Map && json['type'] == 'profile' && json['color'] is String) { + (_colors[gid] ??= {})[sender] = json['color'] as String; + await _saveColors(); + if (!_colorsCtrl.isClosed) _colorsCtrl.add(gid); + return; + } + } catch (_) { + // Not a profile message. + } + final decoded = decodeMessagePayload(plain); + if (decoded.mutation != null) return; // reactions and edits: later version + await _messages.add( + LocalMessage( + id: id, + chatId: groupChatId(gid), + senderUid: sender, + senderDevice: data['device'] as String, + outgoing: sender == uid, + sentAt: (data['at'] as Timestamp?)?.toDate() ?? _now(), + body: decoded.body, + status: decoded.status, + quote: decoded.quote, + ), + ); + } + + // ---------------------------------------------------------------- sending + + /// Encrypts and publishes one text message. The message is saved first + /// (unconfirmed); a definite refusal removes it, an unknown outcome keeps + /// it unconfirmed, and it is never resent automatically. + Future send(String gid, String text) => _publish( + gid, + encodeMessagePayload(text: text, now: _now()), + text: text, + ); + + /// This account's primary colour name, kept current by the app layer. + String ownColor = 'ember'; + + Future _sendProfile(String gid) async { + try { + await _publish( + gid, + utf8.encode(jsonEncode({'v': 4, 'type': 'profile', 'color': ownColor})), + ); + } catch (_) { + // Shared again with the next change; members show Stone meanwhile. + } + } + + /// Shares this account's colour with every group (after a change in Settings). + Future shareColor() async { + for (final gid in _groups.keys) { + await _sendProfile(gid); + } + } + + Future _publish(String gid, List payload, {String? text}) async { + final n = _now().microsecondsSinceEpoch; + final id = '$deviceId-$n'; + final chatId = groupChatId(gid); + final result = await _serial(() async { + if (!_groups.containsKey(gid)) throw StateError('Not in this group.'); + return _change({ + 'op': 'encrypt', + 'gid': gid, + 'plain': b64(payload), + 'aad': b64(utf8.encode(id)), + }); + }); + final sentAt = _now(); + LocalMessage local(MessageStatus status) => LocalMessage( + id: id, + chatId: chatId, + senderUid: uid, + senderDevice: deviceId, + outgoing: true, + sentAt: sentAt, + body: text ?? '', + status: status, + ); + if (text != null) await _messages.add(local(MessageStatus.unconfirmed)); + final ref = _db.doc('groups/$gid/events/$id'); + final limit = _db.doc('users/$uid/limits/send'); + final doc = { + 'by': uid, + 'device': deviceId, + 'n': n, + 'epoch': result['epoch'], + 'ct': Blob(unb64(result['ciphertext'] as String)), + 'at': FieldValue.serverTimestamp(), + 'expireAt': Timestamp.fromDate(sentAt.add(const Duration(days: 30))), + }; + try { + await publishWithClock( + allowance: _allowance, + retryable: (e) => + e is FirebaseException && e.code == 'permission-denied', + pauses: const [Duration(milliseconds: 300), Duration(seconds: 1)], + publish: (clock) { + final at = FieldValue.serverTimestamp(); + final one = FieldValue.increment(1); + final batch = _db.batch()..set(ref, doc); + switch (clock) { + case SendClock.day: + batch.set(limit, { + 'at': at, + 'window': at, + 'sent': 1, + 'day': at, + 'today': 1, + }); + case SendClock.window: + batch.update(limit, { + 'at': at, + 'window': at, + 'sent': 1, + 'today': one, + }); + case SendClock.next: + batch.update(limit, {'at': at, 'sent': one, 'today': one}); + case SendClock.dayInWindow: + batch.update(limit, { + 'at': at, + 'day': at, + 'today': 1, + 'sent': one, + }); + } + return batch.commit().timeout(const Duration(seconds: 20)); + }, + ); + if (text != null) await _messages.add(local(MessageStatus.ok)); + } on FirebaseException { + // Refused in every form: nothing was published. + if (text != null) await _messages.remove(chatId, id); + rethrow; + } + } + + // ---------------------------------------------------------------- membership + + /// Creates a group and invites [members] (uids of accepted 1:1 contacts). + Future create(String name, List members) async { + final gid = b64(randomBytes(16)) + .replaceAll('+', '-') + .replaceAll('/', '_') + .replaceAll('=', ''); + final result = await _serial( + () => _change({'op': 'create', 'gid': gid, 'name': name}), + ); + try { + await _requests.account('create', { + 'gid': gid, + 'devices': [deviceId], + 'epoch': result['epoch'] as int, + }); + } catch (_) { + await _serial(() => _change({'op': 'forget', 'gid': gid})); + rethrow; + } + _groups[gid] = GroupInfo.fromCore(result); + _emitGroups(); + // The server's reference may have arrived before the group was recorded + // here; start watching it now either way. + if (!_groupSubs.containsKey(gid)) _watch(gid); + unawaited(_sendProfile(gid)); + for (final m in members) { + await invite(gid, m).catchError((Object _) {}); + } + return gid; + } + + Future invite(String gid, String memberUid) => + _requests.group(gid, 'invite', {'uid': memberUid}); + + Future accept(String gid) => _requests.account('accept', { + 'gid': gid, + 'devices': [deviceId], + }); + + Future decline(String gid) => + _requests.account('decline', {'gid': gid}); + + /// Leaving stops reading at once; a remaining member's Commit removes this + /// account's devices afterwards. + Future leave(String gid) async { + await _requests.group(gid, 'leave', {}); + await _serial(() => _drop(gid)); + } + + Future remove(String gid, String memberUid) => _serial(() async { + final info = _groups[gid]!; + final members = + (_crypto.call({'op': 'info', 'gid': gid})['members'] as List) + .cast(); + final leaves = [ + for (final m in members) + if (m['uid'] == memberUid) m['leaf'], + ]; + await _ownCommit( + gid, + {'op': 'commit_remove', 'gid': gid, 'leaves': leaves}, + (r) => _requests.group(gid, 'remove', { + 'uid': memberUid, + 'epoch': info.epoch, + 'device': deviceId, + 'commit': Blob(unb64(r['commit'] as String)), + }), + ); + }); + + /// Renames the group: a Commit any member's device can apply, accepted from + /// administrators only. + Future rename(String gid, String name) => _serial(() async { + final info = _groups[gid]!; + await _ownCommit(gid, {'op': 'commit_meta', 'gid': gid, 'name': name}, ( + r, + ) async { + final batch = _db.batch() + ..set(_db.doc('groups/$gid/commits/${_slot(info.epoch)}'), { + 'e': info.epoch, + 'by': uid, + 'device': deviceId, + 'kind': 'meta', + 'ct': Blob(unb64(r['commit'] as String)), + 'at': FieldValue.serverTimestamp(), + }) + ..update(_db.doc('groups/$gid'), {'epoch': info.epoch + 1}); + await batch.commit(); + }); + }); + + // ---------------------------------------------------------------- colours + + Future _loadColors() async { + final raw = await _secrets.read('groupcolors:$uid'); + if (raw == null) return; + final json = jsonDecode(raw) as Map; + for (final e in json.entries) { + _colors['${e.key}'] = (e.value as Map).map( + (k, v) => MapEntry('$k', '$v'), + ); + } + } + + Future _saveColors() => + _secrets.write('groupcolors:$uid', jsonEncode(_colors)); +} diff --git a/test/model/groups/group_service_test.dart b/test/model/groups/group_service_test.dart new file mode 100644 index 0000000..f1c6871 --- /dev/null +++ b/test/model/groups/group_service_test.dart @@ -0,0 +1,257 @@ +// Group chats end to end on two devices (decision 0050): the real Rust MLS core, +// a fake Firestore, and a fake of the backend's request function. +import 'dart:io'; + +import 'package:fake_cloud_firestore/fake_cloud_firestore.dart'; +import 'package:fireplace/fireplace_services.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/model/groups/group_service.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../../support/fake_group_server.dart'; + +class Phone { + Phone._(this.uid, this.service, this.messages, this.secrets); + final String uid; + final GroupService service; + final MemoryMessageStore messages; + final MemorySecretStore secrets; + + static Future create( + FakeFirebaseFirestore db, + String uid, + Directory root, + ) async { + await db.collection('usernames').doc(uid).set({'uid': uid}); + await db.collection('users').doc(uid).set({ + 'username': uid, + 'displayName': uid, + }); + final secrets = MemorySecretStore(); + final device = await KeyService(db, secrets).ensureDevice(uid); + final messages = MemoryMessageStore(); + final service = GroupService( + db: db, + uid: uid, + device: device, + secrets: secrets, + historyDir: Directory('${root.path}/$uid')..createSync(recursive: true), + messages: messages, + requestTimeout: const Duration(seconds: 10), + ); + await service.start(); + return Phone._(uid, service, messages, secrets); + } +} + +/// Waits (in real time) until [ready] holds. +Future until( + Future Function() ready, { + String what = 'condition', +}) async { + final end = DateTime.now().add(const Duration(seconds: 20)); + while (!await ready()) { + if (DateTime.now().isAfter(end)) fail('Timed out waiting for $what'); + await Future.delayed(const Duration(milliseconds: 50)); + } +} + +Future> texts(Phone p, String gid) async => [ + for (final m in await p.messages.watch(groupChatId(gid)).first) m.body, +]; + +void main() { + late Directory root; + late FakeFirebaseFirestore db; + late FakeGroupServer server; + late Phone alice, bob; + + setUp(() async { + root = await Directory.systemTemp.createTemp('groups'); + db = FakeFirebaseFirestore(); + server = FakeGroupServer(db); + alice = await Phone.create(db, 'alice', root); + bob = await Phone.create(db, 'bob', root); + server + ..watchAccount('alice') + ..watchAccount('bob'); + }); + tearDown(() async { + await alice.service.close(); + await bob.service.close(); + await server.close(); + await root.delete(recursive: true); + }); + + /// Alice creates "Book club" and invites Bob, who accepts and is added. + Future bookClub() async { + final gid = await alice.service.create('Book club', ['bob']); + await until( + () async => bob.service.invitations.any((i) => i.gid == gid), + what: 'invitation', + ); + await bob.service.accept(gid); + await until( + () async => bob.service.groups.containsKey(gid), + what: 'Bob joins', + ); + await until( + () async => alice.service.groups[gid]!.members.length == 2, + what: 'Alice sees Bob', + ); + return gid; + } + + test('a device publishes ten key packages when it starts', () async { + final devices = await db.collection('users/bob/devices').get(); + final packages = await db + .collection('users/bob/devices/${devices.docs.first.id}/mlsPackages') + .get(); + expect(packages.docs, hasLength(GroupLimits.keyPackagesPerDevice)); + }); + + test( + 'create, invite, accept: both see the same group, name and roles', + () async { + final gid = await bookClub(); + for (final p in [alice, bob]) { + final info = p.service.groups[gid]!; + expect(info.name, 'Book club'); + expect(info.members.map((m) => m.uid).toSet(), {'alice', 'bob'}); + expect(info.isAdmin('alice'), isTrue); + expect(info.isAdmin('bob'), isFalse); + } + expect(alice.service.groups[gid]!.epoch, bob.service.groups[gid]!.epoch); + expect( + server.processed, + containsAll(['create', 'invite', 'accept', 'add']), + ); + // Bob's used key package is gone from the server. + expect(bob.service.invitations, isEmpty); + }, + ); + + test( + 'messages reach the other member, never twice, with the right sender', + () async { + final gid = await bookClub(); + await alice.service.send(gid, 'Anyone bringing snacks?'); + await until( + () async => (await texts(bob, gid)).contains('Anyone bringing snacks?'), + what: 'Bob receives', + ); + await bob.service.send(gid, 'I can do chips'); + await until( + () async => (await texts(alice, gid)).contains('I can do chips'), + what: 'Alice receives', + ); + final bobs = await bob.messages.watch(groupChatId(gid)).first; + final fromAlice = bobs.firstWhere( + (m) => m.body == 'Anyone bringing snacks?', + ); + expect(fromAlice.senderUid, 'alice'); + expect(fromAlice.outgoing, isFalse); + final own = bobs.firstWhere((m) => m.body == 'I can do chips'); + expect(own.outgoing, isTrue); + expect(own.status, MessageStatus.ok); + expect( + (await texts(alice, gid)).where((t) => t == 'I can do chips'), + hasLength(1), + ); + }, + ); + + test('members share their colour inside the group', () async { + alice.service.ownColor = 'plum'; + final gid = await bookClub(); + await alice.service.shareColor(); + await until( + () async => bob.service.colorsOf(gid)['alice'] == 'plum', + what: 'colour', + ); + await until( + () async => alice.service.colorsOf(gid)['bob'] == 'ember', + what: "Bob's colour", + ); + }); + + test('an administrator renames the group for everyone', () async { + final gid = await bookClub(); + await alice.service.rename(gid, 'Tea club'); + await until( + () async => bob.service.groups[gid]?.name == 'Tea club', + what: 'rename', + ); + expect(alice.service.groups[gid]!.name, 'Tea club'); + }); + + test("a member's rename is refused by the others", () async { + final gid = await bookClub(); + final epoch = alice.service.groups[gid]!.epoch; + await bob.service.rename(gid, 'Bob club'); + // Bob's Commit took the slot, but Alice will not apply it. + await Future.delayed(const Duration(seconds: 1)); + expect(alice.service.groups[gid]!.name, 'Book club'); + expect(alice.service.groups[gid]!.epoch, epoch); + }); + + test( + 'leaving stops the group for the leaver and a member finalises it', + () async { + final gid = await bookClub(); + final epoch = alice.service.groups[gid]!.epoch; + await bob.service.leave(gid); + expect(bob.service.groups.containsKey(gid), isFalse); + await until( + () async => + (await db.doc('groups/$gid').get()).data()!['fence'].isEmpty && + alice.service.groups[gid]!.epoch == epoch + 1, + what: 'finalised', + ); + expect(alice.service.groups[gid]!.members.map((m) => m.uid), ['alice']); + // Alice keeps chatting in the (now one-person) group. + await alice.service.send(gid, 'still here'); + }, + ); + + test('a declined invitation goes away and adds nobody', () async { + final gid = await alice.service.create('Book club', ['bob']); + await until( + () async => bob.service.invitations.isNotEmpty, + what: 'invitation', + ); + await bob.service.decline(gid); + await until(() async => bob.service.invitations.isEmpty, what: 'declined'); + expect(bob.service.groups, isEmpty); + expect(alice.service.groups[gid]!.members, hasLength(1)); + }); + + test('a device restarted from its saved records carries on', () async { + final gid = await bookClub(); + await bob.service.close(); + final devices = await db.collection('users/bob/devices').get(); + final device = await KeyService(db, bob.secrets).ensureDevice('bob'); + expect(device.keys.deviceId, devices.docs.first.id); + final again = GroupService( + db: db, + uid: 'bob', + device: device, + secrets: bob.secrets, + historyDir: Directory('${root.path}/bob'), + messages: bob.messages, + ); + await again.start(); + expect(again.groups[gid]!.name, 'Book club'); + await alice.service.send(gid, 'after a restart'); + await until( + () async => (await texts(bob, gid)).contains('after a restart'), + what: 'after restart', + ); + await again.close(); + bob = await Phone.create( + FakeFirebaseFirestore(), + 'bob2', + root, + ); // for tearDown + }); +} diff --git a/test/support/fake_group_server.dart b/test/support/fake_group_server.dart new file mode 100644 index 0000000..ae3f2f5 --- /dev/null +++ b/test/support/fake_group_server.dart @@ -0,0 +1,181 @@ +// Stands in for the backend's group function (backend decision 0023) over a +// FakeFirebaseFirestore: it completes membership requests the way +// functions/lib/groups.js does, without the checks the tests do not exercise. +// The rules are tested in the backend repository. +import 'dart:async'; + +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:fake_cloud_firestore/fake_cloud_firestore.dart'; + +class FakeGroupServer { + FakeGroupServer(this.db); + final FakeFirebaseFirestore db; + final _subs = >[]; + final _watched = {}; + final _done = {}; + final processed = []; + + String _slot(int e) => '$e'.padLeft(12, '0'); + + void watchAccount(String uid) { + _subs.add( + db.collection('users/$uid/groupOps').snapshots().listen((s) { + for (final d in s.docs) { + unawaited(_handle(d.reference, d.data(), (op) => _account(uid, op))); + } + }), + ); + } + + void _watchGroup(String gid) { + if (!_watched.add(gid)) return; + _subs.add( + db.collection('groups/$gid/ops').snapshots().listen((s) { + for (final d in s.docs) { + unawaited(_handle(d.reference, d.data(), (op) => _group(gid, op))); + } + }), + ); + } + + Future _handle( + DocumentReference> ref, + Map op, + Future Function(Map) run, + ) async { + if (op['status'] != null || !_done.add(ref.path)) return; + try { + await run(op); + processed.add('${op['kind']}'); + await ref.update({ + 'status': 'done', + 'commit': FieldValue.delete(), + 'welcome': FieldValue.delete(), + }); + } on _Refused catch (e) { + processed.add('${op['kind']}:refused'); + await ref.update({'status': 'refused', 'reason': e.reason}); + } catch (e, st) { + // ignore: avoid_print + print('fake server ${op['kind']} failed: $e $st'); + rethrow; + } + } + + Future _account(String uid, Map op) async { + final gid = op['gid'] as String; + switch (op['kind']) { + case 'create': + await db.doc('groups/$gid').set({ + 'members': { + uid: {'role': 'admin', 'devices': op['devices']}, + }, + 'epoch': op['epoch'], + 'fence': [], + }); + await db.doc('users/$uid/groupRefs/$gid').set({ + 'role': 'admin', + 'joinedEpoch': op['epoch'], + }); + _watchGroup(gid); + case 'accept': + await db.doc('groups/$gid/invites/$uid').update({ + 'status': 'accepted', + 'devices': op['devices'], + }); + case 'decline': + await db.doc('groups/$gid/invites/$uid').delete(); + await db.doc('users/$uid/groupInvites/$gid').delete(); + } + } + + Future _group(String gid, Map op) async { + final groupRef = db.doc('groups/$gid'); + final group = (await groupRef.get()).data()!; + final members = Map.from(group['members'] as Map); + final by = op['by'] as String; + final epoch = group['epoch'] as int; + Future commit(String kind) async { + if (op['epoch'] != epoch) throw _Refused('epoch'); + final slot = db.doc('groups/$gid/commits/${_slot(epoch)}'); + if ((await slot.get()).exists) throw _Refused('epoch'); + await slot.set({ + 'e': epoch, + 'by': by, + 'device': op['device'] ?? '', + 'kind': kind, + 'ct': op['commit'], + }); + } + + switch (op['kind']) { + case 'invite': + if ((members[by] as Map)['role'] != 'admin') + throw _Refused('not an administrator'); + final target = op['uid'] as String; + await db.doc('groups/$gid/invites/$target').set({ + 'by': by, + 'status': 'pending', + }); + await db.doc('users/$target/groupInvites/$gid').set({ + 'by': by, + 'at': Timestamp.now(), + }); + case 'add': + final target = op['uid'] as String; + final invite = (await db.doc('groups/$gid/invites/$target').get()) + .data(); + if (invite?['status'] != 'accepted') throw _Refused('not accepted'); + await commit('membership'); + await db.doc('groups/$gid/welcomes/${target}_${_slot(epoch + 1)}').set({ + 'uid': target, + 'epoch': epoch + 1, + 'ct': op['welcome'], + }); + for (final p in (op['packages'] as List).cast()) { + await db + .doc( + 'users/$target/devices/${p['device']}/mlsPackages/${p['slot']}', + ) + .delete(); + } + members[target] = {'role': 'member', 'devices': invite!['devices']}; + await groupRef.update({'members': members, 'epoch': epoch + 1}); + await db.doc('users/$target/groupRefs/$gid').set({ + 'role': 'member', + 'joinedEpoch': epoch + 1, + }); + await db.doc('groups/$gid/invites/$target').delete(); + await db.doc('users/$target/groupInvites/$gid').delete(); + case 'leave': + final leaving = members.remove(by) as Map; + await db.doc('users/$by/groupRefs/$gid').delete(); + await groupRef.update({ + 'members': members, + 'fence': [ + ...(group['fence'] as List), + {'uid': by, 'devices': leaving['devices']}, + ], + }); + case 'finalize': + await commit('membership'); + await groupRef.update({'fence': [], 'epoch': epoch + 1}); + case 'remove': + await commit('membership'); + members.remove(op['uid']); + await groupRef.update({'members': members, 'epoch': epoch + 1}); + await db.doc('users/${op['uid']}/groupRefs/$gid').delete(); + } + } + + Future close() async { + for (final s in _subs) { + await s.cancel(); + } + } +} + +class _Refused implements Exception { + _Refused(this.reason); + final String reason; +} From c6d0a13096836b9b04b94372e6681073e7d8c8f8 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 07:18:11 +0000 Subject: [PATCH 03/17] Group chat screens, permissions, and edits, deletes and reactions in groups. Wires GroupService into the session (only in builds with --dart-define=FIREPLACE_GROUPS=true) and adds the screens: New chat offers Message someone or New group; groups appear in the chat list and search; invitations wait in Message requests with Join and Decline; the group chat shows names, avatars and each member's colour; Group info lists members and administrators with Add people, Rename, Remove and Leave. Owner's choices (2026-11-14), recorded in 0050: any member invites people they already chat with; only administrators remove and rename; a group ends when its last member leaves; only a message's author edits or deletes it for everyone. AI assistance: Claude Code. --- docs/decisions/0050-group-chats.md | 16 + docs/protocol/group-chats-v1.md | 14 +- lib/src/app/group_providers.dart | 71 ++++ lib/src/app/providers.dart | 30 ++ lib/src/db/account_erasure.dart | 1 + lib/src/model/groups/group_models.dart | 14 + lib/src/model/groups/group_requests.dart | 4 + lib/src/model/groups/group_service.dart | 141 ++++++- lib/src/view/chat_list/chat_list_screen.dart | 115 +++++- lib/src/view/groups/contact_picker.dart | 49 +++ lib/src/view/groups/group_avatar.dart | 38 ++ lib/src/view/groups/group_chat_screen.dart | 377 ++++++++++++++++++ lib/src/view/groups/group_info_screen.dart | 330 +++++++++++++++ .../view/groups/group_invitation_card.dart | 99 +++++ lib/src/view/groups/group_tile.dart | 55 +++ lib/src/view/groups/new_group_screen.dart | 113 ++++++ lib/src/view/safety/requests_screen.dart | 25 +- test/model/groups/group_service_test.dart | 163 +++++--- test/support/fake_group_server.dart | 34 +- test/support/group_phones.dart | 59 +++ test/view/groups/group_screens_test.dart | 234 +++++++++++ 21 files changed, 1883 insertions(+), 99 deletions(-) create mode 100644 lib/src/app/group_providers.dart create mode 100644 lib/src/view/groups/contact_picker.dart create mode 100644 lib/src/view/groups/group_avatar.dart create mode 100644 lib/src/view/groups/group_chat_screen.dart create mode 100644 lib/src/view/groups/group_info_screen.dart create mode 100644 lib/src/view/groups/group_invitation_card.dart create mode 100644 lib/src/view/groups/group_tile.dart create mode 100644 lib/src/view/groups/new_group_screen.dart create mode 100644 test/support/group_phones.dart create mode 100644 test/view/groups/group_screens_test.dart diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index e5c9d7a..697a75c 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -18,6 +18,22 @@ The interfaces, Firestore schema, rules, function and screens are specified in | Size | 16 accounts, 4 participating devices each (64 leaves), 32 groups per account | | Dependency | OpenMLS 0.9.2 with openmls_rust_crypto 0.6.0 approved **for a spike only**; production use needs a second approval | +### Who may do what (owner, 2026-11-14) + +| Action | Who | +|---|---| +| Create a group | anyone (5 a day; at most 32 groups per account) | +| Invite someone | **any member**, but only a person they already have an accepted 1:1 chat with; the backend function checks this. The invitee must accept. | +| Add the person who accepted | the inviter's device (an administrator's if the inviter has left) | +| Remove someone, change roles | administrators | +| Rename | administrators; other members' phones refuse anyone else's rename | +| Leave | anyone, at any time | +| Last administrator leaves | every remaining member becomes an administrator | +| End a group | no one ends it for others; it ends when its last member leaves, and the server then deletes all its records. Members keep their own copies of past messages. | +| Edit, delete for everyone | **only the message's author**, as in 1:1 chats (edits up to 10 times within 24 hours); the change shows on every member's phone | +| React | anyone | +| Delete for me | anyone, on their own phone only | + ### What the suite means - **Confidentiality is post-quantum:** every key exchange is hybrid X25519 + ML-KEM-768, diff --git a/docs/protocol/group-chats-v1.md b/docs/protocol/group-chats-v1.md index 001173c..34671fc 100644 --- a/docs/protocol/group-chats-v1.md +++ b/docs/protocol/group-chats-v1.md @@ -58,7 +58,8 @@ Handle-based and bounded, wiping buffers with `fp_free`, like `FpSession`: A staged commit's summary lists the leaves added, removed and updated and the new name and roles, so the app can check it against the server roster and its rules -(only administrators change membership, names and roles) before merging. +(only administrators remove people and change names and roles; any member's device +may add someone whose invitation was accepted) before merging. The **name and roles** live in an application-defined group-context extension, changed only by Commits. They are therefore encrypted, authenticated by MLS, and included in a @@ -126,9 +127,9 @@ challenge, roles and limits. | Operation | Who | What the transaction does | |---|---|---| | `create` | any account (5 a day) | `groups/{gid}`, creator as administrator, `groupRefs` | -| `invite(uid)` | administrator | `groups/{gid}/invites/{uid}`, refused if either has blocked the other; at most 20 pending per recipient | +| `invite(uid)` | any member | `groups/{gid}/invites/{uid}`; needs an accepted 1:1 chat between the two; refused if either has blocked the other; at most 20 pending per recipient | | `accept` / `decline` | the invitee | marks the invite | -| `add(uid, epoch, commit, welcomes, packages)` | an administrator's device, after `accept` | checks `epoch`, consumes the packages, writes the Commit, the Welcomes, `members` and `groupRefs`, and raises `epoch`, all at once | +| `add(uid, epoch, commit, welcomes, packages)` | any member's device (the inviter's, or an administrator's if the inviter left), after `accept` | checks `epoch`, consumes the packages, writes the Commit, the Welcomes, `members` and `groupRefs`, and raises `epoch`, all at once | | `addDevice(device, …)` | the same account's other device | the same, for a newly linked device | | `remove(uid, epoch, commit)` | administrator | removes every leaf of that account | | `leave` | a member | removes it from `members` and `groupRefs` at once (it can no longer read) and adds its leaves to `fence` | @@ -186,8 +187,11 @@ devices, rechecking fences, as `pushOnMessage` does. the first bubble and a small avatar beside the last. The header shows the group name and the number of people. Tapping it opens *Group info*: - the members and who are administrators; - - for administrators: *Add people*, *Rename* and *Remove*; - - for everyone: *Leave*. + - for everyone: *Add people* (from your 1:1 contacts) and *Leave*; + - for administrators also: *Rename* and *Remove*. +- **Message actions.** Hold a message: react (anyone); *Edit* and *Delete for + everyone* (your own messages only; every member's phone applies them only from the + author); *Delete for me* (any message, this phone only). - **Colours.** - **Your** messages use your primary chat colour, as in 1:1 chats. - **Each other member's** messages use the secondary (soft) version of *their own* diff --git a/lib/src/app/group_providers.dart b/lib/src/app/group_providers.dart new file mode 100644 index 0000000..b3aa491 --- /dev/null +++ b/lib/src/app/group_providers.dart @@ -0,0 +1,71 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/chat_color_preference.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/db/local_messages.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/model/groups/group_service.dart'; + +/// The signed-in account's group service, or null (groups off or not ready). +final groupServiceProvider = Provider( + (ref) => ref.watch(appSessionProvider).value?.groups, +); + +final groupsProvider = StreamProvider.autoDispose>(( + ref, +) { + final service = ref.watch(groupServiceProvider); + return service == null ? Stream.value(const {}) : service.watchGroups(); +}); + +final groupInvitationsProvider = + StreamProvider.autoDispose>((ref) { + final service = ref.watch(groupServiceProvider); + return service == null + ? Stream.value(const []) + : service.watchInvitations(); + }); + +final groupMessagesProvider = StreamProvider.autoDispose + .family, String>((ref, gid) { + final service = ref.watch(groupServiceProvider); + return service == null + ? Stream.value(const []) + : service.watchMessages(gid); + }); + +/// Each member's colour name in one group, updated as profile messages arrive. +final groupColorsProvider = StreamProvider.autoDispose + .family((ref, gid) async* { + final service = ref.watch(groupServiceProvider); + if (service == null) { + yield const {}; + return; + } + yield service.colorsOf(gid); + await for (final changed in service.colorChanges) { + if (changed == gid) yield service.colorsOf(gid); + } + }); + +/// Shares a new primary colour with every group when it changes in Settings. +final groupColorSyncProvider = Provider((ref) { + ref.listen(chatBubbleColorsProvider, (before, after) { + final service = ref.read(groupServiceProvider); + if (service == null || before?.outgoing == after.outgoing) return; + service.ownColor = after.outgoing.name; + unawaited(service.shareColor()); + }); +}); + +/// People this account can put in a group: accepted 1:1 chats, not blocked. +/// The server checks the same thing for every invitation. +final groupContactsProvider = Provider.autoDispose>((ref) { + final chats = ref.watch(chatsProvider).value ?? const []; + final blocked = ref.watch(blockedUidsProvider).value ?? const {}; + return [ + for (final c in chats) + if (c.accepted && !blocked.contains(c.peerUid)) c.peerUid, + ]; +}); diff --git a/lib/src/app/providers.dart b/lib/src/app/providers.dart index 4ff4d7b..f9f0a36 100644 --- a/lib/src/app/providers.dart +++ b/lib/src/app/providers.dart @@ -2,6 +2,10 @@ import 'dart:async'; import 'dart:io'; +import 'package:fireplace/src/app/chat_color_preference.dart'; +import 'package:fireplace/src/model/groups/group_models.dart' + show groupsEnabled; +import 'package:fireplace/src/model/groups/group_service.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; @@ -127,6 +131,7 @@ class AppSession { required this.keys, required this.safety, this.pushNotifications, + this.groups, LocalChatPreferences? chatPreferences, required StreamSubscription chatsSub, required this.dispose, @@ -142,6 +147,9 @@ class AppSession { final KeyService keys; final SafetyService safety; final PushNotificationService? pushNotifications; + + /// Group chats (decision 0050); null unless built with FIREPLACE_GROUPS. + final GroupService? groups; final StreamSubscription _chatsSub; final Future Function() dispose; @@ -321,6 +329,27 @@ final appSessionProvider = FutureProvider((ref) async { ); scope.add(onMessage.cancel); } + // 9b. Group chats (decision 0050), only in builds with FIREPLACE_GROUPS. + // A failure here leaves groups unavailable and 1:1 chats untouched. + GroupService? groups; + if (groupsEnabled) { + try { + final service = GroupService( + db: db, + uid: user.uid, + device: device, + secrets: secrets, + historyDir: historyDir, + messages: store, + )..ownColor = ref.read(chatBubbleColorsProvider).outgoing.name; + await service.start(); + scope.add(service.close); + groups = service; + } catch (_) { + groups = null; + } + scope.checkActive(); + } // 10. Return the session with cleanup and local-data removal. final session = AppSession( uid: user.uid, @@ -330,6 +359,7 @@ final appSessionProvider = FutureProvider((ref) async { keys: keys, safety: safety, pushNotifications: pushNotifications, + groups: groups, chatPreferences: chatPreferences, chatsSub: chatsSub, destroyLocalData: () async { diff --git a/lib/src/db/account_erasure.dart b/lib/src/db/account_erasure.dart index 36c1a9f..0d22478 100644 --- a/lib/src/db/account_erasure.dart +++ b/lib/src/db/account_erasure.dart @@ -32,6 +32,7 @@ Future eraseAccountSecrets(SecretStore store, String uid) async { 'bundle', 'msgkey', 'groupkey', + 'groupcolors', 'chatprefskey', 'hidden', 'pushasked', diff --git a/lib/src/model/groups/group_models.dart b/lib/src/model/groups/group_models.dart index 71efc88..298001e 100644 --- a/lib/src/model/groups/group_models.dart +++ b/lib/src/model/groups/group_models.dart @@ -1,4 +1,9 @@ /// Group chats (mobile decision 0050, `docs/protocol/group-chats-v1.md`). +/// +/// Off unless the app is built with `--dart-define=FIREPLACE_GROUPS=true`, so +/// release builds have no groups until the release gates in 0050 are met. +const groupsEnabled = bool.fromEnvironment('FIREPLACE_GROUPS'); + abstract final class GroupLimits { static const maxMembers = 16; static const maxNameChars = 40; @@ -101,8 +106,17 @@ class GroupRefused implements Exception { 'You have made the most groups allowed today. Try again tomorrow.', 'too many groups' => 'You are in the most groups allowed.', 'not an administrator' => 'Only administrators can do that.', + 'not a contact' => 'You can invite only people you already chat with.', 'expired' => 'This invitation has expired.', 'no invite' => 'This invitation is no longer open.', _ => 'That did not work. Try again.', }; } + +/// An action this device refused before sending, in plain words. +class GroupActionError implements Exception { + GroupActionError(this.message); + final String message; + @override + String toString() => message; +} diff --git a/lib/src/model/groups/group_requests.dart b/lib/src/model/groups/group_requests.dart index 691b33f..706646c 100644 --- a/lib/src/model/groups/group_requests.dart +++ b/lib/src/model/groups/group_requests.dart @@ -50,8 +50,12 @@ class GroupRequests { await batch.commit(); }); final done = Completer(); + var seen = false; final sub = ref.snapshots().listen( (snap) { + // The last member leaving deletes the group with its requests: done. + if (!snap.exists && seen && !done.isCompleted) done.complete(); + if (snap.exists) seen = true; final status = snap.data()?['status']; if (status == 'done' && !done.isCompleted) done.complete(); if (status == 'refused' && !done.isCompleted) { diff --git a/lib/src/model/groups/group_service.dart b/lib/src/model/groups/group_service.dart index 6dc740b..4111bba 100644 --- a/lib/src/model/groups/group_service.dart +++ b/lib/src/model/groups/group_service.dart @@ -9,6 +9,8 @@ import 'package:fireplace/src/crypto/group_crypto.dart'; import 'package:fireplace/src/db/group_record_file.dart'; import 'package:fireplace/src/db/local_messages.dart'; import 'package:fireplace/src/db/secret_store.dart'; +import 'package:fireplace/src/db/message_mutation.dart'; +import 'package:fireplace/src/model/chat/message_limits.dart'; import 'package:fireplace/src/model/chat/message_payload.dart'; import 'package:fireplace/src/model/chat/send_allowance.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; @@ -87,6 +89,10 @@ class GroupService { yield* _invitesCtrl.stream; } + /// A group's history on this device, newest last. + Stream> watchMessages(String gid) => + _messages.watch(groupChatId(gid)); + MemberColors colorsOf(String gid) => Map.unmodifiable(_colors[gid] ?? const {}); Stream get colorChanges => _colorsCtrl.stream; @@ -432,7 +438,9 @@ class GroupService { if (kind == 'update' || kind == 'meta') { return added.isEmpty && removed.isEmpty; } - final addsOk = added.every((m) => admin || m['uid'] == committer); + // Any member may add someone (owner's choice); the server allowed it only + // for an accepted invitation. + const addsOk = true; final removesOk = removed.every((m) { if (admin) return true; // Fenced by the server: no longer in its roster for that device. @@ -484,14 +492,21 @@ class GroupService { ); return; } - if (!info.isAdmin(uid)) return; final accepted = await _db .collection('groups/$gid/invites') .where('status', isEqualTo: 'accepted') - .limit(1) .get(); - if (accepted.docs.isEmpty) return; - final invite = accepted.docs.first; + // The inviter's device adds the person; administrators step in for an + // inviter who has left. + final invite = accepted.docs + .where( + (d) => + d.data()['by'] == uid || + (info.isAdmin(uid) && + !info.members.any((m) => m.uid == d.data()['by'])), + ) + .firstOrNull; + if (invite == null) return; final devices = ((invite.data()['devices'] as List?) ?? const []) .cast(); final packages = >[]; @@ -603,7 +618,8 @@ class GroupService { // Not a profile message. } final decoded = decodeMessagePayload(plain); - if (decoded.mutation != null) return; // reactions and edits: later version + // Edits, reactions and deletes are stored like 1:1 ones: the history's + // projection applies an edit or delete only from the message's author. await _messages.add( LocalMessage( id: id, @@ -615,20 +631,102 @@ class GroupService { body: decoded.body, status: decoded.status, quote: decoded.quote, + mutation: decoded.mutation, ), ); } // ---------------------------------------------------------------- sending + /// Edits one of this account's own messages, for everyone (up to 10 times + /// within 24 hours, as in 1:1 chats). + Future edit(String gid, String targetId, String body) async { + final target = await _own(gid, targetId); + final age = _now().difference(target.sentAt); + if (age.isNegative || + age > const Duration(hours: 24) || + target.editClock >= 10) { + throw GroupActionError( + 'You can edit your messages up to 10 times within 24 hours.', + ); + } + if (body.trim() == target.body) { + throw GroupActionError('Make a change before saving.'); + } + if (messageTooLong(body)) throw GroupActionError(messageLimitError); + await _control( + gid, + MessageMutation( + kind: MessageMutationKind.edit, + targetId: targetId, + body: body.trim(), + revision: target.editClock + 1, + ), + ); + } + + /// Deletes one of this account's own messages for everyone. + Future deleteForEveryone(String gid, String targetId) async { + await _own(gid, targetId); + await _control( + gid, + MessageMutation(kind: MessageMutationKind.delete, targetId: targetId), + ); + } + + /// Adds, changes or (the same emoji again) removes this account's reaction. + Future react(String gid, String targetId, String emoji) async { + final target = await _messages.get(groupChatId(gid), targetId); + if (target == null || !target.visible) { + throw GroupActionError('That message is no longer here.'); + } + final previous = target.reactions[uid]; + await _control( + gid, + MessageMutation( + kind: MessageMutationKind.reaction, + targetId: targetId, + emoji: emoji, + operation: previous?.emoji == emoji + ? ReactionOperation.clear + : ReactionOperation.set, + revision: (target.reactionClocks[uid] ?? previous?.revision ?? 0) + 1, + ), + ); + } + + /// Removes a message from this phone only. + Future deleteLocally(String gid, String messageId) => + _messages.add(LocalMessage.tombstone(groupChatId(gid), messageId)); + + Future _own(String gid, String targetId) async { + final target = await _messages.get(groupChatId(gid), targetId); + if (target == null || target.senderUid != uid || target.remotelyDeleted) { + throw GroupActionError('You can only change your own messages.'); + } + return target; + } + + Future _control(String gid, MessageMutation mutation) { + final checked = MessageMutation.fromJson(mutation.toJson()); + return _publish( + gid, + encodeMessagePayload(text: '', now: _now(), mutation: checked), + mutation: checked, + ); + } + /// Encrypts and publishes one text message. The message is saved first /// (unconfirmed); a definite refusal removes it, an unknown outcome keeps /// it unconfirmed, and it is never resent automatically. - Future send(String gid, String text) => _publish( - gid, - encodeMessagePayload(text: text, now: _now()), - text: text, - ); + Future send(String gid, String text) { + if (messageTooLong(text)) throw GroupActionError(messageLimitError); + return _publish( + gid, + encodeMessagePayload(text: text, now: _now()), + text: text, + ); + } /// This account's primary colour name, kept current by the app layer. String ownColor = 'ember'; @@ -651,7 +749,12 @@ class GroupService { } } - Future _publish(String gid, List payload, {String? text}) async { + Future _publish( + String gid, + List payload, { + String? text, + MessageMutation? mutation, + }) async { final n = _now().microsecondsSinceEpoch; final id = '$deviceId-$n'; final chatId = groupChatId(gid); @@ -727,6 +830,20 @@ class GroupService { }, ); if (text != null) await _messages.add(local(MessageStatus.ok)); + if (mutation != null) { + await _messages.add( + LocalMessage( + id: id, + chatId: chatId, + senderUid: uid, + senderDevice: deviceId, + outgoing: true, + sentAt: sentAt, + body: '', + mutation: mutation, + ), + ); + } } on FirebaseException { // Refused in every form: nothing was published. if (text != null) await _messages.remove(chatId, id); diff --git a/lib/src/view/chat_list/chat_list_screen.dart b/lib/src/view/chat_list/chat_list_screen.dart index 6cf2ed8..f1c6e61 100644 --- a/lib/src/view/chat_list/chat_list_screen.dart +++ b/lib/src/view/chat_list/chat_list_screen.dart @@ -1,7 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/view/groups/group_chat_screen.dart'; +import 'package:fireplace/src/view/groups/group_tile.dart'; +import 'package:fireplace/src/view/groups/new_group_screen.dart'; import 'package:fireplace/src/model/chat/chat_preview.dart'; +import 'package:fireplace/src/model/chat/chat_summary.dart'; import 'package:fireplace/src/view/chat/chat_screen.dart'; import 'package:fireplace/src/styles/brand/logo.dart'; import 'package:fireplace/src/styles/brand/lockup.dart'; @@ -60,6 +66,8 @@ class _ChatListScreenState extends ConsumerState { @override Widget build(BuildContext context) { final chats = ref.watch(chatsProvider); + // Shares a new primary colour with your groups when it changes. + ref.watch(groupColorSyncProvider); return Scaffold( appBar: UiAppBar( context: context, @@ -167,6 +175,17 @@ class _ChatListScreenState extends ConsumerState { for (final c in live) if (c.isIncomingRequest(me)) c, ]; + // Group invitations wait in Message requests too. + final invitations = + ref.watch(groupInvitationsProvider).value ?? const []; + final requestCount = requests.length + invitations.length; + final groups = [ + for (final g + in (ref.watch(groupsProvider).value ?? const {}).values) + if (_query.isEmpty || + g.name.toLowerCase().contains(_query)) + g, + ]; // Newest first, by the newest message this phone knows of: a // message just sent or received moves its chat up at once. final epoch = DateTime.fromMillisecondsSinceEpoch(0); @@ -217,15 +236,13 @@ class _ChatListScreenState extends ConsumerState { key: const Key('globalSearchResults'), padding: const EdgeInsets.only(bottom: 96), children: [ - if (requests.isNotEmpty) + if (requestCount > 0) ListTile( key: const Key('requestsTile'), leading: const Icon( Icons.mark_email_unread_outlined, ), - title: Text( - 'Message requests (${requests.length})', - ), + title: Text('Message requests ($requestCount)'), subtitle: const Text( 'People who want to chat with you', ), @@ -253,11 +270,42 @@ class _ChatListScreenState extends ConsumerState { onOpen: () => _open(ChatScreen(chatId: chat.chatId)), ), + if (groups.isNotEmpty) + Padding( + padding: const EdgeInsets.fromLTRB(16, 8, 16, 8), + child: Text( + 'Groups', + style: Theme.of(context).textTheme.titleMedium, + ), + ), + for (final g in groups) + GroupTile( + group: g, + onOpen: () => _open(GroupChatScreen(gid: g.gid)), + ), GlobalMessageResults(query: _query, onOpen: _open), ], ); } - if (sorted.isEmpty && requests.isEmpty) { + // Chats and groups together, newest activity first. + final groupActivity = { + for (final g in groups) + g.gid: + (ref + .watch(groupMessagesProvider(g.gid)) + .value + ?.lastOrNull + ?.sentAt) ?? + epoch, + }; + final entries = [...sorted, ...groups] + ..sort((a, b) { + DateTime at(Object e) => e is GroupInfo + ? groupActivity[e.gid]! + : activity[(e as ChatSummary).chatId]!; + return at(b).compareTo(at(a)); + }); + if (entries.isEmpty && requestCount == 0) { if (_query.isNotEmpty) { return UiEmptyState( title: emptyTitle, @@ -266,14 +314,14 @@ class _ChatListScreenState extends ConsumerState { } return _Empty(); } - final requestOffset = requests.isEmpty ? 0 : 1; + final requestOffset = requestCount == 0 ? 0 : 1; return ListView.separated( key: const Key('conversationList'), padding: const EdgeInsets.only(bottom: 96), itemCount: - sorted.length + + entries.length + requestOffset + - (sorted.isEmpty ? 1 : 0), + (entries.isEmpty ? 1 : 0), // A hairline from the text edge to the row's end. separatorBuilder: (_, _) => const Divider( height: 1 / 3, @@ -282,7 +330,7 @@ class _ChatListScreenState extends ConsumerState { endIndent: ChatTile.edge, ), itemBuilder: (_, i) { - if (requests.isNotEmpty && i == 0) { + if (requestCount > 0 && i == 0) { return ListTile( key: Key('requestsTile'), leading: CircleAvatar( @@ -294,7 +342,7 @@ class _ChatListScreenState extends ConsumerState { child: Icon(Icons.mark_email_unread_outlined), ), title: Text( - 'Message requests (${requests.length})', + 'Message requests ($requestCount)', style: TextStyle(fontWeight: FontWeight.w700), ), subtitle: Text('People who want to chat with you'), @@ -302,7 +350,7 @@ class _ChatListScreenState extends ConsumerState { onTap: () => _open(const RequestsScreen()), ); } - if (sorted.isEmpty) { + if (entries.isEmpty) { return _query.isEmpty ? const UiEmptyState( title: 'No conversations yet', @@ -313,7 +361,14 @@ class _ChatListScreenState extends ConsumerState { message: 'Try another username. Your message requests are shown above.', ); } - final chat = sorted[i - requestOffset]; + final entry = entries[i - requestOffset]; + if (entry is GroupInfo) { + return GroupTile( + group: entry, + onOpen: () => _open(GroupChatScreen(gid: entry.gid)), + ); + } + final chat = entry as ChatSummary; return ChatTile( chat: chat, onOpen: () => _open(ChatScreen(chatId: chat.chatId)), @@ -331,6 +386,42 @@ class _ChatListScreenState extends ConsumerState { Future _newChat(BuildContext context, WidgetRef ref) async { if (_opening) return; + // The session has a group service only in builds with FIREPLACE_GROUPS. + if (ref.read(groupServiceProvider) != null) { + final choice = await showModalBottomSheet( + context: context, + builder: (ctx) => SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + key: const Key('messageSomeone'), + leading: const Icon(Icons.person_outline), + title: const Text('Message someone'), + onTap: () => Navigator.pop(ctx, 'chat'), + ), + ListTile( + key: const Key('newGroup'), + leading: const Icon(Icons.group_outlined), + title: const Text('New group'), + onTap: () => Navigator.pop(ctx, 'group'), + ), + ], + ), + ), + ); + if (choice == null || !context.mounted) return; + if (choice == 'group') { + final gid = await Navigator.of(context).push( + MaterialPageRoute(builder: (_) => const NewGroupScreen()), + ); + if (gid != null && context.mounted) { + await _open(GroupChatScreen(gid: gid)); + } + return; + } + } + if (!context.mounted) return; _opening = true; try { final chatId = await showDialog( diff --git a/lib/src/view/groups/contact_picker.dart b/lib/src/view/groups/contact_picker.dart new file mode 100644 index 0000000..c9b976e --- /dev/null +++ b/lib/src/view/groups/contact_picker.dart @@ -0,0 +1,49 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; + +/// A tickable list of contacts, used to start a group and to add people. +class ContactPicker extends ConsumerWidget { + const ContactPicker({ + super.key, + required this.contacts, + required this.selected, + required this.onChanged, + required this.limit, + }); + final List contacts; + final Set selected; + final ValueChanged> onChanged; + + /// How many may be ticked; further rows are disabled once it is reached. + final int limit; + + @override + Widget build(BuildContext context, WidgetRef ref) { + return Column( + children: [ + for (final uid in contacts) + Builder( + builder: (context) { + final name = ref.watch(peerUsernameProvider(uid)).value ?? '…'; + final ticked = selected.contains(uid); + return CheckboxListTile( + key: Key('pick_$uid'), + value: ticked, + secondary: PersonAvatar(name: name, size: 36), + title: Text('@$name'), + onChanged: !ticked && selected.length >= limit + ? null + : (on) => onChanged( + on == true + ? {...selected, uid} + : ({...selected}..remove(uid)), + ), + ); + }, + ), + ], + ); + } +} diff --git a/lib/src/view/groups/group_avatar.dart b/lib/src/view/groups/group_avatar.dart new file mode 100644 index 0000000..0138b82 --- /dev/null +++ b/lib/src/view/groups/group_avatar.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; +import 'package:fireplace/src/styles/design_tokens.dart'; + +/// A group's avatar: its name's first letter in a rounded square, so groups +/// are a different shape from people's round avatars (owner's choice, 0050). +class GroupAvatar extends StatelessWidget { + const GroupAvatar({super.key, required this.name, this.size = 44}); + final String name; + final double size; + + @override + Widget build(BuildContext context) { + final t = FireplaceUiTokens.of(context); + final letter = name.trim().isEmpty + ? '#' + : name.trim().characters.first.toUpperCase(); + return ExcludeSemantics( + child: Container( + width: size, + height: size, + alignment: Alignment.center, + decoration: BoxDecoration( + color: t.selectedRow, + borderRadius: BorderRadius.circular(size * 0.28), + border: Border.all(color: t.accent.withValues(alpha: .35)), + ), + child: Text( + letter, + style: TextStyle( + fontSize: size * 0.42, + fontWeight: FontWeight.w700, + color: t.accentText, + ), + ), + ), + ); + } +} diff --git a/lib/src/view/groups/group_chat_screen.dart b/lib/src/view/groups/group_chat_screen.dart new file mode 100644 index 0000000..ac9696e --- /dev/null +++ b/lib/src/view/groups/group_chat_screen.dart @@ -0,0 +1,377 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/db/local_messages.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/styles/chat_colors.dart'; +import 'package:fireplace/src/styles/design_tokens.dart'; +import 'package:fireplace/src/view/groups/group_info_screen.dart'; +import 'package:fireplace/src/widgets/app_bar.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; +import 'package:fireplace/src/widgets/clock_time.dart'; +import 'package:fireplace/src/widgets/dialog.dart'; +import 'package:fireplace/src/widgets/page.dart'; +import 'package:fireplace/src/widgets/status.dart'; + +const _quickReactions = ['👍', '❤️', '😂', '😮', '😢', '🙏']; + +/// A group conversation (decision 0050). Each run of messages from one person +/// has their name above the first bubble and their avatar beside the last; +/// other members' bubbles use the soft version of their own primary colour. +class GroupChatScreen extends ConsumerStatefulWidget { + const GroupChatScreen({super.key, required this.gid}); + final String gid; + @override + ConsumerState createState() => _GroupChatScreenState(); +} + +class _GroupChatScreenState extends ConsumerState { + final _text = TextEditingController(); + bool _sending = false; + String? _error; + + @override + void dispose() { + _text.dispose(); + super.dispose(); + } + + Future _run(Future Function() action) async { + setState(() => _error = null); + try { + await action(); + } on GroupActionError catch (e) { + if (mounted) setState(() => _error = e.message); + } catch (_) { + if (mounted) { + setState(() => _error = 'That did not go through. Try again.'); + } + } + } + + Future _send() async { + final service = ref.read(groupServiceProvider); + final text = _text.text.trim(); + if (service == null || text.isEmpty || _sending) return; + setState(() => _sending = true); + _text.clear(); + await _run(() => service.send(widget.gid, text)); + if (mounted) setState(() => _sending = false); + } + + Future _actions(LocalMessage m, bool mine) async { + final service = ref.read(groupServiceProvider); + if (service == null) return; + final choice = await showModalBottomSheet( + context: context, + builder: (ctx) => SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(12), + child: Wrap( + spacing: 8, + children: [ + for (final e in _quickReactions) + TextButton( + key: Key('react_$e'), + onPressed: () => Navigator.pop(ctx, 'react:$e'), + child: Text(e, style: const TextStyle(fontSize: 24)), + ), + ], + ), + ), + if (mine) + ListTile( + key: const Key('editGroupMessage'), + leading: const Icon(Icons.edit_outlined), + title: const Text('Edit'), + onTap: () => Navigator.pop(ctx, 'edit'), + ), + if (mine) + ListTile( + key: const Key('deleteForEveryone'), + leading: const Icon(Icons.delete_outline), + title: const Text('Delete for everyone'), + onTap: () => Navigator.pop(ctx, 'deleteAll'), + ), + ListTile( + key: const Key('deleteForMe'), + leading: const Icon(Icons.delete_sweep_outlined), + title: const Text('Delete for me'), + onTap: () => Navigator.pop(ctx, 'deleteMine'), + ), + ], + ), + ), + ); + if (!mounted || choice == null) return; + if (choice.startsWith('react:')) { + await _run(() => service.react(widget.gid, m.id, choice.substring(6))); + } else if (choice == 'edit') { + final controller = TextEditingController(text: m.body); + final body = await showDialog( + context: context, + builder: (ctx) => UiDialog( + title: const Text('Edit message'), + content: TextField( + controller: controller, + autofocus: true, + maxLines: null, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx), + child: const Text('Cancel'), + ), + TextButton( + key: const Key('saveEdit'), + onPressed: () => Navigator.pop(ctx, controller.text), + child: const Text('Save'), + ), + ], + ), + ); + controller.dispose(); + if (body != null) await _run(() => service.edit(widget.gid, m.id, body)); + } else if (choice == 'deleteAll') { + await _run(() => service.deleteForEveryone(widget.gid, m.id)); + } else if (choice == 'deleteMine') { + await _run(() => service.deleteLocally(widget.gid, m.id)); + } + } + + @override + Widget build(BuildContext context) { + final groups = ref.watch(groupsProvider).value ?? const {}; + final group = groups[widget.gid]; + final me = ref.watch(appSessionProvider).value?.uid ?? ''; + final messages = [ + for (final m + in ref.watch(groupMessagesProvider(widget.gid)).value ?? + const []) + if (m.visible && !m.remotelyDeleted) m, + ]; + final colors = ref.watch(groupColorsProvider(widget.gid)).value ?? const {}; + if (group == null) { + return Scaffold( + appBar: UiAppBar(context: context, title: const Text('Group')), + body: const UiEmptyState( + title: 'You are not in this group', + message: 'You left it, or it was removed from this phone.', + icon: Icons.group_off_outlined, + ), + ); + } + final count = group.members.length; + return Scaffold( + appBar: UiAppBar( + context: context, + title: InkWell( + key: const Key('groupHeader'), + onTap: () => Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => GroupInfoScreen(gid: widget.gid), + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(group.name, maxLines: 1, overflow: TextOverflow.ellipsis), + Text( + '$count ${count == 1 ? 'person' : 'people'}', + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ), + ), + body: Column( + children: [ + Expanded( + child: messages.isEmpty + ? const UiEmptyState( + title: 'Say hello', + message: 'Messages in this group are end-to-end encrypted.', + icon: Icons.forum_outlined, + ) + : ListView.builder( + key: const Key('groupMessages'), + reverse: true, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + itemCount: messages.length, + itemBuilder: (_, i) { + final index = messages.length - 1 - i; + final m = messages[index]; + final mine = m.senderUid == me; + final first = + index == 0 || + messages[index - 1].senderUid != m.senderUid; + final last = + index == messages.length - 1 || + messages[index + 1].senderUid != m.senderUid; + return GroupBubble( + message: m, + mine: mine, + showName: first && !mine, + showAvatar: last && !mine, + color: + ChatBubbleColor.values + .asNameMap()[colors[m.senderUid]] ?? + ChatBubbleColor.stone, + onHold: () => _actions(m, mine), + ); + }, + ), + ), + if (_error != null) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: UiActionError( + key: const Key('groupError'), + message: _error!, + ), + ), + SafeArea( + top: false, + child: Padding( + padding: const EdgeInsets.fromLTRB(12, 4, 8, 8), + child: Row( + children: [ + Expanded( + child: TextField( + key: const Key('groupComposer'), + controller: _text, + minLines: 1, + maxLines: 5, + textCapitalization: TextCapitalization.sentences, + decoration: const InputDecoration(hintText: 'Message'), + onSubmitted: (_) => _send(), + ), + ), + IconButton( + key: const Key('groupSend'), + tooltip: 'Send', + onPressed: _sending ? null : _send, + icon: const Icon(Icons.send_rounded), + ), + ], + ), + ), + ), + ], + ), + ); + } +} + +/// One message in a group. Reused for every row. +class GroupBubble extends ConsumerWidget { + const GroupBubble({ + super.key, + required this.message, + required this.mine, + required this.showName, + required this.showAvatar, + required this.color, + required this.onHold, + }); + final LocalMessage message; + final bool mine, showName, showAvatar; + final ChatBubbleColor color; + final VoidCallback onHold; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final t = FireplaceUiTokens.of(context); + final brightness = Theme.of(context).brightness; + final name = mine + ? 'You' + : ref.watch(peerUsernameProvider(message.senderUid)).value ?? '…'; + final background = mine ? t.outgoingBubble : color.incoming(brightness); + final foreground = mine ? t.outgoingText : t.incomingText; + final reactions = message.reactions.values.map((r) => r.emoji).toList(); + final bubble = GestureDetector( + onLongPress: onHold, + child: Container( + constraints: BoxConstraints( + maxWidth: MediaQuery.sizeOf(context).width * 0.72, + ), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: background, + borderRadius: BorderRadius.circular(18), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(message.body, style: TextStyle(color: foreground)), + const SizedBox(height: 2), + Text( + [ + clockTime(message.sentAt, MaterialLocalizations.of(context)), + if (message.editClock > 0) 'edited', + if (message.status == MessageStatus.unconfirmed) + 'not confirmed', + ].join(' · '), + style: TextStyle( + color: foreground.withValues(alpha: .7), + fontSize: 11, + ), + ), + ], + ), + ), + ); + return Padding( + padding: EdgeInsets.only(top: showName ? 10 : 2), + child: Column( + crossAxisAlignment: mine + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, + children: [ + if (showName) + Padding( + padding: const EdgeInsets.only(left: 44, bottom: 2), + child: Text( + name, + style: TextStyle( + color: color.accentText(brightness), + fontWeight: FontWeight.w600, + fontSize: 13, + ), + ), + ), + Row( + mainAxisAlignment: mine + ? MainAxisAlignment.end + : MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + if (!mine) + SizedBox( + width: 36, + child: showAvatar ? PersonAvatar(name: name, size: 30) : null, + ), + if (!mine) const SizedBox(width: 8), + Flexible(child: bubble), + ], + ), + if (reactions.isNotEmpty) + Padding( + padding: EdgeInsets.only(left: mine ? 0 : 44, top: 2), + child: Text( + reactions.join(' '), + key: Key('reactions_${message.id}'), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/view/groups/group_info_screen.dart b/lib/src/view/groups/group_info_screen.dart new file mode 100644 index 0000000..894ce06 --- /dev/null +++ b/lib/src/view/groups/group_info_screen.dart @@ -0,0 +1,330 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/view/groups/contact_picker.dart'; +import 'package:fireplace/src/view/groups/group_avatar.dart'; +import 'package:fireplace/src/widgets/app_bar.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; +import 'package:fireplace/src/widgets/dialog.dart'; +import 'package:fireplace/src/widgets/page.dart'; +import 'package:fireplace/src/widgets/status.dart'; + +/// A group's members and settings. Any member may invite people they chat +/// with; administrators rename the group and remove people; anyone may leave. +class GroupInfoScreen extends ConsumerStatefulWidget { + const GroupInfoScreen({super.key, required this.gid}); + final String gid; + @override + ConsumerState createState() => _GroupInfoScreenState(); +} + +class _GroupInfoScreenState extends ConsumerState { + bool _busy = false; + String? _error; + + Future _run(Future Function() action) async { + if (_busy) return; + setState(() { + _busy = true; + _error = null; + }); + try { + await action(); + } on GroupRefused catch (e) { + if (mounted) setState(() => _error = e.message); + } on GroupActionError catch (e) { + if (mounted) setState(() => _error = e.message); + } catch (_) { + if (mounted) { + setState(() => _error = 'That did not go through. Try again.'); + } + } finally { + if (mounted) setState(() => _busy = false); + } + } + + Future _confirm(String title, String message, String action) async => + await showDialog( + context: context, + builder: (ctx) => UiDialog( + title: Text(title), + content: Text(message), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx, false), + child: const Text('Cancel'), + ), + TextButton( + key: const Key('confirmGroupAction'), + onPressed: () => Navigator.pop(ctx, true), + child: Text(action), + ), + ], + ), + ) ?? + false; + + Future _rename(GroupInfo group) async { + final controller = TextEditingController(text: group.name); + final name = await showDialog( + context: context, + builder: (ctx) => UiDialog( + title: const Text('Rename group'), + content: TextField( + key: const Key('renameField'), + controller: controller, + autofocus: true, + maxLength: GroupLimits.maxNameChars, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx), + child: const Text('Cancel'), + ), + TextButton( + key: const Key('saveRename'), + onPressed: () => Navigator.pop(ctx, controller.text.trim()), + child: const Text('Save'), + ), + ], + ), + ); + controller.dispose(); + final service = ref.read(groupServiceProvider); + if (name == null || name.isEmpty || name == group.name || service == null) { + return; + } + await _run(() => service.rename(widget.gid, name)); + } + + Future _addPeople(GroupInfo group) async { + final service = ref.read(groupServiceProvider); + if (service == null) return; + final inGroup = {for (final m in group.members) m.uid}; + final picked = await Navigator.of(context).push>( + MaterialPageRoute( + builder: (_) => _AddPeopleScreen( + exclude: inGroup, + room: GroupLimits.maxMembers - inGroup.length, + ), + ), + ); + if (picked == null || picked.isEmpty) return; + await _run(() async { + for (final uid in picked) { + await service.invite(widget.gid, uid); + } + }); + if (mounted && _error == null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + picked.length == 1 + ? 'Invitation sent.' + : '${picked.length} invitations sent.', + ), + ), + ); + } + } + + @override + Widget build(BuildContext context) { + final service = ref.watch(groupServiceProvider); + final group = (ref.watch(groupsProvider).value ?? const {})[widget.gid]; + final me = ref.watch(appSessionProvider).value?.uid ?? ''; + if (group == null || service == null) { + return Scaffold( + appBar: UiAppBar(context: context, title: const Text('Group')), + body: const UiEmptyState( + title: 'You are not in this group', + message: 'You left it, or it was removed from this phone.', + icon: Icons.group_off_outlined, + ), + ); + } + final admin = group.isAdmin(me); + final members = [...group.members] + ..sort((a, b) => (a.uid == me ? 0 : 1).compareTo(b.uid == me ? 0 : 1)); + return Scaffold( + appBar: UiAppBar(context: context, title: const Text('Group info')), + body: UiPageScroll( + children: [ + const SizedBox(height: 16), + Center(child: GroupAvatar(name: group.name, size: 72)), + const SizedBox(height: 12), + Center( + child: Text( + group.name, + key: const Key('groupInfoName'), + style: Theme.of(context).textTheme.titleLarge, + ), + ), + Center( + child: Text( + '${members.length} of ${GroupLimits.maxMembers} people', + ), + ), + if (_error != null) + Padding( + padding: const EdgeInsets.all(16), + child: UiActionError(message: _error!), + ), + const SizedBox(height: 8), + if (members.length < GroupLimits.maxMembers) + ListTile( + key: const Key('addPeople'), + enabled: !_busy, + leading: const Icon(Icons.person_add_alt_outlined), + title: const Text('Add people'), + subtitle: const Text('They join once they accept'), + onTap: () => _addPeople(group), + ), + if (admin) + ListTile( + key: const Key('renameGroup'), + enabled: !_busy, + leading: const Icon(Icons.edit_outlined), + title: const Text('Rename group'), + onTap: () => _rename(group), + ), + const Divider(), + for (final m in members) + _MemberRow( + member: m, + me: m.uid == me, + canRemove: admin && m.uid != me && !_busy, + onRemove: (name) async { + if (await _confirm( + 'Remove @$name?', + 'They will no longer receive messages in this group.', + 'Remove', + )) { + await _run(() => service.remove(widget.gid, m.uid)); + } + }, + ), + const Divider(), + ListTile( + key: const Key('leaveGroup'), + enabled: !_busy, + leading: Icon( + Icons.logout, + color: Theme.of(context).colorScheme.error, + ), + title: Text( + 'Leave group', + style: TextStyle(color: Theme.of(context).colorScheme.error), + ), + subtitle: Text( + members.length == 1 + ? 'You are the last member, so the group ends.' + : 'Your copy of past messages stays on this phone.', + ), + onTap: () async { + final navigator = Navigator.of(context); + if (!await _confirm( + 'Leave ${group.name}?', + 'You will stop receiving its messages. Someone can invite ' + 'you again later.', + 'Leave', + )) { + return; + } + await _run(() => service.leave(widget.gid)); + if (mounted && _error == null) { + navigator.popUntil((r) => r.isFirst); + } + }, + ), + ], + ), + ); + } +} + +/// One person in the member list. +class _MemberRow extends ConsumerWidget { + const _MemberRow({ + required this.member, + required this.me, + required this.canRemove, + required this.onRemove, + }); + final GroupMember member; + final bool me, canRemove; + final ValueChanged onRemove; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final name = ref.watch(peerUsernameProvider(member.uid)).value ?? '…'; + return ListTile( + key: Key('member_${member.uid}'), + leading: PersonAvatar(name: name, size: 40), + title: Text(me ? 'You' : '@$name'), + subtitle: member.admin ? const Text('Administrator') : null, + trailing: canRemove + ? IconButton( + key: Key('remove_${member.uid}'), + tooltip: 'Remove from group', + icon: const Icon(Icons.person_remove_outlined), + onPressed: () => onRemove(name), + ) + : null, + ); + } +} + +/// Picks contacts to invite into an existing group. +class _AddPeopleScreen extends ConsumerStatefulWidget { + const _AddPeopleScreen({required this.exclude, required this.room}); + final Set exclude; + final int room; + @override + ConsumerState<_AddPeopleScreen> createState() => _AddPeopleScreenState(); +} + +class _AddPeopleScreenState extends ConsumerState<_AddPeopleScreen> { + Set _picked = const {}; + + @override + Widget build(BuildContext context) { + final contacts = [ + for (final uid in ref.watch(groupContactsProvider)) + if (!widget.exclude.contains(uid)) uid, + ]; + return Scaffold( + appBar: UiAppBar( + context: context, + title: const Text('Add people'), + actions: [ + TextButton( + key: const Key('sendInvites'), + onPressed: _picked.isEmpty + ? null + : () => Navigator.pop(context, _picked), + child: const Text('Invite'), + ), + ], + ), + body: contacts.isEmpty + ? const UiEmptyState( + title: 'No one else to invite', + message: 'Everyone you chat with is already here.', + icon: Icons.group_outlined, + ) + : UiPageScroll( + children: [ + ContactPicker( + contacts: contacts, + selected: _picked, + limit: widget.room, + onChanged: (s) => setState(() => _picked = s), + ), + ], + ), + ); + } +} diff --git a/lib/src/view/groups/group_invitation_card.dart b/lib/src/view/groups/group_invitation_card.dart new file mode 100644 index 0000000..473d646 --- /dev/null +++ b/lib/src/view/groups/group_invitation_card.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/view/groups/group_avatar.dart'; +import 'package:fireplace/src/widgets/status.dart'; + +/// An invitation to a group, with Join and Decline. The group's name is +/// encrypted for its members, so it shows once you have joined. +class GroupInvitationCard extends ConsumerStatefulWidget { + const GroupInvitationCard({super.key, required this.invitation}); + final GroupInvitation invitation; + @override + ConsumerState createState() => + _GroupInvitationCardState(); +} + +class _GroupInvitationCardState extends ConsumerState { + bool _busy = false; + String? _error; + + Future _run(Future Function(String gid) action) async { + final service = ref.read(groupServiceProvider); + if (service == null || _busy) return; + setState(() { + _busy = true; + _error = null; + }); + try { + await action(widget.invitation.gid); + } on GroupRefused catch (e) { + if (mounted) setState(() => _error = e.message); + } catch (_) { + if (mounted) { + setState(() => _error = 'Could not answer this invitation. Try again.'); + } + } finally { + if (mounted) setState(() => _busy = false); + } + } + + @override + Widget build(BuildContext context) { + final service = ref.watch(groupServiceProvider); + final inviter = + ref.watch(peerUsernameProvider(widget.invitation.inviter)).value ?? '…'; + return Card( + key: Key('groupInvite_${widget.invitation.gid}'), + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const GroupAvatar(name: '', size: 40), + const SizedBox(width: 12), + Expanded( + child: Text( + '@$inviter invited you to a group', + style: Theme.of(context).textTheme.titleMedium, + ), + ), + ], + ), + const SizedBox(height: 8), + const Text( + 'If you join, everyone in the group can read what you send ' + 'there. You can leave at any time.', + ), + if (_error != null) UiActionError(message: _error!), + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + key: const Key('declineGroup'), + onPressed: _busy || service == null + ? null + : () => _run(service.decline), + child: const Text('Decline'), + ), + const SizedBox(width: 8), + FilledButton( + key: const Key('joinGroup'), + onPressed: _busy || service == null + ? null + : () => _run(service.accept), + child: const Text('Join'), + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/lib/src/view/groups/group_tile.dart b/lib/src/view/groups/group_tile.dart new file mode 100644 index 0000000..d7d7b78 --- /dev/null +++ b/lib/src/view/groups/group_tile.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/styles/design_tokens.dart'; +import 'package:fireplace/src/view/groups/group_avatar.dart'; +import 'package:fireplace/src/view/chat_list/chat_list_stamp.dart'; + +/// A group in the chat list: its avatar, name, and the newest message with +/// who wrote it ("Mira: See you at 7?"). +class GroupTile extends ConsumerWidget { + const GroupTile({super.key, required this.group, required this.onOpen}); + final GroupInfo group; + final VoidCallback onOpen; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final t = FireplaceUiTokens.of(context); + final messages = + ref.watch(groupMessagesProvider(group.gid)).value ?? const []; + final last = messages.where((m) => m.visible).lastOrNull; + final me = ref.watch(appSessionProvider).value?.uid; + final sender = last == null + ? null + : last.senderUid == me + ? 'You' + : ref.watch(peerUsernameProvider(last.senderUid)).value ?? '…'; + final preview = last == null + ? '${group.members.length} ${group.members.length == 1 ? 'person' : 'people'}' + : '$sender: ${last.body}'; + return ListTile( + key: Key('group_${group.gid}'), + onTap: onOpen, + leading: GroupAvatar(name: group.name), + title: Text(group.name, maxLines: 1, overflow: TextOverflow.ellipsis), + subtitle: Text( + preview, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(color: t.secondaryText), + ), + trailing: last == null + ? null + : Text( + chatListStamp( + last.sentAt, + DateTime.now(), + MaterialLocalizations.of(context), + ), + style: TextStyle(color: t.secondaryText, fontSize: 13), + ), + ); + } +} diff --git a/lib/src/view/groups/new_group_screen.dart b/lib/src/view/groups/new_group_screen.dart new file mode 100644 index 0000000..5f1ea2e --- /dev/null +++ b/lib/src/view/groups/new_group_screen.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/view/groups/contact_picker.dart'; +import 'package:fireplace/src/widgets/app_bar.dart'; +import 'package:fireplace/src/widgets/page.dart'; +import 'package:fireplace/src/widgets/status.dart'; + +/// Names a new group and picks who to invite. People are invited, not added: +/// each one joins only after accepting. Pops with the new group's id. +class NewGroupScreen extends ConsumerStatefulWidget { + const NewGroupScreen({super.key}); + @override + ConsumerState createState() => _NewGroupScreenState(); +} + +class _NewGroupScreenState extends ConsumerState { + final _name = TextEditingController(); + Set _picked = const {}; + bool _busy = false; + String? _error; + + @override + void dispose() { + _name.dispose(); + super.dispose(); + } + + bool get _ready => + _name.text.trim().isNotEmpty && _picked.isNotEmpty && !_busy; + + Future _create() async { + final service = ref.read(groupServiceProvider); + if (service == null || !_ready) return; + setState(() { + _busy = true; + _error = null; + }); + try { + final gid = await service.create(_name.text.trim(), _picked.toList()); + if (mounted) Navigator.of(context).pop(gid); + } on GroupRefused catch (e) { + if (mounted) setState(() => _error = e.message); + } on GroupActionError catch (e) { + if (mounted) setState(() => _error = e.message); + } catch (_) { + if (mounted) { + setState(() => _error = 'Could not create the group. Try again.'); + } + } finally { + if (mounted) setState(() => _busy = false); + } + } + + @override + Widget build(BuildContext context) { + final contacts = ref.watch(groupContactsProvider); + return Scaffold( + appBar: UiAppBar( + context: context, + title: const Text('New group'), + actions: [ + TextButton( + key: const Key('createGroup'), + onPressed: _ready ? _create : null, + child: const Text('Create'), + ), + ], + ), + body: UiPageScroll( + children: [ + Padding( + padding: const EdgeInsets.all(16), + child: TextField( + key: const Key('groupName'), + controller: _name, + maxLength: GroupLimits.maxNameChars, + textCapitalization: TextCapitalization.sentences, + decoration: const InputDecoration(labelText: 'Group name'), + onChanged: (_) => setState(() {}), + ), + ), + if (_error != null) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: UiActionError(message: _error!), + ), + Padding( + padding: const EdgeInsets.fromLTRB(16, 8, 16, 4), + child: Text( + 'Invite people you chat with (up to ' + '${GroupLimits.maxMembers - 1}). They join once they accept.', + ), + ), + if (contacts.isEmpty) + const UiEmptyState( + title: 'No one to invite yet', + message: 'Start a chat with someone first, then make a group.', + icon: Icons.group_add_outlined, + ) + else + ContactPicker( + contacts: contacts, + selected: _picked, + limit: GroupLimits.maxMembers - 1, + onChanged: (s) => setState(() => _picked = s), + ), + ], + ), + ); + } +} diff --git a/lib/src/view/safety/requests_screen.dart b/lib/src/view/safety/requests_screen.dart index 78e9cfd..fab1947 100644 --- a/lib/src/view/safety/requests_screen.dart +++ b/lib/src/view/safety/requests_screen.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/view/groups/group_invitation_card.dart'; import 'package:fireplace/src/model/chat/chat_service.dart'; import 'package:fireplace/src/view/chat/chat_screen.dart'; import 'package:fireplace/src/view/safety/confirm_block.dart'; @@ -74,9 +76,10 @@ class RequestsScreen extends ConsumerWidget { !hidden.contains(c.chatId)) c, ]; + final invitations = ref.watch(groupInvitationsProvider).value ?? const []; return Scaffold( appBar: UiAppBar(context: context, title: Text('Message requests')), - body: requests.isEmpty + body: requests.isEmpty && invitations.isEmpty ? const UiEmptyState( title: 'No message requests', message: 'New requests will appear here. Messages stay hidden until you accept.', @@ -84,14 +87,20 @@ class RequestsScreen extends ConsumerWidget { ) : UiPageScroll( children: [ - Padding( - padding: EdgeInsets.all(16), - child: Text( - 'These people want to chat. You will not see what they ' - 'wrote until you accept. They cannot see whether you ' - 'have looked.', + for (final i in invitations) + Padding( + padding: const EdgeInsets.only(bottom: 12), + child: GroupInvitationCard(invitation: i), + ), + if (requests.isNotEmpty) + Padding( + padding: EdgeInsets.all(16), + child: Text( + 'These people want to chat. You will not see what they ' + 'wrote until you accept. They cannot see whether you ' + 'have looked.', + ), ), - ), for (final c in requests) _RequestTile(chat: c, session: session!), ], diff --git a/test/model/groups/group_service_test.dart b/test/model/groups/group_service_test.dart index f1c6871..697a5df 100644 --- a/test/model/groups/group_service_test.dart +++ b/test/model/groups/group_service_test.dart @@ -9,56 +9,7 @@ import 'package:fireplace/src/model/groups/group_service.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../support/fake_group_server.dart'; - -class Phone { - Phone._(this.uid, this.service, this.messages, this.secrets); - final String uid; - final GroupService service; - final MemoryMessageStore messages; - final MemorySecretStore secrets; - - static Future create( - FakeFirebaseFirestore db, - String uid, - Directory root, - ) async { - await db.collection('usernames').doc(uid).set({'uid': uid}); - await db.collection('users').doc(uid).set({ - 'username': uid, - 'displayName': uid, - }); - final secrets = MemorySecretStore(); - final device = await KeyService(db, secrets).ensureDevice(uid); - final messages = MemoryMessageStore(); - final service = GroupService( - db: db, - uid: uid, - device: device, - secrets: secrets, - historyDir: Directory('${root.path}/$uid')..createSync(recursive: true), - messages: messages, - requestTimeout: const Duration(seconds: 10), - ); - await service.start(); - return Phone._(uid, service, messages, secrets); - } -} - -/// Waits (in real time) until [ready] holds. -Future until( - Future Function() ready, { - String what = 'condition', -}) async { - final end = DateTime.now().add(const Duration(seconds: 20)); - while (!await ready()) { - if (DateTime.now().isAfter(end)) fail('Timed out waiting for $what'); - await Future.delayed(const Duration(milliseconds: 50)); - } -} - -Future> texts(Phone p, String gid) async => [ - for (final m in await p.messages.watch(groupChatId(gid)).first) m.body, -]; +import '../../support/group_phones.dart'; void main() { late Directory root; @@ -178,11 +129,12 @@ void main() { test('an administrator renames the group for everyone', () async { final gid = await bookClub(); await alice.service.rename(gid, 'Tea club'); - await until( - () async => bob.service.groups[gid]?.name == 'Tea club', - what: 'rename', - ); - expect(alice.service.groups[gid]!.name, 'Tea club'); + for (final p in [alice, bob]) { + await until( + () async => p.service.groups[gid]?.name == 'Tea club', + what: 'rename on ${p.uid}', + ); + } }); test("a member's rename is refused by the others", () async { @@ -214,6 +166,107 @@ void main() { }, ); + test( + 'only the author edits or deletes for everyone; anyone reacts', + () async { + final gid = await bookClub(); + await alice.service.send(gid, 'See you at 7'); + Future bobsCopy() async => + (await bob.messages.watch(groupChatId(gid)).first) + .where((m) => m.senderUid == 'alice' && m.visible) + .firstOrNull; + await until(() async => (await bobsCopy()) != null, what: 'delivered'); + final id = (await bobsCopy())!.id; + + await alice.service.edit(gid, id, 'See you at 8'); + await until( + () async => (await bobsCopy())?.body == 'See you at 8', + what: 'edit', + ); + // Bob cannot edit or delete Alice's message. + await expectLater( + bob.service.edit(gid, id, 'hacked'), + throwsA(isA()), + ); + await expectLater( + bob.service.deleteForEveryone(gid, id), + throwsA(isA()), + ); + + await bob.service.react(gid, id, '👍'); + await until( + () async => + (await alice.messages.get( + groupChatId(gid), + id, + ))?.reactions['bob']?.emoji == + '👍', + what: 'reaction', + ); + + await alice.service.deleteForEveryone(gid, id); + await until( + () async => + (await bob.messages.get(groupChatId(gid), id))?.remotelyDeleted == + true, + what: 'deleted for everyone', + ); + }, + ); + + test('a member deletes a message from their own phone only', () async { + final gid = await bookClub(); + await alice.service.send(gid, 'only mine to hide'); + await until( + () async => (await texts(bob, gid)).contains('only mine to hide'), + what: 'delivered', + ); + final id = (await bob.messages.watch(groupChatId(gid)).first).first.id; + await bob.service.deleteLocally(gid, id); + expect(await texts(bob, gid), isNot(contains('only mine to hide'))); + expect(await texts(alice, gid), contains('only mine to hide')); + }); + + test( + 'any member invites, and their device adds the person who accepts', + () async { + final gid = await bookClub(); + final carol = await Phone.create(db, 'carol', root); + server.watchAccount('carol'); + await bob.service.invite(gid, 'carol'); + await until( + () async => carol.service.invitations.isNotEmpty, + what: 'invitation', + ); + await carol.service.accept(gid); + await until( + () async => carol.service.groups.containsKey(gid), + what: 'Carol joins', + ); + await until( + () async => alice.service.groups[gid]!.members.length == 3, + what: 'Alice sees Carol', + ); + await carol.service.send(gid, 'hello from Carol'); + await until( + () async => (await texts(alice, gid)).contains('hello from Carol'), + what: 'Carol speaks', + ); + await carol.service.close(); + }, + ); + + test('the group ends when its last member leaves', () async { + final gid = await bookClub(); + await bob.service.leave(gid); + await alice.service.leave(gid); + expect(alice.service.groups, isEmpty); + await until( + () async => !(await db.doc('groups/$gid').get()).exists, + what: 'group deleted', + ); + }); + test('a declined invitation goes away and adds nobody', () async { final gid = await alice.service.create('Book club', ['bob']); await until( diff --git a/test/support/fake_group_server.dart b/test/support/fake_group_server.dart index ae3f2f5..4d68acc 100644 --- a/test/support/fake_group_server.dart +++ b/test/support/fake_group_server.dart @@ -38,12 +38,25 @@ class FakeGroupServer { ); } + // One request at a time, as the backend's transactions serialise them. + Future _queue = Future.value(); + Future _handle( DocumentReference> ref, Map op, Future Function(Map) run, + ) { + if (op['status'] != null || !_done.add(ref.path)) return Future.value(); + final next = _queue.then((_) => _handleNow(ref, op, run)); + _queue = next.catchError((Object _) {}); + return next; + } + + Future _handleNow( + DocumentReference> ref, + Map op, + Future Function(Map) run, ) async { - if (op['status'] != null || !_done.add(ref.path)) return; try { await run(op); processed.add('${op['kind']}'); @@ -91,7 +104,8 @@ class FakeGroupServer { Future _group(String gid, Map op) async { final groupRef = db.doc('groups/$gid'); - final group = (await groupRef.get()).data()!; + final group = (await groupRef.get()).data(); + if (group == null) throw _Refused('no group'); final members = Map.from(group['members'] as Map); final by = op['by'] as String; final epoch = group['epoch'] as int; @@ -110,8 +124,7 @@ class FakeGroupServer { switch (op['kind']) { case 'invite': - if ((members[by] as Map)['role'] != 'admin') - throw _Refused('not an administrator'); + // Any member invites (the backend also requires a 1:1 contact). final target = op['uid'] as String; await db.doc('groups/$gid/invites/$target').set({ 'by': by, @@ -150,8 +163,13 @@ class FakeGroupServer { case 'leave': final leaving = members.remove(by) as Map; await db.doc('users/$by/groupRefs/$gid').delete(); + if (members.isEmpty) { + await groupRef.delete(); + return; + } + // The fake merges map fields on update, so delete the key itself. await groupRef.update({ - 'members': members, + 'members.$by': FieldValue.delete(), 'fence': [ ...(group['fence'] as List), {'uid': by, 'devices': leaving['devices']}, @@ -162,8 +180,10 @@ class FakeGroupServer { await groupRef.update({'fence': [], 'epoch': epoch + 1}); case 'remove': await commit('membership'); - members.remove(op['uid']); - await groupRef.update({'members': members, 'epoch': epoch + 1}); + await groupRef.update({ + 'members.${op['uid']}': FieldValue.delete(), + 'epoch': epoch + 1, + }); await db.doc('users/${op['uid']}/groupRefs/$gid').delete(); } } diff --git a/test/support/group_phones.dart b/test/support/group_phones.dart new file mode 100644 index 0000000..c89f783 --- /dev/null +++ b/test/support/group_phones.dart @@ -0,0 +1,59 @@ +// Phones for group tests: each a real GroupService (Rust MLS core) over a +// shared fake Firestore. +import 'dart:io'; + +import 'package:fake_cloud_firestore/fake_cloud_firestore.dart'; +import 'package:fireplace/fireplace_services.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/model/groups/group_service.dart'; +import 'package:flutter_test/flutter_test.dart'; + +class Phone { + Phone._(this.uid, this.service, this.messages, this.secrets); + final String uid; + final GroupService service; + final MemoryMessageStore messages; + final MemorySecretStore secrets; + + static Future create( + FakeFirebaseFirestore db, + String uid, + Directory root, + ) async { + await db.collection('usernames').doc(uid).set({'uid': uid}); + await db.collection('users').doc(uid).set({ + 'username': uid, + 'displayName': uid, + }); + final secrets = MemorySecretStore(); + final device = await KeyService(db, secrets).ensureDevice(uid); + final messages = MemoryMessageStore(); + final service = GroupService( + db: db, + uid: uid, + device: device, + secrets: secrets, + historyDir: Directory('${root.path}/$uid')..createSync(recursive: true), + messages: messages, + requestTimeout: const Duration(seconds: 10), + ); + await service.start(); + return Phone._(uid, service, messages, secrets); + } +} + +/// Waits (in real time) until [ready] holds. +Future until( + Future Function() ready, { + String what = 'condition', +}) async { + final end = DateTime.now().add(const Duration(seconds: 20)); + while (!await ready()) { + if (DateTime.now().isAfter(end)) fail('Timed out waiting for $what'); + await Future.delayed(const Duration(milliseconds: 50)); + } +} + +Future> texts(Phone p, String gid) async => [ + for (final m in await p.messages.watch(groupChatId(gid)).first) m.body, +]; diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart new file mode 100644 index 0000000..21ccff2 --- /dev/null +++ b/test/view/groups/group_screens_test.dart @@ -0,0 +1,234 @@ +// Group screens over real group services (decision 0050): the signed-in +// account is Alice, as in UiFixture; Bob is a second phone. +import 'dart:async'; +import 'dart:io'; + +import 'package:fake_cloud_firestore/fake_cloud_firestore.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/styles/theme.dart'; +import 'package:fireplace/src/view/chat_list/chat_list_screen.dart'; +import 'package:fireplace/src/view/groups/group_chat_screen.dart'; +import 'package:fireplace/src/view/groups/group_info_screen.dart'; +import 'package:fireplace/src/view/groups/new_group_screen.dart'; +import 'package:fireplace/src/view/safety/requests_screen.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../../support/fake_group_server.dart'; +import '../../support/group_phones.dart'; +import '../../support/ui_fixture.dart'; + +void main() { + late Directory root; + late FakeFirebaseFirestore db; + late FakeGroupServer server; + late Phone alice, bob; + + Future setUpPhones(WidgetTester t) => t.runAsync(() async { + root = await Directory.systemTemp.createTemp('group_screens'); + db = FakeFirebaseFirestore(); + server = FakeGroupServer(db); + alice = await Phone.create(db, 'alice', root); + bob = await Phone.create(db, 'bob', root); + server + ..watchAccount('alice') + ..watchAccount('bob'); + }); + + /// Closes the phones while both event loops run: a close can wait on work + /// a screen started under the test's fake clock. + Future tearDownPhones(WidgetTester t) async { + await t.pumpWidget(const SizedBox()); + var closed = false; + unawaited( + Future.wait([alice.service.close(), bob.service.close(), server.close()]) + .whenComplete(() => closed = true), + ); + for (var i = 0; i < 200 && !closed; i++) { + await t.runAsync( + () => Future.delayed(const Duration(milliseconds: 25)), + ); + await t.pump(const Duration(milliseconds: 25)); + } + expect(closed, isTrue); + await t.runAsync(() => root.delete(recursive: true)); + } + + /// [admin] creates "Book club" and invites [member], who joins. + Future bookClub(WidgetTester t, Phone admin, Phone member) async => + (await t.runAsync(() async { + final gid = await admin.service.create('Book club', [member.uid]); + await until( + () async => member.service.invitations.any((i) => i.gid == gid), + what: 'invitation', + ); + await member.service.accept(gid); + await until( + () async => admin.service.groups[gid]!.members.length == 2, + what: 'joined', + ); + return gid; + }))!; + + /// Lets both the real event loop (MLS, fake server) and the test's fake + /// clock run until [done] holds. + Future settle(WidgetTester t, bool Function() done) async { + for (var i = 0; i < 200 && !done(); i++) { + await t.runAsync( + () => Future.delayed(const Duration(milliseconds: 25)), + ); + await t.pump(const Duration(milliseconds: 25)); + } + expect(done(), isTrue); + } + + Future pump(WidgetTester t, Widget home) async { + final f = UiFixture(); + await f.seed(); + await t.pumpWidget( + ProviderScope( + overrides: [ + ...f.overrides, + groupServiceProvider.overrideWithValue(alice.service), + groupContactsProvider.overrideWithValue(const ['bob', 'fred']), + ], + child: MaterialApp(theme: fireplaceTheme(Brightness.light), home: home), + ), + ); + // Let the providers' first values arrive from the real event loop. + for (var i = 0; i < 8; i++) { + await t.runAsync( + () => Future.delayed(const Duration(milliseconds: 25)), + ); + await t.pump(const Duration(milliseconds: 25)); + } + return f; + } + + testWidgets('the chat list shows a group with who wrote the last message', ( + t, + ) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await t.runAsync(() => bob.service.send(gid, 'See you at 7?')); + await pump(t, const ChatListScreen()); + await settle( + t, + () => find.text('bob: See you at 7?').evaluate().isNotEmpty, + ); + expect(find.text('Book club'), findsOneWidget); + await tearDownPhones(t); + }); + + testWidgets('New chat offers a group; Create needs a name and a person', ( + t, + ) async { + await setUpPhones(t); + await pump(t, const ChatListScreen()); + await t.tap(find.byKey(const Key('newChat'))); + await t.pumpAndSettle(); + expect(find.byKey(const Key('messageSomeone')), findsOneWidget); + await t.tap(find.byKey(const Key('newGroup'))); + await t.pumpAndSettle(); + expect(find.byType(NewGroupScreen), findsOneWidget); + Widget create() => + t.widget(find.byKey(const Key('createGroup'))); + expect((create() as TextButton).onPressed, isNull); + await t.enterText(find.byKey(const Key('groupName')), 'Book club'); + await t.pump(); + expect((create() as TextButton).onPressed, isNull); + await t.tap(find.byKey(const Key('pick_bob'))); + await t.pump(); + expect((create() as TextButton).onPressed, isNotNull); + await t.tap(find.byKey(const Key('createGroup'))); + await settle(t, () => find.byType(GroupChatScreen).evaluate().isNotEmpty); + expect(alice.service.groups.values.single.name, 'Book club'); + await settle(t, () => bob.service.invitations.isNotEmpty); + await tearDownPhones(t); + }); + + testWidgets("names and avatars mark others' messages; only your own " + 'can be deleted for everyone', (t) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await t.runAsync(() async { + await bob.service.send(gid, 'from Bob'); + await until( + () async => (await texts(alice, gid)).contains('from Bob'), + what: 'delivered', + ); + await alice.service.send(gid, 'from Alice'); + }); + await pump(t, GroupChatScreen(gid: gid)); + await settle(t, () => find.text('from Alice').evaluate().isNotEmpty); + expect(find.text('bob'), findsOneWidget); // the name above Bob's run + expect(find.text('2 people'), findsOneWidget); + + await t.longPress(find.text('from Bob')); + await t.pumpAndSettle(); + expect(find.byKey(const Key('deleteForEveryone')), findsNothing); + expect(find.byKey(const Key('editGroupMessage')), findsNothing); + expect(find.byKey(const Key('deleteForMe')), findsOneWidget); + await t.tapAt(const Offset(10, 10)); + await t.pumpAndSettle(); + + await t.longPress(find.text('from Alice')); + await t.pumpAndSettle(); + expect(find.byKey(const Key('deleteForEveryone')), findsOneWidget); + await t.tap(find.byKey(const Key('deleteForEveryone'))); + await settle(t, () => find.text('from Alice').evaluate().isEmpty); + await t.runAsync( + () => until( + () async => + !(await texts(bob, gid)).contains('from Alice') || + (await bob.messages.watch('group-$gid').first).any( + (m) => m.body == 'from Alice' && m.remotelyDeleted, + ), + what: 'deleted for Bob', + ), + ); + await tearDownPhones(t); + }); + + testWidgets('an administrator sees rename and remove; a member does not', ( + t, + ) async { + await setUpPhones(t); + final mine = await bookClub(t, alice, bob); + final theirs = await bookClub(t, bob, alice); + await pump(t, GroupInfoScreen(gid: mine)); + expect(find.byKey(const Key('renameGroup')), findsOneWidget); + expect(find.byKey(const Key('remove_bob')), findsOneWidget); + expect(find.byKey(const Key('addPeople')), findsOneWidget); + expect(find.text('Administrator'), findsOneWidget); + + await pump(t, GroupInfoScreen(gid: theirs)); + expect(find.byKey(const Key('renameGroup')), findsNothing); + expect(find.byKey(const Key('remove_bob')), findsNothing); + // Any member may invite people they chat with. + expect(find.byKey(const Key('addPeople')), findsOneWidget); + await tearDownPhones(t); + }); + + testWidgets('an invitation waits in Message requests until you join', ( + t, + ) async { + await setUpPhones(t); + final gid = (await t.runAsync(() async { + final gid = await bob.service.create('Tea club', ['alice']); + await until(() async => alice.service.invitations.isNotEmpty); + return gid; + }))!; + await pump(t, const RequestsScreen()); + expect(find.text('@bob invited you to a group'), findsOneWidget); + await t.tap(find.byKey(const Key('joinGroup'))); + await settle(t, () => alice.service.groups.containsKey(gid)); + await settle( + t, + () => find.byKey(Key('groupInvite_$gid')).evaluate().isEmpty, + ); + expect(alice.service.groups[gid]!.name, 'Tea club'); + await tearDownPhones(t); + }); +} From 9395f609639179fa79e0af9a1ec5f08259c7a262 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 07:51:28 +0000 Subject: [PATCH 04/17] Replace the Start chat dialog with a New chat panel. The New chat button now opens a full-height panel: Cancel and the title at the top, a To: field, Create group (when groups are on), and the people you already chat with. Typing filters the list; a username that is not in it can be messaged directly. Group start failures are now printed in debug builds. AI assistance: Claude Code. --- lib/src/app/group_providers.dart | 6 + lib/src/app/providers.dart | 8 +- lib/src/view/chat_list/chat_list_screen.dart | 52 +-- lib/src/view/chat_list/new_chat_sheet.dart | 295 ++++++++++++++++++ lib/src/view/chat_list/start_chat_dialog.dart | 94 ------ test/app/tap_outside_test.dart | 19 +- .../chat_list/chat_list_discovery_test.dart | 11 +- test/view/chat_list/compose_button_test.dart | 5 +- test/view/chat_list/new_chat_sheet_test.dart | 102 ++++++ test/view/groups/group_screens_test.dart | 2 +- 10 files changed, 437 insertions(+), 157 deletions(-) create mode 100644 lib/src/view/chat_list/new_chat_sheet.dart delete mode 100644 lib/src/view/chat_list/start_chat_dialog.dart create mode 100644 test/view/chat_list/new_chat_sheet_test.dart diff --git a/lib/src/app/group_providers.dart b/lib/src/app/group_providers.dart index b3aa491..4fc72f6 100644 --- a/lib/src/app/group_providers.dart +++ b/lib/src/app/group_providers.dart @@ -12,6 +12,12 @@ final groupServiceProvider = Provider( (ref) => ref.watch(appSessionProvider).value?.groups, ); +/// Whether this session offers groups (a build with FIREPLACE_GROUPS whose +/// group service started). +final groupsOnProvider = Provider( + (ref) => ref.watch(groupServiceProvider) != null, +); + final groupsProvider = StreamProvider.autoDispose>(( ref, ) { diff --git a/lib/src/app/providers.dart b/lib/src/app/providers.dart index f9f0a36..4cdd323 100644 --- a/lib/src/app/providers.dart +++ b/lib/src/app/providers.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:fireplace/src/app/chat_color_preference.dart'; import 'package:fireplace/src/model/groups/group_models.dart' show groupsEnabled; @@ -345,7 +346,12 @@ final appSessionProvider = FutureProvider((ref) async { await service.start(); scope.add(service.close); groups = service; - } catch (_) { + } catch (e, st) { + // Debug builds only: release builds log nothing about the account. + if (kDebugMode) { + debugPrint('Groups unavailable: $e'); + debugPrintStack(stackTrace: st); + } groups = null; } scope.checkActive(); diff --git a/lib/src/view/chat_list/chat_list_screen.dart b/lib/src/view/chat_list/chat_list_screen.dart index f1c6e61..b29b870 100644 --- a/lib/src/view/chat_list/chat_list_screen.dart +++ b/lib/src/view/chat_list/chat_list_screen.dart @@ -18,7 +18,7 @@ import 'package:fireplace/src/styles/design_tokens.dart'; import 'package:fireplace/src/view/search/message_search_results.dart'; import 'package:fireplace/src/widgets/app_bar.dart'; import 'package:fireplace/src/widgets/page.dart'; -import 'package:fireplace/src/view/chat_list/start_chat_dialog.dart'; +import 'package:fireplace/src/view/chat_list/new_chat_sheet.dart'; import 'package:fireplace/src/view/chat_list/widgets/chat_search_field.dart'; import 'package:fireplace/src/view/chat_list/widgets/chat_tile.dart'; import 'package:fireplace/src/view/chat_list/widgets/new_chat_icon.dart'; @@ -384,56 +384,22 @@ class _ChatListScreenState extends ConsumerState { ); } + /// New chat: a panel to pick someone you chat with, type a username, or + /// create a group. Future _newChat(BuildContext context, WidgetRef ref) async { if (_opening) return; - // The session has a group service only in builds with FIREPLACE_GROUPS. - if (ref.read(groupServiceProvider) != null) { - final choice = await showModalBottomSheet( - context: context, - builder: (ctx) => SafeArea( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - ListTile( - key: const Key('messageSomeone'), - leading: const Icon(Icons.person_outline), - title: const Text('Message someone'), - onTap: () => Navigator.pop(ctx, 'chat'), - ), - ListTile( - key: const Key('newGroup'), - leading: const Icon(Icons.group_outlined), - title: const Text('New group'), - onTap: () => Navigator.pop(ctx, 'group'), - ), - ], - ), - ), - ); - if (choice == null || !context.mounted) return; - if (choice == 'group') { + final choice = await NewChatSheet.show(context); + if (choice == null || !context.mounted) return; + switch (choice) { + case OpenChat(:final chatId): + await _open(ChatScreen(chatId: chatId)); + case CreateGroup(): final gid = await Navigator.of(context).push( MaterialPageRoute(builder: (_) => const NewGroupScreen()), ); if (gid != null && context.mounted) { await _open(GroupChatScreen(gid: gid)); } - return; - } - } - if (!context.mounted) return; - _opening = true; - try { - final chatId = await showDialog( - context: context, - builder: (_) => const StartChatDialog(), - ); - if (chatId == null || !context.mounted) return; - await Navigator.of(context).push( - MaterialPageRoute(builder: (_) => ChatScreen(chatId: chatId)), - ); - } finally { - _opening = false; } } } diff --git a/lib/src/view/chat_list/new_chat_sheet.dart b/lib/src/view/chat_list/new_chat_sheet.dart new file mode 100644 index 0000000..d72e7e5 --- /dev/null +++ b/lib/src/view/chat_list/new_chat_sheet.dart @@ -0,0 +1,295 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/model/account/auth_service.dart'; +import 'package:fireplace/src/model/chat/chat_service.dart'; +import 'package:fireplace/src/styles/design_tokens.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; + +/// What the person chose in [NewChatSheet]. +sealed class NewChatChoice { + const NewChatChoice(); +} + +/// Open this 1:1 chat (an existing one, or one just started). +class OpenChat extends NewChatChoice { + const OpenChat(this.chatId); + final String chatId; +} + +/// Go on to name a new group and pick its people. +class CreateGroup extends NewChatChoice { + const CreateGroup(); +} + +/// The panel behind the New chat button: a "To:" field, *Create group*, and +/// the people you already chat with. Typing filters the list; a username that +/// is not in it can be messaged directly. +class NewChatSheet extends ConsumerStatefulWidget { + const NewChatSheet({super.key}); + + static Future show(BuildContext context) => + showModalBottomSheet( + context: context, + isScrollControlled: true, + useSafeArea: true, + showDragHandle: false, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.vertical(top: Radius.circular(16)), + ), + builder: (_) => const NewChatSheet(), + ); + + @override + ConsumerState createState() => _NewChatSheetState(); +} + +class _NewChatSheetState extends ConsumerState { + final _to = TextEditingController(); + bool _busy = false; + String? _error; + + @override + void dispose() { + _to.dispose(); + super.dispose(); + } + + String get _query => _to.text.trim().toLowerCase(); + + /// Starts a chat with a username typed in the To: field. + Future _start(String name) async { + if (_busy) return; + if (name.isEmpty) { + setState(() => _error = 'Enter a username.'); + return; + } + if (!AuthService.isValidUsername(name)) { + setState(() => _error = 'Use 3–20 letters, numbers or underscores.'); + return; + } + final session = ref.read(appSessionProvider).value; + if (session == null) { + setState(() => _error = 'Your account is not ready yet.'); + return; + } + setState(() { + _busy = true; + _error = null; + }); + try { + final id = await session.chat.startChat(name); + if (mounted) Navigator.pop(context, OpenChat(id)); + } on ChatException catch (e) { + if (mounted) setState(() => _error = e.message); + } catch (_) { + if (mounted) setState(() => _error = 'Could not start chat. Try again.'); + } finally { + if (mounted) setState(() => _busy = false); + } + } + + @override + Widget build(BuildContext context) { + final t = FireplaceUiTokens.of(context); + final me = ref.watch(appSessionProvider).value?.uid ?? ''; + final blocked = ref.watch(blockedUidsProvider).value ?? const {}; + final groupsOn = ref.watch(groupsOnProvider); + final chats = + [ + for (final c + in ref.watch(chatsProvider).value ?? const []) + if (!c.isIncomingRequest(me) && !blocked.contains(c.peerUid)) c, + ]..sort( + (a, b) => (b.lastMessageAt ?? DateTime(0)).compareTo( + a.lastMessageAt ?? DateTime(0), + ), + ); + String? nameOf(ChatSummary c) => + ref.watch(peerUsernameProvider(c.peerUid)).value; + final shown = [ + for (final c in chats) + if (_query.isEmpty || + (nameOf(c)?.toLowerCase().contains(_query) ?? false)) + c, + ]; + final exact = chats + .where((c) => nameOf(c)?.toLowerCase() == _query) + .firstOrNull; + final typed = _to.text.trim(); + final canMessage = exact == null && AuthService.isValidUsername(typed); + return SizedBox( + height: MediaQuery.sizeOf(context).height, + child: Column( + children: [ + SizedBox( + height: 56, + child: Stack( + alignment: Alignment.center, + children: [ + Align( + alignment: Alignment.centerLeft, + child: TextButton( + key: const Key('cancelNewChat'), + style: TextButton.styleFrom(foregroundColor: t.text), + onPressed: _busy ? null : () => Navigator.pop(context), + child: const Text('Cancel'), + ), + ), + Text( + 'New chat', + style: Theme.of(context).textTheme.titleMedium + ?.copyWith(fontWeight: FontWeight.w700), + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(16, 0, 16, 8), + child: TextField( + key: const Key('peerUsername'), + controller: _to, + enabled: !_busy, + autocorrect: false, + enableSuggestions: false, + textInputAction: TextInputAction.go, + style: Theme.of(context).textTheme.titleMedium, + decoration: InputDecoration( + // Always shown, unlike prefixText, which needs focus. + prefixIcon: Padding( + padding: const EdgeInsets.only(right: 8), + child: Text( + 'To:', + style: Theme.of(context).textTheme.titleMedium + ?.copyWith(color: t.secondaryText), + ), + ), + prefixIconConstraints: const BoxConstraints(), + contentPadding: const EdgeInsets.symmetric(vertical: 14), + hintText: 'Username', + border: InputBorder.none, + enabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + filled: false, + errorText: _error, + errorMaxLines: 3, + ), + onChanged: (_) => setState(() => _error = null), + // Reads the field now, not the text of the last build. + onSubmitted: (value) { + final name = value.trim(); + final match = chats + .where( + (c) => + ref + .read(peerUsernameProvider(c.peerUid)) + .value + ?.toLowerCase() == + name.toLowerCase(), + ) + .firstOrNull; + if (match != null) { + Navigator.pop(context, OpenChat(match.chatId)); + } else { + _start(name); + } + }, + ), + ), + Divider(height: 1, color: t.separator), + Expanded( + child: ListView( + key: const Key('newChatList'), + keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, + children: [ + if (groupsOn && _query.isEmpty) + ListTile( + key: const Key('newGroup'), + leading: CircleAvatar( + radius: 22, + backgroundColor: t.panel, + foregroundColor: t.text, + child: const Icon(Icons.groups_outlined), + ), + title: const Text( + 'Create group', + style: TextStyle(fontWeight: FontWeight.w700), + ), + trailing: Icon(Icons.chevron_right, color: t.secondaryText), + onTap: () => Navigator.pop(context, const CreateGroup()), + ), + if (canMessage) + ListTile( + key: const Key('startChat'), + enabled: !_busy, + leading: CircleAvatar( + radius: 22, + backgroundColor: t.accent, + foregroundColor: Colors.white, + child: _busy + ? const SizedBox.square( + dimension: 18, + child: CircularProgressIndicator( + strokeWidth: 2, + color: Colors.white, + ), + ) + : const Icon(Icons.chat_bubble_outline_rounded), + ), + title: Text('Message @$typed'), + subtitle: Text( + _busy ? 'Starting…' : 'Send a message request', + ), + onTap: () => _start(typed), + ), + for (final c in shown) + _ContactRow( + chat: c, + onTap: _busy + ? null + : () => Navigator.pop(context, OpenChat(c.chatId)), + ), + if (shown.isEmpty && !canMessage && _query.isNotEmpty) + Padding( + padding: const EdgeInsets.all(24), + child: Text( + 'No one you chat with is called that.', + textAlign: TextAlign.center, + style: TextStyle(color: t.secondaryText), + ), + ), + ], + ), + ), + ], + ), + ); + } +} + +/// One person you already chat with. +class _ContactRow extends ConsumerWidget { + const _ContactRow({required this.chat, required this.onTap}); + final ChatSummary chat; + final VoidCallback? onTap; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final name = ref.watch(peerUsernameProvider(chat.peerUid)).value ?? '…'; + return ListTile( + key: Key('contact_${chat.peerUid}'), + leading: PersonAvatar(name: name), + title: Text('@$name', maxLines: 1, overflow: TextOverflow.ellipsis), + subtitle: chat.accepted + ? null + : Text( + 'Request sent', + style: TextStyle( + color: FireplaceUiTokens.of(context).secondaryText, + ), + ), + onTap: onTap, + ); + } +} diff --git a/lib/src/view/chat_list/start_chat_dialog.dart b/lib/src/view/chat_list/start_chat_dialog.dart deleted file mode 100644 index 42cdbcd..0000000 --- a/lib/src/view/chat_list/start_chat_dialog.dart +++ /dev/null @@ -1,94 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:fireplace/src/app/providers.dart'; -import 'package:fireplace/src/model/chat/chat_service.dart'; -import 'package:fireplace/src/model/account/auth_service.dart'; -import 'package:fireplace/src/widgets/dialog.dart'; - -class StartChatDialog extends ConsumerStatefulWidget { - const StartChatDialog({super.key}); - @override - ConsumerState createState() => _StartChatDialogState(); -} - -class _StartChatDialogState extends ConsumerState { - final _controller = TextEditingController(); - bool _busy = false; - String? _error; - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - - Future _start() async { - if (_busy) return; - final name = _controller.text.trim(); - if (name.isEmpty) { - setState(() => _error = 'Enter a username.'); - return; - } - if (!AuthService.isValidUsername(name)) { - setState(() => _error = 'Use 3–20 letters, numbers or underscores.'); - return; - } - final session = ref.read(appSessionProvider).value; - if (session == null) { - setState(() => _error = 'Your account is not ready yet.'); - return; - } - setState(() { - _busy = true; - _error = null; - }); - try { - final id = await session.chat.startChat(name); - if (mounted) Navigator.pop(context, id); - } on ChatException catch (e) { - if (mounted) setState(() => _error = e.message); - } catch (e) { - if (mounted) setState(() => _error = 'Could not start chat. Try again.'); - } finally { - if (mounted) setState(() => _busy = false); - } - } - - @override - Widget build(BuildContext context) => UiDialog( - title: Text('Start a chat'), - content: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - key: Key('peerUsername'), - controller: _controller, - autofocus: true, - autocorrect: false, - enableSuggestions: false, - enabled: !_busy, - decoration: InputDecoration( - labelText: "Friend's username", - helperText: '3–20 letters, numbers or underscores', - helperMaxLines: 2, - errorMaxLines: 3, - errorText: _error, - ), - onSubmitted: (_) => _start(), - ), - ], - ), - ), - actions: [ - TextButton( - onPressed: _busy ? null : () => Navigator.pop(context), - child: Text('Cancel'), - ), - FilledButton( - key: Key('startChat'), - onPressed: _busy ? null : _start, - child: Text(_busy ? 'Starting…' : 'Start'), - ), - ], - ); -} diff --git a/test/app/tap_outside_test.dart b/test/app/tap_outside_test.dart index 7917c38..84c4c91 100644 --- a/test/app/tap_outside_test.dart +++ b/test/app/tap_outside_test.dart @@ -5,7 +5,7 @@ import 'package:fireplace/src/view/account/account_deletion_screens.dart'; import 'package:fireplace/src/view/auth/auth_screen.dart'; import 'package:fireplace/src/view/chat/chat_screen.dart'; import 'package:fireplace/src/view/chat_list/chat_list_screen.dart'; -import 'package:fireplace/src/view/chat_list/start_chat_dialog.dart'; +import 'package:fireplace/src/view/chat_list/new_chat_sheet.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -299,25 +299,22 @@ void main() { 'dialog fields dismiss on outside touches without closing dialog', (tester) async { await pumpApp(tester); - unawaited( - showDialog( - context: tester.element(find.byType(AuthScreen)), - builder: (_) => const StartChatDialog(), - ), - ); + unawaited(NewChatSheet.show(tester.element(find.byType(AuthScreen)))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('peerUsername'))); await tester.pumpAndSettle(); expect(field(tester, 'peerUsername').focusNode.hasFocus, isTrue); - await tester.tap(find.text('Start a chat')); + await tester.tap(find.text('New chat')); await tester.pumpAndSettle(); expect(field(tester, 'peerUsername').focusNode.hasFocus, isFalse); expect(tester.testTextInput.isVisible, isFalse); - expect(find.byType(StartChatDialog), findsOneWidget); + expect(find.byType(NewChatSheet), findsOneWidget); await tester.tap(find.byKey(const Key('peerUsername'))); await tester.pumpAndSettle(); - await tester.tap(find.text('Cancel')); + await tester.tap(find.byKey(const Key('cancelNewChat'))); await tester.pumpAndSettle(); - expect(find.byType(StartChatDialog), findsNothing); + expect(find.byType(NewChatSheet), findsNothing); expect(tester.testTextInput.isVisible, isFalse); }, variant: platforms, diff --git a/test/view/chat_list/chat_list_discovery_test.dart b/test/view/chat_list/chat_list_discovery_test.dart index 55e9b61..bb90f71 100644 --- a/test/view/chat_list/chat_list_discovery_test.dart +++ b/test/view/chat_list/chat_list_discovery_test.dart @@ -92,7 +92,7 @@ void main() { await t.tap(find.byKey(const Key('newChat'))); await t.pumpAndSettle(); await t.enterText(find.byKey(const Key('peerUsername')), 'a'); - await t.tap(find.byKey(const Key('startChat'))); + await t.testTextInput.receiveAction(TextInputAction.go); await t.pump(); expect(f.chat.starts, isEmpty); expect( @@ -100,14 +100,15 @@ void main() { findsOneWidget, ); f.chat.startHold = Completer(); - await t.enterText(find.byKey(const Key('peerUsername')), 'fred'); + await t.enterText(find.byKey(const Key('peerUsername')), 'mira_k'); + await t.pump(); final submit = t .widget(find.byKey(const Key('peerUsername'))) .onSubmitted!; - submit('fred'); - submit('fred'); + submit('mira_k'); + submit('mira_k'); await t.pump(); - expect(f.chat.starts, ['fred']); + expect(f.chat.starts, ['mira_k']); expect( t.widget(find.byKey(const Key('peerUsername'))).enabled, isFalse, diff --git a/test/view/chat_list/compose_button_test.dart b/test/view/chat_list/compose_button_test.dart index e6345ef..2f06eb0 100644 --- a/test/view/chat_list/compose_button_test.dart +++ b/test/view/chat_list/compose_button_test.dart @@ -56,10 +56,11 @@ void main() { await t.tap(button); await t.pumpAndSettle(); expect(find.byKey(const Key('peerUsername')), findsOneWidget); - await t.enterText(find.byKey(const Key('peerUsername')), 'fred'); + await t.enterText(find.byKey(const Key('peerUsername')), 'mira_k'); + await t.pump(); await t.tap(find.byKey(const Key('startChat'))); await t.pumpAndSettle(); - expect(f.chat.starts, ['fred']); + expect(f.chat.starts, ['mira_k']); } finally { semantics.dispose(); } diff --git a/test/view/chat_list/new_chat_sheet_test.dart b/test/view/chat_list/new_chat_sheet_test.dart new file mode 100644 index 0000000..91fde30 --- /dev/null +++ b/test/view/chat_list/new_chat_sheet_test.dart @@ -0,0 +1,102 @@ +// The New chat panel: To: field, Create group, and the people you chat with. +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/styles/theme.dart'; +import 'package:fireplace/src/view/chat/chat_screen.dart'; +import 'package:fireplace/src/view/chat_list/chat_list_screen.dart'; +import 'package:fireplace/src/view/chat_list/new_chat_sheet.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../../support/ui_fixture.dart'; + +Future pumpList(WidgetTester t) async { + final f = UiFixture(); + await f.seed(); + addTearDown(f.session.close); + await t.pumpWidget( + ProviderScope( + overrides: f.overrides, + child: MaterialApp( + theme: fireplaceTheme(Brightness.dark), + home: const ChatListScreen(), + ), + ), + ); + await settleUi(t); + await t.tap(find.byKey(const Key('newChat'))); + await t.pumpAndSettle(); + return f; +} + +void main() { + testWidgets('lists the people you chat with, but not incoming requests', ( + t, + ) async { + await pumpList(t); + expect(find.byType(NewChatSheet), findsOneWidget); + expect(find.text('New chat'), findsOneWidget); + expect(find.byKey(const Key('contact_fred')), findsOneWidget); + expect(find.byKey(const Key('contact_bob')), findsOneWidget); + // Theo's request waits in Message requests, not here. + expect(find.byKey(const Key('contact_theo')), findsNothing); + // No group service in this build: no Create group row. + expect(find.byKey(const Key('newGroup')), findsNothing); + }); + + testWidgets('tapping a person opens your chat with them', (t) async { + final f = await pumpList(t); + await t.tap(find.byKey(const Key('contact_bob'))); + await t.pumpAndSettle(); + expect(find.byType(ChatScreen), findsOneWidget); + expect(f.chat.starts, isEmpty); + }); + + testWidgets('typing filters, and a new username can be messaged', (t) async { + final f = await pumpList(t); + await t.enterText(find.byKey(const Key('peerUsername')), 'fr'); + await t.pump(); + expect(find.byKey(const Key('contact_fred')), findsOneWidget); + expect(find.byKey(const Key('contact_bob')), findsNothing); + // "fr" is too short to be a username. + expect(find.byKey(const Key('startChat')), findsNothing); + + await t.enterText(find.byKey(const Key('peerUsername')), 'fred'); + await t.pump(); + // An existing contact: no second "Message" row. + expect(find.byKey(const Key('startChat')), findsNothing); + + await t.enterText(find.byKey(const Key('peerUsername')), 'mira_k'); + await t.pump(); + expect(find.text('Message @mira_k'), findsOneWidget); + await t.tap(find.byKey(const Key('startChat'))); + await t.pumpAndSettle(); + expect(f.chat.starts, ['mira_k']); + }); + + testWidgets('Cancel closes the panel', (t) async { + await pumpList(t); + await t.tap(find.byKey(const Key('cancelNewChat'))); + await t.pumpAndSettle(); + expect(find.byType(NewChatSheet), findsNothing); + }); + + testWidgets('Create group shows when groups are on', (t) async { + final f = UiFixture(); + await f.seed(); + addTearDown(f.session.close); + await t.pumpWidget( + ProviderScope( + overrides: [...f.overrides, groupsOnProvider.overrideWithValue(true)], + child: MaterialApp( + theme: fireplaceTheme(Brightness.dark), + home: const ChatListScreen(), + ), + ), + ); + await settleUi(t); + await t.tap(find.byKey(const Key('newChat'))); + await t.pumpAndSettle(); + expect(find.text('Create group'), findsOneWidget); + }); +} diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart index 21ccff2..263e92d 100644 --- a/test/view/groups/group_screens_test.dart +++ b/test/view/groups/group_screens_test.dart @@ -128,7 +128,7 @@ void main() { await pump(t, const ChatListScreen()); await t.tap(find.byKey(const Key('newChat'))); await t.pumpAndSettle(); - expect(find.byKey(const Key('messageSomeone')), findsOneWidget); + expect(find.byKey(const Key('peerUsername')), findsOneWidget); await t.tap(find.byKey(const Key('newGroup'))); await t.pumpAndSettle(); expect(find.byType(NewGroupScreen), findsOneWidget); From 48e051af62758a3650296661d25155a94d0f41b8 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 08:03:11 +0000 Subject: [PATCH 05/17] Fix a crash when saving a group message edit or a rename. The caller disposed the dialog's text controller while the dialog was still animating closed, which tripped a framework assertion on the device. The dialog now owns its controller. AI assistance: Claude Code. --- lib/src/view/groups/group_chat_screen.dart | 26 ++-------- lib/src/view/groups/group_info_screen.dart | 31 ++++-------- lib/src/view/groups/text_prompt_dialog.dart | 55 +++++++++++++++++++++ test/view/groups/group_screens_test.dart | 18 +++++++ 4 files changed, 87 insertions(+), 43 deletions(-) create mode 100644 lib/src/view/groups/text_prompt_dialog.dart diff --git a/lib/src/view/groups/group_chat_screen.dart b/lib/src/view/groups/group_chat_screen.dart index ac9696e..3290efb 100644 --- a/lib/src/view/groups/group_chat_screen.dart +++ b/lib/src/view/groups/group_chat_screen.dart @@ -7,10 +7,10 @@ import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/styles/chat_colors.dart'; import 'package:fireplace/src/styles/design_tokens.dart'; import 'package:fireplace/src/view/groups/group_info_screen.dart'; +import 'package:fireplace/src/view/groups/text_prompt_dialog.dart'; import 'package:fireplace/src/widgets/app_bar.dart'; import 'package:fireplace/src/widgets/avatar.dart'; import 'package:fireplace/src/widgets/clock_time.dart'; -import 'package:fireplace/src/widgets/dialog.dart'; import 'package:fireplace/src/widgets/page.dart'; import 'package:fireplace/src/widgets/status.dart'; @@ -111,30 +111,14 @@ class _GroupChatScreenState extends ConsumerState { if (choice.startsWith('react:')) { await _run(() => service.react(widget.gid, m.id, choice.substring(6))); } else if (choice == 'edit') { - final controller = TextEditingController(text: m.body); final body = await showDialog( context: context, - builder: (ctx) => UiDialog( - title: const Text('Edit message'), - content: TextField( - controller: controller, - autofocus: true, - maxLines: null, - ), - actions: [ - TextButton( - onPressed: () => Navigator.pop(ctx), - child: const Text('Cancel'), - ), - TextButton( - key: const Key('saveEdit'), - onPressed: () => Navigator.pop(ctx, controller.text), - child: const Text('Save'), - ), - ], + builder: (_) => TextPromptDialog( + title: 'Edit message', + initial: m.body, + saveKey: const Key('saveEdit'), ), ); - controller.dispose(); if (body != null) await _run(() => service.edit(widget.gid, m.id, body)); } else if (choice == 'deleteAll') { await _run(() => service.deleteForEveryone(widget.gid, m.id)); diff --git a/lib/src/view/groups/group_info_screen.dart b/lib/src/view/groups/group_info_screen.dart index 894ce06..d2d9d43 100644 --- a/lib/src/view/groups/group_info_screen.dart +++ b/lib/src/view/groups/group_info_screen.dart @@ -5,6 +5,7 @@ import 'package:fireplace/src/app/providers.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/view/groups/contact_picker.dart'; import 'package:fireplace/src/view/groups/group_avatar.dart'; +import 'package:fireplace/src/view/groups/text_prompt_dialog.dart'; import 'package:fireplace/src/widgets/app_bar.dart'; import 'package:fireplace/src/widgets/avatar.dart'; import 'package:fireplace/src/widgets/dialog.dart'; @@ -67,31 +68,17 @@ class _GroupInfoScreenState extends ConsumerState { false; Future _rename(GroupInfo group) async { - final controller = TextEditingController(text: group.name); - final name = await showDialog( + final entered = await showDialog( context: context, - builder: (ctx) => UiDialog( - title: const Text('Rename group'), - content: TextField( - key: const Key('renameField'), - controller: controller, - autofocus: true, - maxLength: GroupLimits.maxNameChars, - ), - actions: [ - TextButton( - onPressed: () => Navigator.pop(ctx), - child: const Text('Cancel'), - ), - TextButton( - key: const Key('saveRename'), - onPressed: () => Navigator.pop(ctx, controller.text.trim()), - child: const Text('Save'), - ), - ], + builder: (_) => TextPromptDialog( + title: 'Rename group', + initial: group.name, + maxLength: GroupLimits.maxNameChars, + fieldKey: const Key('renameField'), + saveKey: const Key('saveRename'), ), ); - controller.dispose(); + final name = entered?.trim(); final service = ref.read(groupServiceProvider); if (name == null || name.isEmpty || name == group.name || service == null) { return; diff --git a/lib/src/view/groups/text_prompt_dialog.dart b/lib/src/view/groups/text_prompt_dialog.dart new file mode 100644 index 0000000..ff365c5 --- /dev/null +++ b/lib/src/view/groups/text_prompt_dialog.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; +import 'package:fireplace/src/widgets/dialog.dart'; + +/// Asks for one line of text and pops with it (or null on Cancel). The dialog +/// owns its controller: disposing it in the caller while the dialog was still +/// animating closed crashed the app on the device. +class TextPromptDialog extends StatefulWidget { + const TextPromptDialog({ + super.key, + required this.title, + required this.initial, + this.maxLength, + this.fieldKey, + this.saveKey, + }); + final String title, initial; + final int? maxLength; + final Key? fieldKey, saveKey; + + @override + State createState() => _TextPromptDialogState(); +} + +class _TextPromptDialogState extends State { + late final _controller = TextEditingController(text: widget.initial); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => UiDialog( + title: Text(widget.title), + content: TextField( + key: widget.fieldKey, + controller: _controller, + autofocus: true, + maxLines: null, + maxLength: widget.maxLength, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Cancel'), + ), + TextButton( + key: widget.saveKey, + onPressed: () => Navigator.pop(context, _controller.text), + child: const Text('Save'), + ), + ], + ); +} diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart index 263e92d..ec41b1f 100644 --- a/test/view/groups/group_screens_test.dart +++ b/test/view/groups/group_screens_test.dart @@ -191,6 +191,24 @@ void main() { await tearDownPhones(t); }); + testWidgets('editing your message through the dialog saves it', (t) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await t.runAsync(() => alice.service.send(gid, 'See you at 7')); + await pump(t, GroupChatScreen(gid: gid)); + await settle(t, () => find.text('See you at 7').evaluate().isNotEmpty); + await t.longPress(find.text('See you at 7')); + await t.pumpAndSettle(); + await t.tap(find.byKey(const Key('editGroupMessage'))); + await t.pumpAndSettle(); + await t.enterText(find.byType(TextField).last, 'See you at 8'); + await t.tap(find.byKey(const Key('saveEdit'))); + // The dialog closes while its field animates out; nothing may throw. + await settle(t, () => find.text('See you at 8').evaluate().isNotEmpty); + expect(t.takeException(), isNull); + await tearDownPhones(t); + }); + testWidgets('an administrator sees rename and remove; a member does not', ( t, ) async { From 357ce37b329db0314eb5f4f5df3b824b8458c960 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 08:42:20 +0000 Subject: [PATCH 06/17] Groups: the invitation does the MLS Add, so Join works at once. The inviter's device sends the Add Commit and the Welcome with the invitation. The invited phone joins from the Welcome it already has; no other phone is needed. A declined or expired invitation is fenced and removed like a leave. Members answer a newcomer's profile with their own, so someone who joins later has everyone's colour. Changes to the group are written into the history as lines, built from the MLS state before and after each Commit. An administrator can make another. --- lib/src/db/local_messages.dart | 5 + lib/src/model/groups/group_models.dart | 72 +++ lib/src/model/groups/group_service.dart | 565 +++++++++++++++++----- test/model/groups/group_service_test.dart | 318 +++++++++++- test/support/fake_group_server.dart | 113 ++++- test/support/group_phones.dart | 6 +- 6 files changed, 927 insertions(+), 152 deletions(-) diff --git a/lib/src/db/local_messages.dart b/lib/src/db/local_messages.dart index 02b526c..50dc64c 100644 --- a/lib/src/db/local_messages.dart +++ b/lib/src/db/local_messages.dart @@ -14,6 +14,11 @@ enum MessageStatus { /// server. Shown with a warning; never treated as sent, and resolved only by evidence from the /// server (see ChatService.checkSendStatus) or by an explicit decision to send another copy. unconfirmed, + + /// A line this device wrote into a group's history from an authenticated + /// change ("alice added bob_jones"). The body is a `GroupNotice` in JSON, + /// never text a person typed. + notice, } class LocalMessage { diff --git a/lib/src/model/groups/group_models.dart b/lib/src/model/groups/group_models.dart index 298001e..67e8ae9 100644 --- a/lib/src/model/groups/group_models.dart +++ b/lib/src/model/groups/group_models.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + /// Group chats (mobile decision 0050, `docs/protocol/group-chats-v1.md`). /// /// Off unless the app is built with `--dart-define=FIREPLACE_GROUPS=true`, so @@ -76,6 +78,72 @@ class GroupInfo { } } +/// A line in a group's history about a change to the group (0050, round 2). +/// Built on this device from the MLS state before and after an authenticated +/// Commit, never from the server's roster. Stored as a history message whose +/// status is `notice`; the screens put names in when they show it. +enum GroupNoticeKind { + added, + removed, + left, + gone, + madeAdmin, + removedAdmin, + renamed, +} + +class GroupNotice { + const GroupNotice(this.kind, {this.by, this.who}); + final GroupNoticeKind kind; + + /// The account that made the change (the Commit's author), when it matters. + final String? by; + + /// The account the change is about. + final String? who; + + String encode() => jsonEncode({ + 'notice': kind.name, + if (by != null) 'by': by, + if (who != null) 'who': who, + }); + + static GroupNotice? decode(String body) { + try { + final j = jsonDecode(body); + if (j is! Map) return null; + final kind = GroupNoticeKind.values.asNameMap()[j['notice']]; + if (kind == null) return null; + return GroupNotice( + kind, + by: j['by'] as String?, + who: j['who'] as String?, + ); + } catch (_) { + return null; + } + } + + /// The line in plain words. [name] turns an account id into what to show + /// ("You" for this account). + String text(String Function(String uid) name) { + final a = by == null ? '' : name(by!); + final b = who == null ? '' : name(who!); + return switch (kind) { + GroupNoticeKind.added => '$a added $b', + GroupNoticeKind.removed => '$a removed $b', + GroupNoticeKind.left => '$b left', + GroupNoticeKind.gone => + b == 'You' + ? 'You are no longer in the group' + : '$b is no longer in the group', + GroupNoticeKind.madeAdmin => '$a made $b an administrator', + GroupNoticeKind.removedAdmin => '$a removed $b as an administrator', + GroupNoticeKind.renamed => '$a renamed the group', + }; + } +} + /// An invitation waiting for this account to answer. class GroupInvitation { const GroupInvitation({ @@ -109,6 +177,10 @@ class GroupRefused implements Exception { 'not a contact' => 'You can invite only people you already chat with.', 'expired' => 'This invitation has expired.', 'no invite' => 'This invitation is no longer open.', + 'already invited' => 'They have already been invited.', + 'packages' || 'devices' => 'They need to open Fireplace before they can be invited. Try again later.', + 'epoch' => 'The group changed just then. Try again.', + 'admins' => 'Only people who have joined can be administrators.', _ => 'That did not work. Try again.', }; } diff --git a/lib/src/model/groups/group_service.dart b/lib/src/model/groups/group_service.dart index 4111bba..c9f692d 100644 --- a/lib/src/model/groups/group_service.dart +++ b/lib/src/model/groups/group_service.dart @@ -16,6 +16,7 @@ import 'package:fireplace/src/model/chat/send_allowance.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/model/groups/group_requests.dart'; import 'package:fireplace/src/model/keys/key_service.dart'; +import 'package:flutter/foundation.dart'; /// Group chats for one account on this device (mobile decision 0050, /// `docs/protocol/group-chats-v1.md`, backend decision 0023). @@ -26,9 +27,12 @@ import 'package:fireplace/src/model/keys/key_service.dart'; /// /// Commits are applied strictly in epoch order. A Commit is checked against /// the group's rules before it is kept: a rename or role change only from an -/// administrator; a self-update adds and removes nobody; members are added -/// only by administrators (or an account adding its own device), and removed +/// administrator; a self-update adds and removes nobody; members are removed /// only by administrators or once the server has fenced them. +/// +/// An invitation does the MLS Add (round 2): the inviter's device sends the +/// Commit and the Welcome with the request, so the invited person joins from +/// the Welcome they already have, with no other phone involved. class GroupService { GroupService({ required FirebaseFirestore db, @@ -73,6 +77,13 @@ class GroupService { final _waiting = >>>{}; final _pending = {}; // groups with an own Commit awaiting its slot + // Joined from the Welcome here, while the server's answer is on its way. + final _joining = {}; + final _rosterCtrl = StreamController.broadcast(); + // What a member said before going ("left"), or an administrator before + // removing them: tells a removal's line which words to use. + final _departures = >{}; + final _removalLines = >{}; String get deviceId => _device.keys.deviceId; @@ -97,6 +108,24 @@ class GroupService { Map.unmodifiable(_colors[gid] ?? const {}); Stream get colorChanges => _colorsCtrl.stream; + /// People invited who have not answered yet, and who invited each. They are + /// in the MLS group already; the server's roster says they have not joined. + Map invitedTo(String gid) { + final invited = _rosters[gid]?['invited']; + return { + if (invited is Map) + for (final e in invited.entries) + '${e.key}': '${(e.value as Map?)?['by'] ?? ''}', + }; + } + + /// Fires with a group's id when the server's roster for it changes. + Stream get rosterChanges => _rosterCtrl.stream; + + /// True when this device joined a group that already existed, so its + /// history here starts after the group began. + bool joinedLater(String gid) => _file.app('newcomer:$gid') != null; + // ---------------------------------------------------------------- start Future start() async { @@ -164,6 +193,7 @@ class GroupService { await _groupsCtrl.close(); await _invitesCtrl.close(); await _colorsCtrl.close(); + await _rosterCtrl.close(); } // ---------------------------------------------------------------- the core @@ -248,43 +278,70 @@ class GroupService { final listed = {for (final d in refs.docs) d.id: d.data()}; for (final entry in listed.entries) { final gid = entry.key; - if (!_groups.containsKey(gid)) { - await _joinFromWelcome( - gid, - (entry.value['joinedEpoch'] as num?)?.toInt() ?? 0, - ); + _joining.remove(gid); + // Joined on another of this account's devices, or before a reinstall. + if (!_groups.containsKey(gid) && await _joinFromWelcome(gid)) { + unawaited(_sendProfile(gid, hello: true)); + } + if (_groups.containsKey(gid)) { + await _noteSince(gid, entry.value['joinedAt']); + if (!_groupSubs.containsKey(gid)) _watch(gid); } - if (_groups.containsKey(gid) && !_groupSubs.containsKey(gid)) _watch(gid); } // Removed by the server (left, removed, fenced): stop and forget the // group's keys. Its history stays on this device. for (final gid in [..._groups.keys]) { - if (!listed.containsKey(gid)) await _drop(gid); + if (!listed.containsKey(gid) && !_joining.contains(gid)) await _drop(gid); } } - Future _joinFromWelcome(String gid, int joinedEpoch) async { + /// Joins from the Welcome the invitation left for this account. The Welcome + /// is from the epoch of the invitation, which may be long past: the Commit + /// listener then brings this device up to date. + Future _joinFromWelcome(String gid) async { final welcomes = await _db .collection('groups/$gid/welcomes') .where('uid', isEqualTo: uid) .get(); for (final w in welcomes.docs) { - if (((w.data()['epoch'] as num?)?.toInt() ?? 0) < joinedEpoch) continue; final ct = w.data()['ct']; if (ct is! Blob) continue; try { - // A Welcome for another of this account's devices is refused; try the next. - final result = await _change({'op': 'join', 'welcome': b64(ct.bytes)}); + // A Welcome for another of this account's devices, or an invitation + // that has since ended, is refused; try the next. + final result = await _change( + {'op': 'join', 'welcome': b64(ct.bytes)}, + extra: { + 'newcomer:$gid': [1], + }, + ); final info = GroupInfo.fromCore(result); if (info.gid != gid) continue; _groups[gid] = info; _emitGroups(); - unawaited(_sendProfile(gid)); - return; + return true; } on GroupCryptoException { continue; } } + return false; + } + + /// When the server put this account in the roster. Messages from before it + /// are not shown (0050: a newcomer sees no earlier history), though an + /// invited device holds the keys from the moment of the invitation. + Timestamp? _since(String gid) { + final raw = _file.app('since:$gid'); + final micros = raw == null ? null : int.tryParse(utf8.decode(raw)); + return micros == null ? null : Timestamp.fromMicrosecondsSinceEpoch(micros); + } + + Future _noteSince(String gid, Object? joinedAt) async { + if (joinedAt is! Timestamp || _file.app('since:$gid') != null) return; + _file.setApp({ + 'since:$gid': utf8.encode('${joinedAt.microsecondsSinceEpoch}'), + }); + await _file.save(); } Future _drop(String gid) async { @@ -294,8 +351,13 @@ class GroupService { } _groups.remove(gid); _rosters.remove(gid); + _departures.remove(gid); + _removalLines.remove(gid); try { - await _change({'op': 'forget', 'gid': gid}); + await _change( + {'op': 'forget', 'gid': gid}, + extra: {'since:$gid': null, 'newcomer:$gid': null}, + ); } on GroupCryptoException { // Already forgotten. } @@ -309,22 +371,10 @@ class GroupService { final data = s.data(); if (data == null) return; _rosters[gid] = data; + if (!_rosterCtrl.isClosed) _rosterCtrl.add(gid); unawaited(_serial(() => _maintain(gid, data))); }, onError: (_) {}), ); - // Administrators add accounts once they accept their invitation. - subs.add( - _db - .collection('groups/$gid/invites') - .where('status', isEqualTo: 'accepted') - .snapshots() - .listen((s) { - final roster = _rosters[gid]; - if (s.docs.isNotEmpty && roster != null) { - unawaited(_serial(() => _maintain(gid, roster))); - } - }, onError: (_) {}), - ); subs.add( _db .collection('groups/$gid/commits') @@ -333,8 +383,14 @@ class GroupService { .listen((s) => _serial(() => _onCommits(gid, s)), onError: (_) {}), ); final cursor = _cursor(gid); + final since = _since(gid); var events = _db.collection('groups/$gid/events').orderBy('at'); - if (cursor != null) events = events.startAfter([cursor]); + if (cursor != null) { + events = events.startAfter([cursor]); + } else if (since != null) { + // A newcomer reads nothing from before they joined. + events = events.startAt([since]); + } subs.add( events.snapshots().listen( (s) => _serial(() => _onEvents(gid, s.docs)), @@ -388,7 +444,7 @@ class GroupService { _pending.remove(gid); if (mine) { final result = await _change({'op': 'merge_pending', 'gid': gid}); - _afterCommit(gid, result); + await _afterCommit(gid, result, before: before, by: uid, at: doc['at']); return; } // Another Commit won this epoch. @@ -397,6 +453,17 @@ class GroupService { final ct = doc['ct']; if (ct is! Blob) return; final kind = doc['kind']; + if (kind == 'membership') { + // A removal by someone who is not an administrator is allowed only for + // devices the server has fenced. The roster held here may be older than + // this Commit, so read it again (one read per membership change). + try { + final fresh = (await _db.doc('groups/$gid').get()).data(); + if (fresh != null) _rosters[gid] = fresh; + } on FirebaseException { + // Offline: check against the roster already here. + } + } final roster = _rosters[gid]?['members'] as Map? ?? const {}; try { @@ -405,7 +472,13 @@ class GroupService { 'gid': gid, 'message': b64(ct.bytes), }, check: (r) => _commitAllowed(before, r, kind, roster, doc['by'])); - _afterCommit(gid, result); + await _afterCommit( + gid, + result, + before: before, + by: '${doc['by']}', + at: doc['at'], + ); } on GroupCryptoException { // An invalid or refused Commit changes nothing here; the group waits for // a valid one (proposal, "Event ordering"). @@ -438,8 +511,10 @@ class GroupService { if (kind == 'update' || kind == 'meta') { return added.isEmpty && removed.isEmpty; } - // Any member may add someone (owner's choice); the server allowed it only - // for an accepted invitation. + // Any member may add someone by inviting them (owner's choice). The server + // allows it only for a contact of the inviter. An Add is not checked + // against the roster: by the time a phone that was offline sees it, the + // person may have declined, and refusing would leave this phone stuck. const addsOk = true; final removesOk = removed.every((m) { if (admin) return true; @@ -451,8 +526,15 @@ class GroupService { return addsOk && removesOk; } - void _afterCommit(String gid, Map result) { + Future _afterCommit( + String gid, + Map result, { + required GroupInfo before, + required String by, + Object? at, + }) async { final info = GroupInfo.fromCore(result); + await _writeNotices(gid, before, info, by, at); if (!info.active) { unawaited(_serial(() => _drop(gid))); return; @@ -463,8 +545,92 @@ class GroupService { if (waiting != null) unawaited(_serial(() => _onEvents(gid, waiting))); } - /// Work the group needs from any member: finalising a removal the server - /// fenced, and (administrators) adding accounts that accepted. + /// Writes the lines for one Commit ("alice added bob_jones") into the + /// history, from the MLS state before and after it. The Commit's author is + /// the one MLS authenticated. + Future _writeNotices( + String gid, + GroupInfo before, + GroupInfo after, + String by, + Object? at, + ) async { + final was = {for (final m in before.members) m.uid}; + final now = {for (final m in after.members) m.uid}; + final wasAdmin = { + for (final m in before.members) + if (m.admin) m.uid, + }; + final nowAdmin = { + for (final m in after.members) + if (m.admin) m.uid, + }; + final notices = [ + for (final who in now.difference(was)) + GroupNotice(GroupNoticeKind.added, by: by, who: who), + for (final who in was.difference(now)) + _departures[gid]?.remove(who) ?? + GroupNotice(GroupNoticeKind.gone, who: who), + for (final who in nowAdmin.difference(wasAdmin)) + if (was.contains(who)) + GroupNotice(GroupNoticeKind.madeAdmin, by: by, who: who), + for (final who in wasAdmin.difference(nowAdmin)) + if (now.contains(who)) + GroupNotice(GroupNoticeKind.removedAdmin, by: by, who: who), + if (after.name != before.name) + GroupNotice(GroupNoticeKind.renamed, by: by), + ]; + final sentAt = at is Timestamp ? at.toDate() : _now(); + for (var i = 0; i < notices.length; i++) { + final line = LocalMessage( + id: 'notice-${_slot(before.epoch)}-$i', + chatId: groupChatId(gid), + senderUid: by, + senderDevice: '', + outgoing: false, + sentAt: sentAt, + body: notices[i].encode(), + status: MessageStatus.notice, + ); + if (notices[i].kind == GroupNoticeKind.gone) { + (_removalLines[gid] ??= {})[notices[i].who!] = line; + } + await _messages.add(line); + } + } + + /// A member said they are leaving, or an administrator that they are + /// removing someone. Both are encrypted group messages, so MLS vouches for + /// who said it. The removal's line then says "left" or "removed". + Future _onDeparture( + String gid, + String sender, + Map json, + ) async { + final GroupNotice notice; + final String who; + if (json['kind'] == 'left') { + who = sender; + notice = GroupNotice(GroupNoticeKind.left, who: sender); + } else if (json['kind'] == 'removing' && + json['uid'] is String && + (_groups[gid]?.isAdmin(sender) ?? false)) { + who = json['uid'] as String; + notice = GroupNotice(GroupNoticeKind.removed, by: sender, who: who); + } else { + return; + } + // The removal may already be in the history, worded without a reason. + final line = _removalLines[gid]?.remove(who); + if (line != null) { + await _messages.add(line.copyWith(body: notice.encode())); + } else { + (_departures[gid] ??= {})[who] = notice; + } + } + + /// Work the group needs from any member: ending an invitation nobody + /// answered in seven days, and finalising a removal the server fenced. Future _maintain(String gid, Map roster) async { final info = _groups[gid]; if (info == null || _pending.contains(gid)) return; @@ -492,71 +658,63 @@ class GroupService { ); return; } - final accepted = await _db - .collection('groups/$gid/invites') - .where('status', isEqualTo: 'accepted') - .get(); - // The inviter's device adds the person; administrators step in for an - // inviter who has left. - final invite = accepted.docs - .where( - (d) => - d.data()['by'] == uid || - (info.isAdmin(uid) && - !info.members.any((m) => m.uid == d.data()['by'])), - ) - .firstOrNull; - if (invite == null) return; - final devices = ((invite.data()['devices'] as List?) ?? const []) - .cast(); - final packages = >[]; - final bytes = []; - for (final d in devices) { - final p = await _db - .collection('users/${invite.id}/devices/$d/mlsPackages') - .limit(1) - .get(); - if (p.docs.isEmpty) return; - final kp = p.docs.first.data()['kp']; - if (kp is! Blob) return; - packages.add({'device': d, 'slot': p.docs.first.id}); - bytes.add(b64(kp.bytes)); + // The server has no scheduler, so the first member's phone to notice an + // invitation past its seven days asks the server to end it. The server + // then fences those devices and the next roster change finalises. + final invited = roster['invited']; + if (invited is! Map) return; + for (final e in invited.entries) { + final expireAt = (e.value as Map?)?['expireAt']; + if (expireAt is Timestamp && expireAt.toDate().isBefore(_now())) { + try { + await _requests.group(gid, 'expire', {'uid': '${e.key}'}); + } catch (_) { + // Another member's phone got there first, or it will be tried again. + } + return; + } } - await _ownCommit( - gid, - {'op': 'commit_add', 'gid': gid, 'keyPackages': bytes}, - (r) => _requests.group(gid, 'add', { - 'uid': invite.id, - 'epoch': info.epoch, - 'device': deviceId, - 'commit': Blob(unb64(r['commit'] as String)), - 'welcome': Blob(unb64(r['welcome'] as String)), - 'packages': packages, - }), - ); } - /// Prepares this device's Commit, saves it as pending and publishes it. The - /// Commit listener later merges it (it won its epoch) or discards it. + /// Prepares this device's Commit, saves it as pending and publishes it. + /// Once the server has taken it, it holds its epoch's slot, so it is merged + /// here at once; the next change can then follow without waiting for the + /// Commit listener. A refusal discards it, and with [strict] is passed on to + /// the caller to show. An unknown outcome leaves it for the listener, which + /// merges it if it won its epoch and discards it otherwise. Future _ownCommit( String gid, Map request, - Future Function(Map result) publish, - ) async { + Future Function(Map result) publish, { + bool strict = false, + }) async { + final before = _groups[gid]!; final result = await _change(request); _pending.add(gid); try { await publish(result); } on GroupRefused { - if (_pending.remove(gid)) { - await _change({'op': 'discard_pending', 'gid': gid}); - } + await _discardPending(gid); + if (strict) rethrow; + return; } on FirebaseException { - if (_pending.remove(gid)) { - await _change({'op': 'discard_pending', 'gid': gid}); - } + await _discardPending(gid); + if (strict) rethrow; + return; } on TimeoutException { // Unknown: the Commit slot decides when it appears. + if (strict) rethrow; + return; + } + if (_pending.remove(gid)) { + final merged = await _change({'op': 'merge_pending', 'gid': gid}); + await _afterCommit(gid, merged, before: before, by: uid); + } + } + + Future _discardPending(String gid) async { + if (_pending.remove(gid)) { + await _change({'op': 'discard_pending', 'gid': gid}); } } @@ -575,6 +733,10 @@ class GroupService { (_waiting[gid] ??= []).add(doc); continue; } + // From before this account joined: not shown, even where the keys allow. + final since = _since(gid); + final at = data['at']; + if (since != null && at is Timestamp && at.compareTo(since) < 0) continue; if (await _messages.has(groupChatId(gid), doc.id)) continue; // This device's own messages are saved when sent; MLS cannot decrypt them. if (data['device'] == deviceId) continue; @@ -612,6 +774,15 @@ class GroupService { (_colors[gid] ??= {})[sender] = json['color'] as String; await _saveColors(); if (!_colorsCtrl.isClosed) _colorsCtrl.add(gid); + // Someone has just joined and has nobody's colour yet: send them this + // account's (one small message per member per newcomer, at most 15). + if (json['hello'] == true && sender != uid) { + unawaited(_sendProfile(gid)); + } + return; + } + if (json is Map && json['type'] == 'notice') { + await _onDeparture(gid, sender, json); return; } } catch (_) { @@ -731,17 +902,39 @@ class GroupService { /// This account's primary colour name, kept current by the app layer. String ownColor = 'ember'; - Future _sendProfile(String gid) async { + /// Shares this account's colour inside the group. With [hello], sent on + /// joining, every member answers with theirs, so a newcomer has them all. + Future _sendProfile(String gid, {bool hello = false}) async { try { await _publish( gid, - utf8.encode(jsonEncode({'v': 4, 'type': 'profile', 'color': ownColor})), + utf8.encode( + jsonEncode({ + 'v': 4, + 'type': 'profile', + 'color': ownColor, + if (hello) 'hello': true, + }), + ), ); } catch (_) { // Shared again with the next change; members show Stone meanwhile. } } + /// Says, inside the group, why someone is about to go. Best effort: without + /// it the line reads "is no longer in the group". + Future _sendNotice(String gid, Map notice) async { + try { + await _publish( + gid, + utf8.encode(jsonEncode({'v': 4, 'type': 'notice', ...notice})), + ); + } catch (_) { + // The removal still happens. + } + } + /// Shares this account's colour with every group (after a change in Settings). Future shareColor() async { for (final gid in _groups.keys) { @@ -884,44 +1077,156 @@ class GroupService { return gid; } - Future invite(String gid, String memberUid) => - _requests.group(gid, 'invite', {'uid': memberUid}); - - Future accept(String gid) => _requests.account('accept', { - 'gid': gid, - 'devices': [deviceId], + /// Invites [memberUid] and adds their devices to the MLS group in the same + /// request (round 2). This phone is online now, so it does the work now: the + /// invited person later joins from the Welcome without any other phone. + Future invite(String gid, String memberUid) => _serial(() async { + final info = _groups[gid]; + if (info == null) throw GroupActionError('You are not in this group.'); + // Up to four of their devices that have a key package to use. + final listed = await _db.collection('users/$memberUid/devices').get(); + final devices = []; + final packages = >[]; + final bytes = []; + for (final d in listed.docs) { + if (devices.length == 4) break; + if (d.data()['revokedAt'] != null) continue; + final p = await d.reference.collection('mlsPackages').limit(1).get(); + final kp = p.docs.firstOrNull?.data()['kp']; + if (kp is! Blob) continue; + devices.add(d.id); + packages.add({'device': d.id, 'slot': p.docs.first.id}); + bytes.add(b64(kp.bytes)); + } + if (devices.isEmpty) throw GroupRefused('packages'); + await _ownCommit( + gid, + {'op': 'commit_add', 'gid': gid, 'keyPackages': bytes}, + (r) => _requests.group(gid, 'invite', { + 'uid': memberUid, + 'epoch': info.epoch, + 'device': deviceId, + 'devices': devices, + 'commit': Blob(unb64(r['commit'] as String)), + 'welcome': Blob(unb64(r['welcome'] as String)), + 'packages': packages, + }), + strict: true, + ); }); + /// Joins a group this account was invited to. The Welcome is already here, + /// so the group opens at once; the server then moves the account into the + /// roster, which lets this phone read and send. + Future accept(String gid) async { + final joined = await _serial(() async { + if (_groups.containsKey(gid)) return true; + _joining.add(gid); + return _joinFromWelcome(gid); + }); + if (!joined) { + _joining.remove(gid); + throw GroupActionError( + 'This invitation is for your other phone. Open Fireplace there to join.', + ); + } + try { + await _requests.account('accept', {'gid': gid}); + } on GroupRefused { + _joining.remove(gid); + await _serial(() => _drop(gid)); + rethrow; + } + // The group stays exempt from the server's list until it appears there. + unawaited(_sendProfile(gid, hello: true)); + } + Future decline(String gid) => _requests.account('decline', {'gid': gid}); /// Leaving stops reading at once; a remaining member's Commit removes this /// account's devices afterwards. Future leave(String gid) async { + await _sendNotice(gid, {'kind': 'left'}); await _requests.group(gid, 'leave', {}); await _serial(() => _drop(gid)); } - Future remove(String gid, String memberUid) => _serial(() async { - final info = _groups[gid]!; - final members = - (_crypto.call({'op': 'info', 'gid': gid})['members'] as List) - .cast(); - final leaves = [ - for (final m in members) - if (m['uid'] == memberUid) m['leaf'], - ]; - await _ownCommit( - gid, - {'op': 'commit_remove', 'gid': gid, 'leaves': leaves}, - (r) => _requests.group(gid, 'remove', { - 'uid': memberUid, - 'epoch': info.epoch, - 'device': deviceId, - 'commit': Blob(unb64(r['commit'] as String)), - }), - ); - }); + /// Removes a member, or someone invited who has not answered. + Future remove(String gid, String memberUid) async { + if (!invitedTo(gid).containsKey(memberUid)) { + await _sendNotice(gid, {'kind': 'removing', 'uid': memberUid}); + // This phone does not read its own messages back. + (_departures[gid] ??= {})[memberUid] = GroupNotice( + GroupNoticeKind.removed, + by: uid, + who: memberUid, + ); + } + await _serial(() async { + final info = _groups[gid]!; + final members = + (_crypto.call({'op': 'info', 'gid': gid})['members'] as List) + .cast(); + final leaves = [ + for (final m in members) + if (m['uid'] == memberUid) m['leaf'], + ]; + await _ownCommit( + gid, + {'op': 'commit_remove', 'gid': gid, 'leaves': leaves}, + (r) => _requests.group(gid, 'remove', { + 'uid': memberUid, + 'epoch': info.epoch, + 'device': deviceId, + 'commit': Blob(unb64(r['commit'] as String)), + }), + strict: true, + ); + }); + } + + /// Makes a member an administrator, or stops them being one: an MLS Commit + /// carrying the new list, which every phone accepts from administrators + /// only, and the same list to the server for its roster. + Future setAdmin(String gid, String memberUid, {required bool admin}) => + _serial(() async { + final info = _groups[gid]; + if (info == null || !info.isAdmin(uid)) { + throw GroupActionError('Only administrators can do that.'); + } + final joined = { + for (final m in info.members) + if (!invitedTo(gid).containsKey(m.uid)) m.uid, + }; + // When nobody on the list is still here, everybody administers. + var admins = { + for (final m in info.members) + if (m.admin && joined.contains(m.uid)) m.uid, + }; + if (admins.isEmpty) admins = {...joined}; + if (!joined.contains(memberUid)) { + throw GroupActionError( + 'They can be an administrator once they have joined.', + ); + } + admin ? admins.add(memberUid) : admins.remove(memberUid); + if (admins.isEmpty) { + throw GroupActionError('A group needs at least one administrator.'); + } + final list = admins.toList()..sort(); + await _ownCommit( + gid, + {'op': 'commit_meta', 'gid': gid, 'admins': list}, + (r) => _requests.group(gid, 'roles', { + 'admins': list, + 'epoch': info.epoch, + 'device': deviceId, + 'commit': Blob(unb64(r['commit'] as String)), + }), + strict: true, + ); + }); /// Renames the group: a Commit any member's device can apply, accepted from /// administrators only. @@ -944,6 +1249,34 @@ class GroupService { }); }); + /// Publishes a rename or role Commit without asking whether this account + /// may. The app never does: tests use it to show other phones refuse it. + @visibleForTesting + Future commitMetaUnchecked( + String gid, { + String? name, + List? admins, + }) => _serial(() async { + final info = _groups[gid]!; + await _ownCommit( + gid, + {'op': 'commit_meta', 'gid': gid, 'name': ?name, 'admins': ?admins}, + (r) async { + final batch = _db.batch() + ..set(_db.doc('groups/$gid/commits/${_slot(info.epoch)}'), { + 'e': info.epoch, + 'by': uid, + 'device': deviceId, + 'kind': 'meta', + 'ct': Blob(unb64(r['commit'] as String)), + 'at': FieldValue.serverTimestamp(), + }) + ..update(_db.doc('groups/$gid'), {'epoch': info.epoch + 1}); + await batch.commit(); + }, + ); + }); + // ---------------------------------------------------------------- colours Future _loadColors() async { diff --git a/test/model/groups/group_service_test.dart b/test/model/groups/group_service_test.dart index 697a5df..f8b7535 100644 --- a/test/model/groups/group_service_test.dart +++ b/test/model/groups/group_service_test.dart @@ -34,7 +34,7 @@ void main() { await root.delete(recursive: true); }); - /// Alice creates "Book club" and invites Bob, who accepts and is added. + /// Alice creates "Book club" and invites Bob, who joins. Future bookClub() async { final gid = await alice.service.create('Book club', ['bob']); await until( @@ -62,7 +62,7 @@ void main() { }); test( - 'create, invite, accept: both see the same group, name and roles', + 'create, invite, join: both see the same group, name and roles', () async { final gid = await bookClub(); for (final p in [alice, bob]) { @@ -73,12 +73,11 @@ void main() { expect(info.isAdmin('bob'), isFalse); } expect(alice.service.groups[gid]!.epoch, bob.service.groups[gid]!.epoch); - expect( - server.processed, - containsAll(['create', 'invite', 'accept', 'add']), + expect(server.processed, containsAll(['create', 'invite', 'accept'])); + await until( + () async => bob.service.invitations.isEmpty, + what: 'the invitation goes', ); - // Bob's used key package is gone from the server. - expect(bob.service.invitations, isEmpty); }, ); @@ -221,14 +220,16 @@ void main() { () async => (await texts(bob, gid)).contains('only mine to hide'), what: 'delivered', ); - final id = (await bob.messages.watch(groupChatId(gid)).first).first.id; + final id = (await bob.messages.watch(groupChatId(gid)).first) + .firstWhere((m) => m.body == 'only mine to hide') + .id; await bob.service.deleteLocally(gid, id); expect(await texts(bob, gid), isNot(contains('only mine to hide'))); expect(await texts(alice, gid), contains('only mine to hide')); }); test( - 'any member invites, and their device adds the person who accepts', + 'any member invites, and the person joins from their invitation', () async { final gid = await bookClub(); final carol = await Phone.create(db, 'carol', root); @@ -273,10 +274,22 @@ void main() { () async => bob.service.invitations.isNotEmpty, what: 'invitation', ); + // Invited: Bob's device is an MLS leaf, but not in the server's roster. + expect(alice.service.groups[gid]!.members, hasLength(2)); await bob.service.decline(gid); await until(() async => bob.service.invitations.isEmpty, what: 'declined'); expect(bob.service.groups, isEmpty); - expect(alice.service.groups[gid]!.members, hasLength(1)); + // Alice's phone removes the leaf; nothing says Bob declined. + await until( + () async => alice.service.groups[gid]!.members.length == 1, + what: 'the leaf removed', + ); + expect(alice.service.invitedTo(gid), isEmpty); + final lines = [ + for (final m in await alice.messages.watch(groupChatId(gid)).first) + if (m.status == MessageStatus.notice) GroupNotice.decode(m.body)!.kind, + ]; + expect(lines, [GroupNoticeKind.added, GroupNoticeKind.gone]); }); test('a device restarted from its saved records carries on', () async { @@ -307,4 +320,289 @@ void main() { root, ); // for tearDown }); + + // ---------------------------------------------------------------- round 2 + + /// The lines in a phone's history about changes to the group. + Future> notices(Phone p, String gid) async => [ + for (final m in await p.messages.watch(groupChatId(gid)).first) + if (m.status == MessageStatus.notice) GroupNotice.decode(m.body)!, + ]; + Future hasNotice( + Phone p, + String gid, + GroupNoticeKind kind, { + String? by, + String? who, + }) async => (await notices( + p, + gid, + )).any((n) => n.kind == kind && n.by == by && n.who == who); + + test('joining needs nobody else: the inviter can be offline', () async { + final gid = await alice.service.create('Book club', ['bob']); + await until( + () async => bob.service.invitations.any((i) => i.gid == gid), + what: 'invitation', + ); + // The invitation already put Bob's device in the MLS group. + expect(alice.service.invitedTo(gid), {'bob': 'alice'}); + await alice.service.send(gid, 'sent before Bob joined'); + await alice.service.close(); + + await bob.service.accept(gid); + // In the chat as soon as Join returns, with no other phone running. + expect(bob.service.groups[gid]?.name, 'Book club'); + expect(server.processed, isNot(contains('add'))); + await until( + () async => + ((await db.doc('groups/$gid').get()).data()!['members'] as Map) + .containsKey('bob'), + what: 'the roster', + ); + await bob.service.send(gid, 'I am in'); + expect(await texts(bob, gid), contains('I am in')); + // Nothing from before Bob joined is shown, and the screen can say so. + expect(await texts(bob, gid), isNot(contains('sent before Bob joined'))); + expect(bob.service.joinedLater(gid), isTrue); + alice = await Phone.create(FakeFirebaseFirestore(), 'alice2', root); + }); + + test('the person who made the group did not join later', () async { + final gid = await bookClub(); + expect(alice.service.joinedLater(gid), isFalse); + expect(bob.service.joinedLater(gid), isTrue); + }); + + test('someone with no key package left cannot be invited yet', () async { + final gid = await alice.service.create('Book club', []); + final devices = await db.collection('users/bob/devices').get(); + for (final p + in (await devices.docs.first.reference.collection('mlsPackages').get()) + .docs) { + await p.reference.delete(); + } + await expectLater( + alice.service.invite(gid, 'bob'), + throwsA( + isA().having((e) => e.reason, 'reason', 'packages'), + ), + ); + expect(alice.service.groups[gid]!.members, hasLength(1)); + expect(bob.service.invitations, isEmpty); + }); + + test( + 'an invitation nobody answers in seven days is ended by a member', + () async { + var now = DateTime.now(); + final carol = await Phone.create(db, 'carol', root, clock: () => now); + server + ..watchAccount('carol') + ..now = () => now; + final gid = await carol.service.create('Book club', ['bob']); + await until( + () async => bob.service.invitations.isNotEmpty, + what: 'invitation', + ); + now = now.add(const Duration(days: 8)); + // Any change to the group makes a member's phone look at it again. + await carol.service.rename(gid, 'Tea club'); + await until(() async { + final g = (await db.doc('groups/$gid').get()).data()!; + return (g['invited'] as Map).isEmpty && + (g['fence'] as List).isEmpty && + carol.service.groups[gid]!.members.length == 1; + }, what: 'expired and removed'); + await expectLater( + bob.service.accept(gid), + throwsA(anyOf(isA(), isA())), + ); + expect(bob.service.groups, isEmpty); + await carol.service.close(); + }, + ); + + test('someone who joins later gets every member\'s colour', () async { + alice.service.ownColor = 'plum'; + bob.service.ownColor = 'moss'; + final gid = await bookClub(); + final carol = await Phone.create(db, 'carol', root); + carol.service.ownColor = 'sky'; + server.watchAccount('carol'); + await alice.service.invite(gid, 'carol'); + // More happens in the group before Carol answers. + await alice.service.rename(gid, 'Tea club'); + await until( + () async => carol.service.invitations.isNotEmpty, + what: 'invitation', + ); + await carol.service.accept(gid); + await until( + () async => + carol.service.colorsOf(gid)['alice'] == 'plum' && + carol.service.colorsOf(gid)['bob'] == 'moss', + what: "Carol has both colours", + ); + for (final p in [alice, bob]) { + await until( + () async => p.service.colorsOf(gid)['carol'] == 'sky', + what: "Carol's colour on ${p.uid}", + ); + } + expect(carol.service.groups[gid]!.name, 'Tea club'); + await carol.service.close(); + }); + + test('changes to the group are written into the history as lines', () async { + final gid = await bookClub(); + for (final p in [alice, bob]) { + // Bob's own phone joined at the epoch after the Add, so only Alice's + // has the line for it. + if (p == alice) { + expect( + await hasNotice( + p, + gid, + GroupNoticeKind.added, + by: 'alice', + who: 'bob', + ), + isTrue, + ); + } + } + await alice.service.rename(gid, 'Tea club'); + await alice.service.setAdmin(gid, 'bob', admin: true); + for (final p in [alice, bob]) { + await until( + () async => + await hasNotice(p, gid, GroupNoticeKind.renamed, by: 'alice') && + await hasNotice( + p, + gid, + GroupNoticeKind.madeAdmin, + by: 'alice', + who: 'bob', + ), + what: 'rename and role lines on ${p.uid}', + ); + } + await bob.service.setAdmin(gid, 'alice', admin: false); + await until( + () async => await hasNotice( + alice, + gid, + GroupNoticeKind.removedAdmin, + by: 'bob', + who: 'alice', + ), + what: 'the role line', + ); + // Lines are not messages: they never count as text from a person. + final line = (await alice.messages.watch(groupChatId(gid)).first) + .firstWhere((m) => m.status == MessageStatus.notice); + expect(GroupNotice.decode(line.body), isNotNull); + expect( + const GroupNotice( + GroupNoticeKind.added, + by: 'alice', + who: 'bob', + ).text((uid) => uid == 'alice' ? 'You' : uid), + 'You added bob', + ); + }); + + test('a line says whether someone left or was removed', () async { + final gid = await bookClub(); + final carol = await Phone.create(db, 'carol', root); + server.watchAccount('carol'); + await alice.service.invite(gid, 'carol'); + await until( + () async => carol.service.invitations.isNotEmpty, + what: 'invitation', + ); + await carol.service.accept(gid); + await until( + () async => alice.service.groups[gid]!.members.length == 3, + what: 'three people', + ); + await carol.service.leave(gid); + await until( + () async => + await hasNotice(alice, gid, GroupNoticeKind.left, who: 'carol'), + what: 'Carol left', + ); + await alice.service.remove(gid, 'bob'); + await until( + () async => await hasNotice( + alice, + gid, + GroupNoticeKind.removed, + by: 'alice', + who: 'bob', + ), + what: 'Bob removed', + ); + await carol.service.close(); + }); + + test('an administrator makes another; a member cannot', () async { + final gid = await bookClub(); + await expectLater( + bob.service.setAdmin(gid, 'bob', admin: true), + throwsA(isA()), + ); + await alice.service.setAdmin(gid, 'bob', admin: true); + for (final p in [alice, bob]) { + await until( + () async => p.service.groups[gid]!.isAdmin('bob'), + what: 'Bob administers on ${p.uid}', + ); + } + expect( + ((await db.doc('groups/$gid').get()).data()!['members'] + as Map)['bob']['role'], + 'admin', + ); + // The last administrator cannot stop being one. + await bob.service.setAdmin(gid, 'alice', admin: false); + await until( + () async => !bob.service.groups[gid]!.isAdmin('alice'), + what: 'Alice no longer administers', + ); + await expectLater( + bob.service.setAdmin(gid, 'bob', admin: false), + throwsA(isA()), + ); + }); + + test("a member's role change is refused by the others", () async { + final gid = await bookClub(); + final epoch = alice.service.groups[gid]!.epoch; + // Bob's phone is made to send what the app never would. + await bob.service.commitMetaUnchecked(gid, admins: ['bob']); + await Future.delayed(const Duration(seconds: 1)); + expect(alice.service.groups[gid]!.isAdmin('bob'), isFalse); + expect(alice.service.groups[gid]!.isAdmin('alice'), isTrue); + expect(alice.service.groups[gid]!.epoch, epoch); + expect( + await notices(alice, gid), + everyElement( + isA().having((n) => n.kind, 'kind', GroupNoticeKind.added), + ), + ); + }); + + test('an invited person who is removed never joins', () async { + final gid = await alice.service.create('Book club', ['bob']); + await until( + () async => bob.service.invitations.isNotEmpty, + what: 'invitation', + ); + await alice.service.remove(gid, 'bob'); + await until(() async => bob.service.invitations.isEmpty, what: 'withdrawn'); + expect(alice.service.groups[gid]!.members, hasLength(1)); + expect(alice.service.invitedTo(gid), isEmpty); + }); } diff --git a/test/support/fake_group_server.dart b/test/support/fake_group_server.dart index 4d68acc..5bcb1ff 100644 --- a/test/support/fake_group_server.dart +++ b/test/support/fake_group_server.dart @@ -15,6 +15,9 @@ class FakeGroupServer { final _done = {}; final processed = []; + /// The server's clock; a test moves it to let an invitation expire. + DateTime Function() now = DateTime.now; + String _slot(int e) => '$e'.padLeft(12, '0'); void watchAccount(String uid) { @@ -85,19 +88,45 @@ class FakeGroupServer { }, 'epoch': op['epoch'], 'fence': [], + 'invited': {}, }); await db.doc('users/$uid/groupRefs/$gid').set({ 'role': 'admin', 'joinedEpoch': op['epoch'], + 'joinedAt': Timestamp.fromDate(now()), }); _watchGroup(gid); case 'accept': - await db.doc('groups/$gid/invites/$uid').update({ - 'status': 'accepted', - 'devices': op['devices'], + // The invitation already added the devices to MLS: joining only moves + // the account into the roster. + final group = (await db.doc('groups/$gid').get()).data(); + final invite = (group?['invited'] as Map?)?[uid] as Map?; + if (group == null || invite == null) throw _Refused('no invite'); + if ((invite['expireAt'] as Timestamp).toDate().isBefore(now())) { + throw _Refused('expired'); + } + await db.doc('groups/$gid').update({ + 'members.$uid': {'role': 'member', 'devices': invite['devices']}, + 'invited.$uid': FieldValue.delete(), + }); + await db.doc('users/$uid/groupRefs/$gid').set({ + 'role': 'member', + 'joinedEpoch': group['epoch'], + 'joinedAt': Timestamp.fromDate(now()), }); + await db.doc('users/$uid/groupInvites/$gid').delete(); case 'decline': - await db.doc('groups/$gid/invites/$uid').delete(); + final group = (await db.doc('groups/$gid').get()).data(); + final invite = (group?['invited'] as Map?)?[uid] as Map?; + if (group != null && invite != null) { + await db.doc('groups/$gid').update({ + 'invited.$uid': FieldValue.delete(), + 'fence': [ + ...(group['fence'] as List), + {'uid': uid, 'devices': invite['devices']}, + ], + }); + } await db.doc('users/$uid/groupInvites/$gid').delete(); } } @@ -107,7 +136,11 @@ class FakeGroupServer { final group = (await groupRef.get()).data(); if (group == null) throw _Refused('no group'); final members = Map.from(group['members'] as Map); + final invited = Map.from( + (group['invited'] as Map?) ?? const {}, + ); final by = op['by'] as String; + if (!members.containsKey(by)) throw _Refused('not a member'); final epoch = group['epoch'] as int; Future commit(String kind) async { if (op['epoch'] != epoch) throw _Refused('epoch'); @@ -124,21 +157,13 @@ class FakeGroupServer { switch (op['kind']) { case 'invite': - // Any member invites (the backend also requires a 1:1 contact). + // Any member invites (the backend also requires a 1:1 contact). The + // request carries the Add Commit, the Welcome and the key packages. final target = op['uid'] as String; - await db.doc('groups/$gid/invites/$target').set({ - 'by': by, - 'status': 'pending', - }); - await db.doc('users/$target/groupInvites/$gid').set({ - 'by': by, - 'at': Timestamp.now(), - }); - case 'add': - final target = op['uid'] as String; - final invite = (await db.doc('groups/$gid/invites/$target').get()) - .data(); - if (invite?['status'] != 'accepted') throw _Refused('not accepted'); + if (members.containsKey(target)) throw _Refused('account'); + if (invited.containsKey(target)) throw _Refused('already invited'); + final devices = (op['devices'] as List?)?.cast() ?? const []; + if (devices.isEmpty) throw _Refused('devices'); await commit('membership'); await db.doc('groups/$gid/welcomes/${target}_${_slot(epoch + 1)}').set({ 'uid': target, @@ -152,14 +177,49 @@ class FakeGroupServer { ) .delete(); } - members[target] = {'role': 'member', 'devices': invite!['devices']}; - await groupRef.update({'members': members, 'epoch': epoch + 1}); - await db.doc('users/$target/groupRefs/$gid').set({ - 'role': 'member', - 'joinedEpoch': epoch + 1, + final expireAt = Timestamp.fromDate(now().add(const Duration(days: 7))); + await groupRef.update({ + 'invited.$target': { + 'by': by, + 'devices': devices, + 'expireAt': expireAt, + }, + 'epoch': epoch + 1, + }); + await db.doc('users/$target/groupInvites/$gid').set({ + 'by': by, + 'at': Timestamp.fromDate(now()), + 'expireAt': expireAt, + }); + case 'expire': + final target = op['uid'] as String; + final invite = invited[target] as Map?; + if (invite == null) throw _Refused('no invite'); + if (!(invite['expireAt'] as Timestamp).toDate().isBefore(now())) { + throw _Refused('not expired'); + } + await groupRef.update({ + 'invited.$target': FieldValue.delete(), + 'fence': [ + ...(group['fence'] as List), + {'uid': target, 'devices': invite['devices']}, + ], }); - await db.doc('groups/$gid/invites/$target').delete(); await db.doc('users/$target/groupInvites/$gid').delete(); + case 'roles': + if (members[by]['role'] != 'admin') { + throw _Refused('not an administrator'); + } + final admins = (op['admins'] as List).cast(); + if (admins.isEmpty || !admins.every(members.containsKey)) { + throw _Refused('admins'); + } + await commit('meta'); + await groupRef.update({ + for (final u in members.keys) + 'members.$u.role': admins.contains(u) ? 'admin' : 'member', + 'epoch': epoch + 1, + }); case 'leave': final leaving = members.remove(by) as Map; await db.doc('users/$by/groupRefs/$gid').delete(); @@ -179,12 +239,17 @@ class FakeGroupServer { await commit('membership'); await groupRef.update({'fence': [], 'epoch': epoch + 1}); case 'remove': + if (members[by]['role'] != 'admin') { + throw _Refused('not an administrator'); + } await commit('membership'); await groupRef.update({ 'members.${op['uid']}': FieldValue.delete(), + 'invited.${op['uid']}': FieldValue.delete(), 'epoch': epoch + 1, }); await db.doc('users/${op['uid']}/groupRefs/$gid').delete(); + await db.doc('users/${op['uid']}/groupInvites/$gid').delete(); } } diff --git a/test/support/group_phones.dart b/test/support/group_phones.dart index c89f783..bfa4b9f 100644 --- a/test/support/group_phones.dart +++ b/test/support/group_phones.dart @@ -18,8 +18,9 @@ class Phone { static Future create( FakeFirebaseFirestore db, String uid, - Directory root, - ) async { + Directory root, { + DateTime Function()? clock, + }) async { await db.collection('usernames').doc(uid).set({'uid': uid}); await db.collection('users').doc(uid).set({ 'username': uid, @@ -36,6 +37,7 @@ class Phone { historyDir: Directory('${root.path}/$uid')..createSync(recursive: true), messages: messages, requestTimeout: const Duration(seconds: 10), + clock: clock, ); await service.start(); return Phone._(uid, service, messages, secrets); From 2544baf9656bfaf8306d52859e5aa2ac319928e0 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 08:51:09 +0000 Subject: [PATCH 07/17] Groups: make the screens match 1:1 chats, with colours, lines and unread counts. The conversation reuses the 1:1 bubble, held-message menu, reactions, day separators and composer, and edits in the composer instead of a dialog. Other people's bubbles use the soft tint of their own colour, with their name and avatar in its text shade. The list row has the 1:1 layout and an unread count taken from the local history. Lines say who was added, left, was removed, renamed the group or became an administrator, and a newcomer sees where their history starts. Group info lists people who are invited and lets an administrator make another. --- lib/src/app/group_providers.dart | 51 ++ lib/src/model/search/message_search.dart | 5 +- lib/src/view/chat/chat_composer.dart | 13 +- lib/src/view/chat/widgets/message_bubble.dart | 28 +- lib/src/view/groups/group_chat_screen.dart | 563 +++++++++++------- lib/src/view/groups/group_info_screen.dart | 118 +++- .../view/groups/group_invitation_card.dart | 2 + lib/src/view/groups/group_message_row.dart | 172 ++++++ lib/src/view/groups/group_tile.dart | 179 +++++- lib/src/widgets/avatar.dart | 15 +- test/view/groups/group_screens_test.dart | 220 ++++++- 11 files changed, 1075 insertions(+), 291 deletions(-) create mode 100644 lib/src/view/groups/group_message_row.dart diff --git a/lib/src/app/group_providers.dart b/lib/src/app/group_providers.dart index 4fc72f6..80f305e 100644 --- a/lib/src/app/group_providers.dart +++ b/lib/src/app/group_providers.dart @@ -6,6 +6,7 @@ import 'package:fireplace/src/app/providers.dart'; import 'package:fireplace/src/db/local_messages.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/model/groups/group_service.dart'; +import 'package:fireplace/src/styles/chat_colors.dart'; /// The signed-in account's group service, or null (groups off or not ready). final groupServiceProvider = Provider( @@ -55,6 +56,56 @@ final groupColorsProvider = StreamProvider.autoDispose } }); +/// People invited to a group who have not answered, with who invited each. +/// From the server's roster: MLS already counts them as members. +final groupInvitedProvider = StreamProvider.autoDispose + .family, String>((ref, gid) async* { + final service = ref.watch(groupServiceProvider); + if (service == null) { + yield const {}; + return; + } + yield service.invitedTo(gid); + await for (final changed in service.rosterChanges) { + if (changed == gid) yield service.invitedTo(gid); + } + }); + +/// The colour to show for a member: theirs once it has arrived, Stone before. +ChatBubbleColor memberColor(MemberColors colors, String uid) => + ChatBubbleColor.values.asNameMap()[colors[uid]] ?? ChatBubbleColor.stone; + +/// Messages from other people in a group that this phone has not shown yet. +/// Counted here from the local history, like 1:1 chats: the server holds no +/// read state and nobody is told what was read. +final groupUnreadProvider = Provider.autoDispose.family(( + ref, + gid, +) { + final prefs = ref.watch(appSessionProvider).value?.chatPreferences; + if (prefs == null || !prefs.available) return 0; + final changes = prefs.changes.listen((_) => ref.invalidateSelf()); + ref.onDispose(changes.cancel); + final id = groupChatId(gid); + final incoming = [ + for (final m + in ref.watch(groupMessagesProvider(gid)).value ?? + const []) + if (!m.outgoing && + m.visible && + !m.remotelyDeleted && + m.status == MessageStatus.ok) + m.id, + ]; + if (prefs.needsBaseline(id)) { + // What is already here when the group first appears is not "new". + unawaited(prefs.seedExisting(id, incoming).catchError((Object _) {})); + return 0; + } + final seen = prefs.seen[id] ?? const {}; + return incoming.where((m) => !seen.contains(m)).length; +}); + /// Shares a new primary colour with every group when it changes in Settings. final groupColorSyncProvider = Provider((ref) { ref.listen(chatBubbleColorsProvider, (before, after) { diff --git a/lib/src/model/search/message_search.dart b/lib/src/model/search/message_search.dart index 19d3fdd..8cbab2a 100644 --- a/lib/src/model/search/message_search.dart +++ b/lib/src/model/search/message_search.dart @@ -33,7 +33,10 @@ List searchMessages( for (final messages in history.values) { for (final m in messages) { - if (m.status == MessageStatus.undecryptable || m.remotelyDeleted) { + // A line about a group ("alice added bob") is not text anyone wrote. + if (m.status == MessageStatus.undecryptable || + m.status == MessageStatus.notice || + m.remotelyDeleted) { continue; } final text = displayMessage(m.body).plain; diff --git a/lib/src/view/chat/chat_composer.dart b/lib/src/view/chat/chat_composer.dart index 3a3e966..48186b6 100644 --- a/lib/src/view/chat/chat_composer.dart +++ b/lib/src/view/chat/chat_composer.dart @@ -20,7 +20,7 @@ class ChatComposer extends StatelessWidget { required this.identityHeld, required this.hasSession, required this.contactBusy, - required this.send, + this.send, required this.onUnblock, this.onInteraction, this.contextBar, @@ -43,7 +43,10 @@ class ChatComposer extends StatelessWidget { identityHeld, hasSession, contactBusy; - final SendController send; + + /// Sends the text when [submit] is not given. A group conversation always + /// gives [submit] and has no 1:1 send controller. + final SendController? send; final Future Function() onUnblock; final VoidCallback? onInteraction; @override @@ -78,9 +81,9 @@ class ChatComposer extends StatelessWidget { child: CallbackShortcuts( bindings: { const SingleActivator(LogicalKeyboardKey.enter, control: true): - submit ?? send.send, + submit ?? send!.send, const SingleActivator(LogicalKeyboardKey.enter, meta: true): - submit ?? send.send, + submit ?? send!.send, }, child: Container( padding: const EdgeInsets.fromLTRB(12, 6, 8, 6), @@ -178,7 +181,7 @@ class ChatComposer extends StatelessWidget { text.text.trim().isEmpty || !hasSession ? null - : submit ?? send.send, + : submit ?? send!.send, tooltip: editing ? 'Save edit' : 'Send message', icon: editing && editingBusy ? SizedBox.square( diff --git a/lib/src/view/chat/widgets/message_bubble.dart b/lib/src/view/chat/widgets/message_bubble.dart index df725f4..9627356 100644 --- a/lib/src/view/chat/widgets/message_bubble.dart +++ b/lib/src/view/chat/widgets/message_bubble.dart @@ -16,6 +16,7 @@ import 'package:fireplace/src/app/providers.dart'; import 'package:fireplace/src/model/notifications/chat_activity.dart'; import 'package:fireplace/src/model/chat/pending_sends.dart'; import 'package:fireplace/src/model/chat/outgoing_sends.dart'; +import 'package:fireplace/src/styles/chat_colors.dart'; class MessageBubble extends ConsumerStatefulWidget { const MessageBubble({ @@ -30,9 +31,20 @@ class MessageBubble extends ConsumerStatefulWidget { this.onQuote, this.outgoingSend, this.onFailedTap, + this.incomingColor, + this.liveOf, }); final LocalMessage message; + /// The colour of a message from someone else, when it is not this account's + /// own choice: in a group each member's messages use that member's colour. + final ChatBubbleColor? incomingColor; + + /// The stored message as it is now, for the copy shown while its menu is + /// open. Set where the conversation is not a 1:1 chat (a group); null means + /// the 1:1 history and its checks. + final LocalMessage? Function(WidgetRef ref)? liveOf; + /// Set for a message that is on its way or was not sent. On the way it /// shows its time, like a message that has been sent. A failed one says so /// and opens its choices when tapped. @@ -100,6 +112,18 @@ class _MessageBubbleState extends ConsumerState { : null, preview: Consumer( builder: (context, previewRef, _) { + if (widget.liveOf case final liveOf?) { + final live = liveOf(previewRef); + if (!mounted || live == null || live.remotelyDeleted) { + return const SizedBox.shrink(); + } + return MessageBubble( + message: live, + senderName: widget.senderName, + preview: true, + incomingColor: widget.incomingColor, + ); + } final session = previewRef.watch(appSessionProvider).value; final summary = previewRef.watch( chatSummaryProvider(widget.message.chatId), @@ -175,7 +199,9 @@ class _MessageBubbleState extends ConsumerState { : widget.senderName!); final base = mine ? colors.outgoing.outgoing - : colors.incoming.incoming(Theme.of(context).brightness); + : (widget.incomingColor ?? colors.incoming).incoming( + Theme.of(context).brightness, + ); final quoted = message.quote != null && !message.remotelyDeleted; // With a quote the bubble's own padding shrinks to frame the panel, so // the text keeps its usual distance from the edge with this. diff --git a/lib/src/view/groups/group_chat_screen.dart b/lib/src/view/groups/group_chat_screen.dart index 3290efb..df27618 100644 --- a/lib/src/view/groups/group_chat_screen.dart +++ b/lib/src/view/groups/group_chat_screen.dart @@ -1,24 +1,30 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fireplace/src/app/group_providers.dart'; import 'package:fireplace/src/app/providers.dart'; import 'package:fireplace/src/db/local_messages.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; -import 'package:fireplace/src/styles/chat_colors.dart'; import 'package:fireplace/src/styles/design_tokens.dart'; +import 'package:fireplace/src/view/chat/chat_composer.dart'; +import 'package:fireplace/src/view/chat/message_actions.dart'; +import 'package:fireplace/src/view/chat/message_menu_parts.dart'; +import 'package:fireplace/src/view/chat/message_reactions.dart'; +import 'package:fireplace/src/view/chat/widgets/day_separator.dart'; import 'package:fireplace/src/view/groups/group_info_screen.dart'; -import 'package:fireplace/src/view/groups/text_prompt_dialog.dart'; +import 'package:fireplace/src/view/groups/group_message_row.dart'; import 'package:fireplace/src/widgets/app_bar.dart'; -import 'package:fireplace/src/widgets/avatar.dart'; -import 'package:fireplace/src/widgets/clock_time.dart'; +import 'package:fireplace/src/widgets/dialog.dart'; import 'package:fireplace/src/widgets/page.dart'; import 'package:fireplace/src/widgets/status.dart'; -const _quickReactions = ['👍', '❤️', '😂', '😮', '😢', '🙏']; - -/// A group conversation (decision 0050). Each run of messages from one person -/// has their name above the first bubble and their avatar beside the last; -/// other members' bubbles use the soft version of their own primary colour. +/// A group conversation (decision 0050). It looks like a 1:1 chat: the same +/// bubbles, day separators, held-message menu, reactions and composer, with +/// editing in the composer. What differs is who is speaking: each run of +/// messages from someone else has their name above the first bubble and their +/// avatar beside the last, in that member's own colour. class GroupChatScreen extends ConsumerStatefulWidget { const GroupChatScreen({super.key, required this.gid}); final String gid; @@ -28,12 +34,48 @@ class GroupChatScreen extends ConsumerStatefulWidget { class _GroupChatScreenState extends ConsumerState { final _text = TextEditingController(); - bool _sending = false; + final _edit = TextEditingController(); + final _focus = FocusNode(); + LocalMessage? _editing; + bool _busy = false; String? _error; + @override + void initState() { + super.initState(); + _text.addListener(_changed); + _edit.addListener(_changed); + // What is on screen has been seen: it no longer counts as unread. This + // stays on the phone; nobody is told. + ref.listenManual( + groupMessagesProvider(widget.gid), + (_, next) => _seen(next.value), + fireImmediately: true, + ); + } + + void _changed() { + if (mounted) setState(() {}); + } + + void _seen(List? messages) { + final prefs = ref.read(appSessionProvider).value?.chatPreferences; + if (prefs == null || messages == null || !prefs.available) return; + unawaited( + prefs + .markSeen(groupChatId(widget.gid), [ + for (final m in messages) + if (!m.outgoing) m.id, + ]) + .catchError((Object _) {}), + ); + } + @override void dispose() { _text.dispose(); + _edit.dispose(); + _focus.dispose(); super.dispose(); } @@ -53,93 +95,199 @@ class _GroupChatScreenState extends ConsumerState { Future _send() async { final service = ref.read(groupServiceProvider); final text = _text.text.trim(); - if (service == null || text.isEmpty || _sending) return; - setState(() => _sending = true); + if (service == null || text.isEmpty) return; _text.clear(); await _run(() => service.send(widget.gid, text)); - if (mounted) setState(() => _sending = false); } - Future _actions(LocalMessage m, bool mine) async { + void _startEdit(LocalMessage message) { + setState(() { + _editing = message; + _error = null; + }); + _edit.value = TextEditingValue( + text: message.body, + selection: TextSelection.collapsed(offset: message.body.length), + ); + _focus.requestFocus(); + } + + void _cancelEdit() { + setState(() => _editing = null); + _edit.clear(); + } + + Future _saveEdit() async { final service = ref.read(groupServiceProvider); - if (service == null) return; - final choice = await showModalBottomSheet( + final target = _editing; + final body = _edit.text.trim(); + if (service == null || target == null || body.isEmpty || _busy) return; + setState(() => _busy = true); + await _run(() => service.edit(widget.gid, target.id, body)); + if (!mounted) return; + setState(() => _busy = false); + if (_error == null) _cancelEdit(); + } + + Future _deleteForEveryone(LocalMessage message) async { + final service = ref.read(groupServiceProvider); + final yes = await showDialog( context: context, - builder: (ctx) => SafeArea( + builder: (ctx) => UiDialog( + title: const Text('Delete for everyone?'), + content: const Text( + 'Ask everyone’s phones to delete this message. They may already ' + 'have seen or saved it.', + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx, false), + child: const Text('Cancel'), + ), + TextButton( + key: const Key('confirmRemoteDelete'), + onPressed: () => Navigator.pop(ctx, true), + child: Text( + 'Delete for everyone', + style: TextStyle(color: FireplaceUiTokens.of(ctx).danger), + ), + ), + ], + ), + ); + if (!mounted || yes != true || service == null) return; + if (_editing?.id == message.id) _cancelEdit(); + await _run(() => service.deleteForEveryone(widget.gid, message.id)); + } + + /// The held-message menu: the same controls as a 1:1 chat. Only the author + /// can edit or delete for everyone; every phone enforces that. + List _actionsFor(LocalMessage message, String me) { + final service = ref.read(groupServiceProvider); + if (service == null || message.status == MessageStatus.undecryptable) { + return const []; + } + void react(String emoji) => + unawaited(_run(() => service.react(widget.gid, message.id, emoji))); + final sent = message.status == MessageStatus.ok; + return [ + for (final emoji in quickReactions) + MessageAction( + id: 'react-$emoji', + label: 'React with $emoji', + icon: Icons.emoji_emotions_outlined, + reaction: true, + emoji: emoji, + selected: message.reactions[me]?.emoji == emoji, + onSelected: () => react(emoji), + ), + MessageAction( + id: 'moreReactions', + label: 'More reactions', + icon: Icons.add, + reaction: true, + onEmoji: react, + onSelected: () {}, + ), + if (message.outgoing && sent) + MessageAction( + id: 'edit', + label: 'Edit', + icon: Icons.edit_outlined, + onSelected: () => _startEdit(message), + ), + MessageAction( + id: 'copy', + label: 'Copy', + icon: Icons.copy_outlined, + onSelected: () => + unawaited(Clipboard.setData(ClipboardData(text: message.body))), + ), + if (message.outgoing && sent) + MessageAction( + id: 'deleteForEveryone', + label: 'Delete for everyone', + icon: Icons.delete_outline, + destructive: true, + onSelected: () => unawaited(_deleteForEveryone(message)), + ), + MessageAction( + id: 'deleteForMe', + label: 'Delete for me', + icon: Icons.delete_sweep_outlined, + destructive: true, + onSelected: () => unawaited( + _run(() => service.deleteLocally(widget.gid, message.id)), + ), + ), + ]; + } + + /// Who reacted with what. Tapping your own reaction removes it. + Future _showReactions(LocalMessage message, String me) async { + final service = ref.read(groupServiceProvider); + await showModalBottomSheet( + context: context, + useSafeArea: true, + showDragHandle: true, + builder: (ctx) => SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: [ - Padding( - padding: const EdgeInsets.all(12), - child: Wrap( - spacing: 8, - children: [ - for (final e in _quickReactions) - TextButton( - key: Key('react_$e'), - onPressed: () => Navigator.pop(ctx, 'react:$e'), - child: Text(e, style: const TextStyle(fontSize: 24)), + const ListTile(title: Text('Reactions')), + for (final reaction in message.reactions.entries) + if (reaction.value.emoji case final emoji?) + Consumer( + builder: (context, sheetRef, _) => ListTile( + leading: Text(emoji, style: const TextStyle(fontSize: 28)), + title: Text( + reaction.key == me + ? 'You' + : sheetRef + .watch(peerUsernameProvider(reaction.key)) + .value ?? + '…', ), - ], - ), - ), - if (mine) - ListTile( - key: const Key('editGroupMessage'), - leading: const Icon(Icons.edit_outlined), - title: const Text('Edit'), - onTap: () => Navigator.pop(ctx, 'edit'), - ), - if (mine) - ListTile( - key: const Key('deleteForEveryone'), - leading: const Icon(Icons.delete_outline), - title: const Text('Delete for everyone'), - onTap: () => Navigator.pop(ctx, 'deleteAll'), - ), - ListTile( - key: const Key('deleteForMe'), - leading: const Icon(Icons.delete_sweep_outlined), - title: const Text('Delete for me'), - onTap: () => Navigator.pop(ctx, 'deleteMine'), - ), + subtitle: reaction.key == me + ? const Text('Tap to remove') + : null, + onTap: reaction.key == me && service != null + ? () { + Navigator.pop(ctx); + unawaited( + _run( + () => service.react( + widget.gid, + message.id, + emoji, + ), + ), + ); + } + : null, + ), + ), ], ), ), ); - if (!mounted || choice == null) return; - if (choice.startsWith('react:')) { - await _run(() => service.react(widget.gid, m.id, choice.substring(6))); - } else if (choice == 'edit') { - final body = await showDialog( - context: context, - builder: (_) => TextPromptDialog( - title: 'Edit message', - initial: m.body, - saveKey: const Key('saveEdit'), - ), - ); - if (body != null) await _run(() => service.edit(widget.gid, m.id, body)); - } else if (choice == 'deleteAll') { - await _run(() => service.deleteForEveryone(widget.gid, m.id)); - } else if (choice == 'deleteMine') { - await _run(() => service.deleteLocally(widget.gid, m.id)); - } } @override Widget build(BuildContext context) { - final groups = ref.watch(groupsProvider).value ?? const {}; - final group = groups[widget.gid]; + final service = ref.watch(groupServiceProvider); + final group = (ref.watch(groupsProvider).value ?? const {})[widget.gid]; final me = ref.watch(appSessionProvider).value?.uid ?? ''; - final messages = [ + final rows = [ for (final m in ref.watch(groupMessagesProvider(widget.gid)).value ?? const []) if (m.visible && !m.remotelyDeleted) m, ]; final colors = ref.watch(groupColorsProvider(widget.gid)).value ?? const {}; - if (group == null) { + final invited = + ref.watch(groupInvitedProvider(widget.gid)).value ?? const {}; + if (group == null || service == null) { return Scaffold( appBar: UiAppBar(context: context, title: const Text('Group')), body: const UiEmptyState( @@ -149,7 +297,17 @@ class _GroupChatScreenState extends ConsumerState { ), ); } - final count = group.members.length; + // People who were invited and have not joined are not counted yet. + final count = group.members + .where((m) => !invited.containsKey(m.uid)) + .length; + final joinedLater = service.joinedLater(widget.gid); + final editing = _editing != null; + bool sameRun(LocalMessage a, LocalMessage? b) => + b != null && + b.status != MessageStatus.notice && + b.senderUid == a.senderUid && + sameLocalDay(a.sentAt, b.sentAt); return Scaffold( appBar: UiAppBar( context: context, @@ -175,40 +333,71 @@ class _GroupChatScreenState extends ConsumerState { body: Column( children: [ Expanded( - child: messages.isEmpty + child: rows.isEmpty && !joinedLater ? const UiEmptyState( - title: 'Say hello', - message: 'Messages in this group are end-to-end encrypted.', - icon: Icons.forum_outlined, + icon: Icons.lock_outline_rounded, + title: 'A private group', + message: + 'Messages are end-to-end encrypted. Say hello when ' + 'you’re ready.', ) : ListView.builder( key: const Key('groupMessages'), reverse: true, + // The same insets as a 1:1 timeline, so a held message is + // lifted without moving. padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 8, + horizontal: MessageMenuMetrics.edge, + vertical: 12, ), - itemCount: messages.length, + itemCount: rows.length + (joinedLater ? 1 : 0), itemBuilder: (_, i) { - final index = messages.length - 1 - i; - final m = messages[index]; - final mine = m.senderUid == me; - final first = - index == 0 || - messages[index - 1].senderUid != m.senderUid; - final last = - index == messages.length - 1 || - messages[index + 1].senderUid != m.senderUid; - return GroupBubble( - message: m, - mine: mine, - showName: first && !mine, - showAvatar: last && !mine, - color: - ChatBubbleColor.values - .asNameMap()[colors[m.senderUid]] ?? - ChatBubbleColor.stone, - onHold: () => _actions(m, mine), + if (i == rows.length) { + // MLS gives a newcomer no keys for earlier messages. + return const GroupQuietLine( + key: Key('historyStart'), + text: 'Messages sent before you joined aren’t shown.', + ); + } + final index = rows.length - 1 - i; + final m = rows[index]; + final before = index == 0 ? null : rows[index - 1]; + final after = index == rows.length - 1 + ? null + : rows[index + 1]; + final showDate = + before == null || + !sameLocalDay(before.sentAt, m.sentAt); + final notice = m.status == MessageStatus.notice + ? GroupNotice.decode(m.body) + : null; + return Column( + key: ValueKey(m.id), + children: [ + if (showDate) DaySeparator(date: m.sentAt), + if (m.status == MessageStatus.notice) + if (notice != null) GroupNoticeLine(notice: notice), + if (m.status != MessageStatus.notice) + GroupMessageRow( + gid: widget.gid, + message: m, + color: memberColor(colors, m.senderUid), + showName: !m.outgoing && !sameRun(m, before), + showAvatar: !m.outgoing && !sameRun(m, after), + actions: _actionsFor(m, me), + onReactions: () => _showReactions(m, me), + ), + if (m.outgoing && + m.status == MessageStatus.unconfirmed) + Align( + alignment: Alignment.centerRight, + child: Text( + 'Not confirmed', + key: Key('unconfirmed_${m.id}'), + style: Theme.of(context).textTheme.bodySmall, + ), + ), + ], ); }, ), @@ -221,139 +410,51 @@ class _GroupChatScreenState extends ConsumerState { message: _error!, ), ), - SafeArea( - top: false, - child: Padding( - padding: const EdgeInsets.fromLTRB(12, 4, 8, 8), - child: Row( - children: [ - Expanded( - child: TextField( - key: const Key('groupComposer'), - controller: _text, - minLines: 1, - maxLines: 5, - textCapitalization: TextCapitalization.sentences, - decoration: const InputDecoration(hintText: 'Message'), - onSubmitted: (_) => _send(), - ), - ), - IconButton( - key: const Key('groupSend'), - tooltip: 'Send', - onPressed: _sending ? null : _send, - icon: const Icon(Icons.send_rounded), - ), - ], - ), - ), - ), - ], - ), - ); - } -} - -/// One message in a group. Reused for every row. -class GroupBubble extends ConsumerWidget { - const GroupBubble({ - super.key, - required this.message, - required this.mine, - required this.showName, - required this.showAvatar, - required this.color, - required this.onHold, - }); - final LocalMessage message; - final bool mine, showName, showAvatar; - final ChatBubbleColor color; - final VoidCallback onHold; - - @override - Widget build(BuildContext context, WidgetRef ref) { - final t = FireplaceUiTokens.of(context); - final brightness = Theme.of(context).brightness; - final name = mine - ? 'You' - : ref.watch(peerUsernameProvider(message.senderUid)).value ?? '…'; - final background = mine ? t.outgoingBubble : color.incoming(brightness); - final foreground = mine ? t.outgoingText : t.incomingText; - final reactions = message.reactions.values.map((r) => r.emoji).toList(); - final bubble = GestureDetector( - onLongPress: onHold, - child: Container( - constraints: BoxConstraints( - maxWidth: MediaQuery.sizeOf(context).width * 0.72, - ), - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), - decoration: BoxDecoration( - color: background, - borderRadius: BorderRadius.circular(18), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(message.body, style: TextStyle(color: foreground)), - const SizedBox(height: 2), - Text( - [ - clockTime(message.sentAt, MaterialLocalizations.of(context)), - if (message.editClock > 0) 'edited', - if (message.status == MessageStatus.unconfirmed) - 'not confirmed', - ].join(' · '), - style: TextStyle( - color: foreground.withValues(alpha: .7), - fontSize: 11, - ), - ), - ], - ), - ), - ); - return Padding( - padding: EdgeInsets.only(top: showName ? 10 : 2), - child: Column( - crossAxisAlignment: mine - ? CrossAxisAlignment.end - : CrossAxisAlignment.start, - children: [ - if (showName) - Padding( - padding: const EdgeInsets.only(left: 44, bottom: 2), - child: Text( - name, - style: TextStyle( - color: color.accentText(brightness), - fontWeight: FontWeight.w600, - fontSize: 13, - ), - ), - ), - Row( - mainAxisAlignment: mine - ? MainAxisAlignment.end - : MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - if (!mine) - SizedBox( - width: 36, - child: showAvatar ? PersonAvatar(name: name, size: 30) : null, - ), - if (!mine) const SizedBox(width: 8), - Flexible(child: bubble), - ], + ChatComposer( + keyboardInset: MediaQuery.viewInsetsOf(context).bottom, + text: editing ? _edit : _text, + name: group.name, + blocked: false, + incomingRequest: false, + waiting: false, + identityHeld: false, + hasSession: true, + contactBusy: false, + onUnblock: () async {}, + focusNode: _focus, + submit: editing ? _saveEdit : _send, + editing: editing, + editingBusy: editing && _busy, + canSubmit: !editing || _edit.text.trim() != _editing!.body, + contextBar: editing + ? Row( + key: const Key('editComposerPreview'), + children: [ + const Expanded( + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + child: Row( + children: [ + Icon(Icons.edit_outlined, size: 18), + SizedBox(width: 8), + Flexible(child: Text('Edit message')), + ], + ), + ), + ), + IconButton( + key: const Key('cancelEdit'), + tooltip: 'Cancel edit', + onPressed: _cancelEdit, + icon: const Icon(Icons.close), + ), + ], + ) + : null, ), - if (reactions.isNotEmpty) - Padding( - padding: EdgeInsets.only(left: mine ? 0 : 44, top: 2), - child: Text( - reactions.join(' '), - key: Key('reactions_${message.id}'), - ), - ), ], ), ); diff --git a/lib/src/view/groups/group_info_screen.dart b/lib/src/view/groups/group_info_screen.dart index d2d9d43..b5ff064 100644 --- a/lib/src/view/groups/group_info_screen.dart +++ b/lib/src/view/groups/group_info_screen.dart @@ -13,7 +13,9 @@ import 'package:fireplace/src/widgets/page.dart'; import 'package:fireplace/src/widgets/status.dart'; /// A group's members and settings. Any member may invite people they chat -/// with; administrators rename the group and remove people; anyone may leave. +/// with; administrators rename the group, remove people and choose the other +/// administrators; anyone may leave. People who were invited and have not +/// answered are listed apart, so nobody is surprised that they are there. class GroupInfoScreen extends ConsumerStatefulWidget { const GroupInfoScreen({super.key, required this.gid}); final String gid; @@ -86,6 +88,48 @@ class _GroupInfoScreenState extends ConsumerState { await _run(() => service.rename(widget.gid, name)); } + /// Make administrator, or Remove as administrator: an administrator's + /// choice for another member (or themselves, while another remains). + Future _changeRole( + GroupMember member, + String name, + bool isAdmin, + ) async { + final service = ref.read(groupServiceProvider); + if (service == null) return; + final choice = await showModalBottomSheet( + context: context, + builder: (ctx) => SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile(title: Text('@$name')), + if (isAdmin) + ListTile( + key: const Key('removeAdmin'), + leading: const Icon(Icons.remove_moderator_outlined), + title: const Text('Remove as administrator'), + onTap: () => Navigator.pop(ctx, false), + ) + else + ListTile( + key: const Key('makeAdmin'), + leading: const Icon(Icons.add_moderator_outlined), + title: const Text('Make administrator'), + subtitle: const Text( + 'Administrators rename the group, remove people and choose ' + 'other administrators.', + ), + onTap: () => Navigator.pop(ctx, true), + ), + ], + ), + ), + ); + if (choice == null || !mounted) return; + await _run(() => service.setAdmin(widget.gid, member.uid, admin: choice)); + } + Future _addPeople(GroupInfo group) async { final service = ref.read(groupServiceProvider); if (service == null) return; @@ -133,8 +177,18 @@ class _GroupInfoScreenState extends ConsumerState { ); } final admin = group.isAdmin(me); - final members = [...group.members] - ..sort((a, b) => (a.uid == me ? 0 : 1).compareTo(b.uid == me ? 0 : 1)); + final invited = + ref.watch(groupInvitedProvider(widget.gid)).value ?? const {}; + final members = [ + for (final m in group.members) + if (!invited.containsKey(m.uid)) m, + ]..sort((a, b) => (a.uid == me ? 0 : 1).compareTo(b.uid == me ? 0 : 1)); + final waiting = [ + for (final m in group.members) + if (invited.containsKey(m.uid)) m, + ]; + // With nobody on the list still here, everybody administers (as the server). + final named = members.any((m) => m.admin); return Scaffold( appBar: UiAppBar(context: context, title: const Text('Group info')), body: UiPageScroll( @@ -151,7 +205,9 @@ class _GroupInfoScreenState extends ConsumerState { ), Center( child: Text( - '${members.length} of ${GroupLimits.maxMembers} people', + '${members.length} ${members.length == 1 ? 'person' : 'people'}' + '${waiting.isEmpty ? '' : ', ${waiting.length} invited'}' + ' (${GroupLimits.maxMembers} at most)', ), ), if (_error != null) @@ -160,13 +216,13 @@ class _GroupInfoScreenState extends ConsumerState { child: UiActionError(message: _error!), ), const SizedBox(height: 8), - if (members.length < GroupLimits.maxMembers) + if (group.members.length < GroupLimits.maxMembers) ListTile( key: const Key('addPeople'), enabled: !_busy, leading: const Icon(Icons.person_add_alt_outlined), title: const Text('Add people'), - subtitle: const Text('They join once they accept'), + subtitle: const Text('They choose whether to join'), onTap: () => _addPeople(group), ), if (admin) @@ -182,6 +238,7 @@ class _GroupInfoScreenState extends ConsumerState { _MemberRow( member: m, me: m.uid == me, + isAdmin: m.admin || !named, canRemove: admin && m.uid != me && !_busy, onRemove: (name) async { if (await _confirm( @@ -192,7 +249,41 @@ class _GroupInfoScreenState extends ConsumerState { await _run(() => service.remove(widget.gid, m.uid)); } }, + // An administrator taps a member to change their role. + onRole: admin && !_busy + ? (name) => _changeRole(m, name, m.admin || !named) + : null, ), + if (waiting.isNotEmpty) ...[ + const Divider(), + const ListTile( + key: Key('invitedHeader'), + dense: true, + title: Text('Invited'), + subtitle: Text( + 'They have not joined yet. Their phones can already receive ' + 'new messages, so they are listed here.', + ), + ), + for (final m in waiting) + _MemberRow( + member: m, + me: false, + isAdmin: false, + invited: true, + canRemove: admin && !_busy, + onRemove: (name) async { + if (await _confirm( + 'Withdraw the invitation to @$name?', + 'They will not be able to join unless someone invites ' + 'them again.', + 'Withdraw', + )) { + await _run(() => service.remove(widget.gid, m.uid)); + } + }, + ), + ], const Divider(), ListTile( key: const Key('leaveGroup'), @@ -237,12 +328,16 @@ class _MemberRow extends ConsumerWidget { const _MemberRow({ required this.member, required this.me, + required this.isAdmin, required this.canRemove, required this.onRemove, + this.invited = false, + this.onRole, }); final GroupMember member; - final bool me, canRemove; + final bool me, isAdmin, canRemove, invited; final ValueChanged onRemove; + final ValueChanged? onRole; @override Widget build(BuildContext context, WidgetRef ref) { @@ -251,11 +346,16 @@ class _MemberRow extends ConsumerWidget { key: Key('member_${member.uid}'), leading: PersonAvatar(name: name, size: 40), title: Text(me ? 'You' : '@$name'), - subtitle: member.admin ? const Text('Administrator') : null, + subtitle: invited + ? const Text('Invited') + : isAdmin + ? const Text('Administrator') + : null, + onTap: onRole == null ? null : () => onRole!(name), trailing: canRemove ? IconButton( key: Key('remove_${member.uid}'), - tooltip: 'Remove from group', + tooltip: invited ? 'Withdraw invitation' : 'Remove from group', icon: const Icon(Icons.person_remove_outlined), onPressed: () => onRemove(name), ) diff --git a/lib/src/view/groups/group_invitation_card.dart b/lib/src/view/groups/group_invitation_card.dart index 473d646..f737237 100644 --- a/lib/src/view/groups/group_invitation_card.dart +++ b/lib/src/view/groups/group_invitation_card.dart @@ -31,6 +31,8 @@ class _GroupInvitationCardState extends ConsumerState { await action(widget.invitation.gid); } on GroupRefused catch (e) { if (mounted) setState(() => _error = e.message); + } on GroupActionError catch (e) { + if (mounted) setState(() => _error = e.message); } catch (_) { if (mounted) { setState(() => _error = 'Could not answer this invitation. Try again.'); diff --git a/lib/src/view/groups/group_message_row.dart b/lib/src/view/groups/group_message_row.dart new file mode 100644 index 0000000..950f5e9 --- /dev/null +++ b/lib/src/view/groups/group_message_row.dart @@ -0,0 +1,172 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/db/local_messages.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/styles/chat_colors.dart'; +import 'package:fireplace/src/styles/design_tokens.dart'; +import 'package:fireplace/src/view/chat/message_actions.dart'; +import 'package:fireplace/src/view/chat/message_reactions.dart'; +import 'package:fireplace/src/view/chat/widgets/message_bubble.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; + +/// Layout shared by the rows of a group conversation. +abstract final class GroupRowMetrics { + static const double avatar = 30; + + /// The avatar and the gap after it: where other people's bubbles start. + static const double gutter = avatar + 8; +} + +/// One message in a group. The bubble, its held menu and its reactions are the +/// 1:1 ones. A message from someone else also has the sender's name above the +/// first bubble of a run and their avatar beside the last, and uses the soft +/// tint of that member's own colour. +class GroupMessageRow extends ConsumerWidget { + const GroupMessageRow({ + super.key, + required this.gid, + required this.message, + required this.color, + required this.showName, + required this.showAvatar, + required this.actions, + required this.onReactions, + }); + final String gid; + final LocalMessage message; + + /// The sender's own primary colour (Stone until it arrives). + final ChatBubbleColor color; + final bool showName, showAvatar; + final List actions; + final VoidCallback onReactions; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final mine = message.outgoing; + final brightness = Theme.of(context).brightness; + final name = mine + ? 'You' + : ref.watch(peerUsernameProvider(message.senderUid)).value ?? '…'; + final reserve = + message.reactions.values.any((reaction) => reaction.emoji != null) + ? ReactionChipLayout.reserve * MediaQuery.textScalerOf(context).scale(1) + : 0.0; + final bubble = Stack( + children: [ + Padding( + padding: EdgeInsets.only(bottom: reserve), + child: MessageBubble( + message: message, + senderName: name, + actions: actions, + incomingColor: mine ? null : color, + liveOf: (previewRef) => previewRef + .watch(groupMessagesProvider(gid)) + .value + ?.where((m) => m.id == message.id) + .firstOrNull, + ), + ), + Positioned( + bottom: 0, + left: 0, + right: 0, + child: MessageReactions( + message: message, + peerName: name, + onSelect: onReactions, + ), + ), + ], + ); + if (mine) return bubble; + final shade = color.accentText(brightness); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (showName) + Padding( + padding: const EdgeInsets.only( + left: GroupRowMetrics.gutter + 14, + top: 6, + ), + child: Text( + name, + key: Key('groupSender_${message.id}'), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: shade, + fontWeight: FontWeight.w600, + fontSize: 13, + ), + ), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + SizedBox( + width: GroupRowMetrics.gutter, + child: showAvatar + ? Padding( + // Level with the bubble, above its margin and reactions. + padding: EdgeInsets.only(right: 8, bottom: 4 + reserve), + child: PersonAvatar( + key: Key('groupAvatar_${message.id}'), + name: name, + size: GroupRowMetrics.avatar, + color: shade, + ), + ) + : null, + ), + Expanded(child: bubble), + ], + ), + ], + ); + } +} + +/// A small centred line in a group's history. +class GroupQuietLine extends StatelessWidget { + const GroupQuietLine({super.key, required this.text}); + final String text; + + @override + Widget build(BuildContext context) => Padding( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 6), + child: Text( + text, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 13, + height: 1.3, + color: FireplaceUiTokens.of(context).secondaryText, + ), + ), + ); +} + +/// A change to the group ("alice added bob_jones"), with names put in. +class GroupNoticeLine extends ConsumerWidget { + const GroupNoticeLine({super.key, required this.notice}); + final GroupNotice notice; + + @override + Widget build(BuildContext context, WidgetRef ref) => + GroupQuietLine(text: groupNoticeText(ref, notice)); +} + +/// The words for a notice, with "You" for this account and usernames for +/// everyone else. +String groupNoticeText(WidgetRef ref, GroupNotice notice) { + final me = ref.watch(appSessionProvider.select((s) => s.value?.uid)); + return notice.text( + (uid) => + uid == me ? 'You' : ref.watch(peerUsernameProvider(uid)).value ?? '…', + ); +} diff --git a/lib/src/view/groups/group_tile.dart b/lib/src/view/groups/group_tile.dart index d7d7b78..9fe4788 100644 --- a/lib/src/view/groups/group_tile.dart +++ b/lib/src/view/groups/group_tile.dart @@ -2,13 +2,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fireplace/src/app/group_providers.dart'; import 'package:fireplace/src/app/providers.dart'; +import 'package:fireplace/src/db/local_messages.dart'; +import 'package:fireplace/src/model/chat/message_controls.dart'; +import 'package:fireplace/src/model/chat/message_format.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/styles/design_tokens.dart'; -import 'package:fireplace/src/view/groups/group_avatar.dart'; import 'package:fireplace/src/view/chat_list/chat_list_stamp.dart'; +import 'package:fireplace/src/view/chat_list/widgets/chat_tile.dart'; +import 'package:fireplace/src/view/groups/group_avatar.dart'; +import 'package:fireplace/src/view/groups/group_message_row.dart'; -/// A group in the chat list: its avatar, name, and the newest message with -/// who wrote it ("Mira: See you at 7?"). +/// A group in the chat list. The row is a 1:1 row (the same avatar size, bold +/// name, date, two-line preview, unread count and spacing) with two +/// differences: the avatar is the group's rounded square, and the preview +/// names who wrote the newest message ("Mira: See you at 7?"). class GroupTile extends ConsumerWidget { const GroupTile({super.key, required this.group, required this.onOpen}); final GroupInfo group; @@ -18,38 +25,148 @@ class GroupTile extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final t = FireplaceUiTokens.of(context); final messages = - ref.watch(groupMessagesProvider(group.gid)).value ?? const []; - final last = messages.where((m) => m.visible).lastOrNull; - final me = ref.watch(appSessionProvider).value?.uid; - final sender = last == null - ? null - : last.senderUid == me - ? 'You' - : ref.watch(peerUsernameProvider(last.senderUid)).value ?? '…'; - final preview = last == null - ? '${group.members.length} ${group.members.length == 1 ? 'person' : 'people'}' - : '$sender: ${last.body}'; - return ListTile( + ref.watch(groupMessagesProvider(group.gid)).value ?? + const []; + final last = messages + .where((m) => m.visible && !m.remotelyDeleted) + .lastOrNull; + final invited = + ref.watch(groupInvitedProvider(group.gid)).value ?? const {}; + final people = group.members + .where((m) => !invited.containsKey(m.uid)) + .length; + final unread = ref.watch(groupUnreadProvider(group.gid)); + final notice = last?.status == MessageStatus.notice + ? GroupNotice.decode(last!.body) + : null; + final String preview; + if (last == null) { + preview = '$people ${people == 1 ? 'person' : 'people'}'; + } else if (last.status == MessageStatus.notice) { + preview = notice == null ? '' : groupNoticeText(ref, notice); + } else { + final sender = last.outgoing + ? (last.status == MessageStatus.unconfirmed + ? 'You (not confirmed)' + : 'You') + : ref.watch(peerUsernameProvider(last.senderUid)).value ?? '…'; + preview = + '$sender: ${last.status == MessageStatus.undecryptable ? 'Unreadable encrypted message' : messagePreview(last.body)}'; + } + // The same sizes as ChatTile: they are for the default text size and grow + // with the system setting. + final scaler = MediaQuery.textScalerOf(context); + final nameLine = scaler.scale(16) * 1.2; + final line = scaler.scale(15) * 1.33; + return InkWell( key: Key('group_${group.gid}'), onTap: onOpen, - leading: GroupAvatar(name: group.name), - title: Text(group.name, maxLines: 1, overflow: TextOverflow.ellipsis), - subtitle: Text( - preview, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle(color: t.secondaryText), - ), - trailing: last == null - ? null - : Text( - chatListStamp( - last.sentAt, - DateTime.now(), - MaterialLocalizations.of(context), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: ChatTile.edge), + child: Row( + children: [ + GroupAvatar(name: group.name, size: ChatTile.avatarSize), + const SizedBox(width: 10), + Expanded( + child: ConstrainedBox( + constraints: const BoxConstraints( + minHeight: ChatTile.avatarSize + 16, + ), + child: Padding( + padding: EdgeInsets.only( + top: scaler.scale(8), + bottom: scaler.scale(10), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // The date's smaller type must not stretch the line. + SizedBox( + height: nameLine, + child: Row( + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Expanded( + child: Text( + group.name, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 16, + height: 1.2, + fontWeight: FontWeight.w600, + color: t.text, + ), + ), + ), + if (last != null) + Padding( + padding: const EdgeInsets.only(left: 8), + child: Text( + chatListStamp( + last.sentAt, + ref.watch(messageControlNowProvider)(), + MaterialLocalizations.of(context), + ), + maxLines: 1, + style: TextStyle( + fontSize: 14, + height: 16 * 1.2 / 14, + fontWeight: FontWeight.w400, + color: t.secondaryText, + ), + ), + ), + ], + ), + ), + ConstrainedBox( + // The count sits beside the second preview line even + // when the preview is shorter. + constraints: BoxConstraints(minHeight: line * 2), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Text( + preview, + key: Key('groupPreview_${group.gid}'), + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 15, + height: 1.33, + fontWeight: FontWeight.w400, + color: t.secondaryText, + ), + ), + ), + if (unread > 0) + Padding( + padding: EdgeInsets.only( + left: 8, + top: + line + + (line - scaler.scale(UnreadCount.size)) / + 2, + ), + child: UnreadCount( + key: ValueKey('unread-${group.chatId}'), + count: unread, + ), + ), + ], + ), + ), + ], + ), + ), ), - style: TextStyle(color: t.secondaryText, fontSize: 13), ), + ], + ), + ), ); } } diff --git a/lib/src/widgets/avatar.dart b/lib/src/widgets/avatar.dart index 62fbe94..f9124d0 100644 --- a/lib/src/widgets/avatar.dart +++ b/lib/src/widgets/avatar.dart @@ -17,9 +17,17 @@ String avatarInitials(String name) { /// Initials on the chosen accent colour. There are no profile photos. class PersonAvatar extends StatelessWidget { - const PersonAvatar({super.key, required this.name, this.size = 44}); + const PersonAvatar({ + super.key, + required this.name, + this.size = 44, + this.color, + }); final String name; final double size; + + /// The fill, when it is not the app's accent: a group member's own colour. + final Color? color; @override Widget build(BuildContext context) { final t = FireplaceUiTokens.of(context); @@ -35,7 +43,10 @@ class PersonAvatar extends StatelessWidget { gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color.lerp(t.accent, Colors.white, .18)!, t.accent], + colors: [ + Color.lerp(color ?? t.accent, Colors.white, .18)!, + color ?? t.accent, + ], ), ), child: Text( diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart index ec41b1f..64a8ee3 100644 --- a/test/view/groups/group_screens_test.dart +++ b/test/view/groups/group_screens_test.dart @@ -4,13 +4,16 @@ import 'dart:async'; import 'dart:io'; import 'package:fake_cloud_firestore/fake_cloud_firestore.dart'; +import 'package:fireplace/src/app/chat_color_preference.dart'; import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/styles/chat_colors.dart'; import 'package:fireplace/src/styles/theme.dart'; import 'package:fireplace/src/view/chat_list/chat_list_screen.dart'; import 'package:fireplace/src/view/groups/group_chat_screen.dart'; import 'package:fireplace/src/view/groups/group_info_screen.dart'; import 'package:fireplace/src/view/groups/new_group_screen.dart'; import 'package:fireplace/src/view/safety/requests_screen.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -83,6 +86,9 @@ void main() { expect(done(), isTrue); } + /// A control in the held-message menu, the same one 1:1 chats use. + Finder action(String id) => find.byKey(ValueKey('messageAction-$id')); + Future pump(WidgetTester t, Widget home) async { final f = UiFixture(); await f.seed(); @@ -165,18 +171,22 @@ void main() { expect(find.text('bob'), findsOneWidget); // the name above Bob's run expect(find.text('2 people'), findsOneWidget); + // The same held-message menu as a 1:1 chat. await t.longPress(find.text('from Bob')); await t.pumpAndSettle(); - expect(find.byKey(const Key('deleteForEveryone')), findsNothing); - expect(find.byKey(const Key('editGroupMessage')), findsNothing); - expect(find.byKey(const Key('deleteForMe')), findsOneWidget); + expect(action('deleteForEveryone'), findsNothing); + expect(action('edit'), findsNothing); + expect(action('deleteForMe'), findsOneWidget); + expect(action('react-👍'), findsOneWidget); await t.tapAt(const Offset(10, 10)); await t.pumpAndSettle(); await t.longPress(find.text('from Alice')); await t.pumpAndSettle(); - expect(find.byKey(const Key('deleteForEveryone')), findsOneWidget); - await t.tap(find.byKey(const Key('deleteForEveryone'))); + expect(action('edit'), findsOneWidget); + await t.tap(action('deleteForEveryone')); + await t.pumpAndSettle(); + await t.tap(find.byKey(const Key('confirmRemoteDelete'))); await settle(t, () => find.text('from Alice').evaluate().isEmpty); await t.runAsync( () => until( @@ -191,7 +201,8 @@ void main() { await tearDownPhones(t); }); - testWidgets('editing your message through the dialog saves it', (t) async { + testWidgets('editing your message happens in the composer, as in a 1:1 ' + 'chat', (t) async { await setUpPhones(t); final gid = await bookClub(t, alice, bob); await t.runAsync(() => alice.service.send(gid, 'See you at 7')); @@ -199,13 +210,35 @@ void main() { await settle(t, () => find.text('See you at 7').evaluate().isNotEmpty); await t.longPress(find.text('See you at 7')); await t.pumpAndSettle(); - await t.tap(find.byKey(const Key('editGroupMessage'))); + await t.tap(action('edit')); await t.pumpAndSettle(); - await t.enterText(find.byType(TextField).last, 'See you at 8'); - await t.tap(find.byKey(const Key('saveEdit'))); - // The dialog closes while its field animates out; nothing may throw. - await settle(t, () => find.text('See you at 8').evaluate().isNotEmpty); + // No dialog: the composer holds the text, under an "Edit message" bar. + expect(find.byType(Dialog), findsNothing); + expect(find.byKey(const Key('editComposerPreview')), findsOneWidget); + final composer = find.byKey(const Key('composer')); + expect(t.widget(composer).controller!.text, 'See you at 7'); + // Nothing to save until the text changes. + expect( + t.widget(find.byKey(const Key('send'))).onPressed, + isNull, + ); + await t.enterText(composer, 'See you at 8'); + await t.pump(); + await t.tap(find.byKey(const Key('send'))); + await settle( + t, + () => + find.byKey(const Key('editComposerPreview')).evaluate().isEmpty && + find.text('See you at 8').evaluate().isNotEmpty, + ); + expect(t.widget(composer).controller!.text, isEmpty); expect(t.takeException(), isNull); + await t.runAsync( + () => until( + () async => (await texts(bob, gid)).contains('See you at 8'), + what: 'the edit reaches Bob', + ), + ); await tearDownPhones(t); }); @@ -249,4 +282,169 @@ void main() { expect(alice.service.groups[gid]!.name, 'Tea club'); await tearDownPhones(t); }); + + // ---------------------------------------------------------------- round 2 + + testWidgets("others' messages use the soft tint of their own colour; " + 'names and avatars use its text shade', (t) async { + await setUpPhones(t); + bob.service.ownColor = 'plum'; + final gid = await bookClub(t, alice, bob); + await t.runAsync(() async { + await bob.service.send(gid, 'from Bob'); + await until( + () async => + (await texts(alice, gid)).contains('from Bob') && + alice.service.colorsOf(gid)['bob'] == 'plum', + what: 'the message and the colour', + ); + await alice.service.send(gid, 'from Alice'); + }); + await pump(t, GroupChatScreen(gid: gid)); + await settle(t, () => find.text('from Alice').evaluate().isNotEmpty); + final history = (await t.runAsync( + () => alice.messages.watch('group-$gid').first, + ))!; + String idOf(String body) => history.firstWhere((m) => m.body == body).id; + Color fill(String body) => + (t + .widget( + find.byKey(ValueKey('messageBubble-${idOf(body)}')), + ) + .decoration! + as BoxDecoration) + .color!; + expect(fill('from Bob'), ChatBubbleColor.plum.incoming(Brightness.light)); + final own = ProviderScope.containerOf( + t.element(find.byType(GroupChatScreen)), + ).read(chatBubbleColorsProvider).outgoing; + expect(fill('from Alice'), own.outgoing); + final shade = ChatBubbleColor.plum.accentText(Brightness.light); + expect( + t + .widget(find.byKey(Key('groupSender_${idOf('from Bob')}'))) + .style! + .color, + shade, + ); + expect( + t + .widget( + find.byKey(Key('groupAvatar_${idOf('from Bob')}')), + ) + .color, + shade, + ); + await tearDownPhones(t); + }); + + testWidgets('the history shows who was added, and where it starts for ' + 'someone who joined later', (t) async { + await setUpPhones(t); + final mine = await bookClub(t, alice, bob); + final theirs = await bookClub(t, bob, alice); + await pump(t, GroupChatScreen(gid: mine)); + await settle(t, () => find.text('You added bob').evaluate().isNotEmpty); + // Alice made this group: its history on her phone is complete. + expect(find.byKey(const Key('historyStart')), findsNothing); + + await pump(t, GroupChatScreen(gid: theirs)); + await settle( + t, + () => find.byKey(const Key('historyStart')).evaluate().isNotEmpty, + ); + expect( + find.text('Messages sent before you joined aren’t shown.'), + findsOneWidget, + ); + await tearDownPhones(t); + }); + + testWidgets('a group row counts unread messages until the group is opened', ( + t, + ) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await pump(t, const ChatListScreen()); + final badge = find.byKey(ValueKey('unread-group-$gid')); + await settle(t, () => find.text('Book club').evaluate().isNotEmpty); + expect(badge, findsNothing); + await t.runAsync(() async { + await bob.service.send(gid, 'one'); + await bob.service.send(gid, 'two'); + }); + await settle(t, () => badge.evaluate().isNotEmpty); + await settle( + t, + () => find + .descendant(of: badge, matching: find.text('2')) + .evaluate() + .isNotEmpty, + ); + // Lines about the group are not messages and are never counted. + await t.tap(find.byKey(Key('group_$gid'))); + await settle(t, () => find.byType(GroupChatScreen).evaluate().isNotEmpty); + await settle(t, () => find.text('two').evaluate().isNotEmpty); + await t.pageBack(); + await settle(t, () => badge.evaluate().isEmpty); + await tearDownPhones(t); + }); + + testWidgets('an administrator makes a member an administrator', (t) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await pump(t, GroupInfoScreen(gid: gid)); + expect(find.text('Administrator'), findsOneWidget); + await t.tap(find.byKey(const Key('member_bob'))); + await t.pumpAndSettle(); + expect(find.byKey(const Key('removeAdmin')), findsNothing); + await t.tap(find.byKey(const Key('makeAdmin'))); + await settle(t, () => alice.service.groups[gid]!.isAdmin('bob')); + await settle(t, () => find.text('Administrator').evaluate().length == 2); + // Now the choice is to take it away again. + await t.tap(find.byKey(const Key('member_bob'))); + await t.pumpAndSettle(); + expect(find.byKey(const Key('removeAdmin')), findsOneWidget); + await t.tapAt(const Offset(10, 10)); + await t.pumpAndSettle(); + await tearDownPhones(t); + }); + + testWidgets('someone invited is listed as invited until they join', ( + t, + ) async { + await setUpPhones(t); + final gid = (await t.runAsync(() async { + final gid = await alice.service.create('Book club', ['bob']); + await until( + () async => alice.service.invitedTo(gid).containsKey('bob'), + what: 'invited', + ); + return gid; + }))!; + await pump(t, GroupInfoScreen(gid: gid)); + await settle( + t, + () => find.byKey(const Key('invitedHeader')).evaluate().isNotEmpty, + ); + expect(find.textContaining('1 person, 1 invited'), findsOneWidget); + final row = find.byKey(const Key('member_bob')); + await t.scrollUntilVisible(row, 200); + expect( + find.descendant(of: row, matching: find.text('Invited')), + findsOneWidget, + ); + // Not a member yet, so not offered as an administrator. + await t.tap(row); + await t.pumpAndSettle(); + expect(find.byKey(const Key('makeAdmin')), findsNothing); + + await t.runAsync(() => bob.service.accept(gid)); + await settle( + t, + () => find.byKey(const Key('invitedHeader')).evaluate().isEmpty, + ); + expect(find.textContaining('2 people'), findsOneWidget); + await tearDownPhones(t); + }); } From 0589669ae3efa1feb529eb15824aeba50572017b Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:05:34 +0000 Subject: [PATCH 08/17] Render the group screens for review, and colour avatars in Group info. --- lib/src/view/groups/group_info_screen.dart | 17 +- scripts/render/render_groups_test.dart | 218 +++++++++++++++++++++ 2 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 scripts/render/render_groups_test.dart diff --git a/lib/src/view/groups/group_info_screen.dart b/lib/src/view/groups/group_info_screen.dart index b5ff064..40ba85f 100644 --- a/lib/src/view/groups/group_info_screen.dart +++ b/lib/src/view/groups/group_info_screen.dart @@ -236,6 +236,7 @@ class _GroupInfoScreenState extends ConsumerState { const Divider(), for (final m in members) _MemberRow( + gid: widget.gid, member: m, me: m.uid == me, isAdmin: m.admin || !named, @@ -267,6 +268,7 @@ class _GroupInfoScreenState extends ConsumerState { ), for (final m in waiting) _MemberRow( + gid: widget.gid, member: m, me: false, isAdmin: false, @@ -326,6 +328,7 @@ class _GroupInfoScreenState extends ConsumerState { /// One person in the member list. class _MemberRow extends ConsumerWidget { const _MemberRow({ + required this.gid, required this.member, required this.me, required this.isAdmin, @@ -334,6 +337,7 @@ class _MemberRow extends ConsumerWidget { this.invited = false, this.onRole, }); + final String gid; final GroupMember member; final bool me, isAdmin, canRemove, invited; final ValueChanged onRemove; @@ -342,9 +346,20 @@ class _MemberRow extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final name = ref.watch(peerUsernameProvider(member.uid)).value ?? '…'; + // Other people's avatars use their own colour, as in the conversation. + final colors = ref.watch(groupColorsProvider(gid)).value ?? const {}; return ListTile( key: Key('member_${member.uid}'), - leading: PersonAvatar(name: name, size: 40), + leading: PersonAvatar( + name: name, + size: 40, + color: me + ? null + : memberColor( + colors, + member.uid, + ).accentText(Theme.of(context).brightness), + ), title: Text(me ? 'You' : '@$name'), subtitle: invited ? const Text('Invited') diff --git a/scripts/render/render_groups_test.dart b/scripts/render/render_groups_test.dart new file mode 100644 index 0000000..66b2186 --- /dev/null +++ b/scripts/render/render_groups_test.dart @@ -0,0 +1,218 @@ +// Renders the group screens (decision 0050) into build/renders/groups/, for +// review and for pull requests: +// +// bash scripts/build_crypto_host.sh +// TZ=UTC flutter test scripts/render/render_groups_test.dart +// +// Unlike the catalog in render_screens_test.dart, these use real group +// services over the Rust MLS core (there is no fake of MLS), so group ids and +// times differ between runs and the images are not byte-identical. They are +// widget renders, not device screenshots, and the names are fictional. +import 'dart:io'; +import 'dart:ui' as ui; + +import 'package:fake_cloud_firestore/fake_cloud_firestore.dart'; +import 'package:fireplace/src/app/chat_color_preference.dart'; +import 'package:fireplace/src/app/group_providers.dart'; +import 'package:fireplace/src/model/groups/group_models.dart'; +import 'package:fireplace/src/styles/theme.dart'; +import 'package:fireplace/src/view/chat_list/chat_list_screen.dart'; +import 'package:fireplace/src/view/groups/group_chat_screen.dart'; +import 'package:fireplace/src/view/groups/group_info_screen.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../../test/support/fake_group_server.dart'; +import '../../test/support/group_phones.dart'; +import '../../test/support/ui_fixture.dart'; +import 'render_screens_test.dart' show loadFonts; + +void main() { + late Directory root; + late FakeFirebaseFirestore db; + late FakeGroupServer server; + late Phone alice, bob, carol, dana; + late String mine, theirs; + + /// A few people, two groups and some conversation. Alice is this phone. + Future story() async { + root = await Directory.systemTemp.createTemp('group_renders'); + db = FakeFirebaseFirestore(); + server = FakeGroupServer(db); + alice = await Phone.create(db, 'alice', root); + bob = await Phone.create(db, 'bob_jones', root); + carol = await Phone.create(db, 'carol', root); + dana = await Phone.create(db, 'dana', root); + for (final p in [alice, bob, carol, dana]) { + server.watchAccount(p.uid); + } + bob.service.ownColor = 'plum'; + carol.service.ownColor = 'forest'; + + Future said(Phone from, String gid, String text) async { + await from.service.send(gid, text); + await until( + () async => (await texts(alice, gid)).contains(text), + what: text, + ); + } + + mine = await alice.service.create('Book club', ['bob_jones', 'carol']); + for (final p in [bob, carol]) { + await until( + () async => p.service.invitations.any((i) => i.gid == mine), + what: 'invitation', + ); + await p.service.accept(mine); + await until( + () async => alice.service.colorsOf(mine).containsKey(p.uid), + what: 'colour of ${p.uid}', + ); + } + await alice.service.send(mine, 'Shall we start the new one this week?'); + await said(bob, mine, 'Yes. I have the first three chapters done'); + await said(bob, mine, 'It gets going after the second'); + await said(carol, mine, 'Thursday works for me'); + await alice.service.send(mine, 'Thursday at 7, then'); + await alice.service.setAdmin(mine, 'bob_jones', admin: true); + await alice.service.invite(mine, 'dana'); + await until( + () async => alice.service.invitedTo(mine).containsKey('dana'), + what: 'Dana invited', + ); + await said(carol, mine, 'I will bring the tea'); + + theirs = await bob.service.create('Hill walkers', ['alice']); + await until( + () async => alice.service.invitations.any((i) => i.gid == theirs), + what: 'invitation', + ); + await alice.service.accept(theirs); + await until( + () async => bob.service.groups[theirs]!.members.length == 2, + what: 'joined', + ); + await said(bob, theirs, 'Welcome. Saturday is the ridge walk'); + } + + Future settle(WidgetTester t, [int rounds = 12]) async { + for (var i = 0; i < rounds; i++) { + await t.runAsync( + () => Future.delayed(const Duration(milliseconds: 25)), + ); + await t.pump(const Duration(milliseconds: 25)); + } + } + + for (final brightness in Brightness.values) { + testWidgets('group screens, ${brightness.name}', (t) async { + await t.runAsync(loadFonts); + await t.runAsync(story); + final previousShadows = debugDisableShadows; + debugDisableShadows = false; + addTearDown(() => debugDisableShadows = previousShadows); + t.view.physicalSize = const Size(390, 844); + t.view.devicePixelRatio = 1; + addTearDown(t.view.reset); + + Future render( + String name, + Widget screen, { + Future Function()? act, + }) async { + final fixture = UiFixture(); + await fixture.seed(); + final boundary = GlobalKey(); + await t.pumpWidget( + ProviderScope( + key: UniqueKey(), + overrides: [ + ...fixture.overrides, + groupServiceProvider.overrideWithValue(alice.service), + groupContactsProvider.overrideWithValue(const ['bob_jones']), + ], + child: RepaintBoundary( + key: boundary, + child: Consumer( + builder: (context, ref, _) { + final theme = fireplaceTheme( + brightness, + accent: ref.watch( + chatBubbleColorsProvider.select((c) => c.outgoing), + ), + ); + return MaterialApp( + debugShowCheckedModeBanner: false, + theme: theme.copyWith( + textTheme: theme.textTheme.apply(fontFamily: 'Roboto'), + ), + home: screen, + ); + }, + ), + ), + ), + ); + await settle(t); + await act?.call(); + await settle(t); + final renderer = + boundary.currentContext!.findRenderObject()! + as RenderRepaintBoundary; + final png = await t.runAsync(() async { + final image = await renderer.toImage(pixelRatio: 2); + try { + return (await image.toByteData(format: ui.ImageByteFormat.png))! + .buffer + .asUint8List(); + } finally { + image.dispose(); + } + }); + File('build/renders/groups/${brightness.name}-$name.png') + ..createSync(recursive: true) + ..writeAsBytesSync(png!); + } + + await render('list', const ChatListScreen()); + await render('conversation', GroupChatScreen(gid: mine)); + await render( + 'conversation-menu', + GroupChatScreen(gid: mine), + act: () async { + await t.longPress(find.text('Thursday at 7, then')); + await t.pump(const Duration(milliseconds: 600)); + }, + ); + await render( + 'conversation-editing', + GroupChatScreen(gid: mine), + act: () async { + await t.longPress(find.text('Thursday at 7, then')); + await t.pump(const Duration(milliseconds: 600)); + await t.tap(find.byKey(const ValueKey('messageAction-edit'))); + // The menu closes, then the composer takes the text. + for (var i = 0; i < 10; i++) { + await t.pump(const Duration(milliseconds: 100)); + } + }, + ); + await render('joined-later', GroupChatScreen(gid: theirs)); + await render('info', GroupInfoScreen(gid: mine)); + + await t.pumpWidget(const SizedBox()); + await t.runAsync(() async { + for (final p in [alice, bob, carol, dana]) { + await p.service.close(); + } + await server.close(); + await root.delete(recursive: true); + }); + // The test binding checks this is back before the body ends. + debugDisableShadows = previousShadows; + expect(GroupLimits.maxMembers, 16); + }); + } +} From 5c99260a33a094202c0d15771c8ca169a24702a5 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:07:04 +0000 Subject: [PATCH 09/17] Record round 2 of group chats in decision 0050 and the protocol note. --- docs/decisions/0050-group-chats.md | 132 ++++++++++++++++++++++++++++- docs/protocol/group-chats-v1.md | 16 ++-- 2 files changed, 140 insertions(+), 8 deletions(-) diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index 697a75c..30be1c3 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -1,7 +1,7 @@ # 0050: Group chats: profile, delivery and limits -Date: 2026-11-14. Status: **decisions accepted by the owner; implementation gated** -(see the end). Develops [0036](0036-groups-use-mls.md). The full proposal, written +Date: 2026-11-14, amended the same day (*Round 2*, below). Status: **decisions +accepted by the owner; implementation gated** (see the end). Develops [0036](0036-groups-use-mls.md). The full proposal, written with GPT, is [protocol/group-chat-design.md](../protocol/group-chat-design.md); this note records the owner's choices and **amends the proposal's delivery path**. Where they differ, this note wins. @@ -24,7 +24,7 @@ The interfaces, Firestore schema, rules, function and screens are specified in |---|---| | Create a group | anyone (5 a day; at most 32 groups per account) | | Invite someone | **any member**, but only a person they already have an accepted 1:1 chat with; the backend function checks this. The invitee must accept. | -| Add the person who accepted | the inviter's device (an administrator's if the inviter has left) | +| Add the invited person to MLS | the inviter's device, **when it sends the invitation** (round 2). Joining then needs no other phone. | | Remove someone, change roles | administrators | | Rename | administrators; other members' phones refuse anyone else's rename | | Leave | anyone, at any time | @@ -94,6 +94,132 @@ document. So: Membership changes cost more under either plan and are rare. +## Round 2 (owner's test, 2026-11-14) + +The owner tried groups on the Android emulator and asked for six changes. Backend +decision 0023 has the server side. + +### Joining must not wait for the inviter's phone + +MLS is end to end, so the server cannot add anyone: only a member's device can sign +the Add Commit and write the Welcome. The first version did that after the invitee +tapped Join, on the inviter's phone, while its app was open. In testing Join did +nothing until the inviter opened the app. + +Now the **invitation does the Add**. The inviter's phone is online when it invites, +so it fetches a key package for each of the invitee's devices (up to four), and +sends the Commit, the Welcome and the packages it used in the same request. + +- **Join** processes the Welcome the phone already has, so the group opens at once. + The server then moves the account from *invited* into the roster, which is what + lets the phone read and send. +- **Decline, or seven days without an answer:** the server fences the invited + devices as it does for a leave, and any member's phone sends the removing Commit + through `finalize`. The server has no scheduler, so the first member's phone to + notice an invitation past its seven days asks for the expiry. +- **Declining stays quiet.** The group sees only that the person is no longer + listed; nothing says whether they declined or the invitation ran out. +- **The trade-off.** From the invitation on, the invited devices are MLS members + and hold the keys for messages sent afterwards, before the person accepts. The + rules still refuse them everything but their own Welcome, and the app shows + nothing from before they joined. The group chose to invite them, and *Group info* + lists people who are **Invited**, apart from the members, so nobody is surprised. +- **Limits.** The 16 people and 64 devices count people who are invited. +- **Key packages run out:** the invitation is refused with "They need to open + Fireplace before they can be invited." A device that had none, or is linked + later, is added by the account's own device after it joins (`addDevice`; the + server has it, the app does not send it yet). +- **A phone that was offline** when someone was invited and then declined still + applies both Commits in order. It does not check an Add against the roster, + because the roster it can read is today's, not the one at that epoch. + +**Cost** (Blaze; all bounded by the 100 membership requests an account may make a +day): + +| | Writes | Reads | Functions | +|---|---|---|---| +| An invitation | 5 + one delete per key package (≤4) | about 13 + one per device and package (≤8); the inviter's phone reads the invitee's device list and one package each (≤5) | 1 request, 1 push | +| Joining | 4 | 3 + the account's group list; the phone reads its Welcome | 1 request | +| Declining or an expiry | 3 | 4 | 1 request, then a `finalize` (4 writes, 5 reads, 1 request) | +| A newcomer's colours | one message from the newcomer and one from each member (≤16 messages, 2 writes each) | | ≤16 push triggers, throttled per person | +| A member applying a membership Commit | | 1 extra read of the roster | | + +### Colours + +Your own messages use your primary colour; every other member's use the soft tint +of **that member's** primary colour, and their name and avatar its text shade. The +colour travels only inside the group, as an encrypted `profile` message. + +The first version sent a profile only on creating or joining a group or changing +the colour, so a later joiner never received the earlier members' colours and saw +them in Stone. Now a newcomer's profile is marked `hello`, and **every member +answers a `hello` with their own profile**, once. Colours are kept per group, and +avatars use them too. + +### The start of the history + +Someone who joins a group that already existed sees a quiet line above their first +message: *Messages sent before you joined aren’t shown.* The phone reads and shows +nothing from before the time the server recorded the join. + +### The same look as 1:1 chats + +The group row reuses the 1:1 row's layout (avatar size, bold name, date, two-line +preview, hairline), keeping the rounded-square letter. The conversation reuses the +1:1 bubble, held-message menu, reactions, day separators and composer, and editing +happens in the composer, not a dialog. The differences are the sender's name above +the first bubble of a run, their avatar beside the last, and the colours. + +### Unread counts, lines and pushes + +- **Unread count** on the group row, counted on the phone from the local history + with the same per-chat record of what has been shown as 1:1 chats. No server + field and no read receipt. +- **Lines in the conversation**, small and centred: *alice added bob_jones*, + *mira left*, *alice removed mira*, *alice made bob_jones an administrator*, + *alice renamed the group*. They are built on the phone from the MLS state before + and after each **authenticated Commit**, never from the server's roster. + - A removal looks the same in MLS whether the person left or was removed. So a + member who leaves first says so in an encrypted group message, and an + administrator who removes someone says that; MLS vouches for the sender. With + neither (a declined invitation, a deleted account) the line reads *… is no + longer in the group*. + - The lines are stored in the encrypted local history, are never counted as + unread and are never matched by search. +- **Push when someone is invited:** one, to the invited person only (owner's + choice), following their existing notification settings: *Fireplace / You were + invited by alice.* when the sender's name is shown, *Fireplace / New Invitation* + when it is hidden. The owner asked for the group's name as the title; the server + never has it, so that waits for the phone to read the Welcome in the background + (backend 0023). + +### Administrators + +In *Group info* an administrator taps a member for **Make administrator** or +**Remove as administrator**. It is an MLS Commit carrying the new list (group-context +extension `0xF0F1`) and the same list to the server (`roles`). Every phone refuses +a role change, like a rename, from someone who is not an administrator. Someone +invited cannot be made one until they join. If the last administrator leaves, +everyone left is one, as before. + +### Tests + +`test/model/groups/group_service_test.dart` (23, two and three phones on the real +Rust core): joining with the inviter's phone off, key packages run out, expiry, +decline, removing someone invited, colours for a later joiner, each line, roles, +and a refused role change. `test/view/groups/group_screens_test.dart` (11): the +1:1 menu and composer editing, colours of bubbles, names and avatars, the lines, +the start-of-history line, the unread count, Make administrator, and *Invited*. +`scripts/render/render_groups_test.dart` renders the screens for review. + +### Not in this round + +- The invitation card inside the 1:1 chat with the inviter (it shows in Message + requests). +- `addDevice` from the app. +- The group's name in the invitation push. +- Group unread counts in the app icon's badge, and muting a group. + ## Spike results [fireplace-crypto#3](https://github.com/fireplacechat/fireplace-crypto/pull/3) diff --git a/docs/protocol/group-chats-v1.md b/docs/protocol/group-chats-v1.md index 34671fc..361b679 100644 --- a/docs/protocol/group-chats-v1.md +++ b/docs/protocol/group-chats-v1.md @@ -1,6 +1,8 @@ # Group chats, version 1: specification -Date: 2026-11-14. Status: **design for review**. Implements +Date: 2026-11-14. Status: **design for review**; sections 2 to 4 were amended by +*Round 2* of decision 0050 (the invitation carries the Add; `hello` profiles; +lines; roles), and where they differ that note and backend 0023 win. Implements [decision 0050](../decisions/0050-group-chats.md) and the [proposal](group-chat-design.md) it amends. Fixes the interfaces three pieces of work will build against at the same time: the Rust core, the backend, and the app. @@ -127,9 +129,10 @@ challenge, roles and limits. | Operation | Who | What the transaction does | |---|---|---| | `create` | any account (5 a day) | `groups/{gid}`, creator as administrator, `groupRefs` | -| `invite(uid)` | any member | `groups/{gid}/invites/{uid}`; needs an accepted 1:1 chat between the two; refused if either has blocked the other; at most 20 pending per recipient | -| `accept` / `decline` | the invitee | marks the invite | -| `add(uid, epoch, commit, welcomes, packages)` | any member's device (the inviter's, or an administrator's if the inviter left), after `accept` | checks `epoch`, consumes the packages, writes the Commit, the Welcomes, `members` and `groupRefs`, and raises `epoch`, all at once | +| `invite(uid, devices, epoch, commit, welcome, packages)` | any member's device | needs an accepted 1:1 chat between the two; refused if either has blocked the other; at most 20 pending per recipient. Checks `epoch`, consumes the packages, writes the Commit and the Welcome, records the account in `invited`, and raises `epoch`, all at once (round 2) | +| `accept` | the invitee | moves the account from `invited` to `members`, writes `groupRefs` with `joinedAt`. No Commit | +| `decline`, `expire(uid)` | the invitee; any member after 7 days | removes the account from `invited` and fences its devices | +| `roles(admins, epoch, commit)` | administrator | the Commit carrying the new list; sets each member's `role` | | `addDevice(device, …)` | the same account's other device | the same, for a newly linked device | | `remove(uid, epoch, commit)` | administrator | removes every leaf of that account | | `leave` | a member | removes it from `members` and `groupRefs` at once (it can no longer read) and adds its leaves to `fence` | @@ -199,7 +202,10 @@ devices, rechecking fences, as `pushOnMessage` does. chose Plum, everyone sees her bubbles in the plum tint. - A member's colour is shared only inside the group, as an encrypted `profile` message (`type: profile, color`) sent on joining and whenever they change it. The - server never stores it, and 1:1 chats are unchanged. + server never stores it, and 1:1 chats are unchanged. A newcomer's is marked + `hello: true`, and each member answers it with their own (round 2). + - `type: notice` messages (`kind: left`, or `kind: removing, uid` from an + administrator) say why a removal is about to happen, for the line it shows. - A member whose colour hasn't arrived yet shows in Stone. - **System lines**, small and centred: *Rowan added Mira*, *Elliot left*, *Rowan renamed the group*. They come from the authenticated Commits, never from the From d7c34d9c6df20ed2c3feede848c21750690df1b3 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:10:28 +0000 Subject: [PATCH 10/17] Reach the reused 1:1 widgets through public files, as the layer check asks. --- lib/src/view/chat/message_widgets.dart | 6 ++++++ lib/src/view/chat_list/chat_row.dart | 5 +++++ lib/src/view/groups/group_chat_screen.dart | 2 +- lib/src/view/groups/group_message_row.dart | 2 +- lib/src/view/groups/group_tile.dart | 2 +- 5 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 lib/src/view/chat/message_widgets.dart create mode 100644 lib/src/view/chat_list/chat_row.dart diff --git a/lib/src/view/chat/message_widgets.dart b/lib/src/view/chat/message_widgets.dart new file mode 100644 index 0000000..e1ba37b --- /dev/null +++ b/lib/src/view/chat/message_widgets.dart @@ -0,0 +1,6 @@ +/// The message widgets other conversation screens reuse: a group conversation +/// is drawn with the same bubble and day separator as a 1:1 chat. +library; + +export 'package:fireplace/src/view/chat/widgets/day_separator.dart'; +export 'package:fireplace/src/view/chat/widgets/message_bubble.dart'; diff --git a/lib/src/view/chat_list/chat_row.dart b/lib/src/view/chat_list/chat_row.dart new file mode 100644 index 0000000..385c323 --- /dev/null +++ b/lib/src/view/chat_list/chat_row.dart @@ -0,0 +1,5 @@ +/// The 1:1 row and its unread count, for other rows in the list (a group's) +/// that share its measurements. +library; + +export 'package:fireplace/src/view/chat_list/widgets/chat_tile.dart'; diff --git a/lib/src/view/groups/group_chat_screen.dart b/lib/src/view/groups/group_chat_screen.dart index df27618..95c7537 100644 --- a/lib/src/view/groups/group_chat_screen.dart +++ b/lib/src/view/groups/group_chat_screen.dart @@ -12,7 +12,7 @@ import 'package:fireplace/src/view/chat/chat_composer.dart'; import 'package:fireplace/src/view/chat/message_actions.dart'; import 'package:fireplace/src/view/chat/message_menu_parts.dart'; import 'package:fireplace/src/view/chat/message_reactions.dart'; -import 'package:fireplace/src/view/chat/widgets/day_separator.dart'; +import 'package:fireplace/src/view/chat/message_widgets.dart'; import 'package:fireplace/src/view/groups/group_info_screen.dart'; import 'package:fireplace/src/view/groups/group_message_row.dart'; import 'package:fireplace/src/widgets/app_bar.dart'; diff --git a/lib/src/view/groups/group_message_row.dart b/lib/src/view/groups/group_message_row.dart index 950f5e9..f6b9d54 100644 --- a/lib/src/view/groups/group_message_row.dart +++ b/lib/src/view/groups/group_message_row.dart @@ -8,7 +8,7 @@ import 'package:fireplace/src/styles/chat_colors.dart'; import 'package:fireplace/src/styles/design_tokens.dart'; import 'package:fireplace/src/view/chat/message_actions.dart'; import 'package:fireplace/src/view/chat/message_reactions.dart'; -import 'package:fireplace/src/view/chat/widgets/message_bubble.dart'; +import 'package:fireplace/src/view/chat/message_widgets.dart'; import 'package:fireplace/src/widgets/avatar.dart'; /// Layout shared by the rows of a group conversation. diff --git a/lib/src/view/groups/group_tile.dart b/lib/src/view/groups/group_tile.dart index 9fe4788..aadce75 100644 --- a/lib/src/view/groups/group_tile.dart +++ b/lib/src/view/groups/group_tile.dart @@ -8,7 +8,7 @@ import 'package:fireplace/src/model/chat/message_format.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/styles/design_tokens.dart'; import 'package:fireplace/src/view/chat_list/chat_list_stamp.dart'; -import 'package:fireplace/src/view/chat_list/widgets/chat_tile.dart'; +import 'package:fireplace/src/view/chat_list/chat_row.dart'; import 'package:fireplace/src/view/groups/group_avatar.dart'; import 'package:fireplace/src/view/groups/group_message_row.dart'; From a599941b3785b74cb56ef351815c4a53963f9e17 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:24:49 +0000 Subject: [PATCH 11/17] Groups: open the conversation on Join, and ask once for colours a phone lacks. Found on the emulator: Join left the person on Message requests, and a group from before members answered a newcomer kept showing them in Stone. --- lib/src/model/groups/group_service.dart | 32 +++++++++++++++++++ .../view/groups/group_invitation_card.dart | 24 +++++++++++++- test/model/groups/group_service_test.dart | 30 +++++++++++++++++ test/view/groups/group_screens_test.dart | 3 ++ 4 files changed, 88 insertions(+), 1 deletion(-) diff --git a/lib/src/model/groups/group_service.dart b/lib/src/model/groups/group_service.dart index c9f692d..32ffe64 100644 --- a/lib/src/model/groups/group_service.dart +++ b/lib/src/model/groups/group_service.dart @@ -44,7 +44,9 @@ class GroupService { SendAllowance? allowance, Duration? requestTimeout, DateTime Function()? clock, + Duration colourCatchUp = const Duration(seconds: 5), }) : _db = db, + _colourCatchUp = colourCatchUp, _allowance = allowance ?? SendAllowance(), _now = clock ?? DateTime.now, _requests = GroupRequests(db, uid, timeout: requestTimeout); @@ -58,6 +60,7 @@ class GroupService { final SendAllowance _allowance; final DateTime Function() _now; final GroupRequests _requests; + final Duration _colourCatchUp; late GroupRecordFile _file; late GroupCrypto _crypto; @@ -84,6 +87,8 @@ class GroupService { // removing them: tells a removal's line which words to use. final _departures = >{}; final _removalLines = >{}; + // Groups whose members have been asked for their colours since the app started. + final _askedColours = {}; String get deviceId => _device.keys.deviceId; @@ -281,6 +286,7 @@ class GroupService { _joining.remove(gid); // Joined on another of this account's devices, or before a reinstall. if (!_groups.containsKey(gid) && await _joinFromWelcome(gid)) { + _askedColours.add(gid); unawaited(_sendProfile(gid, hello: true)); } if (_groups.containsKey(gid)) { @@ -634,6 +640,7 @@ class GroupService { Future _maintain(String gid, Map roster) async { final info = _groups[gid]; if (info == null || _pending.contains(gid)) return; + _catchUpColours(gid); final fence = (roster['fence'] as List?)?.cast() ?? const []; if (fence.isNotEmpty) { final members = @@ -922,6 +929,30 @@ class GroupService { } } + /// Asks a group's members for their colours when this phone lacks one: a + /// group from before colours were answered, or a colour sent while this + /// phone could not read it. Once per group each time the app starts, and + /// only after a pause, so a newcomer's own `hello` usually settles it first. + /// It costs one message here and one from each member (at most 16). + void _catchUpColours(String gid) { + if (_askedColours.contains(gid)) return; + bool missing() { + final members = _rosters[gid]?['members']; + final have = _colors[gid] ?? const {}; + return members is Map && + members.keys.any((u) => u != uid && !have.containsKey(u)); + } + + if (!missing()) return; + _askedColours.add(gid); + unawaited( + Future.delayed(_colourCatchUp, () async { + if (_closed || !_groups.containsKey(gid) || !missing()) return; + await _sendProfile(gid, hello: true); + }), + ); + } + /// Says, inside the group, why someone is about to go. Best effort: without /// it the line reads "is no longer in the group". Future _sendNotice(String gid, Map notice) async { @@ -1138,6 +1169,7 @@ class GroupService { rethrow; } // The group stays exempt from the server's list until it appears there. + _askedColours.add(gid); unawaited(_sendProfile(gid, hello: true)); } diff --git a/lib/src/view/groups/group_invitation_card.dart b/lib/src/view/groups/group_invitation_card.dart index f737237..21bfb36 100644 --- a/lib/src/view/groups/group_invitation_card.dart +++ b/lib/src/view/groups/group_invitation_card.dart @@ -1,9 +1,12 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fireplace/src/app/group_providers.dart'; import 'package:fireplace/src/app/providers.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; import 'package:fireplace/src/view/groups/group_avatar.dart'; +import 'package:fireplace/src/view/groups/group_chat_screen.dart'; import 'package:fireplace/src/widgets/status.dart'; /// An invitation to a group, with Join and Decline. The group's name is @@ -88,7 +91,26 @@ class _GroupInvitationCardState extends ConsumerState { key: const Key('joinGroup'), onPressed: _busy || service == null ? null - : () => _run(service.accept), + : () async { + // Joining takes the card away, so keep what opening + // the group needs. + final navigator = Navigator.of(context); + final gid = widget.invitation.gid; + var joined = false; + await _run((g) async { + await service.accept(g); + joined = true; + }); + if (!joined) return; + // Straight into the conversation, as the owner asked. + unawaited( + navigator.push( + MaterialPageRoute( + builder: (_) => GroupChatScreen(gid: gid), + ), + ), + ); + }, child: const Text('Join'), ), ], diff --git a/test/model/groups/group_service_test.dart b/test/model/groups/group_service_test.dart index f8b7535..862cc6c 100644 --- a/test/model/groups/group_service_test.dart +++ b/test/model/groups/group_service_test.dart @@ -454,6 +454,36 @@ void main() { await carol.service.close(); }); + test("a phone that lacks a member's colour asks for it once", () async { + alice.service.ownColor = 'plum'; + final gid = await bookClub(); + await until( + () async => bob.service.colorsOf(gid)['alice'] == 'plum', + what: 'the colour', + ); + // Bob's phone as it was before members answered a newcomer: it joined, and + // nobody's colour ever arrived. + await bob.service.close(); + await bob.secrets.delete('groupcolors:bob'); + final again = GroupService( + db: db, + uid: 'bob', + device: await KeyService(db, bob.secrets).ensureDevice('bob'), + secrets: bob.secrets, + historyDir: Directory('${root.path}/bob'), + messages: bob.messages, + colourCatchUp: const Duration(milliseconds: 100), + ); + await again.start(); + expect(again.colorsOf(gid), isEmpty); + await until( + () async => again.colorsOf(gid)['alice'] == 'plum', + what: 'the colour, asked for', + ); + await again.close(); + bob = await Phone.create(FakeFirebaseFirestore(), 'bob2', root); + }); + test('changes to the group are written into the history as lines', () async { final gid = await bookClub(); for (final p in [alice, bob]) { diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart index 64a8ee3..f0bb734 100644 --- a/test/view/groups/group_screens_test.dart +++ b/test/view/groups/group_screens_test.dart @@ -280,6 +280,9 @@ void main() { () => find.byKey(Key('groupInvite_$gid')).evaluate().isEmpty, ); expect(alice.service.groups[gid]!.name, 'Tea club'); + // Join goes straight into the conversation. + await settle(t, () => find.byType(GroupChatScreen).evaluate().isNotEmpty); + expect(find.text('Tea club'), findsOneWidget); await tearDownPhones(t); }); From 243292b62ce4afd82e2ae65c6164d19318119920 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:26:06 +0000 Subject: [PATCH 12/17] Use an initializing formal for the colour catch-up pause. --- lib/src/model/groups/group_service.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/src/model/groups/group_service.dart b/lib/src/model/groups/group_service.dart index 32ffe64..373d0bc 100644 --- a/lib/src/model/groups/group_service.dart +++ b/lib/src/model/groups/group_service.dart @@ -44,9 +44,8 @@ class GroupService { SendAllowance? allowance, Duration? requestTimeout, DateTime Function()? clock, - Duration colourCatchUp = const Duration(seconds: 5), + this._colourCatchUp = const Duration(seconds: 5), }) : _db = db, - _colourCatchUp = colourCatchUp, _allowance = allowance ?? SendAllowance(), _now = clock ?? DateTime.now, _requests = GroupRequests(db, uid, timeout: requestTimeout); From 3d9d563f24c4d85122b2c2cd0f7c00e545f3557d Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:30:24 +0000 Subject: [PATCH 13/17] Groups: a circle for the group's avatar, like a person's (owner's choice). --- docs/decisions/0050-group-chats.md | 4 ++- docs/protocol/group-chats-v1.md | 5 ++-- lib/src/view/groups/group_avatar.dart | 37 ++++++--------------------- lib/src/view/groups/group_tile.dart | 6 ++--- 4 files changed, 17 insertions(+), 35 deletions(-) diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index 30be1c3..236ebee 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -165,7 +165,9 @@ nothing from before the time the server recorded the join. ### The same look as 1:1 chats The group row reuses the 1:1 row's layout (avatar size, bold name, date, two-line -preview, hairline), keeping the rounded-square letter. The conversation reuses the +preview, hairline). Its avatar is a **circle** with the group's initial, like a +person's: the owner changed this from the first version's rounded square after +seeing it on the emulator (2026-11-14). The conversation reuses the 1:1 bubble, held-message menu, reactions, day separators and composer, and editing happens in the composer, not a dialog. The differences are the sender's name above the first bubble of a run, their avatar beside the last, and the colours. diff --git a/docs/protocol/group-chats-v1.md b/docs/protocol/group-chats-v1.md index 361b679..8cac4c6 100644 --- a/docs/protocol/group-chats-v1.md +++ b/docs/protocol/group-chats-v1.md @@ -176,8 +176,9 @@ devices, rechecking fences, as `pushOnMessage` does. group*. *New group* asks for a name (up to 40 characters) and lets you tick people from your accepted chats, at most 15 besides you, then *Create group*. The people are invited, not added: each joins when they accept. -- **In the chat list.** A group's avatar is its name's first letter in a rounded - square, so groups have a different shape from people's round avatars. The preview +- **In the chat list.** A group's avatar is its name's first letter in a circle, + like a person's (the first version used a rounded square; the owner changed it in + round 2). The preview names the sender: *Mira: See you at 7?* A group you've been invited to doesn't appear until you join. - **Invitations** show in both places: diff --git a/lib/src/view/groups/group_avatar.dart b/lib/src/view/groups/group_avatar.dart index 0138b82..bcef354 100644 --- a/lib/src/view/groups/group_avatar.dart +++ b/lib/src/view/groups/group_avatar.dart @@ -1,38 +1,17 @@ import 'package:flutter/material.dart'; -import 'package:fireplace/src/styles/design_tokens.dart'; +import 'package:fireplace/src/widgets/avatar.dart'; -/// A group's avatar: its name's first letter in a rounded square, so groups -/// are a different shape from people's round avatars (owner's choice, 0050). +/// A group's avatar: its name's first letter in a circle, like a person's +/// (owner's choice, 0050 round 2; the first version used a rounded square). class GroupAvatar extends StatelessWidget { const GroupAvatar({super.key, required this.name, this.size = 44}); final String name; final double size; @override - Widget build(BuildContext context) { - final t = FireplaceUiTokens.of(context); - final letter = name.trim().isEmpty - ? '#' - : name.trim().characters.first.toUpperCase(); - return ExcludeSemantics( - child: Container( - width: size, - height: size, - alignment: Alignment.center, - decoration: BoxDecoration( - color: t.selectedRow, - borderRadius: BorderRadius.circular(size * 0.28), - border: Border.all(color: t.accent.withValues(alpha: .35)), - ), - child: Text( - letter, - style: TextStyle( - fontSize: size * 0.42, - fontWeight: FontWeight.w700, - color: t.accentText, - ), - ), - ), - ); - } + Widget build(BuildContext context) => PersonAvatar( + // A group invitation has no name to show until it is joined. + name: name.trim().isEmpty ? '#' : name.trim().characters.first, + size: size, + ); } diff --git a/lib/src/view/groups/group_tile.dart b/lib/src/view/groups/group_tile.dart index aadce75..a0e6e52 100644 --- a/lib/src/view/groups/group_tile.dart +++ b/lib/src/view/groups/group_tile.dart @@ -13,9 +13,9 @@ import 'package:fireplace/src/view/groups/group_avatar.dart'; import 'package:fireplace/src/view/groups/group_message_row.dart'; /// A group in the chat list. The row is a 1:1 row (the same avatar size, bold -/// name, date, two-line preview, unread count and spacing) with two -/// differences: the avatar is the group's rounded square, and the preview -/// names who wrote the newest message ("Mira: See you at 7?"). +/// name, date, two-line preview, unread count and spacing) with one +/// difference: the preview names who wrote the newest message +/// ("Mira: See you at 7?"). The avatar is a circle with the group's initial. class GroupTile extends ConsumerWidget { const GroupTile({super.key, required this.group, required this.onOpen}); final GroupInfo group; From 30973188dfb283a8071f15d0673f09d5750989ba Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:54:01 +0000 Subject: [PATCH 14/17] Groups: mute a group on this phone, like a 1:1 chat. Hold the row or use Group info. The mute is kept with the 1:1 mutes and never leaves the phone. A muted group keeps its count on the row, in grey, and is left out of the app icon's badge, which now counts group messages too. --- docs/decisions/0050-group-chats.md | 10 ++- lib/src/app/group_providers.dart | 34 ++++++++ lib/src/model/notifications/app_badge.dart | 13 +++- lib/src/view/groups/group_info_screen.dart | 16 ++++ lib/src/view/groups/group_tile.dart | 91 +++++++++++++++++++--- test/view/groups/group_screens_test.dart | 55 +++++++++++++ 6 files changed, 204 insertions(+), 15 deletions(-) diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index 236ebee..04488bc 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -176,7 +176,11 @@ the first bubble of a run, their avatar beside the last, and the colours. - **Unread count** on the group row, counted on the phone from the local history with the same per-chat record of what has been shown as 1:1 chats. No server - field and no read receipt. + field and no read receipt. Group messages count on the app icon's badge too. +- **Muting a group** works as for a 1:1 chat: hold the row, or use *Group info*. + It is kept on the phone with the 1:1 mutes; the server and the other members + are not told. A muted group keeps its count on the row, in grey, and is left + out of the app icon's badge. Pushes are unchanged, as for a muted 1:1 chat. - **Lines in the conversation**, small and centred: *alice added bob_jones*, *mira left*, *alice removed mira*, *alice made bob_jones an administrator*, *alice renamed the group*. They are built on the phone from the MLS state before @@ -211,7 +215,8 @@ Rust core): joining with the inviter's phone off, key packages run out, expiry, decline, removing someone invited, colours for a later joiner, each line, roles, and a refused role change. `test/view/groups/group_screens_test.dart` (11): the 1:1 menu and composer editing, colours of bubbles, names and avatars, the lines, -the start-of-history line, the unread count, Make administrator, and *Invited*. +the start-of-history line, the unread count, muting, Make administrator, and +*Invited*. `scripts/render/render_groups_test.dart` renders the screens for review. ### Not in this round @@ -220,7 +225,6 @@ the start-of-history line, the unread count, Make administrator, and *Invited*. requests). - `addDevice` from the app. - The group's name in the invitation push. -- Group unread counts in the app icon's badge, and muting a group. ## Spike results diff --git a/lib/src/app/group_providers.dart b/lib/src/app/group_providers.dart index 80f305e..1021383 100644 --- a/lib/src/app/group_providers.dart +++ b/lib/src/app/group_providers.dart @@ -106,6 +106,40 @@ final groupUnreadProvider = Provider.autoDispose.family(( return incoming.where((m) => !seen.contains(m)).length; }); +/// Whether this phone has muted a group. Kept with the 1:1 mutes, on the +/// phone only: the server and the other members never learn of it. +final groupMutedProvider = Provider.autoDispose.family(( + ref, + gid, +) { + final prefs = ref.watch(appSessionProvider).value?.chatPreferences; + if (prefs == null) return false; + final changes = prefs.changes.listen((_) => ref.invalidateSelf()); + ref.onDispose(changes.cancel); + return prefs.muted.contains(groupChatId(gid)); +}); + +/// Unread group messages for the app icon's badge: muted groups excluded, as +/// muted 1:1 chats are. +final groupsBadgeProvider = Provider.autoDispose((ref) { + var total = 0; + for (final gid in (ref.watch(groupsProvider).value ?? const {}).keys) { + if (!ref.watch(groupMutedProvider(gid))) { + total += ref.watch(groupUnreadProvider(gid)); + } + } + return total; +}); + +/// Mutes or unmutes a group on this phone. +Future setGroupMuted(WidgetRef ref, String gid, bool muted) async { + await ref + .read(appSessionProvider) + .value + ?.chatPreferences + .mute(groupChatId(gid), muted); +} + /// Shares a new primary colour with every group when it changes in Settings. final groupColorSyncProvider = Provider((ref) { ref.listen(chatBubbleColorsProvider, (before, after) { diff --git a/lib/src/model/notifications/app_badge.dart b/lib/src/model/notifications/app_badge.dart index eb8aec1..0b44a62 100644 --- a/lib/src/model/notifications/app_badge.dart +++ b/lib/src/model/notifications/app_badge.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fireplace/src/app/group_providers.dart'; import 'package:fireplace/src/app/providers.dart'; import 'package:fireplace/src/model/notifications/chat_activity.dart'; import 'package:fireplace/src/model/notifications/system_notifications.dart'; @@ -19,6 +20,7 @@ final appBadgeProvider = Provider((ref) { final count = appBadgeCount( ref.read(appSessionProvider), ref.read(chatActivityProvider), + groups: ref.read(groupsBadgeProvider), ); if (count == null || count == shown) return; shown = count; @@ -27,15 +29,22 @@ final appBadgeProvider = Provider((ref) { } ref.listen(appSessionProvider, (_, _) => update()); + ref.listen(groupsBadgeProvider, (_, _) => update()); ref.listen(chatActivityProvider, (_, _) => update(), fireImmediately: true); }); /// The badge to show, or null to leave it as it is. While the session is /// starting (or failed) or history is still loading, the old badge stays: /// dropping it to zero at every launch would also clear unseen alerts. -int? appBadgeCount(AsyncValue session, ChatActivityState activity) { +/// +/// [groups] is the unread total of group chats that are not muted. +int? appBadgeCount( + AsyncValue session, + ChatActivityState activity, { + int groups = 0, +}) { if (session.isLoading || session.hasError) return null; if (session.value == null) return 0; // signed out if (activity.loading) return null; - return activity.badgeCount; + return activity.badgeCount + groups; } diff --git a/lib/src/view/groups/group_info_screen.dart b/lib/src/view/groups/group_info_screen.dart index 40ba85f..2b18ea5 100644 --- a/lib/src/view/groups/group_info_screen.dart +++ b/lib/src/view/groups/group_info_screen.dart @@ -177,6 +177,7 @@ class _GroupInfoScreenState extends ConsumerState { ); } final admin = group.isAdmin(me); + final muted = ref.watch(groupMutedProvider(widget.gid)); final invited = ref.watch(groupInvitedProvider(widget.gid)).value ?? const {}; final members = [ @@ -225,6 +226,21 @@ class _GroupInfoScreenState extends ConsumerState { subtitle: const Text('They choose whether to join'), onTap: () => _addPeople(group), ), + ListTile( + key: const Key('muteGroup'), + leading: Icon( + muted + ? Icons.notifications_off_outlined + : Icons.notifications_outlined, + ), + title: Text(muted ? 'Unmute' : 'Mute'), + subtitle: Text( + muted + ? 'Its unread messages are not counted on the app icon.' + : 'Only on this phone. Nobody in the group is told.', + ), + onTap: () => _run(() => setGroupMuted(ref, widget.gid, !muted)), + ), if (admin) ListTile( key: const Key('renameGroup'), diff --git a/lib/src/view/groups/group_tile.dart b/lib/src/view/groups/group_tile.dart index a0e6e52..0dd8d53 100644 --- a/lib/src/view/groups/group_tile.dart +++ b/lib/src/view/groups/group_tile.dart @@ -21,9 +21,58 @@ class GroupTile extends ConsumerWidget { final GroupInfo group; final VoidCallback onOpen; + Future _toggleMute( + BuildContext context, + WidgetRef ref, + bool muted, + ) async { + try { + await setGroupMuted(ref, group.gid, !muted); + } catch (_) { + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Could not save the mute preference. Try again.'), + ), + ); + } + } + } + + /// The same menu a 1:1 row opens when it is held. + Future _showActions( + BuildContext context, + WidgetRef ref, + bool muted, + Offset? at, + ) async { + final box = context.findRenderObject()! as RenderBox; + final overlay = + Overlay.of(context).context.findRenderObject()! as RenderBox; + final point = at ?? box.localToGlobal(box.size.center(Offset.zero)); + final chosen = await showMenu( + context: context, + position: RelativeRect.fromRect( + point & Size.zero, + Offset.zero & overlay.size, + ), + items: [ + PopupMenuItem( + value: 'mute', + child: Text(muted ? 'Unmute chat' : 'Mute chat'), + ), + ], + ); + if (chosen == 'mute' && context.mounted) { + await _toggleMute(context, ref, muted); + } + } + @override Widget build(BuildContext context, WidgetRef ref) { final t = FireplaceUiTokens.of(context); + final muted = ref.watch(groupMutedProvider(group.gid)); + var pressedAt = Offset.zero; final messages = ref.watch(groupMessagesProvider(group.gid)).value ?? const []; @@ -61,6 +110,10 @@ class GroupTile extends ConsumerWidget { return InkWell( key: Key('group_${group.gid}'), onTap: onOpen, + onTapDown: (details) => pressedAt = details.globalPosition, + onLongPress: () => _showActions(context, ref, muted, pressedAt), + onSecondaryTapUp: (details) => + _showActions(context, ref, muted, details.globalPosition), child: Padding( padding: const EdgeInsets.symmetric(horizontal: ChatTile.edge), child: Row( @@ -88,16 +141,33 @@ class GroupTile extends ConsumerWidget { textBaseline: TextBaseline.alphabetic, children: [ Expanded( - child: Text( - group.name, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 16, - height: 1.2, - fontWeight: FontWeight.w600, - color: t.text, - ), + child: Row( + children: [ + Flexible( + child: Text( + group.name, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 16, + height: 1.2, + fontWeight: FontWeight.w600, + color: t.text, + ), + ), + ), + if (muted) + Padding( + padding: const EdgeInsets.only(left: 6), + child: Icon( + Icons.notifications_off, + key: ValueKey('muted-${group.chatId}'), + size: scaler.scale(12), + color: t.secondaryText, + semanticLabel: 'Muted', + ), + ), + ], ), ), if (last != null) @@ -154,6 +224,7 @@ class GroupTile extends ConsumerWidget { child: UnreadCount( key: ValueKey('unread-${group.chatId}'), count: unread, + muted: muted, ), ), ], diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart index f0bb734..74d2405 100644 --- a/test/view/groups/group_screens_test.dart +++ b/test/view/groups/group_screens_test.dart @@ -393,11 +393,63 @@ void main() { await tearDownPhones(t); }); + testWidgets('a group can be muted on this phone, like a 1:1 chat', (t) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await pump(t, const ChatListScreen()); + await settle(t, () => find.text('Book club').evaluate().isNotEmpty); + final container = ProviderScope.containerOf( + t.element(find.byType(ChatListScreen)), + ); + final mark = find.byKey(ValueKey('muted-group-$gid')); + expect(mark, findsNothing); + await t.runAsync(() => bob.service.send(gid, 'one')); + await settle(t, () => container.read(groupsBadgeProvider) == 1); + + // Holding the row offers the same choice as a 1:1 row. + await t.longPress(find.byKey(Key('group_$gid'))); + await t.pumpAndSettle(); + await t.tap(find.text('Mute chat')); + await settle(t, () => mark.evaluate().isNotEmpty); + // Still counted on the row, but no longer on the app icon. + expect(find.byKey(ValueKey('unread-group-$gid')), findsOneWidget); + expect(container.read(groupsBadgeProvider), 0); + expect(container.read(groupMutedProvider(gid)), isTrue); + + await t.longPress(find.byKey(Key('group_$gid'))); + await t.pumpAndSettle(); + await t.tap(find.text('Unmute chat')); + await settle(t, () => mark.evaluate().isEmpty); + expect(container.read(groupsBadgeProvider), 1); + await tearDownPhones(t); + }); + + testWidgets('Group info mutes and unmutes the group', (t) async { + await setUpPhones(t); + final gid = await bookClub(t, alice, bob); + await pump(t, GroupInfoScreen(gid: gid)); + final container = ProviderScope.containerOf( + t.element(find.byType(GroupInfoScreen)), + ); + expect(find.text('Mute'), findsOneWidget); + await t.tap(find.byKey(const Key('muteGroup'))); + await settle(t, () => find.text('Unmute').evaluate().isNotEmpty); + expect(container.read(groupMutedProvider(gid)), isTrue); + await t.tap(find.byKey(const Key('muteGroup'))); + await settle(t, () => find.text('Mute').evaluate().isNotEmpty); + expect(container.read(groupMutedProvider(gid)), isFalse); + await tearDownPhones(t); + }); + testWidgets('an administrator makes a member an administrator', (t) async { await setUpPhones(t); final gid = await bookClub(t, alice, bob); await pump(t, GroupInfoScreen(gid: gid)); expect(find.text('Administrator'), findsOneWidget); + // The row is below the fold: bring all of it on screen before tapping. + await t.scrollUntilVisible(find.byKey(const Key('member_bob')), 200); + await t.ensureVisible(find.byKey(const Key('member_bob'))); + await t.pumpAndSettle(); await t.tap(find.byKey(const Key('member_bob'))); await t.pumpAndSettle(); expect(find.byKey(const Key('removeAdmin')), findsNothing); @@ -405,6 +457,8 @@ void main() { await settle(t, () => alice.service.groups[gid]!.isAdmin('bob')); await settle(t, () => find.text('Administrator').evaluate().length == 2); // Now the choice is to take it away again. + await t.ensureVisible(find.byKey(const Key('member_bob'))); + await t.pumpAndSettle(); await t.tap(find.byKey(const Key('member_bob'))); await t.pumpAndSettle(); expect(find.byKey(const Key('removeAdmin')), findsOneWidget); @@ -447,6 +501,7 @@ void main() { t, () => find.byKey(const Key('invitedHeader')).evaluate().isEmpty, ); + await t.scrollUntilVisible(find.textContaining('2 people'), -200); expect(find.textContaining('2 people'), findsOneWidget); await tearDownPhones(t); }); From 01c64806cf1640daaf55b95a497fb3389b7b13a8 Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 09:54:09 +0000 Subject: [PATCH 15/17] Point the group note at the issue for the in-chat invitation card. --- docs/decisions/0050-group-chats.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index 04488bc..5044f26 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -222,7 +222,7 @@ the start-of-history line, the unread count, muting, Make administrator, and ### Not in this round - The invitation card inside the 1:1 chat with the inviter (it shows in Message - requests). + requests): [issue #164](https://github.com/fireplacechat/mobile/issues/164). - `addDevice` from the app. - The group's name in the invitation push. From ded898708aee7bcd4379a170026325e616e9bfce Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 10:17:19 +0000 Subject: [PATCH 16/17] Add previews of the group screens, and say what changed in plain words. The notes and comments named the second set of changes by a working label that means nothing to a reader. --- docs/decisions/0050-group-chats.md | 7 ++--- docs/protocol/group-chats-v1.md | 8 +++--- docs/reviews/group-chats/README.md | 25 ++++++++++++++++++ .../group-chats/dark-conversation-editing.png | Bin 0 -> 104951 bytes .../group-chats/dark-conversation-menu.png | Bin 0 -> 218399 bytes .../reviews/group-chats/dark-conversation.png | Bin 0 -> 100877 bytes docs/reviews/group-chats/dark-info.png | Bin 0 -> 84978 bytes .../reviews/group-chats/dark-joined-later.png | Bin 0 -> 46815 bytes docs/reviews/group-chats/dark-list.png | Bin 0 -> 95249 bytes .../light-conversation-editing.png | Bin 0 -> 103674 bytes .../group-chats/light-conversation-menu.png | Bin 0 -> 223283 bytes .../group-chats/light-conversation.png | Bin 0 -> 99670 bytes docs/reviews/group-chats/light-info.png | Bin 0 -> 81809 bytes .../group-chats/light-joined-later.png | Bin 0 -> 45859 bytes docs/reviews/group-chats/light-list.png | Bin 0 -> 96478 bytes lib/src/model/groups/group_models.dart | 2 +- lib/src/model/groups/group_service.dart | 4 +-- lib/src/view/groups/group_avatar.dart | 2 +- test/model/groups/group_service_test.dart | 2 +- test/view/groups/group_screens_test.dart | 2 +- 20 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 docs/reviews/group-chats/README.md create mode 100644 docs/reviews/group-chats/dark-conversation-editing.png create mode 100644 docs/reviews/group-chats/dark-conversation-menu.png create mode 100644 docs/reviews/group-chats/dark-conversation.png create mode 100644 docs/reviews/group-chats/dark-info.png create mode 100644 docs/reviews/group-chats/dark-joined-later.png create mode 100644 docs/reviews/group-chats/dark-list.png create mode 100644 docs/reviews/group-chats/light-conversation-editing.png create mode 100644 docs/reviews/group-chats/light-conversation-menu.png create mode 100644 docs/reviews/group-chats/light-conversation.png create mode 100644 docs/reviews/group-chats/light-info.png create mode 100644 docs/reviews/group-chats/light-joined-later.png create mode 100644 docs/reviews/group-chats/light-list.png diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index 5044f26..b723d24 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -1,6 +1,7 @@ # 0050: Group chats: profile, delivery and limits -Date: 2026-11-14, amended the same day (*Round 2*, below). Status: **decisions +Date: 2026-11-14, amended the same day (*Changes after the first emulator test*, +below). Status: **decisions accepted by the owner; implementation gated** (see the end). Develops [0036](0036-groups-use-mls.md). The full proposal, written with GPT, is [protocol/group-chat-design.md](../protocol/group-chat-design.md); this note records the owner's choices and **amends the proposal's delivery path**. Where @@ -24,7 +25,7 @@ The interfaces, Firestore schema, rules, function and screens are specified in |---|---| | Create a group | anyone (5 a day; at most 32 groups per account) | | Invite someone | **any member**, but only a person they already have an accepted 1:1 chat with; the backend function checks this. The invitee must accept. | -| Add the invited person to MLS | the inviter's device, **when it sends the invitation** (round 2). Joining then needs no other phone. | +| Add the invited person to MLS | the inviter's device, **when it sends the invitation** (amended; see below). Joining then needs no other phone. | | Remove someone, change roles | administrators | | Rename | administrators; other members' phones refuse anyone else's rename | | Leave | anyone, at any time | @@ -94,7 +95,7 @@ document. So: Membership changes cost more under either plan and are rare. -## Round 2 (owner's test, 2026-11-14) +## Changes after the first emulator test (2026-11-14) The owner tried groups on the Android emulator and asked for six changes. Backend decision 0023 has the server side. diff --git a/docs/protocol/group-chats-v1.md b/docs/protocol/group-chats-v1.md index 8cac4c6..b4ee7d8 100644 --- a/docs/protocol/group-chats-v1.md +++ b/docs/protocol/group-chats-v1.md @@ -1,7 +1,7 @@ # Group chats, version 1: specification Date: 2026-11-14. Status: **design for review**; sections 2 to 4 were amended by -*Round 2* of decision 0050 (the invitation carries the Add; `hello` profiles; +*Changes after the first emulator test* in decision 0050 (the invitation carries the Add; `hello` profiles; lines; roles), and where they differ that note and backend 0023 win. Implements [decision 0050](../decisions/0050-group-chats.md) and the [proposal](group-chat-design.md) it amends. Fixes the interfaces three pieces of @@ -129,7 +129,7 @@ challenge, roles and limits. | Operation | Who | What the transaction does | |---|---|---| | `create` | any account (5 a day) | `groups/{gid}`, creator as administrator, `groupRefs` | -| `invite(uid, devices, epoch, commit, welcome, packages)` | any member's device | needs an accepted 1:1 chat between the two; refused if either has blocked the other; at most 20 pending per recipient. Checks `epoch`, consumes the packages, writes the Commit and the Welcome, records the account in `invited`, and raises `epoch`, all at once (round 2) | +| `invite(uid, devices, epoch, commit, welcome, packages)` | any member's device | needs an accepted 1:1 chat between the two; refused if either has blocked the other; at most 20 pending per recipient. Checks `epoch`, consumes the packages, writes the Commit and the Welcome, records the account in `invited`, and raises `epoch`, all at once | | `accept` | the invitee | moves the account from `invited` to `members`, writes `groupRefs` with `joinedAt`. No Commit | | `decline`, `expire(uid)` | the invitee; any member after 7 days | removes the account from `invited` and fences its devices | | `roles(admins, epoch, commit)` | administrator | the Commit carrying the new list; sets each member's `role` | @@ -178,7 +178,7 @@ devices, rechecking fences, as `pushOnMessage` does. are invited, not added: each joins when they accept. - **In the chat list.** A group's avatar is its name's first letter in a circle, like a person's (the first version used a rounded square; the owner changed it in - round 2). The preview + the emulator test). The preview names the sender: *Mira: See you at 7?* A group you've been invited to doesn't appear until you join. - **Invitations** show in both places: @@ -204,7 +204,7 @@ devices, rechecking fences, as `pushOnMessage` does. - A member's colour is shared only inside the group, as an encrypted `profile` message (`type: profile, color`) sent on joining and whenever they change it. The server never stores it, and 1:1 chats are unchanged. A newcomer's is marked - `hello: true`, and each member answers it with their own (round 2). + `hello: true`, and each member answers it with their own. - `type: notice` messages (`kind: left`, or `kind: removing, uid` from an administrator) say why a removal is about to happen, for the line it shows. - A member whose colour hasn't arrived yet shows in Stone. diff --git a/docs/reviews/group-chats/README.md b/docs/reviews/group-chats/README.md new file mode 100644 index 0000000..b5233a1 --- /dev/null +++ b/docs/reviews/group-chats/README.md @@ -0,0 +1,25 @@ +# Group chats: screen previews + +Widget renders of the group screens (decision [0050](../../decisions/0050-group-chats.md)), +in both themes, at 390 x 844 points. They are produced by + +```sh +bash scripts/build_crypto_host.sh +TZ=UTC flutter test scripts/render/render_groups_test.dart +``` + +which runs real group services over the Rust MLS core, so times and ids differ +between runs. The names and messages are fictional. These are renders, not device +screenshots. + +| State | Light | Dark | +|---|---|---| +| Chat list: groups beside 1:1 chats, with unread counts | [light-list.png](light-list.png) | [dark-list.png](dark-list.png) | +| Conversation: names, avatars and colours per member; lines for changes | [light-conversation.png](light-conversation.png) | [dark-conversation.png](dark-conversation.png) | +| Held message: the 1:1 menu and reactions | [light-conversation-menu.png](light-conversation-menu.png) | [dark-conversation-menu.png](dark-conversation-menu.png) | +| Editing in the composer | [light-conversation-editing.png](light-conversation-editing.png) | [dark-conversation-editing.png](dark-conversation-editing.png) | +| Someone who joined later | [light-joined-later.png](light-joined-later.png) | [dark-joined-later.png](dark-joined-later.png) | +| Group info: mute, members, roles, people invited | [light-info.png](light-info.png) | [dark-info.png](dark-info.png) | + +The reaction bar in the held-message previews shows empty boxes: the SDK preview +font has no emoji (see `scripts/render/README.md`). diff --git a/docs/reviews/group-chats/dark-conversation-editing.png b/docs/reviews/group-chats/dark-conversation-editing.png new file mode 100644 index 0000000000000000000000000000000000000000..73a66f228aa88e4cfe7df7d51f2c08697354dbe0 GIT binary patch literal 104951 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

`F{*CWo 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 CM_e5M literal 0 HcmV?d00001 diff --git a/docs/reviews/group-chats/dark-conversation-menu.png b/docs/reviews/group-chats/dark-conversation-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..53103d49e7152f29354bf76f8914338dd7689ff7 GIT binary patch literal 218399 zcmXs!bzIa>uwS~4?(XjHZb3=uZjgf`L_j)@R=OLMmTsgw1eETQkd~Hu$M3y&|M0nE zc4l^WdS;_E-za0Elc56ufT^mYpbY>BAOJv4M@5GH!d7D(1^a{OA*ZT~3j6q>+C;*> z!+B^c%K_hhP#gdN4WOzZtLvS8lw;Ud+4k+rreAx`T{8FLGjcrkJEbs;+0>ry+tXG1 z3BXXO5o+7_6!>)dEZziOZt|zMBw`o3-+Rs)2y6CdK5D8mebu;~*KUVdd!&E-BVBNe z(CZq--k(IWnIf1^^c&v0H|2*kfq!iSkx}Y98l_R~!HYk47n-WfAT@`tq<^;+J>{LQ zE8l<6e_Af=^=Y3NKds`@=48CaXvJpz)m!hYzWDbb9L7GtGyGhfl7J&zbVT89L~v2J zwq}5~yf(5F!T%ZQ6aNcDZUhU-H#+{KOtRjLI*gc_`^PKy=)c#!=jRgH$;1ySw{;BT^SWpDN0E455 z9=$@CKf@h*!d5iG`z1>?grqjijEHv%2pRl1X$s4WDaOYTgco@AulS(8q<9UIWpyU@ z%o(^e)%>4GwMV@2y*P95vKB*xJ{(6*9iouVlo0CVF+~M<~WC zHn!&YLL7+FC54XNpN?bZ`}#;qcDdnN<`QPt@-I80{lc1(DT=aMe0>Gd5WA-k%C$S% zn!fJjn|@gqq;qF3pt}Q4=mFqocWsQlB7w3vN_n}nnr_6xJkiW(Wjha1+Hymsjo zM`KiVWo*9xrSVk**#c=o_UKgSkTCHJZGHUAzKuj+mxa>+TbzP5)f8e+>$2OS3Sz4}67P)Gw>q`D{t!J-Q=r=)WMUT&GFDg zZ42L~JumO)i*NJOdpLC$h^C~MmoE}$p=A;x8|}~kQJ%gpL8%U-u}Xs@td8+Sh>%70 z3l}zWauDC2Vbe&*N@g#j2&UuZChBX~rdIGz4Dm5pn-}sMh#DFEze6&*YZ$gg>wm?(r`8dvmIIZ%9As{& zAy3WbGg@DQ7{1`BJs#d#vJ_3Kx*!H>?~ z+FYFk(Ia-S2ma5PW6K2g2$F*WiwJR_p@Kr1YW;j8A6k2 zyG_q6PI!oR9`5Kh&Ab>Npo;|k^c2v@|Gq#-bzdqk)o~%JnbD2ESdwazJ*xOW{r_QQ zp@KJk=u(rGwlI2CQ571`(%c50Fd&zI0@OurREAV*5}Mf+`*TdRFIn1zTwccSi*=A< zF9y6YVG_zl@*oS5aDIb}gZxfDu{&uLa_gD+4}CU!{{7DiP#JoX1C1ZZmQ;!UH;DIA z_sP}H0Txpi`zP79I;IyIK_6kZy#k@krT^!+_focLiwBRSy$<8ebDp5`dDdr4W9c6(byed#Z(R~> z>^RV#x;tMaxSNvX7AusnT-;#=fb5QUX&MXHeoN|G#G4{C(F;G>&R-$&E8 z(`S05o6EbTANS)vQoitZxAViY#l3R)YzB!gbc$p80`KDudz+ebXi~OdO9UIK-)HCi zd57LRK_Xpxh8K(3eUTx3Aj&yB=1zbSQsIcT`p@(>B~-amfpS;F?8l`WW+H=#F;^vv zhSE~Q*7XaC{JpwnhPWisu*^Y5OrO#2R5uExzh5k7)?{@n{q+O&@7pS|1tBF3JAM%b4xZ~)g1m3-oodeA9lxzwI8y=`P- z>(1gm8xgBHo;h{JxK~iy3zQ63jztUIN;)NU&>efp`%7aOR6=1yQ=|w^xJZ0{87ZQJ z>;-HClOw}&VKPz*zrsLTPfArFawlxLpqjjNwEJ|?DUc^{d0B8JEa5*x4ZK5#jxDrH z&xrW?*PdC{rv8YUG~^F-=F(s^vqSv3+}();!}w;8GKBVfsDJIoM4`S&)vp;jVV$@u?i8&Hzm6RI%CsM+UR48$d+Jji`d)$ z7}S?VM?Q!<<=5QJTw}LFL9@xWmrmIvL~(qrNlD6H;bgT*Z@vSCi&A%o5mdvmmv+^EIpd zT;4Fm8;;q03?tNX!;CnICP=k=I@n5j0U;v{B#(_A>D%=<@QhKy44Z!ciCs!$NHCTz zkK*5h;`iSC7r5$Fy&g&74GO(H`NatepGK|li@s>7wz&Kkr^!z6nBbZ0SHFe_ZJH92 zmeXUAw#jio4#SQ@+`nDH_Xr_6&askboWWvaSp3+FCZEXU>1Ovv8?()iz$stc8-(Dh z7~OhlL%i?VvtTzZuANsOFS02*Vsu5A&W;6J6Z8>}7&M4h_UfFVAq>%cepxQ}p_SGy zIKjXOAEU|4n{Gv)?PMp+KxQ4K6+d_RJ&D+hvkjt959zsr68tjOt7B@mBcSr|zqjD< zXGxq71dA(jq)V;Yi7Y?1Sz6eomVFv>7QI6i7)c9fj1sv>3pUL2nLCNAyk_k$32-A zN~^}y8R)f~&y*LF2-wgE>OxATmEIf9AZ#Tu+O2>HB~JR)%BGQ*^wK6G!kd~)G5X?sjNBjUkC&Hw2U;J z*w4x56mAw69>B8&5upUTGQ9CgTMLiHSN47(wQ(=)UDitaJFEN}1I-AY9D1T1A(fK= z%)~mZe|*L{O8zut%c)c;Um@nMN1IqKx9%M4GB8XV2`&7f4@cql1-^bLVnLHjD5)}8 z?4@bPHxY&=HA=5vS$m@XWV*Ac!&1Mj!kAFnMR)3D+bC8*m`{W&`$#8c_`g@jb4!UV zD@78)7`{RtqkJ@QrZK|jY?UwmX|nk>s-x}rmK*`bRo?j{J^@B?BNx$9xRVISF_s|z z#vQUkJH2u>r#||C>3^zyvm2NIG#}nKAcrXMFh9G{i{0H!KQa9&L2&#+oN>V%&q#sQ zTs_#fKYfGv9Kk~LFE)7h0s@l78wjEy+J8UogYkIBkQ1m);@=Rc#)_;eA%dj8{I!9G z+Uey6yb0Gq@&S`A)zX3eV+85>C#7D=RgY`_b^clvYi=(7|qF&3jd7bP4gfK zJOLRZ2hfvw1g>{o=V2?cq}QYS6Uj8brKCm<+#-6IV=+YPGO+kmQpfOjHT?9n=&_yC zg8GxE?hhyP1KOupVTS)y&a1|QgrkR@u)H7M>~lB=4F@I+0TS3gLa#xy2J=z0 zEk9*_Zf$OBUSLPra|n~yX-)$N<8ipiMOMdbm{k)#rDzu3UHOcy(ODs5B<^;l4oD_CpM1b4#^_yxw zrG3iAI|YyTD)KYWP<*O@AMe zB~i~ujK((2#rCFCS8HyJO<5J7O{RPcX#6D|Pk2T!J%7hX&LppxF85!KH@PkCey~^O z8ru_iSlX42H)M8*DyOe2wRDwZC(`si@=yD^!bcQDx?6B|&e5%bhlxLaexNzMzYoazL?WEs?Doz!k zsL(rzk{`QzMH>Ekv0Jt_f5I52zjykP+jh#%twF!cX{ZE@{j2jV3Q6|m=sHs9`ZSRd z>t1d2{uZLok4B~|OsfYCc^!ScYNv{xsjd#t0ZTU>FR)H`yYAE;EJEjIAG|A2aU|u{ zh18ZGI=?svpV%v~OeJNN2~mboI~j5lG33pK|8=>^=33LKSR!K+>=jiPi;#CYVitTM zn0Qz14|?{!7uI6j_diOly+58}uqwr)Rrph&`rQFXF-%QhDg#;-Yks}$dc1EEj*6S0 znXER>w10AWerk^v9=FI;Cn9=aSXyGR{=`L0wc=X1c~qf`W=XdrXrhiWiF@;6JDZEL z`ZV`Q$u=!;Fm;t=$N4mWmjeDtii)<&KVH+=akleel5NQiq^!L`$ZPCf2>b{$cjAd>sdQRwB_$+JoRn%uV@!_(RmxgNdAk{53-lj z@O|25CjMk3;9LoHNHtVIki=3AsMW48@sx!;ES6?K|Al-rz=GDzhhXfi|68WVELU?Li(oR0}zOHM#h*A6z_lu}-h+%Y&oDSVNL z7V75&4M=&C|2ya!#a&^Ku)v6DUa+B3)8j4T{m!R&eyq6fCCwrc?25g1qeSUuhiqs_ zJ#gfI-PbK4c0{+Y$a!Tm->oyIRV`bqRf9b!WXNni^p>vCRneK%Z30;=lq7}&~@dY`-n3Ug+7qk^>Ag0Jwxb8O_?gO#|~pK{YIX*^xz}bK_x}+;{ca z32fH9r?yamQmt8WgHP$2(jDPCW|gjRanQ6^Q!C+Zhfr=j`a^`KTTP{NO=SdLN)!Ou zZew}Y`E0rAlFW!eLtj$*DZje6hc@vgb)dP0g%ag?Z!k&u43W#t7au->Swbr1)7cw+ zTU@HPxSkopXFL3BP)iO=+-Wejn>KAJB4yO*Yn=_R2q`o$&pEFF>L-<`D8pF0@bk0J-h0%!XS)bajbZe;a z(8(Jk6x$;WXpn~WsI+55Xhz>1+s!}exh=kkCeT6tk5iSLoOYi5^Yvtr8gIiQG%td8 zT2rVNA2X0HIM?J6gQT?;b7mL+j;J?i-;FYpfD(J5V}K(AQJ+YjLc91o*KEz3Q3W2l z5JIHX%3dW3Ygvv9sx}AY`E}vkTKsK2`!g0GteXj zNs;%UCB_YN_%VHaIuf;%8IWJ>OH{IgWg1I~iZ#)Qp#VunhchcTT7p)=)NR@TJhxWXe|YSxx30SsQv`Fs`Fn!tihWJB=3!4M zcYAr6^EI_XeodR^DGiW?=t}u!jA4IoOe!~=T54RhRDZfV3k0v9@%zSmspNk|{-vx& z&oOZkA;R@UB9*t)L`zm?Yfgj^IJN%6R zj*zK#;h0c^l?*Ocu}J=ayzwdN6z?V|xck2GmM;eJYi_AZ>DVA2y47Pc4^BUP6^dsq zMBsfim^saDYdibszlh-kTl&D~kRPqfA}_!gF9m!XzW&c3&$TUzht%427!#dkHhPhrgwt@Sge03YhS`_l#WMzlqlb(Qc zfB#+=?JLEGHz+raEe`eA;HCm1B63>PB|SH2aOvMOy#E9?#yg3O<~$iYTmXXIV!7>UAc304n=az5{U!KUGW5e&M&pr(Z4R1+~K zD>72FT`Bf=oi9T51pFRSx3<=$2l(tFe|}Yu{3hJTP9a1$wbb?XajhsaLc>|LT4W)X zH0<=VC|!@y=aC341{GUftzUM8(b5iO`3qy#nK{LsbiW0KkQpI1gl@uO=Q6P}u%tYPr}02kWN_3EJ06smJM;#9Rh{g5 z=Ioaz{vBuww0@fudhj8DvOIRoh2#_Bt&0si_kG3EaRR@iCdYj|^B@$Pv{!r$rOEz8 zZ4KYEHAbg2E|q><9}~7t{ng8@aDygQ3yd4Cbg@lPD?@lPZ#x2Q_(fIzB8x2)p%yH6 z;fLg`6q$>d6K$uT>83u|lC!x@Pe$D$sYz{WHh%-P{G(N_45E2bk2vJ@${0kHv$w}3 z&s3RGkda|f`7PLWEcO>(Wx|RH^$6z&B+xpLG9y|<5 zCjM?|2Dv%7O;zdCVK!lZ7p=pjZhs>(GqwcgyisPST5``ZJq)Vs38ms0skJnr@N7!m zFh%c2@iSQBh=O~|B7jLkh;A%UQ6t(PvRL>{U5tKQ?!RoXI%I;Up(j`%K_3qVMU=Ho zA9)qg$-c?*9aQ+OanI}AwOikR{*am1+?A}jT6N;`ob`glvA&OyCmcQBHM5w2bn0&# zDYuq*d=XW#rYz38m2&#*%rs#jct=K(`g;MNLXYSg8LyX+*#P+>zPN2Kr|A~!trH!@ zM_WL!*|OSisy7(@q0I7?;$izZVxDAvQvw0bYINt0Ecb50FXT^xxHnA}Z;4T_u$xH| zR`{@9(*+w0*&-xA`Q~Y|JQdfWtE-_5!0#0s)b8x;Tp7LOj~%2#5z7G($-l2z)=(qp zBBpG~ug%YU=l<341wK%hs z*bubo!BU&Dllp-WjQ%?qjc#k!U7lfD$QNRga~Y)bJi!MZMqi(5^i0~<13X`v-ke~} zm=0RK3m=_(ZQ~Fs#)dGxtf7F8cQs3-3>R!sy1oKp#qXZk_`5mD6wmlwuHg1p_S=P0 z89xOMh}3~z`s8o*T446&<~dL#BMPF!Kfdo~L|VdI;rUX9hpO1LY0U)E`4Y4tw72eMSHFJ3X`!!5qN^Efvr6X#7EGTj9pAvykk&2cPYc2A2Vq0Fk zC_ug6%uq{LNQ7-OM@vUBqdJ{+0DfhXqg>lSJ*NG%#o$z!$TlNe|GO5CL;>Gy^CM-1=i&vypn{Dxw zWiRbdi?`{ZP%Q=BU@ywd`!EDroF*j^ig3yMHU>En0lUXk-Bu)bIbp*1M7qKcW?*v? z9ljoBEOp!BKUGgHRKB0{I4rkEnc|W5>vr;#3N$NQlsHJ1nA?BAS^cNFM0b5)^7$mL z$OxvbYmA7;v}y-FjDlDME!?#CI0N$YUP`)@v34XuAQxL}t6E9AUsk%cuM0Tf+iPyi znx&KPcuTri3CfmpH8oo4)IE$Z)>gqMCd_OI0CeP^&&Y;dNsU=XSn5 zdFJ~(uZ*xhCM^BJ=3?^n{+M7T-PhQGVd!+6HK<_|$+8w0c+$4!bH~HDXwLL^P1#%o z|E@9(YEHh7^<9mTzn}%seiiSr)$9gNg%`($TBmDs<2=EdT>1G!G=$tbRZwBvWtC$@ zz80q?yI_7##MeggPVDT}1o9*CDm77rC`IANf%c8!{^HsLKWJdOh2AAfS5X!vq;S}7{Xd1Qc8?ek2*oexuJJB zQ;t1XvKSx0aYeE$#$2IEzM}l%ih&I*9%`5RsK}z*PzovqQv9SMN&F(g&6!3EIdKUdh`od11uzu^_v$8CH1eYJcWLf}XN1A*%H~i^G}+@1 z^trl$e?*edg-O?4z zYdY0}n3m_vZJ%uM9mq>G7j|t3otr$*MJ*-!Uz|UL*vj0Oi~455B&4ZBRm4-a&1kVbzo_O_${p9RQ}QwA+r%gG7_ z#v25gz3}Q1x~(>u_0X$jOOmJ|GIQwbCPzTK^bJ#$Zr-)(){?E5h7XUm#ncx*U{$8E zvGV+KA0^x1<25IpteHo+W@(&rNniPYS_FKMe}H72nK8IkF`(a$hrz6#kpyaQ@Hg=3 z;VQ}b)RO1%{ySQ7H+1!IGq)*@H@K*U8m3e67@>uIZIZRIk!x?}GIUtdO^Ee2f4Mao z1mV40jZ3&lge+E)&v|zYd~c|t2+pDCrY6z$Qh8Lw=vS6C@E6A|xgAs0!N^g94~K$Oq--OjIL*B}E?RhSo3eVu5k-MTbBXDA++M+d$wRwk?&X8*;Ry3FXI~1#rsmsC zVk}Q%VKa$%D~nV4oFbF4%{!35w1R)Fv+bu}L-0;ZdM2#%{m9?;q7aiJJPS0*m--IH zBmc{)R&bjwSPl@}B@gql^ha^9%l`}VbS@y~P{H*j&Mq3! zcsf$Elrv)cREHl!69a~*n^G%+p;qz;8E$h_43#vzh{b7CjAcu930Z2h5J_B}i7`$^ zqnI#;;itg{)CM|mi6CbzCXv`2k^o|s`&GlB}%?we7=XSKN0 zQA6!%DJSLmd*31f-om0G1^uj4(}HxC?|y99q!OXuE5gn1WlHWG688d{dqJ5A1~<_NK#=oO1@gZ@73}1=tsWke zviIQ3Q_TlU%1;VWk+0_{_pnt*|NQ=BM>S}Dqi$V$Gz=+%;72B&;-TC3nFhAIz{|uK zD{Q<%1SHa)FB1e&@EOGOI&!>u>?o7Vmmun+5)Ga78DV-skSezWG(&6?Qp{C7YWU}5 z4!L7XCl$!Y0?n-!v)ErafC0Roj0~(dc=CFwc+cF`Yf+whLTul*!j*%h!cktlA}Bv| z*vC%NsC-`;n=wfsH^9c=*G6$fjSS1vI04#YwZcz@i2)Ul+_CrVG$0zHZc5ts@K7!| z;6(Y!II+B2OvL$MyZc}CoVJ8_1?$tFn1Q0?6I{q2ep=Cd%DW%k`D~Sz9!RhVOr{qu)G%5nbhg={nLdmTLj!7x zC0&%H6}*0H7FkkI#A8(6UZ4kx!y23rsvJz^`+y+8E3gm8kWnu>{> z7mwtQvnN-t9$2$UMdTRwq2C8>!$|MD^rixJggTFkE3Aqc)XLDsST-Sr*k!Ky4?QY^ zlY{1;*OUTO=nGF{gcy7I1U{P2vQM3g3=^D!!COS{GiL-Y98wz!0Eppvz{jiLAbj|V|MigOtnENQ#0LuqipiiOG5T4DZF|<` zx=iKcr(G7>(@OG=pFVox=utXxU|#Ft6wRU(*P%zbqIsg0^Uqb0sP8h;upQ-E6FmUf zyGO%3UOje?@=h&S*)5b}#LCk!vijG_=kSch?~lY`+$nJmesT;!?5KVXWHT!FjM-nj z`;eAiI|jiDYUA5oZ2RBzaxT2ZKb>2u87B=4pEZL+;&1hOpHy~_YPs&dKQ;fLbH+jI z4v3N`*})~kcg4j`r@#b6qS*Q@e0p}w9$cB;c6WWA=U0^ROsSD}QSy?J?qjY)-LL^Q zV?>4?Zd^-#Tx~+i^$fO7#{(?*PH0ti7gD+CKDFh>T09fLxnbBvh8hNZ)}j7zlQ)b7 z)p9{|?XX_KtmpDB40_>Foz50Zo^XZuIZKiH$o~89Qd}u)eB7ZKRPWTYg*SxgIB48^ zP4JehsgDNRTj*$!f|*ni1Xv%|S%B`8Vhvvxew+efQpfjxg&q4@i3VL+BIcHZO|g9X z1fGqu3=%1mQii7lc?k76^Da-nyq+?vh567TOClpE7m)!OtY7PiGtl5N*$)?Ai@|v$ zKbzkhE=WJ$cG?tAG)l!-|B(p*35&%Q#Swl&K`uc~h4Hd-%JI%GOqLMm19h81=j#I( zayXzR6T_@RjQ1WwvFd;Rv$Ffq4Vsj zz#ggG=#NewPH|S(n{RH2Bawk_ni33Xq6Q$!S;|}oPkKR}+uikP_YNBr875nfxh3?Y zZdzlR7d|Z#arkrM#Ra^F6X8JLY8b*Utg(aKqRZo#F6LZTRT0Nxk7aEXR^KmcNDn3V z>G^09A^LuJdZm4E^;C5pB$O%c6*-IYA?s8VJiMxl4Q#Nb;($1HA~@ft;PxB`yqY-h zW6m~*oGLTXcGC-4;YP*?KL4Az@NWJ%2HM3I%1jF9v88k`&%_8r0J?h;Lkfzq6g1Gc zK6mbZ@}FZqO5gPhtaOtv=^Wzy-YF>LpRM?5lRlk|U{ErL8T2iY=HddewQ)!3(kk6Q zjfBEg8y+CJt&TCh{*yN#B6yQ8@cStK&X)@pZBI}1vv_2fAh&O(qnzdV7-fWX+~!9F z6E99{{kOT^n&Ewa(gK^=Po^Az?u<)PXwknCJLcz($ngF?`BrVbRoYHHLov>}80j?I zC5iC#2ttKdsTjg1I>t^mM`9ycjq&tU2Hed@EnT)na6r--rmEPm^s||{FXPM^Z6qqU z{+@d3r|PN|UQYK24BJ;qv?rUMKDArCf16aPwn;fzd`Z)2t+zH)UG;j|4d4JoQ4bQS z3+FVlAG-E5O}0yoSSaW7w&0eFi+#O=_}$H}e~P?}MH}3brbg;gSWxcwpN?aM+(S6vn6K$&4U zzXHr(Z%F06AFg|B`SMhF ztJXJfoPyr0x4m6blQy3FxFumVtTnRQY@LFizFk-;SN^5G#~v&GFTWA7e@{OOsbOQV zDV{p&vo)hW0j8=~u9^MX~YSY(OHqxUt zW?|7g_(kw0eG0PV=&XSs#>`Q%)V(X3`2pjN4}3IS6fQ~N z+Zv-~0QhB~#?!DOb$@2!LaFwS;^;GZycn7V7i%UHyZUD|B%k;H3>f({xPDa!Y3>P_ z4^wnS!?j2r^5}@fM}-sCV^Vj5|SXk?^aj?@MhayX(Rlc3#&|~SD7gcrY%0WaW(6R0zs%ZxFE)Xumf!N zA*Byr+kba$k)8#`ncRgK$Z_2A^TNtSTsV5-HFJ8}t_2=#LKuVLePC5Pc_Fm7G1L*GcK$OQw^1nUv!j)a? zT=&!Hy5cw?FWnyN?=96N!AI*`41N2VIbzPNk36w-Q~d-KMn~l}hEt{!*0<3CO>xz) zfDKM>Y_-D7P>193QK2$I@R=?VF-9NQeGhY|aaT+AX;ZBs$_=H``^au1GwqCBmzWTf-TUie;+5XG2&Q7NW+$ z5wP%PK!Uq~OP3ix41Tw=ZiPvRsUs!rP|4<1I%($s1Cj8wC{^>m)!4y%IRoGRuGT-HKMaf`^WP2oFs^8^PX`+YV04jtcRd<}2QxlyV5fhWt&&d<|W5 zb`Tuk5NvU_)jA}I-F9}2do!D4*xHU|C2PvB%3_lHx}~S~B;5@y12K&E)Iy!HW|NZ~ zbo0hM$I+nC6ae^fK>R%u=VtL5<`fG2G11`%a+a#WJVjc;?`Q>-X$?@e=NTwLWr%L* zp>E-lE&==BOR|2Qb%PN%3S@Wyn!2Cz;PWH7K9kz`(|8x>Z)6%coxbmVLNoJWTESgI`8$D6MroZ!@h&$qBbn_MmK*gfYYnWJe#g3f^tbd9_u! z`$Ly-Sp`^#3?w0`nwl3>87VnIdLNFA^6yiT;1X!5I!IA?mp2G86QIjbruVt}F4QoNH!(UH6X!dKQU=1uaDwBvW`<&k==36Vg}H?zF?f9XCr^kl$)y!o zIe%Fs5lvz@>U}p1kzlet3yuj>om9^8?{38C=FgxZD$GFo430M7Q8>A{9y%LUB~d() zt){}oY4E1$-HwE);9_(dg zfPzI#?v4M$%ph=+m`?=cm}@XR#==6MWzzXWQ42Mjl$K`y1M>Mh*0Co}H3U)=uSh)p z>fkGG#7i3nX?v-@@BEmdd;ieW&~JwrixMyWm}_`98_N}4fjTVU*6`f7m94$|8)kI) zCauagDN>irSso5)iRME>xkP?cx|F=cC9imr8_Bp3stQr|!N!x@P(k|Uq0k4GL`z-GdWQ{Yk-}Bm-kRJL)f^#K zOz?y~6o+;9$DlxpfNw87h7E>n4#9e@KOAyy4v!MaqKg@2P^Ybn2KmxNtGW znxp%0=>hH)QG8$85%9OG9YLp`Uu{*WG(%q$T`$7{9#l1)1&(zl4AA9SlRX#6*}*=K;5UE zv5SP$j|%cQk;rF4>C3Z0n?b*0fY6+}wXK&O9i*MR|1ucwY5>!%mM4`|cC@ z4-Qp!Rou{)lT0E}5fK5w6A=*Z6(?Y&K~&*}d!H0dUtyO#r=4HD4Z_x#O8W-@r01kiVH5@C)Y!DUwzUmG-HQRX-* z=Hw*uH7>jU{^<6edDQH=`846HAfr^Li7n^SuR4KrJ^D$tu@N?1K0oJbDNz8>u-*j8 zU;JYjcLgjgJBV#q>X_%m4lxJp)eR0v18i#EzU%Chtj1g!&@Xfk|7;{cF-R-&G0ijo zxc`gib?=Plm>;qoC=t9X|1`y5Lkeg*oVM?f$W3qXa->_r1_aP7A)ltD6wP^%8V-J1 zQ46%|{$MjOZqgK@MNjbOA!ZBs^ZO5IU{^%%L3`|#bvs?^2gzO78!~r<9*6}jiM6++ zRNZViBW?sKY7Z5V9M%!;LlJr3{N8-!8+X5|2(Qe$!os(s!abjdU4o@SMiEY6Im-IC z;Q}j2edhi`$91C_2LzhJ1y%-`0K|?+k zqF78deDpGFvoQDj)GJ=(x>3`d1rs6>&~NniZUu)bUulINm+49t%4uo9B0CEW*)JU~ z=>6~*SMjaq2ASy=E{12pnv}glijh87vL?TO`Qpw}F8H=#I}NO<7+UXdmD+y@77^WYd*^_i&RVu{qY{y#s<9ka6mxNrx{%S=pn~Nq_o<(*)iv7 zQmdZ$?*=j1m3`{d8<*-&e|uA*N&v6|z|hN>-FzSLa`qh3gsb|nxODGK2q$l~=_MCz zr7p6dC~sQS0tNpF*Iwzd`G3i&6UIBd^>lMw?3n-h~0&eeZ0y;PG;D!Tgtckb9|I|6f$FdILS2= z!yFmD6EW&?drA@Q9NKInBM>RH!yUkC%$96hqdSsa&qaG!k7rE*bRV`ZzIzJ?l!b-B z*-s_xN!8-@e4#=1vX$(bSqiF+i@Ao*r$(HyBis-#Kcy@^FJk*6R+;pXuS6<4BLW-9 zFs^~louRE@u7&u|Duz}$OhlE9twXj0&01p#vEE04l=ILMC%+?Ngod(R3js~$QTl5X zfCB`D%_{$}^dpl~F)kj(jiD1!<#|` zEK9pVkD2xX8Gi_X1G=SQYk^NRJ*)mwN48;4yNZaZYr4dglQ1LzSUF5wQmBk@69^ahX6t#-@-}3^DFU)~$-7?Sj9H%em~U zfN6_SK7$pq!wCuWJ9pYNd^}P>0-u-byM4DWe-CVyC2m0zE9Pz`%kk7Si?*91BMItI zd3t4Wr>rZ4s34zD)Ly+`BXa0l`0^Z?2m!_-vBxXtL|z?FJ;3KL&U@?|A`EGm8yjo| z)m|Az)ov#VgK6vEzLG!je+3V~zep*O%Vm7tFWvU}0yDd&()l3|y85#YsQT*+5sm{t zBC^!tZ!o)w`=SRVu7Dl2PXqg5>)*XNbYX1e=zjquMUS`EyPX_;Q_0Cu9#-zm{LI<5 z8WLJ?00T_VI^cFC;Ve-cn<{890d!^8f}`G(24T^iC-IcKbpn+UzA%YAevSjSt`8lB za6s#e_;Cec%PNH?@$YhHOHzs-K?yj*tro_f-ODE!>rFAh`BJpB`}R~A$C5xd(hEGn zzGhFot{HxFgU4sq{>9q!r}^sV`w!f|<&qp0G)AN<+n+!Dp;kj1iVmvAEg8AL7p;el zd78N}k$l>cwma`hLE89Yu#20m>AGNNcPGKzR}4~I8f#gnT6^^DUE@|~tV{XC(Kiz{ zF(OW%z8THHY(ts{`2hzw^|xH+!W~Y)l+_~a0AHitzpb45X8H35@1#SGNDS;*?t1Cj zerGO^s(^{ASM|rvc?f;30VQAo_acFONx4U6&CKEBNhM!@K$7=dU=#aans4Vbs{~CB zKl;Lto2Ii^Oz_3NmB1oE1U{p{F1Ez|pS&OQvmXV!OO|++<%bT}f#UtKrd44MRnxN9 zQU>QF*nIv;R4tPL@Skdck|O96JlKDH5-Wydw8v78zWCTPebk17`!z|lYrn1czy($_ zhwA~l@oPW33`6`ee*|AYSv*sG!+j++=dxJVUDq1Pp*= zV=zSa_H011D+;drQ8s_W%I1SltCIvKcxa&2`^cBJ8EJjA|4a4+d(Zht@XO_^+PMcqEiAkOZsNO@qY-P(Q= zz69T%$39qm zvP+JoN>!Q~jo;sxKNqZ$q#^=mXE;3;*+85Mu%>bW^ zXN#p-3*ipr|7QWzJku$U4>@+`JK)cFW^Vr)_Uy^O$W`|6ug53cp2y}Os~xz3V35)BZ4;JMn`gY8mWqg4* zB;1ZGPwfUfaWWWew}_R*-(3q^m;8^Ofto}p=fbvq&4RA%Sex_wEq~Pt{3^_xDjWs|i6u7&YIIho%yYfeU7L6qqvKlE-{%NeQixV2;T<12dT_Z)#&atC z?s3l|DV6(&D(l2Qzn@A*`Mz&UDSfSG#TwFze4Z`L0rA>o&~t#DVPu3oOdyGC_uMVG zC%mitaz@*4-bFqlRJjNbD~> zmI4}?AD87(mFfyXl?Sz(YUB6AR`rk-m`iwN#z7LxpUcZj2IO`_iriISjuUHBdL2elOK z{vFT=p@~ra6!mZ{gVT`Fh4bC8*8Bla`#?bIFwCd{34zTz&DMhFc%|Z05m2cm_IsM;Wk%KU&Bf)PDExUewJ+x{~-gLy-Lod^h`{!+rUaGkr7gx* zOp%kGOmf_YOO}Z_x*h6Av-cx>4C^)-xMpZLii_&So0_22>oidq`CX9|8zjKbaH&M7cXe?rR{>LqTR{mdw7`KN~w*HO#KniH5>!PGN zmo4m335RU55dOsz@@%-=d8ri2Cif`BLLQ@g@<){K^sq&@VniHL1Ev^xqE&hO5ToFj>?pYx|8H~yMj7DJ zgk+|VcEn;Fwl#g?+q|^>WuB2hLis)nrZ{Qk@Y!=x9})RdJ^gHo2@hwREJIdu8&1wxV-|c8*)8)6 zPyWW~ln5SOxNSo1fMG(R^l)Ek9`=r%+ubo1EygxFb?3Sj8n=z}l=qRy8WO}qS~a1r z_D-gOQCzcqC3|{8xdw>dra&Wz%YF67$7|Y#3*-I{RVas$_CGA1=#SmK7M2TPjmS~V z;JUnfW?Xy=I|AnFCmDY400s@XwhZ`TI{XrqFmV8g|-+E3!oi0HFjHturBOA~|uXqNnV1?)Sj+?*cm7bGdBhA$9Q?v8{e69b{Dgr9T7V2Vp90H?6FIb+6WkO=QSktt z;bdBa@gLIn5lcfUMEq!RIw&7^6h=nlyva5uVK=E+rX&XFv zf$Ss#$5UXLFjCN3s1|qoT=AJibE{V7-&t0|Z0Ku>)HQB}aeDtPsu(?vYGOPTSS;mI zqKvAEt^OVg;-~8W zxQ75Zs-!Rl&xPox zGZG>X9GAwva-u2{)>%16u8D!W!C+Ct(?qd4*FupUc$oh7k2E1sN~-V0<;l}6I3`*d z1%K}D%Kyy>Q!!Rf?Gxr2>xL-`zYR@8f%pbCO)s#f2p5wgN-p1m#gs5g4J4o+&yVr# zW-U}b2rHVa9m{^#G1H1IQyN-Kj_c~1WQWAFFvUZE(IK@L!Q)p2#$i z0o{m{;pT%pTuD00l8t^Z#8^-GH45uOL({i3eJ(axI+(XCznR%-doY|P)K;Ly3YFED z1w!mUsU>1id#``@@O7YD!RW4M>a#_L7OP3~$>m_M8!B6Q{yell_T`swm(*_jGgjC) zRb3!YYfiw@gP4y4@$}yTVbHsB{XWA|j3Vu9h8J}GzPJhais0-e<_ei+?^0>Srjckx zN}8Es>EWKb8@mDz!T8@tx=xiaGjvDas|zLWjX0FYS?IW992QQFyVg%pLtit-Uiz!Z zgk*(%tdiI#>Ot8uH{iJF^Pi&65rn!Q-+9(xs*dHZWi;iV5cxY5609*ySO7!79#&o(T`*2ggD}v)+M26;k#sTDUv0jU4OIjY#W( zi2XEXNC+0<0uh{-MzfJCDOQYP3rxn}uDvA5hK(RZ!#MsE;gGp+v|>xu zH4*tTGwJx@K9H0EfX#>c?|#CIB3p_`&s-2ZtfXBy?@nL&n4UHm@ZM6V=THzPv6-O> zEfDLeQi3N$VZlF-D)V5>$wY)Vonp}v9_>4>RX?e@nCy@L>phpB$DF7V@STgwf`A3o z*YpkrVey}?mykt7y9N@4zQE7Ra0r^*G`Ag9x0zYd&1VJCz5+9wP*gcl!g4(=1u4v# zVBRE?lbVqEK#-n7U==X+@}te$lCH#EMYkeY;HiO*YXh~?qn;gShzCq{ZDZD7IW$oe z6}W_U)kHpRyu5(~5TyTU4rXR!U(1f9)hUxDQ6C=@$zh0e^K$v8wqW-y7JuN#LBq;& zp8046uZDSjVp|(T8#35gh$UEK5CTlq*?jK5)$y{!U!$~-nLB(ue0abq*_N4>N!?2m z@94tFG%gYKjfoVtg~_ z70P61Q-Zoe&i!V&-kmu@?{nO1MFl|zu43BK6T^2>;H*j)%sa5)2zjV*Z_CO+}K^~-gHN0ISIqlm@$5c&VPHU*`xDF76YQq%*4 z#LXG6-(?NGot!D32-sEd*)E4XeA8T)2_!>XZp?aqY&2KBicmYa|0OEqSTYW1 zi9Go`i)a0RPOL3@Z&HkoZLY~Ih)Vemrvd`Z&=eKcJHpQTvL~+SEd?Pi!9f)wsfD)t znTE$e`G}`)xN(|mF2Nx$*L?I3{<-WqGc6Yc>wjhsPk!+) zZZ;xw&{DPdt(P(B-YHKdw>l)bwWWZEV({;;SG3B!N&yqQ@Zap%mu#2!>Kt|09h?7* z9>GbHstH}HUFY8F?yUqGHg2f*=pnZp@&gJ`$ z0yPgp<2ExH2oY19P8@tn6t?^0HX}aLcQKN+R;v@FlGAUTTpY2AdxESu#sj-ZE3goc z|LFq@>*rD+?LnQKvyYM*vUbD7V#EAE2GT9Oi&$@T_=fOHjiuU>7bi+Z(5lVvUIqy= zzjCrL3dsEbu!pg19I1=#&qUI&!-u!8O4MCpz59zXi3}4Fp(TWWEiXT^n%Fxi6KKB) zs=`^!8R6m;!OGvKKX0ZfE!rUQ!S3XOtvK5+LN|*r$-gU~Gm*v|yb1c>9-dmwQ2IJs&phzcghp`_^+MM^sgGswf89nkr? zzK4q%@XA+TRU@s00WG7Z8Mw(l-}w&Hu zqXG%x+4mI|Lhp%`>o({czluO`j95UemfRh`)0q(Wfl)O_Eg3aM5*cry!N!LNEWO*s zl4vc*+D8otqx%9EeWpl6b*7=op%Q}WKlhJC;I-^Y>e&dGCX!!$d5erpj}IBvd|hfw zJ|B^2HTiPXY_+cA>F}`?dGJM%&2B~=%A{Fn+dzU@TlZ%K>^C-2Toffz(I`~JQ;V=u zj`eT>SlF;b$SV`@xpg!po%6*_M4!`3sQ*LNguW%$6FtWP@ZzTH<|4BW9Y9!ur}2l} zb#N)q-El*w{!7@jy6;Y=Ww>kC6K>IrmH`Vf{GXr-lV~trH+5yE>>JQyAM0&1q{ZJ+ zhdW=7o5`r(`OL!tX#J{Zub^mU6Vc6ux4fY98tJiOAG;}g7;PE|YG^&5n1>eM5AJR4 zP7UxwXY%CJU?4pHOQ+eotVWMxAJ#xyI%bcy7!t9H!)%e$VRe#rRqCGbl4dga|7u7| zV$7X4ESpf}0gf#>E=(;;pfn0Y zC~%!;z+e@#C@wl|xb($%E$d#W;;fZ6HYHIZWQGVH?urAfQvAbJciZyR#U_1_uFo5D z*F(d@GbhsX8o^e4=Vqe!runc^d}zV|_qW%jr*VEe>&C3{6_t2T3Gc(xAcR9^@W8kq zx?3Benf_4E8gruquet79?w2E!kT0GHV7K85FJ-&ny;-)V6UMg0Q+RK0yO6NssFt6p za~?ERkE>&dKS`NVfKMnn-$8(bs!LGLfXXZ`piP(Fb!AD}OeO+u=Iv2dmRVuklY69R zT1droLhZ1Fk3PEC`4H+eeuD>UEC=jv=UUH;3@4h;&l8iw1Y*OCJt2H_T8E*O0=eV4 zsZo*Hso5r0*(9sg2Y?`UL6U%!{9yeitn!>B2#v9wMrV7C^j$_=`B%q(>P_V~lfpou zy|bSoT9#a;lliM7hG$$Wza1%Azj(t~4sA>E&mwVR>x~>{io7Rrmp$NhuJTK>(YETN z9ME`W{r&N`t(#n&xL3J9VVbV1#7)8Q$;#EHa*zD>rDQ-*kQ><9_c|T{w>J(T+-tS? zViGG$VmqfCHFjUa6^$aRY6_*RCNxS64$tWFt7a1at!D)&eq9n}RLQx4doJ6iJ^#tv z?4Y!p9~ZBgeLm8oDwwUvmvXP;Rdd))VjIcq`W3aYL7s9QmhUC3dYE2NrgpH$=L8dJ zGnM2&Koa@dN01$^_ur)H);5Q!{-@tgmE!jYWxZ)n143E)45Z?SHcqI(%`&)Q{>*?Z zpjK3_3|0b0*JNx7fls}*vPkNAKp>zWo>4W2{m0H4jpUctfqe#+H2P($fj>`4!5e&L z`tp`%NU!q89-pfUQFT2XFbpS_fOULHNguJe`3l8bRbp>hljcQyW?#=< zN4i~S_WaAJp?OKIwQjz6ywjJ&>!v{vP(NG&6;uIAr;EJzJ}s#R7UcS}mp`stBV_Hz zNKq3&pS=!SY^JKNV_ z*a>Dy+^(mGflW_}_J=HNA1(Ll#FOr>C>$37Al#F#;Wv?o=lF!pGDq4})an+0Y-8$2 zDjjd1WNyQ^qzo--;If#C zbA@nF{g@6&@oFtYtZyAtba&sC%`AaA$;m;V)v@ai3yN>B3+_JmBMux!zn|Yaqm598 z=q5iC3@3POR*h4V`>rCf=S2Zd+lBCC9lU4V^0T{+ygFM!gb|-j$)^j4W>4X-A#c&@ zT1T4GK~6xn;_Wj?GlB7vuU;xiDdSSsw3)|vlQETC1xf90grZbTEA zt_Jz;DQ#_VmgGqYEre-w0jjfX_fM!2e`@Wd6)Q#C+n_#J-1q~Ig8T=Pi9+($P2kQG zQ9blJ=lWLH>p<()LYSj&4$Q>P;dam;v?xYW$ubyib2x}=j9^E>{sHw95h-RdmM`ko zon23vY6IS<35e^}sMh6O)s}iEPCJ~i9nX!hD1v?;D*k>oP>ja>sq`aLCQ%o*6P!#X`GG2LjK~1WmcnFcFMx-Fj3-69No|BU%p6 zaM>oNfAZX^nhNE2$9R8Ek)&Jit|-T&aT;7twTOU5%zVA0YJx1%CZ(|^9rNz1yhn2^wq0*MuwYV@pFNNQo z!Xm%I?PS95<3yXLU7!b_2hzY09DvNnZtOS;arC&MCsk*#WqfmtwD(`vY$}8SQgM%@ zJ3i4nKuHIeXQatIKYnz#?4gZyc|AGFq!03PMcugOdI*abig<1Pi~sINOXy=B zY;TVA7FxhH#GGKr8oJ|5#GKqNomCoJoo7N>&Nk}5p$uOTMmf(d;RZTC?97_i_L26f zoT?l+2POQoYyT*{l!S+^=W3L*N=2GDYZWeSt<>C`IHyCKT94fO0<<*#V((qR zo!*k!9pB#pvgVbhltny9EVwYrk*5a0guh7>OpDtqV#|vRAZ5avs0ApH4mo zLvOR>mG+nXN~a_NYb@!mujKPC9#+-nPc5^lA=wV7;89FB$ckC)aK$0aSons@4AhB0 z($HDqH|UQ|X!4>IM&rul3iG;ED2VCcHisngw8(Q$#t}$=`IpU4@7%Tu*ch?529fc| znUsOvgd6s7KILtX8ua4}4}s)bnbx${Hec}8rI+=Q@wy+-&+d=qH2eeSn@(N4)-L}V zm`hua{9qTfqHMy?fj>h)GT`%c7QU$$O&FosWt53I=e-qqFY#=m`UGUWe>`pNjzhH- zJpNnJqT6o>?CcVy?|=IG<>lIZ`WPIsE!i+SQ`AXA>PT0LVD2QzpGFpGMW)O8H+H*8-*Q1)7GmhFQ5?c|UK$jueQ zO#Hji)}%1@H74Q?w`;UhWlov;yu29bE*96_$K&U}^t86pulci{$z|E(EzrYV4>WbSlC`LFrkrGq= z(23_H@eT7}%nXtT$q-Gm+L~kSvZ^40f95gU&V?Rr0FX;mFhx5lhTwvt58CPke5O zhgI9PaKGe{Jy%GNzeRL)=BOK|EkMAXaqEk5FtZ7%?s!snx*@^$j!E#nGf}vF{i*4w zoPgov9qDOBoSrlL$N&%PD4=PE-3e*1^(DUx!CH9doHRudtL^gKdy0RgM@)xDl>=eh zbPR!77fn>v^Gp{rhqOC~9MnyIn;=C1N+0d^fd7^AuSbN@#8E{1kKa*7l~GfxB`FW! zO+(oVpXoU&jwX|P45eTEe7)}y!+d2O-xiw&QcVtI>XkovahoClt*e>24PJRLpXvd_&k z&|&F3`5e)5#a7(1>$B~9n4YYIsrBG;b}R79p-7h!MlF8`=}!gLys{}9qKKVstwu!u zii902Kx-pb4&s>ZV@yxiMNHXpLv9t%Ex_oMCDrP_2}*L5%N20Wkk(`A(~N^P!tFgx zS+qm@`oZCh+zf2<6O@)x6Em|UEzKSgg#MELoiwGE9J>|^0sE8U3xExM`&)O0_qq0^ z-FMcz?lhh~Hkx-`)DCC1{iQsj7EBZThf7uompjXhH$umVq2Hr+wm9%$_R%4aZ`gP3 zt+h3EvH0MEzmZ$@Xz<58a%k@l2Hp|3#32q;X94#vrx~~p_Y>!zXS@p+xDO3la6jBF zdJztz87|rJ32?EmjiWDap$E++)8N6r4qF2ou~y5mUa2Xf9Qkz1wx%qn^x}smsNx~! zmLNu8g1m(N<-WsKcm;?Vjb<+Q!+d2$0**n~V?*unWajNW<^NoO{^xSxHoVzwPQr+= zHIR-_FTs!g*T&@=P1(POr+l_Nk9^=Z`Gpu- z?VcoTO8qw`>F)M}UpxSJ%_qeFL;JKep3Fn9g|MGOBKE2d{4Yu4Md4u+U^k0S>C&vS zsIg_Fp|%+TjGr^3bP(+@lSHu_flo7eOa}hv`PU5lofQ`F1xb<#o1GdP<5tdd9N+4~MwG)4Dc*&6NbITXYlHG4Utyre# zpktl~(Dh7K^UBi-YsHTQ%wQinZF6C zeDHw{&o);r0aTgwzHB-{tnq;U*I96-pvn_hHxzcn{mymA_xbYmxC!O`CAP=Q_LP~8 zqDoW~#XYKKRpiEdw)GIv$*CnjQt0j>HjCiwI>2=xVBdM<5)(aq-LB`9dbUIV{t?Ro zmSJUL!2jjG#-a3j_~9C`f3nVd+HkTUs-wMTcst=TFRA>U_SSK>I}`cqkA6zTFlgvx zKP_<~M{qlioC3^;423dmK8M^HzYX+leoU$5Wq^1Q6K(E@`paa_y6S+Z)?bQ;d;dYP zEV%wuC21ROM7z%M;Oi#kH8c}F`v^f0cdHbE!T0lD5f_E2!e(w`3rfSkika;XAGA%~ zxUZ+W+iG48uOdjG5E$!`RcF9s3U}+$L@#xF@v>Iq5BKJQU4%Pc9uH~JHU90|-uJLQ zaLXsAy%pxs|Tlj>-aK>@VKm zeB9>BmloFPZDJbHDhBfMGI^2UUrm)ZzUf~%d_`RNtsb`S>yM4WZH3oMFl2v_59AtW8YzIUD_SopI@LO+ye8~gU5zhwlBb+ zkMNc<-ow=fi@8E3_{g^14rf`3?In4ts)+7AJa25-U93yyjDxM*;Aah7K0e2zv3^J1 z>;vH+bv1qH+if=<0(l#lgFeNQzy9t*o3Ow73dNF46-qrPS#Ur4cp7gZ{Mt1JNpGgB!N(Ik4|JttYGXs*$^!-I?coN11{IOVqZSJjT4=~IU0pAMf^ zhh#&+>siOWPu^Vqaua}hJo%AgEUY%e!J%oC`L$Ut&iJsz5nz6_H@ha;LGGL;#K%r< zQEBH1EtTh2p0_^_tRN;%O76iS*ed`x?IWsLvF}n`Gk+!gm2)oWux~`h8nx*j67k+&fzT#_r*sSfmIsJLG&0j%}W+eXfoMKzND&l%gWPQG4n8rS1Ytc9J@m7%0Tbx!&T=eqOFXC3QE| zmY7iAmZYD~WP2?3Kpu^{vnFRiY8v z3F0^M*Bt>-I#UZ$G2QHtmL~9a&fE)vB_Iw)*bATUUO}v(JCG&WlZ_F%Qgxh#0*s$V z$}(+e)0ss;v&5-`c0Et--BMly-HYL_!erDo*`(mBBPk1~+8q;eX~08MjAGRzkyn~^ zH%RcBYmS3Lm^Z%d1uYlHZ5|7VvP(%^SH$Ep3GBk2W@2LNJh=o}2_993v4&B#TebRu9+`PL>k#?Twu04s{`tlzGs%5KJq> zoBX3}#mQE-6tPjwTWjr$5E1}Q0eAx+&oLa)J1CsxEcgEkq5_MaA1MY0tf!jcSt5GW zMECTd``rak7Sik2fRg{tKW&TB5BSO%+jJZq4`j&Wqpq?1brV1p$X z@-`t?rc3wX8xzYw+ph@8#lCw4HZwRz5;rp2?JJX^JwFpOuJ;)3+YQ@6QnE1d{LaDL z0pYT@Nsw5y`111lBJ3@*`ArIk{rXWg)I?j=r0@5{)Ay(w~GpF}T5ZN!aw(E$QzMHRE9Ox%YB>8@F4sV#x%j zmHnvF$DA%8sxa2oOw6AnzhM8@@C7*xL*D~!o6}|e&1Mwa6&9mz7U8Jp&d6LNJ-io` zNV}ot4g_wT*J!j5*xp&840=Ec4Ap`ck%t%D+Bn?B1>`E&W<%WMrMXyUbg@%Hw% z>m(HL`C)F=A!RUnan~I7q14w!kL8+l8VABxQ_jdwFOOpX8{OtW8v*H`*4;BG!iE`HsK) zJvY#`>&{(m3*JNMuW?snw0Ov-lNq$+Ilfg;O1H?}P9A3e`K{czh}vFYw~$nXKcw-W zTsN!J)@E?@*c~#9gjr~hG$EIyYrb}tqS6`+KhbS6{j&HHHb>at#vuN<#p-N^$waEZ zfQx=^`hL6?(oHJUXbW&N#zBaC^Gw>Hl@Zo&8vern-r1sA@}S1?qv`7%V%OzTat^R+ zUF>f9(LVx+5s0$wFKIU1+5T^J{k`Pu?%^kQF6t(a8?4v+$2IbBR>ZkOvew%yzPCNK z9`Uw4V_5{51M_CTfmp;|Ao^jyxqe?HvVrfa=;C2ltOQ#pc9qsFi>Er19tAe)aw!V# zcadlun~qKb#GyD)cw@Q>l!?>ak^S;Ri3%4*sLf9op)(@M=S07ySA_s%FXiT0Kt@dTvQd3jf^=^m=@Wpx5ziuQHED z+A!NfP=uwv5n&>sC7UiROQ+}9h150}RKkRF=Wt`;a^%M>_jt)IuU>>0@wc_P`|C;B z9=CRQH#Lcq1Z3Zp1$KiG%XG~*OeBMX{M7A(`*VeF?<{#qq$VXxafcq7m|tG))#=;! z6;5;$^Q(0Pr_|gmad^AvX3rynPnbBr#$?w?m)>|i0fpT+-KmB|79D9cFJ12ie*DR9 z!TWrT`Z>03@KiJ@0y(lA@R;ASMxEu*!MxepNE&UlF!9F7mLkTck3Cu6(_(U=X@Wy& zD0tY}lvgSHzP{t|46e^C(9^AYCV87duIkGL1`eO?E(p*ANDX)C)_BaV254rnU7x5~ z&Iy++tC_*xG;-7dxmDZ}}<&$6|PlEekI^HHD93%{5@ci^BHUf?KJ~sOvMT!3V z^)>XmU&ah-(Kp;~W(Qi6j_AsDWMzsApggm1c~1Xo>$B-AWkcP><$z8+caCW63%_8U zw*s4tz2$jJzT%?!nfa4al07-m5*fhk&Zba?ABMFLMW*081I`Vm803h)dJ^jRw^P<~tPc#+x3(jmm1D zpQ}ub1r{0{4rYmIh&WD07Tiy8jjkthMsmGgq{cA~U@Y2*c)24~2Hm(16eZnaR4VGg5%hne1~OHT1x@@-N;WTwuo7 z0Pzy`_vm}#rQoS@N z^;^ny~B+7w6$;s-_R;x=xOZKr0k&9fL>Q=>Q%BRRQitASgy7F71Wh;HOW80J$=Vqc@ghizw=>c z!}$DQ{-Zu$FeM-r#;ASX@($g1#V|d|^p&V}9osI=KccOPk(Uhn;SepFuMh+{C0Gbk z_~Ep#q}}KqctB$q$NrhacYZ!qrvLznRsWumt_(!&sT2kjUo!mTsdM$UB`}mH!W!m%4u}#nhueP?wU*FmGpAO6_S4hM=F-K zu--6m-;irYVlB47_VLmL+oMZ6onxe)bL(JfS#`JWT-GgiVN(pe&wg$LEw0eCdR!o7 z44LBe3I{RP2+Rr5&^P2MBo;tNMmzFw&i$=DI?k}D%+8`UgNX<{7uq-gy;QiT_SJe~ znI73EI0w~SHqH7E6ytJ30xQi$=E63XU*6_)tnk>rb4vGQx+bnm%AwNcp57b$P~lre zQfqGgAXZ+q$!^fNxJ6&F1MNh%aC5nSx{cS5p(ZP;Hd%Qz2N338>ed$3p0O#;P&ODz z{o6n{bvsh3orIZFo!bSh0aw!@!d!HsCg~kCF}BQpL5v!E3FGxzCHBitfI;}ZYkc>V zV&q~0=B2e_(S7;W`qG=xNARTUGP`a(L>0YecJ}OG54?Dw*;^RY_V{}VJ@yP|+%jm) zCHWY0!cnB8T5E-^mV#x5)VJ?dM+;9lC>)p(k0FD~}?ici;lWc^w zOhRI=NK34?zX#Uw3s*uRuP~9UshaSx#Zrz1hH&b5COFt~?&fZA=Clu^Hz3W|!c$Yw z&?-q3vo5u|%r>-Bp6=rp{BWdI?&1NZKa`xmi0(5t4f#)m9Ga{aT~b~ZT)r``Oo-)d z!B?7HW2=P@DCdu26=zgS-iN;EfeY*_v34=N=7yTTrcDnLh41Bom-$-xjfgt4-JF2B zaiqu4oBlIkosQUIksYhPTTkL%!_Tuy-3&}$)v9L8u&*kgo9^1QQipwJ9oORt^`BdB z#7^!^R1Ta}Q-;<~A77wo%?;Jix_CJ7%N6b<;NdH2lNz^6cz`R5;!jj|ix19FMIco2 z@P$jOk6HM_gp(#r5Y-LVkF9Tqkeb8hj<4&@%31wCALIpk9)Nb_R*|$~v?A+?&UU0p z6|6;_BrnhK+dVx;|K>#9w05tWwxf@}xDove9jFt|gCU)hIj0<;(G+77$`C_$uGN|a zZ$40&9VZHfqE#9_r{C|;*0b}|t3(R1@VnhFfrj}Eqqdb+G!o;xLkjgTd8t&Baddjf z7Arb?RpfZO)IIK}iIGB!8$T;8!-!kn4_fpWZWpyXMw=CBtO#;u!K4_31qp85p;o$) zhFD87e|;*ic(jbzuQZEP#BOnmRN_y{1uUOjjGrkMJyfWV`U5h)NGgWz2EFBU!9GW= z(W;0Exe|*_&FElrXxG@aug%I-SE(+W61S~42OEhN z5k`T^%6#2j3kHgMcC~Ry#3%_U@ru20$Ty*E?OgM(Z>t;Q8~tJz^SH&#)?&rO9fu_S zUrrZESMVbHVK;P)Lc&StBI1*m>lfxa+Hc^Z6fW~awsyxr$us3#E#O>O1-@U=NyVc^ z&L#bscWvz8r2YHX{XBjq_X;zPPV2xN#beXH)Slt?vBxZ5lEs<50OiDor6O5#JwXbX z!C#(qM^s!Ge#U;jD0cnEum0bcSiS_G5Dh@>V zYEbd8NY+clK#UhYTe;-<4OBkyDvmwB`&)dV$#yfPB4GX?kdQw)v2cI2N|1XKj*c<9 z;%2H#K55VNIz=bgprOA5r!1CDyut~gKiVQzjhMu@W-9VGrzd=kS8+Hgv z-5tCOS3F>Qfd&CaVX!&C10>$u0V*38Pacdrquq-Bs7l5|U+kuMFGmVJgE$2xIRaML z%%w1>9&-pPTdN-uPwb$Ee@#(us~!AcB{PMe9+`XZ>!4W%n)L9JUzF|JY7_AaHjMAh zpmW=Lk)7nK;?0Go)Ld*p7y=%nRXnO(p>S1l#0wp$RjG(`bN+lIovHx}zgLoVM-^wJ z@>Iks3CW#=RW|8xi1VFEqXc=#=ogI_$lG|Ffk* zzo4U_kx7bvSI=@H!MwtqqfmA)vQN=9D}7NAuxycSme(~lCoEOr-u%e(n)7Jn!y~_4 zs6SU`)4uGV!0C35CqG#Q2eCw4Af9s3Kc1tu& zcQ!6ltFlC$R{pZzCv{Ngbl8>Z=RYh&QqfE{4kRRI_xELK{T+brK5ex(30r?O6EkYO zO)&iXm;?W%H&$0(lxvwUYmjifwWXb)HH9HDVV#@wBzrd5;rLLk-%lB&SX-Xs$P|nr zQ)6-&osygy{|;hu52-10JlSlBE9iXd@7+elhlHr-#hES}8Scc^cLZYrzQHCyE5Q(l z*Dm82hDY6XOO(gM%=ZrwppuaqL6nk^-F<9Hn@Ux-IB9G^z|Sfjv=IY;j7)S^-9&j6 zPE-)01!oQlOMVFHW+r?h*-(?SMIq0E;o%KKRV^OQOmb1fcBIW~+4q6G zo$YAQ^vq0cbhvUj_$jmr0Xo5W9MspmPLoSjQt^5$f=Ku6_aR6@)~`G!q}Pg{;GvM+ z!#C8nPy120ROV)_gz=x^@l?2@K(@X&*3?r_Nn~i9iq*+Mh{PY?&n=A<@Y)Zw81$M(Wq3HLP1>D;94`#c^o@%itmljq$@BGHl^4kP;9-y<0_PVU$6FU&B)a0P%Sc=0EC0J^4h zqYruwrN8gI#(k_Y1ZDYBxcc$Qk}f**XC-91M-@I@X0uL^=D~5g83YvF-ekTAtFHS@ zh#PiGsm3`Zup);0y{7#EKZ^a}Vfg|dt|*8aW{VQEi*e;)a{)aYJkigq8is67-;j?i z=^Pn)sF2Nool+n+?=DACfJ^R7V3WvzUA;~I+QI0u+pbyPd{kiW-q)JF_ebZ{_saH& zTm4drRijX(ROnCd-pu|E%&3)J5L00%t_idnnaRcXZ(iX6zl)?J^;V4T z6JN)HBuj1epy9?*dHkwWXfeRlze~4=&Ha}QKD_4TeN5@?Ja`8NwhzK4rf;rmu>aDe z0SP96C$Jq-o}yq~Q@ZF>-~@!QMsfh_@RF{(#3PV?7;J^A1Aif9gyjeSLQ;1^d6>w8=xWyR9=U80rrB-_sW|6BmN%*Kuu_Xcs;6BoLR2!1%Z#xH3u!I9sY_Bfi| z^wcN=k^;faWF0353fM-ugB}euJwu_E_~SF!ypNqPVh6ZlsZJ5Nz!di@KiM4jrI)r# zw;Squgl>u;_#@vIasS)kJ9VL~_+cO><{)E471)DMW(ND?64nG6zD?q?? z3P_jv!;5i!8qrvt?+xL%a+oAGYLFsx;zad;!+=%;bf2T)6Ir!>9cx*zoIr2G+q?D- z2GYUMW@O+V!)cIH;oA{8143xKo#=Ch9WS}n2|!pta6I*f@tqm=akG106}X3$Zp-Q* zg9xGTnG%f;X>1Lz{i$)jBe$xE^hNodRFqP@=d)tF+u1|9y~c!>lM;Vlh@m@lvpja7 zbb>83;xrYY<1@oQzV)q!e=?OwI#8{&$pnhLOQ$aOZY*)*#C#1{Bi5gtAJagGih{DccJ9(Sg53yM68u~dBkn?A4KbdjinRJqe?pjdZ*W+uo+$9#$eV6H=L8EzQ z1vM-5v7bExp}aLlM@hNc+7t-=%<7|yu^;sZ&qVW*S^tQWFyRZ2V4@0(?R3|L?ew`z zBM$n~;DHQs3MF*q{{XE(Qon13enS3Ymg5_=f6t=5&3t@*P{QHY(EZrEGm*?5lb2Bi^8$1`itEQxa3>}pv!j`)$@$XUi}w6Hq~_Rm3Y}pv zo}6&E0c#rwS8qll<``50qIg`C0^t+D zlj7koQ&0!*dv~UMuk&x^`&XQlZ7YQXx$U3P3d9&Kst=~zAHO#IfA+3z%XL%-!u|CPbDq#rC5jpm@Me1QtVwh{JxC}Bh)WEJA;Bx|aWs>J zv~j3^RgK&G^ppHIQv62rzbirghi%cK0$p!g;gAKr20b#%h5_6DTTMMGgg}6I0Tt9T zPfs3%ptATDvMb`yinTQGIM7e8HoJAJQx_tagE;hs(Pez0lsJfj^|-`xDi2}!R@p!q zA)rj?@zZm%z#^LuoirAVEO0_m3|TNBKH*jH)9(|7kSHa0Xp%n|sW5R9kB^b3OuTd+ z$Fo?aqB=Z;20h$%E~v@p32w5f1Tg0(Qc7b!0be#{5!?+;u%I{x0N`pm;H)L z@U;Vj-Ffqz4y+tcXXj4ydA-km`V6*&q1keqV~aZ%I+Z1vPO4Z z4U7o5$>5!f3fIg9%g)IP(rgj~m#4Bt(~(g}CM(bwe^%GW@?ZDvdoT;3*|*8b?S;!u z+cvV2e{@<#ex1nL!(f$Gh&O&C39zQAzFT@1#&DF#Tat$!zl!q=IvJRw_n5c5sz4mX zMV;p)OdUUinR4f&k)k&0Ehq(S6Vk)<`UYQzN!;%^F!Lb{-zJ-F8jEhjI9c%082(8B zWk?nb5Vmt9Iaz4>zB>h}@%sqyMf^hIQ(HyjWdJ_Jj|c}P1D@A`*pK$mdy%3*Pm~|t z$i9yL6ow0(v~HCht=S5|pR4Y7kErOMXS(*Q_4EO9646BM6^n3=Kd9k9o^+)+4VEG= zS}Zvtp>3i`7P~cNcy^S2Tf%pv!Esx6i3c~oQ{MKOFWP?Oi?binq((O1Ft|O#2ym6l z0J;th!nF>G4{GV7?>5iY>ik)S0w|2M%f6NE`1c?V_+8eiMBCOY0(y$0fIkGrpA^ez z@E{ItenBPJEeXrXV>4r!MxRQxzEl7()YCIgOcn2&FWz$Q^R zyC8Z+5?CIrT&@Bq&XSOj2(Rdn=sTU9){}}wPjBvNPn2jR$$-8)LH?C*|3er(oQ-iepG+ACZ14lC+($iOS>~z5R68z$d;5l`o4csTKMyB z^`#VNQGT)DzmMD(XjT=VT^-C;BoUb5j6jSqk*8d{P{k?EKVZHZ-9_Xn^K*#Z6P{P9>VZPWE&DJ0HJq{3H;8P1W~}O zy&HFt1!n&w63wL5L_(z9B?^qFIB{528M_$~VF@wFJ4u@aoQ0Fwbg~>dSuDOw8oiFP z8X3I`w0%HiHNO(n{~@qNs;P;8$&H+<6+w##fk_V*F;48}>v<())PT6SM)LY`)43ZQ zWHQ9OF9Loae?GF3WxKPGMlVN*r!N|{Rv?*-z$@@ejy|aHZ6OgTMelxu;Cg0TXBvvM zo6=oN)r+I+h^CTZO|(OSouxay3P_S>!NgbJzoo`tzAd9Ej;N!)MyitsR(z)aAq-z4 z(TDEci@@lQtead5yrU6Y4yt>Ai9>cnGCERZfv;&$>B>2;LM3`IEz6gem)8v=11o~S zY;mG)t;0R@o*}6@mDeVrNNW%DZW9Wcxayy$E2+mBIajiLs?~exYmE?dMprm| z9+HA(I*)*?@^X}W0Io){qT;!go~wIQZ{mKh@eH4y_bD_WyGs7cUo?-~*_gV@hr^z#iJLI~57zrnXLf5m`uh6v}h z`z^*c)Q4)l4%K*HdMeY1f^D9#TVC`P*hzQRCwuiB5XdFrrAP+HdM+T&^xc(w_E_sH zfL*S{HkPqvNh*A#zWPQYfFGuF77d5r_hO+jPv-h&RH7)Yyj*)ZR`y(wi=V(M`LaLd zgTD7jILd!gmbUsHJ9EcfC&LE>>0mz5h2KvrHm|C@0P~DxIo$`(WZ>kX3{YQ-HK>Z> zG>Km%W7r@La_iJdSO{@A!sV&Xs!XGf>(m9Wqe~p1F56Mz-1eW)hcJABMBjF{jaqeX zE8WODx5$E7OuQlsO?`t`$U-L`48Wt!ndwIn$x!7{_nW?VgvC21=`=+Wp2hR5aE1FL zc%bPD3E1r`&%BSP@^d4$`1W2d2|3f%C-Z+5PQwCvonCIvXKMlK`xdExcA6&JtH*TuYh7slDXW^eC}K5 z`H74|dn=PMPe#Zm*!CB#s+KBj?)O}%vp~R+AU`i%2}p>Hw(vJ>%Z|rk5&X!mxRvkR z$PNMl$z`4a6&-=|z}&uv3iU|9t9D2tgZwhQ6tPVzl83QP>io8T;^|gbdK~Ilk5KeU z$pN{Dy$wIa0S`|Ly$yr-SD|CtSD+lK?sRq2I>!3M=~EA3_$Ju_>g@NpSdTPCppb!c zuffo9{q0kyo~G|P3!DwfK(YV;xmK&Qhs*phjk;%u!VjnKB#70YM^IQjdST=;zFxd1 zGY%(>Jgy%z-O1mG2JQqFx9AFYV|r=M30Vwxy-QAF(WTic0*;C8*>MX0N8;_Q6xrbI zGIK*Z8bh?Xr_y`&Y{cD_SNN9xltk~sN(k}v2IQSjZ{Dv1uDf0a@0eLOXb5ngel^!CvLHMQ;(kG08)U)S z5T_|ZeQ@5y%j(TLiwVZNFVD)Z;#c;frMn z0?kM2lLhY@0U`tFrU8Js1v)C5*Zh+3UY0C$J?7+R>5-7%p;=dPdATCP|HPS8LyQo~gvAg7HT{T#`V3L<0R4(2u*TBVu~X4_k44KoqouqN zT!*^o%^V!@^}dF1T+sZra;dyoz@NTZIQUuRvv6VHckaf_5|hXlmTomzuyk*zKS^Uk zi;V7M@FQ2mA*&`NsQliydWrpK-PC>BM!M3NW9?Uc*=iCL7T2Tvy?vvgI&{@UPsf81l2JxjlgyDnbYD22ib8o?} zE(Wr_IHkYv0MzI8{Q42BOCm6I8KB*4c;?yx^E!^+_LNOOiiiTgCqYFuzp=9(yCsOG z$Rh}<0cH1s-&7VvBZ$5g;gw+FvhGp;cgTxMdZSv_!Mt5I4dBIZ(alr&j`n7u)4^#f zlZfQ|I%Yt&Sk#OYb)w;4tnbw8cq0Ag3+@+toMOXtbm zq$GmSZ=mZ`J$Q#!eF6of^isX26cEeb5Mg){lll6L}fo!2{1$?wpOza{zS#M-U3*5r`BL-wV%459FKXmz2Q z1i6tx*&2NR_uSqJE`2diYH!%+0FXB7!HdYz<+B@l49LOfSE4ePA zmPv3VfRV((Jd`w)f?l&F2U+D`7KN07=oGfO<8)12p5Yso-UaWStdJqxmNs+b2S3lgL= zk|D#;4sRi}JO-T zg$qWIApQL#DXIE99xK^isbngg`XW z#}`<~P@E}D9XE6j!vxI;_;nvDJr0rtOs_y4`k9`-;8_-AdLxP%sn?)Eq0rY`jdGSIcYi zmE%j;1ox|71`sE*mPxer-vRCJR+ROYp37pjFGy{i&$ z1J=QulI1=0hcJA(giTY>z{j9p2jGWlq7Wd=@?*rNibg`F(_p_D-6a6~9$DzF!J17k zzCPCr5iF=KM0dYH8%Wjq#KHsj(b){q^V^hnrHSP{xz*_#2_wI6D!_R)73_;O{UX&d za^4mobdI9bn~=m`I*T~bE~HBlf#PmdbN+oaUIxgZ(#xgJ%^TY(yBMxR$o%ry`R8;o^); z#bJD*v-}u~1lR<;T2S7It^n*40I$wcSfv+fim=nm3+?java&OxzzB!@jl#SR7(dhT zMscDJV<(RtIWs!^x5Xhd--W8UgpYdt9;B*3MM}I|Sx-PhwuuF4`wypZY2}0;iV>$t*<_B?`_jnaL>)^4|R{c=|T~C4GW&G91hRolVoj0H)Wey()08 z352R+jm1a)6ReBJbexgU7|`zrxE;F~jXZ?6qEA^e_l&-2l(a)uRvUx_y$b$G%>}#- zlR->2C!WqxrlT2NBDx-D$?OJBbhD+ z_9Bdu1xrwTvcRVuRj@C!^O9=(NVoy`9+AL0Cj>!12VYp8EZ`J**pl~>f!i^4HLdLJ z>i;Q86nJZ_|BlzovB{{uOe{_sOLmTnvPk9PwB@0YsM{rSD~Ng2toEw|BJ+d3>B~E# z1{(C7ip`o{L=SgBGU*Y9dN%ht_D6iscNcK{#KhJ1G8o5eH2tX;K*wUQ{y1|X` z%I~?sUm*&aMLO;pMM#wMEJ;hXuTDVHfv7K#xWj-NqklRM^86C ztf)t?iVLL0W9r0VC==$(QThE2)C*y-th8%;%IU{kM1;BKd7* zzRdr`H+G{fTh)^t3?Kt~n6|+U8Hdp)MJNOoM%{J|LsRPxWZpe3p0O~KGcOI4GPI0P`?V&AP|uxM0M26#8{JT$OqTPO*(W_Vc~Od zp#4J_K2pw+g-qvUZ&`3o0chArd7UK(kP<-isYoI&0OAagXWO1438=!peX<~@E&=eD zM1(9t?jN=y9+D^!+pqzj;}WycsHlfkJg;W^9I2iKAbPn3t=Nakmzn#0LMnI*swKT6 zt9I~w9yo}QBo-&!Bs*qXEs2V{3S!?WOK-s!2?Ove3Cj)$7w=XbmyrnFf3(t??60i) zakncYi=PdkpO||nk=_CWihCTK;v^R_mog7j>wm`jh6&lL0OqY@nPW;)FDjm#ENj=2 zhN)MP23eiQmaH1^H%l6vx{bXJ+QM3^x*_8{gyF-)>p0jqz5<5ZX)|`2YY$}V2BMOC z1@5tP7?x9!7?5XaRT!KUU5S1}7SLm$^9aKOqQHnof%I69qoEdMVUfLO#`Jsf@;7fw zlI!+v9K`#0?C|jh-YgfMZN9230Zn52O@nws6S_lQZY3=?!X2;Mi^tfn$zS@O5;%cM zGZ*?6Rn*MuOyf4?M;IH3$Uun&41k5T3PpGYdZYn_E6i4dQT7R#wXJIRBS|u98}};o zt{TQqW!;XkKw^-FUUmz>HEAejH>6&G)&%XSqB0`VAo4Fz2U3Sm9Q2B4`FJ0~@NtrB zYU73>-&`9Y$^J4DQfEF)2LfZ6ZUwxloe~5yfGC$#Hx%uXWp|>_nE`nf zV7l*Z{Z@C5gx>}9|H=3ED`Y);LBB5WE;525ki7)u19KXTt#?Uceb)f_U6)))EW%1B z4W+1El;%jk)h~%gzph1lD>UFQ`qXC$zD0rC;jxfL4U$oHcj>>L&IP7{{;FSPCsyoT7=LNq09lav_Jzl_ z8vQX@XjE58k{((HT+j{oOj&`bsB#lx5fTRoh@O=vXWk#3=A*|QH{{#OQDqO5OoLr* z_I~W}&dP0o^Ngb80$W!#+;GNly_@TN+>C+3oFEog>Rp1sM?OLJAI5ZC!`p&H58 zRv>9;V;zQ^o>ay{XGv7Xu1rv8rkvn`nS`l{@-gf9+w%~HkC8R=kK_yhT!*JNG}OUQgQ5!NTb*Y`e6|E0@RGBCict zs?Moj=Y1Q~TZsp6-e$mui9Oq3H+@MA5zr}i0QNg;7`ntTw;Dz;9eM^KQymXbU^&BAXqLQ5zru96M?4F5x_o( z$3izx=X(`oBf#>_5(Ps%AT3rBHik}hx?$17ik~BS?*h_ts{q%o?B<8czY1?+X~D1e ziG4QlJMP3t-puE*RJT!Ky9C3P1aZ1wnErRZE${q#ll^+yBs>4i&%q}X0{c!(fT{D7qJWpP*6BAlKJPvJUSmqRsC9hv?g?r+J+BUL^7gD(pJ0cOt*> zJ^alffC|8@2vElCx}AfaPP8VXx*5&oF6%%l8oJ1iN9YN$qwfN!7riz?CY4|q*DrKT zE_E=SJ6K@xD=otqkvh9gXohDj0_RZzgb$Z1uRG;}@eyalPJIJw}uh62xA zrogA)<2{7oACpxBcJ;oDGe^q3PR4JPRsdeblMRO;A$Xta$xK5sWTB~p*fbgG1fjhJD62kpm`I72bRxRwyA0d!u|aNsw~69L{rl zJEq-#2UE6W7k{7iD5$`bUY%b+@4x-}d+q4mcAe5ko+TB!z}-QTCW;RznLPqSkGK;9 zH|1RzfLX!=0(7N8O~k>$6uB<>M`xY+18J!$-QkG<(2qm|?a&jR=2oV&;OK#15PuQ_ zP8wi~)v?%GlZGM|L!)l?{3Q=!+u62 zJiu!Tn&Vs!r=S5a8`OUa2G;{ydZXM#&P3wcwEM z4Jwln8@akgENZ)1ew&(j64Yb1ipd&4ro%it=(ASiHL_(<{gd2!wL1C+u$6rvcoU%2 zV$+G#4oh8^$afwD*AHQpgkpkzBpPb1g3v$u?h&sk($HXS#cXrgyTLjqBq?-92~9r?ilY-}2hAq9*)RK0sr&%W#Drx{NY)2Av=#?u!D>y_IY z^cRs{7rq@{fsPGY(+iYkN=&aw!z_>_FQfdp)$4c;c3p!cJl^Yob@UL1UzPm^DceRe z0BO0Wj*!vqFLu^}6ClHSgC2&!n~(#otC=$4w4&mXh2vAP1R@{{0vy&_%70S-5&oaF zhv{2*6}&STR9Ofyn)Lzzw(7=*)+hf7ddSU-{c|dLNh0e0 zhDzRfElxyRWR}YyPb}^St$yA-FBSTVkKi|Pd3EythL8P9n?}kv;BtT-SLA-KQ_$-X zFuDZxg`LX)iR41)k^Pa@o!JcY{i{3(O%ew|UZf|Y9uaA{C>e8f@p!$z*0Hsx!Y2(~ zl`1bRglUfBNGW)v4W^&o0RA4IF&CC!u^?W7Uka}E zx&TW|bX?^fI3oEkNb)5Pn!Fd;u~43L8m~>fR){;>fF}NZNd{+RtZw~nLpEin zy>z3_0B^v^bt+YHA0jHyU-Y}&-vJF~CwMKmP#RY0_8>_*q{l$%1)a6pH51bl!A@kx z)zUJ)m;ywnCy7@}rTt+kKXz$GB;Q2psTg$!q(e}Fc2rOmF=aigxRPLaQ^SNjgyGi& z==W7|^z5pq#0-Y8!NX_n&R7nhX1S+**?6|ss zlL4H!*4gVkR2~q$j}}LsTRJry;>KrBbZN zL3#|jUiBq*a??a#D$^coC8{6?J$)w{KMLvz(jcY@0lDd!v|}Tcd3f728sDZSDo0M8 zLh{uM-06XSI~yev!)DC$`1=rs50{rWumPA<(W;%-Ud79o%_oYhfW3%YiG5}|j$;!g z7bBnfX)x~tB@4t>w%}Pd2$hvBn7UL%xC~2gt?Chng)HBJgpR$myPe`r{1b%yR&w!3 zM$F^cd}&ipYx|L2cn1iPjf&yz{BoKxZNKj};Q0d1NOP`#U);sbHlh`hbO2@I=pCR_ zAac43lG1CZ8~4$9wS_38two+q@Dn0`_peBQNfRAZ*hNWtAq2}&x+Kfcq~Rxi-qSF5 zFq-kub1)}1RUjI2(emu`$@C;yE_j?cMTrrP2G8{&438Lzc1*IjV6k&3`m;6Qn&gEI zNpB>200;N53le%CU?K4qSs-x=i7V^TBMT8x!0-wcVbXaEpPhO&VNQZ9{@5cEq($9{ ze>t8L{|Y1eER68aNQ#Ko@NO)(Jy)*CZ)=;qI%P|c=*l-w)b5+d#y0Pk0i9l;`_tt9 z`m+n<^+fk-F0>ax46N%>a7j1>z<2eM!vo}O9vxs!o&9K2s_a<_5@_R?yafIYNW*kr zcq8<7j9;eh_P`dZgfxsKwQv6_sK-G@ikWg`D37v444vxxP>_c({EFm8KUYm$1hl=d z3W2FSFp_K>@K&Ejgn&6o4m#jx;Jy^?>5u?k+GD`B%mWq+S9%}9PLc&oS4fxv`7E7? z5D|&!xnmwXX_ivyt3bqwL^Iq$B(EYA8}cvU5!DrXAS_wOzeupQ9#sO+@7y{g7L@6X zTqngVr6WKLIwdEKP4R#RfA5rcfAnz~t`SQv5@Mp4KxV8K=ga;D&}l8rV1Ip>+62{V z;jn0S1`syu6D%60=O!pN(}Y)`>NF!_*q*7-AUr$8r~zq^Iz9W^s5rS0dXTSL zz|&yCd<^*Yo=kcQlU=_s^+@Vh&DBE~K2%n1;T>&dg};$rk02mWW{Nu4XZcb60LGck z`nUENASvmeiMNF+l7UjKJ(MgU@mUZEqn8i}MHB$+dqhFiD~V(3+j+>*JGCSW&M;@{ zJspv_S3!?!F9@kj7^uBhJ_|Vf4LMn-R~yESZ2hd}h~HA-uDx5;l8fw)9AA;Y`bqpc zNx5FP3V5U9q^H=!?e#$G67vrbD#3Iq3Qe;G&ECOcP4hly9J&4+?&d3J*{%FlGq`}uXde7X+3F5xF9O&Yq*`UK~~rbbEcgRomg0nfm=s+u%a zK}$;2BukTqGCNL8KkBH7d=*Ng((Qi;!w1T5w6$KIY=?!)!YNv{ijfSMa0Jn%46?&W z1Oj}Sw!8TlIQOO$;s3@SvLIUNA-f-WgysrSVE3gimWIXgpZl(yfECf!s4Ftz0lNe+ zsw~hm;4;d4NWlB#7wUTBL%~<}6^F9rG7lu{z>AYS@@e9Yw1mxTpHdXX_ut~FhS^GyBp>R zke(Bn)|;B7JR$)>v!uh4lq_+02*Yp5i&y~#MK|eW;X1!Y?@NG=5jYW$AiC+_xZ@G3 ztninS4R6<^#kz&7WWnf#a^S8?SeFITtMWS}AX*g7(yoL@-GB_OW-7K1NLEEv02T*s>W z=`L#A7-{DLDGZCmqj_1&=`52Km@%SiqMPtJ#Rg%oj@!oB1Tsn!_a%^@xeLr z874Y!@HA8p_^WACZIFgevgXkbKWR0u9&UbSSB#Elyy(tY;c{StLdub0n; zuFAR{<)Oy-6&-cXr0LE_}hU=SX-Cc?E23u`TL z;I_EliN571E{v97*&_|YtR~hA$n>2^4A6i4hU7{b zc_Db8X^)xihcNtc@eXY{+o1XBSU$eTL4}D{R{h5NBmMCyA-G1M?5sPGY1z~y{H^|1 zp#A5QR3xQV;nk=I8JcmF+qC#z1w&qfEmlXo3+ouXF#rA;WRe-}iiRbVz$DBj*EuE> zEd+bS^D5k4;mbuA?++F1208u6PrYwnxI@xgyF`y0H zvw@^R*N?;y8|Y1 zdpt(bS@X2Rc6%d${AIB{>ad|{fIGAd(0(ismJC9Ustdgxl;gP!g{^_`NW-z9Tdkd_ z`WfkC((H~-lM<8h!nndAdS7~>{dI-bU%lwM$w;$X~&Y_LsNZ?Az zLACJ_l%pLTU}Kv3yYcXVOrUMv8U|LLa(D%%UP%_5EmkqCH&|lFAL)r0i^8zXfc`}FPISSXOdluF zG{diwkFI53Oh-`chk&OqQ(3i@3M3DpH5uii@8prvQco#4~0`4)dNd%_5k1m|X^d5m=XE4ZZUXRwa ziiRtkYL#8b;9Q&Ei9XVs))pl2-_0#Dk<6F2;tAa;;<0B#6aVfcf8-`Pi}`MSPTsKS zzK-`m*yknvkt_A^ZnANvO=fDc?OUQva~R1O1t%ldT!&ietU&O%AU3$8=F+1eNznl4 zZF&^Y%Ymc;yaBCYDm+~QeF8llu6dX?_1zui_O4BG4)n&9iB*u?AjyzLpSOBj1LY@= z^dSsiEB7|?6jW9lmIjYx2PC`~dqx{?v=)K-sh+ z3lKK)Gxz6oB~#`EQCJd&pilD~aHnz4jOvFOtva9!Kr18y=WSb#%&~gR;D`sW{gOB% zrK==q9uP;m|FJ(W((lRl)P0TKds7TjE{7N_?^iPQNF`}B?ih@b#6jjkh(W=AkKG&O z#5t82ua2FIBnYo;3)YI$dL)Uk2#OVDLV31pk-we+_02qVYD*fX1xP%k&WA93yO54< z)%RT;3$a8%&fE8if(a*{0C&m}0cE|BVdorRo^(O+0OXP=G?Uio0+K+<0?UVx1xb4P zx`!gBKrw>k5d~8R&Vy#4)<#{BIrk-UTU|fU=sL3qb43K4o{FSbQSiMkMAC(@SA};`#M)T0z`W5o3`Qq4nt+H`@nZGTzxa$gt$a^xA7t8B2{KVIUZWBu5!g_t{M4Q5Co~;P7x9eo#gFqWl9con>u-ZtPI9Jbze?T5~pQGgu#C2+HM|ghMxwb zS&x7Nyc@Z%4C5-oGz$_z>#P;;hcCAgh+l?OQA4nk?hawSaoMjTxs&-_wfh#Bn9bxB z-Yzeji}Gpky32XH_G`sX1d-5=4O8^#Ecv|l%ClL9v0&EI#1|&BCbE*avlax*?*o$9 zHj9s1F7BP++K#xF(dQpwJsm`nc8pX5=!=9DH)c-YvQ zINh4@G_0pG*J11D;J+6SVfaP4)QDb5yxbwF$*3lb#UoiPFbMHhkn8F!kdjlEOd0_2 zDxL_apeF+QSRO+Tcpp{Mg}4Ob6USIR`7rXb3iqN1pye~DwvU9k?#IHUc3?3f36c(=*k1nOEo7swkDGy=zI^iSu zF*uK9nU(->6J-$x$pQo5Ha#IOVx0ja111dab&{a+M$pd)0-nS??5IMoCIXeD+an8& zdOpVA1yP_RA$T!X?~J{l9fgkw0nvdyiunm7Mg2VIaoDk8C2EAmB@lZWA2}hrSTXIr z`a)rC#gL$!Uta}xkg`6szLVyKlGcCyKt7lI9CybEHO)ufKU!|5&6b`4*A@V@J**Dh zbMDQ|hMcqej%H+~aQq#mhX|kN(|>GYV)L=KwYpFSv(iEEE!-0ez1o{pb{H3?vCT z5{?s~9a3TPreuMUFnLn6_BddCRzE1Ji3tG(OPBQuL}1+S(3**hjU4LphDA<#8)S?n zdC-Aj{h6E3DZ9RSDD6cR7CpENS-$S^zTw5W0)9W~y}ktE*VAlo%xqH@m3;B@Ns~)O z1m>{LAOrwHCvgD0;gE(7t$*6%s`>)eO2}{`NktJ0m{(+hmPrwXBM(+r8In+{yKQRx3UJVFu`qA? zsFwiL()?XtDM{F9#N$@J$MoLI^#0`{*L)^dz!r9CpM=`Z$a(v3E&167o9xs6{m&#R z@5Id?C7=6za|0l5N+SrK3oNiLq(xHtDj7352IS_c#1qi=-wK!`F%UZISlldgK5#%S za}s}WFq;ZnO(9|f`jAHMQdEo=K<|bm`)fOytB5UI@y^5vYXagA&0v`x!thnH{<=S< zjn0iy^Y96V*?rA}4WVE_+XLSaU+O5r4$0i{pt|;744Wk}KWma+; z^z0|p*qH(8MfI?ntjy_1O~sMVbEc^(pJ~4(2*$S3)Agxa)1$%O7nLuYl2vS4^X@q> z<3ku88RAd(*wv#iYM_SS(?E6tYky?hE)qt4RmEp{>*-4{tq9j7NU}hF+jAM_$<9bn z7+GM%M*hYF=W4N)5RxJy_mRyrgusdGdJ44rcqTIeNAxRQF?2H2*0WQKa-?k;>0{7e z!-w~XBb*@aCOj|qeeaJfg;X|clhe=SRiD-v;4*)7l;cipM(;PL+d-~FP=u*_|A9EH z>H~=ZdJ0A!&OLRYnE>^xE^Ka@+7xX08bjA-grquQsqaR z8Ku{H6j@*koe#aWRyA#@6fZ6*n|tbWGhq=?$iEIdpf>74n3rIYntBR6Jr1$x@wPfy z8`+lKBPTh1_XxD;QMBzkxM?3w(CU_;WW7(At;rMYk7o7 zT+ev3;1!;0g|i#F4$KdCPwH5vM|%jvACPQ&l^MlY9sDIn7qsw3M5k@!9to2Tm1igW zZGg0H4zT=H#H)iSfOkV)JKL?UY()dABv)ch0$q?^z?myuo7z;A#EQd zf)E6-){-7br4Cqg2vJoeteM@R3e;s4_FCiEVA)T^hcNu(;w_Ff@yKuaKa03l?KfB! z-!v2EVIU3iVGC8)HWIG`afqzSj3+`@9j6Li<2M*l6=7MEg$z-M2!kgsSYPV70c7_K zf<~*k>k@>DkXW#Mg8UZuSLt~^J38MaXGlbfd_D47*{J+XyZp~ROPHq-HI&%s{-Q+v zrvOxc$k{L|_Up|5yk%DXs z$__)TY6=q3Ez){6u&miy1UC;!9K>DkoQ6`c&H}p~8_hjoLnI?j0PMA_-xU?3cWMOC ztFo`W4Xb`JK`d5vvGpCSNX)0&r(n1G;7!%_V?I^OJ8K>&L#`twnv>_j&u4aR^xX(&!}XZk9#1Jmfk z8PVzIGPr|Q5&<-IwYIFf1WDUqyI5sT&}=<~;mvZsDdA7>{HSj%tI_6sS_|rZd>?oN zf{H_6&Kf)Kuku_tHZtOXM4*R>k9Z(}u2k8%VqacKj5W;mXRuOaX2o5G_}szaq_Cf1;Ip;tBEaY5)Kr z07*naRCv#BP_vZPV_w=(#ryIuIs3%XR=j?pxC1qw%#A=;GT9HSeSpaGl%v~Dl%KF_ z7fWL#MjBdys`bif;y_M=@W`H8r}fn9aIqbFv+FrLZvpm`-nt5mpX??>>AD`m@P}ll zNzBL1jiO569ObzLwE%`0(O~!3eIH=YtxZ{4BnYmpj*W&?kR6tWO|IwS*rf?=U62LO z&WLz8KSLeny{LHWOa}+MZX69Xi&u)Ae&pl_tzjcqOJX9Tt;=++Q-3|MMBwxR!25Le z-vh&63st|T9!^)pr3!5D_iY)U5N7MEpDzrBEKw$JXZ7g3ZfSel*&u%8hx2Nlc^VW! z$aosu=|#BM+4DS1&3%`n3O$7B4kdth8Ii6VMjwgAPEDcux$hM6qIEt~9>VZp^6{gL zkr3lE05+EXnwRh|>Rs!fEk=H!cP9dUgrI}^f`_XwEeOez*$t`>l~-HFGh`t_6nyJ5 z1QL9rDbde)gqg;bba0WYL8Ny2QlqNCt|kXg?K*CP2K0%S>!DFb_S`BlaSPv3{Wm zg`n?Zd!o$jeUMrtP4a}_wfwAWs149VCFPIWMmh{+7e4D}QBO6m4`KL&l5M`cDL8jz zf`B-q27&O7cS8efeXowP&d)L;9u?C5NZ$^2eu6(gVKk^}0#OSg6~w-gx4Ipz-O!$g z73jCm+Kw)#NY+lA6pHe0vKH6IU9U6f+7|f)#Dv$&es7cSsQxwB`Ay}G--~a9j`zrK zKfnAy&1)o6{-j+j8Y@<+%1^dY${suTgWz;rIqf}*U!9S5qr%yKb$S|D8E3z#4tFCX z>8x56X(C<*1llv5ATwgOBs|N&0(CJU7(Fs?odw&DRgi{Ac6rl77#<14juzl=`Z|(8 z3+(h)6m`C4v2u`RWpD95A*QpFjH;VFs&{~YBoL@W5(wYkN&@C7*VX1G-p7XD1)$2RcGNU;fof zYR>hpypn71J>lfV%#BImF{oH`553xvd)-)U%1W{-r zTvc2eE!)$b?Qk2a%#&9n61`q<+El|tp6%*hAGoyXy{S)3f4_VP!w1RT&DE>gC6_3; z;xs@(oM_~HUz%+wg1qDiyd(jt+{8P8Qq}+1sntOqSQ<1FZL_ujI6=q0_TN>fAw(!e z@+4Uh<%R6L0IuH|!Pmd|h|w}^iW}%e5-H|+kAmgaK4}c+0nru1+aeynkHD}_Bh4Xh%pMF|k_fZNSrQW+kLj29xJ{y* zPCQq!v1>stT1h=SmCi|n#7Ekp8@OzK=ZHcs+!tG4q&Eu0cEcYc*h#s7q^&0+f1P}_ z@k@ChIb)D1vS5dOUXy$-t9QZC^qUOWAjP5rw)j1GdR^7W&1iX;0?tR>_ygy!Of*%4T)A1V8|IU5_?@k2J8Rx70#BF&i)2s%-{U4`KLMB>4_`(cI*M z0Iag{M!7xko`3ISGT?!IO;{E~G9gIU06inPjcWgL`ShZ7nT$=u-nDtT<6j22KLG@n zYY9kLhFE(3iv6(6y_M{w)p75~6-isXAv8~27;ldxT@|Nq|Kl(}E1y^kXw$2{LzH)* z_KdyU4hjet+84c+z8j+Zm9TSgeApe2nro?|U$BE|`}(AwMy|)mKZ#Q?ZftbQs8v+^ z4E3%{`;YBNm8d92u2_CO>>&(~+$OA{JJUpG4-d-#;AN~a;=eu-+9L~|jp5;KRmYV` ztcp-PCf*wm*|9sad40dJz+`L22#E*vcR+I^$o3$| zQnKvnZ^}28I`^!1OLh~%Flu}|a&7Rrv?}7FD*Sdhr$hF0;avP9%X+1lz6f~VUjoKQs=_%-Xk<5wua>+myIR++<2AxY z2KFV>5b`+uvqu2Qb;Kj;X|f-MC*I$%5U3 zqP+Caro#!qHF`-Pi{HUBwd-Qj<&zGNN^B?&I9f5UQ&Yo=%#%Uu#>-~GrXIrZ;c~W} z*-xiG+&ko)cOjP+y#iN98C^Z$i2elf{y7YBZxIugNp`Bp3-jhWds@Hgt;HIUC1pF$ zR>AXOMt0Oc(|P4}Ni)27>waVvW2Yy2mDk|hl(7>TJ@UvuD$)D@X$&DFx$jwxJc~Al zjkXus^Z5B;uWA3z{?rl=Ugyz>{|vX&fyXXP*>*H!IW}7V;cdU#GheHGA0vGT!y}v0 z`1JyKMx*tSgd_WI8tt=0GJp%9b2ixK&yI#$qVNOC#i`9CS5r5{_NkNq?oFtz=jOy+ zJ+n=cKwC6Y&p;N~Rb+$B7QGQWx>nvPjD3PA&?IMpc98B|^*!>)BQKF=e`ZFb-X^af zP*6Rg$g7EVdpY{AJPvK%65$1QO`6i;vkeBokGBm+!of!Ji?9p5E-S)Fyj^xj}W z!UOR~izVZB^pQU6Or6%kz&aay*&`8=EoRD6lNamszFa2?ESxopHf>hFec$%I0*P{Z zhXkedJmlbWq%FQh?0)%J-mgELqv1kqVf@oda8M)Gq!9$TJq{|j{MIK~+S$PP{hhqSMWQdKV``7F5&Ei$J=h5~fzgH05y(_O5DP=&M(Q4PI z>XSp3J|reXS5UDFBtEN z@Ife0Y=_&^`1vMq&D!da1XMOSmGuI=TJiwpAq*V{e;dh6k_8>4ZA4$eUS8MM+~(-n#vF)PnnF!q4e$M7N*!ugIMS`0Q)z`RjhTy7g8b z!tlu75bx`V5%}sv>8@hA#xCLMG`d8Zmw^12=wB`5b#5*If1G8IR*X2AMlK>WY@`Yz zq+I5^MB!9NkxS(E5ijcTSOO#v=fZ=gc2sr_1clS-oFsRE~E@ zHh*lbO^>mvLystU_q-7$jD~j`xg>E?&Vd~g^Dd%r@?CX0$y;=1GJfQdua(t13{yRw z+wpY5m0RF*#g^;tZ+_k8-iFCV|AyPJ%3NPFHT1QzV>5D{sD4rJLl_?UBDwYn=hriw zlsgGRNSZeC*^N8?X6h&!#ZQ9oboz^AAq4pwwl2LBN!2?#!syA7vqv6r?r&l?f7r#k&Q?y;*L@loCDx~2eeNX!gCK!coobVh8?1C2T5oc`x`*r zS^3Lld!cyWH4FdxDux1Vx1o1~aBP1%awDhdY-gQ;i?5bD21I&<*Vz8f*+452b4Ayy z%JB-l4`F!Z%ViG))=cAdQybUD+{p@ITM91QG?HQ~bxKoo`yx@GpdZPCP2EnfS0K7x zLKO08f5%^NQ+_L)^Yx(hL*=3~?<-}yY|h~*L#{UX$~`O0t2XP~+g>)8^xixI=jJJW z-}rL6q+xNI^I7128SuZr74r~=N4{9}_-n4Y+)qQ}HCUuD)>eRDu$9vKk?$4HQy`S$ zC7uJv^e%MQC7Y334;vjr-m4&DyIzHeq(oq!5d{cuas14!opkwwjaG8i19G!`A1-+0 zugdCMrS0fFAUq@xm$Pc{_g;y{a5hr?vLxsI>}h$qY>&6B79?CW{viyH{Hjb4de3KQ zK5pdVa*J+j@GI$%1`nHz~ujTO$i|s z%zH6xlJTQng?m&?U3T@Y>8)Q~t=`RzmeTc3H26b6|1x`Duj}*30QyC58jr@E?c$I; zy<0xEYkrd?+Ny0mcgFo!Wv7lVG}3ec|CV`1K1&d{-BP|2Tjoc9F2_0l=C6?Y$qG|y zUsUN;^y44==|6@`s?JN!S>285%D z@di}~u5He3r&!Vl@e|PGAEIMbk2_=`LllV4O|JsG^78ZJtp@cy55+>Km(j~Qj1TUK z9(m-Y;=TJf5DEE14)oljIMDTiB87UdBuwfIT4~PPF3X1_^s915@dRLa2*V?%W!tGB z5}isLb-SWZtmw%x=2;~*Rbiv{JxbVwRf`A5av zh@ZR9qB6h1x!sX0n2*M%+(gWpMbSbQksN8e(yMJQK|_B=*DW^P zEzXe2!ui^Qd-2Wl(x|$)E_s@HFZ#V>*UN=+qx^gH5Qayt$yva@N_Qs_2s{odXfbMU zK)jpXME7&#zK(l!{O;hn9(r|LWt6d5yG#^m=r%Y5TVeSYq(c6RradKo%<_2}2)Op~ zcBa|Z#KcgSREr%=8S+WZW+peJdE}8t?vuL+glyZ0j??P^uh?|2ur^v-T8$rguZ3H$ zRlv4A0{ilRFU*sS-RD~GcRkC!d>+E^!Sd?C^LNQr0KOVIenmZ*^#hDx;QW6zf3>MN ztqB0%6%GZn6On5!2DNBydKb*xCs7s1E9SBbQobowgs#W0){SrqBu7M{NL;=cqKYk< zcN6)=vOyG1*myqfBai%o-1UlnZ3lP9NIx4Oa-ycP_#MPRH^A5(hcW3h3z+Tw$SIK_ z0DE$-uGd3bRo%@<~ML$s+*lb&?*A~w)b2(*4#mls@PCgys zYYe|SAV@2Trx9t=Q96+k{md!8MTidxHq_wUY$pb$+2~ScTGCoSKX@%53#lQbXnbnV zzC}i-<<>9wgPVg#{+PVtUAqx8=Tu!K4_*uGWD#a{2a(B3bAPNPgFEWz7v$*w{42fm zb4;kI^uEs5%Bt?y&n9Q$*=Kw%-9s22d5Iv9)u1>3x_WxNzZkJCb~cXm7%(qxYElBt zv{%4k(-BXE;~EB*R_?ksJr%+l9{pPDKPeB`f8<}6oo`?{z4UD6T=9CQe8MPHwmE$X zNdw-`i=G9LkN+O|FJ$JfBWSE4^z&O04Q?|Bc@>*p^db=Dt?1uX zgrP?PNlK{}><{xCH$W59okp4?foxKvL8(@CJ$MH|uNyQEOf%%~lZ6=9JLw{@@8;*J zWMo6wm$vIlynB*8!bE-*?AjA=$b#we^78$8c{~0Ec`;baJnGYmZQ|S$-2?ize@fW0 zS*}&n*{xU%{XiIb$LY_^^rSO#k(j+r=Fp`4eodm4FB-{o>ttW zNRraxsXhwaAAfxU5?}+Ij)aOyJxan66RIM>b5ll!)d49 zVKzTkG3}(hjw~|no@V@(T~=Q%2$a8BnsdF1kAE||SelhhZ;~C(beE(W@Y9K}i^$&O zmbU$@ow*(~_x6Gfop7vUL*5&6-8{YWiyRdPF&{OGJg zzx?Fu$g7rSw^7prwU(^}RT;CO11)MCly+*4W=+ObN2E?y!^U-X*Fs zc02q}D8M7P%R3+IrM$evSI#}y$c<$mxo{Uo@w@Nt$*;=pbe|sGdMNC5HBCB#crRT! zw0qqJBM}if!1f+hdSt|Aec!Wfqnv)8k-Zst2*V?rZg?UcM2nbS9QO0BL&zlLsYTnB znmq+;2^usHnG>TeXqQ{8mbs=vqJ6I>`*6E4c>ruBxxEILlNj@!*>P1wh?c?p4NalT4A1=2w z6BiVnO4@3;h`5iJd)^4MBhYC>R(6)`VGuKkGnHu)h<1<+;ge|OAT>!2dP7zPK{=vH z^IXzEN}$pU=vtk2WaVel(W92v1MMt4F$(3T#q5Z#^o~d|Dd2B%6tvm&U+yUyx%zPV z8bcrXHNp9nCsq82B@auZq zWARGq^8l3MYvVh!(`Wha%lfJNJu(k}2*W=nJ~X~KE$NatdIzAcYC4bt$)iAZo>Aa| z>&UxstRIjdn~uzb{t|wcc3p)mL%;CIhniNDAq|I8T>F4_B9TD7ZfTa_n%oQ1B;KVq z<2Aey0rW<~yrc`V5ZmV8*x^#=BwK%vJo2UDBF7CC-l)`77|rZisMO>IA}{rww;93o zU9$B^0${z@0&`D-8!v67hi{_%YCtIR<;=()dAR90H}&Ts41ZVl!98n^yfDluOppPi zf)pSSUL~dkAR2*h?h*n)QaDjyK)+jEkHyN&lhA|_raomjOrI*n?%))abCgGB;1C?d z@;MK~f-Iy_@<~t~5P|h{r5$nXi-^cA`DV;|SimEXq-8*mx&R zxC(lsu-PZU`3eABfBsIyz;raxC*XYwzFS$;)OoUI^Q+v3L_TtHv(X)pvOBtshcJAI ztj7-SApo11lIS@*QgIQuC(M}uxt7}OPC;%0s)GZ2JN2e=+Yo^Zwt-WN7+F!t8=R#; z2+bf3<>#U~HOzD~v&VhXnb|sZ=Hj!K%FS&dBac13yJ&?1K_9-{Eb zE96D*mD`}daPG}%!4V-MSIoW%_`A9m`hK(JXsUkA6tT@ybR>gY3u@`RI)(^H>m%OH|E8loxH9m8Z*1w4}lthDWVf zf(W=VQmtcPceZss+rm5P)?d>N^5=NRpDWPck#{|sol&Q=>Q4amQ0^oVp1z^;y(EpB zf}m9lLV4}^2-p5?{EPXv!o3UQ-uO}X+Iupb7!eJY#z?b2na-tMLAQ#wEp<9KAHwiO zf^+$=>w9rK+m87(0wy9T^}wzK#y_CgCnqC~1AJH0o4m4{bp#>-5(kgq6hDFBG{_R#gBJ1p{hg5_^1vb> z5s2bSpw33osaK&*uA_ErYGMN@ao^U66Gj#}PrI5}w=g3~@5EFx_0sYXknjEG(t=-c z=&7hFB9KYDwn=qPQNDSVwlpWr=&;Y(#r8s3}F zdTNsAS@5o19f>VhCzc;DJWeYuAbPwq^gy>cb`-Q}AS|4gY4tX&=A4Np$^lHEhpmW$ zPx5w}F6SN}4#}%9_gUJ;?yO~zfOjZPqHOPT#)eG9x5=m2@yH|hN{G9o*ZvF+zllUp zT~%NH^cAliI^1d%HpYNhydAPYb+rQ%wApiL;2rdgRJresGSQo#X2##^fl-#s8lRi8@P;JvA_K^RQP&jK7Lh?ZlVrxQ|@mw_BW-zkSAW-VW zu<6k_&TA+?bz#a12!D_SwDE|i)?|2(%&C<5l>KKNHfOeFVvNzdE`sw24o!!)NBy|=A_*+4@Tb-(Kc@yIn(rc zM4>?cx2=05(0idXAng$Yj;^ceNoZOE+_mW8w+xV1dYi7F9WiwtsOiMB%R?AGNLB!Q zmF7(PtQ{C;KxfiE8^6Mx7UZwjK(rBJy#fWo7}@BJ0xoR!0K6&#AqeUNX1gqj`{%VFR}Y^O@v3_f60`AfMl-%hLXL z3`jik2ujeaympq&Ys4GbPL;(O`Jy^vh0H_0h~eJ4(heiobwO;XDAS(@Z5xz7`uaK6qA$n%f-_8#Niw{EX>K!ai|< z>lTLn&NEPjSqh9bkcK`a87m%e;geX7>StT&JL0@k8ohjhtX_~$tC&Z=M^2#sv#(oK zf3Dkchp^G1IAE; z_pZ4=Y&_XhH&#y<w_ihY{c!k>}ah5;+xJmJ0# zn*`ylkofEH_f@cUt-wfMgUS3)KnebQ3@4sG~qu>U?+tL64AOJ~3K~#5% zJ7}>x;(tXJ88jJd$FAh?{~1CO$k}n0Y#837J(1h=S4da%Xulx_+{cc)8e!UuG@-{W zn>q}x2UZg|A|p}$MzwPt$wL?((K1#bYmjYa*UMnW%XPL3q9DT=HqV5Od$2XCBp>Yn zqv%yY@=%=Sg?b(^o+Kbe69q*YY3lSCq^F1pWc zy{P|M^pgp%dGqeIzB(z7=A@w3<4JUtN{5r`*a!x;G?`fTiED6wHZl(nvT?W zAksugu4RybzmR-!N2LmSq%j_8P*6pZ38G`vDj^Q+=~R)n6&_cmYduVO7Qo0${m1s} z&EM0@Ab&Lybn|D}+#j#V;E}vk=kFOEe@(uuTxY+5>i)PV?;8D_zt-j_ZDXTJyPgQ8 zFPAM<>7-2&WfBQbcK*3;G&&;+s@-o@^?N#f2i$XuRcaEoag!YE5C|jnurW8hr%97r zgl%~U!>`Hjl7=BJf=}2d0O}90&XuWy_`aoT8M{Tdc@Okx0#Qrt+p!)WtRe$P=(J0Z z65t|XNiZa>kQlx|H7QUYtzGcKAiOtZV@g$l^%n~=AZ@`cjPWC=S$iZ&*+J`>7B(x9 z+Lh`=w);C7CBC6+CM_c2oA}5hk8DdTIWWG-B}R0&?aeCO$=HeOH4$LLT@*1hsDp!4 zVI26a34@)UQ<{ud$4-7MPX?YP=r{5E3D6=BIqDykMaQYcj>@MX5gkg8V?W+!`dC`@ zn694XLl}Nl?ja2>=D#%`-;Hnb27@BN%?8#D=qJ{&wG2%-ASEI3^N?i6u6@v?qW&zR zs&>sotXwn-!Stk}lh}rYOkonY=+i~}v^wxC7+qfP=LVb?SJhz&V>LUboJg{#FZq34 zuCg15!^1fq`3tg*c+X7R$*GE?lWp&)IX936C+-+<64G>((~@gWYz7`dz~7#Jv;C@C zk1)Z%OAHQlp@4Lon4^j5M>0K@%X%g(@S!Aw5SbZ=KadPbF=ciW38J7#S1b=<_;q>L z=;0n|K%l+?@eOjQMA5i(SbzfWj7-3^BL&C-a4VZ|>r_Gz7=bC~B_xY6C~l3oY8Y4%`yq?;UDz> z$UiE}S3f|(8vvO`_42OnkA;p(FO$|R9fhrIRQNEo#Ksb}h_ zp%=mGwCoXy#*~hq&QD>Ic^X1MNEF&&@=SIiUEf0(K1QN1@;uOw?yutV^i|BF^GS#y z4&v85OTkVZifknjNZ!a_(28ZyXHPfyUlvBOrj zwn1g$Kli3;;RZ>OgG8hk5d_nqheu??J=5uL8WE{W3G>-K^2om`$==NQRM?>Z)>nli zI7`!x=82bM&*H zQ8b2;$@^t;skhin%eF|>N(MQA^B36Z(Hf+aZBt1+Ndye&K0F@`w^LoL4m$BDa~c!I zk@*f(1La$#l|MX!cS#X(SCJyk{Xj6Q&Y%LOcmN{YqqCxUl-Fsk%WYmPwMu{HuKUu zJ?S#pa+vg_+&j|KJcQxTh@E&6eWoGk9@lj_hQNTlNhiR1fqa!6Y}yZw0O8?moggqf zh-ctuJ;7lm*u@H_M(@S0Or?}kn?&~3W;#8|sWca63c@k$kP1oM0)5W1fw&7Z?&#Sd z5jyH7AP=Il26(M6lfN@&`H|TCAr+6jTYh6S+>w=sF$?}dCyjf>qhQkRlXtx)ZxyRy0zggHr z82*%8^ECK6iyLY4okEbS=KK#^Zf2 z?EWBt_sAn}6x^oz2&I>fhItu+`Gq3YrikD>yu(?K#wp<=<3W%_2E?nJT+5(H1UcM{ zc@jiYLoN(iaKhwsGKab06s7}}KpA)XJhX#}SC(NXiSLCygyE0K1bPV|MAPl$vzVHJ zL;WlupGp>id4 z@+Ieis6@s9hqluXpZ{G^h4d@h@O^ zQE1#XNqGqbq8{X+Xd`GiE_%i?Naus=snG>h<*w#7Ck=~MpA^TBv?-$2Hgp16g>crW z`r_##_g%Fs;(_`WhCP7)kw;>=@{PC+**O-%0I{#>;;u(I)OrBngepmlKH9;_CVQ7}=5c{JP>~K|9L%Gw)Fz z!tf7@1kn9e2!ZHQj}Pv99^9Q<4^TVLWf-R^i?mZW{w{DmLll^AO^p6y%p?6#80sNV zyC#+SW#X2phr(L1{6*(U3ZM>mE2@1Me8gMh;1aebRXJd~*fkqQIn#Yo+&*Kg=ULp! zf{76?>1hZh;XyFB66E0<f&LJ^fCE$s3%^htu!P@lcWq;)LB z?lA)4=qV3jc!UWBpfHl&1c2Ys+r^A@4?sMDEs~mYd`x{BQ3v={OjByY7a+YN=C3?~ zxqD;KtI+ch6``zQq@hf3uRRKyI7ywdatv`OBu@V+D$ykkM9jUW{)B>5%f11LcVY|B zd-^K2{Bi!vJbgkn?=KXYPIm`MGvCiT=#wO4-XEbzZI57hRTnXM)0e8ucy z!~i~y?H^u-a-176se*_DUVw(@EQF*%p7IRSo=9P-x8X3pmZr*q1(Mk)0G8^&>`B)c zV@Gxxn^+NtMa}(D0&=j1Sp05=6eQwg^f}2j6^mnhqkOmZzawYs?Az-49(x@(tc{Vp z5wwUjkH}pc>t2=L8|c}~cU?bRPp)SO+tq*&c;>LP6!6;9C42Y=gFzC^&uecxQ@gf7 z#y14QfO+dhD0Ja6+r-{3dRF!?>cXot`@8BIavsP-82+F{fRM$@#?R=M*mhpmBOL*R ztqf!>4}TjAn8$tTHK=3vAv~;1j@2lyfn3vZ=uj?9B#MZ|GC%_SmU<~=VXeG3o7DIk*B0Vz)g?1a24 z&?pOFz6~xu@`xwooxk9YaKDVjh)XSAz9i7iWNQnfg-SADKrW z{Kf0&H}0O)!9B*IWT43F;}BUH=B{seZ&-o*SPwIcMxXzJ^f(V;_zKbB=T_Hk z(&6m`Oe6jKTqH4aM~>a}i{>>V z45-5_HZ}t{b4t<=sBZcm0p<1(wQAyXaL?jxgu&uwR!1_uErTAOwdL~bGUnOkE+(JOe>~)D=DvexUEjx(nM#2^* z@UTknGZ5T+C=QhIa5Vtg@^H0M=(MCxA}QHuT2H~aQXdqW*-=Qovh1ubN(<~NO!)Kd zaUa6)HF9Pob4n|fP6^U+L@v(B%CSBq5>#m7NP`GBTdo#o{ermH$^_l4Z$UycE`_>^AHERB(D}Y3lcKpSECo#OO#Gn z8qZ4;8=k(%^$yMIMq*>?HzX22@(_lv6ZX;Xx4Hs9FUL3;{PEJXBDW#6)-gYXr)S)6 zw(Vr+F4!HDx(-V+N-e{S@RRn3c<6>lge^$}X|&{G=rZ#vYKl=6YZEkim^$mIS4qf> zhr($@>nbs>>fq(IzRP-OhTwsHPXCKaz%&EHB)d+MiEt#Qyi8XK2#?wRbg9P79fkti_i^cxKVjOT&v z1T=tlQ{Y+tRRG?(uYcRc(s<48`T5#>co`hKu)ZP(JK3ShiB`%(7#`7*91({2ntU)F z0Pw`(Ujy#R{Q_I1PI!IX6-Zn*BAq-89etXSxL*|bzd{=Hs*4Hm<%!Ns^)Z#LO>o$l zBo8AZOhJnJKEEND`?&Hh1D^#m&jR>+AZSE3f_HVfOA_2aZ7f+-vXj=xZvpo=0=P#W z`4vgN81N8=KP1t|{Ubh*(qOznSd?ci z_SGYRtYY5WmI+FK4sjdPqK-XIm4+rTn>_oVlKWGuvAs1p%5MA-*E|jC-aIzG6NP^N z$768h+@>BC4;pflP2+L!8JcH$Wa6JfpcfqTSSyc!pVEkmwju_eUUE-ykEBgo7@qra z&Zqap|85?6MID0Mwh9r-(#}y%L~`0m(Ds4MX8L3nLC*-riIs z3FLMBsmp@mN(q4MD-4Mc)0q@dZ!@fzX-QL;v_;tjdCGE`ydbCJpxfa_3T+PPXD(dROl| zJMiMXXbrFOB4kG-v+~f5N8TwXK)y(F@7ua>ODe@_P;be^P_^<7kcz20`8qmWfx)

1iX}>~UmmYdR}?t^$$>y=wd-P@SGnHiBODWj$M0kdVbM+gpDm0 z*$dG>7w>BL8b^oAWQoCw&;VJxT?nfl@>{_DRim_zJaUtq{xrzDeereAo5BIG4NZdj zlvlzb8=0}5l};RHhx1J;})iNIZwq)ko5!*nqi*Z1QE$f(QJ?~n~pOs6sZ zT!1IVY^ToiG<6rqLm2*yL{RXWtVqPf$gw{`$Cbd>*WWT;obHLJowPLF)+=%_NRI}g`aXCfSVc5JTv-1zI-p}=G^`)0HRY0#zh zF!*`!zQ)m4i9xnDPJB<7KfARL=f=!#RrAOrr{pwvKacwT!_BT{lZz}tFS)^WhN|NQ z&>Kd@iBDBICm5Uv*mMZwnM`nO$$=pl1o)R$%zaHF_&S3kJO`MT>1jYBuQh8YjvTdOry;>st4$D$j2M0b zHMmZ>h!f5`f?C=7G$t|N$?htH%&W(K0m|N1`4_zcZR44In*7D*@dkPIW6t7oPu$3) z!|}7+ct4zY-k{9VE3wGM@l0fOx#VY=)bWJiZ#PdHM}loPKHE9T1LEWqXqASnO<-xf zX-uW?sZ3hmibQCy0woIq98t0o)G^9K7~UdxF!lRo0&y9_;`qO<2oOFZGZ2s&$wte% ze?fmNvxzu%h^TFN1LR_B&n|aIg3(m)vAeFsRHcfwNkI&~=Yfw#k=4r5Dnw?h#rhA%kRs(?j@NhOH4M%S1 z#VBHnSLJO`TcV1uz6#xiuK`y(Cb7?SeEf$!Ro|*dT{NuiYM;d-Cn~HFm*p<>Nv*sR zCp;3nk|G8qjyq3w;Zbm9wTpd^Z?bFzJ9;l&p=0_}HmO1?(-wuQORc zOnSVBFuY7|b|suvmmO8b_p^7QDLALL}P6O2w61S@O!Ms6QTMim?nHEqj ztt8$fecvZ1j*cYO#&;{WC81oE?W9p8-(1S3{yg%?KPlB*TvO8}1EQDN!l+IdEoh0C zY59%4_In|T`p8w8C0G$~O_@W$GmYcT-)CE{lJgqWZ+Xswx(AD*0nD@TLf1M#e05!2 z{k$wtN2G$xJ?FO!dkDizWY_(7pD^%#Etr0zRV{u>*TM;`f9x#d&Z z*^$i4f0tB$^@t@f>6eb zJ4gKITprvFX==cc{{G=jkAU?)5MKk`O^J9ZnjjNHo%I6DwGkR=*Zxt9TTO&BuLIV7 zQxnAO0&49`hyeYJm+3-zjLf^5BL+y6TpectxZByLs1iiqvEkfT^V$@TJn~%?$^-nBe14K0mwwZXd`_! zdAQ(SoT-4IKPC$>JxQG}!A^uGbwJ4i^KPvXz(W{bE!*GLeWQpB+_$2^2lo5yu)zP5t@ril_V&x6UNI(n>SieFHWP|7Bvm@}*I*RObj^wU- ze5X9L)BA!fdNCzVcLVuC>2|;q}g4LUI9mzu&Zk4Ma*UremJ*qw7 z#DRfTOAIKMSGv*LzyKs09d~w7QYitfx1!f1)S~jEBk>MtD5V}cESb^XhBDm;xL{e% zsT4aL$>~as3?w!18n7Lo=5v@e!bxLwf6Y2X?MYEdlEeUpL3~h7hDuDFD8F6D1bd5j z6l6ZSPXp+`MN}SnIft(&RLC;5@ykMg?pdhwOMt5Q`7rgAp_vB!35O?RJ`qv6 zW6`oD4gHkppBr-uk)9${Kxa9&b=4oUY|NXwlpnWT*D&&Eb`3&*Rb&Gr?a}o*e<4(_ zG-kADcqOv{{-I~*iGl4@^6&J%-0fA^?4(c0r;(CJ{%v_NDLt+J#dfV2gquAdZMRKh zVE^g714%b4YvoK8j3XIj(CiKMlP~wL$^9}<%(3arxg2>hNU3L;zpdu_wdS0J}TMNsW5JD&MS zqzxoN0e2)9piz4&#N9sfFcG{M%yH)8k5ibzOVOt*74SL;)vQ?4q^cvBl4t-OH5UH; zBnV%2B1BKvnK=qu)+X*HxD`T&q$ZW<#qxL!9{Gpl)c1HU`mKtG-6XCv_^A53FzY?< z$WoTx1ros<2cpsZp-E20pPhU2rR?I;?>&U!vfS5lt-kv!(gJn;p8Xq5L6Y|^C~iehnE|X# zwDLpUTEWqOh}X0yfmvJo2Uo?|zuZlU(iHiHdW)M6Qc_@TL~Fw=O&n%fro+T~9p-(g zL0H?MOO1`IowCH9L7`8{-jjM{zS9o_t9|iybAOJ~3K~#=FgU@VU*<@uw3QQw; zBkBHiy#9C;9{J;P*Ee?hQ}L$~`eQ3QndRbQKXF=BSf7<%E|X!Rl4T9Bgr~Uv@FoZzsRUqD3K&|gX{%&49P2Q{EEsplWx;%v8l4MQg^HT%ljbm|xa7nYn*$ zvK?)*4-pNd(pg|c1Ghsx>=#p}rv2DKkrTOrPh?a&8_zKWlfL{1rYE3S- z6OTqudKNHE7^MZjK1e>+ut)xR`OQAl{VoEdQusUxlI1{CO0X?YNXmw!9a& z+R{2G*XKOQf=qA25!C7kt8^08tkL1!X|fg$JD~rOldKduBlRn#(z^)$GhjUf)U%*J z7OblgdX*G_OFErynV+ZPLG6z`V&rX~MOA-JivY3iZ8wk2A$mK1cPSgbiJT3AJ-MWo zJgvchbld@*p$%p}E1F8YY7vT|bi9#uQdXw=C*hAlRdh4m6(~Q6-BpELG0sXA} z`Z|XLAHr}-?r+S_J0?x-6Z-US(-M#*$@yI-O+wDS^q>!`yck9?k(PvGJ=VZK?PRK%ZmVk_m0sZ>X$ zm)A49Go1ys_Fn$C*R0a>3LpSMb_A*i&}U~cjO%Lh#cflKUb1-EuB+f)0?eCL3->6H zDPDx+Vw{ICY{|6-=hwRMt&G>?fe{A;={idbV&%wo8=r*Dr;xn#0c+Z$A>%0z0ZunU z(jZffjHO1qrlEuWVbv&@ATwmkO;+s^~mm&GjXuB&g$9( z*P5W+oV`5qh>$mZ2bW%Ja(d=wp6-50r^x{7SSZ>cIElE4N)v5;FcH#=3Qp9vL1(2HvwjN&(>empP);dB5rKS+sdxLqr}_zQJxwSO=JvdvNR%oHfpHvS zVBaeClfAjzZWFqN)$bSvJgfJSM?O`q65ell|2OTtb9`ZY{eu(VwMn$MJH^~iu%Xrq z4@gEtR@~`G1}JOaJ%V_94g)!84S_i$10w#4yikt>*{R8^4_v72^@BWp4dXq8;gK!T zK)tZnQOL^cU;%#-AB6lYx`rwu%8!1;6&?xPNvJ{C)F*r%O%tX$JxP}dv>3!ch>SaY96p^TKuMJhUwy@4^10xrbTT*it6kub+D8K^npCAV0g;>O2OD^Tr&hskxdgPIJ zOY)sJ?dEUEuNyGM87T37TJhRBKk8EHf>f-6w&dt*RG;dN3x#1YsvhWIfF9!wpzrFd zD%=tU(Z5Ds1pxlierW?IJ9Qu#mneX}sxBPjtq}A#KVGvDW;~i-OeFZ-UjXYX!0^aN%R}!@ z$R}3XTR%ISnVWq$ShBvwMu*p?ZGwcW(V%1Falt0mWvqU~*#}Pc`Y$00bf+WnoFsV& zi9)gEm7V}*1EyJ$h30q_*pw=-Z*-r@k359o#q!r7fh7(-tik;*da6tnk-X_dJskpk z)Gt9j`X^M_K?th&c(ljhXS&kF_-%ejbl?SiA^pe(wO?!#9*Ycl0Fp%7P)@9544Jd6 z8wZS&v~HnK_a4a|l&D+YOX+=Ok&T%zv)QXp1VE2G@(+0pf>licCtaqks6d%8yFg zEaD1OjviHQ)&JSM+C^DWT`BYa@67zzt6NAapMcuk)V*i+YK0`CLKQ*%i~D#z`^=@! zTRb!wiCzFTtx((BUTRgo9ILH+)}aCdAFu9-Dj1gxkOSsBfQ_gyur69MDunAtVp)hS zVm5BVV=ldR)@XRR77RoVwy-}EUNZ;ccx7wWJg|#hDTZ5Oti;Kl(KBYgQ7j&T(C_Qx zYDI!n4*5ia;vewy4cY_K>T#f0n}S+>PkSP4!SDnK_gAvJ$X6Z!>ZdCq(J1Rc#R2{9 zzyap}IiaqkJddHR*}qn`C)Tf|!1<8$@xDF#49J0QQx@M@3_Ji$vlj<{vqh!Z5g|*^ zXbx@fLHFX>E_z&r>~aVQYA4(~MY0-b(bcPp=Gc3a$Tlkb@s!Dh$56SAjfLp5vh42( zrc;I7q#aM$r2R$^ZKou;Xh|y0Fev@EX3z1PFTL&mY=<*WumN!g83kGw3I$M?`<6fU z)^F3Z3hgQeXvb)5xchJ877QlxH|A5QLl*7*?LHQ@V84@Q7TPiub|bw!pmX-65fw-C z1!*c!4)9DxFGc#y1I+>)?=Lx1X@igUZTl5k`}Jx%+h6I-`romY_Q**FL2OGL4-)_{ z+ZF7G$LAFXbTG`1v>SQ9QdsENOfhS>Z8wG z|Mm2j-_F1xh}G9bn6zt^(XM`S3r|7v2^_&KB<3e!phTOCfO9)5OD2wJR-vDB`ePjvgIl`$uVZR#uu(ZQ2Qehn#x}!n+65 zVVv%r8HTn@*CBf{0{U=o4nAT5DxQ>zY-i+V$j}nS{#{yPV*}!87bL%Trbjq)pp67q z#2=89x@?D!Wu^*|ZFxfHWu#H;RlXG=`gPL%4M_Ftha?hE97q7PqC+D0?ei9>3=#_1 zk0W;G6CVTHrkt=X7$B~b^VfRvQ2iFQnO(;;%(RLov)SK#zFaHQ5_`DsO@!O8DEA+Q z>qW!M*O@x(-;$)f9`*etXa1?Q_E@B?|1?LFRViE;_4TQQ!tI7~5D0iHnh|n}2uB%d zaOlkpP=k~xsLC&5X9{b18adn8_`$3cn=ENITNs%Y^xpo3kD20l3vJGtk;D~py_mfO z3GN3QB_jX&0beoN?dSXKFF%uiiC_`G#EhPWfHBD5gU|#8i_;PcO4dQzz6HYqtm=0C zb}7|twrfV%zM}2?L+$=TbM2Z-EF$_ZOmiDJiy-ZLi2=0zAfn-IrFlzI>!Vh(Jn8*s zX#@-r6$dXb&gYXEkayQn`s2X%`hERPPenkqtJkwAxC|=i5hI5(s0cl$0kgREv80?; z1wTm6Hs+(MKYtUK+**N$i<>H8z*l0TIgz08%%n=HU5nn$8;~Y$s4$>qMIu~r8A{&8 zGJ;T$hYKklGjJ)B+q7}xhhbj+$q{gL;LLZg zb^tEhI!7>(5gA@nY(LJ*pn9S$L2R+Vl_5hD3H^3j{v7wXjrKPX9b`_gEyuTWaUmTG zJyuav3EPh?816%8qTehjQ@~-QjneM|9B;Di6%O6smA{^p+N)%izr1dc=0k0i^uM>) zbHN6W%P9UldcLz48_&b@?vo%g2N1dyQT8=z-{H`G97X-BextP)m%DYyOuz32ndr*TFz$eZ_1X$Lm6H z4z8|Zq)>8B$K#Nh4*3e&cETdZ?6-5B{)?QmZD2;e-CpS!r)Cs{>;$n3%UR!5P>&0> zQI7C!!JuIgi5@en)E+XNt9+7Z`x4}Wz|KOTzw!P8WBGTp6+-y?d9JVEd56b4Wfn4x)xE!@$MVN=SD zjg?q;hb|bv;%k`EDzy71Ti6%ZztRssYb(4!zCaIS6{{I5DJI9 z-05Xo6Eny!DB=)0uzX=+m-VR z#jPNq_PoUVc#9B_c{up7RHY6q_ZOeIWXO2ct7Mn95#|=apMqDJEf_jHu_u}&Lo#L} zb%e4#(Z@5?E$QXLppb2xDAPK8TFHwL!)L_LPMDH&3|&AVA<_P5mms0#NqwL_QGS;r z%aaOS0@Mfx`Dn=UrOLN=ZDD;NuF4NX+pv~DQL?TJgtLV9^=Ko`@Cf3`7Fb5--V9Vs zZu|nakh~g~-dbsAtHs6|fh*m>Oc7-)+G!N%W)Ef|jD`c7VOmyV){Kk|kP`(waHW!t!LI6+DM(GYtmI2tdO zfM{#ghU|A)g!g_)T>K-@l^kDbI)&Hf_B#qRhBg|R?9+<)wW?<;$@|75V%PH777Lw^i=$4##|7IFw&b!x#FmfJSB0K6MBp@Iu z2g{S7h|u;oHU@)tC#*E`HrAwZXFo_@i#G zSFo}&?<~U^RWB@v_^6d|XR^rYH5*V^1f00P!~az;5$>c;=E!%bwPM2>>nX|Uxp98 zG84G&NauJOxStj#Bi*K_#W1H|35Qc<-#S?*+r30sSklwZsYOMC<{#PBgu>Bq5lbk@ z*#t5UE61hb#|6VPmLd%q46Z;bW{E_cj%7wIYyoi^#^Qr#4cb7c=uoo=P-Fm~RnH`p z<9v%!|5hePMxe6W8T@L33uYjCJN#`+v{UI#M!OXL;Tmp3JL{3MO&xLOD0(qFk2f(W z{|-Ui_<3{}yYC)+J4Q#rB_~1mYq>OM&;v8%=wV|>!d)MD9enq6q<4xwL^VUL$f}?1Nw}lWDKNY54JaegQ}c6K z5_t}x)^1s-^qc|`4M(%osXfRyk3Z_)Z2sR(URp2wMs6&_Mq^!Dh!j_GUqwDef#As^ zfFh<1UJ`T&TC6o|n1W+~t2@w8(G1}i+p+e-qGKHs%Bv8c%1otN5AKRx)7;Vw_OO=^ZF~}|{+K{rxcz7XnHOPhWIo`S zFkos~J%Jwxl})jr&L8O_;r+LiO=vc-ZR7_P3awo`qo6;};9ZeRCqadszbqIO`1$yx zg2Bv!t7fJHNWA(jSe}vn!l^CFGSCl~Ng07o4Ak?bfmQ<@<>3uOV;k= z&E|~9`x%1LlIqfw;>&{CtOd2#w}Jw7);u5*9A9|GUxCo$V|$&0sV+@CUwBrdP%tp4 z-p*7uo{Q@)j<~0Z40Z8g-g1jMn`c^VrXfc_sqFs<^4E|~>iyegJABg0{9DT=97bk< z2?6r_gG(qFF*{C{_SGgNgkIQ!fnv5;2+afswhBhybW=+zuzi!KEd-IeW^UED+~sIQ zM=vfaslk^h9bNf;2~REke(mq03SVnxugwg1V2RY1NUD zs6P)fiUQ|!MgXX?d;i3=2O^ewVY{s2dMK z(PkJ9{)|IwwRS|Gi;Pa6{{=;TAnt2GiF$VWlI3S+qV|4l7k3wjOQ2SgsaL+n#9y{&pPP2AHzk?zH z**lbPC7^5s_ortQ4nruQNil6Kwa&wj3I+iSvI}xy?_#1vxq|k$`-GY+CpZ+tH2WY4 z0nI?a^hm11mmkq=0KGx!Ta*s8OzHis!ogm6D$55fAdW6>nT+d1UD+36-kuDGqfEs| zWZGgK^1$$vdhlzL{f#IBSD8Xc*5K*a^L?`6PQl{y9XNLr55_TJA2fz%%7;ukx0~B6 zfpDNP35?-NwxP9SWfL?%`Y;aO1O>`Q&cUnf77Q;e=u0iCpLQuMDVmTomjkQ(j5U33kTRvgyjoe!z z0saljpz&1mB?|@Rb+Hv}1MplQTQCGMev9bjzJR|*%Du|0%TgBg=O|8IB_9LI7!I=e8_Fpv#wITBy0G$numTW^9MSf=FLcV-N#LOHu^ z0r|E9U!rudo4b&gqIO?>ZUsi|>-W6+w9twh`WN5VZU|%Ot@vl6ppj}YX z6iMVF)E0*|_U<3;H*Uo>7r?h(X3LMu`D*0HweN(n_bJCTGmaTTK`Y=T%UB?QlV)Ta z?uBlD|Lr_-SZv;d5m+cx zabG>oFEnHNt7jx6VNwCfr>{n(*@D7)5YmB^+9|1**yzQDgK3g7R7HX?>tFja zuISuEANBeZKFrpNzM&ECDZ}>08r-v_=$@-;zSj(?`$U8fBXQi}Dig=qRant(A#$t| zexU)452#_0ATbsF?}Lp|4xu4tG33mKQb4uwV}jutv4CgKy)wa5u8`mTA8>!_(1l9k zDx`e-Ml%XkX|JC2<1aVA;yp#hNhzslKwju}o@Hpa9&9-g|B7=@#{Ca9TP65Y8U3$7 zmIAVE?X1ZilH5j8`XRyKBfpEh%yH*p{y`5?R$$D4z1!iU zBl!hvQ_3SjQQ5D4`)d}S_kUINOX+q0TmEV^7ZAvr=85i&XCYj+nMjaZU+eU^AJ9p; zW;>i0j?1Vwb1@rVGR?Yi5pEKxnHy9sx%N1?PlZ)Yv7bPEg7^7on|bhneANpXYqEC! z$~wq%Kcwj6hD#VUd;=L%MS$?=-rJsGEP9H5IKz;`csDm;5z=d^im~6hS@7vNQYj8G z>u_$-GX(=^44n43An5<*DqhMk6k<_I67sAA4N(&iJf=QRFuI&b1L|b>*Qa&+_)QU} z*m!q-@sS25JQzl=t`$T2&Qfg5g?yDxU{r6!uiH_H5i~-I&b!a@y}%$_8~4~_a@V6D zj^CLj0Q^3UdQozI*aCspvFyD^{YWgLNKo3?sh1<|xdp=tq>~x(yO}Nr3Rx)apLk(W ze!0=yo+&Oi&?{44e}miXy)3DK@&_RIh{SX1i^RjxoGmmfhT6P>zoJ=)SZ|EdqJn*4 zMqixqIM7s-)hS;;@cx6I9^Tj($AYV>xsR{8WKZN=fSJaj|hf*XEeSz$14-;rABggL8kiH!<{!O`9Ht?=lh)|U#EZhMc`hCD-$eDEv;%9hCF z-RNC_@4iE`;v-^15F{`rYS-D*`Il#1kLO0VaUTZA@)QC%--NKg(< zEPcJbtL=LsWeB?c>ONs?njjF6kCaF_q-=sA{0BvX_Z63F0;C=e zfdbGK(K@o$S41EXIS3tSaY~}agQpCS8{dNAD{A>AnY>@jLL-6C5mB_y9R;=$AJb-G z`1med9T|VVp)@15#RNQp!QV_ifna2xBO>8wg@QcVqd;ZxB37{>#QxiYVdBk#XU{#^ z1&3G=-%Of40Qps?qL2`lFKI5OHSnOBzN^8xiSrlUXT1gK+(uhRm@OANd+AX168Ry)qfV9r0M z$$kq2vf_Hn+B`>C`}m@wKr8OaAi#2lNMPIU5(&xk{sV$x{c@zaWS-a%iGAtZ!0ZC7 ztI_>Lrh{!VYz$5u=}V13`C^x+83XLIHvc`#(`>{+1{D4K)MqKa)z|BxxZ8{f>*Qds zYKahOIgk;fkXn_CBVypYVEVIzFi!}Ggl1!dA+}U!9io}TB_2{nTyI7T7#@!k=aTct zTY3_?Utw?btxKL5JlO-)PBfEn@K>?U773!gLGAqmg5g4_v-W7ay=Vy67gT}?Ua$2c znvp zTeC#Qq0HI|y_?lhfn`fEavtd9gC%tAti(ox=`3!BL2z#kne|up%x|Iaa}nB>(dR!iMh8 zY!*XaD&^T;;AYQqrwq_?9rRoNI2)}`t@3T0)FPTIePvmfVF?i-ZZZS_6d4Ct!;7*J z=MQrhjr6Q@JG+@T=FCBF<6{6%;FClq?N`KI05fK{E8Q^UGeuaJ&Hm4*>u=+cUhtZJ zCVst)WKkl=vZ^Ro+_bz9j6nSREj8_6j6 zeCGkleo^)@6r(I3l%@H4na0~W2keQLaqmad942`B)D|i<8zGlF*jJ&ovdI4S#| zZlmd~jd^&8f}1Ci(LJAuBVj<8RPb5K1e&>N=CpLCZq{G!xsACO_DpMYGboeF2FSgX z?aO8n-eqqV3DN3XFc3s;Q=DCp7V~&LXxW7*ittl<9jaX3X;w%`BsxE9DU!1p5qOq? zzwJm9UTrx!PoRf^W?eK95%W+rTPktG4wGeXm2WE9xwQJR~w zy*a<8{U*%vi*1on z%08OxS!U!A5s3^zeCX_#BFThZ@Fy}IE5~C+=DR?y879Ap*xrOH{QJR}b_k{+PrlUQ zz+EBQIalk?l>PkVLFDzT*G^Ha%Z^0abo@xCwv}Sca}AloA&`ZbVQ02Th{vj53tui6 z?m?c<3Q7Ph6ViW!2pTofXBUKMi(s+P`gA)_Kk)J>4n2HmOesczvj$c5M@5BCVm>RT};C{p6~3pnnE8yB7Jg%3BLKC<_M<1Va6 z@LtPMR`0BPW{)TKH5rR_;=uyWgHJ)1!jju|c3bgla)Q5r9d&!6p}k{s<{bW}V30WS zSarufUrm+#n90dKi{B|N1R@B`1M#THC$6b5FL`7)>CHpxt6CTZv_9f?${~jKK zosB$L2a(vK415>DeeJ0A0_7$M16J=QkuaJ`iQqQ{!xHEhxmPTB_R7Bnu~1M6=W`5- zZz)@F7La^sR+T*=P4fDo&m8%N3F|R+X*LbDO-w|@&}68@UQ8AM`oL)k4dg4b*CPxx z3z-?IS>32|b(D#2Hg3b(Q#is9MzUdo--%?ZH83_)&-0-=Jeh^)QCWSAGn>GQS))rV z&QR$}{vE^&GsDE)FfNx5!dGZzt6*zPb!h7m(-xBWd6bM@ zVk35K&hrcH1cmg>ECR0L5yk$vJorMvFqy#zd}e0Qjdea|c0u2YST?sCf6Z&@Rt_=h z54D7;AmnnM@FIs0I^2E`@Gg)+j%Y`3x6goxDB7&v)dE3iwUX;SeWhoowI>WgcXUk% zUM;nXk4OTl-A>y|y7{KZ_>`0M!uTxs-0R!Q!b8kT#yOMsArp1-b zEyn~;-2URaH;Dk3?MdRG+czW;fnIKBZ7i1!e)XOOXp{t|K1d`awp*~m{ zO~=c2M)5QvIRJNubWp86Xb1oQY=!bu$2`DZJRvH9md^D0-D?OEg~7Ei(g+@WPqyk|nsEc+p}P0ffB z&F0t@X8XJjkt~KkI~3TT&LUhZ60+y$=LJK0vdzc_jCzIynf=B~j<{t+-bpz{kg)7P z5&TdV@3w_XMjKTroEp1VcYEHW5=PqGYCsI0DCY z4KlO#k+@R=;sXT2%yaieg5i!O1Ntm^=-B{i#y$&mre9Y(XDITUlzgJ3Zy`%`N&Bef zP zD53#xo}H;9_Tc1#=g6a3SX4ruiO-VW*+N1$i2BV;{)diASpmWAc_WA*k_~XxpIir) zO$h}1-kT{BR*JhX5)2L``9Q9klMQ>a36Rh$*@e=U!@gyaBRCa(_S<{0Ah&_|Qm1Yo zD3nYIt)qft176;Thxj+;-UP#Et4m5argq>YrIOhYli=^VRvkMg$@dtZFxR%R4$kX^ zeoTGZWwAyI$834;8Hl7ulf(94-z>NEP*V7TIfyQHTtf(;@><_mo*9Mqrk1Y zKvA;-#THZUCQNRRm&_2|k*>gDvqXqLI3aK*NlO>iw}aHo&+Fa@RrVCVi}*h?L(xXX z5=0vg@ILsBfrd0`mYO+~!pH>_uN9v#arG&vw^C>J{j^+OJ`(G|tfKO9de0IftMvdI z9cW{S6MJ8IuMnPiZ4P%}-Yj?C_4NY568SoQM=%&O*BN6n;q+OLiV=-?O9Y>mkZfSF z&{*PskUxE5L6kAlhv7g`2u*Y?!^jMpRR01YQI2i^v_cC~alMF{!$3w)sJZT1FtVBoI#RFnDcll1Zj~a7v*+Hn zj_x-EglfdEROLOmqs?9iqari*3|+>nbWN=BcAY?w?vXLyzatnLtfZB(+5Dd9YBT1t zM4_Y}(QZrNpuKw50{YjEzbH|FeN>;&qq4IW`mT}ef+%_zvVy`ZBnCx9L4%O(`=0m@cJUx_ESt}yvQLe(SpWEvzA?yyG$z5Sr(SUdX&D=lv| znE#~d(4?8B&OcBk!)KGYqBpn+dbj}A>;2$1jCxa zU9+0=DA!W631VShij#L+jI^v=s>8%Wfm@YWgp!5t<6=SIFZ;&@M#RF5*$dm2R~(FG zBiQ6wJxrS{8`0I3{9}=L7LBw6DiUH|x8lK}eF?74GG_36IrC>FI`8;!1+kzD zC(m{-iWC@wXEYeiFw7_ms=;E;?13sefN^@=iXm#TOE-me$PXCNHhvW3O=K^am!v^N zU-whc&bzKknuYqs*RSP2HiipT(U(X1&_2f&NSalPSig@wB@*PA`ubj>CX@bXcUfZ> z?=;NtG-Bg6ao{kv@+@q@5QX$+QFFe%Gx7I_O}wQos1_#dzIaPR+&p4Ii>4DEQfdQ= zg+hz){oYCE3EQ<;(owuOM`yT%IxEVC#sGn=i-WM07OE%zaEU7kM95%gUC}Gxoa@~9 zRhajlM8;_`Ygr8?o6Tk?fyUtVSXNRg;kg&=GUzT7YKncXMZu{L#T%PM@nl7G=px8( zzjm>WW`=TEr}5Hj>|B|h_y?u^6r)#;A3rA;ytKon#W}C8`~=G`V0%5W$9pBd&Yd9Q zCyNDLoFK8#`=gdp4$g@|r7Rgs*kq!F_JqL-l9ls( zcaJ%+;#ooyD4KiXF6=OJeQj~^R4h0%HjmRQn>VXA=bt5ibY|UG$3^Y~OI_@&f^Gyq z!=W8b-&twqv(F{?#T2-3^aRHrS`oCir@1>rFw4dgabOr;ab~8^678Qg_UgUT zu8?pqdH6>op^K(MRTzAl(FIf{AWVoQ&?nAKZ=^D-hFRMDVxd@7+9COb$SeHqMQ zP*Yys)9bjJh|TzW;yH-05hRX~O|a~0C9GqT=Tb(#-Js6axL}`uJ&Kt<)P2I>c#Jrh zVe1P7!&S6S_v2ZP6php~`%S-3V1Ivslt)5WLz1I~hw;rlV$NSi=~}^3dd3Y2p)$aAQ$|G=ic!^kd-!wYGQ5hE=dz z7IS&!taUd-;LN$xf^8k?If$T;Q0oLU3kQnHm&5QBu-4;?1X!Iw@qe+IWhvx9<09g1 zKa)R*v`Y+pB#K*{)rZZoGd9WetYhK$0>N-0QZv!QY>bf?V1&D%t?}m;I)5-BFrHa} zL|yvu8ayr@pLh%~BH{QQk3fu5N{@vJw{sysLW4Vxv4}&Id_3i-VA+s%{LS+Tl6fIy z-z2MWW103x&&LEIa%DQJIoz3UpCLY;5rwy9@pWw+!>i9E=TW6{nJfh~s)&N7ygs`; zGqXU2?~K{-J`Nadcbt)of_)-Xn@O^XiMdq^*@<6B@iT(1f%dPs0$$TAjEMusZa1## z^|oLjm^w>KIS3s_*lZIDA^!aRoP zNIb)iV6vi(wx1GskNH`nDM4rZ1+pOzIhBV@3gzdafC0Mkl3w=#gm#fQ5zSVi(2}O` zAKZ0k!k2A0OFEAs@L+SdDUzXZbF)Zx0hKi}3rcxioE+wqe3)ogTkzQP`20qYGYUl& zO}_ZGI5M{7jyiK+`Rf$&FSd4BwxD-AvU`@BrT7iO;Fx%v;$XC_8YiUO@E0b{@=~OC zA@n6?F#q(B3p(!CAB z%HqyQo6(0c2<3e=RqiQrWZUs9gW(t3Ys#=p4R4<@q0sxMHNExw`1D$%_f$+&L@wC* zfz0ebt`-QIzuyoH6Ce@U8DpL~-wn9C=kIo_E-rMj!0l79fbt4RER^?Hg<=(7!K!XK z*y~uevgZCG?wNG!TBMi{8fsm+uw2bNjQ;%UgEBqCLY)FiRYyHBMC?~>zL{Nb_Qroe zf?-1gp5$Oiiwa+@(k=gR*dxNh&QyqMLGGixZw*uV8j1<`E7tuhXBJ3JLBOPD?b&(v z*+V@X`&Iigx*%{#y)djLN4ov~9E`*=-c1fNGiLy^yYnlChY=s&FBq(ea$YpF$2s5K zZH`;RGxx6e5DD+vgphxM0BYrJvC!0Ui3P0{W6cTv5$G^Wv1E$BZD81RR5kn zP!nOrEFr<2?RahN+S=|P?QBTwCiax{Ec%SJ($p?yqOqsX>OaB$3qK(kJkW@mMdI9c zjo1EQVhMhGr^!RFT)k5)$ZAO!SlaPWAJ9q){@Rh-*s_WR#X0U2TGSDP;Ioi=Mv}rl zO8GpwXEufU@~mIH?LDHBSq=5nPhsUuW#6WGx+bBV=aE7t9uO1}$>ZV_Q#x@PahE1l zBw7koym$aU67N5?UQuws)mZyDdr6Ze7d^*sx4SN;vZBNn+p7Eh zs&3>P#D|707(4*|tB3kq+q`2mC-1MneT4ZSgH|U1RKlJW3nVU4Eck`OX{+#Ul7&em zD6cn!f+^N14f1_`K1o;<7tR5bjoEsBAt#gQkx0O^qsa33@*^`JVqObkOFfbZ-@wov z^COo-ZGssA)vg=MT&FhuYVNGk3Ts`Mzvc=|QVqY;P*(SgeqI9l*Wo>SpMc6*ANBuy`*->BIR1LUFxtJ3)OU}4;)l+F1wg)` zUFCZUf;Z|yux@>)!4?aM_*-#VuVL*4&=_Xe&>ff?0$G9soP)luywX5BP~VI{FV3HI z7|F9ZD7$Q{E2_-Si2;sZ2--a_M5Anp7Kosbe}5RBCKytqqz5Jbs(oQHOJ>Pe_gNhu zOY5F%h}_MfEMxtBUzJ*U|F)SC1|t~?i_qKfeaFDlGBI(V6$>80HfLVOZkKP$65Q@L z>FnzT!x*$#>e#@Voj8+)fo`F%SK!|rqc`g{dkZK{Y{_B)wW&mSi|h()OjDhC$%vP^ zVf0+ynwi!IA8}YMRoHPjj)Id6R+Rx7S zy;aX@a3B1<=>kXUbFIkj{ke9qGkE^YNCZ#m#V(6uVy5(E>ca)Y9GVxk;-Tt{hAWlu zyt+u8?O3`s-zRJ5;zOS4lEi}ifV3qR=rSg5N02AP79dswCoppbT`>o%=~Os~2bdvh zah!!<%)%4lSr_vVST`}hE=Dk`L&kyvd!0kfHROyLx17^!X@6`ShmnD^iu+DLX=doX znKsv(m0ta+`qrNU#04n*Rs=8LNHua<=yleV;q(#JLwj1FQXaA!DdV^~)P7VW$;HSx zcx@conbgBH_kpu9OG8Y+9bMP`!a(k4vax-*U|0!>;Ocb}Zp7{KF3peqkakPxQ5=%6 z7!nIYEc}<0RTvZssz|U}EQ>W=hC~AWLgEE=j`1Ai;ZEz=gqC}6Cc_ysr@W3;1g9N( z$$7{UbDYIU8e4!)Qr;6n2(M=3v*@!CY>ckB_ahEqvZw0Qkxr|qv-dFD0L;C0i$KIX zu87O@4_{9p^qP_oZLJgr`hKZa-veu8K6Jn;vSPtkAP%1xwjF=9C{P^+Cb0(b^MWBa zIUQuGg>5nH3BO^MK=X|2A;o}x@&A&N5wRf5($c@ESePXgyywkjS}IiK<7DMTZ;G7AGQ#-@iaRk&XNmM)2RwcHcMX!JP>$f9dZ7})#m z_~d-6C2U%GFZF5Ihf74bCpF}PBct02s}}AMA-ZGUqg@%}R||&xU@KuZOOd+zP-H+Ep@;=pmhfW2D^)#>*%WjacWrdJOgij$)Yh0%7STLbIGYv@G$j>tr7<&c#^w|52Qk=8)>o=Ml^H~3Z zT1AtRLm3AMENs^GHI|U-@u)uUp~67IR||$GPKtRZpka-H>_Ru(DHXYWd3jUmo|8EL z7#9ne=(~uK_P%~vl>TK@Sa&HYbLEPXk!O~D-HK$|Z&q*Xj(SLqXObf|02IpKPr;^p z&>k5kOZUq{+|z_%qrg9hT|HqyyA0yQjCP$lu8DSSo@e<%`PUi9lnM2_0!jQM{9>7g zBg>)z-Pefx)3%^Am)B=LO@Sgq^23j-H08Bf{pdanNfcq*QYIpT)sq{(@0GV0iw3vb zt$mZJW&_1<#s>=qz4J}aESvj83JvyJPa7b6^kZwjs17x|Aa8lqDZ+oxKO2I$P%NM$ z)Wrf8RJi2b;vnk{%nymx%6pRA^_5p|G_mKZg=<^NMhHga)P)nouIK(xM9d0uA3v(I z#_~jbFgRHJ$)n$@@X&SU7OOzb$?3+wa-}n}b-0Nr8T=Q!I!=;m-h6p@f4_u~lqeYK0wcJ{h= zlggYWrO;F%fwwA24B2RK_Qr%FVmfPzUp`AX6XVub$e1fkO#{1Ca`$Yg7T|X9eiG~2 zA4==FB_;gQJxyDH6Z+Fm+u_#kIQ(t#HwqN=^<-NZXe2rMidH%9EcqW195Q@0B-?U( zN!g6VJktTcAPk`Crh_NfZ|}a3 z6o%#y^F_>s=nq1_ZIC#N5T6te+Fa-n6=WhS94t{GAzP2etjkB}BjD0gG~0&^_dP=f zenSvg_&~uhM=V6GjM7SNX4Ul4uxC_4_T;T2l_r+eHBa<)s5B}rN?!j!k6rb`{*;bc z6ADp*uvV7Fy`Fn;SEVgMaCt`SCR+P$LGdajGcDCqQc%FElKOY~92^onzQIhctFX8w zgQwpU$KR1s@6wFvWC*<6DlD~CN7*vsK_%m)gCyxhCJcy&jxrXSLL{WT`{QN5q4<_) zcoT7Xojb}JU~y7-eBh|P5QPUUsqLGaZP5IoCoppNL}SNkz?08$MRq9*w)$fdPjg8dPs0ZZ z2LAwuXR3Xcthymcc1-(Chph&5cG`q5i*69zb`c1=bchNNXgw$vF#CsXAl0!&*Qbci z5S^XoLnZ3Y)HD5Q+H{96Tmwc3hqe-Wrnnf$j0|~K#l-l~8@pq2_g5VzP_r;b;iQdK zy*MPgel%nqS+D1KWeIcGxI`ETi-L|ohh_9nUTJ`oPaRoO0rL z*YADV#2NW3KxP#oUY|v)j)qZT)W_3n(|LEJ$BHBiH=czL5e&gWXfh|%sVLej|B_~^ ztTOf?Nm1hBbFdTu03ZNKL_t(1id7#%c7ex2pIbQ4o`6`8$fh7kT;E-|SR#0wRZ?!a zkMuenw=a8&&LvV&Y(O9@USD2u(G8yohw7n#osJ3UF<6beM&X13Cq8b$i~MFGlTUW7 z!C8N9>wOB9w+j91E76;WNO5)NdGxSYDa{w5Nr`eCrQ){~y^g(t=OO%|mS#Ja4Jgx5 zIx>2k*}6(=tJ4bZD8+r9P;u6o5(fv$b6`DZ3lhz1?jD*e8n*nHiw_VC!TGKGM;r%y zL0WU>Xb^hsu|-Em;{{4s-v4w1dLea4ARe*M6MqmL+Scy`$JCdeb}1N!!hV2&3w3O% zUN916cF^*8NfLkI8y&#>P-45gvNVT`o8*T_;@IhL5>&2wXJ>kE&LMxd_{DoG1YEXC zHNNZCym3zYYO||J_3t#4ziR`{-k)Ed=Hj4tU07Y2?DOc*(aGC=830tjt6PxXc=dZ? zeg*tGW1z>FU%G@!*@XYS*Gy0GLi5GK7`8ZAj}H(G*C9(W0sj;CSw=XKw!O-AfB{PW zWwW>(6$>nu8Dc@U4%-QOPXIU9B?$Qeh0V?~)SG&v$q9>?^`H;s!Fb6W-{kPg^n~s! zH%F)WldDb{I5i=036EEMsf%IHhR14BA@C}!eX;rIFM@g)PYCn^z9XT5^Vff;p(pn} z?LE$o-M%J@M({uaFNg+ojD`9oM@_|y_mCypZEut1O+2G8`v&s~2cMl(uRIM~6x@r4 z3x@j#3q1n9SEEDH9IQn=kVRDI^uyjl>=1N?{@2FSd2XpCt;7nf0tM?gIy8w-h0Ml3PcU4<)KRr~Ye3 z_e}57&n4r%)J^Gjs-Gb%$NNeA(v<3E!#i80FA?OBJrVE8JrfQ^`l#FMy9sfUtdn-_ zVEX9J_K}~fFf$F}HcbG47|c4eZy>>@>&f}1_{4}Jw!Wr2`CvR;FkFY}(qzz}i!2$d zCUAMhG87lhHnt!A1;hff3$qAS9}*hN+NbRg z@oP^(i4Y2l9+B#PKcn-1&qDABG(jPg_CwgtiTMG(6M-!h5c#{f&}^tqUjV*tO0a{E z!mcU!4tUjYmsr?%1|BRJrc-#ss^-sIOa4`G5s`H3o&|bd$Q(Z*+B)F|HbJbiec`_m zu^qKwd4u12;G55ga$-V^Qdd#3`z-S6uU z0+INa5bC=+ZT4TAj|T)_j^4T5+9$;)6L2hMB-?X++ZKGjM(~JRa3h5W3x+tRj4cKJ z>GGEG-;(Oyxh+z%$II*M&jxsDHIp1cvB1O&SSOw#@LrK1?pdQBgGg!xFnkVdTHkC=Vh_k_;D`0-r@!nvJ=uLSC){xS+8 z|7%}7QN_#cEew>I`=gY<`U&A6{6ZgnEAW`mqrTi`yHykoM8u%7EG#xLBhhXj)z|5| zWWytNB5+y|uB#F6Qq3(CJ|7Pi3{M(r5^#slD026=O;|Wlm+T6ZUbN4?6m4WLnBBBk zfJI|s!Fupj+W?zDWWQ6)532bp`a&Mh^4m?j#4*k~k!H&dqvl|bM3^n|Ege&VKe;vSYr4QT z5(^$%*t9L!xEe`NY2Fssi3~EU`1)gU9~ysZ#F5udw zVtmBKWyGY$$U9YcHyiGcV`BQ{MCAl_^^|AmRjQsQ*HIXxUl}Wv(DB~Vlu$UJ2mXZ> zOAI><#K=wL`V~3pdnc9)bZhEXBQxTiEC5{aP20=C*!0=A;0K`H!U2WI{~(3r2cK~k zf=7j{pU-uGm|&dJt4|w0oy#KocC-+dBK)`_HmMyf$3|?77buMrF$NP~bp zI7BJthy}m>BK(^=l7@8a_S&UO{eMNVAV?FM6=-?CD-U7{g>BFQGwC@m1Odk*KRJjFhd@U%nj4>u;Gxhwv0ijLQQN} zenF|HAcVGG#WVE(_7(ZfN#!`I`i+94IfjaMl4$x@tuhk(77du(N>4pVQPHNRD{qh| zP18t+M+v_z8gzoo>vI{US&;Vy4$2Yd5>)l4f-M@Z!cPeX4BXvY!-_`0vtwLO+r1uR zWDryMh)1~|C+)mOD;9d8VYk|AkkftI$Hlx&5eXWj^f;&w?)ZX2wA*N8H&Tb~6@#xr zL|~`^Q7?jr_iCx8vT_W|#RSddRrUw2rffVXnb$?XOrIMeM`vk$5N7P#4We(_uNl`Y zt)`^t{>`#us;#{_>71SCPWmlmzi>YnlJ(FZeWu@LcunpH-{QngsGg_*Q0=^9(nW$# zG{`4%-g}Lraw5_(&mFsFoZXH2c#vRNHgrrzjG(JFgolGw6911iyL@tjT|j}hETLkh zFNltu6rq8-#Db><>9NFxf)cCkIRQt#Zj2~o;|x5Z12yg!@vuScRsYheCkB}yH#Ed) zpIvc8D0$!3w1keg7ke@d#BNQfjk4G4jn}3%se>;)pJB^j=`J^emcIUSiU%V$Owa#f zs;#FA_F*E;g@aF^!rA_=y63@XM7rfH10we?PwjF46E@Pv<6d`t|0X9&>U}MNVjY(U z*)9@4|NKcr{F7q+Ogu<1tOf4MG4ZyjXU30ZF6&KrL;!B0wCVLeMSw> z@b~oh(BHlz#99tMA<)SNM*6Y*cx_{QO+HCT{QE!rcspX>v@I@c`}6Pdl}OL4z)BYp z@si2@ZCr_;5Df02$yrb%r=G1Yf(*9lLdK%;wqiN`a0ZUV#k+hVCB-)&#omVWJ|eDJ z6rn)Ms)wCB;mi2_WK8RL1F!kT0jwSZn3|=3s#Ch|+2i(l>nb@HNl<}IDnz72g6{Vf zMPh&;u)AQ9D00gZMqwO?5|sa(kPfX8Qfc7#H59zoSog50WijMmo z4G~&$W}_DlZ5#3LLNKWSc1S)dIC$ykSZKy^TZjr2r^!1-!!SN2&dT#u+V3&A zDi4UH7K$JYj;24YBxBIiaUAzKLytum`k>o!97hqqYW+8>Pk6d48qV$La;G)K-%im` z$g%Jb#RX4|dvBa1(^z?C1=o81SE4soVhaWc|4`M@eMdD^B+9EK5g_q(%`mhDiwjGa zfX`M4!8TFE0*#}Py^_x9EDG_9xb%Ap--Xe3lgYHhGOIi=l(qK?BTd*g+tTqkc6YK` zgtrMs>7D1yW(Z+1-$Rp>qH0$&I!}W4`o-tEfC6!G$4M!-rHcnLryu8!=39v5m!7_2 z;!aQUDT@ZIQ;J~mfETQN36m(H;4prxhtQk@@>W*WzCz5c7D=39!;9bInDE*7WPF8S z$dQ(-DB_r(p3s+mPtnQ-JVUNs*neN!HTwnrt-X3x@a+@}x=@e_&B$5#7IE=}PCeU} zj9XD_@Zg+BED25~B(Ob&_klaCw^7A${*u}bM@~xDq$KgiU!Lmiuo@NbS(c!KmT5WJ^ziB0w?wS0cIM5 zU^V{xHK@U_U84+z)S`C#+IN}KC>tB!A{er;2(Pb>gYtkPPyl!2GJ z6pIAoe(v1X)M>HH#YC~;-^V<~Y*c-p^Hx32*_ku!_1ejNb zAs0Rm&Tuz=3_mRxRw6S5dg?&pj<)kZOb?h)I|zQatyc-%BhRiiTf&3Ug>6y7E9_^a zZD*Fe)|P}<*M5CBKXP=lB9%q%pC6OB3TqMIZrKLAzufQSKRWj38_vfBL`yhZOuc$2 ze+*xqGwz)Q_XFXi+@pB$NM^(>YPr8>0bnhyt;?Ayk?6O!gh{IDrMdWcxZEgzaWZ0W ze5(Pqha3^wmW)HKq z4RXvmvf|VCO#*I1BI^AsByoA!QCptYZAliTK^7CV^oe~w{9@_Z@QX$X{_b~PM;(nc z>lwfP6cIJSlZ*d>LgbzNYW0Q$`s?&{Ulh+>4=^iCfCr&np3BF5>na-vK;SL?m4L4c z^z+;l6b@1?7q0@+ptP}ZLfh7CXWe`8Qu+fF+Nu3Iv{Xo*&9{Y#?|BAP$lv~wY zS%#IF^^akb>Ww%)UNAg{yoCetlepJ#-;rsxibBpsVFBVPI7(Rt;n%Ke5p`mLsF-rl ziaxO*zd^~un85pH_}juRX%ADmfy^7DmngsOkqThZk;d+12k)P!Lb3UB6I`=gL$8B; zd*``rZm~o}P~*388||uc1QlpIHir)C8WMnSrL5Sm6Ie<@p0}4}gFf4DpIj~)qzD{j zU$cMUNp)&RYe`x{6C`p}$WI=+tZ{g`Nmpz+^GtlaV8{Xu195^FtwEVcL&8(+)T(6D zeW`dM8%n!{@*Qfj9ImBE+&bCU#bb*F6dSA}MzIK@VLAYQQ8yVRnBEfHY`ncB>)zx5 zCdh!cyH6+S7lilnvlw3&eC_x8gaD?hV!hy{X`SQnS#ztKE8&z%&bDiNBAI0OWi{ew zk=ui72_x=?%nD*gmIZ~qnzbvTeCUn$l4QQV(Ch`RhlEDI7mEb?dqgzwy0E<#3;_%P^*_>+-3A?929uCY|>G>{!S-z!$zdUdW3B)}hv8VS@;3?wQO;foe$eZ7zHV@7e z0)kcD&p3tz#UsVT3qo)S!G(z~DknSW$vwV4;&+MT18cD6DH`k}<8E6`!Ezb`DL>3M zYPR7&9lsZdhCt(dD{24MAHqh;jsl!=b+K zvG?|)|m zXxh-Je(5$!Wp%p7!~*^G77GPb1h!Ez;MLoF|J?kB6u2H4;U(w7;hw;hB`5X1%1Fps zB)YqDyYdc(bm+q2AoqjkUHgB+zSI^_D-B74VP7kgejy!uA#`s{^+b-sC-7&$B5 zTbM$kp_HSNWp^&oAc&Xpx_96Et>afjL(@pp$!gHxd%gfpNXU}xAD(bmZhRX)QZS5S zB^~tH_LNe{71*VT542s4ptOG~Gt89SH?KtX5N}C<$jgw(Pqmo;EN_wUWGL4k+fuoZ z2o2Df3VTen*E0JClTyCgUurum2+K-X(S~H;Jb^U>Ejovr@>F;d1~`&*buBrLz&XU# z%U>;9IB2uY+H89)GFzg^GN+KM(|2srVbLW@&i4`p;%x&s^rcN!b+Z^LRIq?ivo(WY zwlZ;Vd>y`8Fs!A3`b>J#RG>fsdl2a^-F`~8`Bx9HM~U2v!7HNX?G=gzsZv2dwFuN^ zeOsG)k>Hst7EE1!aS})?X0;$Dcl?)(BjBE(9}{3i+G{T$9vV(zE_3L}y+PNy)90h< z*rGlIi!H|d>7^!P!Tn^Jn{#X|<>+k6&m(BjSR&0l9^sX%dZxkO%Z*v^)ym3=EkmAzuNDlmA=2c)U?mZ9%b&Ye zX5j4EyUPe7_L6wf>o(E`s+98&zgUp-B6Ea-riK=sqano3ZLFNvT%yaLGD;Nivw15} zx_vfQ_U`i=~79#f)O^v1KTc_nXE# zT|ZQ+ABn1T_Z6bV9homLK@A8rS+ay&X_ua#R2xSl=q*_^6mW-O(Lf{8WJE6-4)=2# z;o}{$u<;Anf`MTcQOes{#V18RE^aTNoJ7&vzcr~-&_Dht#d@;uu6%guktPl{{D?N1 z@czy}bc+nyR6ourB?8=SS3bHnvN#BrJ?()=TnBd(jZTuRsWJsgU-o-)akpIn;iwK=68einWa_ z{<}MXRd5qHS3%!fc2pvshFrS{|9V7-RMQhJ1^U~Ht|(`y97TLBs$|Lf ziT<}?Lux~DLPs0q;kpJY`QL-V zj>R2sv>mq-4I-Wch*ePb8BuN@w@$z%A zGYl&+>&{5q5!r`hlidZ!x&t}8zz7=pQy4s?DCq~_Waxv#6&>hY#MeU0yFxE#p9)V) zi4jodQ`OQ+0GY2S7g)Ysh9Rvwd6yHLH@X_zK2JPa+d4a@pieKlvsg8s&xhV-QjJ(v z$+LjXx`K+bT*rS5R_x7w{HHHsQsIpKFxrB8l8@KAZ_RyX!S#KqhPd}R@!osX8(D0@ zkU+PTCRA^vjH9;3{enbTru~56E8-%2%#CedjLICAYCvv~IIUkS1gw#|W3gVLXzK8zSt$%qDQjMPWIx?@^*+3GFh6g8Jcbd`mTtFZ;c!%@h;bi4H1-iuhc zZ%*IqxOj>QJM81r#DaDlh5hN{*m9{TC;laPnuEyED(KSHIx)F}o(=Cx1 zSN26_!<|sVzeMTkS;2sfL01o%+?8=@V9}ZN5iesU-&ZftB?nv%lzu^KfY>AYeRO_R z@-E!h^Ck*nj(DP@&NkS*t^wzK~v>5_Vj^JeGne2imK5A8sqp@qp z%}cdgOA(80I6<3`HEH_?Yw%p7cju2q5w&D(!FxLPCn0cLYr2qmR>PvfZL|H2>2AoY%9yde7-`oh2D-lmV+9pz;UVVHfg!mNEzRR%$OHRw96#h5r`@p_-K+54buMh zRpXL{m~UJzW5c%U-8bfSj(b z9L83k*%{sURieSNoo%b7T&rj#JNtf>RiVwaE@0-f26y_O?Z#W-u8hb-Gcm4r6q%Q` zQlOx3MV{r`ns}?=jTNCA`rny%F#)ey0CFf9AJdStIo@6ypMsrXcrd0C=G(A(?rGGA zQFp+!G*kb}xU)?%bBXaRMZm|%7<-l0$guH+v+%9y_unW3p#ATuczS#WF1eqf6FYw# zH9Rsg!%A8)<5Wn(^USH8d3N^L_dVEx;VW?6Ejh!JXk#Jox2n!a$!~!W$0vw}jF;hB zqr?%`4^FKIV)#eg+4S&K)Q0rePY?i3yhYDK6w|)%&X{xeD8AsMXjry~CXK>@PwpqI zZydSYd2;ZhqG3Ycwehvsg5fsIyT#(OpqhM`bPgk1c2NesUe(C@9&oW3lXKdYV1@Y+Q#e z7?xt+%umNYL(jrToDY-WkKAOmJBUURNRlJW=AfKXMh|h zJBfCZe?~^x`g;wo%L7I2enj8BF@!A`7GmE(d4%U)ZW?^|Ii8PnwqeOKo(0g>peQlm zYVh4e`M@G#A?p!{gQs%nDF6o;kZ*JRJF#@hsaZDnWLhX@Q#3fT08WRj*o z%kZ+PXEp}CZ#)-UFg);Lep)=oLt_fz;ct4`7{Cl(HSNtgH(oF!*@aqtnT47V3xXo} z=v#|kbB>3s{i1081wE~;>&)kX1UssEoMjjl7a6*nYK19H_wl3g#)o3RR`r8%OSe%K z$J#zrxcX;nLZ)XMnc{rIix9a=H`RGl(Td}mlcQ57;WwQeew6dN_N8WPdi{_C}%uUYsvZAcnr2+_%$R6 z|J8)O9)EB4h&T-g84YNH%MBG-G8*wv`=6IU(+P*;xdFcaYO(Mjq3{q!GB1qT2UO8N zF|>b&001BWNkl>QO1Le|+VF-jjuwnOK1EiJj*&W!kNt7vQFE1vjF> zS%EadLTas%VApjRrE?@E*Dl5DtDVA#+9-pQ;^aaFBHCs?AmBh zg}?QUqdwzPsB6Rm$S!DBHL)OO7yQJ}YJZi&WrafU{Q8U2zV8Q-IVX?HE?|f=_6s=t zRRnq{3vn@?9^b|_*n;71+%i4Qo!ViH%;GmTYH5-Ziw^#6)@#2WHT&)l+KV>24ef$q zPJq>!w|*jJ4>G8EZK$|x%T5eX zYiB%Qvz2&2TRftnW5Sb;tdf7hE*d5)q%A8O39FFPZIz|lKVpO#d#E`k7Lu6-hgg8Q z2rV<<6btFB0zU-9mm?gwbyFEPlpAuoSh(PnOgrIuStB}o#Kmn97v|%cDzgTeAiJX$Dr?02Km>APcM1nFi zR^C5T;eU`i;rbz0{Dn_vYs+&DEZ*X7GHvt5DO~dzd4cpRN|J;*VH3j{=~#QN}yOkmoG^ zaX+V#GrzGhj4c>G4&K>vc~geZr{fXIpS8y1P9(wN5(4!sd%OkF77zCU(9T%{q~{w1 zN-T6&N-T)`Muo!R$QpqCgF<18gbAqZ4`1<6AvF(X7{BnmdI_q2N#o*I9xs;uFdfXeIg)JCHF`LL=XFTp5ka)3fL+-`$?;SvZ2yr0M z;A*9J51LqT)Mg!ym;WsuV(3M{rGwZXIm`Lfr_xpGl@SY7vp6HG07~dT9odA{XLI1g zdEU?}`B$ua5B&;zHDX`gobw<*$DoxPr^*BMS=BYPeK@JIu@S@;3z)MM34=ne-&BM@U2s5JLRs5*`QoPBWLAU0;wEv)9dzG-jDVqBC)(lP9!3k8O z0qdD)c^_sa6S|MWn`35!)5&={t03<0H%=1^T2_JVzfCCA=3aW@wR8i9nqjF}@LY$J zky@4%totf#zRGpL{3!PQv2ioDV0Z!qvX;{Y=enM={vWB<_`Ei)@2CKaHydly-(jNK zZjR3tz_aQ=3MF6{@~sYo*MH@i73 z9GqaJTiW0L-n}}zU%v`h*DGM4bcMGIQrT2_qCrA#GX$Z^<)@Dd7`|;+dU|!Zh^kD9?go0>AoW-x`pI}^L%a1^D zA%aZX#~)G&liE9%!_7=NcwinQl%mu8xNJS0sJhAYD%P#p-AsSuGq452tq9V6akhS* zf9Xv~Y8*6Ek;yW&+vuy3LWd#PJPv=Gb+6kjzQ-~){1AyW-m)|RWw$y{Yh?x;Sp{*w zYIAZ{VOmDPFA{PDR6nLm(WM-&?i}O;PdAB6DBP7@_`_|p^@EOwpR3r|cn-E;n1LjJ zAENzMHh>wg_&J7P8pKyJl4YRkqA$>G0?%OZOv723%Y;meSF)m_y#D{Y&>o}M#(lfm zhMs}|*|DbG4}%+9S%ZaHg*nTQBInO160Ej*<~8HReX$RFwl24Mo^C|L&Z9(qC9!8; zm!4(!!%x@7qw%AHfzLnBC4j`D{&PwYxO(yxqC&QS7U;h8tO%BuCh6X&}OR6A=%f z^hkI-Agqmz2)1B&I9^10&SV*->!E77C`C~t7?o9uTQnT)k=B3fMeXr@cGh7-20a@K zM$G}T?hy*A?V+rKK;^ZJgEq@63JL2d146+e64brRRl^LB2@LeNv-&g)G|3c^aAkI3 zCZ6;x!^Xx3VGD+%C8-0ndf_A%WUqCdr>P3acdF;lulapQS?KFtQ343I(-(yD=#e z)E(EeGv8E!CnkLv=v^4PH-_vlz_*e2Z#$liuf`S(CQL@`s;y3(Pl@w1*e?^3Kkv*1 zf7XV5 z(hc-g>b|qFyVO~z;ty91x06sUPuAiNp`iI)DinhA)XtMSRZlhi}ytk$V#BU)qX*|bz%tF?L^VtX4zQb|*RdJzuHmh)zP|(l+M1kO~;3=n- zxi>lR8CZ~2Af~Uy2hI4ehO@WW_;GB(und(CWu zLpXuDYaqq{g!8oVo!Elmg#iD~*kFYcX#rufJs*lunr(%}8gh>+uyshXXsCt1TD4*s z!0jFQAqFNKj$S;-Pj{eA+^%9IhgrS-im!;?0LP?t&aP>%nXC5-3Z;m+yvW)wi4;hf z;#q~XP!N<_pjlJ6}{@q$H6t1xss$g+k-H(hZs;v99cJnow|_@|C z&Oi~yd*Y_uuyGM4H@0yj?Nhsv!4?b;1e#k11@uj1!}${|Et-7MBlx>>Zx9%(-C6cO z>pX3%G#Ag5bejkySOSzmVX@`E+{tQVq9 z=YMNc&nq5~4+J4Ak;V`9&aOkAq?)Q-B;oLZLZSIn%new}uBy{B*m?bBoSPikxChbe z!&uxmhDjn|W`tQ=cMczt?;jk}z7|_BFnB2OEW1|mm@rYk(dLVQCoH-;TwrLng*8Xg zalJGScn+Z#4M+2g1F3&VZPt>gW*-m_NAyhpNN-55gJEOC(2Z2_N8TncZNHGdT3k_;{C>&DOz#|l@v0rpIh^NvTE3PN^2H%CJULi+fieZJ-Ctzs? zXyY;1f}urhLf@(~RGQLrG}CWoA=n<{LF0dAFxf8T5ByCAVe6l0=;9%WA9Bjcb5!151;;VznS_mv zjUHPt+=hlc4-1UhSqAy}2>49~Q#7=~Lw~I+T0!;J6@PUPc(k?Q0fp9n@1Z}LAM#6X zCr8>LJ!pN=9PW~U)*NM*R`+BRE)@#A3{GZLV}Dc5eCXL9nH0k?0{55MjZ#}ym{YjE zI3|lY+AkD{**|97MZwJyUi&ORe;-*)Yfq!2a zr%T>>hekBWq6g(LPH|v~h69P3CL^J>iTs2EnOda1m9nzQ+B19jU*3^Ewx_->Fu3m4 zBKQW2_VE8Zg`1~+86011CcPbh`EiF}zRYwiRt?+WW*HUgy_JVK=x4ZQ|2J|Ne8 zqX8b!QU6vONf`$%nIH_-TF+;+*QK52V|wVv1Y*MaP?}t?DP)R?NSOsfK{e|W3h@Wq zlh*)hQX_Udh8fqRJk20&(B4ev2a5eWMTCFWc}8|&{F<24%W08)PCtsVg~YF53x->9 zl4kvts2+AsX7pR~&FY-%k{Fo>_7Uwr&6AoZ--me&E*cIY8}MhYX_s~)^4xG{9J+nH zv;wJXb3Vr~f@SM%f3LfCy{W?`5J*9f)^L|e3I)aC#|Q=O4Ni}Nqc5N}jATKc_9Mfg znW)F16X4>0z0AG1F0T2Wp4Fz$ie|%uEf|KN(d=%I^l2-0n!dp%F-_J;4OI8gGF5IZnT9!oimjk#eyQiTW+OL5KTAN zz2e#(nh>K|T8Ztm5D*fz->n^Ou0Jvq%ERCl0b^oe-itk}@b?URmeuFp8FM3h?s0Bt z*n%O1o(w`ReNhY^e_EN>*O)T~N@|UtGt~9%?hs?a+qwe=&4Jr15`>LhOn8Iy2!(UQ458pHqd3xQ2qNeE zV37CVZcroo~dLo6-S$u7+(`#uGk_g;Q{YwV0w=4HlZD5ehG7NT89!J{mjJ zKW;!Ymo-yFJRAP*`vDz&FoZC1@DP7v$8@0}{IEH=?^Up#GR^|LwBL9NZy(k}OBBJI zdhRkJVYiY{wqVD1pNK%ct6etb;P27JgVtLzEpA+GBP=z}L zg?E1L@fZkqn0|N(zoP)(6nU+XLa8jFAZ+kV=&uk8z0Gmr)^;&!I8j&L@}MsfiVQdw zoQ$kwbeWNAjrC~#)$DsH3*J8=U-L>zwdVD#Pw1mZV$kYdb8Js&!Hq2#IGp_5S0QXn ztRh=-_^`4Jf^1--0h(+@!@s3Kl4!s``LBZshrg{zI0%(`Inr$V6Ap=@^sWjvyQ5S#r6 zotDpt%escM)!J{^^fvyLiS%ph`agWVxNlU4Oo6p zwB^!+_03(O)BVH=<^Zl!9%)Zi{n_uCArjceq)-qHd&)R>3ic++zpR2|`=m0FIL99{ zh*c333Yz&uD;f*k?kcuoz3TqC#?J?hUSE$b7^c7=`DSK7FaM&~>KC8e z(jxQMzRdjErueDt;|w$_Kx9ijpinxK1YG2F65*{Tq-;a;hn96{!g)g!MiymEtWTJZ z2X~*2&~A&~ojm|05+XsZ)~Hf1p|-_@M{u}y2qpZ2$)`_dWCO0mnoIzmwvb9luZR0i ztehMfrPxw-0gCI4(Lvu@PZT@Wr{0encVG*Ki{YjH8Ow-(>#1;o(3dV>z=^s;G}J$1 z1+eoMUn&KUe%;o0VP1|Id>0Y24o!L14Vu{%YVku6Ce9y*49`cULzOG|ODZ-&C>)OC z^s#p5URx}9k9#IoUAw;C8C@?WV!&&;iHn}}IsUGM_nc|h^z5Zbp}@WtD;i+j=Fgv& zhhYl_2}aUj*jSSYfUbm%Cz02LM?GpS-2{JY?)~@Q8X;y2kbg}y(5yvY-dLh^psWUy zBYz~n{vDH%%{ijWzyuNT!c)fO$kO?5L|P0eh8&x%f<7{02!(FvfKbTo5cUoVg$Wnz z9oM_&(^|6m@1LgB#7;vyKmWSL+j}U8$T_sj#;*uFn~zl=PYY8 zHfmXivk2{cLTzmGri}p7-xP{@8QN`Ca8<7kk#MxvmoMgc@*pV`gsN^*=V+u)yQk#Y zf1y+@xe1I+TN_JZTO zdw{(YL|?6hVE#IKKCMI5G-d@l|3WUU1$F zeB8!!`sJtJ%}DcTe5T2b|kX#``s>(sK#@i&H&sg{5WM zjKTRdF=Gu-eBNjq>JWz_3y{hMv zG7YkS+7>ka*u8)CaX)NC*+^guhD+g9AQ7b^XBGp%E@ZnfjMm zDM&PsAYbD|KTtU?i$Dwp(%2KV{@t8p3xFmG!WXyFlKu1Kv;a33H2?b$m zMl4(=6r|wlA?#?1RAsH5ymaRZ)OW|%$FOv+s&^$c%t!>3I>gGYqQy-U8GsR(oWhz_NigPkvGfm+5jJO7E%vlW}*`f(#(GQ)+RwT z9DNq#I9|fRqWbl(YU~*X---UAE>lRlJg*5n^KWzg)&8fm*57|4<=5Ndeq2#~;Ccu{^02 zHhO%mV3-CnUMv|toJQqhlJH1;PeHN&Dy51B_AO{q>^S~jqY6kqZR>h84>ce718&Wc zo}iX185i+045IN*!OWg^Nw4jkWnbai4d2(4am}XiDxu(1FVQ`AWpomAO$ z|C_M|!yq!544*Y!sd%0(FyrZrw3!0?ZAx~g;UKR`B@<}n)d}ja|9cUtf6IJd9kun! zK;i4qpsQ!4JpJ8@0rk>;mQE|?oqzW5;QNBIZh`#esO#kXO2vsn!4*SRWW;T1%HYat zt!o#M4qd!xsC6YQ8!D_A-!seaIP6QTFELvzj3FjQuDMRvwos;r+4z3^tYBD@DHyRk zkY(Um0-R;Q1|`w(?>PreCYT}Df8SO(P!^+654LRhD^4;Lo?+V>`=q%dbs@kb`b>oY z4%+x8gysUn#S+FByz_T>ZE(aJKxYBG0}Sf9Az zI(4!>OnX7~;f#7k`+axOe1S0OLVv>jGJp>c|LgIyfgSV;uayihQF-r~2CZ6qQVqCUc+ zy^`&8?cS6In1T`4kH23xrsAsw!x)jD<5!A7oHTMh=zBEpFp}(gqWIg}EkPpn$hRZ( zrBK*AeZ4A^WPg2W_jV*foE#`aU)pXO4btt>lQoM8cE=gRY&sfn6sRIpHf+M(nZq-t z*uB(6+$tI{&dw-19GHE63{-wzn}7K?4~F_4w{XaLb2quAI%u4^TPYO4_~nwl*ETkO z179r|redM`@KbwGSA2UB@IuMISZ9G~=r)|0fi7V}?FxgVC><%E2BGq?rdQAb^{n zMD51=4;m(?B^ne%xm`)IFhX7&N97a?D@fP}T~!#N1855uw&lq7JMM&nKl3mRRrp)n z9K9lhYYLbVW%Gbyl@4#F__-6$iYAKBj{fQRX~B@w0APkZX-m#BXr7XGg`GYTK*_%L zZHC?n6GJ4mKr;ejn;Z_|VD6A&rGH6cGZznZ>k;j5-2Soe`;fgF{5@SDfu{Eo!x=T>chLSEk+QK7$4?6e30b19+Z!(< z*6ROJN=hYU5unx6GZj=cH2)={;UC%o^k0FfaG+M&?=MvI<86{fsZ(Ax=zj4Ku;9?L zWH?*YZ7D-CvKb7a#7J|`&Mc(tl@GZcQk}Ovt05iogvS>I4_6C_d167@6_MQ$nVr5I zEBtdR`M>&B`Gi|@V=jJJFpLWVo1o9K>$Qew_Ss&=oad{~twMPb@swydsBq|?uoh&4 z9)D-H?WOy*#L-vM%AURi5{J0pFlUp~+0_Ro)%_KOdQ-Cl;?CKbP4Oef001BWNkl~t;$UmQ8Cp~E$5dU(VEbCye?E7>{aT`-{Y}M7x3#lrWE&2Ahp%MUvY)Z?fQPCBV8#BrWusQg5Tu)^EuC=M79R- zbE4sevGJ!0{oxgpQY)=w!~z!PV>2*8{gEo-y_;r<8!vwHcHH<}!4Sc9w11+fz^r}N zt67gc(9r&@knTr)lDdt6Il$u$=a0iD9FD#Xjar~`3q9X-J$|suzETh*<8W8flMEr} z9*OiV`9H*+GniC_>@~{<9YaK z!EoRF|AWD@4AOjm|HCZ+!0z{gA?FEEMMJZV#@WB=DCI1kgkUu_{OnX{9#0Vg9?TF5 zWYefvcpett13!I>4T^{0T+6j^dJc;PX(>|FP@j+Rwo^^t>sCBphHpQIR0%2WjBH+elX)gmlAx>;;y=z;s!D*5qC!#KIN*5Y8@m>Ksgn#Oud>YnC=PH2jQU z(7M-9*E=Jv;k6O)B~xy{A$O@}s^9NJ7b>{6AcDFOf}@`y9s-s=8ejr#17TKHq1iR7 zsULC5;EaDc%7XXLxMF$XYUi{aF6l(pXB-}b+WjN#W*g&|0iyqlu4R`|`yi@f>+0KJ zc6WKPkqrYsBN$}NPyo+@oofK=bl5VZc4puD3^b|3mJeY^^jAHK_{_F08jjrPCyckB zC?M4Ca`&ZitjH=n={(F_+5@uRg}H# zKt0WrccO;nEvBg%WaxqSoPn{3Kks-y6(27c?!|~)i7nw-9gS(vnPsqp(WAs)TriF- z`#`i}uY>Y9$)(u+;)C&_CuepdfGi6te-0ksI#J?(yEw2gARd+r2Y(jMx^CG1ik1|4 z{p00G>oCdo<8LknpB(!SVhe_k!Qxy>IKeS59%`u`=yMWL(J&FHQ=9E*cbxa3juL0P z;xkWgd9nIevSGgY<2a7`F|y%HkrWS0)@J&r@WWyu=Uv&!OZ$C3PYigD#*$n64*qTY zcXt5K!1~+Z>Ko1OY$rryb@U<$Swyf_kRHX?`+wR#>wm}Yg&%<{#KJ_8InPvi{}V|d zhFz57D5V^)|J%3=104_Q^V}v#MXmo#iv>?Gk?g|EZXvTAX<9Uw;Mvh_%)n1&7#7db zPw~{&9E!K8Ja6&SbuEb8;pIxa&azB{;`5fe8=r@pp9RJ^dz|w6aN?>M-}>b5$twJk z{Eg+Hq9M6#iTmX`HhvpB!{EY=w|EuyWT)V#!e?)0mSHbz z*qDk7iNY8-p_?y?%bUuVasYoofWOV$Kq=)Ya?E=Dx%*_M-1r@1I*lnK>@ zqIKO{mfAvNJ;;?Q^#%Ck*nbpTFib=|f%xP(0Npp9U|JAw#^i_hqZ^-sB&khv;VVSL z(Fupwa-!Azz0m*tEn(W?;SN}0V9i>}VQbRlnnwRKD}@|^jN6h2u{m+>5ppAruMiCT z(w~GC4SD0q+1JH}i7RH&rHv`yyy7}aU3$H6k$C7MAmU-!gBBZiVq7f9Gxq+eub@lk z#yMH>t46a=8#O;I-p|HY2!?xcnAogf*2AFhgn%IML$L|;D5+e$X`d< z|NV8bfIxS8J&8>C1;d57bk6&$`SMpE z+{WD)Chop$gK9pVD&WCiD;|1JP(Z8;1jNz0DrD!*LVOA|o-dt3mR$&(Yg*J?j$L_tKi_~nnpQ5{kL&(1z$9nP5`-TF72GU|d zP;wKNUOX&}VIvQ`8pb+Fd9knx@?+Ui8_zhNjo-r-3_p!Qc5PK3CGXMtMg2J!n(@K7 z-`In~^AMi-_fd2=kxw&zPMfb?IYb4-fmfJckd08Y58a=83DXKhn$r>sa(2P*(7S}F zFM$N6zr$Tcb|VR7G@q&;=vt* zT>1KEm$mPR6vH40l%ISqRUJ`&e*@D-X@iKS4mWpkhK15NDA=kCw?My_9}9{x=bS zDB0ebeXhXDOW4mZp!%`wg10^V4_A-DZuZF+`@VNR5?e5Q6s}~ki2OGXHwLspIBKzi zZ_QDvm7XpTyzm~!?y%Qmi0%6X#3Zw>iZ?vF+@Kc_@O7CB6b@d2CS)G=J;mT^64!&w zfw}vEhnqtPEp?h>^NIMtkT;Upf?*g7ndVi?fM)wK?I{K5SlsOJETIY=%D0Gw3^K>Q zM}{$kX2$*Wd^ihXR+1|gliIBT&p!aq6BSN)>C(Pe(xg6rMS0rY_0)r1+a+>>*w@U) z!?6X!g@|*siwJ%+1ml610B$M#d2AWg23 zw8xcKo>J!{)rp7JGbYM$l;3{dL3vI&R`25LD7PHRVRu5%D^><=Y(%gHLj;d`@Hb{s znj0L8!dFY86Ivu{9aSu>7g$$mwWyzu9!CoJJKNA7-4G3ivk|;P_!;`C&qQ3GjcBtF zECVrN`I0N^a2($+9*D@#9^y1|?%b0;6_=mGxWjL}%r@@F77UMqcJ$t)ap~R8sYSTkM$2HIn)^B%1A`G%>_XF2vtA~hzEVq z*q1#lUHiXB4r^E}42hM+C*-PUDpufe0d3rgEf`#gvJj*E5V7_ZvS#)@_T(~h8Usxh zyS=jAx=0a)!jFiAEJly->&B2sR^zD$Z^holJ(iIOX%n@A9t&OCv`Rp*rAq_i!6h8Z zpF&;#!u@%;EYyS}*IFIhuDu*7fhztG%6-r^vGH^GDZ%jVL@4yZXQ!s9qC6*zIqS-X$Rsa^LD{&gaog=N!u@<{25%{1fPL_5nxb39)SC{6V?Gkgc1#|QX7#gE`$|1g zEKC#%3q|1lP}ipscv9t`jhSb4T9bs95#0cn0$8xT2^DsvFV+Z%)+!MXGcyja2cz#e z=QoIjv_D~qPwq*W#I-W}pueW;{j6v=a@c~w11Hf0{NHr#j*hFwpLHEk+V@#Ffpj|+I?27J6=@DAR&1v)pd!zup!M_bqrVPVnGa-C)n zH^`yyy<9R^;x$!J~ykHoIHM=^% zQhi>g0ME#SJreKMv;mmdFHPIv#Z{UQAsbSVSU?X%8$he3^vE20KOdRnd)Al{Jc4N_ z^qS=&h5V}_9Ln9xpG+YU%SM=q3}vlTX$oZzyX{kID;h-KvJI}K7QaF1Q^bPP5iT~l z{c7N9c~+;nu`vxFEf{8G7xI-x*od_z$hT&w^#2(Grv5Mmkz?j8Y%*Z@2D+%FnnP_;_&E}hR z&t(@TLUmWcPe*)@IuA22EycF+V0^4#m_uZwUV?dk5G zvrwd{9b!Qh3UW+6ir`9766A78l>YC~0nX2642z39vJ;{r!07~6 zapSp%QSnf^NMgc477f{G)?i*Fh-m)^e(6{@z6u{H7$O7UwaZK#-gJc$tCyJYN6U?% z0AN2`;)7|qCKjNOk+LK3Rjb-TsGH4wV|(-UW?q}}dgy%ZZvt(J75&1TR?KAa0yCRF z@3Mee z`bEQ8uiY?VdD0VZrRBnBlKorS>Io-kV?)Mg3x+{XB9UCr0+sMg{1O5hm?ftV6-&IF z%v4I>K9I$NOygCtQ2b(HR47>OAY(ujHi!=kpvG8AVF)wx5q4-RvL7@8W)Dtvkj*+|gu|Ju7!(bkjNt=$a7#Qmv@3A$b^29z$>Z^Pf?*PW z(8WUBiB?0M)H7V=XWV^0cst1c%vOP7fvz!fiUso+L$ZK}p+fUAj?t^DrMP-mS#u6A z?0;9ufp%q>emGJDt0TJ?-lLPV1LI;s71A@Z5aLbJ?|@kcLs4axD!pq3KF-EN`5=PC z!pz3~gr!JA3?FhTHa2G9vjjt640m(%)f1Rz9F#y8bxii~YEH??q9UXTU^_U-z8cqA zA0DeAQ1E6?MuG3ZWdgP|pxMb8gva4dkCzJ#46cGQVS-p#S3@ZmdT!ylCnJ8T zeA30WaTh*IFf4|5D7VVF1&O)OUs-&eD&4GRQ)D%w&cni36|q2wg{QrQ7q5ywWmC@V zL6+C8p0Hl>>;m88b0cIhBFFk=V^kskj)KdB5h*mku~m}K3KX(4o{6ZVLLBmrt2<)`iD8c~WO;yofgtK29*q8HhV3JIfl}L212S zNqW54>5o!yQ*`_lLq*t!)C73}69mfop9x}t6>AQ_BE`I}SiwL$1-W7lTj*Xrt|s)% zz9W)L*&!sCOF2w_6J}&edZHPtk%i`|l0G0JAedgrWFFKyJnLZl$YvYLQKQR~o}6wF z!+BVo2+rghbmy;fp7GMa;s0GPp=oXoy_B5<*!HpUE+N=!hCm_^5P$ zdOWg#uzhy3^>%Tgvb2*dRdQt;j@RSO&JYr!LHKnApvMorFWz{lSonGp|Mds>eOMqE zoWs-V!Cmw@;y6}U&n{r;VWkfQ9iSG%COugId4^N^mO^2({q(rX|LncX&n-!|9~5!U zcTQDxRd?UpzHNJoERZE$y6B<{h>4{uka@|Lg+Kz~kp~tNPmo7U7$6W65CbIs4JHg2 zBP=YCkPrxDF|q91x4WyVPt|#!^96&wGc#hnS3ELv?=ODcb-taMD^{$C%#2vSSP_xb zAz^~x{#zpoCZgH!JhVQ;&5fns6?7*(ut9H)a%k`sEfK7lYF)v_IDv2tQ81j10+5f35) zP2;_pgI@1E>fW_Ax}ZZ-z>fKgdPL_s`>9Qg;@owTEJSc@;B72fP$LRK|4Ou0b9)lm zn!Ku8pbHNf)9EuotFA-;pQJPy>_iR7)0!V~~i-s)`UA9*qNEfe^IynWh9aXbeBx zK=fiS_-KajX-gsdo>y@;*OhRhLEzdaI!m8(y!_b6gC2DVS)1x24&qt`FilCd+P)y# zMH*thJL^FX(=EThH)#8Gizkl8!{HuLhW@75M%a5$3Nu*%KD{X_!FuaP2N>qbk_BBI zITZ;+C362BS*wx-sHc@EP=(cOI1jw`pj~8;K!Y&|ZtLok&z=$?g1^)e)kbVpNmS~9 zdZyzJ@T@IkL>{bDmOR8kjW%ox_Vwil(MKAb)02+CUXJUqd@7Zm&0%k`he~_4@=cr% zr`RQ_)k!1MOQZFLn3g;5g}Y-Cn#W9~Rs3DrX~^uOz3lQhf;2!5a|B2hpi08^SBi~x zLXzsrLKF;Tpp88H zTz+^2oqAdmW-T~A5J7s0=|uGJcF7hZD5DGNxIAGmbt1E#Aq$@S0Lem`O&d|*(}~Hf zB6V0sKP~NNhsL#uRP5Tgx3UDFrq>P3XZ_r9XP3865J_M8>&z$9?IjPHiCY9gAPy!c zKT~6vq7>9u0QBW$ml5$j_Y~W0O zEx4H2gEm-+6`AEJ+U;TVE>oTQlaNLKDe9016#?9w^)};S>m^R1qU^Fp986P+9Hc?L zbzah-$d!C$zelDqBaf|J$~81%>QugC-Sx)}G)xmiaf&HPBOp7e_SB+}O&rU5j4L&;3jnpSbg#*tJ4wIvAAq`;-S;*98Y11sFxP@iV$3eYk-74;!M6AWCnzWO6 zJZ;<*VW6j{daUIbQ4fLUO zxdUH_j0^;cIFNF+mRYALS!L{`VXGH9n$r7Tx7U{~k6VA=+Z_A-DB~e@eGfPIiQo{z z(9ap;9bbR0I#JL@u6b4P1aw~`Ek+I?@{Yg7ApETca1ETMa>$*!-2R0u$d;6fC9=?i zC=lA1>l#K<2xdgsnY&?zw>c$Sr$;*NlJCpGXylD8A?O6*B~M{oE#&tx`z&)!Zd+>M z{mE`9CJvZ1U^!YBZ&dlkxGK^>BqH@N%AZnPqR0E%_noJ-S&8Hxt&fxkcnO@Q)LQ>^ z+T7d5Fv8Hoy^{SzD_PLoMT>T93w@n-uL~ES`K|!J$q~M=*h29V^&ERZ+l7@tCj*lO zuC8;k03~b4f*w)uk_6*Zl2t(xQl(5>9Sbgxht^1R7`oX(c8cgY6U z)}Cal(Z;46_enQOPk)@(vU@=_VdysAY8o|^bCc5Pc1pxUU%0!8TF3%pqmdM?`l!x4 z66FAL($1?CkD#3HSX__j9FKlvp?2z#bf*b3O_1dDdrv@hwl#WUv&WvQBG0@Ig$z#9 zv~zq7zkWOfAJwYDfl9`m*ixE&L7A>VV9rC`m>rFSL>dbCf}FIQ0{! z!Wh!fBkyB$wxsV-9*d51KT#8B!$UX6pM#P?4N0()058obon~GK@+mBp2%UG{3?{$Q zlT~d6a#(`-NSmZ2V^4Vcl2qp#(LrPZR0KgRwvX+O)QP7%fhSVc$CwdVGL>$7}et1TOH{xI;(#U1EkOqflS%*Lx2wBe; z8up%;WF-wX_1V+8rF4yUuwmL`o%Kl-Cj96#C8?qpv$%FGTD_V|ztu(-^T^PVx010#m#n11HJ#YdrBxt;z_$cG%Y7s zH&z8HbkY#kDN6i4tA2N?fi#f9F}KoS(3wa>n+q<>x0kb@t4wR!+Z7*`-|^IE;s`t( zHi%jQY%1qA+ENGjjR9GjxXydH<%i7dWP!CIbFjCcgdV~XFTcP{l#^L3T^vBCpW40^ zs-WtCsPkC7Euz!{B3O{~-GB@Uh`N=DM4c}|R=i!|s~8X%Wv1gu$kNrS4-F;Z>O3}tW{FA4JH zKMsc6D-1k+nI@`n`fXL)I(FG9q?}Kl0?^Jlk^&AfcGYFFfTtpH-#?%U5R{9e^UOJC zrPUOf&?pbN8&nsvzz_vO2V3$X%-M4@Oj(`qPUMA8r((T0pRSV)8L?8JbUDYyziCoRu{4VOqcn+aPz9ZMQ4 zrS6woj}%a*+SZ!6`buV+E!}K)=6e>M6aCOk7(7nC?`q=}w}XgJm{hP?f}_l_<(yiS zUY#nm`OC;ufjDE*hZ|*=;ENSJku3Pk_F}rPZq=)ci%w3l^V%{0?|2-gqU&a zk!h&cV2F{kV9|bFXg5kiF=MDu?5WPxg=x=aQ}n{Vn27XHK*~GPS<*3f3SqX=PdbMD|RHfH77-Ya@hqx zxi|wIN=ajW+50sJ>TArDYmDutiGXDPat@P)h@E;Ejn_a2!2kdt07*naR8aEB%VAyc zjP(-^y+{=Bbqso%)vhpl!wj8Sg;}4A(We`d%G1W#BG|Gfqulw)`5P6oiX)@+oE^4> z+M6GX4n<^nDC_emnHx!ipdpji$J=8FA@Rff7a937X`|W`%oNT5iD7O8j3WLw2vbTP#>8KC_gT@ktjGG=TT3-I&H%!j9qb- zaX6+;LgY48vU%;=b{)|In%(t)sx4qt83;_(*d~q5CTCj-=(9 z>CaPAPBwP>H#vT(HBAJNu54P7c~_)j-2x;Fux@0cN5)gAMbsgX_XKLA2#Fx=M@2*D za%deSLZlFG@<1f2(t$OV$;T52%@z%&`(dsdDffJS)c!pvdnZN{2UXgev4=Fo5Mxp! z1ZQw!`8*ajS}Y#v}qBsZ0l;)-Ih=oVCP(u?;_;R`S>*_lb$nn=p8tepX(cgU;)h zoP6puJ_j9KS~`~hppr>WFl8(Gu{OqF+Udvn0+*eLBp4iOkO`6pL}!a~6oo4drMVBv zfh7yd^FeJTOXVk@tQI3t8!@otpB&@?>RA_kI_w}Vido`@-iCL~C6|4F*xHf{QvS$7 zVi9^2g<~gOl;fOYms?%xz3O!9+nY2Pr0fnCE!jjG+_+WJAW(whXB5?T$+;@V^ z2#RP&9Y!ZuvS6%Zi40hYg7Tr3tz>%JAWPvJhmO#AUQc}m+ zI;d2El|m%K6NOkDPh+|OrY?Dj2dy%C46v!pe&dlg`pV4!zK%>W+9n&cY2eg0&Q4qP zcy6MrnJdk~ktZVT4d;(FFf9SIj{K;+F&8hkb4yFZ@1>gY}z1v4-~-SSPoX_mBmaWN>7G{2l{v@Coav+9Ku6y7E)fIuT<1Km}Qd zIG}=i*-4mHRHSO*TcO}6S+Zj*vp@lqLw`OT_0&5Jns%Ea>TyC)IVK|WV#M)g1 ze<~|_b@Z~Hk?w@7U-N4b_rnNzDqN(Yg9LqC){`91 zp=52(7t$B)5wPx<-upz;E=kSAK$E~8rj&y6S?OyWQDB*cFwKZ2FeCv%PJcE!PdUj# zq2cJiw1sMbYaSS5BS?ew@+B;z3z!sfDUm5IvOrtMlNj!9G3rfHpl%)TJ9Z!vv5){q zBVLdPbGqezZmgkYw$er(_UV1F3$)S5@94L zAI@{#2}^n--KffOG%X9=^lwf$r?VGHvAX+w+VerCI<1=O^_{i8o+@yJp@KiOlY>w= zs$LC|Ip7?`Ql8f=eJPpJ#SsN6Md`c~UOYp1qA+C%on^>EEQ~7CtJAe$d6?}~DPe4B zmexuZgy~1pT4;$Z_#S!Ax$-$(e#eg1pO@K19^;Iy2P#}Sp=Wn>`ZhnkR=bTfxU~0jX{>tc>4E*O8c0J&PtN0jS17ieth9uZ$EoR< z03~O=v+Z>?9r1}8JXpOYo0!A(sw4;Nbw!Ass=_+ydg_S&h1U$K16+$hPzi-BsCGuF z4A^_8swCo5YsKddJxxf^0ci=ex3tAh7K9l~R4HV$3|DQkk`CVW(WP=}(BWhrfpO;1 zmZyh2EEy&H7j>z;w?t#f1DAacIto!%TEctmv!@3vPx4;2Ox!CP7CrZ48fF`WAO!8kb7^=j8d0E9V**3T;w@hh zSzs4bmt;YrEYvlAvmp~5({1_4+I?W}GFOw!EPcPp4rfGL2^D%!VN2L;deWB1Av5$%u-C7A zj{0?9xc@ixse)Ma+~6TOl3G61mg|*VSjJZu9Y>2b{FEflF6!v|FG$Fd0meKs2SiIK z=bOqE%4zEXKpI$r{L-qmnk-O;5R1y0D&tD8o@pfp94NhPiz&NsE&`D;1~U;@?xBY` z#BF*}zSQ{EI|ckECoqla)=P-dzzIuH9~nv*mTj@Y$6PsD}CL zsugiEucqRsE87bB zJcU0kJh|X3T}1>|-DfvO-?tshTAhv8Myvc;@3TM}$S-HN&_PTZf{AR@BP#EhIqO|+ zAC-yq+E6C=K3*)UwVZ7D*(s z0IZ^RDngDww1W6W5R4)(g)ETdE)rK7$byR~xSs7+HlZ|_X1`b#FWTrXdB^*SaixVJ);bQ4w4KUgV8SG(ynv0D&>DW?&`TL-NTx5 zm3YDf^P*=ATSDE*x9R8fSR)CFX5`FMDQO3sw*@)*1QCDqj=a&jz=zDj1$5Oq+m#8i+5F*~AFHxmay8W?qA zUd~((#V#G-0mV0$tJ1dVIB>Am3@_)YTicFl^n17mfsv*tnOd3iHzD1i-FJ9>>^s;` z`)n)D0pY`Kp=yLxA_%f(;N}TBkkf3)fy|GXJ!5h}4a6m8vhWH@j(l49Wd)urAPXt~ zn34lJIRaz3nR!{MoUrAP+~{NhlQUaRy7}6Z=w}O(xH=DBxm*f*rz*vQG{~}Y|7)L* zy=lLvM*m((f*U<;bm*e%f7D%x=4ZI|y3ZP~oa{N<^m?`SK@_GaaijrB-!O5I?#=$~ zYI~0N)E7J@RIg#M5(73ZIAL*1t*&cvM0n0RDFEkK_QI@nKsy={vVsGwl7+~~D#SyQ zL%*`hqa1q_T`&+la@_(^5lF&K7JNj(m(HxVM4~P$UnEvLINbrjS21Z=WV=sOV$#)h z6zA(=ApP!Y-MNa2ad!JE5JT%|`4P`(-#n{GLqxM4hoF`;1URZ5EfJM-V?2R4Uwb=o zJj4h?L_g}ljo5OIpXI80g<&*`yPDa?lY~IjjrNf@oh)EEl8#Vh0e+xuxlY_b{EY^A zG@p_~Tf9o!!4@|grh^&dlQdb7?yL5&a^z?*7!MntCIr>C+e;iG=^c^T%zk4$ZmoVt z*juY}@4D-dUzJl{rGt~}qnk=}G-(J-{wM|A1j=a|(00GtuC>UvYndI$J>fyy(bEgb z`OHtWxO|k<=KS%_YjKXapj$wFOF>F$S*T5GiAau_^22>+!c%baa+w+LTub`s62-vS zB7DVJw3#%NmsYA_Eb@GbV8V79bbm4@$h3GI0m~T~HO|lMLas;$K8J3k;?D@xhvO`E z7!ixMf)5#vAr1V%hN-D)25;d;DuU4NT&1>8$(VAHj%%Iv+V-#)ffxZx{zuz5;fJz@ zL5GzfNN4mu6FQdEPmVz7d5LZ+IlYM11WAijE{+_KWP$j?GnGM3EGVlfiz9oDcI>(D zFYtMAH(VzRT6Doq7HWxtpTLBo5mcH(ro|N9Yqgb?yXzu(4CLO3=!}wQO~d~rI*Vi| z=q*&j$W^T^s!`e#ROSw&>_fnCj^HH@DpBbPi-l5a${8yUaMU{L)@$b>0$Of2`J_)Y zz)ToSjv#ZAbw*hU#!W+hay>~1U`h{{LUOW8d!#h129#&6oBJ9>?noC7KO!odf%%o? zU%uFR!RUI@C{aXtBNcSk%dzroMP0bG)a?1!kp!G${!7?yk?Hfw)3&Y~YcR;0NXuZ{ zWS^7h4jz`}Cd+m~l7?QpWN=X0n}O#olx69wHvMiX@G~43ZP2aAw!^iO2CxjwLnu5} zdvRX({k)b<`0$`QN1}j@9M~j?^Q7Z18S}A&Kn={R-z#3H&6#ACDCm)w!b)ei#zcY zLEOcAs;Jc&8cPdd79W8XpT>A z-UZ2Xc$-M@=b%z0lwGIvC%6kIFhRpULj(N4#_=tZfix6{k!^XU^$#@;|Gp%_3N5$e z@94ySaBZt1m|yaQu%Ri(yGESmTd1x6fE1WE>|UgI-9nHGy<}~S_s)# zpm&(kVkvyBv&@S=4f%va7GB^`RT;0@mZ>QT7j_)>3&?%k3gl-_p zvIkKZqoYyzsqd@)W_jN|ku(U(gfR_1mjMk!yUKdfz^kKbXCHc|7&bt5j0F?thdw1q zMJqwDjeN6?BkA0NBi2#1IlfeKjVM4F=!8q|xV%j%CIc3-5YfLhS)l72{8F6y<)l=8 zE}?WsJm=kHq5Va`deoLOn?DQFi=$TKy3Ad1xB(1OAiq^{R&&iDNy6Y#vBacaPalh& zTDs@o7k%0WTUvV#OP^APg?h9-KJwz#TuT}(7kah4d$!_k4PDzwtFjo#UFUR#HEFCeo|>qwwdwLd6_}?anWO}QfMuPo zr8q*Lon@E?@BHg_pmVg>jgDxCms?k%*inr9!x4X+lSqL0YQjHjKGb1ayC7y?37+VQ zIn)&~1REbPk_K;+YwOsXO*4X<%bQ&-&zLhFJpxYaKXv!#o%DQ7bOcE-Txv+P(^Mpj z+zB3-?Q!TZ=G&b#WO_s2`r5@^wUPl+t`{Nbk!E6|9`#d_7^j(+$Icu-TEF~Z+)h*8 z(zlvbcUBn0<{W#T%+PBB3`aynr5x<1=}lyhC~WKn-Jz(hTp%@}BW{aSnG|t3YSAMn zFHj2QDKp!2o7;6~2hgLh&~)^4sus~B$wERuM&;CoYA1CEVxZcfUaHdB=Z-lY){)mMi6vC0)&5Y{E3}z8DuSl+Js^C;Uo+vcsQUOEmyO=Y!RS~s2N5g%VF8yJzwGHg1 z)uwUxzO`(a))iw#1gkd6Ffq{%*S4w%>_T5wbUUVwsA(~@Hr{C_9BMJjp^_3NIwAd9 zi({)>$-yqoH+&}EQBss`ICQe_=|20K8xJUwYdZ`rUft8SOQgA8|9Zm2Ph4q;Ej)Z5~Hgft= zU<00zBLI;JYjAf((#4+ktGFGEXhj?6R+q`?IU1JWK|iw4mna-d5NJD2)1mH74jhU5 zQ>7ZRV3a+@&FqIgNkiVIlQVPJi*32Lj?Y)U!(zjLCMv(rmLP(gYK3rPrOf8vmt#uI3!$r}QG=BqP(Cb&U zU!f;^@7WY>3&ZfgQgF+X*+I0l0Zq&zu_5fD^hT-aFC@Tam^)H z#`8%>T!uRjAsu}bx#Ee&s9%D1o;SuF&Vd2sqHPq?I1X=)E-`~6&fx6y zgvzb%K1~U6oZyh|dT^$D5d>Picj5Yx1!u13gVVq4NgAx#i{!$}JX{IuN5rkAM{>LR z`BY|g226S~vA{efNsAzCa>@v{*+G>Zb9#p(E`dIR&pF%n2m=k?y@zskYCvg%_S001 zuTws{pnW9G>v8WuBRoW)BWb873u(XTf`JUw2M_ij3ymb9B6={^vE8>f?vho5lHql! zKET|2YK(JuUh-1}9tJpxD`^P(M;q)}8no8C!dzsb$+@mB-+3^}#eL%eI+|W+Q3RbN z|MPH}wcf(G^C=ojcbky_ zKRBPZ91S;osyOfqs#VfK%4x8Y3`>4|&Qc`7qp#RS$)@ByU_5%+(KnEWu!(@fH8ph} z=`iE!tTu1}v!G_Efh_DARRBbx4@u}m4tDC7cgdz>CdM)Pjb(NcCwIM znek+Sb(dSnf@$#6JAy05K^*Ek5QG6e=dPXcpv?9s2Oyu?pg_=H-X^keR#ffze@*Hl z4WV0&n6-7u)=wISI@Z%`pEw~NED-|=7AKeT{v-NVAqj!*tEh6XSbl zavlfUv8R%1FMHkaHR!9L(H6;youM%R^17Ke3~sC)WWj65Q$i&Tp_MrBIhcLtWNyvicn6vJYMl=jpHxXm}gmB(Q5rpba^d!Bn zZpKLrMevb>ER}M>`J{S@f}Vv{b{8`@ps=Bu>y5c>MH3=7bkp%ie zO;o`l)*W=decHKdXOieQ2jHKa=7_g+zki3ts+Mb9ij2tJZf{33_~OA<0sk|oai{24n)f`LZ-uK*1IPoYdX5*$j3Cq$WZNl2;4OpX#5)bTEVCK1Z(#VK7w zk!CsM*qoBi3m;KnGL(n{x{g(8WMLRlKo^uLM?6o`)K;T9qH;IrO9lwd4ndz09&&0r z>&X7z$wD9Gou74j+R@%I$X_+5kG(24Il5XVo(vv%M@n$9B$5zl?>OR%*)<`;Ksfx| z2ifwATy!9ohujrGhaFLPiRs*~3B)o;wpq#`O~CP&7&_y2l5kyqtV9{0%TG`QI@k5o z;#C`C=UEOY7q^i&36LDwBDz3{_i!xM~rQ!P)qcHiy#3<-fl7x}{Ld+FSSWYt$25#hi zB`QEyB=THz(m|1N5d@Q6SD?3A+vCW0MUJ2h0?8P-tyBwEfRpnFL^cd*2pe%oY7LKr zpCkm{v5}ms#vPD`5rqblP!oC3Mee0btz}h1b2lWYH_-n)R8YfRi2|c#*gfp(>W?uK zjzaB|YaLEt&Ix(T#2td2l4NnKN@tvkCUBaFn1VnONH-58T1fy)aP$wL*`Sa9n{`85 z-4O{d3~4(1(}K@mp5j6i1=pw`4I!)7xY33%m^`f`|5c561yRtlQ`Ra}kG7kMf`45? z%ZP6xew_!^EN3@VXWtMhsIsHNf z`UG5N;*KCpNunW=g!KofwRF@XP>4B({8i%O7a|J0Q>d32#wm2zWvEwpF+P=&4R1PC z0@=o1?lb548&cqa1EIB&G=#j`ukJiUYHMm@Q{B=$k0A;;l@?LpZ7DA|Mig*xM9EJ( zy?57m?C8D~UCrqbAz)Qj3(6W=BUBCIb=pRgg#p;bF-62d$#rjUdFT8l8JO4`>b9z; z1+z*t0bPmYmlrapALyZoLUxX!5Q5dEE#zrVTpGc)=E+>4%MJ1|w2{=2OyLwE7Q%>r zgohj(pmm_gM35s50i7`vhH-vqB9Th9U0P~`qoa@omYZNXHMf=q8*bqVAG8jhT#~N@B>_L!rBn@jeowirK z$6G$p4)c_x4V=4eBMO21HbT7qA4%ezp|}{D~UO+d5%^x=Ydp z%1Au(odi6Y2A+(8a^l&D02NUH`e499{(`ec92`J%X6!PBJ;bQQ=5*_?wH`3)GaZL= zz{PWmPeu|xI){Qb2)b2I_T0QY+UQAmpIYD58D_jXN* z{OQvs>rhhchqbQ94^8e~zMCEOY{>Nx0y?;sEdAWgAp64fsB%!R^61xlfc~4l%@f_g z5C+3k6|mz`E=Z+D-)|`77F|41D33`h0%Vyo5{qE`f zdZHOPVi3vn#e^jkEdVJ{;DMOzlw{&j5QE&|Wyk}C>VDBUvTG4DMHATcvc*a9^hKhu zCrQW--Q<8t)W7rV?R2!&-tO4Pryht-Ryerc%@71FcW#8}95>dEXlU0C!WnIvc$#3R zB#~z`hpU<>AlZmC0-s(d3K1M5oBBl(sB*8+q6*&YEa`|@o9rpgkxfrV3;-!0P86rm z6s7FC7O^O!4uP*^%t>rTs&iv)(FEo|jz}~{6hdI<7irUuaCKOpH`=S$Q}g7Y?~`sL z1b5Z3-#iJRu*0zHFoJqMPn@&_j%^7E&Qp>r;-EI9BFZqjZcbPC6E^|gss@r!{PM7mRe~?)N<+ASg61giMiN>g4+g#W zMhF@WzPa*-FxKkfk%PQ_G_sMM(PV*vM2rT^ju?wOteTI%yY0A#GEDHGrzDZP6hRq3 zQ3!lIp>XsflU64R#P=R3+ZhRuGp!S?Y^WuBi`EG-ar;x~BgjGF1fTwmw2+2?hy&;7 zuL(mQZQ!ZTGRmzH2MOA}b&d5^k%aApMMloPjwooslk$2!Ns!4%FM_}i8=m%csx<7h z<>`VQOE+Zn*OKxacQ9|IM_9D#JXg@^&0sNx6;aIGw^ zD8A!cM^qArv_xHE;4>zOL&%>Qm=7ds#!9H})@w$n2}Ypv0?RnOLKL`ZM@kkwh=NQ; zyre?OYww-Ac}VhoO}gYj-J45l-JD!vj$HXzWoPr+5Y?ZUXw0 zqy@~*G@hseJjP#pCWrz$o#*F>D3D)@rmPZ`Y(EQ9f#L+fiQYm9*n!Ck2QPAs%*cKz zfxnJq)N~&%9;`hP8NIF!h9Uq0W*fB8yA#baS zg9ODzjVM4zF?X&JSs)fP^F+ZIQ4ptA*`^|y98BU3r}IjsNhq=qGpFRT`w{a&$^d6T zn7`o-D=Ie^Tmd4%=zEtc5xoM$LC~E0$k|*jamtc%L9{APH*uRASD27fohc2H4KZb zrJU!btaoY!(f~6sD(1%jH!1+a28#`aAqpia?BBu(-lg7t*H{u#2m*OgBMF2I8C>ua z1$@m{8@z6dj3VFABaI*#`{3pb?h5~XJ6C(p?LeyQ2prxJ<8BlA z(uPQ!1Yc{2CNKwfPDFfB+VKFlq^-y75+T$YA#W6F-MZS;iaGj!10V>-5%()GzdhER z;W@L~K(yKucL?Q6&(L89*FxFGvr&aW`0kJ_6d!_TMatj| zOOcRfm`Cjel8~LUM;oYg@S0|q()9rXWOLq`u0}DXCQUt_PG?wMQd`()RPI$d)wGkS zn2|W%qZqJjx_5Z%Rgf3k)he{<;mO6s#JP|W2En;6fQdqo$O0iA39>*(6|hSgiyu~^ zko{t!B=~eJ|0dQF;Lj)KJb9uhPhuA=>m1W3QNqfv(5I$?#yGqCq&wtgF4T1nAHq3INDL9#sgG ziw>@DYM3|z&2Nm61|+_LizV7LBneF7egt7`SG2n$ZxP#Tgu4;DnwU3u z>ch2nh#&yt8r!IHeC4jNj@emX2~pOl#F*a=ymAdJ*qgp3#l)GROi2nXQ3zFJ0qV-P zGL6V-w2%cDt&oX=lO#xxI-t0;R$&t&NduvvSoEBTMlTxHJ+y-FxLUfj+?R&rAs@r0 z?h;KLa!|{rvEvGofCGsZ(WCiZh!F%Rmt) zlUj?*u1&pODzZsI3#qjxk8#W^Y(Z<6W1cG=bzqX9p*3C(7(pJi*Es8}Yw`j~Nc8Da z23@y!<_bx;D%MDXs>Q-rfUM&}y~1b`FF@$}iBWd64P~OyU>6}jrw03|v z?8zTm>ert3tZ&0v?UK+hx-fBnpw}>nr{t&tN~V&9(z#d30x_*gBn#qt3>oAU8s4|Z zz8NAD%K~T4oy~^dGZDOWfzxA0*=ZG;2?;J`K4RvtWkftc$Ci)caCy+=1=lZ4ecHg+ zzJ6b5t|HJ3&F^v(1p`S4hDG8@jW>X2SC%uL^r>jkX%xMm?zEyLqee6aWiv|OdBC)G z3t>N5!~sIRFVWaA4zi&+qHqY#XWjWMn$YkdM-p<-yV;8$P-Do#cC17e;1nckN>V9U zkcXOf5j&<}EGlNd1-~C^DCIn>w;bbOglGbPF)#rLPG`D^2&9@Y4#<~a0XXUqkdQ6< zkmp(Rgw!>2*q`TY(z9a&BizjgCsmT5c=#8BqC`xr)nqBKC0T_IO8h*X*p8MoW_6xA zo8ZBPbI!pYI<=}8hVBzymikJ%w>%nWv15bY$4uNJ$Pc$ca38*^i7ezlV*r=2C{kWf z4B@*AzGhJRv{wXwflZWWq(%t1hAby0*l{LjG_^qR>Uigyf7@55pNgOuZwMQ8Sgw;% zFKe7Z%B>x$6RSD@%t_g&wkS1{1lFJ|9--WONe7+48I5sX&Bgk6QU`QKjfUD(cCyeX{~oZk=Czvr`dp3u#EnB-^vn~5KsfTHfJPR?iAY2w0m?~o{l8@ z-t}oZk_1wMJaiBq6H%arYCC9|O!@VhrJhW`+g{LqZe6p&der2ZO-n6DIHY%=&MEKW z%B#f4QVG@`pcRe*1LrwkThvyjRQ!exKN`vbX*GfX(_<-LYpf4DdGTbL(L2OL=5njB zlLcWkrI_E&eZd(<7U&c{vLKg}&vAj_F^?g{>prMyQ9}g=3XMWUp}1t9lVo}!bIj5sEKGFBw=*QC1!CPAIr9QwMQXLn(uwk(KiRR!oT8c})DQ%nNZE7g@?H$X zn2dKV&h!MJH&}x0prnf9do@pWtDK;TeT=^Gbwq(X-xf*eFz^6nI#l0zU%ft-ows~X z3lH|uc72Q%x#VanQYnGR0`%PA)FpI@qZqW6q)d!>drw8r1#%<5etwOZnj{_%M=j&9 z8_Dl!#A{?H4$+GiRDG8Gi*y6-flIGZI2q)`F{*;F(9EF17pIgfNt}d2VJ+s{*X2HY z$iWH@rfcQ>CT4*HzOWwrzE(##@V-4QX z6WR|;q)n#IBy(ts)G=NbLo+)l(d2=$Fp{T`I3b30w;{0y#?)5srtL_i86lAbizyZc zp^=Rm2cIBEHPvhtI(-*-dIKli;2S#9MYftA_pod+smpr#=aLgL9t{98m9pyv*!7{PT5FmfRnMNK!cu3}j2 z${ec2jTW7KaH?*pf}cc~M>$O1q48x$AAaLAh0ZS-`%(A+=kOv)rax_Je5w;;$6A#% zEoN6_5-&&i;!;NRNtN?hEQLub($HCEhdXvTvv-@QMKyV#6f`M10QMKBZP}lbED!@B zHRJBO$y!Tlqa_~O>Z`GhuJz1mVqdU?L2}38h&??ODf<~U=U&T&CJS0xENZs^l`-LK z8=qjJ4Xc#$*zYneNgKUz>^n(1Wf=A;N!b?>2@k1Mwkr~yUbTfF3$`E$6Ez6*lT7;iT9g4LVpxMnCTydz zi9N_pHVqmivSvM971d~C60vD%BN2n(AqPSlYr|dMSE<{p85APia3SL0A_%?&oBq)| zip^eXU*v>O>|az)U4(wgy&;(PqIR%jSERCh?aCk+rCsvt48uE$+bnvp%rJyj2`^db z*zlMJoop7&=5PX{APlTa%{AuKA}JJIz-evq0ZyS&hl4DX8oA+>w4G-B`arK(=mu3Y z>wGG7Lh@mm1KfY<<)*tT{;tsSyyw7vxw+S3K6fBNWdr7PtXxuL%tV2qG>lT~Q=U`< zIg>OGu@X=F|oOoeq=R~BTZcK}t%(HVtz-4!H z?NQUn;>3+3+a-y2wq$701!0weA*qLG(9A|B3*6?eShq|XWV^<^NP4Fyw^VB2Kyhiw zf$3{;E&U8?&f!P@n0z6kbT#46xwXUP{n`nIcqLJP>P*Y-t?pn|5(LE_hNAR)RR;E5 zr|TA*J?#mMYePnbGjkCmtTnBwN_Ux%SPivemPe4Lo8N4<$> zi!RI->AZNbHUQq}0-H$HE;;W8TMN4svJkJX=}Dabo{*eCebm>no`KTAIJBlGEzwPV zTtgZ)6OY)~Ls!@qlUH7`+!A&0$4(NP2m+Bwk}j%7nGD%8nXc{pO~ix>c31?9gwQRN zX(krKi37kg$S^QJ>mZ2MW(s3nmEawHkgIsM2SFH3GG@~?!9m_7si9%8Oac<~0>|hZ z45|VxFJW6%_Kk_zUumqnCK4fg-Be(eb5O~V+umfsoICF+Ue=88|=raWT(*3s;#2-@n@^jQi5H@Vn~b2;nSw)&?bc?6Mv~9Bio|l zWFUqng0M(f3(;X%&9B0kVkiljxK}8zO^V^{m;>H4XeTBu49AQDck*9N5M?KylfPHbPR=XR=YXE;>f_S^Iq^I3+=#8b9(Yu zH4-O*JyljQ(FVmF7G;chpFBB1EiE@@VQc?&vd|q$gM`}StiAORmr*!xt8!k;ZXGmX z=rOc^>*!1xC{@ja$*de`YS@O!*aV;I{j<9N4V`XG)iJ)Ni~R^ zj*f5fzK@OG(C%o4TVACiWXCA?xRwr-JzGg~WW9DzU(LShMtkaF;weKPb;hk+zg>^u z8!RW-eNprR$TDJf9LsCz&wlLaf)vDogt7o%FB*|OaR z>IlOrJhlpCo@Q!_%vN-aLUDF( z-gY{i&Rw@Bm#%ooQDE+i$O#(Afu6vU9Vu-gy<++udl4gjo49$@IFv)S=n(7y9=*ZA z=kp^{CI9y#j(7unTRr0=TN-#y?#(4FX0o6Rv{;7yd;<1lt@nAhl=lsqFw_tNXPP0L zBjs&jT1RiVd|GXAQ2~>qtB(oP=_Sa5dSpQbyD({@6?r%D9p89Sov~SRyJA;El8I_( z*K zII%Imn*K&Gbjtd6R2n7W#@Yn!-N$b>=l|22VxrUkJn;Dxjd`$r`q)>BT= z#5T~$QgO5Z5(I6h8hQkSF;qCxX#ka30)J>N$R4lLC)7bss+NV$N!w+L*+;Q_~`1CI>)-mpr=L>74)3#n}-)ycO}isBkAl~yOQhBR- zBeGaAdhZ~Ee!>b8h0`hy5Pg2P5(W@A!+ORb$V=Uw*RSw1*L@(lwYY?9+74 z26{9emdBVKjo5r}h9AHyHiti4JK#tpU8Pb8DQ^22A$bYNjC#_rCTC8R?G-q$I&Tc= zAg}790sPttf)*$a9d3uMo@li|h6u`k&~}J|$?i?*Iylg*w5jvJBvMtOc*$~+dN<&m z>Z)6UiMs%}?}=W=EG86pdFy4Eq~F!CaV;0#oi2u|O_eH8@$w0MvX~^1t)g;{Is+dZ zUYm_9*ocPoWoHXnu#~MQ%-U!BdwQ%9hUIZ1#~wJ+z_W<$=he&iIqEjjK}%)V5y99> z89c!c`apc~ct7 zYk3W#EVx1lsI;M5rB@J?e(Ikr&QvXjuYXS9uVbK}I@+L&?3)4g$MSS_CR8gD%h&tx zn{x%)-WQk)2ui&jM`p(lOHZx#V4Z+^D{rdW+%y(io|W#IOP&#^d_RWv z39bBPVj_e191+b_TgyYem$XJ--$^x%9otB@Y3}2u@+z!fd=AxZwtLXWMMNyu>*}yB zFIx(ET+m*M4o3A>FyVl>=ov*DmKTF02++Zo=s{bQApp`K6OpaeTz_?W#;h+B<-F5m zLHu?DIuf>Fg}KMa6A0ytgL~(Dt3GwYL6T1sZq_eW7g-NURNONuok7WBf zfJ7wl*OAEkIEyWyFu3J${wdl5`*TwcWcv>N1I<2KzfL~9WWm}QIml9X+*IRt7cg(D zN=;FMPC9bhkwCrxfpGCjg+9^{T#c?}Tw0J2$-=cE$Ylz$z&065lLZ@!RLT*Jq};f1 zjjTi>@QJ1^CmVW+BS#l|IG(Vz!rL~LE`#z7CYgsg zb8eTbzKhN68Wnc=dXvuWN*Z>ly3G0@dq6KR~lX1Er;oTAj54oelSq z5O+zs08WIIzW}i!NWL9H11+7YdSx+{y&g zt%@^M2C{&&VhX_QMucXu;At(aN(x@5w;PUW#`Jo(DsZGHXC4XZC_Y;OTUzensnO*? z$<8O9Br5KIzRgkRbqD#?m>;U!g8TC6<>MFAT-)b(b%o-?+T_IHIquhXh9(dG1`hYk z*2KJhx=z(B6MDC>eW~KaNR$x8S3e#ODbQ}cL>BmwhlKv+btUkJArF+Z3X4G5Nubnsu9w@=#rZ65{JOEx zxlOhMK3$Ff)IqXo5xg;vlRaV+Hw(twEE;?gkWAe7!1&bqW$u!3|zExW`~ z8qfYdw{$8_C30f!8B&vK9iCO0Swxkt&AZl$vp-`KcZTJ8D?$StDhWj@lj8O|62I!R zvVfUrpa_hyg-Y0EK!cItj_?4C;yP1Nd$P;5Q4{k3kt$>99NK7sn)dwe!UO|i4Fm5~ zZ-7+F7IN24Mx=@Ueu5KHvW4pSaoRSuUM(;`F=Sc$cRF^(uKIi2C`KWn|R2HLpdesvSa}egsZnp zjnkw;xdqG{3-T(@Yu=(v76g|ckPpzYDCB|CPMXOyes-@tP=F&JKFhxc?vUf^<&9YjJT4!T~;5ZG`+)sh+Cy*3&mw-qW`@C^7A zW#Gsjw-!Q&O{TU6_i00COMSa|fDTGFn+G6k%?e)~FE|bhkswGz2-}C&){}X3A%)^Q z4b&8+K&@>EC2-f4;i?hoSboC>P9_Uz3KiE-OWrSA zZzpXITxPk(eT;%!=V8yF%}4Jva@22e!c|{WZBI-z!0KS41%2pJpC!z#Tl)z*1qlw# zAk$;0Ie#RHAX|gt zH;g*qtx?MaiO_+rZ^|+e>fUONCcL1Ohmq;`nsdD;lfx113sE1f1VcQ+S^xN2gLMfUto5tJ51KZZE$R7R_ zY2uK5gaNK>(55KGkbl~F3rD1UiqaZwSTtrNh9VC5fG81t#DW`sP~_LzOW+dP>8NA{ zqC?M3U((0}|H0?%9A7SaHz*Bilei*+BCu30m1%lG?P}WiK~;M6#qK8fpLP4)^NIEE zICkucX0O*D$+A6957=4^Z>~j`D9(3v#Td|q*r3}EYw2tAYrCgH59P>(Ap}XdM#yqG z+Q|a#`qTPFQ-pIiEjn3n4G&?t*>2uEiVwFH_mlkKiNo@$(ZnG@zK~yu=m$oNlja}_fpEgbMbc>c5?%*^lQG|0Fc6@kp)j_fEo}mH ztS!1mbv<4&QN+eA!O4Bdf$dTE+0sIgj`YUc?4D>wrI+q=TP>M1u1Hu82sM$--$-Ow zVzp&FZvP}Yzda!JPB!`NEbADP9i=q`PB*<#iEIgz1#@00m6*pOqD#$2aYCAs1S74n zytonvXS89Z0Ew8Q6cSwQfObxzi9-PN1lS&^3w>VzawNE@Lt=eF!3}^t@KBn*M2?E2 z{E}oj&`XztPt~a&J2|V}An>*t9lEZT3>%w!=R2WF(G19>yE@O)DV`V((BGm6{w(f1UWu@->v9l>kc|Yb3$tSY z&ERICagQAvh?anJx>4kTA`^t}l*zA`l<7>U`C!QcCnuGMQ>a}X;gxnqg)M9n@`51) zpF*d}Qm0Y_`nf&REe)anGj_W2-6^Vk{|3jo6{f+I6w2+yoAV?FU7|=`s&eTkHPV7o zT1=BnQoMH1F>{9jIc(TB!Xl>WE%zBQXP22;(lqBMt0+DgLS>lkdZ&+S}a+(qu zZ3qERQwqxm-7s;;ZQF>$X63~O?!~SM#-eWdO@jTs~ls~Gj|2a8im zNM*)aT~j_Mqhox06#N3g+^RNCyT7K)OzwwOSv7y*1f3kRD;mt6xFPfz%(+5nYxZu2 z)&U-6$D?Yyz-|y!pGV=g_CzW*c-n-T6?V93mdJuOV8`VzlLh*mRu;o`g)dlYOO=^z z@m=9TZC`UoITDUGA`aBT=#n_3t0N!F6#O(Lk~nO(tzWo=>l(7jt<*kA?Hv=L$4DNK zI$}s7l|RsNkQxq1D5&tOv~`?HB$$j0qKEI6&^3Sa5E7GI>VS-SH#^gnHdK^(*sVYM znVL8!)((Wf)Pm}02)(cl95p!ksNB*p&sj!rD0l{}fE;k}t8=FMbV8c)1N0u$PZm^r zjbuW$O3%5@wuxH?_;4G&+-qxdG6x;*P=P+sR!1DrG^GGWOVCuM0A4yw9s+t`{rgBz zqxwKV7-6sz1)ex;2WrCr2?Zn%Vp)>Gq34>+6Qhf96zTHoXz9nQ_o2$3tLCccQ4PIt z>W6OP-eG0mh59*YrKobn0g)51w+A=aBBs&hH3^s_7orWo$(-tXxr}}Rp zIzw(WYVirA9 z%Womi6DLGse)qzer`IsZ9C>Sv@THVAL|P=DBk4JxF8(p-4e(f65Stlx+*QjP|FvX^$l>fg7fZ}kyCXO_$EK%8U+hFdmXrxZ2eQy%UnLJ_ zdwQQ(rzG(&RJMviArF0tL&%~IDboR`E9K{Mo1t}lBOFU9A|ZJwf?E?nE;x1&1x`*R z3Xb#p!dIiCG`lpp$>JhVO95KQMF*Ib_pw6NvLA1pI0#4I-n!{Na!NPSIf5P`7{*9! zBXX?n5fIg8eV!zz?LcTF3%Zn-EZ9=lXld<qV9?9}OX4|NK@k<|*RP#u} zkzG5KI(SfO;%4x``HUqo2zVS`Bo9;!AR9@~iNmUEBMI9%DeAB##8C!FAeOVeT3-Im zC!3|>Cq*7OLP2H2lMENJ=+FX;(z_2vG?H2aKPqi++&~9XG$0xdw|2se0p9V>n=yH= z5_|aZ$<9t3c7l1(g&)IXQYd$i^ZL2`fxm>W`t0zLg&N5Y>1R`W*I;)^f)6@HAZYSn zh&rTg8FTT0HlPAcR|+spkVPH}@&N3^rRvi5igW)94#2fsm?-cg4m8oA+c5sTmJSw25Wq_3d<_QY zJd@Hq$duAsDUb|#4`#Zh;fR7nAZUBUQ>;~WS6fi&+;*Mg-eaS=o}1O3Isc=}$zb42 z#EFhLlSi9jX_NKa&ljM3(GvK}Ezm2HoV0>TSO?~;+KfYChJisMRr$-=&vK5tpC|xr z2ats}jkAG0JHVo6qCtTp-~@rl+4vS%prQ`iI*04IY`BOe4shLA=rX7An6+!}7l-=S~ zhfK3NWhpzKu^BS@kg2h)gKT_oMW(GZ1MD8r+~_WynZ+mej>fd4hH^)azqd_M0*C^E z~f3Wr=VQhko~Zb|_B=d)(_bZ@IUH`;7im(*Qc4>sqm3aHnfDEhn03MiWs8 zO7B_U&U?s0XEZCFZTqc(-By*pnWb004fuoTL+0mJMIB&5f;@zbK$I^_MlLuKA;3f~ zRE5TI1mWXr7NWqK!4e5uO_=0Q^R7D#sTz5&%&QW74)(m)_fmR>8jz|Sh0{DR6Hgko z&*7M1`JTRe|6G(Zo7C2gnR~$YvDKL=J)ksD=hxPUEI8!bB)ozX_XL43P=HU#wnl&> z589Na{QC|b^058NqYt5ci3)R}oUMc&X^XQ-4|F8*Cv{ECgCr6j7x;{=z)C&)*td{K zmnuTI#vCS13rP?qY9b-loW*Fv8K0wxi5Ap6)BDZ+8S}=S^F7uE;d*F2H&NJRZIOj> zMB$uI$iyf-NHYR;7duZYk%w~162E}iKpuh=eUL2ovhfyxyc$S?)*u8631QEUtBpiH zIeZfd@2Dj$Oz$dWO0@Mi{KFctCQHJbb^f%QKw!JNKJXTDfG!EIw572kT8-Mq z*yWJkV@nYm%jTYHl&5JS39=-*;@a)VR~d!0ZI^+GiHW9HqsL1%nsjt}@jFBjOlm5e z;`$!=c(Sm|z+7hy6UX7f^mrwL7_5$c0;i#e@l9mWB#A zm|hw%rU|)K5an!HCQ&nr5595GN)pWJ$#M>UI=b(uGBGjHjuXF>ZqpnQ1SYB9g_l#c z6NP~NhJ(mLJ5KzpO_*R_^bB3y;;YJqW1q59eaJ(g7EEUcm_Sf@!SqH2Qk3q4u zkxJHPpr*leRKU%@?}h@nM&SujvtxX{r;Uzun*(1PlWNGb7jFJpoS2wcVSb-GwpoKn z0)Mq`Jb#jfiL>B=^BDxcI|S$u!w5tyAKq5-5D4E!A`l^zB%-(kA`(@AY{rw+=uCRQ z&TO}+!tT_;*~=Yci!MqQ+MzQopN%;T#DTpek^q8AI!H#>kZ?})Z>>GQz3JOGjuSp0 zTzgVw>U^Mfg(cKpliZN7Chg%wK~S@U2XMx>f8qeJ5r%|*T)_F;#nhzKkvv@3h)y7Y zTB$vv$V4w#M*~VRd&I-xMHZtV@FLu3XuTi&Kb5T?L`(y zJ%{afG`pgSO7v)FR#Xn8xbcLENyV-UJz9s_0TGWQ-iIgzx{WpsTGiTUv}iWd6aMco z;D?7I5M9Yb0HXrjSEebuDD|VBeKR=#!e=E25|+95g;N|?a<^ZnNU_GgRj@^+D)h$X z*>xl=>a<5hp+Zl0@-Tawi93Y1nY#(kt79Xo_HE;^2T9Zv3I}Wfgyu%27HBexMP15w zn`*;pc}0%}zrd+CHRi+uXR!lwFTUQhadw99X1_5pp+g}Mr+SS#8{<-E5T-?rBneyE zkwn2K**EPdO%un%y@sI#AP|vv?XBb?C_65dNxgGV3O3UDQSLbMU!6)F@~+Fe!Ry!5 zW==AA@m257ySM?G*d;-s)q$193P_ow3bZYc#%H z%BrWHDEMq?vbtM0a;q=Zgar@U?Pc3!&C`d%VCs@a9yqnsHw#v6h(HAP0hSg-OX+G+ z)lfN2Nc0r>YMg*KoCEoD<*8iLqeKyL=O|wHZBR|QPE2&g@}v!YoO4udi+UnB8~d}F zp99%O4N|u1>?p12@ih7Lr5&RRjp-+z4j$ykh2BjFwX+sazmU(|eug}dY8k;*TQR^Z z?+vSt5)Xxs73VN?-L#Eosp8(CSBW0aZ5cu1c}e9npeCCQ{{)ZubQsa8 zqFic5-5i5nS)^}Acq}<^>OCn@=ub2cY#BIbaH1>7DM@=;l;8;;M-V&J#bZC0(qDu8(38WXdv}dZV zEH}!L&)IHG4(WYJcS0!6T>tkBwcbZX`vlUkJ1L-Yac8yn6YPj2D1xUU3O$vTT5k%R z#UzoKB%(mo8iu@;^AHGj>Qc&nSja;tpZ)~WsJGZMs!{oz+~l;PC_7C(p*mnKnOf5t zZc+EU=yVL4Mj{Z$RrK>9#6^WN_m4{UUXJqRLAkVlitNh+jlHF?<5Yj~kKJC6W#sFmK4i~Ewyq&Z(V@~f7}!^MflU~U-i2O}ZvRTwwjh;MzC zEYTDd0e#*t?9Mki_{!}$)9bc6TIOj%EprJnx2|?%vG*E=VpM=pcE_IRnV!X3MDQ2l zE^jBL_22*iAOJ~3K~!JIDT!9>R*%H%=pG-hWRT}@f9vxf;V<_h32iAAok!n-UNDv8 zB7~X%{X{iNm-K0n2RC7Wkn5>$n;;95$_o=*goJ08-K-RNKk05$F9t?`^AD4Y=Rt+>SHMP&*8k2f$Dnht$_P<+gIP zULg%b-QHmpmV~2z>U)xe_SA~bQI&9VAS+SVm^-ZHl^*#P)0Xa#I5ZQ69DT_HeHDj= zI0Z%m!HI{E@5$7FME&UtBcWNPA`_$$Q&xmH9C;L?M|d+`^y5z4KB(t3Kx-KXWZ5Ah zLeF*6_t!k{i{62%amo(H0c9b_%RAX&R%08%7>wR-yOLX>yiZQIMHGf9C9w0fqJlfX zfv`GT$f&~|5eM?aZ3|k8xxQ%Rw-D&za(NJ4CLHSsCTq0z&}TX&2i!E3rw2h`I)>z% zo`jIC9|*2{j4KzNsj(~8C+!Nt0Do9FW)GsbZ|A86c@}wh74r?WO7}!HPJr`Sbf2iI z=RIEVo&A~tz9b2fECf)eHRBELL8HcUy3;z^!%o1C_jyUe_)PY0Q62epUe^F`cMk%w z`dD{F93G^Bc`*1USpGO>JeKhsj^LNAsCC}W-KV@6q_|L zq`~`8+{k+qL&xn+P3dSy+~l59>keAmd+|OAVW8=`-!)D(z=mO-+2s$6p4MSRje zBH5#{7IX~n3%YwtGBgkNcH8IUVY~-Y6`$Poz;Kk=B-*9TaVTL#Sq-$;?ABigrJd{y zk&^7(Y&Gj2meG-KY@f9R+yyi&ZJZ*JyIZy7;U0*CZ4Cp{`BwGGfH>f^vQ|5Jpoi1* zd~>4U=8V#sv%&;LmP|+=GN%+h3`=65izc_urZ%A0I~BoS4mE8hIl745iQU8g4zqbMw?OupZ4%#oqplgZ-ETht5PzMFvfeUDv>h7Dh`(<;v@=s+@{^ z`eHm$7_OWJKfk0}k!fy9;rj>M_Wd+@sF>V+gT&#%JvzCs~g*0=(9H9vig zK&&^5mnMmf$@#yM1krrD(MtI*>U`Aq_-?L3f=CvDSI74+f&_4BdPN$L5p9w&mtas4c{rmBi9iu#i_x`H{b55z zOq=u9S;v}ow{JPgJZt0FH57Lons2eUaQnZ#RU`Y=isU?~QA*fBHay5Q!;L= zDmd&ti32g(? z#6TJ{@{A{_vVArs=e6@k&cwY$yTL~ECaC&})CDlj=rMqfmn0E&OvI6{ENJyV^5O_sgp?8R4KuR6DKT-Z6EQmjZnK%IrKQy zG9zhfzjO37B|~0*XQ4G(04gv)J3E<)Q$lD+)P~ssLcIEws9+`NQsval@?G{v21#k_ zkhL`{CX=q@iB!>`=%nrAe$j+oGZ_cb*W~BR(;sfbB;r}_xMwp^5P4uo0VWRj5p8Jr za2rukO1+qf1EWKy2F#T#s*t}Tq;%4nBZ(;F*HSivBoTiix(01SBm+i367!o@KnTc4 zz{E;5Vl;s?6NQBgdF&0wCX=a3&*1B9M~tkUvBD=NIOxwSjx-N5#_rmCY;cYQC?;-3ji&-66OnI0W~>-Ce)QW_RCx zzPjkE`wv}Jr_O!q+%?_R?KvF@;BSJ}LMyJe;X9OB@evS;em)mx)#OfsO$ZGV()kHJ zl@te$?X(^m;1$(-Fq*}(I02F!e}6NboG16LFNES<8LoTqlrS~e9#0)T1eQx{=Oe;M z)8yfDhiSH^+EQ=5usOgH1Rx^*cz3sNe0R0)aCdk9``Y36wX3HmN(^n#Rcep1 z4Cox==!_lscfk-r04>zv8MQy%9zERNU+#kX!3XHR?(FQ0kI(0YkIw_A>O}(yL!7L( zL2S4I@ctrp!{lSS=X*GDf=~`L)yd$5a?3p_ydF?N_e;Mil|7)zGUg0t_ky;9mmtM^ZLJ654Ua5WtW z`rhZPp7$5xuC6an2PsTjeyNROm?5Egkji4Y?atm)6WJ^TiqVPdDVS2Uh99^uy4DIsZX-l9;ye?BqEFeDo_kZfr-KB`|j)=zE=u zyWTK-S(}Ce%V0=ZPY{=H|D=wXVWx9|oDxqO`xPY$|B=fR`h25%w?8L{2yVH(W)vM(ND|F_KI*$pE^2c#YLqyBvx)p(8Jxarr0p9Se4y*d zXA+EpO&N-f{%B$!SFDa#(6vrG-`}9veZD&bGxPYiswX037nEM*gW2(N5fRD7NAD~y zL#lV%-og<20hrzTDK*bgd1^ue&pkG1Phmj}XTpuU6i_8brvL5C_4)Z^CFCsK#s^nG zE|2A(ThIMP_!AewKw|w)#LnAaHa)n^`hj>vRUhNBD%!}b+URuoe&A*2HXv$9nUWzXT32tPq67i{csH*dU?CI#+THr1)7>`&~D-U&ny)c6L9?vN95U8`%C9gCku-r&( zUX2Ae8;t}_eqZ;t<}N7?!g&aTuOl{S@JLHzma5=r(TVao`+4W_Z2xi>Em`63Q3b!M zuh$8tu-6@)_xWYEUdL`Mk*IrPx$ciV)RY+8pgV>j?5rS&A40fOEO_Jd^cYWrNL;a$ zB~np&$m!9|aj*q^C7(zc14)V)+3O|VD7&^F+}(f?^0_Ko`%wE2bU+LNA8(Y-mm3$* z%poV}{NQ8oa8(iw!^{4*Xvc8h&4spp$rF4=%I7(aPg>{emy3^b{H2re2|-d%THx=& zBAv!2#sxJm&%2t~(pFtz6IF3O{MsD{jeB1{w@RM&{agIi1v?N=SA7sV@9q_PMP0qm zf!VMGR<0mz>#$sH7r#Ge9dM!H-!EVwE*U(ZM%Co(T?i- zG=uxrJ9IE#eePm>*nal>b9t$>X~Jsim(kcrdZYrt_8b>1R^@ZdO74N^|0&bc`kY=F+Kt&}qkO?$iZ%ZTwI97Oq~k z76^uEL8{m3+bClnODel#u%QelG$n$PEVhvZ_7rPX#K&YGX2WM2X{<0C1`0Wx*#_h# z^>m+0aK|6j1=TbJ|4|?yMh_UL;8XqY9SnXS@XZlyzn90b$L>yScT9JGz(Zk6dP~Kc zYbK&4_^F#zyQvy8(8N7X1SgsCv%?R0|N10#-c* zf%q#qURPWM<^GR;lc-f|9mrLBoh>LIK6`(bev2vm7Rrqvhgmk~cDmqmg=M;S9-E&o6Y2tNqPfM0VKr&mphTu6jpvh@bZ%7hf2E$++x7WPMXO4r#}}m`#VDnlk0=GIV`{4M_Jxsj2u46Wy58*$I>;GiuC8PWB5*gY6x*~{Gvx|z&m`IF0YV=3%` zbWbglaH6g$c|QX&J2S0*lPx7uOpG`sQ__>G5{~zE`n^))Kg8_+Q z^6J|Z{n)r|=u>82#jNjU=Dr5_W%-O64*>t?H@@cnp zO8};3x|#1pPObtJdy8oTz@h|CEuB;J*3J@_^*}|3F?#YK#F)g3 z6W7u|gMxV0pQ0aJ<#Y4fTpF1PAiLfDPRr^Utygvmp>e+Y8a<-1rq^&a#V zcmJ3Fe0uGk_#O8P&}IlaXi&WqnOHEx_%c0F+4Xue{p?Zj zmFkNueq*Sxs~o9-b}usSg>Q53JWVg#Rahfl6L=+|F+YwzUh&9U?5EDwl)DfF9MLRI zkBI>8vWSzWQU^n5^js~&_3h2d=rKZF5~MT%p0TbD-&(nN*Brzt7_ey+X-9j*W^3bl)p_*H8S!>Un)VCz)Qm zQC8K7)_J@8Lc-@`mYTbU@mpuTrBIG8@I|CzXw$uVxgWRsyo86)US04I{3k*vd=D{8N@tR1&qTJ+GuMHR z-a=PAYqp;(X6~-{c5Q8p6Zd85^*|8W=PKk?$K|`vLz#X^=L_*u#fkeV>g)O1Lpn(C z>GtITu=0A5{nS9}eu`N464PJ)Y79Jl)fjm=jlna%+xaXgsH);85(#{Iy7j?W?eHY@ z_H;UOpCew?=@^aeF%AW3)|_$k=>`9?+g>P!+Su}6>SVk|D&`hHzZO)qj`OE9euIg(u_R_% z%BzeQ`l)IiMONThI!7t4LxzTXbG_oygr)0i7KQY5`#S1_@v`9a!0ghnPYc={i~$MW zE4*Hw-M+lM>LtCLzGQY1zAScLSGhDDmKe;w)}&thFql3QM`*qt-|c+cY?3AP3&CaX znG<~0biH0_3RyVYOm_iAWOpKf-kQv7h;~RAuF*hu2ItQ6(fT(aysz~w=q3v~_8D$b zLHhRPyOKS#WZfHPL(yOYOz6FcTV4IMQ4 ztKDnS*`DAH2FnqP!TRC##`|Ja0e$%OIV1*jxw$JVMViR=rP4Bc?(#6(lMz}h1Yd0& zYLN;N6WWKOTO2d|SgFeT)d}cu-oMKbQjZymXQbwExOi^a|8n-=see_s@p>otS_Ke6 z@VQWbnJK+`9q7DK?}-3I^Lo+wVw1_}@%Ap{b&ojYcS_-NH~z{7?$UAR1NGmXe0;r! z2R&zC?hgD*JVBhgm!-3d2}Q7dr;Xv>3!ldq;~%%;bOP_4`Aun| zG$0vI%RdG9q)cos3{48FB`9WB;*=2tpUzqv zTtmRV`g!T>^(Eky`6OKrQJo0gE0QenxFt&`Bl$TX@w8 z5$@YD=|H@J2P-X^i1n_T>1=g{QjW;zThbSQaS;lFCTCOY%FPgEucPyCkR+GIsKhVp zsCf89Js+2{tdxJc2UH2(vFz;ZoUz%oll-#7)prz_t>VRR(_09r^2)yzz;hG6)@M+8 z?HBp$bY0{6bE@$x0wcNxz+iIEjC40EUB7Gj$$#?UR^g!Nr6yVT@I0Ln6E?tH*j5XJ zAQ@&2GL2GrVQ^c(v`-HqA>yl{ypx}}9lFJk@gUVlHQ~pLlFoZRsu%^sUjx6`2ybU) zS79LTE@o}mOFn(?HjWVt%4~Bs_MAb|xjvy+CUzP1SdEe?^rx1t=75>;sZo5!MgHsb z`Lls-HRG3;gH>BSJ8ll%;g_uFd7q z=463o15ouV8GN3hS{Xwrt@&pJ*uF5VO#GuSWFvXR&p%F!WPE1Ys=8Vms6o`s9V)kb zXkvYWp4<8m{e2n1mz>%1CkEXA1JDAVo{pS?Cq15?ik#fQNXA(r$bz2h%cEMwjgQfp z1N0tFu*UW}0704zvK6o%4w!&SFFZ}8o=DsG$yb>KlxKvs)cM^9Sq!#;cLUYDTCN+D zOL{4FnQ<2(a=+u1XVSDeYp~%9^m^3qeQ=`w7Eal6?BboU+-)Ct(5X@U5)t&*=@%Od zd!TZOiX$*hqD8s8YeI2&oR_oH*CJ_daa<2KzhHeg)yc_0gg`WQ%d$_-&wxrPTDqQ{ zg{>NYictCuB3ZDe239>L5YJkwp^riC2VSpZ2wLI6M$KS$&*hT797kU%PvQaY%gHb! zy>Zj!cVfP;?xFm^M52~}ZTSBV3w19ZeK~wb5(=}Hij?QTkgsXls=?^4wgf~;&DC1H^KyrAGdlWI1ulwBMs|Bw^um5pc$068NCY7Jem@*B}w z%zN88>Q}lMfQJ#ycQ82;cr~K`rNM7Dum*_s>RRan5@k$K&`_J6+Up!HqsM$G_ZIe( z3mDQL4=Aepd^uxDq80ivQ9NAg+Vp&+OesFtDDZ zDME&IBV>hEO$}6otCTy#35TKDB(b30PridqqWG&F_s4=(ZVT>yk1xA|&_f6+RA3Om zWH|hpdzFUzU*sPVWhhl19<F;VM#h=Vk^_G* zN@ve9F7K0SQd0B-VL~0G!!xfINHH^JVc>(Mimi+1y3x3BKPgdz> zZ76)pfvEy=k-Z2FbRSeiVh~=(hOcHsGuMrd)cug#<(O;41a3!fKzTaLyr!Y4vw#Do zBa(uZ$1L|{0Z*bu)wMO4n-__AVKU+*Q^78dJLq4n~ zZk>2MJ~Bw}I0%I=P$IJaY^K6?l2gm+Dx8!aaAv??b#LWYtwQ5)N4`?`Bg>7T$g_tq zKdq$LZCxXNS#(XqktGYBB6q3Y`6GgVYvKDyAQ<2XCW+yatLrAu`hp+}RR;k~YiU(- zU1%cdFql=>APqlXS4$|&a>QJ5VLe~DJ!i>yWnqax2j990*^*>x^pB&?C9;^&Qo^(Ahn|_k--v9^4x&AjFgPd4HiHIVE z-1_QjMeVc5(NKadfk? zhZ=KnQrR3@gVoeU(DUOS@4b=2jWu>qhSce?O*dFX!2%NTCv^Xg;7~Pm=EV=-3b~tt zAVT#4a?k4Em^ljEB~KYr>#o#?6Pz_CsIV|VQ95J zmiE1XBG>Aj>o^BEf3Jn#EK`f+)qwnOF!;b|;%Q0hEWMZA6CqE;`p9w|V=U-!nzEE6 ztC;t-;dmg8jo$hTf_Ol^OrUuw^2%{M#r(~YL-XE~L(O3lKYOADr03)0>84lbLquwN z`tRru5B_fqSZ=Khd#_YIu}a`Fe~@c3n+(+|F%0Zls@kz7e0_&U$mAfScFWSU$zwQ2ypvDr}Lf$G* zHw?lFa5l*yGD)|F_3|%T#EW;gLo_MIhDb$-xVF20ObxX#Wz}c0WLzH8m>UFoUXgc3 zfSrPF)lmszu#2v+wKSvHNcnf0S4)lejW9Ot1`d&5?O)fFP>DmosWIBD_!HBMKER-ERG*2(Lmk6h9TcxItliQU=V zJ^woH&D6wNP^e{foS`pgc|*-!m6@QjgGR{e=D7 z8;j%C9J+17rdNDz=)4V}hJ-kMoY7~f{`4L4e^l^lh~C@TT3^7LU#-|*rN`@I$4_lXN9-hYiZc+Rn56HKuov7-hG3a(9ECPD4Q zAw_M(;Y4=_u%{Gg#H~l@hhpxP9q5VTaaACp)#R85;sK$=6|ZhpmvPr%Gdl0T$Ps1t z=w?6BTeYRST}1wRKLIF{7i$h^F`f0cSgHeO1qa8ZH)$yU?da0T=$P;A`m%b41Nf@` zDuYtN)0*DP;tB0FcnQPPs0SNq$AYR%ghJ{HB~k;SC|gYT_)xjqcIotqN+LMqY`XDt z=40pc-YujF3_O{BAaAOT=`pj-GaNYQuszZIjHBFP9r9o0TCp7ivi({NcHm`U<6pS| zJq`<7eol7Ijf(%Ig&7|t;;$-PM@FIfCbG+XX6A)2 zMs7JN*r#Dcs-_^vr}Y@ChW3esYaqinxwL3wHB!%v++pL5FtoHAf%{>&Lq56AccXSSV4x z>BZZTOuuijWEIC_TS$p;aIGUlwli%O{5a_RPnq+MMxir$Y!UC%DO_0m@QiGpTN6C& zL%*B;PyTVPf{Vk#$-6Y=@PU9ooLo|GFpj)xbFapjk^gr2h@lj@f{?T%qo>uNF(4gd zDYj<-gn=Z@BxTNkYM~Yh$uKch>ZV--Fa_daeQYr_Gb6dLn<{?ghpB4N&>Ge#Pgg*;%=R0xol#f02_nF@_lJ>_`1iEk>fWB zMzAQ3u>ndwpj_cw6DJZuk8P7;6*|`)$?-xNW(ivWIS(Mp4xFh?n9hC>L8)9%y{C&>>m^ao53ZpaB-Kd(n&03&=On2@d9}>5@D56{|7O z#7RuB#6iN*a6?Qf&IO&+u(Y51kN(!g-zMo}A+BioO`2xCCV~qKC_4=f*heH^Fvs=Z zVb4YzNZqe^G$eQe;5?&Y-VK9vP*&3mY zV(y$2ohIFJoW??cy?u?X;^{f{?sWs7C-Da0Z}$3PiHhgAXUW#YKxoLswH4-bby8Ewi;x!5%P2O?A&R?d>5 z?E>gU8koj-8W|eZW2b3}jPg3c$1z*)BxcHKsgS6j3N#We9M7euwi_71u~hI@W+nvB z$O)W3*)wZ1vvgR9ALL$nhLYY4s8{@G`0^d%zp6Yp-t)vqr6;KD2(&leI5T7z8OOCh zdFiMn*HSlV>PdPFa*ihBQhp~dqyw+dS~GOJLzWIe%URmlyH4xsUr%$)Jmntgh07cC4eRaijy?!c(#uTp>8&?e8NGNhP@CIlZEy(*EA@_r{amh zDeb}oB$nGF8jH3lpOi{3Blwem{}wY#ej29=Og<EJ}2sY7PU+IE=*Nos_Ogw;>%%tyUU#RS; z#0nJT3?YZtx4h3lrjx}%&F$2ILbh;-26D#%MFB8Ml5J1)8}E)f72yyuQxBz=Acdk& zhH{YcC2`Jnu;`srZ?}rL43#}n7ejv1?rhzs>QNQx3T<6;u(Aer`;DP`Q~g!t9y^#c z_GcU;a=5#*2}xh~_j~$93RRG(E$g1cQnzsn0---4nils;()QCx+qFDE1CMM`yk^X! z&bIMq1DR3T#KLUVG1F6+^)Ve#!7lu_5nlyQoOXALk|Qu)PxDH01Oh6>8W6tSe&JKU zY#P19(-(l$ngrZ1K#IutPwz(vALEfS)NJsWWGzg-4yMk+I_bd|eZdtmn%pqFx^_yI zj{FOpymwsQM;hAf1G-{)Ma`+O!n6nzYw9(-^v2;jq5JD|t?Ldbt`hAAp;*Z0g9Y!^ ziW}d+?TTTGaKU65C(^{y`0^M`DM+iFl_nXRGx`3(`v*Sgqz;_0Ix0~hBO_aFzvtka z$8B_(nf0FUKwZwG+CaEAxR8>c&E96H2 zEt|-&73dIqby0Y57 z_$o3`H5c3xQs0trLhv+dJH|kwVO!V@b&MZt(7Op;jX5$zq zQrh_ih2qpL#WH)M_bhtvl9PVMX^?{;iW3@V89|g`hY2 zoT2_+ThA~yb$`qD>lYVXj!tEc3T?g$U9JipIZaZ} zc3P~4hDKLU4^$~KvW7;gq>~}!rNd=vwoOcPAbTXrHF+$s*}b|h)IrVInS2BRUXq@- zkXKpx3ChBsl<9`#dSL4l&<@3vXMlTT|J&D$ef+5vDJFckIueK~q;tR+J0VMT8VE81 z7uER7z7c_dNTu|j2t5Ar^rR!n@lwY+uiq_Hs1woT)Jlp!8)Pf3tD^Mo#VsAmXxGpz zYK2r{hUFv2LOvUCQ=?{V8Uh1&9~AGrT?)Lqz1{Yr{BtuH4A~ZJgHP4^=D&)nnYijj zlv(OKRD6a7)L81LHtFT%>KpRpZwAT{S5jGJvm#Luf59?zNn5IsAZSrV{EZS(2+&}1 zLTFyCp#piNnu$j8ZTFaSNNd_O-?V0Oq6wOjiJybI3_eIYxzu0>#RU{6x3Zg-EsRo4 zkvD=$4~<-bVzksHBsieXsNll?ce5r*dZC|-6aA&IrB3n0h=Acvqz~_?)Y*R3i)1SP;OV$Q2zjZSb1Eh3;M_>RLAfGvPuQ1anU#mf-(*W|4SZn1?c`7*;b|^Z6^`kQYG7*Si`($e zbU5qagb7%AJtdqEZL`8$uK85iIy}ml5IVm7Lnc=XKXKiZ6rl@>F~g1 z&%MxHBg8)q%@croq{qYGW8>3z^vfAo?a`32(q(BJEc_TGfr*A3Aj)1aL{})AP-Y+i zG;E=@TN+x&2TD80L#0?m)7AhCQ2eUJSPZTYwkh8JJxI%V#ffifa`15bLZuL>@f-cq z2+7GQHF1^Uct7`V#(&a=Z?^0l90E`}oNgD7ep}~GrviN9(Px03v(Tl8PS*Hz6K8FR z!hwN-6ib4zg;A!?JQ%($yHOebHx`)q2dBMxx!xY3J}qebh?~yhwUQDR4Nj2fKoswk zyaMBP>7;?qB-)T)j6Zq!6+WA+GewA+Da8(!4hxg~V%G0~+1wnS(qZ`{ufiIUC^z63 zCR@rVH5YEw*Cb&?^^W{-iKC4hOK^2mPp@I=7E@Kw&&xKi2G?ufEk`f9=dL1KG{`Px zM>0k4H^G3gCG|m8LbBR))ZWsF>+j(|>xN(;I#8DoweM#Pv_6*^ZyIj}g!z@v20bCf zOR7Yj6WTve;Hw3THBtPci|ZMJ@aikD4dC~WuYNy0f*S5eUdvS61DR`v&~x1%5nN-v zLYFvf^4aYV#0VmaNO(Bt=sBIrv;F>NXA#Y?s$vu^WRO}~#m93Rhav(eQV;-y?_F;5 z)gMyJM;Bfc!cA<$&?bG=UBu~nElt)-le!7tVVV-p&=@mBTAEI}1xYDZV3OI0v!kG0 z89&pO)tG&vxk38Fk19jo zvlfzjc=hcLirHc*YhlQ2Gr*u7Kdx`sI_%dF_Em&8RDsZa6QzEJnFbA)EWnm`qAdgl zqiJt6T8wC0XfXanx)hUFMJVq@gCB!tB(ccz+s_kaniC7CmcCM@(`a*kqgJ64 zu3XX;R{J+}A_kF$pQ_PigW(lvQ?}-xnQFSQYhtN>EZFnbVh6OE)rT0@i+rDjg^+qP zO8@q3lDpaQ6*NMV-WV0}^7veDO)u2uj__R4z?@< zT`f{?iZGTmT>0SrA=YOWVI62c^wiZtK%}U%gB2+bMB46r=0w2n%xC!>>kq_)Qa*)& zAis`9#b>`gzDDCWV$=-)jC}^AgVK}mPtR*5Z_+k-^c&xv18uV?-sV}cOo``phn=DEyilrv5-lXSeuealjxNb z%8_Gn;C}JbP<7Vl3D1!t=8=9`Ido{+&lA46vfL2j=lL=p!39I43Ed2UG+bxL_31A3 z3qZ{5#YlV0)m4@TQ9_6XC&LCY0}Fxj{QRaIUq5*Nt0n;tpI=GI*H#;Zzm1iE$`B=r zbgr*$7XjA>w#AagD%hQhO}VyEn0+xb zIao^hho_2C4_8Vu1osyU8rIZ$oHMB}fpoDBGyJsnnx!i_5JIY-Xoe{=vNUKI@Zd`$ z=K^~Vwo|jRxIUUIAu1JlbUO|P1jQnH$WTBXODl(0AwjjOliv|%n(15r*=hf+>exj+wUy8%Gp?lu8}Kc)ouH4w*h7MvZ+4N%_|%7={9q;u>)q!k0Qz$MC3 zs>nb-&{HO2$3cw7uh-D|=HlEEh>g+U_xm%ekEW$?9~xyq|5Ugw$j)Y zMS7NwXT~zT&EtY@k3_8E1<$x(=a2C(P{(|Zj9TwTj!sfUs%T=3XM6*B%9FhHs_!gpCG3pBSSBTm6I>=rT z3r!@o+DtDrr*DFoUM|ghBVtz;{m;d0OvAvuxF^Mur&=TIsM;>65$30b8Yv zfK)x25Dk`an=f*kK@>w-xY2mQG!9Mh@uFM>c1q!IP$w!-LC!!0e@z4?=;RhXBFYzG zT+{aehm0!^q$4e7;3 zIgSP+u~?1#n-4=~3cha@D?Jg!uA0j8ZR>a#D(uTz@^_B42}c7AZEpGMqEoC}cN^gzZ~tCrptH%!1byXRaCjm+!#tP<*g(xg`#$F;ravr_W;@k_~H3%>M`T9Ef< z4*`cuYlj~$mJp*9!u1R`FS{aFI>-?1J(7!S)(ADw#crr6YHn8+KZn9NHBYlJ>p%I^ zz0E-Y$g*n;H*$1i!!y-DtTm#{>7$!S;x-i4FP{oFT+8*MlQ{%Wz9!f(b|2Bb=o@HcqnfuGHd{GGcK@*%JoTXFbDGoJI@8dSLkFUrNST z&@a+p!NshtyE()kTFw(0X7Y$<>SW1%5ukOQt21#TtnzU&*9bV{aB!F$F4*%JcWpTj z^|OV7jQ3JdGq4=095f9&)Hg95DR?*&ti?zW=iWTH0?_iD-5=hWXaf@Y z(d_b2SARl%*I%opC>{nvbpx zy${uZYOs%lVyRFnZ>1Oie)2$J6I`a83W;^9a*npu@J?IReMh{796E5ZcdW!D4NwI9Da9D!g4=kYS`>q@&+e> z9o1RB9Pa}B>(SOkh>_sp6(jV{MF&vPZI(`YqdCR+<)(}) zBT3Wxqa?2gQf>}Y8TGk*hv|4-Y@3Feh_U1VOS8APR)ET(?xZA~jImYd8^jNmqTp?% z>sT$5zOj4fyTUE>sirkZylqYf@0|OKo~C<(;XpJ6t4;L{GEAUm#PFtAWMH!`H$6L- zMnmIw3-vgLw(4-ROCi^O|5CK+RhR2QLuABez3Dutuit+z!hKi&NpT}Nd__%lpE^6m zv`yk3N08mYQ+weJZ9gPfRc=ol$I~y~`VRbla+nvB=$MP8h!@S8h$+z*A~QJ1QjMy! z)CdRDUcRNxXla+$)*tkO4-k&*wYs<-#Q92m+Ypix->Mgbr{10fbNMbhy)`zJqQ+r& z+rUAtZfaq!;YPRTW`&;buYK^3TK%HI%q_}Q?52gP)!86CtZ+Rt`L?0dHgp4J8k3EY zhRb40vQCKJTG|MP8kEe z?Do&I0B|{JS`4-(n$w!tW<=CDa>KFSy<~?W?gX5uAGER_{E>GwhGg>f;U35URzk=` zy?r0q6@#ZksIG$hyZM>Ej@Dw@pUMmkuOAqt#ke1pve`6X$?|@aWoV`gZ$qI~?%mfK?!yfrQpsba4ee)r~#v?48p)l7*?=gPqqlrl( z`ec(~Cj;&c}<;w0I+kqy#0&wmffbjl5(NeGOp|Lf-|T(d=s@6t^lG z10b{P8v1I=)h(q0k2(8wP{)dS@;N?o71X}p+clQs;3)19rVY)=7v}$J=!GB-laui= z>Yd`d2fkX{YL@ZR*mo$cZ^#_k!*vq#>V^$0?MB0$0!pInD224t(m_4Oune-6p~bkB zd};1l6`j#b6`oXr?#o<1Z~(sXL6`VW{8)B<0%2A%k4ZJpGKs;?cgk!Ehvefp(hu=l z@uIa_yp zB;{b#OhA=?&Dw+wv~aT>$p%00WnaIh7A8C?12yTI3^`ic9!G-FlsEh3y`aSMh1ZOK zZc-O}QL?z5y1(PkFo};F42kd=(z1alDiT)qO{LEA9JIM%u;y_Hk{^w#p(AE`BCyO$ zu2SKz2^7~tW?jAGqS8b?GJ5$&(uG%<(p^Xu7$049))O@r3q$-nQ{2dk#!U%znI2G~zKrmuxZ`Cq}` zKC7qP#s2(Z@l)ZC1MTcsE+;*;o&x{UM?T)~{14ubkQ)b!N)$T_xbRLpSYLmx`;usX zs2phg;vN2N!a9c4OWbDGBhbHWk{L(5jeSCgH8pOzBgYvF*;W&eUFU?^2xC7mz)DW_ zOa1{`p?W_hL7pdue0>p){0^ZNfSkmxC4%<8RMOsS4B8lv4=#r;KeMcXJaX36@u#8m z79WaIp{-#MpiUxWP^Guk1T?5h)ITGm6wu@LNz+gU5@n9%P|qT6JWb|TpQs9(dzJPw zym%B!m^e;lPaq;Q>dEv5s%Nn-BU)ErF>Q*;eB6cBv@@O zyokm3qh3nQaquH*0oqHQ~9}SM*5-8(4nH zT~={F3oFGC@gO`sRYFzil87`2#o*6xl7manv^QDZ*r$|fP)iS5nQ*q`rl#yMU?m+Y zcdSOf8!U4&$r~NO|G-;SK{Qi4<|yT$c}X{r2Nh)uYnU(8W$xF>14b$5B&*+yJKQ*g zx=4Q^GOruGJ24BQk@k=(t+l;G-R7=gX1mXe!9{kL%;fdTII(r2Xc@++TkA}N+!hm;5jSw{w{G@HAD3{p1WLW*z*clo4t4n%R&tqlXC46YbH(0_UwTf~F zMJR?Ak;R{O1{34Lx%&E$Ip`rp*|F)T*YPL!)B+l}?~|UI@r>sQV1H)0Eo}Q0P_2hb zXil+|quZ^)48#6h&@;>7rEySKYbDOugzz`>$%wJ&7`G`xw@2Vy3y8`XPTONB>Q2KU zS_;bIE|Wmps*L)|dP~9j{#yy__OGMyiF5aqwMUfOLaQjKQ2>dUgW;^du}iye^^{q} zgR{BA#JdKNTEq8G2mygstu&Lygz?PZuRDuiQYegPRGUo4c@0XabR|FGqFu!F9)Ld* zvCh+}yv}7AaBnwNj%rvYh>6KS7l7$I@`;o@w`&W=mP0ns^D6NnzD~K#h?CtgUrvfF zpuhx8>oFtUX}F>4rePJqis{bI#;2oe zi0OvZFakjuyG}l<*bsMH4UdHJGUD_DcBjM|5cP+jUCzAzFQcMg#v@<7hB6~o8OInt z5)E#;eB*a|-pZs73u+|&=$UZZ!M#MB)s8w-hKR7kt-K$p_F$D%-aHj--#%!xDy-CA zHn*%^tRa+Vz+%__BnN^R)-53dt@HR*Vr_Z7sS~D`EbB0GU-)WeuE^$a#1>*Ovw;*z zzs_KB$9C_BS;;@tTh>gn-y`C7W)KQ{43+P9Bi2=?COJ~m!*`e~o1iRhTZO-bB{*H9 zUxPg_7+R1m)hn3$;n|gGr5#Keuuccw>Kil#$$>!FNw? z)2dYY39{vyqamp;*!;{25Z~Cz1}KM zi?rohwHKwEZR?9NpQPHSQ}uCBdk%m;X#`)`OON<&q&KoC90rIDiH4a^KLc9bIy8@jkDR_`I;@q~VxE_m zyxF~&iy0RV@{xxSh^{R6P&luMRclsHrRpg*e2`xe3R~z- zW>?flV&)(%WI2&;)IG=irU8Sm6KYf@?#N*zsa|evUT5*J$I3DW9 zOl_<_lh|(DUfvc~heiJXqv;xe0{y;rw%um8*>-K%xYcIcw)IP!ZJV2IZMJRO{@(sG z-%QOk(>wQl@4e?d=Q+6N{@c(e!Y(lfXKi30ZjK9Y8Fwn8Ahy_`$v6DQAkCbN1N2#` z0Rb`2o?oeUj|hq)7jUI8%?Py6zG|lZ;ht(sCZSKj@YAHG@Sd2%dQX0EKCtJ0In9{6 zg=6NwjA{~mJXo#sWz_gO;Z`p74*QuA;*pBZ(!^)-F*%akV4B6DoaEJhb=?&+LVMk@ zJ?ysfs9hDJN*Yt{dXmqn>+vDh>i4rLkW!&*T|wun+e%B3C;ui$arcb?~_@z-f-w>lJ>$=isWJHmomj!RWg zW)Oesqz?M=sx(cFiP9Op+U0cmcR!KRjC!IG5UEVC{T1cy4Kck=?uE|cMTi&tM=q}Z zkdPj@>asC3Nst34IVy!kDv8cjl(imv32Y~nDKr_U zcyz`+XS?h@IICV}_~#imyvDS6Y7o;_8Jjw{;E6--T=LJJVNm~FMTuiz|AT)2VSUh3 z!M3)NS|+My;-$WqeYztnd0vh6j(1+yXMn7nK2cR#|RMk&J7;lVm6a3W`R%V;E^ zq9zcWpOn0@_~?c6-26m^LRpx^I2X7}LYxx~RE%qERAW;7#=jHxGnctBoxm%mP!mbI zkN+gJ7!N1pWCn|`JwyAs^Ql3=OL%$&%62L|%v%#O((;>8Qv~angQ`nWYf({E;DZQE zxSncFLxBnWPSI$HpMi6t|M$F~RfeQ@^pMeZ1~Mf{BvmH%?vqU9E?qU4Dm)njnITZi zKAg#jFSTeexrXmq7GZwlZukNzYs1EBn>XxclXZW!ya36LTxVYe2V3V&kzTSLaPgBU zF@(9OfceH=4P7iv=*;x`mPu@Uci|5(?cuv|w53Jd_nh5JMn zlKVK;gQv!Rez$PV*wo}^9m0mv7Io_7g@pl8r*=s)8$RTQaD8J1aKw4g+&$-Vm5>#Y zgy2;b2)lFrs2diGeweJrlX2#|%2U1t%EYA&Vfh`bn8&69PdfZ4aV?U4YP5VR>UWa= z3^u8n=t*bEt)%h^zcXr8F5oldR3X8&t!J(!M9~IH*)&m{yHZf9w--oG$lGSPDHfdP z3_s;hJQC#iNH~tG3I4!)qYSH`^Q|L2HLCA9nPc)qs-J~bwa*vTL?;n}$l|)wBKyOJE9dC@pJTt$vgtvF1+n8e=I}q*chVczLZ&~AmzR6Gd?y)B)^qPBsh z2HlqU^HH<>IylYvmkAQ^9tc5-Dx+w`lclogmD!quQuWbhQ(AEqi#5_RT&>y4r-8=m z|9Xt2vNWvcEn0hAUW{IZ3HzzVs`w9}ZqaouM^tx_;&=kT6UlgzlF;h(An0Ma4{r$G zMq2L^e^y)X9yA`!wDZ4BTu>R)U#Ok(kYy|iqwq_GPlU^OvKTSWiW!hRJf4{ch9f84 zt8hX1TBR)yfiwyd4}q^?RX($+MJv;Z8q4RZn0Z zfVRs()`M&48hQqaG6Wf74(*sPOfgJMleCLEzzs*Kv@d{%Hvi3Jh_97dGxCNgr43$* zg1D>|m$2UI$K-h?yKnL*gpNVlA@TS%#q$R@n>mlWNdmv|WRyeu#;!?$T{w}mPsrbd zpAI(omXBgI{7=9g^w3~DbntncQ>OnhSD;;J8n98EB?%9H)Ee!}paf+%$Lz^;(HS@I z_d69Of=qjgc_O!XS?*uU2r_BRHqrx)BL)a7hIA?hNxmhe5_`n(X~3GVOd$vf9!yVC z)+ETT80!gPf<7oG?-tL`yMSz^46`%%gwM_ za9X9y1nWfswcioWbnV{E$0Q?`q2FqcV#6*rDxHW2E|oms9Z2x3^n$kb1k1}6#B8EZ zcJupvZ?WFua2Um7pV0kXd?q@0uQe|vU(tFzKBzd9xD{g2cG$Mf@dL?#(jh{2=>A;e z!@$JdS^HJ1IiQE@XNdtjl0N@~0l3Zp8oo3QCa|ZH`9R0-(LgGFKbi$dXrN36L=P|O z>c`SA?MUqM@|tu;XbHW@o6_;f!cJ(!Q{jw;Ty3$ydZvCKCM`0?=3w?nOyplkX>JOJ zh$#;3zsuZC10{FbqsFY2HMzL1&kk8?m-YFXDk)WHGk);99RyNgl(XDADkuK#nAAaq zuNo4U$8*g*L8+_7m}**b@8hxE6(NzDgt>XijF}?liGJC0@S?f+hEn-pVW*BVW_{wx z?bTA+>+f%ft}{4rCZQIwTRI|*0)Z-#blD_NOupZcK+yMJp<(midIE`OCPH;C_{rak zBOqq8k9`zqV^Xf(JH$Ve6xrB7C;P20L`s(WewKIKFkI)HMWZ6$xS4$;T@PWZlGTtv zWGS`_wIt_#s4<&>Dk||?8DBKbchO{(5#Fv*H)G{nw283{)fza;7x163R0L01SAl%x z@;xVC1Cf?A&XMYhYNe11flWGC^;&5MaaM6Ug!_4|6Pjuydt7=0$?0fFuwqHG{!+U1 zhqKPK1_AwE7fBdJTY`0?daP|`sRb8k+=?%#`5~~;uiM>(J<%iW)zD|*_m2X$m9~VZ zS|sC#e=#Pa>|d4wEQBhsQrefuf5Lo1^C(ga(D4xly?FZ)Gz(V-!)##({g(pTVr`c{E%;5_&^$RF`cfG*Msm7j+4O@{i$$^ zcS%V*>Qjvi+Vkn=YJCU@Uj^jLS_V$O9>dZ4==2|*zfZf(>$J{+E3h1yswBtpVS|qOj zn8FUG$Rp)=SxyBjQ^u%IKvP|@c|BPGu|x4OgAA@bwM#bE*+8jx^-j+-{B_@dh}&&I z-C^GPAVw_lnlSqAH#D(8+G_EuHuB}hqm}G>IlU^YxedE$H@{JKDNAXIO8wI_=AO2L z?PECnCQb7Zyle2^6CM0d*O69^b)%%)BmTUM>zS3+#8tG8mrV+Xaa~s4a~)e`ziFdmK1&P|14n; zW(rEfK{`{{wY zwm5mYTHr&u-;ckx3yqLZTA^Ka+j4syxwp4*#%}HQ(;#_T_lze7%5R(7=t}p{M zHQ%1XlWTj9&Z1qzV2Y5uzkS%N6MK!jBx@=y{Ya5TcWcAYHf?wqGKn3e6h^cU2>rMF z7_+}l6b@M&BT1d4Nr#h(Ga~a)vXBJL6sT+P>HqsoGB^MYLU>MoU3Lcnnq%h7NAxeA zXd-0ZBh~9# z@s_zNkjFAQ1jOl5di5jZx3Hz7^%4$#6T{?XmgIM2Gzq&|UwzxqeCB-XThnCf!Bz(_ znXMTkAa2Heg3W^zwpv=zYS845LMGg*rT@Q!&b=9$#s{Xf+Xdi6f1joPzlE6wMXGWr zL(6*k719)D`gF-WtHY#bJL4=mtgQ+-Z)F-^`V}ym=nxj#$|*{W6(J`&t<>&ma}hh4 zD>Eno$9wjIgJMQ-AxOvO);n!9cnIP8;0(d3%BKxR{rKjh8<>mq4*a@y#(1+(4!k^) z@qbc?YPjtTQon2yhT`-nqOfG(gX+9(k+Ty*&D;M*)#v9Z86{;o?GU>cQ)1AO1+0ea z+a%|+rEcSeH;3M~Imit{ND3M~nT)Hz=hjmjNNAfwWD{F3-@FyzhsIR7VPp^?@4n|C z+|p4x?2fo_2l5-jJc0QLJP{_<8dkQ$0SYjN@s31fIAr&GpV`a(LeUR8EH5{hh8W+v zBc(_;pP==-Rvf+@w}9{#_r!N%8FZ1sE%S5b2~50@k6~&smc+rD#m$%d^IKRLOZMMC zQaBJDRmXfJS_|qZ;;OSO5v?_u^5)rYsEuImEg}kpOc$%w*SGLMr6Sc)LX^1~;In!? z8W|^PfojE)KY5VC-#8#%ueuVm1^~-Z3Mn)c3U%3zsDe_z86HzF81-V}!2t<+2NIwL zy6vbNj)^j%g-7oqNB+>aN~CY?%TG!=A6`vfGvwh2w0n2T6Cw_!+^S7VGxFGNL8EF> zS;dRYaG(kE>Aov6_fGf+?D0a0VNo4u_+oFX$neN}s=gYtV})DBd#+6a(_6IB zq?G{5sgtcWSyI++TjoI(vOvsZ=QsU^ky^#G@&j<=y}H&_%A|u zJ*y46P1K-4C2~N5I7S`*3@7DvZ#%x+QvWp?76IoQGJSwBy|-Y7m4K zyF9%+dW$ege-I`?k`6|~R)Nv1e~v`aeHM0F7&n>NOLB?JV{2MpJLA>K&$)V~ah3n) zLzr42H!IZWnNkd!_dOL&ERv3K!sByZyRrEK#ybl0`9#?xqd8Ie66zOZe_oG7Y z_jPK%o|u8s+jimN~>Rs7E!y_$5O zMPoYK8?){IYXRm82ic~P*tQ2!(d{X2HL&M|vH5z1*~7AN+XFDINFQszDm=Saw%Dy; z9t=&L+aEpC z>0+Sw{2j!PY|;mPRlwy3aQ>Wn?q#*%{<9~Fab3kJHk8BomWV&7(6kF2gvtBL*z5A( z{s(rcp_}G&h?}_!W(p+&0!hs9$dsBpAA{6)&&h93gbUs!+iJG^yP=LH(N=jmQRKrC zYUwjD{{=ajDNwV~h1QCY`X5oIQInztWWL+VX_J@OLRNhsO1NsG3Ku1iD3KL=CuJjS108}Q^sCQ_%C2#Ipfz# zpeTHL#kt1prm1l#KQ%9?TZ+_7mogVp1uvs*)PJ00c#P5Z2~=dx-HT4<@$#63a@4N9 z1MHh+3U}I+p`^pNk*e9wJ?6$RL$F`kNyS28mvkAP|>)+|wV+5?NULeXvM#9ZH)ret4sCt~zJ;>SmTDLrC zxhmlsB1e~gMbsFo!|QU+LhC+Uz`sCEH@O*?)w70Znqrc`;4IYGYHRv7UG&38Z}oQq zhciv4OR;nL*x*388h685CkdbjYU+d8d-NmzqNnTy4kN1T8&7@MQd|>dZ6)o&dPK2= z{$4evLsZKh>UsE`9}hnUCQrgZNgmW$&3zXD~x zH1xtwG?VM^8#2eLx(}eZMtq)kAnbc>ezVfmJIBvT zmVu=n2DtTpX1{Tbej&m_9LKLjaaD20@k_BD(zms&j1vw2p=MnymXn>nN^VHm!5NkM zevK2NsZ_Rmwl|({ZA&BU1Y$3E5OE>7wq%^rDUbNDujLXzd}H)hi?@FhOC+FdrXK25 z(&9fTAGd!eF!M+wec#ZsbEq#_DKgf31ife)c11wWF@(Q177LG;`Jwh6WcrWh&wY=h z@`2+*Y&()99g3I_`GbNP0q@IDpVsW+>l6M0BwHP;a6PSIdXwICFgz&8trB`_CAyer zZPnekmnD1?_w2qAJ>=Z7R%~`Xg}5Jp ze;*^{_d|d63HL_!MXDC?s&>xMPz7fDG!ZFnFq!`{CvWA8A^*OaY(i74XLXBJ(Q?zo z{d;Ys=5nFVdp=Um$ajIi==K;OBS0pnI3gsGvp(~m}{LAZq1jD@j z7C)QFvrvZgAo&kjP&MF4w$V^g;$@8{>N-libx&;(7OBv3;QxbK*{L)ij8`KLU5J}n zaveLV(7+8|cA|w-hrwQd#t>h~HnqOgY)A73APrcDp4)5>-%&gS(~X-S6|Hw3)|#ch zOFvy7Ds=~L;5T>23;}$^QS*TtoLCQ7-+cPBBtF+#ZaW10CPy*~D;y8~d%0z*{osqR z@sK{bDUbAt?;M~7)RRJ-QzwAJRM+M{xa+1t{-5EfXug{3{rS@UJa49Zr1eH#SS+x{ z49>W}IX3QaBf8EPjSPPk^0CpJ>Yc68UO$~5E;>hV_ znST5Eo@KvVtf1cB>sbwX_<2o+v+fqgnO*T%s=WyspwEFgF<>rTWcG?5o6#23;vb)|$izDL|tGd5*aeaAaP-OF{xlZ5MARKa<3=SkQ))Pt#K_doO4lYV%E2yHHXTke(*T+UG%#k@l_c-pHodanZ3 zoi2kb_&obPM#k4|6+C6-HK4wNuI-A(mds&ZbF(^=${M+0WH4PIkX`jHSSvd_t^0ai zP{jEG0>lg}Irjc=`%TbCtj-|A&6zif?^U*?3Xa10HB7b1ltJ^GO2_?stn+puRoYEO z*SK`IszWSthTEGUa`07BJe`>8nB}KS?%y&<>j%e(!X1_R1@m3DPAL{^M~T zZ}v|N#9iA@cK3+CUcbeYFh7tK?B$b&Nxb8NJVGDHBa#xdg^W^~>E+azh7`}XVZ+V? z&-$$6rCHemy*Kdj+SgtROecs#V&HyZ1Q54|u?bq(h|??$g%A9a*;i|RASt;sd^iF< z`$+zrv?wS+j0Yy9Zv`~>V#g8NwRJe0)!~c;E<0m#xxi}a{ETH(=fD3#qS=rxVmvX+ zjb{>5!?QcQ50R`o9?so*@eGf5ZLa6_&*D1h4VmKb|2mN0Ib{)G=3cbjhZ|JV3>o=J zAp5R{P2DG{-X1`=j^sPBH94@qMtrmGqFnT5khQpcIvSMz3&6;~*PD~RM~g>E=S}m0 ze)G|ZPwp12>i;NU?|FOt`edTocw@0TeQ_7DZeeDR(HQf~;oxSn8S&T@ftj z>`8As){pW!yA9Gss9!q`zRu9tK|_Z|zsxe>(T33i{w3mjA_UP=sBRP+5OudL^eSYg ze<^ZT9qK!vIEFqJB2|psr#DGS=UeESU%KS!IhLH^++spt57|Pv@c^RJ`bp;C{iWNh z?LVaJzGfQC4N`qN1JIt}%+DuXw9$^Exe`!8KvYcokU?D5eA~1bkRuK5jftin1YI9J ze`Th}zAkEewgE+v@cb;xJmT}PO|PU~H0@c#dOW`JQk?-R`B`k{=BY=Yc_^ZKPAW!=jkBc% zJd)`1$h-^C49Rx? zJ5}2sduIjPMCk_6mqzO=4cAu6KRK{*YAR^oP=8YrFf&j?5IxihZbJ1iZ0dAWAY0?k z{^u8#hFj%j+D_Eo+d(N_ykNNfcb2g}lz2}QY2gX1F#Jf6(ok;B!>V$NGkipKGJ{$h zL|9XcWY3>QROcPEC%RM#HRhAtO)4!7e>^|RLgpLotGxbtL{!wBHO4La-q|{|@Ueye zx$qjPC4_18K7)Inv@$D=tQ$^lVz236{)N|Fb{ea9eT+T2uan`r1;}&Ug^3j6jSH2z z%1Q40ufESCc_QgC`ONoq)65azP>8<@Q*TisXM^RO?5p=g;%`=NSDVPb_*1cjh`L2b>}0tMk<|*6s!4bO`wO z$QUGRBC&ZR^S8}2l;@8{&I$ad>;!;BBMH9B(jl&s2g@%P@^>CS_ur|X*q+Zf87@Pr=K5MiF4CYTFMdh={N>XmHF9J?;;Y@DY<7=4 zMsiXQd-~or&@1P^{#q(#pJnL3Z+VYuePxZbw2aTcTllVf$^J_!T)v~nO&+zZdP1a^ zKnxRZAV-LlFx-2QXPIt)7=rm8$PblCz`RFdR&O20>m9^ORsI8Q^X18lSh)cF* z7e-lTmQdJ_GL|LA5$VYZvQVAunHuK1t)cyUoWy7_fafd4VKbmmCOz4Te_GXwspP5q zMRhy|0(opjbt0@c0%kWphs9iD*zh;s4I^y4SV8oz&0~LTN2Cj&x0IZD=WgrGIes3I zeD8#?2V=OPRsAdpIbODV*FMs1M9R3$N+}t~zi3K6GIiWmB!|vJF&#ocFz^2%ZX7#H zE%na?RB~b?**OpwQ%J-R1Qm>M~SPS0u^o>XrZM(PRJ^V?p9UGD9 zSg0j%cee;nFI}Fx^ihI;!+|*dZKAOuXvVLPwZl>108$qV7eX{mDMi{$OL7T!1p{{} z<(hYejyAwMDo;)b5kA0-(djne75l^``udD?CE+lU@Zfq>zz<+9QPYvhVxZ}k8-A=d zF9?Kf#(^$tXVc&<8n|+uCo0xjufUBhfvN=+Ubofc2ThmTo;BMmg2Dj0!_d6X(3?N) zeL@5U>Nr(HLtRcAgJm+XpWJLG?5>!}ylPiKFGje=nFnc7-Ry#8AEM1CtJ%!WTZJ>5@*vZ>gGEWkxdk zfpQ3FTrG;T!LH-vJ?&URs5pkY;%KX>oUbu7u(CGb3!s#Y_jl54#&Y2mARkL{(z z7!`@LL)j6*B%`TAf8BE+oHUo{jos<6YTvvUR4J>k7h>w424kKE^HQA-pW)o6!xfA5 zK@mn7h$jbIOV5{&cy}g=E^xYI0_{FCB|k zoo>BXTIAbXwSo5L0OP4U%X+KY91K3asJ&UXTL%c0c9%8gj0`8>GPQUDpag5V>Dboj zdwf98^@#k5Sx%WF+C%W)Z z%m2#*JUN2}8mrQ}5wQ2Y8Y? znoialk?U%`E7=&1=AG-lRd8Tf@R65ArB{_ms?S8gb@KJ^j_jgYAr{m3AIYS5G7r7jh??3|Cc*faTD=m8HBo0a7e_rp3OiZ2&Xrt0`gP2^u6*y!z z_pvG8d`_>W1HvH_e09zM=G1=3pZPM+*3iVaWyL<1MBb$Kd0yWUBvayR3$}e6M>n80 zC+XT@GITt`L|uL`mpM|QC_@4MaoYXZ&~!^R_XU#PgVjXbe}8gNf6MJjSKY7Hr~h!x zCgy>@P?wWTvo@W)y%Bs@1vnk?BH+p4sQVHEo+K6CZ@@R^dg@M7gKe z2?LN*?|AvL8z9jY!Lv%P?E|TkUu@}6&_~%(^#t%f$xbKxrqVe7c~LeBmJNtDFE!lD zop~QsvoDfQEBqeljWzB1z8(RhXZOZN%ZNVj!7Rw`Pw>bopg8e0&Z6pN?L{tiHP2$- z*MqZn(a(k|NHjJ&!iBmA^PH_^xwQ=3x7H5N-TA(o3OZ5?4b8ruL~r#jz61C7(Us;E zGO+kxB>3qLam7)I@Y}%AAgAH6da|L@ZhFJE*Q20E7l(%$f5}3q!Di6fhau)a)n0^6 zFl59Q^4J`+hzS&!11TU%s_ZtF#>oDD63^X!4$Aj}x4ZQDFS%my?ye`<{wl2U=~`Fk zPboj6+pSqp@r4__&eJKffx&COMn3lT-y%Sy2H<_)g{#$2&Q?6AeBP25cL1{9;8o_x znzHuH=3@O0k=43OpOVcNr&e_S=mR78yqaFgGA=Kx2e?FT+tq@h*1k7#WB5@A+&DU} zQB+N#`GW7AS^}M~5@E-)wU(!uZXdIpTVI2EssRqd+y?ev%TubW_f1~(As4Y*egrx} zNWda<-LBeyS_3TVA)lCSBJV~vnmiTadeB`z}Q~i z;4zwJKfxmYvdzXe2bu!pKEnCN|(k&O;(CE4lnlI{C!ug~?$XMShQhN!BcaKORA4P!?2K$Mar zyHJiTHFMq=wdyUG8#+F4f(srDd$nz@t{RIv43T-NKp=$oKwTMl7LQHk>uLL_vLS=` z&&aWAS%Gj7z$e6BUBR3jHJMf83{Y$P+1<=^rX1rTe*{-JlwFW?nfA^x%O}>|I zZOk7Jcz#R^dXwPUG_73pBo}|CuWcLfE1<5Q9mnZQy+eM>t}>Vv^KMLAr$#Y&MbF3~ z`)2iPt2XI4igQ8R)-$v(Ku;eQh>1*{`cwO{+IAx6+cskeZ{~2U%mNA&rrI_C+_76} z^4R5t1~@o)TyJ-uc`tv=@9R%h#pj`Q@W4&CDy}W<_BT5NNa*iKEK$n37pAMKNdiIx zH&Dfx?;@*e53IhVw()(K7oJv$st%AojK|o32{bfVlVJQxluSmPP@Wtpq22n!@<3v= zu-9i!0cB3%y}`47AHYNch{_B^N~7McNG=OZfm&9tsB~+oI8$2!NUEMGB?Wlm)W-Mc zuf!n67Y6b{qrr&1&io?H6P9FhVkbvgb2^<&{pzn0O3JLM)6&2-hZ;90IF96lMA9?m z93vS@tS|J{vp~$==?`WAgs6n*PL4R$#~n;w;#3`;BL~maS`4rSpXg{27+;l!rwk_b@cm zNKrTgf-uTDge>F&bBrFbgP+f|wW!1zaOXRZiA!pEeXC8{cLf~q-S!$KCO`MUV(0Mz z9J}_F=xH=qr~ot5K@Q!pL|bn`tjaDBR*8qL)aVXYj`tSdyJ{RAPmUL?Y6y_8$nIC3 zXL9qsvvs2D;$)S{W&1adz_H+VEOJC4&jH}h_Rlz0_jiZi1AgF6VzoCIZ>N)|wdtC4 z6z=2I5oaWyMMJ+doo5t~%(LKlhBk~2TALm!Z=s1uO9OOlOsOBW@lR~os68w`VW?PN?_dDcVvHD({r+hrWdyf8jEp`{@9|<;)Bsf?Td{d?4e{}$f zLHzXJFYf=i;?(k`5?`<#e4B&#p9%Wc2n`BiS>1_vTHOMkkGC0dJ!;e686ueM_QCmf z*aZsm6*jMVZ^K!CI#AvhxXj<|0X~fxNR73>0lvR;m2yms865eSvg>NouqZ1XE|?vL z2Fj5oo01~fnM@^$dZ3~f@>Qwf9I2oNWvg^eno>RNZlUY;fH zR6gah+77)_yI6sMJP3%+=X96)D<#0V^6?mZww}ya9ymXnRDTiT4_tiSC%Z}Y0pNA6DBIWa)`cFz-LAAi18ibF_l}91;j2C~T{rFM(=x`z8pL z%RxCa(a)u@GM#r2Uuek;L^U%!)`ys#W>Nvqv1DR=Ye`yuYoGB`6-Z6^YmKa#1DmWk zqdmUSYNsr0JNI)pTM!LqU^`mw?`#l~>_lLcqk|M_sLOx6i*Mj$p=yDuqVOVVw(9P7 z7{Y}_qLv)&$|@i@Jm%;o(S+SwCy~uh7X&k;ECAX*yuTi@3&#b84x|7f;JpcJmQM;( z?I`$5FEshJ3oN$c&lmoZ30WXE3xu?V@91^>zy5tI@Iru4#Y3>)Gmw(H1dY||7HQKC zQLOW5kA?t|+f(u1MvvoghZ1^Z!-W)nJvu`e$}qTfc4B>_u+@g9_DmiNI>fX^v+0lZ z4}e$T2JYh3?0&4`y%1J)yl?=K^8}!Qnd*A@*9sAN;R6NM0hxKbR@Y$W9A)=3EHRGx~6`QYc;&RJpkpn>Ryq%JAqJ3YWqJ57iBJ0{@jL;iV z@TE?-f7_bf{x6{Te*sT@;OcvN&C5CG&b;kDhV8U4#1CvgGf|IXW39mB&yy1*`ml6;vwTrRa+gFAo80x<4Z;ILu~$z-S|#3r*-v%c;dB_=`k*cY7c<|zhiWkBql_Uvf1p&Y+@ z@HN~?5j%ZPBMyyr(L-43WQuCq9;#%Z0P0Ntz0IBa?Up-vEh105KJYR%pRgU;Q%ZB{ zhBXNK(grX7K%X+7yMDJgqLYv~`2Sjf_`@5p@&61o83CvWwZVX|IISu{k|e*wlB$7i z#q=4s)Hu{LkzT*XX8l zx=ZhDPIX#;@*p8K5>&|o)G*Q}4oV#m3MvudUksIEC}z17y(d1# zy$ey(Q+k-yBd1;so$Q8_R%tBscl~6)?uxNTw18_vU~M-TsrlP)N}4xBiA7030FvV~ z=*lN8CU&c1pX+kAWL!-_ng>3~uOYRWZu`n6i@zi*S{GHg>9$&2zgvf$EhQ%A>HF?z zt10SOgjRxVmHMsxiI&S+99afZTWQBBT$djPYN`!NnGy|3;EejU5tel?%=NR7WjsA6 z!>B}lETuZHag4kJAv=RkLQm8 zTOYx3_v^Vc;Z@ExhI#e3gGW3>uS(yE4w7GOgdd=&sPta%4T_(Pualo*tOpD^Vc>1I zxT#u3Ix)MGaoA>_1E21+1g|rTMr0?Eu#sTU>TjG)Yt`%`aZs5$_4Uwl#3?{V74iq^ zT8Yk_tC(+y%%ys3+e%7&%wz5wsgx8#u+bqMwNwhvv8SQwOrpekx>Y-fpU3lkmsd;_ z?(D+grklZQs!eJ0h_%ZHsW}i#Mk2Y zd1i4^3A>uz_lqYYGj#rP!-2wG5Z%W0K9z-W-^fhd>4yu(_wOP7*Vmii8Nr-ZbYXhH zdvi_3m}eR_X8Xbh3PSM|jr@Ui?sX)W#?_o2#iP$m;M{BQ^>^d@p6-!AGsO!vLKMn!AFEb($s|a+KcS6?NiiG*CwSK_%;^z(Mir1>? zQFmSR%v6QpaS3|T6!0{E+Xs=^&A zn+)DrjQoYK^x-xVYK^&4w1?Uwr~={75gyRO;I4$sKYHMD)*5eHBHTgbh@>6FSRQiJ z37C+SJAANuOf}-bwb%VE(R*o0cI2}WQW1x-Qt4FkIl4sZLS4-7&vV5_kWJj7xlKNz zLh0t4d*aLO&iBhsCjF5d@E|# zn<1nObx-n5jF2Ogj+V(#KIH<%fpE+7%^^Gi%I)7gUWg(3a=;AX0`wKk%GJy=6_}_9 zR3+La{S-j-nPef3R%Nb}zq@)8qSHRj_qRqIZ4T-Pds0PL?ID1G?EC#I$sVaP{@AUS zch9`k6O&=XLX-Ok-2;-A`&%TJ!9Hh(Yy)Dj{ZlRQQ)KY)of9SWv1wZen+=?7HY8r^ zbDUun)Ca?RcM9&?;cWRgE|45?VuqPt0}ZwOe0LrMKLdbS~wk|M#K7KsYb$Ur5VaO12d(X10zi}z=i z)1-ShE>3Y(InSuqL{p!MtU>0$8qR2unep9K|8V`*m5s-I zgzWS#G{_xQ)n$S32O=#c;g~u?MV*L}q^Arj(#3bJy#XR(oR=&YFY%YDsD* zQFL|qAj~87l!y5Ze$q+zIrnw-`WnxO!(M;;o-n;sb}5~ot+e<)Zchl`QX8X_kgUr; z3P3^l5&QcwatD1r2yCVGV^)-IX6Jgfo(^2UnXO;C?=ju6(o3P4iPN#g#^)G>X(=0g zh6Sa(fxhNJu%oz%a{n ztgUd4g`7f|s0i2TG#8U?Fr=K%5Tx6W*^E?#Z-`ldju*b7j_8;)z*R&tF~9+LqN5j- zMCx4E*lbvRmk)U(VAGWtKS znC|evDX_lXQJN8gf8It77E4&;f%6hrAlBujr~U0%a8VqB*MGq~vOeNNeLd+>ot_*_ z#^Qwr@km^Xc0<&K4HOg9sU?UXlCh?~fTUNRTSS3xqf{bOPASP&l`!B5~*h`F@ ztqC(^d)*_x9c{WhvO2(oB#tJ@Yd61~w@9^tLJ%)%pS8$=C4)T~-dHDijd%Kt1nr-T)E4R+r{DrOJ&r31`|$D32vg zu~+XLoj@sG9(l!(-kT*FypoOe1oykc4#o;Q_n#`R6G1a1-Z^afH=)m&#m#icu8@~V z9ds0VeD$ei2YARuo7?HXtcUmkpanS&H45u&wk>+IGGnZn zOk2)~4M9bXYu)tvc{uBvp}>!Qag!HJ{`G?yMm&)hn^GOl3KF^zbhr$XIZa%dq(Lo% zX#B*x7+dh_3ek#KKxpJTsY~FvE)V-rpFTMQMfrl)f27b7p@W?uSCr+p(B3l}G!C^9+f8(#i^2_eVrc;+{5A}{KBUP)BQZiJArMRvMA zja9LekLgG}TY}f)tqBr;-Shy5MKL<(%6gbAUvHZ?j(J#xp+_uRu& z@TPJIgjAC4@kjp|SqF!DnB%}bAifkCfvn>|eXaTeAf1J)H zoVyW?_}o!80&W7{r&HYZ(L{*{U?3oQ=0~kndhm{qQm`1^YUN7O7vZ=LN>qH{$tkhOR@}kBOCf0#^DWjlg|q+ zyoOmEP7rwrWhx(Vx-XCyx7Bl;=Q~PfSHMtS-ED4|(ot?${BeT$>M@0==5c+lHJj~< zzc>RjNVn|1T%cd|2Zuu9p?(DN^toY|R2NUJqz4l^LR}{{Bm{V95gcy~TB(8>wL*p( z^}Kvwy#oPwG^&ohLk;@92fOn-SWq}?vhakWf*2ULXuQmKct!erGh*wq-wUYl8KbF7 z^72_i@ZcGOQzkU%==9jArTu-?lvp#5gA)b( zUJG;b5qnGQp4fMG}sypc1WIA$Z-iYZ4_x{%^aH7cj)FE*DCML8Ni2N*TyCc#KtWuCS^YS1JU~E z$%4%Iy5r^HU9;PM*t@$uFA`-oD}Kmw@BsBjc(5Lj0P~LjaDLJu z$sGlk^{YPm4hLBJ=E{^;7~x<_P|7V& z^)Txxsu4IzpYnQYQo-iJn`mw)Mo}>`vkUYd{rAUaOE9_J@w`3H3|_0&R4ANT0YwE> z2*a=#B+FsznQnJE%=_bYL4KF4Vf!*#e<{}+$zVUUF*;%~>GZL*_||tFH!B2J{wM77 z!$xCkJ3VO9%<(~NU%}^M2(wM%tk>jj#OaYG%8EoGyV*i)NNpQ8WetMT7mgG7ul3fUYxY|2~jZ^Ry z9PS7fWt7>HBjSQ3dp9{z$v{hcNYgN%r&PRZ5t+r+9qk{s{OWbs+L*+lIk57JZBlFc z5%{SiN{RgBH_*13;++lYBw=_-^Pe0w6!Is5IUNeOl(If^aRCh z|Dqx;Z5yel#42R~^BKwSVq>HfDaqJ(DbNze6voLQUGZ=zlzp7{6(g-WueK~(B}PxQ zY~B4cZ2ze@Ku(_HQN_N9 z)Adtco!KwxPw?<3DR{j}Y=OV(Kk%5XfZr9jqs`%CD%=W0^rYaPGfHOOP-QD!#D?+L zDHWU_@U4>;uYQrt%s;cpmsy)?N9_2)&q0T0fC~E?#a?SOzG^O`%r~d2(b?cO&&!Oe+aE#akJ%5V9jWjMNyjx72h{I>@3z*PZZUVEqMimj5+ZZ!STy!m zM3q!rlLsqOKg@RQ{f5|?#vuv9XL!*DlxJRDh8N(k%Z>?PQ`7qLvOD?#7KxLWPa2jVl?E6 zk^|}vG$qH|drGC*;axG&a+bP7PStut7Vp2u~$7xr46Gq@|<$Dv!fG~T6 zKG6<6wH<&@YqOnaF~n2^RsHRf;y-_M5C<{iWSJy{f5QWz2a8@y{|ve7HjgC{L^Zu- zP9VpdTZHrk_W4L0FLMky8+c-&iBOEkTY8yvx%x@NRpFrwu;lQ`94R7w@cUxd=)5C$ ziTj@Q&5t{fHMr$3QLFM~GQh$~j@T63Iw>d! z{B+GIBMI^_=_#qg(m06?Ym9LYuBp;Za5NlwvBpJ}tN(m1<^?AFsz81& zX2NQ2K$6d7-2LpQO2G`l;wtFILXPwww|@PEb~cfRP^D0{yq3o_wa{V5mxe%)7Z>?} zY6`;8woJM(7$|YmH>*-UK|!F)7x%KK_978j>~Tr_qkJSn`>|8%<+SujJo#vhZ7oth zIT}5DE*hT%K|GnbdCYDui55HT>HXjKyr@Kb--7C>H?u-pqhrh%J^K8E1?Yl*W>LCf zC{>?nx%TyB$UxRuDC0z=BbdbL`c_nk;qVq~q$T3-)=Sd#xPw97#Z)pL9q82O!L;vM zBQYKl1@tNJ_>k@_K|Lw|60F4+Lg6EGqs7qnOCZSC=MszDUI=~!*ci+CJ23{JoGD%3 z9(Da1YBd*;N5W*yY01T=W&!;vSJ4m^@YVn$0|=)x01GW&e%1huN<2}A4n%xM9U+XD z!;?bq+p7T;WZ%+S^*v!?{}VVM+T9R`5mS> zg=KSFqTL*8o`w#^?$oV^$xLJUXCZ&|_++9`!zO<2tE~|vOOlDA%|y608mU;tT-Ja~ zjn~RDzxbGM`*g#$wc&z=1}=G?G|>+3${dM}2$gC_epIfcEI?GHC7fXW_bJ}jgFH%E zuxj`AX~d&as>k@dB57zlELC;4x<0x*TPS@ZHL1j;xTbW(U4t_^)u47Cd++N%@U=j( zL$fV|##2%=#8JG~h|B3Gvcg4AXgAYJahmvDaba`l&#m8~pT%^%gaXcshb1*2hHD1| zsMdN1Efil3VNUa7y7k>fn_Q!nGPoF|9P0u;t>@`4 zE=7}89CnOK2A{)y_r`2}>l_G<{rHzSGX%~|36c8cc)3s9L+v%cj6CS*EgZ9mA@3A% z-yJX5hN{($%&u4jE-^REaxz5HRNeK1haiiF=hl}e8@!N)* zbZFjK^+2Q$EG;#@jy7Oh2)Fo+c<%3V^tSEBxK9kW4K)as64DZ$Z>jjC?6H;`O8hJw z#)QI_%kVOMr#r~8*zb&ptW?Q84)I3H`+ zEtvKKQ}Inbs8dDyfTv>WMaXC`jA$e@rUHb^xU@6ZiJ5#K!?hweV~JisR^EQ;a$qS` zV2fAOC>9?T1yf|`d!J8y3p@x#4V$>vp$#veK~ky)S-J@`gb}>g-di9_wf3Qx`BxD^f~|BrB2N&7SE@%$U;3>wPxL zjA*9+8te2EsskquzoCfJ=y?5_e51E#7-$B zKZx+}D^n%;ze;3jK|8*1JXTxUao43E&6Ov|@}6d865@%~A@q~%b*HM)EqiuLqj&?Z zMm{`+!)JC#F9mGKe1$}XhW`!!+*&Ae%)^GVi<(DFO*8OG|ZOa75M1M)= zE+~#rS3gta06&~WRLSLQN9{=uRAI5V%SP-Hd7~49k6IJ}CKo`?cHwipzm%&r(5b~JD@?6-JXvi7!ntm4Lhcjr z0Lq46H?wE&``}}hhn|Q`T<6A!T(3W|Ti#AfPhTGy6>}&5n?02l$URMXSF6ja^JhI= z3m{IH$+l^8!%Rtl`U5M!PamQ8XWPWyP$I>3Pn=$Z%N=P1JU}_064;WbWef%>@%Nmz zyXjTldaJXK^;VA@es-3;1;ch;83jp&dA?O5yz+=aupDAbb`^w`4+W|kF+*a`lBT$* z_@4OWJ#o}DG*(X&YYirg_8~;D0Ac)Jyd`Tschl>BPyZ1-`{-iHXHu?;yo?!N)H?)J7Kk$ z>(}salT636$CsEmQ@^E3;Bu`_D3v>m4r}eh8xayCM$rp@+dK`AUv6$HQjDx1CeZB% z9vNkU4g_N;k-u3^n2E4{O`A??dDvAetvd_P z8amOSr378&_6&3YvRZE6;|&2rNuWEKIwv*7*_QwxmV{5`Mn=FcL5I9YYv#gA;@E7k z)}tSd%?c%Jv@ZQ*$sSL_jm`p>6>lJIbZ{ovaPvSAb&Uwn_!{CkVdXl=yq!J!(Z$?m za8FySw_YSiUQ=S9>sK#~oJt4s#uM&MsTwGwUyQ8!4L&aFTTIddyYDN}|C=AR)M=wk zn%g%Q0UIsdEh*;!2M<@8BlA`#GHwJpGsQW=ODy5o*w;8H*WaF`SOEc8QwQ-NJ2$}S z?R#G5LIx}pB!sH9&EVT4Aa2now|{)CwHp5slEOx}Tdt&}G{Zh=pYuo#;AJo(Cp>Jt zvMc&aiO=2oEzRA!IDitw@H>!wUw95R%~4czFAha6#z9F`e%Exqs%J?J-5<={;L?`U za-)RE>JnKXzoYI-~6&?B!Y;kL_HjG*uAV?#`-hLE_cT-4|~F(jgD- zrd@%(b`-nHwY?}55KJuq&HLIGgwhu{>NxfPK9I$&D z%dVd*QvzlBJf~~TT}Pr&I{7e9nCdKqY`W`+fHk1VjyQ3;&c18)fOHreIXfp|%w4!b zWdn1>%fa>8Cgp1t4Zx6kkZ`(&8Ao~%{|`Vl$lpON!r>>L16N1e%5@?1ComymwsVuI zf|>nN`BJ?~-DT-=+Gf|Iq8qQ%w#v8x8QxmpxOoV)tZ-_seO6O z^c0YcyLV4pzF>pHm!Nvq#uO7qBw6UDy|XB!uZgHnxFi4*6S`#Vj|-B zs6IrkmqNwVBMrp*i>f->V?nssLGi%2udv;gr0O)p0E0}0D3aEuPObs=Kvf>K(c(TR zBa@2GEEj6}V7%Xax0G=}2Ph_8e~+|A5@#biLSFWuk$d7#brhoQI zcnOnWDwl9a=#SUnMnz1Th(FD1mQjS5#a|B5NfA{}XN=>@WKX!Q{RAKD>t^{L6{?6* zL@PbM(|}q_!y6Y3h|W-g9Wph=`c*?;o}N%l_r?mVZHWh5$GS^M_{(q2kEU z7zGa9OP|F>p&x8ocGx?C+i9pkMG2Pki4cdyVw3+2=h(_ZiH%!lnzHe0g#P8#?BCO^ zEh8P@E7{n%w*b3tz7Gt|GZT7kRf7b%JYoh9=O@J+NZo2P+tc$55bg% zO$O|nNJzNeg~eV^EBj5*5rguaarE4WkBOzz!&&rE+Ajz_c$&7 z;_we+t;5KKVn>EX6tlb z)I|y1*St2>U1`jo<0v`}j6@VQ}(0Z@tCz zL$&s&(wFf`TL?PIham$N;k!!TFRNV--Xy`Hn@vDa8KusS9HB zdjHSTvf(CC3~HXzRLC1jaTj*09h&q1zB^Ri`t&0#RHbOfShTumykc(9cni2PvWU++ zS-JUc-0O^jWI8{eb%DFd`8mBIe&t+?g=v#IjO=Cj>9zf030P7+Se~&`*PprLa$7_7 z0V;&Y^NsmmGFgyHOCYtDwe+Q*pLlt1cSe$Kx+%e!YN?WYFRvedrZubENjELgUKB?c zICX=@W$P=#KBZ~kso&Y*wo-a|q_S`PIuc+Y9j)ALYzr8c$@{(_zEEoiYM%6fd~GQX z!!$}2;#_hRYNM;Kf`;@3leUOO@H^A`D2guRnT)@q=R7S|Uj)!A?!VW(ZmcPX``;(~ zSQBCc_r91Atv2D)YkJ4wAK44mhHndk)VFJ;X7dg~MDZC`)MU+Cjsc!^gEzI`Q8M^A zv!+vt#G<0E`_Z3tqB7oYZYK_M$yP7wZ|IrY`TD+N$Ag9W1;egoO!hsyUxe9ae9H>h zwS??Dy)qp+8e*~NaQrB2jKmYhi0yvv`lPZ{cN;hg$-glBW4Wmg4jZ)$TM>Z%T;l}O zfo8B7h_RC9ymb!D6J#>m63VM=7ry)En7Rm0uU#gn6v@;Y^85--{k~?kOom%?OF)y? zPW*FoR>vfZ<982FeFCoX7d&qYypa zei&*#82h$%s0GZP8w6%2wn_xo;0D3s^`y5YkTaIK@@u08(d5^aoNH&O-d0=B>U~0c z`J;iQ4VXd>At9wX*{>iAMZkDX<%uv7mTE&)*wR|NaQu3%)7Gb*fry^FCKdkZ>Vr{y z6q_gMV=4`|aI!T)bSXkc*g=*vcjOHIF+R4nv9#x_vll(AZsDABKH zk|9Qpk{rd@L<7IQ^rV{iufOy%+{pygRAU>;tgmHs* zs=P?glXRPw!8T3N#3&u3RR`k1L;_ zzjfVX*=^KDOBpOFQP7N)Kuy8c)|Tnc8q{U@jsVSit~aR;BZ35&0@tj5ySRCZ3z)zu zGgH@I98LNK{?K;8?>JfJoVoKAjz(aSq9|@RqgV(tv?Q^cMwS@=lKrqY5>0aRL&8Fm z#}RUK;V-98@kzvTo6L$$x?(8iMP&{@@87OpfYQH<4IxR3+}fCkh_LW*E5Jb~NgHjv z!ZlpJzCC(gtfUoO|M0p?>ODBGDdUHYE%=ww-0ls`SHAn-9VBn{8C^fP=wMKT(8&SF zC@SMQ)V0~l)+TY5Otyz|1)rRB^(@4a!~h4gXEBHc%}V6qJJ5Ls4G9{YA9$~~`)Lk@ zNudtsZNLMq-%As}W%tlCWsuQYEH^gxGzp7-YFpRcsjvvYyK$oxa45lEgA+w}8$eso zPJacWDr1BeQ$b&WXyx#amdE$Owk{2*=6;{#yS(GCs<89^jLl?+I_o{#InU<3@jK$* z>&1ou@7Y+_m)-{4^zExs0A>y*bGziE>qtOI#(1lrh9ya#-;OMv2^Tdu98%Rl&s^r# z(&&txny*QN!@o6RL~Zvola?E1mYLZ#>In$vei^dK7bX@ z%eGvq-ZkJQNAox5xO{XzDs%r~nT0``f*5_7pK8&9aAp5h66Lyo)xHn^`ytZ=joZ zdZEX>{i~hEmT|G+yyoeyjp9URMGVY>c~S87R29HNt18G*4qE|YyCDWT^+P?!#*s*# z+0oy1@7mY13yeh>e{bJGqi~obVKB{zI}$MH>pJz=uWIX9 zM5M4{D>0huGOn`m4Hfs#lv&(C77zt*`sSzhKM+;u(uV})Sm;K835bgM!>1w3rGZ^B zB*n!LQm9s{ge?C%#FSMEW77}8i7?O$POS$|VTGr*5J zNaXP!<-8h}K0M7TphJa~Lz1BbwIhVC_nQq4P?U1FJ{Lo-HDsC^PddwWFzA?u^319_ zGm8Z)fEKHk>|}9RY%w+>g=o#aauT6{QZcqSKK#e*Rv0?&8hzm+SpD?(N|2#tP%HXo z?k7aZ(t+|`0h!{0v6;`0O7pGT{y&G$I3oWgV}6p|dAD^Cz}ma@R6r0CHL??BgwF9( z5}n3cNJBH1Ek_-P`JpAKmC1c>pXjBnzKi!qsd7*unc3@DV!SWKc^EzdDry)!Ej2RV zg+hB-q%bL**PE1AfDOT9?1 z&Xpoa27f1p7k}SinpW_cnvVvH+bYIXjX@~bK%o4A2G1e10-^SUxou=*o=GWmay{ayxcQ(u0>O(7N2N2hz?Smy{Ulr@PZ0fY~^*KehsEH8<3s) zXT!8YowBJK7Y@B556I_QtX0QIc4p2!D=i-&nNyg+7^e3bLP9uK%ihWUS|AX2FNh67&Q`Z!mrk@cgL+2&l?u#$#t1g=wjtwD>M8y%PV5`nm}c+QF* z9TqCU(=V_Q_W?s5XCwtB9g|yR=*)U(QxpQPXM`Jwu|m^Xqn<|sxH2l7mjB5GEc0#B z@J$dIzMFPqqf(v@5QlMpTX@BPM$t{9FKS1PG(oHi@9QVLvcpJ(ZupuBf#!2$1G+*# zc9J@g;GM3nO|3n|(5c{$EY3NE{_49Lm5wVfN>Nv7z zbrtVG=VIiLU)OpltyH?ha4rxBH=W;f(^%y1Tb$}yh0cSVWNr&1bA0Y-2%-2WOs47C zDsQ)0ucSE7kP)po>J>nouY0B%Jy_mi=?{qpD^MY5nGt$ zKs7&q4ex%MB?Bflp|D^M+xOgxUQZdZR%Q7+I3h&9nB9LN^6hru2-vHDoo+Fy{{}kc zE9qd9jM$O3(eurgktKs51Bg!%?^c0Q*Y5YcyX|q{rc~``qp3Go`lKXAikf3=^~IfJ#_Gv(dLghkRQOn z1j|QB=D`ITMnFcmi^8~d*{(XIs)}Oqm=PRs$7;;NR}NTkL@$qu6p`K$*F+9sww&_F7;Hn;>Ars>Cf{5z@3S7b-mUUp6$ zts`NZPB>2w5x*%G=!4FmG6<<&x8;89eTTEJiiK80XLY*BN`W()>(#78TO$xtLaYuu zgO9bKAKWLd)m0awV*Z()JrxH?LV&+YiKs9bD%kGL?}HXO!?Aw7UXFQN+UkrvW5oYpw$m&mk-rFNcsr7e&M=fv3%aIW5ENp2EZTVIGML z9oo`HA;2(`^RsI|di(95d*4mPoKsZ*)1O2?V`f2p{ac70^)%5jbiao*stPgclE%Hnk#UzpR~^G7xvJ`7SQP|9w(xX0ut*WdR`o4cLHRB`lQr z8fQZo1c9Ibi3F@#7n`ESzLiXt8oPkmw~#+OMGz`ZqdPnkH~z)Ym4Mczicd1qGZsY; zPX-!wz+`BMRF=F6>Xzu^gDqQOW)atN%MB$T9_wu7Txk?Vp1`wOZCiG6U()06IZ`(a zQ*L5cMg9+_KV&f#2d|D|Ef-i>+#$dR%LN-l(0+Cs)N45|*tv$4B}vs^hZqoGNJu1i zpN61IFTmxlBCMb(K^G;o9SNf*`f7+}rNx-y!w?-6+JuT=V1i-88%oAR#aA!D75UZ* z)}XFo?HF^OD2bwPjs`mIF+_w#e8#?5Uxd|^ENaa!n@rf?{T_ zu#JT#f$u|5jv?tBg)kn4&lMdJT2tqr!PV{^f%Y6f>EFynmH=)41 zt~;B>%n6nBO)zsL1`W;?wZbTW#__GA90qg~XNi_zL}u&M3Vw>yfCCpe{&o%q+dK zxSu93rD41SC_#-k`wCiRHEz1Vs^e$QmGNr@L9A<48ZF4;l`b1Lu~1iU;q_PaLV-v3 zMnn2`pQgvHJm|tBYCv*(ZYs-1l>BYQDmTqmrJ*g9P~sy2FH7NvKr$w?e%AT&)?1C0 zl1k{o%Mo5&zE6w}B{Gz*uw6S(3rVrK$?ctXp;FtziDeDmP>Jfzx2t}T(Uf`SxV+X1 z`#cj~I5c8whyq~VFOgb@UT@mbG;UV%f*?i1KlcPtx87SKkLJRvQ-c%|Ro01OP~5qR zRuY!8xkSs>KQw#2TeUC}8fgzUFLtcTIMN61>sQj9Kbq~8M`YKGsg%NZMd4&4Qspck zo7I&SRvg_`^0XrGP$Dzq%61ggYJjRg*~h(5vyKqQRWfC%L6s62(nm2mH#@yOdr zW^jfIcrMAq%%Mdiw){&2F()I?$P3U#M7jpyRaq>rd}reR)V^{sOZ_! z$ukuxKs|i4rdQ#VpW66hSN6tl(Ep6bP_guwxIbkzB1M1=VASOBi9?pv{@tT9x0!P4 z-L6zv?S?!wT=XUS{sWHAaxgCEdT1x>kRtEi_PYr*9~Am;V8ihn9mgKu%#S8gNnCke zx4e(*Il_eiGM87_v7o9VdmU$JDXuF|VN51)Ev<$HT4DR96@i1Y74~C6YD68km$g8_ zQBlOvFWo6?crlO!Ae{Lj%(>;D)eo@I10 zHGOYR$KQ6|%82{ff#cC`4abn4C;#E$7kZKw;fD_;0A&3)0DuA};>Q6V*WFHuTg}Hc z&|?97StP4vyKX~?86?3RFx#KnxHighZbWN}wNMH^#zDdR5N7&^{il{=^ZPw?*4_J7 zX;s_ok2dUCt+>4z8SF_z$uc58wA0aY-$3#^UxV!MnEy#V-4DIB&xeA(bJ!@tZ5|Xa z1_7_gRjUA!T*R&49u=46!3aoUw(Wz?mW=>8IxYbK)?Tl4= ze1evv39vJ}KXg6^F<%r)Sk|Yo&Z8n5B{3}2B*;_d{Tmykti9;Zvabyzu4=oaUaq-> zeZ0@>h=(3sZ*T8)TY6V5cjqtQ*yefwa9UXQ#|o5n4_!aWq>r4+iC&s7Zrfr>3R~n& z0b2+w;(2T7*`c006Cd z#tG{A1w#*Lx?&{33-6=qJ-?W5mK6N5D!QT{vI~twsA^YcOnH~*ruj9NMeqXS=vNK@ zjox6RR4OS?{NvZigKvxV<88;tqubdLvIX7jIFLGyNSje=_15bG)V~?CmzPc^gh`R{ zzT5S#TMyL}C!MeDn$v3}Tsorx*W%|zW+hBTlBfi`ZnpqpG-AmW`E7_=$Y>dW z)LI`g7iKtZeiY0TqP1TaGpZ&$!RsU=mI-Hbeaa&=!!0|o(yL0O`Z;QYDyq41!U&a+=NI&_;% z<~QnH1R=wH$nPn8_4`E5#NX#!GET8OO26N|qpJSHsB^LX2FFN{r~@-Ca9J!dqXxXH zPVS!lwh;YYz_ZiCEv~ZQdyTuOjka~KXDH)O>wgDlDv7f4*2N~fYH}hX(sElVCv&s_ z0P{K#b5-QS%iKZsz(WtNwDV=H%cA{qo5zRP_d*IZW5PlXHlCgt%sOtcc8@n|s-E+D z!X4ZMXi(Dx=+olzVi}8mwuA8Xg^B1Qa0I`=+pJH~O0~ogNW#_p-rLpLY-zd8?-L7U=eycPgYLZR0Jpd1J-r$Mb}yYk;b0B&a3xYuNg zk+qGEILvWqlRG{KDqTwFzAG9JyawLWp#z;iv}c*v0f0O2b(H|c017On(2bTJ(Lz`YvDsf|#4wNilJJ zPHoI?%=n~vi02a(?|<0wlg7~3H(ThjY?3G$c*fWh*YC3U%YQd;zOAX3z@fE2<8RH` zK-M9^=i>8C_V4<`7w+~i^z{Ig``7M^)(k_y$sb>SE(K^7pCFU;Y|GsLB*&W4fXRT3 zJjc1+p^q?1rVS((`>4o&f#;FUvB`;Q<1RB}XX?br#*VpC+2j$YTUZz<6^s=r&#fM|z#s<clXm=t<0}3eyELCWfXQ2(G)+I>XgG9A@cI9ys`#rL z0W?y8p^X$GUO@zYu?%8@RD|SJ&&wf!W#=jok$v&HL_!LXu>k7+gm_<2BLOw0Ovl;& zH=*%!r3{EJRy?u;@{s$JrB2hpYU0P_4wRhD>Qdklm&kNoZ|sb2o0yd1I?@_X_EYJtZ(PwRvvy7w2%!(Sfz1WjP&;mA zTfC1TE-K%}gsGYueq0nHR;no)Fmm3BqRY6CgPMD((;qa-ziFe6k6cBAi&eSX(uN;= zW>%4~KVfVKEgwAG1|>ek#uYK2t=D`SaT#hy0sK8fD8)kvG>ZqT>B289q~3g*Y$#7m zlg~nXk8i$#RC%}z{3>LC{1!!*!5jcM0#=yib`{BS8v`lL~J39txbwXZ)E+Bh+p{byiD;7ZIr}HsN64ndce4-0(xe+H4$;x6q2Q=Mpa7Td5Uso)9v)tl@PVXS z_*~F|a&C7fXm~CGpg&$rL~f()p_HkmV(E_wLR5W5Le~EXZ%L zy(-lpG>M<{))S1H8wNd$8i>+q|H!#(#Q6_V;prNSdTj+Lx5Xmp2`PeGd}!~$f>#)v zczf%ph9E4X4~Q<^zAOhu;|*V-y6|&Lz~YwivHHW4ib@Bx%3_6Z5YTmEF>^Vt>@eKS zqT?3WEa>z&d(dQ$N-Qq(?ICV1qZ1>@Ni4qFr=QDGYHN(dBB$`k-qGg z?byx*m$iU!2MX5;m`B7DEA=9CQ)))1r~zF{JPWAdx0$NY_xjBJ!k5jp3TZZf`bI??Vj(XG1}ZP-*m({b)1G|c@1Bd^3)N%{iGaVucySCwsQi9` zuJs6m=u514>f}_CTT{8fe(;&qD6li)l4C5r%b9^m&<*)L_qi4^DQU5XURzk&>j2K< z5RFhpsvh84t_Pwu_lCQntpI?jZgl?e&}VU!+U4cGzAr8021N3RkJX9b3=%{g9q3uZoj`NLqyu3)#?g6tP1L2!-%|@~Exc7>gu{Zg} zrwiVFEjS@y?HKQ_!C#-4C20GO3)B&AWRn#n-#w{wnj3ii=IO;wuQq7TmlP=t>TA*A zD0(TD={xnPECJ$#S)avD2JUt!S3uy%#_Zn&1T(FBHqE>N0&KlcYXSEYx|WPWdz8a9 zlhCH0$3LwsI{o28ETrBc69OhgOae}QJWW6d`?%n7j`nEuG_8D|2p`;1N&=|iW6{+B zq|8NKoK_t>CP2c&-v8)EviUmz?mdBqw0-Ixv_a@tSW6z-Sp!5<;Yt|+?Yp0#9XcH~ zes2YVpz0c^B9oPl0~w}r^G0p1&?Dq-rfxQErXUpc%Jc~Ef>SPEnt|~8%q0w??0Gui zK}2Xk5>5Zt2A9+78%&AoBJ0YEcYre;fri1a&m@aG}0#lN9oE$9bwd1 zHg(okk!Ad(!aCrR6rkN>DLi1A$#6Hqp5F3m?&LFAw@()o~N*n}dm&i;y z9^9mL70+5cbq(b&JFH#2-oa3WnT^nYAkzW z+^yN|F+SqyE@qwTyZnRXY5#ktXrx%rpS1+Z5DxhyQH#n_Irm<`n;xjuGwGW`xRX0UP{*G z1Cb)9)tcdxUwP>R5r>P7@%w{pn4qAWQDxhu`EsjWLsC<-JxLK@_mrsYXnO0wYV#FB zC8I_WY-xh)L8^9bE6C@+Rg06P*S3IP)d<%$owg7!*JSv_jJdH+RBX1RB`$7Qs6J(~ zGnbi{5r z)^%+m6BED-?GLKqtFv_^z(#q+&#ZF$*|cT(i4m)lo+JIANi{(Wu`4xLZ22a3>v9mA z9q0gox#lZjR0m;kO2mXn<(AfxzVgL{%@Fk^>ce$do8m9-Tze0wl-FVz2mlc|by@L_g?|N1 z!@VIZJD_OLkART{NwqDCQnnXEMyjdDeiy*G2KrX;_nR`9a+t}~!jkN75hKK4Tm zN(2T4mz*7kN|0YHYE1I`a%{C`jGS13@v)Dsdxv62A)QP=R~ipQWZ{ltNp_o_u>7C% zPJ1k&RI2vlssI%;CO%#qA@u+c9@HGM%A~kc_i?Jw9)0tcc}IzfDW}fO$F*VNH0bTz zlaz_h|7Tj})_epdl$@MQG)UQ1k3tDKJvyTOWFpLDK_lQlc@fH#qsS50agwZQql~t1 z5`E_X>_Kw$gwZ?{9oh8thW<@o(C_B%8^JiCD5Owu+o}PdpxnRJ#~zg>TFQ4P9H!x$ z8qiINAW^0EsoV^>>o_GiBfT1b(_olLr9fQDLhBlmzQEpL`Z1i6@Np71UYM%*+UJSR$O02D&3Y?903fL zPyG&o%h3qJHx^-j+oKIM+J{x228`*s{kll7rH#!TG@>r%&Y66eTbBaw=hwXLCeMhV|5O|-%VG2CeQ+~kd~ zdur+3J0(NBr?my=kynb;r>>5z`ttzX1$iTu4kg42#`|*ldq&;f!4qCw#G^49j;fv7 ziUv7vj5@YYwHIV>OvURwNL7 zvADLp{qTs;1Xh|ZEu@Ub;rYPoLX`&9_o}$%38jOyk@>yDrgp=#t#2CX=VzJiZae*wk5pG+Xb`=Mw8*bh@M>bNdHv}Q%YQAX7CW;-=JQQS|Vh4 zd8ml54^UKmHjKeXFB$%j^hEHCvQ+fJ>Hm1T%AmNKW(~o8ahJv2gS$JyA-F^E;O;CI zg1dVN8rAy6T@3&ECCNex|ap8J6QJWcZ`fbvO0d&gcD$h>|YaHxv75j{Ii!sPg&F-7u@~OP+k{TVZ2M=y@8Y z3+leaYB-pAn$-Coq9pchrYjioWdNJQoRAf#9kvQi*XMghQ{J6bUas))_bKyjUlX5c zgKH^_G7ksqVe#HN@tPOwMBUiDNr;w`zHbXXi`duyVGGYJYyA-*N}kj4Q@w}`1@iXJ z+HaOQx5(&mcA!$G#utRE?-+1l;&~?B#~SBo)J+D9cEF4&&4LzG_u#7UrCj}~MYeu) zm9E{U6dmsrL+G8W@*>w9Q}aLvO;SF{FZ~?Q{5euhzu6pqCeB5c0KgBz@?zY~LUWkV z30p#=X_8oDu*ab+qoFTTAsi1&9ND{n&sjqRs6xYsRbu0tJG(O8%fW~#Xza`!1>CzG z25bQ2?aQz^T}(+0217_y?oR66sUyDQ)pV^6uVe?}xX$*um|rnFNvCx&pO_;dAT_WD2Qj%mK|uwbNL3wnYQ+l5mc_K$SP=0g-PY$f9{TPUfghse}ClVqK%Mg?&76|xq&x`x^mFtMP zn3^*xgsBF{0r=s=pkI z_CUN{6QC>%bWlxQx6w6WNepXgK*{PMbB+DC&?khZo6@uJ#zQ;-J80g>)Ysh=rUV6F z25KJ}a5Hz=BzJLF)?T+F*^`R z>M~}0<(E6!kOz7>0Y20=1ySb*nhQn=3<{ibq$6x%kq7BpYm&#O0knnx;*dz=OJn3B znR}N8qs6V$Y0NJ@$aYwSI=hEq1jc((X)_dCxKLpM#Ca~=KRj&vKjfU_9t?N~Ll-iJ z+-RzgN#qxa@eGY>kbH#x?{Tb->Ub5L>g_VDA%Olc@=(UdJ(M06nd-PBju#gdqiYVw z;*bYCvA8F>`R!UFNcd-PhHqA+G zC1sC#f=fRD$L6eBkz8IH!Hm~*PKzENDh%_=Dbuyx`T&h2Sk!;UDZ@RrNi{3MscJU8 zMhw$B&2OxA`fFNtRiGjDxebX)^mq0d#xq{<{z9lSg7;4++>&MGTID4%LzX^`aS}?b z_FnTu+|}-0JjFE{N#=$gUa*LJ8np>eX|n1t0lEg0^sf*grv$j7v+LsPv6hGf`I zwUkTIKFVo@UvLLPLIyUh_KvK&AA2A~jH}O^5*%CUeE;@|F%|64E|UP1U#nWGJAXe4LQ8 z;vTtG#thmm-@am=1>*FL8fZnMA^l~+%#n03e5W!%BrGVq*t-q#g1oy$ZP^az!fRbU*%;TOEWc=8dh7By^HFdi-tvNr9uy#CH z4e9q&Cx`=^S<4hPplmm6{Dd~{NMAVgFT6WBY32)bQa^QAHLGNL@>$EvSA5&Cy$Gv{=tISVp$>}h(B0z^pB^8~^; zcl7#}WV&N1*at78_`yYt^A>{L8nVcW7K`i=;inM?*)Y^?j-!x~7^uKw@U+tFFujdm zXQI|<0e=#v3bo$t6(aW!awzEX{wq#7f01}gZPy<~M-Vq}op=*Ap3m#62syPE&R4?q z%!RHZHbeus(_5-o*JZ67D|jZg04#8A|h&@nkiK-iIr?m%L*(wqYDAYD9b>ECzOO^n|#TmGTnKBY{WJcwuR}>4G~0d1fN{B z|AOy__{YBQ>bi_ns)(_%;&=Pe-3se*=t;!*jHXHLI{%dNApf)*yy6bh&0rI{-#;^Yx|$r)x-OHH@gV1`$j@3 zBC5pN5gOde2h^i=j>NDeiXF-Np)E&9m>R?rKb0N?k_4HairB-CS#H#a#8H`K8m8xcFYt@kIHQ#8(JG&_D$h+$?u!m8rWCeU65;d63|L&@da#h)3ks8f_d` z|NKc(OcWl7fM)Xx&Cp@kl+yhXT@XnXg_&fb9aUfMn_=_+RmpzD1mO=JB+gFK;G1YVhi@Q3p zJ@Kixe{=Be5a9Hs6tY-wzhavicQbPF9e+tyN+?_C(OwqIEtMh1xg3y7Jv?=~*FE*( zMf?t1`R+*}>JoohMAA@3G}}Ink4uP&uI;B94-4SrwVg%w8L%-$WH2aS*LGkBc7?p? z;i5`8h~Ks(9E^F)2YqUxpjY?S{~{To6?w;ibtRD)2hh{I;LFXa%aejt4)zTy-wQzc z&ml6?dxS4#Q4PO-TK`HWMGNmu4?uK_+f?HRrtXU$NquzcKj-$u(H5eJ=P`~ywPTe* z3?3vS6`$u`_=3O>tqkQJfraUmpGVwayIInwJ*LNf?+gc?iva$6j0G}jbxGz41Wle( z^fJmfgnSt`y1O%_D$UfEVT(v=gK4xBT^w}T+QdTfOo--jk3g(XHi*$6rZJp0YFJ(k zgIe-TRrGlYpAXUCgr2Q8juifx;8yyc1c6YOS)wyF!M}7Xpu}Db336lPc@95Z!wU_X z{w@T#`zZfa5c?uGI?$Sf&YWE48oJuv;zL3PSl^EH2vj&&+4LfsC4xCAcOs`x0+CD^ zt_ENzIi+c_T1A{(a)6O7=^+w?8#?dr!OGpDh3#dORU!?n$rM*TXz8ZHQZRu1`RUvP z>u)c-09kK6u7dD1zR{@@00Yr%LTq7$j4P>PqIe?241huz2_?yC1vS4?4dP28oBEas z;}XiX&$T;>_quo76WTdupio7rNx8+OlBErA^DYjNC_MHG4|%SPembln>%P`dNKAJd z6lf%vl!ClMbn2xo>a#E|)7W%VvT*1EOVJos@S0px+-5QT`evPL2--h-02!rzWg_&n z4b;6<(~Qx|h%R0cvgbRnX^5l}Q1$8pPLAH!^_ara`SO*|X6l1w+V9re$&3ycc{|f1 z?hj(|b>DdMjI1bTe*);S7-P_Ti7LEYb!WqW%QVcL+)`ET3Vh_!;c*c}%DTcTv71Yb z@Fmh)nw$@wmk8ee!5W^Vs{ZJb2^R$$dCkT8WGsKYN21`?VeQY^0GmFZazIh3>x8=I z_!{|qqvQXA_AREw`u#upEq|%%cAHGC_aRx^tT$)sAlaYTGaA1BpCauhKc-}@oS*#2OML&t+Ue%RRQ>@WoDX^d@Z{ydtE zZM9{M^9=ahq%(PMciE*E^n|m>95oCDDFXR=dl_|jBcEdRq$oTKj$CjTDtJIR6B)W? z-}%z${J|u?-D$DPh9xg?lvdb^2P)^b*iAdq2ouoeWC3PrmsM-T}c|+}s=lPTFT) zWL`D{7(kT zdKL-Y&5#!cqf;WNx^lOajt#;qvf>lrjKwL&(xEvo)!?B7G5G6eEe$RqEq2^1lcp)# z7`6(aMd`fjHu!>K0BIya6Ik=7k4bI4%4%xB@y54f&CG3~0hDf9H15{lJ z)ieO*+@qGOcr>U-Peo`K-aYOTOZ_+&!M`b+u8R*=P^&B?0(Px7*9)4D3VLeu%Ub5B z5rNd7-FYr8KD5auNEPYy%E@0*P|yJvr3PZ{wyTaAJOoNm3tY&Sv#pTw-@#2s?tHFV zUH+tv9t8h1kmmpu&un`-A3CsfrmkQ8KI0N>>wuO04Zcg!m4b#lT71I)bOkAEqGq(L zZZo!4_J=j$mIepObESMGX1alkabQ-|bwcT9RZhO<;HtbOV{~e^=NdX{WEbmges+f+ zkf>$wyW;8`;@K-^Qlb~*+rIU{MpRx~d%hv}!=Qx#)XERf@d5$8aPyySwQ>&wEF^hv zHPs&xBi026$8QXkt7 zNx;m58|f&{gP|hL=_t4_vRM7};hL4g)US3qro-5cc=kkbsAlN%nVLuCtj03Jr%_d0 zPf!1*I9Hj0>DzeGlobuy!a#T$MV70J8~3T7$(agK`@f6cmFv#Xvw<67xz4Zapabgq zn3(@?RM?+&Nv&{!NndQCN+89+XSIg&t~5;|OD8*fwK?PTc`hM6YUQJRV(P?sGwGVC z>vzko&z6}y@%sePibQ!OZl}dh*=us7hW=W4&gf5#C+`y_1=7E)ULA~{8EJ49tBz)52LQGp8Y%SdVADJ2G%jRz3cZU@v<6EsV$#!+FY>P zFU(nhN0gCon>RC543W_ z`b!D7J+?hR0Zp$e1+Sy_vrFEb&R&K(A<5W&8NsuPC>V>Gv0k=k!^n3|nRIhzmC3Vd zPpAmyhBUC|xid}a7|!XWi_K9G;O&Gx!z9B1t-F=?h(O!g8HgTo4pqB9b_D*yH?l>* z%IoSyf4YPR1)%H7h3TFQ*Jo68uYZ%7zF$(CnB4Yc0fQTMN!!rp)9bj0>jekDV5gYV zINn+-vvJ1H&G(d#Id^Zrs*SUpcFsEDG?|5DSA@YFcbU(JdH>WMQL!ks3@w4Qa-_IruCN z%sT;dn8;8Id zAE>N6yxtzOwuJ5>7NW4ic{T)0asIDtDY}%fH9=d$f``WxyHT}i5>UKfld&g)a&dQs z1o=d)HzEBmQ4%z50=Isp|=y>YH^ry z!I8wJ9;fYcN5ZSV$5;AFSF+QMI^UA{k}qc8PWeU9>oR`2|ET{W>+n;-9;=oEn)q&c|Pk)8ny=soU82g_fm>8Kt&rA7)| z`6U28XqQrp?7M5U46+pSgqz%R+r-;$YB9^T_iYQ0=A!|P8rMKa5!_L!qOfA~k zoyUc9v5BNLt*MJj=v)I&rnO>C@^%+N?P!9Ct0M09dKr)89NgRB7J$cfnarWYQpdVV z!=j%=I9u?9I@ywAI~g4ZMtJcvzZ-|CvAn}~J$>--uRf$Z)a!F3U6@${D@ih8yeX#i zL5}|`(r;SdwP~vB{ht#PIggdTCzqwr7v+Cl8OFgy1wX&dNbk*@z3inu9LFB}fuD4} zHMh@;vJJ*3Yuj!3m+K#vR%_q6v2K$S+i6Zc%+#3i3>r3}ZG`u8yyQCU2yBkLXWV^H zz1?h>@$`0t_9c<7PQ0`IH2E~=y!qKJlW$0HBrjGAET&QRt5_qe?hLBgagnGe2Efcb zoLF}h%Br`5{7sau1hyWyAjkj-1!v;16Zc^c+z?Sk6HyYeTx}zg)@aFBHMp!Zm4wW1 zG!|{p%+cc*8#XrL_N!Yme?B?;6)^N;X&xLjq$PbuY}o5cDaz(w%*0Q5u1^zIWjp9+rGMfW%}ycI#D%UppcJuy*C2=rZ7rhHMnU-SgF zDJmMD28=@uM_{+6lZR(r(}u<^g6%BwKziu+HV0n7^-opnW2Cmgno%I0MDX)dMs{5? z1^MGGh5pW-0u}7);92M8-_>w07nfEJHZ_GY9F$t^N&#mb63dSL$<(RIk$bSC9mee) z%`VrB;4w`)LpXhp>Fm4SWlU<|n_d5RPv2Wk7+uL#Ib3<2MW;dir}yK~^YhD^vz5Y? zkA{;&m>%g=6ZbdW=ryiTijOzz7J0t22=!{{q1ANzpM(_oNWHJTo%B zsrH$Evs5?=QNQTw89B(UO}Zy@hE2C@7Q!bjV>!BEW|XyYQEmg9i{0n+kw)q-kSFIH zSXCNmC*E{tLr~a*3))eMr;IRA_52TU(Jm~t+Rq@?Bd7+6GaUSHUO`#rlEJ5aytM_7 zyeA=*Tb-f^TdcrJGyQ9XeTGo8Wl)ZPx9;nL*lRG)`mA2#HW6KzfY}tqRDkXte3Gna znYWnFr9I*q`W1x2nX>*}apb`vK#&Z7H1tUho88XS;X6TcK~a@}a~fxDq62ji*m);A zWc0y7kYxi)F1{dl*N|e~>5h8#g=;WcZSfeJbo=@x^JR6~JCD{}vQya2ee~|B{iGzD zX#u3pS=Rd6lRYcXva5DB80{m{$e+I2YE0*hfD7Yhot&rvj!EXv?N(tSfMhEO3kFQIpEhg}oXD#9L@ti#U zCBUYx`&!sI0<*2Ujw!r&t)4Amo9-&ZIdJA7fqMMoYF!=O(i4o4`lE0FLHM#*>tpYy zOUza=GqdsX(up8?Aqa^6>JUo&?D`cPAqL_|GiD16q-HDx08&TjatroJ=rajiac1yQ z1iGQL2Y!$vQbUi#0V)%27uF&vM&;RYuX@`M)b-d7z&obcuX&LKmsvtEmD#4#1l$gq zU_0|?4`-<9T%GG5bCu}lW!9f+356Xrr``=u*Luij=)G}Z8=MrgJ8I)r3@1UGDsb$5 zV7Q!^0eh;t)sTjcMkF~eeehTvmBPlg7VfYX?LM)*Pn5b=@dVqZS~zR^dBYIPY@KLb z9*OuCa*_6fD$7mjx(K$4{VwRKG=PuUB4>d$sXSO!7VP1$#oVTd`oF$`{=g`d$r5{f zd=2!&La9>Q{%!}vSQ=wR7C+XI!cPLqqm_Pj3>@gJ*H&M|z zGcc~ujvL$uU>B~6RHDL>F&{Q6p9#(Vwx}3hbUpvnA?R%7HLIRq1CBC>bH-k;e=v#G zteNvthR0jp{jIouHd*xd5ZFNdhL*$cEEP&|6#tm*@$Pf^TC&DJ*NK1|pqt*z{aXrH zXRzM=J%zJ{tg&p`0e%LL$=FY;V{e9-gFZCf~60d!)5Pmi|>#-0cLrsZ=FJ z?7NWE-E69SOXU+%!Zl-su8OPmI-s9Ha?T}r3wWR9X{ApcqQ3mN9=VggAmTv=(M5$P zKoUrM7Nl7n?%vHyBrV#Wew@=>SEK8^lkE%q8X##;(`}{q)h=NL$vY#4BboS{q&h7# z338Ggia<=Yjkzj3Hd?uqkmq69Y8RLpVsAU^Pxb8i3tMG~`?~&0tm}pvy?k(meX%)0 z?1qR;*74wtosf0qTP(CATjqXT0DjI$>|^$OurpkOs_!%sRVVK{>!O=e* zTrby*mhQ$1sqlqM2QeQrxJ%Sn5YQyBhU_dTxpkA#0#E$F>VsIaT>U0}0kv+pbYDUY z+YRPW5EhpynQ->{7)Z`8_x&&UlJ0+zDM{w zm?}=6hrs)*CH~MuaKudWTbwkK=j;i*3Cz0st!7Cu)Y<;Lec&e{A?^weq#kRzGtU_P z!34HkxNm4jRRcDVHa=>F=Gc7P#8P)sHk0iG>&Vnm%Bxhz#z*}x;01jHyFPiO9&=t4 zu*=M}@v6IM_kCBh^VO?|;|=~h?DeN-@OBd~ssS<-G;pbETe6Q+c@Q>#QHw*Q3oU^G=CKdKPq<;_8OTZx+rrp?^(Tti4*s>pv z8?#@&KJFI%j5e)7d3YLxCEpUo~@?}M;Hh=RJ!VwonvZsS4PsGA~-G2+OoC7WqYqT6S#u8f|LN) z*BIocyP@l(_s+2meb0ysA>o%dhqEl8qC;$pJ36#&5*S0?(Uss5Qi0 z>?Q#U)jpV5km*s;>=?$ddAlqO;|E8m=x-qm63`TDw6u|#2VcS&F{l9cjHV_sU95V+ zz5OV7wonaDGY!^_q;|{TJ3a2VLO0qrbDuTpCw7i+YK882>$NIAd*{5|zkJb{Tkk}( z_q@9~FOEX(QCu*XQxCyMj*_&Gj`n$0K(P2p8ArUUC;p*@`KN&;WhP4=Td97kjDV#l zE7k(7H4K?egzd><1>(jDdL!sHQGZ;7OsMbMpUm9`T!TsannrnNV)$t?icDh?Zf|js?dG2Ng&mmjN zXZQ3zM`4X9Y#lp)aC<-EW}|KRUhkieu_$-Xb5Ng8w|fWq-qY9cDRp)TLv+EdpD*Xp zT>nISraUNmxzBR%J{}jwWzOh$X~ad5jv)yi%=WY3af54f=URQcXZgj_P}ZMv>J9Pw zm~n>;%@c#fkF()-KefrUXqtb+>vSx5*8}JO;@bTxW3b6x<($wXZU1yxJ)(y8)^CrO zeAD)w();+qv?QVvLTtXuUTMu%>w4hWh zwx^S4aVK_|;qE_S?5WJ`locD7mwC%)B~}s-Z3Wa!x@W+_`5|^PzChNp(FTnjL3Ohg zFv#m_NY|@+s1?IK@BY}|YB+n7kq~=CC>F|F=`;lo=#*X_xUf|2@qb9EqDoMu;`w@w z_xxIs0}}RJ$${(bKS&7s4Y{Lgf z$mvBFWZK~Qiwiy+&(Qn4-SY9cEBj2#(aF*9J~Zq2G1T7uLfk0+`A%e)seb%YREK$9H?$`OFP6MA&M(LT^U zYsR&2-#2J_X!*Gn={ylu>u!(cWk>4qjO%zO{$2fhjnF%zZVg|URz2VPJcERuU_5pt;kMeVJh3xtZ7gF| zc)Yf)@3&09_cCof-%W8Ku?hJuteq#3zTmCjJ&tZoJCA=(Z!!vT-p+|x<%WkvLC9KY zmfa#0_Ol{;+R#vtGnn7Fedlpb=UoS|68CJ8#0=}yA57;H+G)<{^k7*3&So~pT*BrH zcX}1&KssX7ZH!mj^UK>H2oG^5zG{|?GKB!zg86ylngR&WTPNL1h|x<=?n0A<<5@8+ zhvb7_*O+wev+P>*$E|CARp$PA-0of;HGh5gmNNht!1o^v+P-a~7_fC>?|SgtG3&0I zT+lM9kfbZk>n}~Lla>qP;dom4Z9@H`Iw;T}8Qc}cH)i3r8RO&L!4l1mhddf8{Fdd8 ztW*7Vz42D$3EOLw%H8qY{l*i1`k4sKwdX0}wVGHZ6sGax6jr4l&0l8GTCauKKnoXV z#v&AD5_2B;k6b_P>P1tc@ohl)>;A@6Q-ItkSi#@u?}2;`y6}F^ye@B z>SW+eqsgbfjDs*zLSZGUOEccVGO zO0Q$}Ra!`>teSqaz|F7xO5fTw5EyG&>dC^HPO>SD)gOVhnnuxhE|khs#E)O3+!BPa z-%oCK-?_BDQ@u#=3YH7)m`fC@;ia~H zP?J3nV$OL=GXBzS#H!$Q<*Lx3mcq=s2E211LRN+n2snj@T}>L z>sC0Bl$XTB@TmDDXh@!YxQeKqx%7kcPczK0(-2ZBMip%Emdl_He*@f4{O)UFge$%2 zc_UUvbOMZPvF=H-4?m*jzewy<(J3eJGuSoE(Ncq_B4q>r659-)6HE-amP({GV|CUA zqoK9U761Bqn!f`&QXX5~Dr|62542~+8@V`$DA@!9nDLbvN=&u~L5Ii2O99iu7gjta zmLV8%DyIca+!f5QT9dwjzr&|N-+A=0`*!YzQxrVrlbxlSUnUC)!xd%sy0@PB(vRi6 zB1&XvD9Z9-_01NWnIElTELG22W#QF6O*KW3ZbPf*leM=WswOZCPg=Bvd3nRFoJG5-_eL z_j8c+-}2IEPeTUD$3x5*a+#KlD1*Vm!bASRS%{p_G?;y3*rTQXK`hlhycRjFsb@>} zS8TKDvOFJ=%#sXGh;(K;AUw-V4-GTJVITsA8g*JQg9N>A&gf|DJnvYQjhCF%Ax<9= zsR+07zo){A^Um+HN`z39AXT5NO?rE2DpV(<- z#HK*p&jFV~*Lo$CO(x)@`Pcu^Yg71>@@9AX!t|{s`U4$A5Q@`hAm!r);X&ar%r`4q z(d-@f3+aZh4g11)>4}9b_sFmdGmPjAy~5UnI%4#)-D8B>Goj@99?!~Kv8?msVPyDV z8Fd?_LM@tWSeglPxP_NW+7kmuS+CYqIpMX5d!PUG22S^s<;lKUZt)a+1+uQSebHZG zd%FV~R3b6tG3@9|4-n(UxB^8R^1|w*Rvr*>{b$ziph}ZD3h+6Ws<>0 zc&ea948dWEOEOyIHCcv7vn(aZ@O~&Rp9sQfO7fqPwu9`khO&Bp5hAqGeRY*LDl&(_ zNC_s;F`bN(?>TBEXiL^3Igqeg0z1hJ9~K=*R50thrXHNgc#P#wu6Tc$T7=6g5oi#r zk(_FcAn?)U2Rlg`rp2qmn{nZmwK4yQT|4C6w1`E7kx|8e>t@AU&f6#W#VzRmni*D| zsehA*FP3PAo?k9fEl5L9%H!1|RGylq`$YFDkxm(^-`DaZPt=FS7i31jE-H&H8Pn%> zAl;%M_WHD8o|x?tV{`|X0l;-OT^<{EkHka~1Qy#+0$W!9F$PwAOutZ1s@K!R{zQ}- zFBcc(rR9csd6vpdFA;sn42gA0Wd3(O)bRyw@DBnS)RuF9e7NR3WuGy>Gr!5tNPDyZ zI-PM{Y)};s&mW+M_>?!&_C!TUpB4EqC}lg?v(EBAd)ulL?Tg@Yom7-932-tJ-(51M zlhG035(g3Ye4SAdGLT;cPw8xaEj#YDb8jtC_vGZVE`#9tJNBE5C08m!L2yU@exRW%taa~;wDQyFm- zIcXZ>Th(HbHc(#1xK1ujvPnLWF2e%)K2P=#Izru$^$Ncl5kMR`4_(oFN$1o6iH?@X z%Y;T*2CPB9k1yntV@Gn{E}G7%!(5c9_`strtYzcgB!SJW=kuTT7%f`GPQt@MWDHdh z3rWy&idu8*A>NSABFLy8!4O8yJ`~00$$Z=lqj4RYq^#r?Vy59h(eJQ-<|Y0uK_NKA z&QE%kH7(aU1tP zY60-D0X_|ogg0XGzDk^w;8rJLU3Q6qfEr^_?vD%hjH%(N30!dBhn2|O3ZeWGBmj~d z8qb|I+NoNDJR1X%v}FGvs01HpI)^C>lkx>5Jyu(yuHy(9d?&WKM8GdLI_hvV4|)imeP!-X@-Xdq@m|S&ZihDf@nqWU*TPNREc+r zG|k9qJWUnz)9_SwI->G&d$~u};`U;2MVVr=xVLif{@7JlGOVVC|7T|1j(j2lhiP~q zXyO*RSThd{(XxU_;ubSHN%M$1O|44Oxc~195Y2%fMsvfTj*awO{gbuQahu~|J?!r} z)mH{<`FW-h=G{`~I%49Uq@Puuoq1i%B>uDAkNh}T`?3Pj!(kl%@Od%(lcLwaphbD7 zM@5wPiwy_Lr*yki-h+H5R8!|g!m_KiGwX?tM(KlMW_q(B{*_-AJTW*|c#)i314cgWbq6+g;}kc z0jI*kbJ?qiHHg4T@LElG+LRP$M`D?c#X>@Hbt6*k_AozrQA+sScCyZz8Qs+b_p~{CeVGCkRNXJAC z{?6*%bH>r0Mwp(6ixloL6xtO5$}|x5q0&famzU;@ujo$xCr5BZ9FE|jL|R>_|9yCq zQ%Ydg>hln)M*NsfxMWY_EC@5jTW);J1|rlEPa&3AqmXd1L%%G1jIl6j(i6~ZEU&ml z@R644S*F;y6x@ThnCX8uXfYY1IB-=7pT-Ru*HlbKyu0x3a%k(fAs?uyX<$rMtP|gbdfg~&- zs-Q1(n9Jxk)e0goHhiTg5s{9lO>B+7IUM%9D&iwK&NlBT-Cap7((lE>S;YZ+MnC?H zEpolDnvu4!zyDdYv1g6da!`3ZG=e^<942;L+6rKT`(V3BIgVYK6WVRYK@j(@m@?#q z>dyrrBd9Jo$jbDJaMD)162*cR^J5D=sk6cj+mSFsuTVrR(Xr~hu*rh=-u|Zr!^E}x zGqQiswioaWm6QFP8IR1=o4yGRO*#>GdnqlEJ;EiC4_VyH>N5rL%KmfaFBCw&3N@!x zYS?Jo*JdR+t0^B^!Zw+rs(v@Qtl*MDpk6{ua{hA;u#9MEjzk{N13{l`9y#^jI(k0@ zPNXKw0U!btha1M9kPyWZW~pDXw8A@FR4PJT+-ni0WRX-n3CL?$P_`bV$RlrA%8Qk8 zvHAwOfE#thbB{50TC2n)^DaT1{oQ=eDE|@8IT&<^DtL%reIe6q3&kOUKsY|zp9YJ! z_i;?2b*p|{uOaUZJfuGIj%raB7!H*rL#1#Jog-EgU``cOHGCKMv{KRu>D$G(oq@Gj ze)DU&EycX>bpFKQKhw@bFH|q-hId#h+|MI3-!*oU+dc%!3D(A>h!us=Lh?5PF{wKf zU}UVkGdYJo2B2t-lvs`cnjBpop;TM1iEMbQa@}IY4~hmar!POF2g_X`^8e3M!BEx( z)Bs_`zmp9^2vN94WD&l?K^9Gn+lbVn)Hb66;6Z7r5P^<(CJtRWjzY>e_ojbj9|PS< zQe;yd(RJq|A^iAUz*z*kqeDOWvgqv2aUiC$#cdQww-Ysm0`K2Tk{r=@vhKwFf-p({ z{{TQ2e{=dMTg3_YPcOT31I2|NsE9|!MwZ~>j1RaYmGKLACrdP+P3?tYqeU#vPtx*L&Fs2$CQDp-|KW zVRl9Nc@D|LT*!Z9Y(3^7e}Upa5|jWgV&gn4q$N@fAZNAD2MxJM*!`d^BE=TyvHRP%eCc*(ceDJ;+Ph3ErHQw#7=!$3Z`5&qYn+-o{##-#lxzAwFvQosr`|x*Z?ICmkcJaXIU?hZSX9D>JErK`64ql6c;K+66VddgT&dH49 zCXV(4^Ga+VH`Z={Fe*kK0A(Ui9qLA740m+NiI2rtGZqsi_BYo7<4<%XxI>5by0$jT z+PpQ-e`*O!GDQSS{=3U6(nIX)-(et8iTH?YItO0Kh06@1gs_)T3`e#GYXpYCOlcYEQ65(E4;l#S1#Ngv@j6KMU+{_IA8K8`Dwpc?7I5+5G_}S3hr3}(A@(D7 zS5h1-_Tp9oa@ValerB_685sQ@;nQ_`d=d!oNn81N?0LOLEB>>}Zol884CEs&?mN$; z8Aq%rELqY<7_(1_%vpRG#YC#LheECYxp=aGQ5P@nJ*FjYK~M#?sh>bpX$dKDzB*f# zv1Xuxq6^f??-FLdT{X2`>gQxLVpt=w+)8C$0Ll>3jK#~mOF*6@+27}lysM}gXQLn5 zEv!gvDcQdAr2k}@9(XqFQln^Vz^kf5i|4f|`24y+wnB!5a(qS5PpR~k}=PR^=ID`1w19_OYw3S`umLzp zi-_zcxkkBe2)ZPiT9jF{T~s|#J9G@amKmW484(1p9}{$+`p~(sqF>fj;{KPG1UlWq zOxE8KLDh-4r~vf0$+D<#mwXTpA>Mj`AC+xV|9}^d^^N7=(-T5At z(aPjplGPN%VkOEFtXT>AR)7p>k_&b|I2yxl3nIOklAQ%rEGkGL_-fxnCPe%TXfDtZ zXSm$p&#vj9PeN;)_BK9Vo#$@{d+~4o44-y0e4=Yw_nWqMV+8;?fDUrQU5ZnoQ`IDB z5`t$-I*c}t&AbT8fLo1v+XJIO>{qz5296m4UJ&2;nuuVbXmOF(1;p?(yg#zRA*AvO z#YD~!`&q{fUCttkql>?Hd`ifO&ihhn1rNt4q$Aq)B74$3&5#NR=c;y?>wxNar z*I|MNHz~|kC*3FZV4(9MAL-~K93g&v<)fqz6M*WT-}XE1km}tK!_Fw2KX=9({ADgkCw1{@7wISDG9}dYBj}bOEHc37l3KjtT`+CT}rN^v}MR3R*@D1i#0z^rE1ipFcPA+i`leTrXAPO=*vN zC*~*xbCcq=LUH>ktRs^k;~pLLK?-;!0{`~di-0bYW9Fj4lBA zk*TpO0~_dvh%SWNENJJwVy5F!!!Ufd9~*lznE6r@&(>SaffryMg;MD6DY5q;1n1tq z)iu8#H*>#jcmDoZ=?Tn(XLMB=vjQB&{<>ogmk^)2&x_WfN1+ zFr%Xaz8z|*stDHvtJ|gV=C0>=jbnbQUt`D8%LFpt3de>S4}N5BEN2dq3+J zxZG8H&#!b@cHHQLQ&Een+Z^RPy$eLBeLcf!6TK5k0^r8AXr%sM1LMHQ>oW-cul#2L z&Tc2jBW?~$$gK^w7RSVk?MUzW19)WtZ+6?@ms$Vax2V;+SD zoaZ`W5_l4jT-YeNYY(a(jJ4<`;)i|`7P7Jdh;Xy)bs!J1YWo9KRS9*6G$!~%t`nVP zn7kkUM|Q=@AJ`}eS~S2@pupW&6iH!ORyuLlA4bF-SML0wxqVM>B|)yAxBPwkN5dvI z_#g3}r}jIodcaZp81eq!Wdu04Gy1YtBy^np)8#4JUy>9+kF6PlMn9C(Y>`-FS{$_g z-UOa0kp~oOL(D0ND=gH@9M!9WRu4W7RUK*~ANg6na;QZJuTmWJF8GKb9CnoP@z8s{ z`pzAC^A*yKD?yBK%vVhFBFCwI0yEPC!w}7+Qi)e=#Mur9 zB`qipKjqka&paPe3V;eQBNhn$1kAmC8L+(tUd)Kdn61hv5&o_zw9~(&vnvs+Z#o!t zv8EQXf&EL!olN|m=0)?pMRM#dO6dY;v|%!6Y#fd5nD6^;975l}h(dJ`@1_1oh#Y3# zedfDIic8!x-EAnS`W8}>D$aM=jo!tljKMOWOC@{t2FRx1W%3m;5)nYw6Se-1Iv1=@Sn#N% zA1>n3Da3Of#kttcCDV||yH(@UhCo|E4tXJ^L=E*La^1b)95(y&a`)9{*QtKB=P%eZ z@0UMIvXhHXQ13|@zx%}<$5HOL_9fN~ZUYy9-`R*(FO2s%5%mHw*t*}-=9{;qt2yNZ z-4z&rCM@s4S@t*v&+FcLgNN;xUcKOil57wh$s5e-%Ou5l+)9UD9gE+S`a`fXktHau z{p=>Cw`e~TTR}CE#N8i%fghZG7rI_z>H58(kK)jA5M(U;Hsk+>+XS|G$*16l){Ap& z$CG|s=uR!tjhyw1Ig#)NKG1tgZtMBvViR+4D;q=_+WGw0sPIgH{2@`v=d^}D{ki-C zcR?R~)9)M6fk6RPsI87h_8*@48JI&*o50YZ4;lHz?`nYwPT&I-u)c;W#V_`ztwdRC53%* zw+(*bZ|F{fGx+d!*7$14R&#o>-+6`FblD{zf2ps_)oZ?=36qlLjHBm$0i)<$3?}}I z$36oZ3UtHZ-Y`L%?VEwe(rf$qUKDe{M(53yGgUq}Nyi6!pO-%es-Rb=vxrvc#tGe7tcoF@dlWnwD7{&z&g}k1$v@gECt3K)TK+*vl zZ?!ir5g1J?pXQKi{lGpy4-1uop;AfaVEwwBa;&ILuzb+xxMj0cW?9!!C=ia0D8Ssm z$n@&PVM|O}6%sNeT!b7QDgOFSiAbZyZJVBe-V#ep%E5)={AMy|^gbskpF0}6H%s{O zf|c?As(R<>$iAl!H@4Zaor!Hb6Ki7Iww;NcOl;e>Cbl&(Cz%+x^ZUN{u66srUcFYI zbN1O)^{J|7?;Yu-rSQg*`!xZ`B;)#x6$HVxXVUv7XT0Www!QR=3xE*hmoMdG`;~qC z_@?hRt>rM;SxY1~=sQXn&fAq^`Kb%-_YC}^u-*l1+K0Cpu5Y~m$|ZmV32=753`x7( z;l9n=3v-i`9`@S>0`xRfp@R0SHeU4*afk6;}j|>O2Fg?;JtKC=c zFY4gtmdbEux!U1j`cl*e=n`)F_5BI>KBgK6>-m7)dyl7a^g2_PKz{93h)VbOetR8h zG++NKM7hTA{~vJj1*ZVR`j^do`4k|$0xB221B_vOUxt&z?MiF?xKFS#{tD9~LKJH5 zpJ8v^Q|4bb+9fnde{^@Zb7@cKbW3`F9dKm*<)1Q!BI|Snk^dXGJ5$*X8bq7H)FwJ6XBY z-d10X-TyA$-F&`ne5Pd^_i(K@o3eHgg+E*e3qJj%gDwa%RYSVm;WS|e>Zx6zzDfsH zB0`?_eIKKFyg&Bddu5UMf1F}I{*cp&Z&MhXzn%vdeMx;Do{F$;1Pph!6mb!D*Drhx zDvVdC|7-0B7DWay_Pad+F(r@^^1r^dy*ikK`R}j09s1oU1~QwUced^YV%H1qTZpZ` zpOS-*t@=*&6~6#}$O4pD2DB9d&$T;%p5DD(Pc>Van^F6A%9D2BgcS69gdTi!@A<2^ z{3vPv3FmXtsBgj2boK@FJlenW@m%kg%xvY{a~K(cmN?7yyx$ZKKFUseDH+}MSL$(^ zeCv7GRZ!}8Jv?E4>ivA4-pdxK^VVp{t_G$!vp4OMh`Do(5ZwmxBH!p)QWuYkm5{mE zYfMVpUOkc~TUGF2J0#yfNl}^6As_{O2jZe&jcTF?+=;27{7sEQZRWT^TFbfgltLFE z6qthgsSfqKuKkv0j<0^9uE-`hp5cEXEYLwdz>B->R|+zBVzW|wp$lPp4F@whV#6YF zK+wjWxYu{)UpiNlzy2&oc$R?st5E!xWH~yop|mCP+4oo=e9Zmj5rs)8cn{o`0~koS z_wYe>wjfL80`<*PlQs>}%hsj^2 z*qWXFch*JpDXgds>1^>H2k##bwlR-R3ac zjqGFR=~h(h6^H@}#J}S)bQeWH^loPzzU#(SDL?JikA`!+duV^<0T9Ob+=*KUS%SVM z#3P#5Z!7`mB|v>kASi6t2^^*%%oHa&nyvTQnXm&#AQ&co3(So8%hdLa-g0x_2he)D zlqX0C{wDZSr9mVqt$B)kxLOI>@YiA{>HIYmqo($qk@TL6PapSbMnM$-{r=_&NnnHKqX*gQlmU27!OQNy0gsWb#gT!j*-)nZ7WF=zMX76o5aQ{%t%$xnE@P!I*{lmqt zMt~ikPiO^nuS;m|T{m-^2BAmflQ1+$-Mhv#wUr8(e$1hi8*(nO{Sfw0_x>;|Y7>xX zTe5HdgRrG4@+IU7uEt{{Bl56W&-35D7mu-2{e3$?i6(?5ExIRVO~pO0f>Wgve-QnY z7G^-3cVB_0ohl&fy%9Kw{!ZgD3*}X>lKzv%!t+!(;Whfdb{_pWbw20%-IyD78uH^olBbIIkzz^yVv2#ZZ}*A>!}>Sn;U-+?9(kus^QVQI`dT z`(jAo!l)p-@4AdA8_@=9#>NHR*WVb^JnYz=E5$rIyH#wV@BLn2K8T3T#o{4 z`JYrgB&ue-mTdO|+bAwDPbqr+x^3$+Mryn$jbdO}<7Nbmmi}e?eO7e1MduC=mZ=~l*Jm$%034c2tbb*a9u8y(bKCxrYYR$zE zgPk(bOpf@tzUS11gB+;wXQ_jJ~s}3rb!;VzgaplbB`^VSkVi#@#_B7d@l5mAt_0(kbG!f^==aWi^4t&r4 z_tEM@{*^ZZ7#-lM%G?;JLayp80>`O_07=f6-?1hiN-~_KiFfFKsK{T?L9S0oIoDZTFX-a~|* zncTj&2TE2$OEttd*MG zEAfXbKcL(g=w$GR{3?>LXME*-eJg}-r#J7qX}w?qFAvsA8$ewK%Bky(*>zeFe1m-b zxm9If!}((0%kSMf^relzE|MJ419Vw8<#^jrK*t38Hr(mwytoJ4yTSjX`IFfM2kBy4 zd;}9-@blX$9^wb{8jySa;)3&g{}-N9-Sv^}J5Gosp>rH}%_`CY`X5gQVxfhp(mHOwU zrR%ha&4p_RQHB#g_Ci0>W+TDu&xRDg0dJ0{^+rpdp^*3D*N494afpZORjg$H>l5P} z$=pxU^K+o+LTo!-uQUKcZeL2~OPD@(y{HY!uzR=KhQdE&##DBXzU2zDP-emyY9 z(9@TK0~(xw&*NO~AZsrlaA(T&KH0}B*oVE!p$U1QXkNX+IzjH*YZg_w(;#}1o(2B| z&Y7Tk;JbALljB(06=nH~KGS z(XU;{iQD6{1AgPa!_5-0^_9Hj>V7U8gjRlu>|pO{1U;X}XYXrmi%qCtLvi6bj$^(| z;ynbGDJ7;-yv3sb_l$rh3da2p71zdwDUoW;KGyYDtU`6wf*=d3 zP3Z=j$X+oJ?z!k}^P?PDJ-(13-*=-2hCg=iX{8!He~qsPS~j+zk77AZz4{b@I@Ip< zBTfvWG575asL;2B6d$iwq3qWaS{&cjl5X@r{#c9K>-`Vh{r?fpW?$*n?9=BJujJSs zXKv>s^i9M2IsYWkyMph1?$x`X-Fkl>HQq#?@9^L^{!VHZ78-h54;BpFd7Tohc&vsX z>b+y&^83sEC6#$2*lBBkndxqmCie+&#^Zd?_Cfkmz0gX)fAtQ(8y*Fwv*Choul^F@ z>%auS^@(n=`~0s4#F{xQp(l$@%Tq(#`%1~}Z%oG-^O2^{#oY^O zmYGl!b0_r?CKd|QufDgNB&sj@R6}^|_l2ofKW@Tv>btY+I9{!NjJ#>?`XNqSEh*z|EK5&f!UgN&+~PmIhK*nOHJn|*Z*bq&1{a} z(7p!q>8<+_arAH)h?C-kz7hco0w2Mz8a|$q!G;1~g!&pPN&gly|2(jqT9Df)^erRm zuWV6~@u&=I^mgy@J5kwDs8-Lp6Ama#ZK54cL}^I;$eRo*IBsIjNs?^~8Z7E0ehL#> zOp7&c@QjyvuKw(zg1~o1Mh>QITleu#l1hhxM^2ZuB85cV6P~a)$>lPo-d=*u*KVSD zM7*!scij+BtrGcMv~HuhNJufy#GLavoD{$ZUpGE}mzN~+_*96WUC|OAU40HcFb6d7 zZ&OUQn{ds)4Go--8Y)SdeLhf?M@J_znvxooNN|#f>0D(gCha$6`{U3)j>}6DbIU{Z zg^F|~byqOPv})%<0HZaq&=a-)C2_O-Z+CXXWElguv|A(2`EREh#YGh~VBg7lWGS_1 z-(gypVZ#!hVbZ?Mj`Yh%{$5Fmf)t@mo|a5U&orZeNl3j=*?g_FgTCFWW_4!nexL$J zNdnxE1lPyTG@Zzs-bgCA4j#!(O(Pmnz$!79{I5qJrZyx&^~o;P?!-1%4_fXb+bM&V zm68XIwG;uiu1bn^77{dOBZj#r^qnWmQ3czt4>GjDd`sSY**y5oC5SwIJlkiNHi(g5 z%$4spFVp`}hn%Nve7=PIe{F#AxqQ#W}pruYu_aj$IG_-j&L$8vb70i#vo+8_+14m z>aX()y&k#L#_A0-7ATIrn695dAW@kJ-~AfMAwXr6ZYqN5)@AO|(4T(eKTJYGwD0`& z*pJFMf}w;(2ONCIH8d!Y;#4!3>}k0jJ>_A;f;o>Us0bTQ49{7loDDT$*Qc-eaOP6ZpKQ{}(jEJEGnpKyv$te|kt(j| zVXhZ^WhW;W!HV|5y=LkRsu{eHR@r{?Lo5s~5FERUEw&vkN&e|iOpFki!+8ecrXP_kS<`%&4ISD`iaYXed@I9x)(&IG%G4eAez;(1hvaMG!rDUo@m0 zaV*n!nxmR;>D92`IbkO^c$ z!5gU(9Jq|pc1-?fhfGyylt~dauO?&dr*P78R26j#Y#68{2Z``ds5ncB#*yr~WaS5A z+1GM*VSjgTzWojzXdoxV_lBzxWo_@PC3hfzGm&5*8+0co*(-PE#JpympEf7hC-j?6 zO?_>|%(}7au@E9a%%ZfOd}eX~ZxC6kC~(4H`0WW!Kzc|`s^Hl~TTN{S@`;9jQd_63 z(Bsb!tvQP(kQ?P^D3<&y!=z3~5d4Obl7VZZ+^1(o3cLRO`YA|g6*p5Rz zJCs1)%Nw1yd;^J7;WhhTo8EA(-gVL}BY#FT5|tR~IlF2uX!Qs(Sd)Iy1RKDZUWnC| z{-dNhxtB}}wpuPB~ zv4fC|`^75KH228`h28(=VHJM1bDi<4Tdk1J+$-s|L$Q^OviBGcmMJ!jA+f!hU=i#F zZh{|eCsT)}gXV#>VMFMPHKeq*M`zSYwhF}eXV@7k9>Ol_jV^mUHumUI>}O%jaISHV z3CTmn_f9=?+XY;kotBghy#K~dHp*7JwT7`$<_5%M&fmXKQh+Un3BTuX#MdzkVc$%%;S_6!dba8q-RbV|lnz07Z9@o0qyndu3c~5= zBGPjvhtxGuv+MCRfx~`z=^W4hSr|62yG^bm!d^oK?8~&QQM+4I-Seq(I|AVW|E;a-C2b*z%%Q9tqOakGQXNXk*M2M zb9Bd~3-_~yZU#e#4;98)uJFA_Lqw(&iv{2?!3x344o=!+$er|D2Lf#=UjR8u=j+3pWu&IrK{#cQuk5Y46Anbl8(MVVk{Z9{ALk|kfa7a!1Hto7=po0_x;WeG>Qv$7)r^vJM z`bd?@>mP%i9{xs7@&9`sE4k%mgPoi$>Gq~ql^A)9cGypjKW!xv^iANRyUf~-)D!7i z^?8vAcfX=SySl&QJ1qKE3Hpk$+!B+nOutUG#MzVB-r?ueMOUjdGr@B!6EoOm#RhEG zj+e;a6!@n8PaOmsV%FJT=bV}x(>}iCRg4|waBV(#m6tx z`IPiR;p7Znay$PjvVfO_UAC!?5Jry%19A%#2lbd&G*lp^EzgvRKO?tpyu%RZM`h-T z=h`${>}N9Seyhv<4?;C8ueUwNT5WulGXwC4H>600cigU=643z~ASktIBQzUTw2ahd zQI@RbQjev2OmZQcLqzg5@eL*lj^fr_yCWhGp_CFHnrW)D_yNj0r_y6R^T9lE`|6s! z6IdB9+1W!mC{9Sz{^Q&ZBRH~kTwetNU~>|}T#nLVyZtx-PXe$DCe->CNmvi9%v2Us z7FRi&A^N1=(=(!eB)O;H^u!_}EZ5}>(M#dgn`L7AM;_m(921F)WabJ&WLqiYr0y~BE2v;1Aj-8CbfmBjZz;+_F8tNG*(NiG8zfK=JozT;`7gl`7Vna zfdWB326ZX(#r8z*Y3&x9utxo^+-P8``K9WzZxb75g1%+7f*5qM-Pte(73`N-`Dv*t ziHzZLjJi5wx0J?-3NfJy?`j z0&WakjTx*P656Ik6;T$NIv~_sZB+*E9L%2=kr`HkY>ryC`r z+KyQrV^w2c^!0fR>vTXGAsOY4FSKrbC`*67h?)`WXCjar8 zT4&w{&)J^GR2_dT)18!Va|>L(pcN!)9H(vF#g^B8cfwK&h*BlP!d0sb^2bf(g@tX~ zbQjBU*735Sa?g-v7_4J9{5dod7>v~MZ=RT>%&EuulHl$`a0zyYPG3?rKE|lDrsem!B|X+mR1v-9$!iEcIEsQ z%Nw62f;dJpanCy8qh@|m_a|^UBWLcz(t)k)UxYtu;7`-0~9_lLD(G}^TCD9 zOS$ID&9fa)gA9>e8lPv$Y${oJNdadRNZN_30LxI^=9Lc}Iz&mw94vFf2okKo{;9*%z}{p-vgD zGFre^Zh9mvoneAONu)C9YZyd87;hka$Mh= zsM3%CchZP~n|PjxjA_7tFDys8hoTR@j>@$Q!r=;T{CFL=zQ?b*O-%ft)5@=|UXYzm zFS`Cio%GLOF&M=GaV&j>{u4&Th+qr%rL&SARsU57&s>1}IysbG&Ojg;td=p{fp`y? z0^J}jskd#(k?!yDva6?pO6u9I%d8!UaWEX$Fa`>U{4IHv=w`ThouV}qqY%ib)H*7|7~iZON?|-aO&Q0ina$% zaLzgnHd{%Zy!E}!P}A^wBE3KurSqXx>ueN(V{()$7RYV` zp>CPX9~go9&FVimT0)Rl_Ux8V+)CP2$c8d%_1*!qp5z>7UJcSz=kb)*e{}&iI_+ew zK=Sjs--J}ZabIFBj7@0SB3~;UH+ef#-HHkke$*na?_PrV@a;_9iK2fwVsK?hq*;|; z0n}Ay_9DhUF`Kt(k(U;!7Fzd*J6C)NNc_;Ch#8%>>3Hjs0~8KclHpi3s;rc=2Fj!( z#;M*vEyib^b-H>?Ugrf8$@TFWcKMlA){m2d2G{_b^8-fMwS?0ooMN?Ng(Fhjfda5O z5HfQ-;*JnZt#ANdlriI|?Qe$;(C(uRS%~oMkkESOtY%ar21!)7B`wIIbPV`<{+_h= z#(3L8P+)tf;s`f{(zU+4ryMin2_%kBx()3DvR=&bm{BL6f9p?vOr8Llx|c`fM&WLW z!e&*57X|atxqI$=k!vw z?EPEYk(|SW|5%~Ms))_{(6|KLX0@sAl#%0u@oKUuDO~TcDChd7k`Fu8Gfl9DMhC7| zO){;bkIv$Id`fEmn3p8APkhvyYte7MWjOrR!Dh|m5@GlcM&E*Yfq`WiCNhLIO&AZ` zct1!EJo#O5oSVH=DGnOk;tQNBu?;VP%1=OINl4?eZXe3GCvbF!?Cd4Uv_S=v)xluT!aGSfvA20Y77 z6-XHdDFuPbU)(D;U*y3sgLT=MeMd^;0{#SZYG+Sf*K{4oQ3R;{_oZm4GyJ~7e1#0< zIpVVD^yk*l0@%5pnc0Na@oSQ-LDzwy0{7Xp+1S*}2~NOBK&A+Nx^qOxfE20Wllq@t zF?z0jXU%N4__iCmy`T*OuQk*ztoI{_a+EoELE9u*8bE6JOl!2s)oas9Ff}G3qW8$? zt&+%*HH1*jqkfiY9&pdxy0ck$F>s-0r%K{&F`rVW2#(9!vv;KY2Uv)PW27m${DxwSD)~rb8LUI02OVXAHH00o3-H`Bz)AcO z&xhiTacf_HV07~2*KPsRh_LBr;jT=K8<4dE#OUKcFyb#rl0SuRAtw>Eg2dq>2<0Tt z-s)f6d4mmYiXP)Vb$J>k$VK{(Z!)(%nl%Bq7v3oyYrKrvyC4aN{wDRrT{BLD2{-13 zN^Fz>>SXj=JAVBk*v%2)U9&BE`(~q=)pm!3Q+bi)HMoKFcJaV=N$s!PKPg36CeinmxwNIDLK@tGCQ zXX7$jqF?hc|J~4o^G8V$27*HqjFhqB1Sk3?FG*J)76jgmML~^45&N;Yl=Rp~A*f_7 z0T)=wJP>0b)!FRlLli$2V(!=uX4l)ybV~q4$qi-^tje+B%4gcrt&Aib|7wA42HA5O zQ!wqnM>m2<)fs^YtDhCg#oEZAwP6Til7`_< zdJQJJ#~%lQ|Hz>|GIbpPG;^0%yDL%s68%>hv6o~}VR@pc;69X5h$~MQ7Y6e!=f93AOjHA^v-G#c?6ccqP`bdzz|A_yI@&VI!+@K$iM#>(yu=HzCar16kHHIU_ z{Yut~HjIJ>EMLC!z95^b7Dm0!k{TYDE+%h=8_6rYJyx4Jm}wI z;8O}*#5j;q0_B!+G{{-r4a4w@t^<4QxQ_E`_%S{Uw@{w4m*U_ct%tOSWOrfId&?6C zC;FTO8ub1!W%(|)A_E5L(71=sv;@g4w; z)h(YNBsA@2OAc15*t+brWQ>d3vAJZ(LG0qG}9oHX|J;ZPq; zf(UpeG@?Bj6Yb5N1kSO)JyYGN-Q!98^BIdKP}2Ouv8<=khIq$h*34qCW2&umyetDd z%@v52__w)bxbM0B2D1k2wHb$AjBRmJKO%o6h-R&Rr}zj=_Y8`N9-IRE;4>ZuTY%bt zj#z}v%?}}KT1zBCt}UElnkqN;tukxy%QEHe$RL+IlisA@2!$>tt0Xn2bj5o8RXgoW zO>voE+pI_DHfvhRn~*{YSPL|IIb5SO7ldcwqglwR)#gZXRG;M*?5bAYz{;>xgqn9s zM-#&aBsc~fa*njJLAuYNu$5yXrdBiAc(|;(&XMG@0FMZX96&2H8?eE_l(ser=c1tb z>7&5?uQJ&^sdx>=NM&LLrU*ax^P5yX@lD)FiI~27tZ1Ue1W(RKo>XU-nx0@&L{82m z$m+jD>qISe%G~cJiz3i_xA;^4+*@dQQ1vYdehe+28_80v4dWUc_jw`IJ&YV_;nw7$ zA~x`JUkv>EgY5m&0%Q#ov$}}<8=*Vd_tAA>czp?p8w{v zhQ*4B3x%G?oe1^lEw<7=!=z-0;Yj#>*}%wX#lR4wSv)Z_knj}w!}Gbz^efsVIoQum z0?F^7z?in9qLov#>8~Oxe`RGSUtmQ# zTYeTxxVf@sPEJC|ga%p2K@9TW^RQ8R$RNVRccqv+!!<~Pd1$4J;=TByXZ}2%HS7%R z3b^IlDqE3-oB>Zstr{@N*&>lf?1Uk$@AO05(w6Xc@tzqaceYl97?zx&XaqZ^Ds?n$ zw|-nLNL#f@_ED|-3p?L8Wo-2D(pvb-as0`D8sZ@=S=?-G(Z2j*)(>v8os+ zaS@dlkgOu{TbrPCT`@ybf_+V6tW`AA)fm4Pw{6$tVsPTu>wZ@3^)}fjOZ~1H|MgHj zih!svbWWChyyz~0tn+Pu;JFOxY)@`~oYfXJ)9=MWvUGLB^8#}vi@BXPIv+(flY*u` z|LGLufp4yBrALW)L$r@V00hjjoEO9ww^#GfJeedqrGJWuf>DnZS*|?`uIbaH`*iZr z`1bKvG6G0O=m`*Gr1`f)7NGT-LR1oI5s(wIQ9S+e*@$<>Wliza5&5$IOp>VwAMLh@ z9MXa!X;lspu&XR2vO<%-r)X-JYoUY`L4}ie?SVHu9hYb(V{O0_G_dl1qxok}{JkS- zm|pp|+K$LVWD*dsoyg8&C*7A~=bYx>A}I%f4hZ`hrv)8}P*fbmqDtnCEZ4hy{}asM zy^tknx|!G822EYS-sn-({l2 zqXl3~MuBY+fA5tf^0wIY5T{WeO{G5Y#-_tTStr!6Ktr@WK>2IAd}03}9ygd%EwzuA=p` z@|>tY#16^yr&_-`X^>(;Fr#@Q80yx0dm)K(-Xk&CGb%chC?%SfVId~ssV)*O!a_Gk z(+8#)N%V|OJ0OD9=cR9MP!K^3Dei9FWnIHQR*uE|aw$`T1vUFsQXrg&8HtEC*Ecc| z4b@W7Cuu;Dxied+!w1n?YC6UzmEXM*133CC@Dl+K>O#8ZA~D6R=EWL%L!(MgXrUg! z^E*lbXRzn4RE(M_%L$*05sOqr`gu11rKK)boqku6h6;T|d`- z46j^Vc)DJbO{m%7#`gtqV3@6k5X#?DrXrSq>?w$&h4ei3$_Jrm_>^hAUV9vkBF!ev ztX}!kB7O-T5p6*(Yb_a8YJD0P7Ptymmm>7o@$)98;v7;;9KqO#UcEP@(@GOmYDUr# zT7e?d6x#!=suMw6S1IU$j5H~lY|_|71hf%>%#sd^I$wzA`Pp?c%IY=J^eMycSAD2H*)-G)LzFdqGMND(5x6!B{ zej@Z?Uk@aqXx28r`zS(Cqf&y+;ylp3g!r4eIC%U#x)4ik;3K-`^NJr??%LVAMst8r zHnnvv20f5bfG?Od?O93A1YqftN?)t$!f*eiZ!+^Bm@u9g7CFhC@v`6;k5km6FZu_l zXX2N_cODO>jGk|lB?ia2I1T0R*HJ3@GxR+a? zz(bDY$Iq5tK_sQ63=}+)TqMt2SYjxJFU_=ReK@*`H2lgb9#p*p*J#=lgF{%Kwo z6GEAW>jog;5eCT?tQjrudq)mboINbakV{pu{^}=yQAV3@G1H#okGXChH!opWU`k8T z+zGi$yFLE4=w?;zKL!`}JQ1pFUaq8uP{u?J&xnFK9|lO9%_kPkNL2g78%C0fYMY`CTpi;iszso+5CfR?Cl6I zwuhAAU-jXY=%jBg6Cl&5rnIx>m8pD=Z%}r2i#!P5Wo~z&NLI4(u)aOpK+rJ?DM;v zVoA`e65y%RCwmi$)5nVsa6wwB9F}Kk(Ht>ZC>U$)bectTtP!K}NUQw-z0(RyEfAiy zFo6p82lNbgUpV)`pDJZ4!R)>z2X(Yu2b1p$n5J}G&Bg^;&6naPOrS)E&1;^CgUhUm zuR*Q%1)8NNa_zdxezxafA@2v6^oc>tiD^gad$Th48)||KmFn&wu3YugXrY!pRZv%y zZPwBz2sLN0co+r=?`GLbgjY;~_0Z5^@ex)c(46@&g4}Xpz=th68TwJjkk_KX>B`Wi z6)VigfJ0FDDhZWfAwq*N4uw*PfL051O(C9GgSZlt))E-TsfnOL7o7*bO-2Z2(Vz$= z7Vn12X32>fF`yy#nd7Mr2p2OgTbB)k6Jy`Q9BPq}OT+~AH*5wVlp-cmc})9QPVd$; z=wQDsOdAG#?8&*$^L$3HGInz}FE1%Xi~6M$9B?*HJO0amm4|D9C$L*`ODU>X4dQ6d zbHr7n+k%u%6+Yf6{Dh2zg{g3no~$98iFE9LaGQ}b*HwTQX^R%FQ&*=Kb7eK${YJe_ zmvFEQwm%&iHZ84}t4oIqGQ$zU)g{7J#tLQ}9p1*Tn`L$AHBkgxtqxo;eJ9ipdrr>z zJM2=!JvISl`w9Q09!;5L+fyMwBr2Rz`BSx2TFD0o{Nm=jeHqOk^D)CkGffR@EUQNN z@~tY~S@B>7+DO3;Gi3U6rcH^lq;3*L$~F5FkA(sb zi@#&9X^i<5mowO?>NU~)Nv8&^h{FZKjg2uDAX@K#ZA7=n`Y)6dhr#DUnUHT$TFb3l zaR<(GG;tIW(DB3CMV|QQf!$x2+%%8HXsEr}sxi@L`0YMk?8rxUA>9^|Iuv*uH4w|{HskysLMO%+ zu@l}#)w@i95wS*7)!|Fa{5>Q~%qrOd&rc)5CoF9g2l|3G%~~f3O!(^W=q~OHWHS;u z3ZsXQY->Gf|EKTX1u6+nFMBK+a3bHB5?$+G{=paR9`?6(cEz^Cf6r=3$`KinT7S zKv72(2`2}baz`WfT*O=-D)(H;9fq?o^r#`%f}8w%m25gpKya|1jaaeYCtnyY_pUij zLxSKr!|;XOi90NU-{cgdLWi>LU}u;X>;9p79cuLkxd=&174V=HmW&p{E3C@&5@eX8 zxEg9SZ)|6jo$DM`3_xEok?v$$SlskgU?P5etB_!eCrr+OYLE#eS}vdtRHP!z%Ls@t zhUH7;VFRdx|NMUIX^s^|wEq;$`JW>8If;C zqHul7F=0Vm+ja`Mhpv<@<^)tv&T4;pl%XQVl&5FUAdK6H{%MbIQmq0#8wO{?LEGV$QBeSa9b-jrEXzESLD<3n@)2m?dIV ziVi<{C}__8L()t>5dIE0AiREn%1OwS>t6Bi>O)7ty3BYkMp(&ScLSX<_F0vwItg=bhsjIj<1)J9hC3f;>u zt5=r3{iXL(0Gsm@X|U8%OtVb)6q2V9h))hGvlNCBa{~DzqJCCh*05SR_NrqCIl1C& z%@hLI6VY6?%-u+H3hbMQuWlq=_{iDuoM9bRQw*4*IX6unL1;LRACIdOh zry+}GxM(BAy_cq*U`8fZO}(`^yW@6K2EdHxX+(J~O{&$hXA72Sy?x`a!0;J<^&6uP z&g0q|x_10f8Z^NbgKku4rfonB!a&?;B4zmL08{lxIyz>Q6q@#WQKDgKc!wAvY>ufm za{55;Py6yjr40X{a!G=WnMeP$S1A7v(P``it&@@&NhR`(Y%Ohsfb27- zRy+=F1at=8h;>3RX?!b!Nic1JX;(V{VM0ZPg}i6gQ)M==;c>*~l27?eY0%D@a6l)x z%qctl#D`V5DnyzQOXfT-P#uTJ|2!K)G`4>_`bgz6xtVAY2pu5C4Jy-7K_>F*oa&~V z<rl#{EC*0Ql-Q}Khyu%Z*n~HQJ z?|}*fNnAjD-^pm{S~cuv;9O0jSu9==J23b$!|`!qz=6Ihokl9>=iws_ zXD-6zW$LprVi{f25d$1ZbwuLCT_yIm;7RZBghUq~3gb=@U8|jlMv^LJB#CTkFc77Y zRij0VfqTu_SCm{CL|uq$?}3a#7UQ*qEZfi$4^`tLlzuz<3~Fh6CqyKiO(D24W|LD! zZk8Ie|Hf=fhV=vg>A@&}={n|F3$(wkpNTe7GTR-2(0yS7U;70sTF;9KEPmO#;0fILxrWH-- za4ZD}@d~EDdDo01y3@kvB64Iib`K@1F2-iWnE>YOW5T*TlQKV|$c0ljZpB2A+v8^S z&Gf*>r2X6?5?MIpxavNR=?VAOBf~=}5oDa&p$1uu$ym_55Pa4!wH#xPNYF5jElR4 znz@0Z0iv}`QmwrB9aaqavl!o#E$%ff5)C|jle>-d7mU>E>8hzf3OjffAdrg? z_}x4DzDbK?e!luM4TpzX@h2`d2s~gs8g@6d;N1zGi*!d$Ib3Gf|El=4JCzmxu)%4D zSl;8b(5S`l+V3u5hPYOS+!hwozjy39GkZ>}IQxmqca9znyJ~&&=&RV4wcW-)3y(aP zTWTK#)D^yId-`PAYuRh|6?Ja3?Zkr8Muf-_FrkpBuChXKgoJFqsiz(5U;Q6)xK@J^ z4Qblm{r>CW;!rw%SE8;=zf*k6_H$pZoGW1~WoegpW(zDR^w_f_j1xk|K{TPO74?bgb;+4Mfpy&7GLe(o?GnHw7T`h)#Q zyX>)mD`&re0YdJdjHuThI6AAWZn>$sIHXca2X2GbvfLC{7&;c*mx9}MQ6lwRt?DPy z#_&FOr@K*`-@fC6q#t*T!bVzH7KJn@HGxLEi>aTcX969 z%qGZb7}-VZs!)CFvLzGz6rf0A2}^a1Q@_$c*>ASI?hB2SL2S@6%B*&CaV*;r)$Xts z`{=V>2nqr3q5x-<}PnHL74@8(Z{}Ya@3wm#XM#A4yGX)il+c!pIY@1I}_LD{# z`X^ueu{y7$9T4LNd!ggKmh7aTEqcQxcHHWFbdZoVyfvMwp2Aw!^QukaYSZ{Dar3YJ znd&9taALZSQFND(ykfuTn*_YP?4vrbM7K}SUlIaa5gxK1fb`G!Z*~E}Ci<*LA=a8k z+PQdw%oNiv=b0WS3LCRTLCz+Px!~?KA83K>*asr?p19!wNUt~ z&P{qa{9W;eZRV#sdpE5>>kfa`gj4GO_(xhdbb!6wcyqWOl0}fijN8%q`E?gJ?WZ2( z8EbVO2EH#-+V5~guN74uX;jg84fB^I-7I_A97I`1?-wQrP;#jhu-9GV-mmI!fD5@4 z972}tEf?jj{u!Rx>F*BMRkP%%dZAfZ0o>#)SLr@uxT;dsT%n*$PU=VMx1O-9;UL4= zRfpyDI>(-5GHoZ*{g<8k%ubVUGLU-8v-r4sQNhx?wdXOcKxfq%iT{j**ck2I>4u@U zqvEJg)N+l5iA$XT=?W`saQ@o_d(LU!=@0Nk*&vtqW&D#K^ULz?&Kt=K3nyjeb@}%n<5@?lxPYoMpE>u;dbf${a;R`) zoex-{+lZCey6?tRez27ED=ZFO^EBAB+;za~)M3U(w-Kp!NNFIi-`QYxbueh4k1+{s zbyL_zLO2U)W*}Z9aHIbre_-jjuYcy#dHn?O?kdrNAYJ#1GMb+<_{Y2wR@bFSiY{wE zr&IszSl55ibg#jEw`lf->!zkH*~$9UXoC-QsqF`qz(HUVEKTzySb3#`ly-^aQm1_| z+eDFTbgHULL)BWv{E5ykY)UuD*3)c>2KfU{P4r5|t!|^=HCQ|SRq77vIxncIw%?zK z(i6PkFF`Yz+}^BROw#(6UZ=wpQihwmudzqmSzDqJXl2!*n$iu1c+5x{Y0^)t&);8= zz%4WUkCr)uYe}owDMjP{d%51HM<5~OEEW#Vny8%@FP59gOniNW&3#~oQOpa#v-Kn*`GH~-pLTHC zi}zDNi`Sp|+<7?JSw>cqHoDoko^oUJRt5{71CGyX-h9w}#jjqD-W_Xf$J5axS`?IjJ}m z>%l75>ZRRe=)Ihn;__9uos5DLP)h_+MpCdVPc^Hl0IQd+ITAgh<+)jAfg<@7xenou z7`m*9h(H}jCbZ`HEbUE>F{;jWBoBsW*y(6fQPNZ z-z1Kwv1Z)tl*=&*>h{u-F%5hKoOIciBDkju4ZUlnjdZv%)}XcUd6YetrA_vv{8?$D^1F5W8Z4mRh|dW zV`SkKxzVTAGF05uNn9_W@BKUd_3L}Qv)**AVq-*rkk)RV^R1^ES#uDxQK`av;eyAe zoz%d6H%Qvgz5vN0gM_+zqna(_Ozi!7Pd>=j45p+Ggf#^o1_hEvYZq7oTTFJx&&rd7 zD|C976Rpkg#d2YSfrcxUOS@U?)6QUd13SH3>yHqh7s{_gpZ075`G#!fG#(A(&VF=D z9E&I}az*1Cy80T9P*;JwZP(H|pa#bW?T>n(>MRNBbZ&=D!tW#7zAh_y+^{mi!u+WV z4RUp{0=ShP=ce&!(=5&0fz3yXJLUVj<)>NH>TlelIaoOb96r^$uurhRSyMG7dTexr zKl!E^?u`F%kk7`)z_&n{4lzK|oZwUH;r#KYPG{*d6vtxe{x~gYqpH;GnFa>CFO;S7 z%3I7+*{~p!c)W`PVXPFyizf7V+^%IA8AMn_rBi895>`V|J-ZfX6Q?+|n!7}$g|ORN ziU_Rh@DQ-Co4&_RUI7Z^x*KF`WCZmcblv;2;k^iacvR;*hgZNpJGX{#D1r&rgBGI3 zkNxuEq^Vw0=Z+w?n|;CY$lUQhmo$u7DdKE%OsQ*^Mr&f48waXCFSxLOMAXpHyU9Z% zw|z08X#RYmjc-@5@-Fny;wYS?vEitTi&nMs{d85;z_P=Y8le&=%J6+x0{8hu&$%%WLk}EW z2K|8}X=)N1*$7v{*#tOPTpYJ`A+jaYCW3cm{>c?hNeH}&9FLx-1 zfrUdqLi4ycv-nuaT^UX2h5oCFx2Z)8FKOoJxT)&(d5P0rVdeJHU}e4qA@HyN)OFqalm&Q=_i2=iGF-nw3nq*-h zZRARX8jnp^Z;N%Kmq-1QVJOX1@>n)7!oCUlDG6NFUD|IiIVmgumYVPv{~AI?Fu~S0 zct7h2^T}Gi6zYqxO5G?gmK2aWf&cENm*JkaNjuxDW;hFiFp^M(tR8e{X$Gqkfj-rB z$L^`Ud9=4rzM#|%Lj6Kh%RnB8H3av;(OpHath)e=q$}=FefEtyC|q52sf5)Od6b1( zH19x`*a&ABP~T9*gTpUI`lU#)mk>ya7O&fbGvJSqSyd}=fLPuA-+VYXj%QaUp*M<} z`(T&u2t`C};Ta8>IUHMh5+`7vsu(Lkooo!UZfINb zA-%!*Uu{Vo0jD8pcBP;B!p2eq1>wWx?v`&{ltkrC^}IX<;J5AnboC|iWM*aMmG=t6 z*L)Q``4tO-3lMhP#sPB4ni`b{=&M3PyBdEKz31PK2kav&$Cja_TP}k)M}*h{Vz#-5b?peEl=}ed5ZmaU7y3z%Ln@qi*O^c0ZaY_XQuU z0Lu5Yy3~0<9E}3gt5y9`MVXhvVni>&M-+D+fZuCYR-ErY#QrBVTSFc`$2F$-LVnH2F9QWK@NdNu&0Vy!N z@e6oH6c-F?wVnDW1yf|(oaa1Hc=FV#;_;ZsNPYKgy+*ajuI=?X*R~kWn<_B$rha8} zdOo)DJ{YjXkQcqNm|IdJ$$su!PDVxsUb;!^W7_<@LtKgy7D>V%E3kd^DAJPG*2bof z+@l_sn3%`REj<{240x>O9yc^6ampLokF`{S_dMI*{ak{n6&8l-=w~dAl#}+h*JCrR z8^dzlA4c%7gu5k6YaFlJ`;Iq9XZPkNeRk8;*Z&}ObGMO7NDzp^5k;c7q(rQ?KNUZ5 z1iBLYcqbki3 z73?DP$Jh>o=i2oemd9cTM(RhY_Pc6JHe8{A;U7q?12!#iuge=jce=)NpwR`MX`PjY_2qRX$QUki72-lgoc zyC*6r68w#7vtFJ$pHotzA1moGpTT3Pg4dk13>w1#FtN-HrH{Mk(n>Bgf}Lh1wc3? zI^Udu;r+b0xunhC-{;4gzYyh#Qbsmhv58K&P0g+{F96U-*2ctZjq_4Qc^q_0-9N65 z*#`nAL3;GGh@ePn+uc8V?_QJkEcXYrA=QWG1g4!5yf}gPazt9B=m**ps12?rLqidZ zqeH&oxZGB8vu_si$(s3-i^)ot;J`a@1)y;LDxm@kgR9d=>Zn77=J>Ke>JXcqon36k zt5>h?_ZNZF=fx3yIf1m?+t!f^V{$7u1uiVhvOU?EnR-FWNxyy)+Man6wMClZey}Ks ztca6HF`_xoET;q*lb~t2Tfcs`9!t3DmHW{y_@>h2PM@Xkfx)wp7ox_W+|AZJqU7Fj z@h@*;pZ2!A&o??+(8$>AX`BFx?}aaL=YKTo*`NPNJt~#z+O^9NJ9XQ>U;wO&d3^cx z*UPzl>n8)|9C)y{Td}WE*J4o)x`BQ|0YZX;(oS{YN%OwL_pIIu0GDOv=*ac{lL?kw z-goxP``B24&(-VIKFcK*tlZKC4I?n*PKiED>7w>EBB8F1vXhQ6<*wle4xRbl+H!I2 z$$a{U=136c>QQRdj7;0x+xW31^jj(L1K<}8fu#yKcBa5e ziStWW=Re2VEZWh0of^M?f#Gxiu|z36iR50 zyc~4O$9dHm+Ye=Z#y48#PEa%-uB)4xo~D^JaNLMGRp4v|Edop3um`+n&>PxtI2?1l z5olAI?LT$iyt2X<1Fn^oTrzHE^<S2eqNp&m+U$gr=(}*Vs_{E?m7GF= zvPKg7TAV)kEAa6u`8;wS_t!ckh+-w3MrvV9`3DE6WZ9=GI?3{)Q0VY*^OxtxDdm~! z^ei)SAg=k$&WVbPYrcE;E+R5=BY#>bHQ?*9x?OY3_z|qwXPLI?)ob7Ngpdn8_pGh0 zW2w*FJID_XxYoW?63i=s`}cJwXgHgEwH%_Kg+|v2&-4qsvK)B~k|y;sEKEf5 z`lCyizMMR9;$7b1g)?V*@CK^#`UVD>d3hqadEa-CnIfVh`X(krcmw(nLsctC*W}BW zFGVG<*FdkaF=+=Mo_MdwyB6*K{I1=-mm;FA20A+9@digj&Z~h-tzW(j7ai?>{WjzY z$C)!u7pFx^9BK^Om)?o;(@zO8Wt0Z%Nmhii*n2t5^EIzL^Rs zw+wowA!*Mq-GIz%^PGNn^3)twx}^4Pm-apH2>pA0l?rx*5+o9mHsrC(tQ^h;MtJqR zUxyBR1^1L2$ah|r$%ioJtR2zq@L_!3FB_$U}y4YF|pBy==bRbC2 z)<+w4zVFlaNe2}8lfCvGw_sa@SL~^K2Q6Rglor&yFZ-pI~OzbKvYmD0`e_K9!wt zM7e9yT?}&PszRuI38UL&w5F^1F^B^j9eqgJ=`&}3G!C(Cs5JgCKFO)94J5_L#dJ?a zt)Z0Z;zu@4$kC`9Tqg4ujn8l@-}vXG(e*)YQKvlr=;cNbi`(?t$DJuCwDdT2Ny^= z?5^_jQRXsF{@3@*ewMAX&jrH%94zWQei1r4akoZJQ!> z$>X^GYLxr_qP-VaO_bmIfm%_~Ou^T63>}xu`>^7e;ZkR`qKWnTynR}RL{vN zuctR$SWd3xq-qr9Isd5Z%a{13o;=Xv+y4RyRdHq}e3X3}YH2L%3tCM3 zN0dDrGCvn3SO!&6b_j^eJ#%S9 z$x*-SlfpKXnNPtOhraqyk(mla)W=1X1nZNuQVxdqG(~Y!c1Z5h^Iq@4raH~EqV}V+ zzbsc=8Gw@2V)%-qk3+P%0ZL{90v(dhqi;9A(H{INDyo~^$gJ?^&%3bwjYHSXDtvgk zH4h(OAvri$_c?vzb5=#GV^^^&D;@y-ipt5E1n$W0bM23myO-150ZQQPiUkkHlK|T5 zujZ?@{&EvdA={KG;fB$}qjvjKf9`X>fvbsH&YKp~HOnJh#Cg`iyS|ibM8X6j< zKUDnuDy7{<9W<!l{13*f2Ly&5yke0`l+Cq(6rkcM|Rp=OqKR0|DdVu zdm$|ZWu-7epI>RKVa(9@n%Mp@vJEojbZeO63FY#;Ic1XFHqF8=X!x?0S_ ze0RErLe)-NJI;J^a*}qMTvJ@rzj+GMkk{_d87s~^h&OJ ziac&OJ?KvjX#F4zefsr*JSxb^tRcsppkBZL))j2w{3;6dWA$pnhU@C|4U^(07&jcH zP5_>MKdPsh-yK_AG@frH!OXR>MChNHnfa@k8T%hDz|KCI!`KdAU_u(mzvZ)NT=xYI zkONKCe0?i`1zIInUs7c-A#AU;(TjOxYzk`Cb`Uj;t9@Ma8RGEg`)4lyqAvF1`@yVP z0*kUWs9LP_kiL~aw>ur%6HD=9PvH>}#Dc$nA8VupB=hPlJ_M|2k|i}#eyD;ERvhR_WH!#gj&_Z&zefi@xM-|qy>k^L12Lhwq%@d9fJ9i3$4 z?4#FUD93hd2i9mlSYD~~p%-d@*cppK4fST%-Kq&5Hf~z-QSU!nr>CbU^>pfJe)HGT zuqzr#vJHtLI9s)#aK4D6kai4ECrBFZfrf@bX9{8bm{L&9H@t|7GrpidQOa4$ef;p6 zv~(7}V$amAvL$iX0}N{sywB{+eO5@*p-W&ozU)am!aQhuhS)Ev13W7wWpJ#rI56fl zwPtA5Tuc}i_))xS{xYc;&lN2R)P_W%S+Qtg#ptGgf_Z%2_ImJ$jruU1@{O-x>3NjJ zp++>r4{DuK%NC9XOiJD9hf!D4Se5p^jVX1x0(lv06|!th6vxKi#*-8ScLsxmL_~(s z=3Z_gWGDFR*RSzi8F-%PzpEcgTZ15JSHNSHJ#w73%@@bbttfOG#JC*bDsw0|zFXkX zEeqa=!)5tTLzAz*Sq#*iP5n4{fZtX^Z{(D@jXCX(GFpOUyXW`2E9}70eE3jH1lnV% z8VsCX!S*SduNn(Ol?o8x-Iz*f50DqYJ+8Y$U0)JRV5-Mi`T9DNQ;A!vDkEg+e8Y;Y zBWZH9K>0E+uk}2kxjS8rvXEWvJ!F>~oAKGLwL8w}$vhYeR2fChJzK8gA6pwJ#ne;X zc8Y8d{cKipbkh4Oy)raY4<6DpFntUA`_ZhzqX7*ALPai*npg(!r!H9n)h)eF0yA+w z_NfWIPmz(bst*Z)F@d=n+-cx5_c6))(b$M21Qu_!2#sL8reKzN%O*wZpvHoS9>+-W z!25ALf(d4xuPHl=LtdCNw63#RFQkiyGxq33S^d(Er9q{`?R(BcI%K^_@K6khyS;V^ znL96EvWpsS#hF+8BuiDw0d+TUs}DKAck%bnzg`)x-9Jl0y0}CFKQS@zHYz&W5ZDvI ziBYIlZqiaYDadz-7Rmv?b zN*5mN&2dn&m2f%0m6|#u(}ABQ(t=^#;eIG0isnR#FF6i!w3No|qJ|_SBnBFuAD0R~ zD8~Db_lE{74VSi&Uw7r*M5SH*=WlqgV5h=*67cWy<+>lJTk+!irWkvzzKvfTmRmLB z13wYR>+m&T2Er;kthms+B1nn<7i;T?`M!e`$1ViT*>S~|crOqVT_2no)*O8wY?8)TPbhcgzMU}^7s9|A1IVS)46Kx$G zix~GK%DeTnhh72MV=`2ReDaR6X~hb~51>7es=?{lB=hp}J_eF@~_|(}Wq3 zy{H1KJyv3A)(8n@rX_{Bc?FO6WI_$^-K)&2ofZu`!l+2gC$nn`3NZN)$&&-(A++K@ zn>R??4VJ%5zMRlq7S?0$w1BX^pgmEyGW!wx43mb62bi?bUphtv?e;dk&34qmi7tmj z5mC{Z$`uV7>xe4~tUt$3JfQtdoI^R7-QUU;B<)1v3)%?-1B2Yf9|MuhYSrth&hM2^ zU913E{83z9>%+LfbtzV)YPF7u&X@1*4^33qmBW<*47ddFMDF5etbxw5BPnk}zVPd) zYA0O?%T++gfGG`UJZAmL62i+4vb|2xFlC!8EF>tE-DR!M5Y-n{yy^ht3BqwKn;Uwt>lhl`hz4 zg+uy!)X8T@>QN8v?5;+^K)XKV8IFd!|9foy-vajk`SAaXuzrkG(LuUSEBw14w8tx7 z;?WSw5SJ|H91lv0v{FB)gpSxCH{w7AE>}*DupHbJiB4GOvv|7n zP@t*NamesF)mTX1_u8swpbsTEvqPc}qLz)C-Me=$&~&+x^~5PgG${7ZJXF^M4G-~z zd`vz)#5KAek`~|Z=Lcpf0OwM8{3=N^d$qbToHaop`I<e%;&D?L_w1KN74wvSOFXJ`j z*VhenbuYscgQ#O*MbK}-b@6)?>_62+wZ<@JJy7hVSb(Cbjg5_@?}`;@lsJy4@%M|! z__dyc>w*Ret(S-CREy;N!Uyxu+t~BNn3fmbY2Ik7^pf(P*S1Zzv9YBrbR?IyMz#Fu zJM^(2k< zy4ACS*Pu|urAwE%ZhB^{27Dy`g~h=|^hvd-SpuzRIIfwkz!xL!I{bKPV8(M{bJPs9 zgdF>Fbaqzusr$l(o>T0nkmXYaiBK^VWvv$v)`ZB7Q=z8Ui17iQ9c zX|wlI2Audg_A6MDSdfNPb1CfBl}0j;Y_g{L`?$<^7cKzD(j#SJf_Go)A9S9aHFYZr z!h)tO0>?k@<+g)^)W4Bqg3x(Zj}7k++3QlwKnFWhC;dLWpIN8+i;#Fio6}n~xAb^Z z>c|paPfIcPO8?>Vn4$9u-jQmbx-Ip0ZGD}RKnzC7@^Jb08wAZ1wzPg<4wEqd{?q;P zB5*GYaS0Z&&C^9=bD#wv%GRgA!HvfbU}rl@4gco0%y_oM#m^ey3p&`C`;SZGIauXR{D{RTr67Atp0`{Zsm0uw~MN z)~cfw?&}zc#2STs7Zbxd=swq8hBoO)U zDWFS>590P0^TpPQnU-xa#{pNJjdUJ(*k3pB@y{Q@qze$<3m}Lm8(y~*k7>RFn$6W& zTII_nhrc|i-g`e^>ryxu5>aqmeBFAq{+Kd$sNPYS)*UO47we6fX>$&ou@$Mf_Rh|7uI&9?YWa9)YeyMf zwBzr1nWNH%t45YXn~*JW_%L?Its>9gu?E##?mF`1Iw{#f3A8AuYnQ@u;XQ@s)fwmA z_M`_&1A$i?@$y(4yg5Ra*+i_c8;!NiwCxgp(l%ux!E!jB9s+_9bbIrbZ}|A)!Q$=d zx9{9IEU&{w08|JJ3aah@wm4L5f2yyl3^NNP|u*if7NB%_K7Ts8W{4 zsyn`qLqS*K7aD6>7lbF3aXy)1R<1?<)5sjRyRG)q8B|krDamVLYfDQH7;pT^7ak@K zyDgTc5mS^6Sf8UEI(RhNTUJde1x1JEkga7a7WxphNrlz3Ao<|huV26ZUG;S#_Y8P% zE)IpHCd9?TV*x_^`Xt}pye9vbfS@2llDt*3w|%wZBUCi~>sPPd=Fz`FA(O*aSlk^& zv+f6{v47}DRdUDqRGJ;B<9?tX-i5C%`|K&UXSZtO?DmqX1y~Cm=Qx}}!w%2G1ff+U zbIRA}I)H_?%JO6u)kJ-XmlnL;o9He2nE|Ove-wegrzm>lSU$e0jDEEP<56h_I*X1k zXMkx&{rRoEGn25Z@%MO0BFL~1kIYdVja~DC62tD>;Qoos=>4FoBE7BEgq&BiMn(UVf z0$*e#6U|BOy*M#U{lyWr+Lt*^yb1@-rZX{?nS6YTTQNW=0DTN$ zFb9Ywu^GUtl@Yuu&6=vW$K}hOb-Y~gtzkX*Zu+&4Y78=@8R|GNcIQtP08p zU&tjVf4<`H#h9kGT4GCC9^d)ty+G)s+l;2xT^~)!kgnSR8aRGxv8z6%{RT z$(mOM1m^#~J`3`QcfAXJF;6;5e$V2QO~%8%@fPOpM^(zjJImtcv8(-J1D>qFE&J9aGyUFVywaMIcuZ~h1Xi0S5N$98}6f&>=##Iz73o?z%-&CU7h3F3f8vo6ZP z#pUGBQ6_FG?QVGY?hBA&7F>D=5@lMXM=$joAsr77Xj%#!>|V;Ne4>1f4-)DPdJSdX zxo6Iv?JspU8j)`XDXGY{YuccGDIW2nqYPLo3;bxS!|DF{? zRNR=@j(HPRidLpMQ$W{2?2h{z#;Dt(IcpU>l*u)e_|<^HF&GsV!}06qHQ-$T$-gPv zDKPZROhPHCSIaqW9kigg=9Fak5*ExP_03^NqHty0BaLhhb$QbW*?)J*zo@aw{b%UTpBA?-`gHfmd+iyWZNLPXa&(BpejcggV>s^Ww%` zHWd00t9oG9;O9Q5m_WRZ0Y}ck;{xI4frej|40!7Z6d)i1?MYH??w6lBIyz!1uR~VM zK@9_<+#^E>u*E4(`N%k^z#!g_AE9YPKC7SqejM#a@YMhN4wJ6tMR==lfP6BLsU4t6IcMuwGyZVmIfwE0bDE*tz{nEkrZ@q zYwxdkIxPS}QrOu|9AP6KNfi{>tU}JgzT#6^o+pTPh0|l^Ilz~9R zK#eHP9C6SguNz{)07}>HF@VqG5CpccOPofl0<=2dTx=+}D)Rk#|MpgU{9KaW6bG;) zDpeM6+2Dp1vU+9(fFa}bYi%ZIWIgeJDFHZFk7X4&y$3}AfM{BVvSUCX)gM#+UY({K zY+fU4HS}Mwv;!K?yS)uXu02lPb$w_8xPYJCDu0m`Qh=szE{#w?#h}UaUs(7tZ+`Ri zyWJJ*ecS##DAgo&`htSP+bSV}2eH5>8~E;3(BL+3F;UG=H4Nh!Sa=+g!>d}iEm$S4 zBQi$3y#B#J8^ifnr{`M6u75UTnB9bklk3FO4|=4Ph^^pq_E=xEGrfTblr z+%lQ~($FuL3)^YT(Wqm9Yu8^F96SOYiSq)$61Z;vWt*Av5PU&~~^Cbf6q8HxAe`sJ;Z@ zn8wFn0%trjUW%+VGqj}uYMkYb->n_^zruRwxH+;xFJ+#V?rus-mIKdfX#AT{)JU8J znNpi^ll-2NYddNh~NZl#2$0 z<6QK$PQdjnXrcu;8g%RF(S`Q_B<~c*3kpH{usvd~P-+R+5}>l7eGUQu{gsnC^5HuW z{!X$Q!DAC3BqFeg*o;UnoZ!G?I}_L`^@QuIr_R#gjgbX9R|m!fDo*{?Xu7>tcG0~s z51I|3I+d_sB#^+=5u`vgbz0dCJ7!?X`dQjFHqT!Jur;63xRNyDG!1G2lgGRJe%9)| z*FKFg!LCj>%WPE~NyC7wvBcS}e55K}-uE|K{*ffG->&4)-i4Co9QTp3_A;s!;9?ru zq9*E}i3J=bfIf9E4cSBuSeEba?NxfkW{8_tZQ)V@EljF*0Ap%ziuVt4a(ZY22gKnk z@Ez|t&E541>*s%YXJ>l5mPg95`n+!XOXsZM&J4>roV{Wb^Wg4-4BMSxVLzlr@EVK@M zb-B&9C&=c0I_;qq_&}v;bhBDjR}V7)$cK_{ULX$#W})l+$4}jH@y3Us{T(SZw}!Ah zz#CA4S~O45en%LEganDp!+vI0_mFkXyNXDn{_{2O43@LZeW~ zQ~*JoH3V3G?rxBp93GhvPT+vf1KN6a!^j{gMm=xqQv;;FD3Lky(uJuv5^nF(I30co z6G)||0RhEiZV2KGttYVJ8YzWR-T3?skG{#GV_<)yrQx1(cpvGH1`3tEaM{oeL0Nb@>@0?YC0JIbGKsE?KqXQo8*H{nY2)E>3%gE;`4_UgxiQZAWz|QHx{6Z&f z6Y|(D7)K_@%v>{BQ49{=)9&3$2IOIoCa9Os%p%BsbDkj7ek=9up1@$V+j%1Jo^2nOOm7 zIMDc^06fsb*uS}{?0l!cfGptN{rf~P1}GzMh}MC307jso0&n0<@Ye#Q?hgXEYEL^% zpiE}LfSvp2suFG`bcwt(?oSpL7KQ`tTiVg^_2nrk>#4gSoB*C2f;HoP#_22fbJQqF zC#u({O+jgp4$LeMKpwmz$cJVW1Hd-{ROtiSZD-jc$N(}JEVLk9iSr=IrzPnCM*g3h zozpV#i^j~ap!tO?F*c2d>q1R)NPXjbrbeeBkiN#3t=h@LDC6LVt-KyJy6BwIFTMgmJDmU+rt|G+^9+(<2f)~9ie| zlN!|@U0k&Dwd9S6yzi-J^^ieM&OpQR4G&S_?k~BI7jdX zL^1ZVI#QjroZ)_|D=81WFmTcHuZq2x=prV0&IWw(L_26-J$U%4A}#lXnz!E{BiVWm{2muZrY+4k%+&dvWi=_m2lC)PpU{ z>++|>f3K+r<%Z;>ojywcdQ~mz{#loF&)&T?wb;*jt|i1q|6Z=j%1VvJ_5qvNasR*! z$5=yGMR?zyOP(M`kV_-)zFxssPWC9eJIZ&1PB30?AoG83{xtTF^>{ajZX zOf!pQwa*r!bgEuB8su6gT2+Rs*+y7B&Zj$l`ZV$^ec`mFZ3LTOsa5j~CzkhId&sk$ zj98Gm*0MoHwH-N=PqBqOq^r*l!y~wI7vIV{HEg7&1Xn7$8#_bMhKgo(+{n1vz5fk zRIu38cs~88Pm?qMI{V;~+_&@8duDyroZ{B?%7J+8!~55H%yRx&!YloDCW&U(JN;;m zbX6wK9Icaah;J_Qo_{}x+ zDKICmCt(S;Il<}Uzb=B=dbTJN4F5#!Xp(IlY{00kV6h)h8-DrMsH3sc-xyT)unXo) z2DDMPt$izvW~2ncjo&MkzTPEY&Y|6O|7~}~f{Qurc@k2B-&o*Bj40w^fKJnA|L1~! zQ^5n;PWC@x73r;JWT7pbO^Fijnra+9nyKWG9qM)~$^W=TpDdoQ>ijT)Ngpj~e zdzZJ&FYPr>Lm>Uz{%@&!Ot?2kArC&*u@rfwoQa{fBa?nAQa+6_!c$lv4tdvqe3@B= zA?{!H*CSMJn`_tXA4?*9M+~g7EwsmxJ&ESaG1nSec1$OceIktTk}~k&rlS0wPN;>Rs)g@ zIYLi4HqAintzt_|d|j~{d`x}nZvR}=lT(pTPJz1^xls}#EVa)=nbpxXNkDWdf0gE+ z4CvK$HB`lCN^r}3V~`iUaDxr`i8Vx@mo5xUJQA@f_~_2*DR)==lajvpH_Z&akky)Q zmpgwVg(l>!E}C-Z==}|Ri?c3x6<`)E)O6Z+Wc4iNs8(=?8FHJ%dRop=ak!v8M|R6C zX0cc)g1;-oDxF;l6FYtnXyUl*Uq5{b=$98k{7}8HCs%@Dj?C< z?BEx7UIQKE!_wF*Y%0&ork>kV?x)Z4FTe9V1GE{{o1T&$c7)!qRFe1m73No(=i0#1 z5}K|CluzF)TIA;opLcvyg$baUt&G4ivtJP2v(iy(;c63q#qG{lLeYdL8xif_1T=I5SQ16vX#3BGn39X}K4x+WygJ<3lZ#xKKV!3= z)TRy#(tDZyS0u_G(i^EdiC807Ro@++wC9~>E{4))X7?E!ItAtyy%r<7MWt;gzIp$m zK6bVhOB4}LBW`8$rtp{EgrsaO-`k~niv&|p=MdW@3Sz!;_A*N zryX?6d+`ECD;q4POz@nqLVXoyyos=0S=eqF=8{NZ7!KytxO4hdO4;wshp5Tpoei99 zbdVgm?aE%{ZO>?tD%jA+(92d2Q=&r#&m{%T+|0K8j))U0N={=mJ|lElc3a$h_bdKy zus9vV`b2jk>DLpxH~jADL!pBOF6Z3abj*!X8m4;^-17==gFR!a+7Bwy;0BxS_2>-E zuHc`#C;gTmI5-KOnVre0P2JqB`Ubu=n+)ojG;hVtGOaRU5D*AM7Z$hr!OPJ$x zT-4U_6uqR|&szvrW|qY77au!&=mFOOl+5JkAr0lS%=+Cyi$x|wU#GImcu^ghqJ14Q zj|Vgsld>l`q%#^j-Hi$RFoI)Yi>jRSAc zC=2H0yZ5u{f`?x1)WZA$^jKx%R88A+x=LWVzoZJ;Gltz84Ovk4v`jM`ie8RU#OiF_ zqT!y~w|S%}PgkL)q6OzTXYnWr{ZJOn_hVqUuFU0(+<7jfXusy1pIK%WAP!!IgWB+4 z|BZ$1cG7gAYgl`!$f_E9A^`+sI(mjR3-tZbvJajPhezNCGtzx2LopHbrqu!AgBQ2I zWERq0P2IybCS>o0Uju6b%E|KoF!z;VRjpmLAgLgTw3Hwr4I(9tG?LQYAl+SpNVjw; zisS~7&Mng2UD8Oi>Avqe=lkycbN}Ah&*O7AJJxz*#u#JHwU&t9{i8|7ppcRIvSM@; zgq`G@%;Ifwyvd%ya4MAx3Yoe z$Q0aDY-qap6(I+0pCJR25{Rec4TFfDf?->g9eMvwRuH7LL+U!-5eJT0x6Gj7ddDfFwMezBfsUxmqlXvyipekl6OXm~Ei4+)>!?#q_XMz~EAf{KdTq60rr zzc)*7^;0MLZF227_xL`+1<$LiEPRi<07m-<1%8_JV9546wW{6HR~}xP%|62hvemE+ zx#@c=qj4MoS-Ls6O1=Zw35F@9u$T|uEofYK`bj^J*B4F)pbH(={Vn!>jfH|ClsE~p zj4(*k?fR6#tD$kLe`UN)Q0Q-$9;@a|M^BaPDB3lEMH?*>{C?S$)I&N|-w(*X8T1HRnLY$Au=mbEewg4n8i)E?MjPpFg2$ZsUv z;Obrt$`>cn%jE%WKX7VhwYaPQ-X?{~$tC2H{HEclD6op-60tt6~1~ zafwjH;@_+v6CD|8UsefKz3NW;PgMSiyCD{d=vQ z7)G19#r?r0!OKCd!gCakj3SfPgs2_{R3tecSJk%&_W&S@2O#_~);q@U7rUhh<@c|p zqzL~NA?-sIGR@^~n;W@3_i}QQlp;?yr$ZZ)yQ=)NNKsK3xA?6WtlJ~|Tr9HDS>MUX zCUjeq;!cgFVI*Rm$xx&-iW{*~EZ|YwY6n85Ql*Sn1cT0_wQwPThhI3ySTFD;2AuuP zsw%75dU!$+1F*O`XZ4mo>e6-c__90?I1^@=f(kZEwVU=>~W=JZi9@U%0jf8yyEW!KD_l*T1i6_FFM&>j9C#D4Hn(U4A$Qn)V^wn zZOXKKq{CFmU>xuRAn6SNdjQ4_Yq_Jlp&7dQ2=2OR{4YOWaPs1 zS3xgW3V^d9)e%Wmv@iLzO`H^fa02$^8DJDq8JO}pu-axjSU@SNq4f^)c&Y6Qm;udr z0W-`>-}piE^awuJ%6-n$R>Ep*Z$C-k%xW9^cxjg)$Z?#CxaWev3nKo~*2Ob}@hTOE zodk(7H2)?e8hmavvgALTW%R~(zl}ca`BSjE5iZyLI)52k^^y-Ca14M?UqT=+xh=d& zSSwKf@~s!u^`F%YzYsf*S2jxf!~u!8wVxK3imyBSZ!dT{er4aO2v-VHR-s|Eo9fQ| zJ~-x=Nj)QjR)UmYT1faKEe|sp07CaUxw1u#e4hk|C~|1ioUn=KdtK_J)TnmpBH4ND z+Od8>l*S+=&=3>p1JwyV%;N((ACE`ok;7}cef-hE#a6jiUT3(muYu#Y4R}2Oq|JZD zqbPD-=n6$~PHGHXSf>>PNDu)jk9b19jm6Xf>Qx^;NLzYMj;IgY83=+O8>dJqJAi;W zq^gMwwt?nX`H6P&V$!Gl>Z*seA9ipo-kPg~ZfIt24H52rL#gsO)=Y#rSE`SH%&%It z_QUBHd9*_1$asnCUf<*sbe;?qZ@8$(wz!`qWhUl-aD8_(BR{W0>EXGoSMKU zLL{)kShLalIlD9PeHWC|BX&qic?z=^)1%Ap%HIm&P`YT=_;KO@E)_37r+s@E7CwN1 zd|LT&8K0wy*O-CL|6$VIxy-S4HJo|c^N;}8MB5*^3yL?olXO0ItO_P|bw%H#JF(Q( zc2yg30V2he%MAQ8>=7ZS36>WS+lJn?h&rF{ewX2vooQ^6O25Uqr^&NArC#IbkChC! zfdz%J@l==UAnH_BS-mx#Ya*|&s=F6#VFA^p@>#<(%B;!b=-$PDyGsPX7PNcfxYyOm zX8TeD0*K16n3u{qPoDUpEvGr=b?^AwvxM6zy6`Rqh^F7^?Mj*C#LKWY#OHT49I5%= z#B0u%$LEVZ3{wz0w>t~(M2r>3%@4nn@#nq#+uO-b;G0+PccHJr$kF%J+(Q#&uT^+z z$PHF7VVd5njNj^t3qjOMIr4k)mNYNYgWXso8|qhdYRpAnph-Rje&##*GC5ntcM$B% z^Lmq+$3$Th@ZOND1-P%^2Qh@p-z&{q3X{d(TkjAoa{k7Br(g4I_obk{!eNc=%tO&_ zTNFx)Nv+2~L8sw`R&yXYZYMQTH?r~fa8_E(YEpZQ|I>%xk>@pH2IBHHDIRf)V;88& z$Lsts4%gxZVZjOGt(`uZIeqHzy!RO=Sf07V2Jyo|QZKAPF~qiN-Od$?02WEw(H#HP z8}@~<$$EiOH!tsTV3TY*FUD2BO=Jn7R$>q%-pFMs0s}gMpsG?q9M4L&w_1JalW}8;*+P=2J^to#ZI7lyv{$U zOaQ#a2`)TT*rNdw4~KRxuzC!@T=SC@u68~0)MXazP-aoml&;PFQi?^O&drM&^Izr#R^rD)D>=F84cgd&v-f-J$MLb5CW1)99)5sE2@o+V!JOk%P=ps*ey` z?ZVZJ=u}9OoKLrz(Fp%2B??762*HkpHYtGc-}ZC2^xK5d+u3@lio8}gJ0Pt*OGa54 zeR&it4TzUY@4^Q+jt=7af(fEye7;ppBh#A#e}M#qg(d1O)HFq12j)#NTqo$GZ?vcaP%T{c@4f zyVi;QG)M|u4A3a1=BpuLMLE`ANoCAbZ^y^k67mfUp4JPH(u(w-welP+elI_MQQkH_jf;@e-R3CR_J7E#lBd55ybm2M4`mhKf@SmbEo$Yz&bki837DJsLc-NWMB zOzTpB&?7)ZW|*8Z{$ZIfselnsu~w~F!Qf7zlO!bf08@&`%LN<*Ex=WX*TYiH_oTD{ zbD_54oD93}Y*DfU2S!lbL`U~0k9|=Ml?%9fzqa-6WXSwZyY&Me7O|nQ!)0=a^jxIO z4uLpSa-tb{x~Ggd8dG!n@>a}XI22AqT5P*7**7mQ;ep4o3vIRy*#Z17H8-3d1|VjvhHUo zg9Rr>AeL@UM^{K0V6KJDRHvO|s+#Xz?i}(GS-oSfxnfW2G$FkCx?2{6?%OYcyO)-TTs9JyN~yZ=dJB5zRUYs@9S*$ ztu?gs+Zpxtx)+_aj20Btkl@rpm9xp+jV|a1o6KG)!@ReuAG@Q^|MPWusbHa)<`h#> z>pF~Z(N1SyTFGyJW=i-7NSjU1V*zK(#2}lsG{_d~(w{%%Kl%iOF_N=wl;tTP@TBuH z*CT}Fg@W}H!d?|JIS@NnbS?qqNyW=d0LWAXD;PrtUInatVMn@mD25{ZMV2`@^jy%X~#)icVq6&H4;g`ZbE^BNrdl{QKIwffKJ zR$66%d7vY5m9g(3VzmHvBG;jeUEXE?+sGwnv z-(QJ&>IW+LVxj+pT~0AL$Dbj@xdA@QlqW(*1a4l%cN$}1o9q#5Q^Dg?Nmu~V3;DG+ zExqPA;SywO={~I zaX@_`>~`++)*KJODrI1{DoHi+lP`b{eBuEdO@w&doZc^iI<*U_?i*4E4;KkFj8ZXM1DWLXtAm`+T2m!Ne6594IeDw*w^0<4Y)wOKpFyS2rzM+ zZBS8of`UJSmmo-i#PQTxA~q!vOv&CTg_dSZ1- zS0Et)7jb+?Hc{WJ&jgu)7dixLUg}*-p<+WSWGV3{J~5UIjMxc1b{=M3R4m{`=`Fu& z4XFa@oN`+iK}iDO%twI!4V9nqJ$z$(71`fIgdCd5%B8Y7^@hOzKrf#QpN`F60gnZu zDlI_*=s0i%7G8BCw;~p>h+}SGV^%-P8#Xg0-(a+Z6TU>?l-tH#L!!;4_s?I;AgGSJ z0g}fQ1eE{^1{Q<2u7x6^#NQvj>+0e!(*6!mLK{f-xo)}Df1U!S4*Zz})GBft4{-%U z!H4~J{Ik+yS+S9wfbis2+!qq;931_7HedJq9H*lSyj z>ej4tAc_$r#vuoqkC~0{rhQFpbKd=XgEPobHbbxT5`0-1(S7%7M=4tc65)W2@VhEK z0E$+n1(>N*L02eHnT!o^!1@@)T|aU;dt9SKYKt6hM@8Y*?o1CP!A-Vt3p=U5`SATQ zcVHm}+f%@^2JqXXWd-SpT9;eM6}4F-HQ`k zc}&3lV?Z3JD=huPT+ZS^{i8hE&Z@9jw7-xYX&Tkc86j{RO{~Ok%dnoE!<;?&WD!Y} zQ|cG_iWa^6NIy{wqABBL&0BB+&B2X`PHIL94~Cz(L|{P#iCFYr{b+}^%z>R<^#Yzb zrv{+LTu4n>CRmLKI5$DgucW!%W&W!P%!`$ek&Apg(v(qSSpsv$b*m`BYc1i$D8+WA z*&;N_H{zju`n)f>@n7%Vc(k7?!4X=a=IW4YA8I7Vj0O6g@J`49)8G04)bm_tW-6{n z{A(8Gb(d}SP{qjjXyP{k!50$DhYf+E!l^SIK*>%vwGe!tN~%<=Cu}MjriBxxP*>Og z8S{LS1 zx6uKs=+zY3tYf6)X%8P!a!DE{M!OwHd%=*S~xzX|E!-$iD*U@DPV`s zC#tIWQcV-=v7_v%;6oO66D3+Tpwws%=hz62&5GCj6}|pP(Lp-ePHOWjJe`(4o(qV^ z&iinneT=T{e)2zk5>W#WgfjB_>INn2GqA;O522YP58|cmZg;__1HV3ok6q-vRp2Aowmr0dSt@cgqhCr+Bh~nS?cxf$_3g71bhDdbE}o zUUy0>PA273kLwWc5*`4|w(JD5l#D@@g4_Iui|t1M{)5VNjDWx9=D~HlKK$+64OP{S zf@BAM1`tG{d;lpQA_wG;iQ(V1g&`H^d5_@c>6QA~*Xl(u2CiSAq`nmbfPDeh)&PaZ z8=eUO7%SwXZ|Z@iQMkhyFApY3z#;L>KI9L!tSWH-r|7|vif$x2hAH_-6;uRU-Fr^$ zB^(j@5FfC@eUgwp75Jq>^GjV3s#VUn{s84hOn)74v%!Z}mE7XiH+%<>o z!VC^Wr2O^YZ5qkq?#F+J-%mq9of~A*t$SB3{hI9LPW7d`Y$AGZsB}QY$T#%D1{I%w zQZGw5K9nPYQ?Tppk6mW@UrQ_#xSq zbp;Qz0c8A_N2F;9{`&jkkK8%}=rhGL|Jx|Br6F=fuRnQH5dv94SlCOzMnQg|p-}*V z5PHergX9XmM%n`ZAAF^3d~Uti0}mR>r64-?YL&Hav^Oy{kb*(e=*UJ5{o-%`eC!L`+Bkz=GBv=$jtacVm7e9C4FH<`5G704b#B$%SBd!{OYTNql|^QUfZW zu=xcL6oAB$0=plFbjcnqi9Dy24&d(2^MjapnCuY;2Q>HH2D^9R$z0k7z6h62}e|mP}Dj3jfW)K_RWiJ7Y<;FoCiFHo$AD+PMrqS z(m=%;Qfxu-hD+<<9@Igi-YGT+wHditG`BG6Y3I}o{ zPNyub6^{Q1J|Joz;QUGB?iQUg`rTr~1SQ4=OD}M%QoIq~|(j!w2 z5EGy#AwD2(Z`9mkAo0x`7y`Ylai;v$6}QHr zay|fLHdMkuj|+rS5q=KO_pUY9cEv~6#F2jeTB<2*o@icM0!{;lfsO>poUKzhvw;ZY z;c$COr$uPy<1zXVJNgcsn-EK_JJ4JIjGMg79^>`YEu#be~@DHMFW%u*gcrYvuv_Q+_|k6&%4|}4QYFg z3yNyaX?B6-72VS_I_dT1i`8kF(d(tLV&s{1!Kzfwvo6_o%tdfX~6m4z^jsctnFeoh0ssR!sc{XmC0y2`GP{6lV zJ5m$}?9cX%o-<4Q!S4d4d*pdJjGmTx!1{?TpP+9+HbPUT>~{SYNpz~#2aq|&TT0NC z@xFBg83~Bg%m(-wNidz3{iyV}hDb=c--S!3?luWCj6pro#uO$`nq~`oS{?q!7IeJe z|5fSc0GIKlho12Z7B8x=m=Q z-2Eee6r=+zvXR2+yft8_kMT>VPaQG@VIZ0T%*AGx|H6X|bmfGApTAj93!dnB0@@8Y z(pht73BAyDLEl_K<>gZEmg7JBzDfwxkT0Ns2XgLj5y3sFSHm_{wXQ~3i0quDAO7iajt$%aP~*^kUBm*LWxZJ@31pSgy0nfjk9)R$gaVxgRny1^d18yX)$ zSS+4_)9ACX`B{?8Se4wr9f<{lz~=mVs(1`{YRO^$b_8BxgRZ`fowEC#(;cG!+VL0z z2l(a2)wZxF%#5$7guW?K99Y8Y3DoK5S~VWF7{E);YS-8XNO)L%P!;1=MMOrQX9WxB zIfT>-FK%$id_R4%h^!=)f6v@y0}W>XYeWm5io?H#C1C)hj1#X(WZUPY9}yM-|2avr zja@THbKoP~$r<0nxtf|EK0r9Y^GcdA;Gkv&{f@jde}Y9cu{$~orT3SibGjAq z9>;;%-3%^yqpA6GO_s5V)k%7CPp6m!SJMm)i&2L-{yp;Q!L(uk-PP1Y$@%E%&vk%zJ| z5PA-gWyOrwdBk)@Y+@_+!%VVvEC^{)qbU+<K>d zx(h(RY~wg#aiQk7SI@wKw-oz;Fay2*e^93WPpf3m^b5`!p3$MiUT=yWo&!)2`Og+@cPGFfS%|5UP^aD>w5aLemenD7?Nb3eKSp+&*$VVx-qRy%RvlP^YU@UBcNcAv%20ny9zr(ziAF z2e+29FMBMXXaIQ=C#UEX% z8^>&@C-$#tOgY?FNe(?7C9tJ%6ar;=WcWNkqnS#_ye}(be-P2^Hq~KTLD_-J&@bxg zSg`D7afeJoju+ki&g1j3GbvLM6Jgoa@M=T*Pk4@qJq0%r_&j1VmgE&SxN$)1wKVP}~}%vhTlc1##iY-jY7$jWa7 zp(|mrlo1DU9IJ$xuFq#9>O|W0Yi^KQP*@MZ4+5yHa3p+>m7|opMGeG+)6+A^4S0q5 z=a<|lvOJ)zC3BahshQr3C{9a0L}}}6W4b;4Gp`*Xuw(ru;X_WJ_MZbC&9e*w-g~1C zIm@n8`gmZe(L{WQ-jUj_olnP7xzxur61Fbvn%YasDF0Y?i0$_#k#%~OY0uU7I4DP? zR{5|7V}C%kv9!4yxpOdELVJzwkT;RmxCNIA6|y`c==|fnJb&1)ZX-{N&1@?2%_8j8kQ~2nk}uqDUlo)Vw@@&WdT#Co;LZDW#E=J{r)u@H$ZJ{`AJ(8W zIBiO>Et{GgCh{Kvh#hyh1vy@#@?JGaxe%789L@mHWzs;GMDS_W)bO_61E#k_Hza0Y!rhr z>>f)X5U}4S85TPJbpzuXyZaIHes01MrgB(YUy2UqE)k+{;8e43aI_`@cb+m3JFJPA zw3^?ww|?h-KI@UfR)0KGnoz^0_ng(4(vM6c;Eer(VJ^f_xE|Xk+069x)0-?gIcRNz zSg|DxR<{!exWu}3g^RYW4+3-zT7lC>5Y+M*CqFV%ti?LyELZG|2I*Git|Rb$eUe`a zbydqRgz#0^C*UcXg~zyH@nvQTRQ1WlUYkq@7M zwfNaiv_=RV4KQ7QUB)LQT!(yZjuEb^J8xG(6yUNHrG@hn<4-)5&~v6uD9VN=T0Ec7 zB%7Nj&7qvh_w)tv@estx_U08}|Gm;F)QtA1MCPoHT9c>y*#h5R&Bxw+aDd`B4^Y(Y zu_``5$12$TZaQjG#l%!M?#6w-)h5#Bd!Js``BKMgM$Ly_R($mAvCev&zLEuAQkHkd4Cs?m^7f$vGCu+NIc2|@Jd4LG<(ZF<%iW%`w*Os)9R<#WUAfL-{%%H=MrGFS*_+`y z`;5wmyYC0r;Z6IM*wxP0OM?#Hu8RTZM;Uznr{6~1pksot(S9*oYgb{C9l;@w2|~ik zBbLUqX~TM$`A4wlji6}MWoMn{@jyPZ{BFv){}98$|C$X1`F1RpaN? zt3mR?UU%+Byyzhxs8^DmOe|Kx`&~Ed1*6ILmH0uhkYnoMFul%_iK1X*S^yzTjy;86 z=(hB-HD|F6xI)p!zKJBGuu$b7^;8jvQ+G9o0USPZ^a;ySPc4)yH(#yqK;A3iEd1>4 zNZGbNCXG`4GrHGRy@|;+cbCFASzYY`Y~HF)XMPv;Axx;r&bF1C@ojL;=maq!70O?#7iAdQ7_U} z=5=Ci>{z{t!@Is}z251(#(pgBhq7cD_s`{3@snH^BzTNyU+elKiuSjM`%2};q&bW> zLusj=iAN!GkX`@tHIr^YtY z9{O`+Tq{rObRIrj9p`h>6?trnZS(_-eysI(v=}B2`ldd1uA(W{Ymq-FRM-hYQ)s}l zWEfhSk>h-$3Mwa-UNHndV{aw;C_FIP87RY;3SGGtKX4D*KkQS`(st_>u@|vHxnC-n z->@p?bsF^Z0?h+nnXqJWz70GtLUe4uPsqaH%NHTQ)W&*A{CvUuT9K##=~{gZJ{^17 zeJ>n3s!AE{#konG8N|`RRck{SAtWfAzl=uy(E?W6kb>`1|3eeUsKKxLL>G~NoTvX= z!>;?aY$FxeVhA`Oe|z8;+(RxIOl}-NX22O&KRUj9ivLNutRwJCEXU?>fxFLY81K6tZ&142p3y!vjxX77_dDE?(T#x zp(6(yf)eECB^?Cj%5F44yA@5s;mIEm9FCF)xn&qKI{tOqlPqsibZi5*DPGZi8j!f+ zF%E08yve{@eYOXt+t7rmRvhB^keN@I$hBA6gFyG}@T6aTK!ujS!%^qd!Ip-8?JymMJ})RrE7m9+T}NlmvKk%NGWh+>z!PdW-BDME)(-l*mTNj>~BU%QiRcw z919yC#|r;Y-KS9z!8gHft4d}927$_9bYMVF^^A-0Q9Qj@h$frkXM|Miob}NVU$|UY&?xNfGd5=*cH##y61}-nEqy-`Z^t zUhkd(H90s8Ik;x4(2JO-v7Qh=ATEZwd>AS45Pu|&)1So|muml@igcxu#>+O>Gc%y^ zvmq*$gm=cvHJ)-kRlSdkWdUzbxCGAP`DwI}0#m6~gfygRwnzX&XXV?R#=5v9`7;?D zoV7TMDA&Tle7VwcQIT2dP+`@rr$Sn;1M@VjrpV1coxs>W{CnGf?s{hdR#|C(*|qpj z+|%;wh2&UnlxvTLg&2oHB4nf|TVy`-mac~*Uduv0+rcN4(-r~sI9*p4q_pRkKZ>L- zO|gQBxBhBpdH6Tta_u+a*L<6^VwIuHm@;N=?bCkC>1&qhndx)>K_2!P6g*t0(!P4m zsT5OUh~l5vgD_F*AE2;rqAb$+V;t+m^%oM71N;!LM1vVgG~pYLF6qxbaN!E?81M4* z&Z4^yX?T~DG8di~uaN&y_ztJh!3*^B%@=3ldrK=_A_h+>XLU%&rfS%BW{=ckKg9$4 zEIZ`=@}rFPzr6r598f$3Cu5T}ka|I~^mUZDb1TW_aCkt3=IIa%_;o#Lw=OYTl4kuU zH@d57@D#0tu&x5fcALQ*=8l+HVV6RIQD{;}3j%mtv~t6tv-7*h?m8P=tKs)jxU^V- zx&E!mf65}*26Les^j?z_zEjXOc#N_RpSe@&PyU`(@ttP-*5?tS5GL|_i_cBwMU6Wz zVtoB_N43ANP8Y3G>Tt-L-M#W&rPV0Y+jbQIMz9RFkAuayfX`5)m@uV>$?0HUT8}NK zVwWJZZYZzvyG|$5UBis;Jqq*V1o%d^OVZ8Gi@Ef8mKftvoBidini_$fS@*2&#mSf$ zO=b#PGqu{>lD)pzrNZrB({A;F2C-9a3O>KEPb{F2soFVz>PaJH>AF_8d9|Cdnlp4?05m$&~W`hd-iL^8eU+U zp6Bt?%bl8RFPO;VRhGI)a)N4jZndk#O)BU&h*LQ(G{!epXD>FJ^bInWUp{q2T9`d7 z$_;Wb73iovZ&74Egl4|MOog9B0Nb_7I%>+HAV{j4Iw#3r>n9P>D9@pw^7~%DaMuJL z3{CZn_>on|LA(=*@CzKU{F@V#{(H|{2nwa`Xk~xLO<4(68WH_|CN5B7YcA4&Et2Y; zvF`q{O=@K#%B=C=y141p55E&78^Ro?0@vUk5)q=vo}w z`|cDUvQjB3L;bUyigiLK58VV>7M&NGhbzt-#{zAL8q3H`je%WelZPkK&+CEKmZ03&a9VJ3(J_Ho#S8Wrkc79>9=il z^=by;%qhi>c%Bn{F(x`ZTY9z<2kfA~r}gb1i#jSfUAuYhTy~1#Zsz3J7$cJl2wkBe zN`g_q<7E;)Boz}`S3m7fy+CRAA7i3EO;YmmTJ;bMjg4w84$#?lA96hIk}c0nefb9U z`(ie$xW2v+(x08bSc)~q4N`V4q*DV8jgLJh=kc9(x@7w!%KXq&{G)N65HQ_?LWVk`G84OI_(~F-3Ss)L zz(JygbYnj$xzqpyn$j)z7;kQU5mA3XYXs3N*@T0GXB7h1_VEtAX;Fu!ggKhU;}Ofh zRmaB1TL)>W?WZ0&kyr1&^V{=T2G*N*<{*NHg3dllHd5?Yz7c0-Km|;N%Tl3zAok1{ z#I^{zv1(kA@j0oE^K!^?a}i%AC`A2JR1;|DuE51v{!v^Vv63C<1czF7Cj3`a235PB zV29LPwq~goVWizfWrj7k@5&Wl`#oFm^9kL$sI-$$pf#Hhh<#0WKGy9*BTDAhi`kFp zXvZb$wI*!h=7&E@YDwREb$u}p=l^60hETizJ z^UEfD^Y)v;XaoWFEw@qXRTsI6c7+b?{J6~U6{EyNb;9ml%oHIO_VZ&?n%-t>px8;=kL0eb3uM!>27&iPIOgrL_w zU6s0>&o7UQ=8b!We91Em0yG7ihu5V1ez`ligZz!PaW}FQI(K_MR?mVg+V@AM-1ofL zv`FkNI1=B%nn>G9!KN6_c2@%t|8}yO&wzE6$=Lv$IXe-<8-&RW1I>LD_|iD6OUPGT zF#9~%wg1MA7}mVI-`GSEu;_857xM6dy5CLH-3xt|V)cok1?Qs;k2`wGUIxJ(yM>u^ z%Myb+jS6vo=P{0Q-_v8X@w4&Uxrg%L>3ezLhNBC!d6x@oC0>$!=E%eh@GI*(k@8~( zB>{>fBdmJsqHQ&iGo%CCQ-^ksa$4C`zr}f+?c=KLGWga*_{|vn@WJtmraWy`;j|1G zSrp8zB}sN>RYXQW6+Gz;|wk?OCqGwZ@Hq=%V?h6AO&7MI1`32#jA8mD>r zpAJQ7-c@Q;oEV+-R4wQ5V*hka+3jp*=nCemvX@1`vu@WjTaR9w69!am>~_cYHz&y| zQMg%>W(lgY5bHnx>*$k5%pSh>#c2Q|=}aS!Zq3B&yo;}-`yyn^8w9-k^EciVF&!C+y&qzY2y=AQUpODp*K@`nQMH?y%Lt zT?7;7{>U4z0;v~_7<%iJ!ZBZ^6(jnDTBSRTcO5iWRK4ir*bRP9j}kZXFsph1JV-4y z|Kc|_tf<&|qLJoBX@Q%3f`_zfLow-N?+OzahY8oY4DNYj3f6^}oZ1p*sanl+bi*(k zeO8+oUah-jdb21cLXT>OH_e1OJANo2@gM3tkt(j`ob+%?2$`>!6h`ciRl)Ul5jMLR z-_HJ-fdZI;$Uo-w4ncI)J@;ps)(+8=%K(g-C?~*OxlbbcbdP#vr1Q@gw2A`&{-!F| z=y=L&7PA5zI*V(0ZC-thjoMcGVf0o{>p_7lG~SW=qoRrNLUzRWKOKpbenxq@Xd}t> zF27fG%N@I0&&~G9JVELN_p?*e@0})lNV-*L?{Nd3o)zgm>L7BWWNZAHjo;@o$RvSI zlm1;|V*Z&+h=xvACU@CW%l_ynx^UT60(|l>P5W1`u`D29uU-*-jA8xG7HdFH88$Zi z(}>??bsL{1IJyxl!S`b5{Z|V6jSPG=D|;tD@!W*{9zCt%v-o@>w~+jXy5mZ4GahsR z986CAJf0a#l$b6KZ#f3th}jAjrJTA|XvIu%;>_V$NX z=3>IB9$-;rf*tTbHZ zf0}Dp7dVXVc$-w|NNOWuiI1o4O*OQix?VV|!;48aD1}Qg2R4LXV0=xKHnE*~KHT$? z%@2D57Er&KMaFufN!Iq0R#yKN`^^nBAmbF;EvH4oq=>a&_B-i6k5>G;w2vNuHK!B4 z+xdLnpyNGpE9xKWv0}6DX_is_{!;?2F@QN70Bq&bcwSGv>z`EDubWmSpj`4JE!Lxh ze=}`1DTD;V16Th7r5SNh&-q=r}U&p~*nSAShgQs!^ ziY`KIX9rI0^X;HKnAb}6(``Fv0vnSCbPHoUyT6b|K{~%kYjb{m!(G$6+rK(bKGdS$ zD=EKT-#DK|1?1?ATI1J`cx^HNh}Y|Rea0gtjM=eF;h!IbXx+T`E}L4@_$4uKcsK@~ z?AF1YMHE%!ozIDO8Ek6z+LKDWm1UXh?~X;_4d-d6lcdh73p;JB!p;xLmjL+}9ep{j z*^UjX$3;OOX$RndP&+#4b{n-Ij;czQw0{ZH%i+=Kgmrp|hAJVVi43zE#1bvy@gc;S1wCFDyz%yLQ zj-I2Urb~K!i=od@&FFm1YnX$)DEDk*-s~O5rJXS%nLS0UvT>_kR z0=s!)_4=O2yb#`*g@We8qN~{xX^HvZ;A~l92p3i!bDI3Ffq+}u&0E2j0m+*l0#?ce zG_xvT8_3UJXqIQ4u-pGG(3J|4+XLvo4d9>Wtc=nwk%a#A_c>qZ614p0Wq6>r?=J#= zoGQ!5%cc2f;l^sd`tXFNcGc=Lv|dMtYYd*x}JcEx+>+auB^JBAm<<@zQasdBsPIS@Vt7 z1bksGAz||oiAI z{rc_PB2q!tDNTMJ%JQ99gYY6xJJHYDCruCzysik2VA0x}IUKgcadDH73VCL$e1=Ib9a1tcV4T=bCzNDxSgjs=O zHacWwnTif>|Du5Kl7roKg^A#6057+^YzrLPbjj{YNJUTbA?Lu*C6UqGHk|u_Vz?fm zw+n!JyCCwKd5RMV+7#dCuWRybI6!XbYdlj7Z5ZJmcLRpfIiS?+=smduDD#Jp^Qmfk z`&YM1<)%9dfbvEHq)L5rO3*$pJL^lb?{Gl^=FV)f-POm)b_=!3s`~Q z7jOdepE+KaAoC9V%g(o*sm=g^Iz%`uDp%5K!!+8FcJ?a0*L0ksKLWg`Hlo)g)g%cJ zr04Pbq@u|ubH0X};G6)AD}OVA6_&b?q^u}TA2;I69Rer>{cFE|LH&hD@`qbt$zwE2 zwps$2Gics|gO+A;mu^j1Vx^I1kwXobkhs_SAcGm)l;Xq`x`YCH{eM-dhZN?^6tKKY zAosVe_|UTtRSAyyG@Z0~19L$E{QH^{h*6M|3glyXs6!BX{cn0QIk6??C4>zi!~+3> z1xe_8&Sd}dk`&NF0lofL^QIFviklqZ&>Zx1c)&tr5>S!;m%@PN?%z1LW@ipUGsec? z?;jt&0GxFXNeiZ-$5h)X$LA90?0;kNhXb2;^rvE`y3iz#cP zu9G5L_BrMluIFp69USq`WgZ@U79Pl&^QlWy5u<8B)-1(*M)T@vRF^2y{ig!dA6RJ3 z3=0*{_Hjp&wp=wm82)~%PdwWuS1eK;SI;ThqhD0=<0ZKJ+GeX)MqJuCRvAtYj}604 zioqpY&*7LeY!yV^+{19%l_PDQJ9(%`E?|1D9T1mvKssAX}}v9*^W<@;Tl+*A6H;{ zO)^Xpq?kd0skP5p46-AK4vZo@b?QxoiCDeH3gTw3_&A+ZQj>-6J2YyTRmCx2g5E-% zkeyD8v}l_*s)8M~?WU^MFZ@$9jZU6i{T{iA4#Sp|Fnd12rTW9JcVnu~uV#D&Hv5Cf zWnGc?GAlnNwA&vo!$4v^>YYU_wa9*HES&NH)mmS|%eT4CWupDst|mL-DNC4VL9 zI+};7X0s`pB$2@3H1+K$y@{(y$@t(~Zz(1)2)j>hsgeB?`&d9(exmo9CihN#_i2~= zdwb!ctXbvSvttBmeGX=d0dr^ch;9LV6v=^#y|!VI*(jD0KT@S!h0l4jc9`?~d`?jK z&)b|#|t5elp-u-1q)=9d8N7DUZz9C5UNx` z{Ul=HjlQgy(e@1%o|;Ff$oUb2;BmaW`bTkG4%O2uEO+DL?{c<^bO@U3z_V5^%I^hV zm)p1MWMr?W+teo}W`wB2wQ0sJ%mz|FX3nuN@?4CbaeMWCV;Ey)wIj;0&$s;cWZux_ zj8^CwVR4RO1gGpFILT4AXO{_U@RF7$`{FO+oLyd@J7A>o+3_^6fU|yF`m+w@18%*F zsv{l5?6sksQ+Tdbb%zPCNEW^8FxlOhx~U4P3_92>B8?oFtDAstWgD0W#$=`DKiQVBbSKY{skfC$;ju5}o4tDkRI|gu`z&#todXwhy z?JghpCX*2!^BIY+JSXc9Mi^qUS|&sSXkm*s*`H=QnHy7VNiS89lx-J|?T2w}XAyP4 zZTKz6MNdZb(Mx#^mhyVv<-g(Dt@ugrkmd?| zc%ndL%FJGjT94n@Njy;XgbZ9ysBHRMlqW4&SXM{a{kXC{|8r>bjf##2(M&>cElL@WW z@R-CjR@0VHp?TDeG7QT03O6r2_jdSdvfILZL6#SALpt6$#DIiUs?WG>*>(ovKmB|K zaQO^jW`sm$Q4$ z8kZd(5$a-*j$Qmp3nUa26@onR?es?T8%4**9c^;G@5OGVTFZ2v)#}=BIP`~`S~`L? zdP%U8`pwhUcbia6b3AuhgPYB;*1o2#zqM6gr&=x86zk&cP4ZqkiVb+5O+TNt>dj43 zVutzHoe8)D?$ou8%?%G^)W1HwFG(OST~**D4;gt>5DeQ>{A%*Huo?4###tc(%oK9l zzP@_H`p}PG)bhV8v@NgIJ!dc88O_(k|8A&1G|fZ3mv3mq+`-RHy|_sj$6h0V@5~%}7$@;nmBmwfChTC5Bo@ zt|>6H^1~W9I~*gfwNE;MOqS)pXIByY8ou9jDRR}w)Lxe`I_<2gf%Sk=&CvW(prT50 za-$=qiRS24W8*1B(95S>rb7d-p->LIIMxVRlC8w7Rj|Jrb6mijU5C2`+=>f!d~@H& z)R2)}7L)#Y)RxC{=JB1e8Rf`zl(JErK_j}xOt^bHxY+YjXzI+Ey4qdChz)H@xpdkn zPU(_fxH>94goEwL^itDA!@Ek+1dP@RS31hOGqKHLxa0+rOT$-!NsPd!vVVYyd-xNU z)acfv+*I(|v_b|`WF|W23Os4~wNZA(L-~p#`H3fn7H003hc8~_N^HAt+P)tEA{Ihd z|I@=PW?Um_5@Ygw`&l!OB8uU2TizaV9usrp{bT1aip_XSDw-E#AE-Tni7k|E`XS|N zLTn&(lGf>t!P!V3n)D=SDQ!}$x0xkcF}k=(6=>?~JLy7X*m0>Dcd)5VE0?M#TrjZq z=vX)0dCRg$iK@cG3_E3I+zQg0b~5hy2h&R(8`;8jGs!u(XtWitnZ+nwx$ zrnsb)gjeU|-@$`t((-)>J~xL)h0X?vuU@vs7N70%1b~~+(Cy8$#^^;Ym7QDeON%yN zUAZJChl|{0X$DfE#<4r{=48vidhLwQyB~CL4i3b9RXMyN;*U+C+R)_~?C^eZNgUh= zQKaQw^*|__2jT4QyhhCY*EzWOGh^IroK)a@58J-4mtMqcj*ZPF9`Z6WP8pqKOvE_c z++O3le>ZHzZ>qyzrVHr=1_i=eXMpVpH_R3(w!eKDC4K9mQv)0kI%gx*ujtO7wvo3} zjC1+L{{H@aZnth`a(l3cxbAxTVcy%{Ywuj=E}nz%di*EX7030dFwC=#oWJ%c_9J=b z>8S%U6yhhTxnb{8@Dl(*;{nie13&mZ5L>i&Prj2PbHRO$1D=aAO0MVr?FF1i;=S}U z(b1Nj?PH8f|EepVUg~L zp~R*e_$~Eg#wnAEtTwJ15dHn4XJbE)hn`=*{6b4W+{6+b!_T0l18%PHAW6hjnpAM+ zE?d&y7-UM~z?5F;1E*4JQ-_DW-q+FbMIX^0ktkHz?si7j?I>12lvC~=b}!(L+4ww# z?cXvDeASFXKRvo6fyHj%h71%n7nDyfmMU)lqz%ui=!0OQb0{QbMnb#^qG@^{bc(ql z(da$EPX}e5fcOgE^ZpKzLWi3$P;WV8&l1e3fWg#E&{5}xxdZ|d5V}dzfSQa3bePwb z4vk!7Ke=eDBNDPMT54nh{!CVMvgutVLauyD^j`eU%d@b?5(kTgP!PsQr^;V4u4K?> zd@m=6W!9z~!D)gqL!_d=MCGXRp_XfTi`ULjW4;3xjh@N#W|5+v@CV?YToqOxSN{nd z&cY25Yv*!FdLB{?BiM;{G|7frjp%V;TO(kR^VQmzEncs`4Si(og?(lD~PV zVu$Y^CU*cHo9>bMF#5l^0Dtq_*E0X~9OB^q*Wv$@Lu}sjZj57n665|mC#)jr5+y!F zlEt|(EHCifJG5@fk8^HD5dtJbUN0vjyPXaA6P$Y<)vX4EkRmNWgdoDwdhE=xnk{$X zj_2Dq(d?tFf=u{0Yzp+6HN!cR{1*o@kF&$Xt(@rj8yl^R&OL6Nep@vU2x+qEQdNO} z!0*{qtQ+d}`9Ai2EiTn;+A#Y5@a1!zi)hm68I`TjCR zcAbLHn2gRahuT1fA6)hduZ9}g?&m-a@M=G&ueV&2Sl`Q-4SR(}>KX)1bJHNO`u(X5 z#7kvtsVmzQ{J!$pUiSSBBbb(gj*|brgZszPIx&U`)`*!u`^rKyh4#wEoYC{Z_MoY4LF_GM{k?-t^vdUt!S z0*)(gXU9oR3b;z(ZMePmtXO0a=cL2T0{?&v$rTCRKJacAg@a5E=)9O#aalxPipIrx zL~L<#UDfPKoHDO{ajm*Qe9AU;=3jH|<{{d4^y^#6)s2R2IpLtV;t%f3CZe|=Yx>R> zSs!zxHr`Uds4%2pN9=)^=m?QH%4CB+(qJQeV{vxgCOX6kw;(2!AZ;U0@Id2kYPLke8{{Q8Wyy7 z;XLu#FftW?y(znSp{LZPyNc1QB4b3rUyrDv0JRmxMRbH~g7Y9se1Ro>f2r;Z^=%!U z#pr(^E9{6{aH z?Y{de_W2$RVzckM1^WyI0$qK(I4I`MXA>i!d+6lz8e0I`=+HADu8+0;r?gb~EvfN+ z?4n$wTLT=#!kd&q%JM_Er&;H0^F5c@osQ-2vB+hJ*U5A|CwXE1HwslL=Cq3;h0L5+ zHI{GFn{o&stPE@eJEpFacsut_T$M|W-j~zMxw2OdM7&@8#r#eWgHUor!FdY^`C%_% z`_8e#J2TTyF!R722Rvf6#?SZ9J{dQRdX;WS_=-(ww^&*jy?Ud@$~!w_?$Q6=bkx3p z9R9COAaU6(Uc*=gd(O)FF{vNv_CO&r?s7_040q_kQ{ahkK-3BhPA-ST2sfjX0~!#7 zvB|MTDM|SS?}#3&!uFrM-{m;PX;4~W%WmXrY;4xV#Srlst3l&%FD+@7HM$~Je!<`~ z=Tml90`O&+0yN$HR?0N5?h{|!P^%XX^G;3y_E9V@=L#7jyyUANZH~6w1rIS{C_q`A z6C!7V?HEwv10eXa)#6>D@Q}Ih+6Jd;+Jb^!uZq0=>$R5N;^HFP;Qdi%vACax9>|c8 zR8BOojoAzG12XM-!{=i7SC=d5nUgXDGVJfb%h1|=t&J<#LkChDodn$wZia>@EJg!l z{4^f6L#>d*?~k5!JbgOzM5QX=iW&T^YNvvqdJJZ1v~qdaq6;%vcCQ#!nhr>fyBcJp{HVHymE zL%{`(xQfMHP5Bz!8h&r?K6zPhqhdc}P$fzgRq6*@OvD+Wq}JIh@L+Rs@CZWEO5Xz| zTn4gpv6GA~duC~D=BF|yRfTZI+pK~IMqmPaJEp9>*plmdFgpApG3;>pQ#*I1s}NXA zaEH&}0$>^*{8mICV@u#54YzJPkM`ee4FwuaK9Hk)lyNuoI6G@|9Lw7*_BYNq2Uy{k zBY>gP#cm4W1e7+(EID@vSAO8 z&*(l>|Lfx7=8>SW%8+<&Lj+Vfy18pN>t9cL`#w ze3^RO+iSN01^WOZSHU6CaFVjXUU(j+2{70}>nTJBtOd9Zsokc19sw!$AUw}YI!rmS zF~@W*M?!7pJrjReUnBa-P-a~r`GXmiGgYeGZaPW1Jh|Dv;V596$dn7eA=K3{M=0vD!MSoq90W8nM!vXC71o(B8vF;j)7oaxd1;YM-b(XuqY^ZrIBM64?lg0*BP zR9-QUnZ6qWYz#iU43Spf*1(qzRU%`K)XE3`7#t@4ph1x10}x!WRm0!5S5W;pcGz^S zY|OvQDbE#)mL{?^Xz`C>f#a5proi?qMp13mgO5f%thz+V;M#Kpq>Gz0ElSH+*o1Hv zB&xM0nrg=&NYO_iKiL>@6e*k(DcpY*tBu06SM0c1A4fG5(B-R3v^f;G;e~o|&jFT) zrW_Zm5Y__%h5moUHUAT#&wp!3kL)g_$GKJ*0X)Yy62jUxq;Dju(?^Y-%tLwPbbzOu zx|t>(tL?Z?`Q3A?K5JDj8I}CR#9uNCoeon!GR^vPY%ofL*4*Oa(tsTZcl@3Z8vV|& z{+wq0vR(^2P05ka{CmC8r2VTg#|O?KP!pgMbo^lW?h+OYA$I3IH_Wg-l09D#mnU?D zG(9}k0)sPTCj+sP^BkO@K0#;*l5Sc8I2&6CTy$t)sR+L`SO#Gqxs*KcO?V_k7L7>6{v!yWyV+>!&LXvE z9YCXN3nvT69}Rl}fzXA`aBHmuXc-jRo>Bu=WAM*2%3B94siLviw-n#o*=eHXHo%u;6aopgj0C+aGjqfx6M~K&gK&` z&MT^WQE+7&Rv@6@GFG3&cHab;!TuK=7oLh$9TqxDcz5CJzVZTAWZD<4ofU6o4TFWy z@vj17G-%G@tgID+*{ZPV5*gfRHa`5lRs82M^?e|K1Xk-*0E`WYqWy4y{IptlnE1mw z^4%XYTv&TOf|)8mG_KI+ZNK2B+(B<|Pp?s$NZdOJ3Inx&CzuAR!|`hE0QiF3kGIR- z@6QaWP&yy2vHsqqvHAeAVw$JxyGwA6p^0F2@$cJMF%iEX1%f8KVXGE}=pG!HzNRqm z?a;$2CNfTSwe8WOnbAJL7_7i+xsPGNqMV%o&)ME#R$Z$P^UM@Qus5ra81QQ$%C$&g zeHJiHQcELE6@D1{7^FLD2l||Vc<_7K)zZ5Q)Z-ZYoaJ_hlxucJfwA&~hsfclwu7?P zI98yMu=kwXut$v?u;36n%z>X;%UzLpJ0MMd~?q9D296X6JBQ7$%9Gj%_aMK&PfH5n&yIXWF5C^%Ih;S z4wwC+DxAUI{#OGH(*a?DU*-|i>I@szNzJ7_!XKm(zngb`N8h-xF2$@1iaVLMvzhmy ziyohSkw}v((wormSKm(6oJV}{M9khF1NRk6ZQUXMxqDOx6>7ppUYoA~m<6l5K>`QO z1i<{ubbq}ITIX~u`lK1Ws0NCf)HDpr1=)ZD+jeTob=a$OHpTxccEq}<(I0x2_6gZL zn3UH(1GWoYzOB8rVM9{sp!BTQ3r=tCN+Lvr1E`%^13w`so-I=T=1NUvK5y>|Uo?d@=DI3SRx(2>x-I%_&Xv@sEXT7?2pK z@()y34Y3Gt{~+~(!Q$;KlZErq%)9pyLZGz7M*V~sR9*|_bKB<^{9!j7nA;RNniGsPbpO?pRs9nu*&$vpo&r00R%7^)&`9xcf))tU^tAmY@ z{9L@DfHOil1*B#39DrT7ybf{}F_NFkz=k-QY{NmQ(?v!oEx=ogys80=(RFHLH;=!# zzaL!dYlP|z5qVe&<`0QLmt5s~4g(YH7@a@8xw}3}{7Sd}bx;TbS^fAmFTZZ`(@RE1 zwHX3{0WI7d+l)<&ow|m3gUWF{-V~@AS?A_p-NAXFqGNf5m(=tMO5Ledwr<>Md^bEM z;74S!WU0qXb8~OZKL7D1b7*YJ?5M*7JU6$Nn;cuO%jGzKCP^ePK4X(FNyvX53{to( zu(T_gLk_G69}4k`F(eJf^O5hG@6t)e-0(fQPtt01Ly(na61&D)vE_-__u*-!hU4`7 z)<@h^MI<97%UOU{tMm>V8{2WyHhgb?dTTwF!J`{sU!j6rpgvPn2@k$(upnyZxbc(( zGwiA+RSXM6YF%%a^P`{h<%!g*7@pU1_PM9KnYhy-71RrWEX);g$>D!!r$%9wsyb>y8GUc!~) zL06-LCJLkkSjQ*DfP)%eTm~ysy)cxiaA^P<5`x}5u}5r1-!l8-4HdiNz&z5gBO7TQ?Xv}x*Rr`**;BtB6fYMx_@1D9&Fh^QQMR1Whn5)xIFyN0^tKde&u*!VQ^Kr z8GDT=%pRa_`P1)oPR=!4x`*B@_zntP{dlZ$=?;@~7>2h{v9NZpc*XxE_U%$Lx)AHM z{2h5hyuA?C4!b8~#wVMx=35S%1KbULF^wvHAYa2uI<~#=5KvA>n5}lRICYX2ihhp& zYA{yw#XHEq;kZ577+f6UAfTt%8@y3np)oNm0CuTvsRHmGnV^%V24ynQY>BNv68k89 ztIKi~O~vQx2ix;)z&sRFSk8O%jFcYCf3c6;okcG%J{{@}sWj=;=}F)OsFKFcN-dZW>?i*Dtg#fpkv^kPoZIgxW3RP4 z{9Y+|dMD`~F!KUiezkfoH+XPS`CLd8H>N3p-u1itS>KajdH!PiS6TqQROsH3zbo%v zx}*GA-QDqeI{Ts7v#vxghOCda?rak)OcgwL^ZU-8jZw`w)9f*{u3a`O0`>Dtmn*50 zaZ~i2?kGRsyHlEN&hf_;x$nKxNAuxtWsehNm(>si$akmhtyQg>h8!8`WVlga5jX() zy7v&~nP`hOUbraxR=Vv$>QI`mJZcxX2bDG8%1Ik}h@1|2aNI|C8~Fo#AC z&9G$#Mb?q#yNJo2BwmZUQoYcI_i8E{x>a>B94HjMRSA#x77N+7e|Y6{>(&nqPQplq ze+V5&ZW;v(bR zTIwkN?g@TPLH0H#x=IaXmD+Uylf2J=1laAv-$Jr4H?ww8$8H3<%K@yOxnlbl>ys-L z_xYH0yZf}e9eA3M%HDT7!)W8eyKUP)a*smA1|zYv6L|DURK98ZmX8E^*yFuqouqK3 zT0s)M#5FKXA1l!<1wm0lNYJX$*qtCZ!^;Fe9QD5<0}=t+D7QH2cPEY#Q}cjC;svyi z{~v~nfIR^s8~`?8@WVlH-6#tGcf9=eIjf{t7R_$p6NhI;EGjL}^eT1|@Xlj37Er{W z2GIQLDM zg(mEocUcQR#Y;Ca z6n5$i5y-Jr=J$m7X*zNyq1{lapC&?qF@!<>1)1L(GVd0eh4xCxi^)%~)2iohJ;sRk zVghzA!4*#Uv=KM z9pY@GwD#5?;_5-t0o5e(z*H&VCXSZJJC7e6PyZaTfhrp{?-}a!nsT^siEPQv=X>Vm zpSoKi17#mMVnJp#eF@@hP_rVN8KxD`OA?3rX)um~TN;#I_QG(!l;4IzoIg$Aj({~r z@Q{MB5&&ue1NOFFo`mHJ$>**vugXiwRy&235HbwndhO*F`$>KSc+;o~onEy3go?IG z{!E7!vU{MA0BzMm6|c<^Ny?DbszxXX1`1|8MT+-**dqoTS)aX}-g;RAh(wnx#U$Q6 z0DK11LjKy|EatfbV7Rtv+4*fC$qm}I z6t;dFy;a$RtM5H1k=x&ldz&##F^<0ge5MXZ37l32lH^=HqSy z4iG?x)n_cPuj{iSZNcUgtjGTG-nbH%*Vi;J82UDNSCCGdX0AIO71s^hUor!R&Rl-J zsDv6TATXIRlMwRcjw@A>?Ovs^s)UMr9tKm(!Bu%MTi`i^`x`zDHNSz!TlHkePM3Kzg~X_1c&H@O+xC!J;TgFJZBF4(i38lqwz zaa|{yn;W--&wMgbGEjZXBHc6*7;af~G5+dtD5<&f)J6%6TJ&R8k^fePS?p;SNvO5X zzcVKlKK%2J8Wyvci!Pg+mm3{w&&8{>bOd8d zm(O)sPfj&{A0 zGh!@u0ow76z(%*Jp2(gUSBHfQsImI|$%oo9d+zawAu8j#j0Tg3w6F>b1popT|DnPa zVVToYz5r=pFLh!U=2sB%EdzpF5y6*Hb~@>w?R8!^fMoXJmtPgZxjNvbA6P9w zf`AbXGXG``!j6V|&i$_dzFytjEZrFZ>Ud-rd;)y&ku#e-_t|fIU?h+_gn?MiHlPK5 zjLhO^U{ecmD*`hD+EK!>uNAaozQu*VmZqrUU3di`ZJSCN>WO1MXC- ze5huTzF+2%dozUHTA{}>Yx;C`BFzhG9~^)>)E2s(5Khxu?a%jjE2cN8_qWwE>AWEb z*I1cr4&?le{EJIV@C(|awc1TiUjSyK_)z)Cz8Xi3ZOut?~7m|VbveN;j!KWg#5ria10j z8k+wKJ+I_AK%n|Ue_-)H0?G&~V;uZ{pbk*V0suCws{a4>&Huo-|DQwFb<+gjMb}^& zV`ovlV88?x=U=50X~GgcrPeh;a?`6m4k+~VtA~gXVX&VJKMG4N_o-p7HD`Hc#Xz?; zdKwk&!K?QXp3QnvgA$#~80$3FW@MnEkiBsJB*#3JK&s^SqFunL#>jukUc1==H}&Qt zHjLqX{PM>>%%E6kvh0sG!sfn(A*(2rpbcZ|qERdsB=h~7s7Y{c3Mw9enW$d|Nd(L` zkW!Q4|LDI2rnHFQ>|U)B4w%s5u9Gg)*8~`AFlP_aB1K)z-uxw7rzf77OK0abYrIhLseCE(K4+~1G_I3YdA-TCV!q}w-sR{R-_pyo<=||;KH>!&$bl3Q1 zE;#Y*IdBjIgJ0nY*NU=d>cF0#tY`zXbiaL0?`B&#Ecj1)4&0PDsQIV}HIJ=ugHQ}+ z8Y(TMWnj!DKoTshq67xd2<-hjrTa&lX0Sl?okDcaC^m_6CgXr0IAg3yY)e&f9Zdl( z2-pGY*Gu<@{|2%Fu4gy!Euf%feeqsiwgothX!n&saUjJi0>>-{(Lo@Ge&wwG1S0$p z5hNGidIgE&m9kcGyQO5JkRVev>r~Zum$b&e-mu2L1I4iXe0lq~#hr0s6gyDD(wLfIfH%G`HF4opo~gEz@&|Krx=Jg9+O{zkzqMcx5xq66(_Qh6)4;B!O5FB zhwm3;a`yN29=kccXMoJSB}X8>kg0#n)^P~;DW>j8Nwas#k5(`f+4{yIF; zgb0I*?Qr!*oP_Zuh}jAc@2zU5@?tvPgUU|6Lporv?-T5nx)cFJA$?9GsQYF7)_isI zV?sbL-{(|b3!YY(LX%(uuSEyKnb$5|`uUJVkPe>R?Yb+gPAnOyKk*QBoi?i=t%D_% z3LczIr$PPe`vSag)YM8V=ccAUoSsSrdfnuENIUj_dKt@d@))zp!)Fq$(Q)*d>3J;J zZ6nrF$w$*>fRxFtVGsD!>#W0*}OF#(a0;H8%Kr==AGP@w`br?%QTnFpKW_s%+WU?Zm4WASQm zVcVz&pd@#Pr77afff|@DTu4evB)^aYZwUsab8Qw)%P$<29Oog_OsL+SzHKBRW!!kR z#)~mq0Hc=1aM_l3bWav8tZxUy=)dmVFrgi5qm$%#4~yJDG^DFLU|Z{Q>34E1ncquy z-TUmNR{3jL+2l&Hhreg{mwOV~k&sZ-<|c&&HH-Ms%4_CnX&$V2fSKW(65=A4|2yA{ z0>m_9b&&Ce)&I@f*5vjbWkB(H#O7v$DEJz_g)*4){e2{M*?o_{m}olSYr#05AQ%PK zQ(YkD#*ItL@|4zPw%6Z>yyq6Som(sb)*A;U3*a8TK)ef}4-H1;bGe5uLQi7<#r=J`ih;`t{dQ(&5?S%-u9VVvuPdTs%o(OaE_@Y0 zdq9a(5~wmiQ-@i(7@=Jbo&gwR9R!qp?+zYP$;zC=|B!k0j zYyb=(lORDnXSy^N_Bog`@=-kKy)ZZzcjF<=$*vqD2 zP?%>eP{{jM)Cs8n=3BG}^$qZhT5OaRlr9eeK%n^O1NQ*1()flhF|IX6C~~R%h7MtY zp!lQwMOAlUUX)HY!LJQ~UffzqpFuSm2UO+1s{-7u*1AzM=sB$|x+y7;qn>XZlFy7? zs(gs@E;iKoPkY?5=;R~N@6T@3Z7vPnn(n1Fo8RV~Wz+mgQ@|ID0=_!Ts{q^y z)%{T`dC|Y5)B1C?Vm;QS2mQ1>)u*xV=?Fdfpj=z#TD;`F=4CR+0l92sIjWc{- z;P9|ogLPfu#-tTgGg#@}@vn|X`^WK#^Noi#?P`@>?0fb^(h>(Fk^!qffK2qCexNnH z%*S;Y@G3%e@Yq>0+s1Tbw@Ur?!r@QX1;g@6B^vG*_^ebL3eSpRc8I3@xxYLS{4Egr z5|7}i0EKcvr1L8hqLhom#uT1a52(NRQuyp$mQ?c}-eyMYQicO0rWOPKZs9)CAB^`x z{w04#Z7;L88BwI_?&@ZT=}~j!T*#z%;Hbu%p2|?c; z*(ZMw8>_;kk-jGjOYLaNY5ir1*7_5IPb8IAu`gV2$LMdgf9(=K8)dbe(5$kggc;^Y zEpGibtNW~cwG%4~M{3P|J0Ze;cd}=_xMNMBu=_y~)~wKcV*Q`0tOz~`4GtbNOv}9t zchg!foqY*WVbQ>1kuRZcu>CXiY~2d2y?_{^`&v+k$ILK|1Ct2D=|e92uQ%09JU1PxNRu@mE(cPTfa-Pk1mEGpsi)rf3s?xAabGagZ>2=zp52fw}2`JRLF`-Gifpj@n_#a&1Wa z_PTp!G&k(*LNMDWfMNvk`m%y%Wxu&upEhhKACyBp<+2qLh>D3(>9iMCEjPDY8(c7A zq8$5n_VmWjo=a6V>v3qekdz$OFgfh-(8X7i>_zC23}hL8x?8n)#yR@J+EadGPt$~E z%@;R!;qKoHJ(ed8z8;C%b@8}7lho_R9_R=Am!Vty4;@#zM0d!DLqakE(wM$0bTX8d zi%?cMU$X0tOF`;45GMB}rBOHc_`FD7LT2xq^KT`15HpYgf*jjwDuuAj2S$>8j^7oI zf|a%RfR-w*KSzIoJVy%OkX=R`E6x1=zPtX~{;oIPm?$+SC?Jj=@7t`=s40b;6J3;I zH!U|m9w3&&cxHfFR;#m4`3-oy8D)7QvG5@OTz~O%jq`}C#w*B)=dY>$pR2VV)!^uV zJRIMlyobJG{=x?jv)sMge5}Z`9m1au2|+T&JC`-;7N@}Gow2!kaCXT^yi&8vI;rpC zdqAL5ar9Y-7Ep6F6oLT-7UHFoCX_Q!OWC?eJ$0G7KW(>H7Tu+5V?gqutD}9i-tzVo zlP!%;J-;Mh)YbG|Y8cxiyL9Q@hep0i0=g0*fhgY-kBL%RNE41R?S3iC+opdna2ZqO zO3QB|K9`k_ICMWngXvq5^w+1AFthPXu9M`{GS`Ls0rPd#3Dc{GYGhtwM5-)GGwh;Zr2TAlvD5o zZZ+G_69--@mic`e%W-LYNJ8XRVr9;;sXq8UXVPV%`kXhuZF{vcV(?7EZTw_3?Zig{bNx#|X19ZUzEDdn2+ZLM(ql7IULj9Z5 z6plKKAG*R`%xLIn2^k$CUc7)M>(^WIo<6@1-auNaj$>u2ziQWd12V2J)Q|MmV|QQ2 z4-jte?#3O(+%W-Nc2_WUA)*vKZJ}WEL=s@rMt*rQkjEnScABZeof{La-_X)Cpl?SV zaEoD#VZgkmZ+1aQZ9JxK6MwxF`Q$j;9Blc!$)5*+upIKJD18J8(4Lvcas41Vp84&i zx1J=yvSA`-HX$DvYb@uxsw%QaR!q;ro<1Hr!leYNlKy_fbSTz97>Fv^)rSP+Y`>5F z!-HM{Ht#Fic2>j1OvO+M@F57Bd{-&gP*f-&tlB~O%lwxxA1)thA)SW* znuCi&#ES4Y>2LqCXUnB0sj06ephSS8Iy5(gXvcLJ1UTZf(rf3>MM&tGOo=2u7Cgl~ zPuP?Qy~}pS+$o<&AvaIXD>1IzzjQ4|xwyifaeoZ7QAVfX90$wII-th3mvs+xg*T#vtH7HRzAtK7JR?<3`0f!Of*IECjHhtVp*V?$Yeu411_qALB3w9#Yk_MDn#Pn%DckdUy0t~;%u@(1%e*RN1}$7HhL}04f(?OwAEF!Hwmp1IemO^5&*$fd z<~WpVzJlAOSJfo2d{O=Ss}1xKa1x%hi@*M`riV=|E6kMy;4Seqm$sp)5#NBJgY?aI zszS7g{gUk$-?oD5SqMH7{@9_ASCT#+`lSXl=@vU#)@lbkkAMWgH1lgzN)r-wvyppXv-p*iRA= z&8cQxw;KiMX;Al4_QbBgXw@3m9RIB0`ctAq8B$(=KqQhP%*vT`=hVRKiC&+kC0*xc zb^<~52RaYj0w@dg)Vdzi{`$WYwc}N}31OTq;2KEYCG6vWlbyNw>3L>ZuU@`uect)u z24VU4(ughTOv3E0!`=KW=`@UUP1dr?E`$K-l27yn(i8^HYLm0Wg^wV{Q-CfFw@} z9bDMZ<4uEcCSx^fS;s`r_JdalTKi0UO==y#2u;~iW`br!g4Yeki$xlufh(&1-%R}0 z5Y&I%o$m6Wy>sNJk)>tq%k52P4xu6Y(I&JXcD&>TKP{HG;V<>r>QC>Oo zZ9Vp$-(wGN{?={QYyYjc_=Q(Ej6xY!s8}SPD_5y2pOK#K68#v$?S9BO@>FhXJJsCKhjL0I{$zJ_WWMNyfQQ(lquc_1~Rf>xw8*iQV ztM<%h>+Q7Y>y9cI&SOB#mL%>|{dV_ZfDAXZZD@Y_lQh>iDbWa$D+&qGs51@6>RrMT z9WimkZmM}0Kh?&eUu*Xd=@mH=&0m5D^1A{-2Y%!R>B#v(lIQK{o+&I`ejyHM&!U8; zggtCLGHq7d4o~Eg_{Iz4!#_8{$(1)=+{owUK8wC zA0b07_M30{HV5Rsopty@6IqYIk?xT?#{y4(pW|R(BQGYvW{_%E$-)r zOIAFU=yyr7yS-k@tQ}RG9IS_}V7r!{DyfG3&bmZce>%AK)bXu{QI&>hxb9|d)8zL| zOUwP8mL|$3@{0%5FsqUe$mypu1c3Tl{$ufxU(STV&W%g#VMxD=0EeG_=;1!O{dKhf zWqRG$do5V9ni(Usm{_rc-Q!F=Etu$`=j-Ee^<#U)bNoc&}_Ud7`1}=<04u%jsE(l%Z1D z{`L9x(1X20U{-pX07GBQ>;sCSjYdM&7Y=`U+h0gCrQ+wttYfcWGk0U4GNsEJ?ztkGGSw>S-jp^x z>}+k$$hixfiN%7TTAhkTB$fc93Q}n!4R^w=Dkh_G&}D=^oMyEJF2no+IegFs5%*E_ zzHG*XR*%1~VinxC)Mf{qdTjU4iR1VtIt6HeRqKm>XQg`#>{TviUEu#M? zUByO;4?1eW(u4{2y{=UG;LgeAWMwI3=9M&6-j?<}; zZX9CVk4N7l4&M0s`hS>PIlQp@DQ;w8v^7};E4_#6n?*r6)enBYrt5uWS*EuXae07g zEbxNv$7A(c+j;^=i%F7Oi@7goajfQ1OV+nO@F7u%JlXo`=i8|ojU7vZz)nE*DNMmB z5NM-xlKnnIS{p(Kmy>x6B^|!T(FeiZlu_s>&(3qDWWDHwxW_lR7u=fUO*}Zv#drA zJC;f^u~L@h8B=4dwsE?qOJo5mInwJOaU>B+95r5c<>cYRBPX(|<0778Js#T>rPDrZ zXG#M^Lq7zH0aUEFgI+!v$B-bUoGdksLx2o-guBQK)J8j4Kh!YN_`AnF2%58c?pZ-9? zpZZ{c(HBsmP+DqpTYu~GhQ5Zk;eOx9yy-EczqnX!RddVN3C=`)U46|)0kK4qpl@Mv zm0BjaCe$5Ok6}BoLIPsgFSTjrFXGK69PRCR&E)jSTP1{Ev*drWGSuv%$o#c#SE*$` z(+w*C2dsdoIUFrKq$NmPtb5OAAd=VeP2%OQNu&Lw860`J&T&KYF7`>K)bNqxN`Cr#`{sx za~l2^@Q?^Lc3fM_KKzN(GosJ>uQD68Nz*Y#(MsUFUZ2k`p4D2^Upu5XzjCvIzuQcA zeR9l|B;af?cMZ%mO@f&kxLop0xAoi`WqOYLKzX^At5iXY^Sa!yarE<9jTu%Zb|j*d zWanFX%5Jc*8{{$_oHMm+^Ix7mM#E7$QM+BXcSxOe9&e$33!7h;*GtTmC@s&qz=1+! z|G_$|YB(MDtIwr3li`k;jvX7Xhs%^c>+8PZSc;nOWgM}&TW=ODBVM!50>j-Zjj!XX z<-s0tOd~K95=Da0wlAmAm&PLMHboC>l$qi9*UD<52YnHx4q z^C5_W`uqFzKt<{0*E`P_FwCtUW_-wiK(@RfnifsIh32YokUFk)jO&eEwxx}9+H&jU zJZ|JFjZm)^2p|TEl0SrCo~v`;oo8O?Z>O>iOHslKp0i^g06IRPBM}UcH^$0u zjQuP?$*Nyjw7ClPjXGiWb0)7&{ZE~UaVUOK=rlBzz;SVQpm{S0ZyE&z(DC4>jTEGf zz;C_5XY^@D>+nK~F_l6QhepHUB0tLWRz^itC^H1-aA7MUVZFqD-Sg(?J!itSSzrJ^ zXr>d%ek(%WHiJk*=fH_fEY0Ia%ZGj3 zeP1Y0(IoVYwKC-SDA!JO-aUYFcuE2t(djOO=I#A6>?aGXceoGzGJxDi9X#ug(Vp zgBBG|T0BXiD~Py$fv*H^+JPdiFx>4^(GVV}e(**e%6EbVnPRf|sGJ|4(D;KdLkfgT zk4b=Mi|36aOb(Es!1Y5DE?(}IfI^qk444pbdi5kn2lF`?zzZI@z_4guwN6DioaxR~ zWT9NFMSPH%*dXAW5(o4M(qVeYWPjWR?@p-;=MAXBgz5)($_lORS7Er;n2CHaV}$&k z{UKGv!t|E+aWjpeN8;Ue^WnB^;uowy%>y?{G${(VH)<(wHH(b+^$x*j3!PGkq_y>s z2?xY0p~A3itM}+_*os$bIr+r9P(J5h&6u5;gkXL zTk&0@&8JA$e80PHH5nO_03%dfWT8%H!hoLH7)DL{IiZEA08iI_ft`}PHym_Fm|u}g z2e={OB70`}sq*o0)l~oZhB0A+gHOCUV(W|))zciY3ZdChvJUv6{oe_TpZSwNTy`=uCvWW^D zNFXYP5-;M>3(K>wv@{E#w`w8pf>sU+P3dm3f$9Txg@-`~cD9M7+xb}-RuZo#MWWD^ zM0J0qQ=Yh?EpI@ospSftHT&~z7gNp6-d>28`+}QKs@c^0irwp2ruKrR4_S0{Gbg)w z0!?kx;H`NjI zo$r**c0k>VzPq?s9T&XCItT9?&Ny0;EOOoBiCvn#+^dg^k4J-C*ewV)sHqs7JBJr* zhptbQplA}E-}mIEqOT7%H{5+U!%bM1mMXQH=YQPUP0P=LM>9<;nC3K%$B$ZsIxw1b2H1Np;cftC9oJ6 zta(;zez!rpShbj*?qqgqGW|+jK{x#|@ib4+qSGJ;2Wsl=P7&ku`s(@$>N&fjqJHZ6 z)Yf>^tE9%ZcM7`HDQY!XNEHUtMWZGh67q6lE;cU+@bG?P^ErOkB(gtsv(|5CAC#y* zH2;|WOFuoY^x=JjN8_*k{+{!LD-=qn#)VJ0VP%aAL5H02HYeA(_{4!VTxKnN@2bO(v{-+ZMURHSvVf;Y!kr`obaIdbtIlrAa^^~>KESaG6>)3M>9jefl4ICTN!hb0+zlq6tQJ}}#38_;`29Fbqs#63 z$|o6x8xa&R>AXo~!b`LqN=qnay_vz0N3{RsRxmCDuFdntU>3ONVydo=y1qHFHl||n zB8foho9uzhD9-NKx8%2v>}tW=Ctomew4?`5k-a4sIljsMYj$|2QmDVVkH3unpt{x3 z9(3^wd{+>-O5}o#dt^#eqLB)una7Ihr1T%+T623cmg2Mity47tC7J=2_KiD=~W{ zDa4Jg*{9W0LEgckAFEHX2g=I6)I<&__w zvibmG0*~rE7Yx615YsfgOY@R*dVrbYVjc>#qk!8}RXxone%Qp) z@VRzEr}x0W>Yv&Upiyr>ydozerbfM|*8g^6u>Mk8*dR&#&JcRwZsUN`!e zV%l^`5C~T-c?9eXd%yPe8(!q!4x+H9v%3fq&g@Fna%NO}} zq;r5E75ky%oFnwtub>-Xfv16^;;eqIx+5bK+!BirjH@Wzr0SF~MgZKNdYvt^LH`eK zr8-}Qi5hQqm~;6;7|rks4-X$X<_C|j?#DpZ3Qm#VUfpu-ETR)d>!dVtTv0OGhDN2& zOnw8^JOT!QvJWPT+}=8Y1-9KViKRc`bvZ~(bzS&p*)#p4lYn`*{9N=4gE(K^AdI6upkSw@pqOPKL=P^#r=XNoVh=CTYn%x#+nik8>iWQ@--0XVrZNy+^vjj zegRV#8Ch%2-&fS(Hoq0aERPs#{{f$#wKYaHp;PBa@%OJy3-$q>9&dNEn3okyfis5# z>2bgF#XLBMg$W|~n8i)9TsEBL=ECqnX0c$%4K2*;_61@rucq-|T7hW;1JM{2OYAWZ zb7JY%vq1nnNVXMe7)s+84NXj;Ty$|Dzf5zNsN?ZzF1Od-`_rYS-No@@vgV%-Kfegs z^z3hHy0;%4#Aj!HGn=wIY#5e@mZhWZZ8?tFG-|!-`%86>4?7C@+&`+0vZ^8oTXy|`$+z2zabNtP1Bc?qEKI~;;jV5U&t zZEUQB%v1&kXalgo$#+vUI8ZlfAUOGlm4>M7`v-th44cXi*s*&k?m1^XQM!`u8E z#l-MV=5?ed!5Mt-U6R?xc!TMBsav7%uMo%zJRs_zd9ghV9|3GN;%m@q6vvoTqtiqO z9dEHKl&qV|YcLvtap)FS5?S}T8-_nG-xv3UQu&q-Xv3uMJ30} z62Ys_E1jjw$mm>8I{|D=s;$-25R`QAqw|vcm;^VszcU&duxSQ~-9ix%5JZ$PB>Vc! zq8$MewQ1ac;J0@sQWtB6MO8mM&k-+h z3=Q{unm@si)*#clDH-`OE;TAU*>nnuK@Kb)F-_sD_h!#(i8$wP$q=f6uvF*^RLpcm z&o@#HN|NZ-kJ$)=KAzZoza4VN>pInDlJN0nCVXIO0Rq8&jo;H-HJ!W8RxVEBz6{Bl zntoW>d%OH@BTJ55J*xZlgaSj$vB9g+mDS^Q90pt4Td@;mZhu1FEq?8+tt#lb4?D;3%XvzcZZ>z8~vVIwaD4}8iI=eN>Y4qAbf%4 zpL6Nfw{ewJ+I%d1d%h4@N^D5=S&$cXIMd#2LoW4aY0}-Go$(Vsa&r0aBS;+s_1y2} zWF_hZUNw{{1O8h*H*;kfg534-&K60d$t-seSN(n(vFSyf>x`nl+PV|C(UzczX9M37@RaX zC9StsN#omc!mfeoYfc>(wASgT!kbEh@!Euhu!zrCCLiUbJ~&+>TiO)jtJ|XMMyePa+s;z_X^)urvSa9nZu--`GYo;& z7QQpwDk8Kja*Fb^vni^LL7*jHo6m`0cGQkUJ>^XlJ0R!D-Oc=@)qqN~Ph`TUyIr62 zPMr1&CO&rM%R9_UAD0sJN*S?LBpf;e#L?i_o-UjwLxaMqa-8hKngtMb2K)lC_+j;= zv)T7za-XX-78e&|*#71#dRGyFW~L&grhiZ0LH#BJi@vJy~foECT$=}x1Y^CahXsm*Htnbm$04-OH+Tv@$G|IgA)>sT)JveMh);~1A{~O*!ck( zl~(Jf(;&E@!Vt8&;MebTFYQe5)D!HMhD98WGSWeYI3Vu38dSKhq#(yuG9LV4s>l;| zB>i5lHO})uOjWK%;nHD3a*;?u)vI*yot9UZGlQ(M5DUK_$3m z%^HbWG7;a`EJa6b{f%(KvJp~$c_}C;GRS)IK~;Pe14K_mz4Rd^G8fS)p*q)L91Cm}H# z*{$q&&Jd3P_SdA^H<;Bz#e=d}>w8!l_0JX3pQxkk;HPU0{YZ*98|DkQ^RAnU!HCVT zc6QQlW&es=>+1Ax-20~NF=+=Yv;N(gpF)XX!T#oIF@{`#c3~DlqiV8&?^w0|j4_I! zd@JgL)$CYX7Cwa%Y_HUULp4}!Qc_iv}k|FnLS2b)Mo2QE)C?A>B38%jtW zFwUYABAXi-Xm3)y-qzpU*@5TquPb(om5h1uI2_H@hjwrsOCa}&1DwG}_Bnwk%f`MM zdMppmI;r2A_E9~~i$EZrg+Zenm#+GcN9O%?f~TOK>Q80$3a_7%F~pC<r#2&RpbN_TSfUQPpB-kKCmTv^5T8+nYsi+jP>2cI@B-n(kS2HX~Ey#{#Vl4 zMN)yh=e9a>!++`)K7h1+!1wt02>1GvFA1#hdZf45zIWG-GaJ-Ylq;DxljNM#=na^} z5Rd~z3XSpFICPF?(5u1L*wPp=tA69TqQ=x@a^`LMB`x{$^w08-ceuYVZq_woMyBLMY{MA(!(LdV&QqO0>4w*QAQK7mn)Zq3f z6+eX#dPbR9*obLLH^|s)#Rtz;a$H_k5}P&jE*f*=gHnlAlx#|I3GryNn}cR8Z?n3x zbW0Pq<^n#W3wK7fIZ9S4G5NFie5q&O!>HpDCnKhPH*Mc|p6DIzT+c=MD=4c`=9?sD?y6q!U}8CFY#NU6jvSo3 zG2p+Bgi+#k%iW4+w#R*Hs`jRc6U#Y~{qO67!RwGbkAbLOaSw~URgRr00p$3;pm)9( z4GOJ-mlyC{;9qt$H=8w2WK*|dkB$6Ck+=KJC%Q&?vIG{YOnUW^6g~9T7E(nVXt50A$CBj0Z-x3$+JKjTdY|KB$1fm!~HVjh`d=mwhlp*B=Zq5?WSlHM)9qzZ+O=`hC z#T-cQR`F*U|5-lafQe3=^RVC%`Pj!X#c#gxgXhgH*P(9)TBKY&(~Ro7WADI0re!2i zb+_rmRnsYE|#f9!}yAsM9blj9V0WsoolQctoa7h8$&IyQTOMUC710uO{=DY ze7L;G$AFW1&zgrT(cANwgBe*S9#m0L*Wo{Dpi9PbPDc`tf!4E2--xh~H@Y1o}X^ zkvnVI@^Yn20{4kGd(>2XU2phM=jUNt-_!wX{i?_vEt4FnNt9&Eit)Dz-v?vE-isXt zW#$*o)o8@MOr*DnF?6xWW2v&JlcTx0{fQMDHygH2pEOSrgDivr+a1H^b>F5;WY+qu z@MGm(`|i%0WTwTraVd-2quT-)9*7@?>wUhgV2IxBsd0-uAp^X$q>xy%*pUG0ypCwF zSwv2fzh@$EL#f`;=raqu4YZRz0YNh9S*M@l(|fUQ4UO8Q(qF>NvdkN%5e-YRfFW65 zU7anGmy$++qzbtHp|}zBI%R>pre&SUOBeYlQo&+*rq^;0-Kr@<@^3<)(Ttju#iH+Q zM;{iW%ynxY8UM?cRakLjBhQ(duuD(H3FkV0$-ioBMB#41XOqhM62r@u_B3-Ul$V&0 zeW~@cbWG>?ILt~XLx(1Rz(JsuPW7utz_9uYh+r6&j^<(dY*@>b|LYE3S-3db&IZss z0BCOLz81ZPsZNO{*TE>{wbK980*uvs2&5*nDa;8n;(O?fXosTThxa|fipp_|&yg8q z6eSLvpAT*O)b_L6Bd3%4H3z5gwB9GDNLf>}^5l>cl8F53tGJ|SI;>dR>)q1y*HpB4 zQb$s5YXmL$)b^FS^NTlUBz-5vCqxh-Q`e+^oWj1D5`j> zb@HZe<-9bsMc8{sJl|fMEyey6O6#TO38k<{J-x`j|1i%Ljf)lgVA(JocH#3-V@D-O z&GU?Plob#~vRFTRDFyE!Hd%j-G8 z=Fq#)`)9yy0FMeJeq?qsJmydB%C99l$ZHGf)4G*2PRAAm7J6a?tScgwNvM0cp0s-N zzQ925pudG1;zxO?2~GYd2?ru_kq*o(H0<;FdCSfOCV08Yba5rE!k%+I9cS!xtDBR$ z7#01m%iJU&Y!EZiAJJdm9TGDVJ))L^*j-=J4h;NQD{pT=5FL!Sc)7!u{FSSL-?5$T z$0dNL&^D+ktOKvhRp;8aW3?$O7Z;auT_UPD4{PG!)Bu+j#h#xmuub#~>r3lkZ{7uf zw~@uEm=MP^5ra9Nx)Cvr5<#U<|9hWdVj+On?aNLpT>QgUuf*CR5Iyg6s@KUaLUkVn z;SyV})0yWVK{2%JQ$-ng=+*J}pv>a6x4#PI(9z84zTbYJa@--^v5Zm8E?%o3@A(SK z4Y2w-{%O7gp@74HDXa|I*Rwff#>?8Q?TLXvP^NKznDL^Xuk|5O^L@Ws8n-$O%o@NA z%)i3>9F_{uZ`;U%zoBnwMPd_NM3=`(Qom$#u^6b_8ViM;yy&jBL1CDJ?WEuO%Tu93 z?EaPB*jwA#ZAv#;6llaqQ|;lrX1F=LzF+Wpb-kS-A{h&Mo21Q{`FC~x0yBylrb6xB zC-G9eS8H8}?EAubbF_BW=z5D0IWK`h$_S`2T8^q7vabD_+#wb`3$fchP`TXSu?j#sCW@B2EVt(E1N)Et%))94y*|N$fXA zOKama7UjOfQ)#>`Cd1a?(idtb$8>}#)ZNt&V%Zy&NP%6S+V%y#Lnb4VO5_9b+DFRJ z1sb4}W8p2g7x`0?(#M_lFIJiPK|w`;aY10^Oz#7!7(1sx3Jat)!yL2mz7Af8_=hOQ z`?-h93G1Xx6yAqJtY@-;HXaw}8hnlJps3{i00?f`7~nzgWwTvn4abeE+tT+L5`nyG z_!Kn0i3L|N2hd67ADw!F3xUG%eJed8c#x-?-aNyg3Z7K|#nTe!l$oyyVcm?cd6?`2 z$Aq~IIaBP{J88d_erIK5Gd7EZ|9dFC)A^hZ@AW_^ zRP(QM$?$SL0)BIA`@FreTAny3fafbHF#+voY6C`}prnvu#Xi3@ZrA59-o}Mit|T*U-f8E zRqdsY>WrnZ#wx}`NigxQ=gYNyulc|)-&JwedYnf^`b!sz2o)5_gOV^=vqa(6PZh0i z_5Ih9$3`(njabOApA}|&(a$l>r*Kro|5!Pei8dDfGp0SGFX*It!@gu4b!aM0)YmqB z%yy8K0~7OCfOJQZf0$W&IqG1W;S0zBHHsuZIeBS{0#e8O7u@4mf{bt=vK$HC#>CEh z*?{&JjxM8i4$&|MtJ{Xc!!r_)L&DLUZCmb#63;2CBEl28DCA#45DPqIi?Vh9u-+*R z7G))UlKnva?!&z^V{&pT+0Fmfq;-cHIzFC$jb-?6IWuL%WB-59ndyHDkt_b^I-CEk zN060yAVAwBo#3Xv;Ex6N3gM7Hkqtv-7Z&u=6TBtJ;iLyG-ml7iDv3gbqYkII3xq?> zu2NZXz1JbR9m=S%I=f@;@>w6;AlKLLe#3unASp0V9n}PD%`7WyiXPn z9`9yRb{1b&uO%sl7uJnYl=@Xve{xCx0kpP9R?uM4nTmq4z&muHg^i!n5`%1Rkqmqr z*KDq&N)m}_qydX)uG4#x$7(*@>?bUO$H<92>=c@88BSbcV%aWTIb9`_l&{{3$xb&Y zz=)X>_WKYWN-!6hlcAd{N=8mpn|F`7`}=E<;k-w#s6D8x1EyT%1sT5^%l(tLA|78s zpY7hgA;ONbN)9COKIzb9&d1}b^wFQ@ ztl&#le{%MskmLnvnl4nl8ut8uLOsg4qAv&@+xL@XKRHymMPP`wP~pJ^vZd4!a6mH& zX74A@M034Ig)?*t$Uu^*l5&*2S_v~JV~sTH}}>^por@!T|b?G7q>3qJ@QKz%QX(RyuSE8%9%hn_AiWNUeNr z)yKb9SXrRhMArRsB9w#GXlB`eFWKo9JtFvu9vIfkeE0e%`ndBv_$?+(j)*GX3_{Yr zx!}Y3@YHZ&#g4JlvB5qnCd1{5#y;}Cdv__wBj`B*$Iq~0^-wSfPq&gaAKy#OCek?F z_dTpv_PB%h%PVN16QRrFD_QH`t!Isqfs(>E7d@PG!~r@mo|#RUggTRJP31Zff-1#7 zyJd0%h-XcUs*ht?V02!stFV9q$c>2V+Q-M0Z6eJiKYp>TsiY!5cAeo_+#$s;0O=61 zRl$ieePeBqr(+6+Nb3UYSz3ryH{Nl-l~zE4g;(#hf=# z4-XlcQjM`qmsSFGc=kZL{nv%U zKJ=eoW0OvVx)opi>b;rWHlF%fO*SIY*>DQIKc}wkkys6@bJ;BnRW@9R&OC>BXbnYf zb1c0GMx5A!gXnCa$G9&>myt%e<^-RL z7Plt5hwbvF@NSX)r9mIV=*N-s1O85VIh-q!6JaN)MIN5IL;QrZ4JN8_R#QxZT*$<{ zWw%%!Yk*T_&{)Y8*3uLsycD}<)mWC+&)7`=Z@$L@Pyvg?T% z@rS;<%2Q9s?2onquZfair0ica!RxDnlsfel*(nW*@>#*BP0pP=|18$apw&r8~;J$WeJj72@Q=EHL? z!=a-#Ju~$dr5N4nzVLjE3dX`B3Zz44A#@eKWa#1-pgPfqjJ!3+36VreUG;NWl~+nn zHCFk^P(6Gmt)t?}5QQ!?%PL%Qht?EFjT}^<8GS z{V&l`6lv+DV=JK6cX36gXvz(2myA-XxWJiG^Y<#&9}=g2}z%l2W)t zAmA?RW}P7y^A#`GY+A*{RZG#mE6ym#c+n)u5Vzmw^j%oX-g6NHMFxd@f@opo{g29D z@gvPi(*VCw?;lfm2g`eT~21O}Y#Jf=tOu^*dPJVT-F3b4aGsmbN z#r{^KOcx6QBCF2sB*m>@8306v%=jvTaJSx~mIWUOUDb2W_sIQ|D{zq60~H&oANfvYW}Rcb!{j z0|Ny~)a=-5=1ya74_;_v%a*v?L>_3wvh9t38N*bLl$W!1dJ_aGLMCW?+v-!Sh(3DZ2#-E2D&^l_~(PRjv zG00J3-;-WIzGLh-w)`9~^vImzllSpEp#cI5LeNJS9Bw@h_Ek^Q=RC_^{~@`HpG7Z? z!eaJY;H~oN?pza**4&ZBU3h(oKRH$H`+Hvww#8*u^cKoI z1(aK=(dV5dgVw%WZgCD{(e#4F5BXmD?)umcTYDnyNtP09=i|?wUtzsuCwg`NOnq4R z&EZS^+zbCjy-AQNk5$5{mWs=CY3ZO33G7DCWT9q4^bBko8g!WOKUTYA-k%Ga4z>(h z%P27F^Ehf~uJH&}GkociKz1}lDszn*xw?&a257KpSx8WW7x%^b8%2^>*`(kfEVx8Tjj^0{Zn54Wm1pgg>Mff+LN;}`T zL%d&r7-ZIeuY6Kp>c~l7&9vmv)^ajHmOqCxe9xrD%b|JxjQH@GUcr(v?0g;f8j8v? zt*`^GYl6wyiqXzKH|u7S@}zkQFv%v3(Il*PGo74=j--Y zZr9hqUa@daWfgx)vO0d9R@h8C>MxmK{pS~A1rO1P~ylN)S&Y|pv&3$OW$&ExFt}{Y4d?eCo{mDdJ~j4fVc1Z!xfs^^*vV9*=34Y zSbkjURL}ftb1gL2rDsP?1ep1y`-DHkxKUkmsQKu~q6-b}N*yzD)G(wKMh!W_TZd68 z)sgp<4PW=5>^m3yOpJBacLR@%%D=_csN?(I!f#8OvXM$VWi3{VYH;>zB0>};ac@&)mw#rci1 zFPbm7eI2Ara0a@(QxxtddAx3viI|9|srg9wIR56r7hFnPD^xi>%`L}t&9b@KH>{m7 z3)@f&15#xqVPU9rR(DP&_oQKn)P<+NjQKsCk96IERZi*WPpu=MTCc}l8k{2mM}~UQ zB+%8i&EMTgqOG^+gkITBalb;y1LTgwG7K=x;XqxEjXh=C9TsLGS_XZIQeH<13$|q42-a~)PXQJohrbL?X&vehIO0y#{5krub#He8@a8b#RQnBH zqgYiB?_InB2k|#h>SllNqnB%XFckaHqG6VXU2DgfH=q*$upbM?sYo%J@cUaQsS15A z=aGH9El1MCPebyq!o^4dnm9oK$C3MtVz7)XpjLA}1!HN;xoNh{Fm>ht*kL%>LUy&k z5wtGg(9{yCtRAH55!=FKXXq9uuTlGAXyL z822G+D{U}Jj;^DhvZs9!+@QI<#a(!8f0AWiuz2+L8IM-*n$Qmt1M@3@^O7Rt7hUS0 zZK~aQSye&~e^mg~^FDv_;k)B=0Qaoo5bE2tJ^zwScvlIJX#*S>0dVFfwkhHqYbwv1 zEer$sj*_?R2lH>tlXIfN@RH>92ZYMMVcGiUg^fOG#avQzncu4>!~h2GP}Rk>D#dM_KlAI z%v+_lCp^d-^L{8r=*Pl7w=L({%9y`3j*kzrEof&4;#2fJ6;HdvBQ9;8vcWu-c@T!x zbgXe*bz9U9XIZISMFbbjU%mm1mqu%3;||n z+(#t(qbI(`jQ^?Z=GXW)m`J29+~TBsdlvP~37EaTZb?Ppk~VEy1cv=#^*Y3{WZx`U4mFD5YnyW_65@#77qAFfZ1tp5)`90&iz?5nmUx&~^?ooSicWwA zKIX5ks(={?1G;PQU9Crw8Hl{!QuDKH;^>61j$g309>aa^9`wMt19gdwJa+=n_cxEg zv#9i@XaFfA&nX(+Z_Oqi?MLh|*6<7czdEi@RazYQ3OQz`$_gXz1k48h`_~sN+5s~Y z7yt*t|0u5WuwoAFqx=XCjlm|*4OB>!VscwzIelge>bahKN!*-QR)h@{8Gz5xDOC)}$o2{ruv;KT zRsa&uw8v{;kMxP4MA%J&?1}TWVwZIkTt}a@o)-Tz&yr}1m#f5&X|A7gU~vMp2OFNO zz-qslURP%uKYllSIeG(u z0Nel!aOSY?zmHG^W>O&#Y+TQ7E4Hj8G3`Zs?GX46@xDwYg?WwoEnx#?%XV4GzC8cQ zep-`if1O+a&4u{UC!`~R=4|Y{bfQyN9S}bNS+!?Gwb?S0v53WVxBMpC zGE`91WZAyc!b!X)Zh3WPxd#(kVCu=YB1XsU25d;9#UG5}AQLuTxKds6!bxA@ffNQx zzykoAv8^V938KeH4&!#7|6(Pdp8mL}mTw=ekX$(i{Aj1ao+V2%{f$4FM*)ZM2-V=L zi+kYc2{*08--~bpj6lPlNd!LhtF@4-1j17n8|D0lRt6xNcDK=k*iGr)&~Tvh8dN390z>l zxa-*fWp3m*0?sqf5p)1=Ek*5+wh#_nD`2mm|B&jdhYP&8X5tr?_k&C4)I6~AH}ZU* zXB-7PXeuB%_^}tjE$CaQx&9_D#1DAK{RRq{9ft7>U4SH1=6MYq1Qr&`%x$-fg%$R+ z2mwkYXi%Bj{LSJ~XDiH# zIY=3+QI3g%6mMV{HAo<}*<{Yo5|G`DE^-wc+kI_4t$inw#MP0<96|vfg8x)rwku=w z-?1e%%A+dBQRu{~MXZwo%Tq~f3iYfJ_t$f_rNfo_ShI{ zWTL-*r{xVSp^ON^*e})h#DKjZWa|05qKCL6vYgNRBPKxmKhL}5uwnP-)w}_@zNik6 zB?Bx(=RHh*&gW>*$`kLH!Q=p)lcw`QwvfgAZ;py`=h&w?2`TU;D0T+f+THh4mk)h7 zu@%o|Q{W)6jyAO#`RN)@AuPH@XT8lJbORkNg+KxZfW7G=4B77}kWC&}P?!CrBZNoc zWr~H>B*+5Vd`=2^Ot>ZeI6xDBzG3wG*m6%&@Hs?`02&3%)zT5L=ZNy@&mnam6`9;+ z|Ac>RM7S;AEVw6vV76>NkGlgn3vV_|9k_9(s9vLDgmSs3rW^oajhHgq$rP~%$$~3; zdyVlSb4+>v`piue0CBoEp*2aE35~eGE`2*0*J*!htm(}Mq!8xzWtDOxIUb%t5X0q2 z#&^d)!NS82btdyI&Lq!(KA|=K(Vmsl>SD@a@WleZe=`g97dCwU#5opZD}zncR!Lyd zVwNKJ7~W^LZkF7R*8tPJVQd8)&@Y?v`v)$k>G*t3WCs!&%6Ar@2Tz{!Xc+*XzH*sl zGv6{Z5el9Fwzz#-JE9?mvo4h-b?zJ+c>Cb;dVG*$03N!XZ#o7fH%7@Wf@}Y$7Qp>l z3*tx3Fw1x(=K|Z@V32+enoQjrOPCR)$@4$@hxqmtnhn|pUsy0cTJZNgXhqC52$aWS z#S*|6ki~kn`LP0)tp1l z5B`Aq?dl*1lvXS=^MQR$8PRlf-{0Rr@*O+~&S`_JH?)~e%)nLa_v0&{Kk~fxvW^3( zr{PQ*b}g&TV`d22{^Z|Xw^P;Wb9&h2xAl*gSU9BUIzkq#2gFLbg&n>$p)kkH57 z1;4q02%ZhrMOoV+haOw)gJy0AXvi)mwlM0zq>|fWc?uipy}gC{7rfahu+y{}`~ow3PYvvQk(chUJ^y!?=k#jtV{>-p zBg>At!KRGJ@t4eS*Z4 zrPnY?>0ZiaQ`AeiG*7YB70{w)7?Xfd=W63>S%#U6p8_6on66dxul4>;_j9}%A8Z6M zNlC-SW^X=IDb~r8GOsD7SNt9mjC0!R%0XQb1ld1-B9U4x>?T@c$J*-0Qy#xa|C-cc z^cD^h9v=Qm;N81-YVYwaEG*Oy$y>_G3J~kv-QP>gN!Zwwj4h2&QVC!X@LUxWM}d(j zXt`g!oA;`mtC13G24|M8BD=dKl+*c;AYq@Qy2h42&1^6=?l3|8`i$D61@HPSS+S#f z{O@iIHa8)Vs;a6t#OSgg&zzlEoSa&X-qxS-@p;kK}x$(!TXq!=;cei zu&-uT(s~|JTbO2XmR44$z3!Jwlf{>IJF2y|Nnu}mh@KtOMny#x6cj*SO}q`WBoLrw zzVL_yv4B`S66mJ1;Z^5MkBow{HwpVA-NO;a%xrLOS6A=wu;g)-Iq0k0YRBR3EE~0p zSC-^^1#U6!UN%#~TkyQlX`Fl2Um(1!r~vtwmtrIG(cvvi>M6T!ou9Q?B=NZZA;xgk;jRYfg*U!)gbYNY_PLLFY{hk4Fbnt!(lXb2-ljTN=>jPU zMj=4nh;?om(ycX_=UE*{{rqiOoot~Sg~0A#t3T@nGtnL^;nkhCrZ&S>$%`n7RBmt0 z^KZQIDJceAjXU7#^ydeP{F_Vd29?>hZWsTkngbmXaf@z0lYeucT z!Xm9)w1I|I?@ZdWU>r+<`#Wej5~Tz599Wla+E zIZFJ46~kM$w}&?v0*4+-dAGM-OQik@64}BY63@~+uFbu!){^Qr7CeKW_^W($s8ARw zyO6&Q-I2%37x*v4 zZgs!8Zv6Pu+gsLTlmFqzuieyF{3oa5Iy`!T^B1D#8sGUyiGBq`o zV#vw||Lhx_)BI9y-SULK}(NMgY4JJF!;p-D~ zK6*bYit+uRZ(TO!bUm5FdO?0M2x%`byRJ^%Ur5N3j&6Vt-0fImGL%e})SvsE&9sL5 zVXUH}Y*=;&zZ8rjo5EQv+q~$x=>2D~U+FdGNO#oBL3WK3=>DArGsbb#f{UKxY?b+X zHC7+6U9;Nb-8W_fs1q~ETIs{4&rmpge5cuSx~tPxjy5OfY%FnlHBQcqbbe^)vs*OK z$R$rK9i24k5*HV%h>MF)H!J1ICG@YowQMU+_e~$ppKCrsTk~w9V`54i-q<;w_$d(_ zc*axZgAV&;uHRC$t+&k9))tI-&O4Le7bPe4t@ih7Qw}1qR@E)9i*Lj~DyS1qidZmC zyquEr>|v&-XNzgctQh-k`?SlMMo!F%`{>HcU@>&EwbkwJRg5Hz!02A*8l5|nh`7HB z3kUlIUG|_eTek=vM23WzwREC-brMl$#EaL7xE4BP^b85wu0L=sN_@fTrVby>X;loT^%GuiX=^J}F}IzQv& zD!j|s@V$3D3GF52c?b!4Myq@>IXi8?GT@|f^6S?x>0!RRDli}G;kAQ};iUexkD{W1 zX<7|cvH}MfgNbjeQ^x6uuJlufL;gtfg9DH50unOuOH49@OF(JRQ9gnp2E3!5R1#;W zDC}GmP=Af?i>Gnj@#5*&IQcF-3xuP}Yo>zpAU`(Rd^~TaS?)EaS^V?DKmCIu?{|_t zrRY-lwJNkxVoNAsLZWx0IqlOCf)-D?H{bYfw}ImrYNtYQJlGpJ-{?~9KDZc6(x}a( z<9c^iQ(Er3*vvU~dZ1dwl5f5L=WETljP$_l+9HFVjc0KT30vMEVETtxkwuMRMjZ=$ z@;jdvQ1hJ!?AFfVB^nyq^%_Xrndt3ojMv#jT@(XSv}iO#p$iGOwLsmxr=9CED?aXs zn7h<#>m*nAngs)4R8r6Ml@$;EjuG3u(y$Dqjl}a*v8n1)@MO>vhG68q?hDbK3`6h) zrw!CBubg+Bc)0m$z3f2LlBFRpON3s}M*|rF;ax)FZ1YfZI5NyaX#$3E;NgAP^sf^E zHlsQ(tKABlDTROTw(X~S6VLL=#=s9tPS=*}d_i%qp=0Cz0TECRP`aP_Rnq15@+j;< z(C(ifE*+uRFaApWTg`WhYC#sUdgb3WYwibLNPRRhF`0gl>Hjm3cT&6P!@Jxp0mp`Y z5QY_(Lp)b2d8;^AW)Nt^-s8IRoa>{&<(&^PpBu~WWe8HH;qGEB^QXabXBO|~DSF!= zkxCJS#rG~D7S~KQLgOUaEDO4>yekbglMJ=0uFGPbd}X|~TU1o*8{PYw)8*ccl;*3w zu~@aH)eX(Ke@+&gFSAq=l6Gu483SUA=$NN|9Uq6?-4q8q%gaUYS$dt0N@9&0I?-%} zqa`G0s_2#^Ft@xq(iHT*uEK5L)MN`_YaEs`)m+>jPW@b0dUj&&I{0!i{pZi0#3VFv z@A23O8i}g&Rgzw7ES#vUt??Yrn9loHuQXOw>twR(yPyPU_E@5!A+-HiJM-w!Y^Lxb zRaH&)Uo%e9F}cwsVB1I8G)t!E6b)OL~(^qii3lrX6x;BKL#-;g9Uxx{zA1(S67!qz4oz3 z(|Sy$qUWVMFNecH(@n_?zY+BENat6R*8fM|TZTpTMgOA%2q>)}T?&eHx0EPIcXxMp zqev(vAl=<1B|{5>bPq9vbPOTVefNBS|KI!j;=Z`gy*~JiGUuGV_v-ao>+G#z=m;y? zY}l;^=bW8-7i9Vzm6w&df3H#$q>lAzGpdkdZ<}g$@?s@DbVIy3I@q<{*xX=TMocSZ zdB15XFYkuZcx+v@&Z64X0}J4RxN3m4!vhraUg&05XVnKSivl-oJ1|u`Fg!e+CE|C| zwK=@GRl~6C)v>&6)^NJk8_R!qh=UG`+ncNF+Y7{^e~yaL(*Weq1Z|EXOL7vY}BnLbiu(mjt;67$ro zC?5q4Q_5b!TB#LXqV{jgQ|6z&8f0eWQF9qlE>A@INe8(=ph?a6qsgmMuTRb0O8yan z-2+wR5vD4|l1y|G~d+1q(L!I~JoA1Q3l!{IwzM7UH9l%yX%E~ca$ zaA8DwhI10kZ~%AAZ8f3}v<^7b%q-SHq3a}%#+T()jUV+{%=l`>X>(?b{8(4*&DtLk z&Id$S4Gm1qG#sn~=dQ1SJIurD24mU3J((<-Y1gwV=XyzG-6lfLTDadpsjX+(O#C&1 z^dw5O`_=D4;3I^`V5C26_>-H2KiFnR8yhb|Jq)hmcriMm`c-WBvW>)3@buCm22yTe z{0+9hac` zA?cVEFf9C5;?RAH<%o-n77{j|7JU25KOr>^R&UH`!sdu(qkh`9*1%Gvb^r7sPUjmN zD@sc^ic{(bnOlxeuWvU`vIzY};bh?lX<{94Zmf4{RpS)8_44sI*+JBe4tlS&zo)a! zAWqZN@?iDckO?8ug@Kgz#@yW8K3mM?Km;oz(ch&uXOo^S(nAeef(YH2Xkd&s8^(O0 zy5)X{E!D$*`{^8A_7V|2+tf4GJ1=Lb5gwE~(B1vguNF4rwdLe)oQ&6yt0BJpjw@QeS>Re5iKX`aeY2Wv zsG28D9ZZR-%XO}dvSv$yqV+;k|!NLjmtM(oaecFWRN=5ye`9>RYLDLFx{ z*9SEx?OVsQ$xh%|!Te=7R=756RE zpyS0o>8Rje+xZahQ`y0RpMeo*AA)Uf0zo+Y*basaaTXTz-FoA}R=-P^ni?858-wh2 zOPOA2>C1auOb$!LDV-z30V?ik2M&5Zj*{Xc$sADrcSE=yr@^H7K^9&D*(*594j)>5`6ZwSp)OP}vS- zUzU|gZ$A9IIz^mT10lOEyj_?mESql}u4ryLXsRMC|9;j8^!92$lD(|=kbjhy;Gs3R z>*|y}sI)D&$hGBeM@i(e09I{81FJp*K_K#9oF(7q!5WP2|0S1IRpAX*gHRip)Xj9< zSTsQod3br>`O^R{RWh+RvHD-#1|oxLKBsviPf-wyS_ZnSJ3Fw8W%>T=XUmrJBDE>0 z)z6pu+f>%74+3=eSjw3LH#ZHH28ZgR@(AmER2Bqt7J4A)>s(xK)I&R5h3zFK(6gW+ssXbmmw=T4FCdI z<6!U?nCH@Z^<)FjRM*$k$CuK0G%(<5B4$HNx$E}yhbrDI$|UeQfMigmea7zKd?!mJ z)7Ai_=V<}Q!~bGPpMlI%oR;=}E8Fgr!pWU!(TiQ5G-)%z!$ZjVk9f=0;i<0&!lB9L zB!yEJfKzYKCi$I~7D~+;x2i6WdAqi-;qVscVLRn-&& z2L=me)oXmqV(-&tc>DJQ<`8P(GZ7I3^w3ZwmB!g?;mI1THNT`csxV) z6w`HX4 zh9Y3^q{i!}b5W3v_R)<@Xy|Gd={dIXvfNwrcdO(}y&IB*M34XtUDf@yJDtYu<*3aZ z(%|t-HM)kru7>>KgP*8qcDVtY6*^^=mC@SbhmU$)lwi{~AQrWRn6oM;B_=k=D1k6S z=e-E9Gc$&M3KUGt!>})(6JE|yPl9-?>kXn6i8aYqwTx68#jGQP@S#2sBv&e=xxJ=d zysLEDNiEKf`H@ZUuv9MtJTDy(YLKlmF*B<<8X7kJ`wIe2?vPNV!>i$f4jyN6m_541y$mPs zFscSl!jd`uaqGJGYv^es+}8mY2eQr7%K?e71K1ewWSUsf7Oz;DvF!{Z*4gA(?~r(k z-Mf;qGNgeo%gvQwOO^w9z+U1pxQcty9G93#s4tp=Up6<*F?*Dx@$eg?T7h!#e^&m( z)Zw|^<#!8TzeOSV+LF4iEzG`YBogVxMmGi>^hiNOyUa3M?SE+j=K&|74N~l8XpTCfkxP&6A z`R|>G(m;d+0wdz127F2Z<8({mLJJGazsF~ACu#qf+AwMQr%#_EK?g0cT{xX%wV0b! z{I}Fpn`?5KfD@JU`^(!v`0EAW-H~<|sMzD>mdRozxm-sD2toCB`~%v9%F+^LnG)Fi zD{YO&$>`rD{r9bzqAUMp{KHlt;}=;9S^)73f)vJRVP|U#ZS7E*3Odle2s6j&r6@tz&+DA7ko<20F=PQtn0S=4mg3IRLT)3TX9tV$jew|me~?W2-jQ@{ z|GP8tKYEvZzJrq=sq2M|(R+zW2Dy#J(?9$c`IVw$)7kl<{w3tS0MOVc9~+YR=F!Ke zzI`ic&%$7ij{4tT04fBI@CR|)ia!X?mKI9!96R071tff-prEjMmW4%IQ76R9!}F=_ zkSsOz0Rd!{8n9fnye$b0@gwxW{d9*3Auru4{s#t+Zob>E&-zfz{O|ajxWa8 z7Ag1NC~GT@I*+dhRhhzcq6}#vxzTs$zz{oNqDq^x8prGzw}rlsn%`SkSYSJ}1JzTu zkw0ej5L{A$n!!H%*zwAN4cCU$=o0Rz|5D*LzN${r(OSQms>oec3`p(UPDsw^95E9P zF+f**Wn|L#4Xd>h7?hIUa6@$ZxG5Xmy`VxonWZ30LTKVP2~X|!?|VuwEE!^pE4&H- z7sinG)X#9$2HgjiX0}=%`itIOn90O@^+ZHm4-{GSyov(2E#e>)o9?nmMPS z)B*CGS0W;97SHN5C*430n0kDa3~*&Zxw!w6+|eAgx9Ht2*h%u<0^o_-=R~D0%pc@Y z;9uhr<@gj)JVjte$a)a*Qk!A*f#DBjZmZ$%i|50vkt%_0C}Z> zDh$-_&fhKFWe+$34WMZzD8B%B%>6r+%cBfDV2q_kiJfsA09kqPHQvU+i(H~KTUc5w zz+A+9x1Yg7;WvRDsrX2iMzZ=O$vbhaR6_*_UCqo-zbVH%d;tWF( z&qmt7O~?$gy09bjl-#}5Wvw^D43%lwPYH|?H@8!8nTPXj$n&&aZEg+0)Q;mfqGo z=`FM2J~D30lr@eDkOC~fqzS6?Z*E@xR;mVn@OHnjS!6JoRSne1o0;4Y{`Q9+(dW}_ z$Q%G*{tO(bsN&KH^&QaH$eNL|{*K z3oEOpIj5l%PEZ!xRu`&(RT-4W(MdD$@=nW-_CtjnmRfZ>yzhL5ujXggU7Oe4g&It{ z!)gM&?3bxI6j~>%Sk%sE%)slM8!RT$0BXm1GLqY4+Hy{*I%YH`FM6Oegi~#fw4(QU7`m zgqFcFCEosQdz+jO3Z$)zbMs62N6^CsvV-7@9#RZsn$Y-=6!|gx+!*;`92tyEFoIc8 z|Ns0Yvmopd#B@XY{!D4}cCDfB1a1{XIC%mH(?h5Ge}i16N%Zdh^%QdIJdX7k8@NgI znfMRf_kMFaEVnAOh%P*K$OPUq& z1#UlEa+q(pO^H{^7ltUc%YVz^4%wb&pNkfp71C$w4*2t&3z!TqBll|!*peNyydudS zk~T>}?+!-vc&CIbh66+XVc01z89!AbE!Q&CE}ir!hI$-;ac;>B;>Q@5FAf&?y588) zeUY-AkAAVa2G-&5F%*!FTT{T|9*Ure#K%N~nlaydVd7!Cb3yQs zh$vzVck6|M!Qlf5tfyBqNm|=A_t??t?#-4#)Z@*}V*F8%f_NA3l&y zkbQ}O&he+f!E);MC(K0-#w8p6;ZPeF4U)5D2)U>_Rrni(-x^ti75}%Mb#wgRD#kK zW_Z2Nv|qjicZBk_wT;WqnB0^2ZiFUY9mF2+g{0=WDEvUlayMw>2kwQR`#e<|f zgYkGX9LI8$n}z+v71KGfDra=H&+hM3ixG-87bX73LB)z0Qv>%-?`9E(_MOHGT7X1Y zk&!=ph0J}vCz_>VHJ-XxA*WA@;K-4jhI@vJ+_eZhX#mlSSJ&1rV6Hk#g@YBRbbT7U z)v$Z(YYAK*-j z(fNzq48>yANwr~#-Yqng=|Gk8XghxETMDP9xvc~$8fHK7n28CsVK!MHj@$cMGXt4v zc^{h5UdW6T&{K)Hzh#KY{7QdWWN1UZW*-nz#us3oUX`iWIJo1^#3(3JYE$a^@`X$; zC$_L?$%GyAT}hE!w8L4OC9Gld_ACZi<*{tRUVRr04%lbF1_(hm2*JVU{~O?*7kxq~ z?`iS+CyfI6b=G5!6SEle{?vnSA>|Np76E!I zsN{&c+#g`Igo&PBKa*A+jO7VQLFqv+ULSJ){TPe#qrw9`2!YZ=(kn9QFOo8353nGs zv2-%B1MaV8=?zMX)1N?ku)~_p=tg)xqC<{G!IT&W`=M+Q0tRr;=YpZ655thJ4=MXq zRbvwR!Fi;31RN(Gc#Mp2#_)7w6me4*0m)?}_bl|_l;_6V-IOEBxKv_|kS7`?6WytA z3Nax)SSXT48(%YY6a~G*QBF`sa4-{TAOv(o4A&(E^2DZSV@>oHoJA-Q(+|P9_@>e5 zkbrneS4%FxCy*09)G*QB)QRu5Opudzy}G!N;3dhb6!q7v;?t6mj-H<&F5x^pRX~NJ z)9z9-;-OQ3;0XhABKQF3(ZI^?Ei80os<$rz`HqpzDBT?ke$`m5hBEOC z4B?;-r8;>293Zl9Da=Tp5Fyyy_u?PZ4PB#&WTh0nfc*={;XK4Ado568gW`+DS`8WF z1_X&y!|^=$Bvz%9UnDLbe{$9vU8|@lUs+o5jh+`B)psq^%QQ2C`si=oyLk)?V-eB57wRggwTOmp=1kxn~4Q^`xHeo&t+^K53;`^`~;F0$tLsYWgOANSgwJ(iZ4OYg%aM!9VeKAMW`~ z9<)<<<-yQr>>srBda=X!gN}1T0nz!dQ@zNOwD@(;X7xX(w&P75mCu@+_lXPSUMj&> zX>MOtINOqDB^R&w_@wa!w&KC2^wo9QH8rKen6#>*1QL?sM#kx+!_f2NkdF;;T6%3^ zVLsbFa?+o0T1R5EcUsFkE(>49q?zKElY{G%U~QPWsKkAV{K9ivRxUJDowc5`PYKEU z68x--{tADk7!%KW^@mG*0drqW^hL%md{I(O+GdtFUGv7cEU@_9< zeX(-!|1fa5uqy#Epg~=zpbNLDTX*?A`gNoUC4ApCl@-gQSkdP9pDvTodp*mMsiIiX z@3@;uH^*Y(Pk$=S%phhz6Pi?83`ZW!f|EOZmJ>1^FieUOh=$_?C81Mt80z2Ld0i?& zPkBiUe7tfIb~dI7wOA2L3fcy|8bxsXBpT+_?CdKg&&IibYo5*SK_!Ld%o5#Jyu4Qk zSmmafUHO;O`|NiQ+w&3|!BR?`f^HF;W(dTqdf4ZqKoXLtHoqp7>;g;P)y@d&#G*j* zJ_kP=r}yrxvAPfBHm+&J)4u!?*-ecs364wXyZTbU*9=$y8>bRPJ&1{WE6n#7#O+KuKi+BJWHIzxkw zR%^BvfGSZ#uMZ-1>AHQ}ft(W&bGSF!C5(q6ma~IIS*n2u;9>h#MUS2KdoP`{%$OGV zGXwJkhI;dqDiB?m(ji1tJ|D^2!o-N-{eXbD(8+m z!=w2deX<%tSJ&G7^0Q~DCx{+yTd}v3);f1w%vlZd5)ze_vZlUnUYvm+o+EnEvGeAg zZuX-o=!oA20gJ<@jWz8V*%{q&qI!I1)a2+u$nr}4Vc_2VO?J(>ATi!FY!?wp-0*0K zsmXqPaxghPb{{o8)N8>6Lr2eR|4WKfqF&>+SQ0DusE4;8sEg2WcarN}ugl~TyhZLmINf#&&J0d>zpR?XpEPHQJ zasMC{vy@MtsclrQxJDTH2~3Z>?e%>2v`ePZ`Cia%+;3}u@BZtHdME$h^^M!{-5(UR zdHW#m@#n`P_E-<<_Y$@2jmljIlN7zEb{Y3s&1ayVHztGPuH6NL?EHtxO?6*&5pJ25 zlctXqfXXQuc}uJf4DeJ{R4n#m(eEVOUJqY~m^J_OT@BJe6C8OlM!%Tlu?9G{>D6v|aS&BDL=XP|1|@eO=R4iGo@}*q^G+-*KOInTY#= zYQP;}jxI*9X%BBI-RfIlH&o;;ObaXd$5Y`ORp1$SKu+iiez{iq zZAK;cI#R~x5`UHK^PoOxAjff_>Zs|PK+mgwzy8rP4_$zSuE@YqXpGQCuhIN7(ya_< z@F@T{zsj$zynIphAlO?18_jgJGgoqxb^_^1kW{T>S&TC@Xo0nMfI|sC%-G?DX_g;h z!*Wm~o|=ufjR;wiQ7%m8#Wlk0!qpEK%a!n{?FknYJ9f(=>;RDagaidVv71VGh>gFu zbLdg7W(aUeKd;&j7wV+Z4V`99ouoPf^AV~>YS!Ev_Rj^h)!bC8XzID~sP(E`0xGFGDI~t3G=X`Zi6mfjO#c`TM$B-o@`H ze>d>SCRT)=e72u#blAMDh>D7stm>8JnY7Hz=+vH@i}4r}hU7SbsCr1d*d>FSNqt`7 z-ug8^GaX$8LiM>~v5+^2%t`jI=2m~1@cx7mC%ye!p2$4xLBGJ3OuXb0zVC)KOM1+- z#xajBjd_@rZYtQ5?K0n>Yi{9~Yo7j$O@q|q~d3sAh`U-rHJjC@APH3`cY zaC%V#M{qmA2+jG5t^nZnvc7Ooua<(=_gie@p7S9YNU)>H7`N#r5LZMl=#NK($oTdZ zMXD5R1^zITt}fu7PeVm%Heh4DI&0!Bu2=tGmxm?XF?o9G8~E!BX;J+(GNwuZtzDR6 zqd9`@YBSIAwLi$OW1_K*QC;BA;DaJu@GvoeNJ9l#eGKO3hDq`XLd2vNDqC zYu+DUQoKLiVCQlBjnQ&&hLziD_li+%=%zt0_QL@nI{(Q|aPGyI+J73wxhrq z!&#>s;B9)`#R>^;LJzXr|Gud%+5HFBsh`T zK2niECv@D_zXyI>b6=bdLWQUV+<#|qB1{8*n1%a@=)@*xrjjMjG#&qre_?BFJqCi4 z;g4=WnTdBRforfm;vUtX@@qM`J#W~CFDJcW)s&*9sVLovtJeThX9Qr^pcLVmRzteB z>}$}zE9g7rkAF3pMhO{9J}nJ?#wwza9MhrxODk$Rr8apWaWzR&m4ozK_t7+yXzvPB%FJCVV7a$aZ}{gsX=c7^;3bAZM1XzJgGweDkk~!v%af@5wfK zHD_`C6ia7zRdtgA{295;_4GjEe4AJGC3)}l9MQv)&EJnJ{q6&9PeMtMbK11>1s+oN zrIO->9T~`^{<)eP{)vZW<~Y@| zJv^JK)LXMPOC)BVW$ z>C;$PRjlWBrC3MdTEk~vc2NTC%u1aR3ZCDsK^zj8-@#sp$uG=1zjD(`bIUr771+J( zUvaK~fQ{7%)zJ1Th+Jet=e-*k)bRhM?XXy{aadtkJjtNcC&Uao0@%-&%E3uipKyOV z?61577?iXAkhn2GK)9c<8UJvkV&TMu;hlLu_vH2kE}b=nyU#zPMC~^!*t7A4dZ+X4 zUMke&4A)g4!}6ISUz13i$ctZFRNFxUJpk+WiH-E(w7~*Gm}^Q;@K2Q>+Fi6%6gM1Z)MdjD1~^wC`o= z>Dwo{V?Svzx^3+1Wh@?;p92}~2dwEhb^^wdF-3xPCN0W}Wk#A4U>6$ufd5jyb@ zTHjS6jI~c%-)9@dT-7M(L6lS&msVgOW~k|0PcXE z2wL4y;*u>rVX2pQ*;O8tFNXD1I+-;E0BpA1Wrp7@-39CF9eRLlh@#K? zflVsw*s4gDN@ik)K?(cmlg|0zs98jWTk-|}1n(no&1cps)UXT`YK68yUF&h4&}H(_ zBiMcH+P<2lyoQvfWt1y`EI~h#%Tta8j%y6T1l{;4D2HRr;~E@}nDhPqDsuxPPs!L# zGUVhER$m(briw2gto{dJJ(QS-W)CW22`#RB>|QcDX&Y8=fX*NYfr1Mm$HGOls$d3Q ze%@Vq+Vz8=J!b*;HHSixG%s+0xYFmy;Aby*-z7(}DbJcqCWU?@yge$(llvB*_5@*% zEYm<)K)vE?!MIspeU!n&XcT7w%9SS9w|7A#jj`0CZ_NHlGcmJDmL61N9a@cKPJf_B~7jeBQD4>s~7M2ojI*70lMHBCMyw~Fffn#w)b0~A&CR&b2Op(!4Vq9U7%oYxNU>)OVkMuy!!e5R70tDv7AvdudD76(GWT8mFg zsj70copg%x6MFhUPvl_f48fLN@H2M_FClK--S&-&+#k~ixZ?utM?Z|^SF{$tL3*O? zsV{Vk0$4Oz2|M@?<3!*G@TkNy^g1$C^e}2NJg=^H=0R(`c6beNl8;N z>0e+Ozsvvj0!aI6xaA;1u^{6fV7RI_U+5P$vdWYC6UBY*!*s7w^IaU7iSae*7cyi! zWKh!zCAwqjoxb}!?c&%V_?{rS*PQnT{xJXj`Nrop16fJ1GAfZkbq3aDs~YPV4^&9b zVT4a7hrfAXiSptI=?BN97%CkC81Bw-e)uU2reHD(|JScLoO;L0ZT;S(__r2^l*YB# zXJ6lc(i?;v5SKrg%WYcmL;^HpeSYO0Iw~$LqoXvN(^KUDsWN1`uUxt}4!OMdyFUsa z=pPwxby_M+4Dv7SHd{Vk^z-;No5WZU-PvtjYdz{vw^ahx!kghRHt)rJve{xMU&$_1UEa=JUNzE=d z0gb5e4r9|e5ymLIUn1E1$6n2BYLXB~HuV9HxcsGFIxDj@2l@m2siKsrqd6r#>ZN7E%~cDFN1CIE{6k!oRCG!p38|eUTma(Y*#jiY=mZ9^=)C`~phx?tKo&1)-qEv+z*YA)R;KsHEfpBCiiK4VGwakjeyU2F6i zp!&wF6jMAr8-v+#|8-(=LRh4cu59G|U9qH5gH8qh8pc&=1&k$zP<$alp)G9<)E8E}lss-Y>|EkA6Fv((E3G0$s3|rwtRhYeHX#at zDhdu-TnGyZxm;aX7{rW|$HU97d`;Ui|M+SVjt5z^08MR7^@qYWTJbzKKiBcjmmlla zfyTi5+-~0Zf)7~|nToOF@5({9!{qfz{U0Ao8Ps6wNFQv;+f?7eg2I$VuXX27U*=&!EPd3cAN>=Pc8ud`WRz$G?>7XsLi43D%jDyhbno@I2Ws6QW>ZuY@J6(E* z_r@}D6>AR5Dm4Y%{jpclw(H4Vlg`hg4lnT4B@O;`VzKCgRFqDXvxbWg#~-ML1ONDo zSD7cX(I8q%Y-G0rj@gjIZ8}FMy*_p_0ae*{o)xsPKcPut5OMck{y5#KldRyJl-XAy z+pnvH-R57%2+tL!zce5`y6naX;~&hn6_}*k5p;vLM>eC;Qd5d(GV8$1YM>5hlrpLg z+kzswn`2tsgbki^DM{#Scr$_HD+p4wuXGCd=}Ac!30z}P2tUK`B~lFBKE%_r(bA0{-(+&~|lT$s7!;%lRB_Qa_Y<56#xB8Tp;MKMjLf zZx7+fL`QGY%K*m_T8Jn@$PIfCKOtKqf#g{Aw8~AyNrvlTU`YGnNOF`Y-C*)?Ii*N# z;Bv?E`zt%9ca3RIW1gRD``Y4D?G);x6DaT+T{P@CQD|^^gdL<^Q!RQ2q|!6eiAe6) z>OdRL#b$FJU(&%Tmr3jOn{5J$p-hzq_eC%DMO6gn z1br{srPaN@D>^3Yf&U5l>=w9wC-idZH#V!W2&0FHPyK2QUHMat>3(1@SE*GqErd1x zBjDJH!Xt-J;glpTU8CWU(BaNoI<_Fcv{nUE^mgyLE0#D*<;|L$@9`opa!!N3=(#_y z&K5O%O@6V%U*8WxlN`l>|MmlHb#R61Y@b)x@Yv-wj?+zSVPUa8qyvKbKUvq47QbT$YH{B$7`Fn1P zaUfR}DPA)11tP+tDz#4fu}@(kwmVrTwfA+@xU%ytx9(dEwIi00ZNHDKpb(U^)$`8d zv_1BG_vZ4LH55@(`u@6iZ4-NVUXMzY_6fxKC~Xu&XO0ZwtF8Y4CwhzA!+9B{uEs&0 zZAy!p=Hi5#mzVEM9|Ki9Xo`iGe*!6?tZb+lGQL}*2>QV*bW4Q*8tm@A+hsw$Fi3dBF-M!5}dmt-?rp?s=zq$ zr623?jBpgLb-%(6w0o?(86EhT(8*!>Tr3DDffw@e_r~db9oI9;D=iyAU7BVX?Y@*j zaQ==K89z_|g#@sT)~&2tfO6Myts*+)LUnIkwg@tIeVhDKPwoImjX zN{jo&>D%^OnPSrwe?qm3A3&~}e&CYQ@A&^|19}BW5&yDL&emI!TY8BleIF-D8Ewj2J>oEr2ZgFKFp70Hn-DF}2rFaAe|^A<(hB zX@4TUoXK63VEd@mnO;Ul(1mIXrSqMQqj4rWB!c08yXo8unwxd94{qKLlce$HS(^_& z$BY@1GFw3lm*kp}R6exF$2h&4mu)-V^00M0D73A~S%05IDHEgknhf$p`fux$f00gC z5pn^>i3F@Tn(xe{5r> zD=}7kb4!UL-Vx^v*kWOBwVReYv-_`K>-Ua(Smg>K3}W0I4LdV-Qx?8&G@w|X&$*hk z@?Ei~b1M>9AIeEY5l6Lid_wJ8TOr~F590Y+`$Nk=N8}$rr<#$q$L-=a}xw>^QlQX$lt?_qVLLs`{amBzTm2|FcYy$(*n&4BiZz zvAHXZ>1@$_Nld(*I;FE;LOYAAfGcd_l>PA;c!C*u8z|zjkNCnhvz_o7S*l?6H|(>n zpi9jFk`uHu`QHmb!I9ky86Z3S|McrYw!W4XlgLHVDvpEmxc;APhe0;Av@wFt9K~=o zyl_dpV!FL{fFFX^AaNG-kgn>xG(E@kkYST^_KXe!gn3@}_9RM3_loj&W}W_i)*vM2 zK>PTUhUv?9fr=cYQPjN8(c%!$)uJk+qxC?E#HhYBS&myay6Ui5IT#n7rWFl%W`A0s1uW7{CN&`ejth zrWO_|ii%#Mr=ixr{*(8@{lCY1wrsezY&(KJA%azRp~SSbvTxsrz$IW`tGsEH#iXyu z8GjZ2Rr&4PH*E%VFa<|4i|c)fpaU4I+8d1Wed8(Kb9}a81DJPsBF!LYxC1lyPx z8D&ayk7__^cDH8%5J~1t?F_RJG*p1K3C+wFV3Sa$+{#a0ESs6Alnvw zvjL}#IZAqad$kz~<>C_(5))H%zX`C*LG{^iDYsS3%n}r{OO+ycIRSL#+_ESuW3gcg zn58WzqoCsER)_jX6+0^_tt=y>LYpC9PE~b5R>lRfUOFj6v1Mo4^Xn%@@9r=dC<5PR z$L4G@qBm}6DC!e7afR#mI`C%6V}yA<^X7j_qU)<$kpOzyf;A^5CfA+aP2)b20@&)G zx9hjmIBGSWnSv2NMu}&1%^DZ6UMaN_e+>;&y zt(p{c9K~WaMn)W0fT2Zr0m{0l9Pc{|@Qfu)mPgi{HWm~l?P#r)Vk!=~rb~=~=Y6K5 z9&pUcuz&H(`&r}C*NhB$B}LDQ1d}f^onQB4iHDhr zSwYGJz_;31Wn>Q@Z>_DxdpS7`DVh}A(sC}YiNve>Ca5K80P#d_eB`FJ2p3*jCK4<*;U|Y2Qb`}L*a{#|`p{T)q|Gi40wQ_E^ zs&XNDu5waCac@XdUr$1zMblKT@%KQ%3pFC6gN?Rp+J9H^tK~h{Z+7p|Pz`jnwy3ja zJADoWN8MPQ6;oGGLjDl3)MCbfz4{||&6?oP1fmTroCPzt|MDIRV%trRFX1ImEcT~@DLJ2eIwU`0@7V zqDNvjT#JseUG!Vs=l0l8nv;({{t2e%b=+g-G!N~v`M2Ya+)8iCJ34EvnMGad^jOkw z$`}PABB|>F;BAqs+o2(xCGX=(jiz(0pi2_;M-s(~*}XkIbG+vX$R#mR z;$fQW7`h3Arz>KsPqUD)tZ#&b;j)>cDTZS*q%=~Rfl2=C| zf7917;h4l0m-t@=0S_s!<<%C)Y?^RTZbwJQ!7>>+CClvmf3zqgf6Os!&(}RlJjV2t z<=gzO+KrVZCaz=h;Me5ig?RPQ8H5Cf_A*oVpFat^4fHZXCtr|@Atyg_)h2k*S-@!4 zY;1D1x&QQBakWYggi~^5-#b4r!W+Q(B0%BM0+4M^UT=sW%dXMw-ZI>G!NQirR@k3i$YPktI zm3sS_6~{ulOrrLdja-}M;KhT<)#_B)X40{=Ib_+>fuibU%pJ@49m}!%0RbuL>E*LA zu8+n1}hA)&9C(Q&1s4BSRGasRcHYfU3` z%vN#?zZvT4LlXKb)M*rcISEJr`~8VwaN6 zW`@INSGv)=-q1ghct!N)6%o^{?Z)w?^Mw+AGAorZk3a;VYYE}DIalb;j*{$|&G`XJ zD+ixuqf&M2jjKcrL2Tc&XyTRsrN#%>db7ksJ^CkICnpRMzf8s1oL`aT5K&MC;3?T? zhS%RRQ`c3uo=lVt?t?Aw$7Q83aO{vG{~byGH3^ib^70w)oCO|M&*Z-p(-QJlNZ<1Z zo6bSAcs(y_$nD=gf1Gi#g0I#3E6~Iqr^O2&0?Asa!vy6%Z5JgDfeOdMc=|_Tw>zWG zF0SAIWc^=lU1wNRP16R%pcJXnL_h&SiXdHDKm$q<3_V1u^j-uJcnD3ZAOr&8!r-EjX=xG2&w}3PuF_555+dO< zk|7Je?i={Le5%1S96~`D{8O*&+Wj+KzHw%BY%f5`eDp4;UYdQx=Kag&x9RSBI&}=b};AD zHM^lzWR+{lC1#STnK@pi+MO-Ytt1ho#-8Re&4nG`PeIlUmDWos(oMw{)YWBqw9w#jZ;9_oE-fKZ|_jrBW zY0?p_1{j8okQ89wyAckddWkV)58qoe^RBCyp$v_Zb_*mYai9Kn(c9cVch1hGY`eQ# z%hZ431+7AwwK>fz!9V_oomV;Z6HB3b1heEW#Gc(qiTOi+8n?-9IXSt`z)#pWd4rW` z>|Au_$k8n&jyP`S7;JFoLQksEoDq3w%f-tRjeyfx`B%B(3#&!c{cY96Qv|PdbF

T0SS8tNSw@S_0t*IPxQo)1WK!PrW~j(Wl};MN2Mrj#fq; zh0^Ro$D*{K5qZi#drK5e_K#(-BSgq?Yd9T|Ixil5_#23+BHGz7oO`K?1?q?5^y*^; zZun+8y@#Fj#4n2*qLT~5z0SehvUK&(lGPP5&u4iu5NfGv*?Un538!0!0l<1>eW#S0 zhp&QJREVgyNrQ9+zZ%GzCQnbHQj%lT~{hxa4a+|GRSiz-VzM2dsx$e+wGCRvZG`G01 z;Yv;>Pe*Cmvc(cURHQQPUcDhA*O42+XsbfUZjvv-5yvzqN=-$v|1?;c z1n3WYG!YerTQMvkdM|~$K`!H*233wAuLTi_HYVzER@516Y`1@x87xoXvYMNtPk$}Y zNrnhSuk4R%_@(V5N9VOw+p)B{SMUbK}&}gB(<~y^U(vSU?^S-k`|T(Lt2CW)s2UGxb0-<+?lzeh3J4fo<#WWiGMyB1W+^d6ahj zpW5BN5QfZB9yo0k{CFAEHK2uts! zSS(g(rdcS~uCaP@5%7Z>%rT@jp=}{8D!Xt+>? z-q)|+)>q}_)vc^_U)5}R;(+y&tpi}Jt@ z#ODDgz<(6j$W_v~=h)!`yhy3{Y735@)80_?@3-kMey4L8ib6+&0|T*u6MR;mAF|h( z1ee?ZN;$VF1~**^n9ohtNXiiLAc)q{Oc%)d(zf?^4Ykp2)8mFIfsHfiO%MD1XvzqHK)5{ zl&WZ6jBwOZ%=zIflY~cfzH>mDiYAhVS*?84Ch?`mrNS6(tY`>??*D@A62` ziBx5`|NfG-vq6U2aTzz+I^~xs@`en23$4CU_tN>oal_|TJ+K#(t}K1ZmomFMVrF1O znSWjPf4=0ksI)V(o5wWpQb+^8(#Wh%gYi4Pqb~DIsUp!f82rAZ&t$wEc%PKkV~f1= zCb-+k36mWccV*WEc^^X@fj0bY_(qma-T;kL!B8$WhYljwr5+Rg9OG?r_ z<*riPiops&c3uN(Jhk895ViT0abn^C%^X_5sX>gslT&9`K;FF{Fa7xN7akv*x3?jJ zFkuE8E$j2Z-DAL+ho66w1WcxAaOqx#fb=b{Z1_gE8h4ktHR5|ZVzrxx_qNlcdqWC% zFIJK!TU;|pSCgWdtpQMCh@re)^<<3UGuX!5HbzALnDt#e@PL4lKrosd0ZQiC7@A4H z4WF7X4tfu1UKE?}Z;EoK-*uJx9zSLfovn<{d4HwvX8xyYa+h3&&xf8R)XZSg?3!p^ z)4%!yDb(U@^u@QZWe(+9YLb%1L2!^2V(R(Tq&YBsK>0s3o_pE5Z9eI>d~{3Ccguow zq~yF|jg67$Dx^DdbNntjeXL2-J~&OUEyu4}mAC0|*v+-LQ|Bk{reaF% zXQE@WNH6$?a1ndgld$r>p_63O-7BiRh}TK_B+ztn5`q=Q)6lZEzOJ}32g>i<%pPkm zD@5Alc*4}bg;IDt$aLVNqUBVUyhr;Robw~;zg;X&+@wpT>UXB4g;)!|f?0LEwM)I7 zV0^!mY};0k3<76D-2FG>s7GjWbxF4~W-uU^DIWn`?f_etezZ8B1xXMS?hmoe`|zs^ zuG>_!-0BEiU6#Chr&Zu|@F@OC3bR;yne$i~GjZxecQ6`=n-m6crfyN;r9enn3X^IF zpC58j;ytq%cd|`ykvdQUY?vLc|>gb2XWfw z8gMuG)hk&G{2jwwfvy@hLYpeCPB&?p^nxd1zuS%|xUx8X@gXMUk3=k!)&8PL!ZWxi zB8fg0UjuwdrZ+(ECduL{T6&yiLS2+I1XW=XzP=5o&~cZZLu)~d8W>z* z8$+s4seV&XK&<&icf<}#oT%}F&K!xyjgJ*lduGl~$ewER2Q)~_rVqc{h|Uh9AjrZP zX&aFuPOmKz^aU>>5~c~h-5ZqPcYU?-8o9y-O5R1{*^%~ZN(!7Z0WL1?vfZOmnLVA6 zqIXP`bg~#UA=K@v)lW#?B&&eREA$B&K)jLJ_C7Mt6Et$cGwmri?NbLH?n_rpGgB~S zkLLe+Nr;FQC(*FRk3UGp;6UE7FXJMKnU8^(2N|ppV9x_HbjDZtRHTEplGs!h}G zO|u>?vpzD;UAnh;Zl?d_#%RkJ1l|`BzAnbilEuf&xaGQapH6tvlxVx3xT6@*>Q0%s z56RBbF)*vkQLPL>ifcadAh^ik^W(2k1kb+R6>lLuX(67}p8HA3jkeq7IDkB^%O1|r zY}MHU#u~!S%bwq62>^Oh@O=Mz1=ymCWop&hcEdQ3tHM1Q&xJ|i)Neng7n_S>qelxg zgVxKQ@A23FwZ3T!%hAOq1zyvR9nl8{0=EFux|JCG;(`~bM-v&DpJ2n*k!#(xUc~=Q z(zGc)xyQDY)jVvVB8~8~>0hWaUbw3rD9+na0--Yip?+zl7WR&Q+Oq~k>RDyM>g%ih zp&ZPPUA_?hRm=8}>lNNLVv1>sDb0Q9>9b_;5AA|wy3E<-X`8pZ%0}^7%>Ck|4>H){ zc@keno$1oZ$Sn_{hDOA(8fFPl@~VgMYQ*zKMRn(-CQ-4LGpWL>gh`*Qu8plp|8`L| zU-tnKHpo?=B5OHS_y>Vb&;L+};6kSVTnM%2)*>R;#hAKAMlVv46JddVD2(kJXbOYr zGhYCewZKO(hLmU?^z@jvp#PP1>9lGh#%p0Po4Xdom2)$@jP+k&l^%|uCKh-FXes;; f)&JjacF(IVroJq8mi2-_I*GcfHmvx*MacgFZClHA literal 0 HcmV?d00001 diff --git a/docs/reviews/group-chats/dark-info.png b/docs/reviews/group-chats/dark-info.png new file mode 100644 index 0000000000000000000000000000000000000000..4f20cb0f6ea10f45fa5bfba1419ff1afe1262168 GIT binary patch literal 84978 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

@pl}dN|t` zey04}u^XtNkorI@%_feLiZ_UD!wl(>?ma8nv!=Psxe3W`}ZD{6=MmO zb3CMui3d5mf7)2ZO?78(jzw<%>cr#s*pK{dG`DDXa!<*#sSRQ5ZRzl{WS**i#1fJJ zK+d_@r4by}6TH5%v&0|csgB7HTG*e^zt6<7wW9(%s6V0rZI>UEzGX;1CB5Ldl+HR* z)_<~;K5nVi&7Jg`Ns5@XNl8IDzR{nUJBLjeTy|6bnAOFxS26|uby!oGO)io zAN(gV3&{`o1D_pinQfs=VV1jWpro zBUg$4d`E|rV4!5aBHQev*u`s*zkc7i^zRA(*Zvr!_RA@LceOu>s4sKdo)P-Q_zuYM zqyDFi18_eF{FGAv$b~g#UsUFeE9v-xk$CH{NTP%LHrW;6ykFoaWl(wiySxO%@x&+` z9v-IBr2)Vi+Js9dNh9MF1qI;+%oKt&LtI2f)V^cB}i z-ao815QubA&IcC|+6sa&nUpOEoDvH*^py+?@59cRLv0?QKt=Wh0C~`B^!hKrQNiZ< z{|K5BCOKVnJN1JttapJ#jv<^iBx1=$I| zmf|wcYor$461|k7;mEZ~h-CJ-q5RqV0uGKbkaY;-op_c-3L!jqzcC;Md0iVzyyl^F zh%^{ju+rn^Dt9v+?zq2AyulYZXNZXry*NA#1PAm|@SGdk5P3K8L7D@pElvYr8JsC0 zxEndw7BjW04mVF8+ksdh)zeKgCJ(v)4mbuqFrT8RmcR~i(5P|2h!LBr@xR|8M)N@?KMD|AqBWdltQ+4jNRcaSj+GVURiLpP}A|CmjYq?n|rQ|78P`9z;q8~ zKWX6x;<2GOkWqgSKkM@SdS6*M@sh|+(#8%z*Q%?vO-SoXPllvF2KxGKuNPe7kFeZr$oqh-kPqezzh}G* zNVeAh?rh@8O9dmk^%$N)R$w52QWUy|00nj2Yd*>buyPVLI#q}Ez0cvIEjQ=1GSbuY zhlK@@-DTx?g)D){ejG;=MZYaTKcM364 zMsdzBAnZn3j7NIhI^lKAwCh#e+@&LyUMm>-!E*hOaAxiK4Krln0h0k?OcW+Z zDXs{+#w54~SFGGcUy`3#qsVGtsUrMQ_#He1WJW?I;&{OdNlsR`EaASq3pz!}S@nPG zS#CoP2)r3{Uy47`xPbnGj zE`wW0UsMkRvfb=!Tg5l79Y?zq5NJp2!5%Nf5DW$npHL{eoQURU4=Bb`t{V+6g@@g!8zM&&;);Q!iM>*MO};sDW;0fQX%>v>)?>xh zQh#DpdliQd*aVQlsgqS8Z&vQ2{+<8~I3rN|VD06mXUsM<)*^SM?;AunG+q?JsMJ_m^GrKo?5DpWY^ozKDa`DHBgmSQj+1*(VIL4j>#q*Z_Ok+ ze3~<(y)+YI5e4gg*ee6yDHd2=Ix72j^fap(ElplWoK5-5%|b`=;acwb#)+Z_hf{~R zTL*Tn&3x>0&8XLFb2^R9-?sSTbmrVVsH24(wSVE}E^ zKRzQYl<>2V0P`8mA~08ZON40e^uhbKhHyMv7t;s7;ne29({g+(Kg@>$!!J zdh%E?{k^Y*7wt@#le6o@+lj@+)yFH}Vie=pu-`4HwX(spDo;(Vs{s@^Zo`L-EnExZOY~|LY$|6Q-06dT$(6bl<)-p_e49>dk>t z(5<;g89U*bDq*Ags?;}W1|A-{Ylo{I(kODY~!>Z<^L%_AJ>(0a6dS!H6j#Q z46l^fdVeGs`D(7_)q=R)a-tjt@3vR`RUf^{g@sQo6n%O=!k2TE?og8xz!>#cyos6S z;8VNlG|@M3k*F(v&4nfoLrI-ni-&HNfPpz(Eo}p`z%KrFFq)YB+VE-RRvgo1$ANdR z;0~f0I}$1&ExJYb@FG)qiqvXwO%=2#D0?;bOs(b%^?Fa+ynD)<*a6x4s=RdxwM#O2 zwi9zpUNCHS_ItnE`f!u`OBn^8XU>zyKX7j(yrDnPN%!GAZuP4Ls&(}N^+-5yTP^GD zN^<*X$2~qztu$!a(X98}RqEt(=C-3O;o5Mt9-P!8aQmL@>Hfp(L6SuBL@6~_X^d*J zSH8n>Qws#Bm$bA7Q`(;gZJw7{T$h&)XI0PQg`vrHp5m|K?0KG&n6X-6OPRyT9Ig$w zJL2CZT?-eiA2Bp3Q1&No>bk);`5M#ctrJPO+a0Q-(ijlsl>6MlJIGCYI5+ z;3l(hQc}v@Ep`D7o}ZuJ@OY+vqUF1A;4HY>U)kP+wMbyS@oB@~nf7mNr;Q%hyfd`{ z20y$WmFpqP3R9oel-am&^y4R*LQF5IJQAU-yf0p}D27vBEamVpYawIq=E*(mj}Z zSH;m|zQP&A6MFo0ykDw2jgF%CDI2e!>rjr{T+ zPAqXL#6wvx?+?MhCpV+lVH9UuKH-=P%t0%VW9IuM-$2tK#1iP6AdlvFj>WKf{Fyjx z%W@+3s1k;T*1#h=JxouRU$^cbn~s&zxl9!3lak_o#1x-QnW+=vA8AaB%~Xc=M$Qev zzMUJsAC@!mbw74>P>H_xY9H?OgD;Wh!W~mN`_2{NM7j?XiK}&*R_f(#Pd;^~SI$=V zjVM}qVYfW9OQ^6P6snTYX6hZ6L)7^q$uaZgOLWJXdY6ve+;#J| zpCz|E+R$q=Zr88dHf0Pqq%MZe^0i6k`8*Btr}l;bDe8&6 z1uWa6JyrGl$YKfa-N@8_0%QlCm1pU z7Y})JWAkfuN=iGI8tP@FOm40zIy>z$`;O@o5cTHX`lFRv%`O8SVcuV$#3gIE7h7p; zvO;4+xirUw^{{y*n3HPTXL-XjJp7XXPf}PU==d-d#f>q)yo@I`cJZjUv*F5h6DM60 zi3t;|wK@t$*_f}J&pPbFqSQG@UD2m^o9}b_2#t>rlZ{(j z_DVBn?oUq1M3Ub;gCg8ed!g>*C?AW1B1;zeG0%@H9XDQ%@rMfDBRnl_-!GY=Vzc-&rn|-hS;<7pzc$C~&llkY-g6AC7)RQrmzinPH5@ltsU!ueB zk$bc?u{{#gzmEDyPQH-VP{DxJ9k}YdFQV%3M8T;i^c)Er;)BY1;UPWt7HLpJUS9>q zJUJ8x1^B5Zg*jchX$ZbuvEw~Gd>-*LqL?%xxi`~zFaSIOCb&x+Q&CZQg~r1U2W5@U zy8d`I`q`37q2cRXr&wW@XWQ=F&gQ`u(^EC1q*R?gb&~BPj#55tqcA-C^D&A8g08EA zDBbY!qm4Ir-CTA#yT2__k=K^*Ezi)VbEe4KN>etJx^K^)EXejSQ1Vx(4muli5eCLo z7dYBY=1tqhQZq-JHr0hOjU}{d2K7B7^n-MD!e!E`l8YBRL$4Ovhbh^#LGmaOANU&5n4xQ-()lAaa^; z^-JXE>XRHh{%hvEIIiZ}GsamZ)!=O3HZS-1&4z@lD8^@$<5H6crt-20aev!Wyv!ur zo7mYoc=u*pm{QN%AD9j`ub)9z@F-9f9@~-AYsWcR2{ddSS8RC0Rhr|X!;YeNqD=}% z{d9`BpJRvg6Q7uO|D|s7tnsN=93sfcD3{#CNtsPfNutax2&Hh>Ke&FG+FIfTq)X^e zTP4Jf)+)SCElQe#Ij4(KU(d*_RzJ5mPA_W4CutKk-Rj@#!%n?QVC|02iz;`ZO$gYE z(dMkBRvhq379+bqCK^*p?P*d)cUk52u4zv>>i(z1cgv&sq~8WIh_hsEeKhyG!|_N| zo;k#RXOBmp%StO1-_*3RUvYiV6?}&_d3}ub&xmoy7C}u_aV*PXqlW{Z4w+zNW4fvE zn4l2%O)zI(qnVnwdH3?IhwjQ;?&1^jE!}NqV6SVP38Ok+S-VRd7ZE|KOOZyFR($%) z7lAGVxQSbFy!a1AdbK)VhB#|~l^%mRN%QsEE_?a+6klA_t-FKsc7wUw=C)ns^gnVb zhlO3ZbeXI~e2b;_6 zMqngT{-fl!kV7U7`|oq}k2IK5Qts+kAMquKx6$f>jh?58ysy43cti6ZDLAz@!7#rc zuCUEGMABVW;g?w3`k>xIY&BeuY zTTsR~av=XX_x~_PhfZpZnNKl*GA;5+F$!uH(QNa%p>23;7|4{wI^mF6dGRbB8)~mv{>j>Tphk>D0L}3MY9D{tM$5jHV=%HX6Yuum=H5S zl-t#h!N*Rfbu+B@3NXa1o_}%pw#8xiU6y8?kYj9w(gdrqSm25!&XAD8L;l|+W##^Z zHeX|-n)}>TnJW=5<2dHt=J_)HTuWD1NSyS&(T>+kzh8a-@Hepc+T?vx_Tjgzh3<8y z$DKu5em;9`F{hMZ+l7x`C0LB^T5msuU8vW+4Fnu2?_742Q}%&SF}XJYtUCf>U=X5D zE8ewv7q9JLPogfoJ9A=eYI!qHJXz#uz4phL0{@OAixJJMm6RZY3%#_ilij#-B7bvz ziF&QANsXG$m|1HuSMvS|Ppw^$V3dAVvT04vHEdWPCU{r#Trfb!w7rogNvrEqq_u}d zL(x&`wT;QwzzB`1esTGJ@LiIKK-w$*mPn9Qa^99>4*&4=VIltHB2B?C?0G>h@`e>P ze}9LkJYGSf&0h@N`8H(RLr28qksRJ>VFzcBUALqF62Ukw8a++>N zcKncp?qqa>CHPmX{3_n{7yAjz#);KwWBP`icA{UV=a$`SsDf05hDSTnjJ2Z5^9mJq z{n5UDQ8u?V`;rY>FgsNzgx3#cxudK32X&>Hdige~WhL*3eIUo@WmLW@_|Ud&dQQSi z+d)8}2oHZK+oFWzQJ$Vv+UT{3SJL;u@XhC|UnRfR?5q0oepOJb8-BlKl?|`!&vHXX zM5i-)g>kq@YEyuDq{?!QtTXp_5fu$e@aT)erftzqLS3go67R5ok+sY>L8;y9zrq%( z>cb($^6Y z0Eg+A3W~@0E?uM^_cc3n!)&@a@Ec3|U%X-qa=W-?ut!lE>J#xDf8`|KXGH|Y%rzvP z_gyk#lXOYU{3EMEzhWoLqMMPrvS-RB@I2r*$`cSbqreN+Lkfil8c*)mwL%Q{VKRX# zp$#^h+ov2WHa~ck3f_dwQ?hn8aOsKjZ{zkY(veFPYKT>eY3-bT(t!jps(FI4_D<0( zxaLbW2qee3g;!hDLSaBbV6&iFVi98QwJBkp7)pOTt9K~As;QxId{H&% z*rE?MOq(@UW21mkH~>e;YCd%sbwEz_`vF!zjTKVx%icc8V7dOCG?tVFOT21bX|R?@BaXUAQKqydtvdkp4-3f z=fM{AY$ONEWeCn9O?n?O4eOmg6^} z$!(@HOPn}MfhwZ1rA~X(CLU-H!#?E>Bj)UWOC=fEtec+vZa1L&Hm3T&#}1sGtzJX} z-t`zuT6k)}*m1FzfSC=Af?%h?x9!}yql52s8R_!3_*h=5TxlBaq8=iI-vNaW<_DXQ38+gjgt>EU~?-hoH~|T@Fax1SQ=QIKc}e93Y@KVQbjQO<+&msQHWYj&OU=MQ;)m{te(R5 zq5DzQz2>b}u8RY%hQ|EYZkiT<5SKfgdy4zMWUL$$gfIv&AW~s}WhYw_eXo#>vz6lE zewCORPr1#&bPmQczA|yks91yec6Pr`1qJW`&z0OKeW)7fcyY<~N-ou5zTs%%KJplh z9_S5w&Ufp>@KOKj({q81*Cz?PbxRulV7{#n`=z{l+T7%38)`OMbkezU>yGD~6Q;K7>Gi^t{cl2e}3vXRFp*w1%FIX8v=EL(PSG zua$bqkL7@$?%sBDHGwF_Z$5rAc^&p~smKG8Ql&#$jzhptBm9(PR8!!YBbE5CD`>Y=wb# z&oABXKAOV;beDIePPFK}N&d|46KC5U>ROomuH zc5)vw4(6-u?nMVK{mbh?4`B3?>Wtf`!n8EbXbcXGMVpC_ z@g|Rhkj+NKw@R1aV=ClxFbeDnq?dtJ`pv_=(v4eoegUZKuIUk7j zKdsy+I;}p92?=|bX%t?4`uWZNgfDv1RE5{Fyan&XF~IB1tliP^nkOd3^F(I59GbP? zqyJ|8CTIPEK1>JIJvW}ai=yu|EUUw;s_IxuE;x>I5bm9B3d>w9qgbnQRDW<3cXA+T z+U9l^6)9wfbM|QMPpU#9Sh&uKsJ`PN+vC1{%nP?S8`39xuz;@67`<reqc`e{E)fCmZQ-z+Homk$7+3R=glFQ z)0|o_swW*a4U-*h#hrfW!SW&v25M2I>VSkqnr*Qyc53EU>ka=6#|t&sVzl1Gd*_5B zKGhS~#LV+uG$msbSRkw-x7xibPK*z+52z0!_+T6*erZd|%Svo}ah_plx`7I%Vythz z*~PA&G2`r+%WspqXvX(qCxg8eh-FHCx9*8DY8UI|`LcTK!7F&Ij)S!r!AsB*-~^Gb zfvqDa$IzQC#e@qp=IWO!U5_rp^q82Kcn1#(4|(?7kzO<(6`G9uGBq_dVc%U$n2VN) z5N5KksR^$u!Q&DU5xh;aFGAqC+Kvco-KE=40+Q+O{c)++9{zP5?9r5GP!Q(?;AbEX zAKI7UbmRrS(i6Rm&v6%`?P{^a>X&KqA3d1BpaN1u-EwXAn=v8Oh!-xNG}%AE{)o@J zl+kPc8`$6{7-2uK4WMRO)&!S^QyKn}#_b{s0GGqQIfS0ScW*H)n`of#l5%uN03Pr6 zTxUl}VK^07MnV7;Fu;$CYA!fuV&?u=_L-SEptB@9jXMzxGm4$zbyEIyx~2vn#0JwoZDFp5BaR(9 z5a|a9=aAFrt9lf2C+om;OsVZ9m?*GZegFlh`g}D{Felbg5_I@%q zHCIEkDFse=P~!l`V+kRwBpf5UL}>Fj&VJVA(cM#Ey#v3D-+~OrQ*9lmNJ5y&M~88q z9T)$0GjZe_ohh<&OqLm2wmcg04Uy#tCWB&$=$dKDl7Dwb4LLBNRKrwl}R%oeRgj z!&lB3@~sVX^@mo2+sQp0*L!kvZVL7bM<&ystK4Kau)x)VOL*ig9yae25luz}p2(;z zMiMyG1pVNy2QZT%i9;fU#G_YHfJNz?@yp*Z^VDskk*pmI0}TFCxuzT5x7pBdMb6i; zc^I^t-Mh!)Ro96J*8+Yup{>7m3$ZsRCt!)+uK3VLFFps*x2BD}X+=;bW&TWNn`s?j zKyiW)*bottfS!^m|B$^oceByvrZ}h%3!>s2 z&QteT0Kw3cs7HT7tvl9Wibxgteucc;jXE>vG~uIpeAKP^RT@|A9%|c}#$sUbryy`h zSh|;!TI0>e>gN%mX6`rBCE~E`Qg=JHzjQgR;Sk)cTYAv(4e#j!8JP0x?Z)ix>Y>wo zG4a5PP+OW<*j`jYnC3IFkOwbxwB!Gy1H>U52`_Me?6`%-V7{?K&J9J`XbjIVDl{N+ z_EqEw>eN-+<4lmsA&&f)ESWrsI^B~sUo=A3LJl*bULK;1waT%v+*dDE{+$Kix>C** z738vY;Wm9n6{Q(IOO;|mm3S_?|4V{jhBtf=!()5*Nk1b{&I#JtB6c4ObCq_LWT2Lo zo5SQ4C{r+exFXrD`~0b;Hiv7!LFMjlRFnp)+*ijT(e*GUBp8Ft<;CWm`HD?~)1lA? zy|;h71Z`K3=1^~;o@uUoC)YYJR^)KWS>9R*hSQBYy?b~XV9sbr&h(jOgfSkiXHuyO zJF1E*IRSj|cKqFi_r49uvm{)_1vO%cS1nZjQg8O>wU)ikdwLS16*N4zyjEkK5xBLM zvvb<}L@TwHfX8t~0;Z-wv%9jb40NNx>l|gSvF|ezZRirlZ>u&Mr|Auc5rb8er{Rm@ zTz?|37)Gyk^5bxC)Nkeb`-?2C%mvn7UX6Iwr>)ePE{;F<+pH2lxJ#2TYeqQjzy* zU#}ttwxHuJGEVCvB&ullQF=nTyIcd6DsZ+3BfuTiE23Flu zi`G7D#8d0tR&XL~(mqhf^G{?T>|!*I@PpqVvG8r&#`6*}Xgn0Z^e>Pr!|&t;3>E5) z7}(At`2)x72EICcXfsJlb8dD%o5k2yS8)uCuvNaL%5MdD+HL;B8Wnr{JRW}ekv zB2Pfs$txWH(odQbsjKX4g?WB4A(a812%GhlJ-LF74I#tI0yuyQ{Rb2si zJ&@=h-4}GTX3n7sf2sFSpor!>*UA;eKRrUp6sfUFS6EP?Npv6gIT>aBYn$+gDxEdp z@OhGd`Zdsfdi)Cc{fo%=1UGxkSf|cSV%ePRvsSMFMxp%PC@OfuA4DteyzBQ9Ev4KW z+CIbOZ^pM*3yGz$>_CyELF60x)?f)-=GH53l|8!apEx_rQ2W&=!d6z@8>Uq|FW5

FXRvuY1{GoG)M5V#O7(=SfhFF`P9K9-cm} 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 literal 0 HcmV?d00001 diff --git a/docs/reviews/group-chats/dark-list.png b/docs/reviews/group-chats/dark-list.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9a7c6952ab71e83ffb1c90134724380ec6efba GIT binary patch literal 95249 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 literal 0 HcmV?d00001 diff --git a/docs/reviews/group-chats/light-conversation-menu.png b/docs/reviews/group-chats/light-conversation-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb494f5ee474aac9b07cbeafe51fa97fbf0e14b GIT binary patch literal 223283 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 z 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 GxbMK)U-(a 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 *~NE&}ABMOsaYzzQkEjU4#FT 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 literal 0 HcmV?d00001 diff --git a/docs/reviews/group-chats/light-info.png b/docs/reviews/group-chats/light-info.png new file mode 100644 index 0000000000000000000000000000000000000000..f965f2ccc6bbe5a1ba2e8e975008ced94645bc64 GIT binary patch literal 81809 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

    xY{B2bu+?yd&7R2Y!Ndl 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 dHzF6*2UngEYqYfb6TFouNeyRlCZ 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 z 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 invite(String gid, String memberUid) => _serial(() async { final info = _groups[gid]; diff --git a/lib/src/view/groups/group_avatar.dart b/lib/src/view/groups/group_avatar.dart index bcef354..f61dd98 100644 --- a/lib/src/view/groups/group_avatar.dart +++ b/lib/src/view/groups/group_avatar.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:fireplace/src/widgets/avatar.dart'; /// A group's avatar: its name's first letter in a circle, like a person's -/// (owner's choice, 0050 round 2; the first version used a rounded square). +/// (owner's choice, decision 0050; the first version used a rounded square). class GroupAvatar extends StatelessWidget { const GroupAvatar({super.key, required this.name, this.size = 44}); final String name; diff --git a/test/model/groups/group_service_test.dart b/test/model/groups/group_service_test.dart index 862cc6c..b4fc505 100644 --- a/test/model/groups/group_service_test.dart +++ b/test/model/groups/group_service_test.dart @@ -321,7 +321,7 @@ void main() { ); // for tearDown }); - // ---------------------------------------------------------------- round 2 + // ------------------------------------------- invitations, colours, lines, roles /// The lines in a phone's history about changes to the group. Future> notices(Phone p, String gid) async => [ diff --git a/test/view/groups/group_screens_test.dart b/test/view/groups/group_screens_test.dart index 74d2405..edbfc63 100644 --- a/test/view/groups/group_screens_test.dart +++ b/test/view/groups/group_screens_test.dart @@ -286,7 +286,7 @@ void main() { await tearDownPhones(t); }); - // ---------------------------------------------------------------- round 2 + // ------------------------------------------- colours, lines, unread, mute, roles testWidgets("others' messages use the soft tint of their own colour; " 'names and avatars use its text shade', (t) async { From e89b52bf4c3d3b9f255c69d73c52c46f73f408ce Mon Sep 17 00:00:00 2001 From: XSS3cut10n3r Date: Sat, 14 Nov 2026 10:18:49 +0000 Subject: [PATCH 17/17] Describe the server side without naming its notes. --- docs/decisions/0050-group-chats.md | 7 +++---- docs/protocol/group-chats-v1.md | 2 +- lib/src/model/groups/group_requests.dart | 2 +- lib/src/model/groups/group_service.dart | 2 +- test/support/fake_group_server.dart | 8 ++++---- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/decisions/0050-group-chats.md b/docs/decisions/0050-group-chats.md index b723d24..a92a5a7 100644 --- a/docs/decisions/0050-group-chats.md +++ b/docs/decisions/0050-group-chats.md @@ -97,8 +97,8 @@ Membership changes cost more under either plan and are rare. ## Changes after the first emulator test (2026-11-14) -The owner tried groups on the Android emulator and asked for six changes. Backend -decision 0023 has the server side. +The owner tried groups on the Android emulator and asked for six changes. The +server's rules and membership function changed with them. ### Joining must not wait for the inviter's phone @@ -197,8 +197,7 @@ the first bubble of a run, their avatar beside the last, and the colours. choice), following their existing notification settings: *Fireplace / You were invited by alice.* when the sender's name is shown, *Fireplace / New Invitation* when it is hidden. The owner asked for the group's name as the title; the server - never has it, so that waits for the phone to read the Welcome in the background - (backend 0023). + never has it, so that waits for the phone to read the Welcome in the background. ### Administrators diff --git a/docs/protocol/group-chats-v1.md b/docs/protocol/group-chats-v1.md index b4ee7d8..50d8422 100644 --- a/docs/protocol/group-chats-v1.md +++ b/docs/protocol/group-chats-v1.md @@ -2,7 +2,7 @@ Date: 2026-11-14. Status: **design for review**; sections 2 to 4 were amended by *Changes after the first emulator test* in decision 0050 (the invitation carries the Add; `hello` profiles; -lines; roles), and where they differ that note and backend 0023 win. Implements +lines; roles), and where they differ that note wins. Implements [decision 0050](../decisions/0050-group-chats.md) and the [proposal](group-chat-design.md) it amends. Fixes the interfaces three pieces of work will build against at the same time: the Rust core, the backend, and the app. diff --git a/lib/src/model/groups/group_requests.dart b/lib/src/model/groups/group_requests.dart index 706646c..ce15466 100644 --- a/lib/src/model/groups/group_requests.dart +++ b/lib/src/model/groups/group_requests.dart @@ -5,7 +5,7 @@ import 'package:fireplace/src/crypto/codec.dart'; import 'package:fireplace/src/model/common/daily_counter.dart'; import 'package:fireplace/src/model/groups/group_models.dart'; -/// Membership requests (backend decision 0023): a document the server's +/// Membership requests (decision 0050): a document the server's /// function completes with `status: done | refused`. Each is counted in /// `limits/groupOps` in the same batch, as the rules require. class GroupRequests { diff --git a/lib/src/model/groups/group_service.dart b/lib/src/model/groups/group_service.dart index 4dca58f..7a028d7 100644 --- a/lib/src/model/groups/group_service.dart +++ b/lib/src/model/groups/group_service.dart @@ -19,7 +19,7 @@ import 'package:fireplace/src/model/keys/key_service.dart'; import 'package:flutter/foundation.dart'; /// Group chats for one account on this device (mobile decision 0050, -/// `docs/protocol/group-chats-v1.md`, backend decision 0023). +/// `docs/protocol/group-chats-v1.md`). /// /// All MLS work runs one call at a time. Each change from the core is checked, /// saved (MLS records and this service's cursors together, atomically) and diff --git a/test/support/fake_group_server.dart b/test/support/fake_group_server.dart index 5bcb1ff..4b999c9 100644 --- a/test/support/fake_group_server.dart +++ b/test/support/fake_group_server.dart @@ -1,7 +1,7 @@ -// Stands in for the backend's group function (backend decision 0023) over a -// FakeFirebaseFirestore: it completes membership requests the way -// functions/lib/groups.js does, without the checks the tests do not exercise. -// The rules are tested in the backend repository. +// Stands in for the server's group membership function over a +// FakeFirebaseFirestore: it completes membership requests the way the server +// does, without the checks the tests do not exercise. The security rules are +// tested with the server code. import 'dart:async'; import 'package:cloud_firestore/cloud_firestore.dart';

{myGq-X!XZmpQci*WPG-LU}~=rJm(8{ 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