From 82c6956566f85dcc173eae7a71561272705f4811 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 16 Jul 2024 09:06:52 +0200 Subject: [PATCH] Internal two way sync Signed-off-by: tobiasKaminsky --- .../81.json | 2 +- .../83.json | 1245 +++++++++++++++++ ...xtcloud.client.SettingsActivityIT_open.png | Bin 42751 -> 36209 bytes ....SettingsActivityIT_showMnemonic_Error.png | Bin 44315 -> 36277 bytes .../java/com/owncloud/android/FileIT.java | 1 - app/src/main/AndroidManifest.xml | 5 +- .../client/database/NextcloudDatabase.kt | 3 +- .../nextcloud/client/database/dao/FileDao.kt | 6 + .../client/database/entity/FileEntity.kt | 6 +- .../nextcloud/client/di/ComponentsModule.java | 4 + .../client/jobs/BackgroundJobFactory.kt | 11 + .../client/jobs/BackgroundJobManager.kt | 1 + .../client/jobs/BackgroundJobManagerImpl.kt | 11 + .../client/jobs/InternalTwoWaySyncWork.kt | 91 ++ .../java/com/owncloud/android/MainApp.java | 1 + .../datamodel/FileDataStorageManager.java | 31 + .../owncloud/android/datamodel/OCFile.java | 22 + .../com/owncloud/android/db/ProviderMeta.java | 8 +- .../operations/RefreshFolderOperation.java | 1 + .../operations/SynchronizeFileOperation.java | 2 + .../SynchronizeFolderOperation.java | 23 +- .../android/services/OperationsService.java | 1 - .../ui/activity/InternalTwoWaySyncActivity.kt | 30 + .../android/ui/activity/SettingsActivity.java | 23 +- .../android/ui/activity/StorageMigration.java | 8 +- .../ui/adapter/InternalTwoWaySyncAdapter.kt | 43 + .../adapter/InternalTwoWaySyncViewHolder.kt | 44 + .../ui/fragment/FileDetailFragment.java | 22 +- .../main/res/layout/file_details_fragment.xml | 33 + .../layout/internal_two_way_sync_layout.xml | 18 + .../internal_two_way_sync_view_holder.xml | 97 ++ app/src/main/res/values/strings.xml | 7 +- app/src/main/res/xml/preferences.xml | 18 +- 33 files changed, 1789 insertions(+), 29 deletions(-) create mode 100644 app/schemas/com.nextcloud.client.database.NextcloudDatabase/83.json create mode 100644 app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/activity/InternalTwoWaySyncActivity.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncAdapter.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncViewHolder.kt create mode 100644 app/src/main/res/layout/internal_two_way_sync_layout.xml create mode 100644 app/src/main/res/layout/internal_two_way_sync_view_holder.xml diff --git a/app/schemas/com.nextcloud.client.database.NextcloudDatabase/81.json b/app/schemas/com.nextcloud.client.database.NextcloudDatabase/81.json index 10d076c10d38..3dd2580e23ed 100644 --- a/app/schemas/com.nextcloud.client.database.NextcloudDatabase/81.json +++ b/app/schemas/com.nextcloud.client.database.NextcloudDatabase/81.json @@ -1206,4 +1206,4 @@ "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '082a63031678a67879428f688f02d3b5')" ] } -} \ No newline at end of file +} diff --git a/app/schemas/com.nextcloud.client.database.NextcloudDatabase/83.json b/app/schemas/com.nextcloud.client.database.NextcloudDatabase/83.json new file mode 100644 index 000000000000..c27bba8f602e --- /dev/null +++ b/app/schemas/com.nextcloud.client.database.NextcloudDatabase/83.json @@ -0,0 +1,1245 @@ +{ + "formatVersion": 1, + "database": { + "version": 83, + "identityHash": "365a8731a100a61ae5029beb74acd02e", + "entities": [ + { + "tableName": "arbitrary_data", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `cloud_id` TEXT, `key` TEXT, `value` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "cloudId", + "columnName": "cloud_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "key", + "columnName": "key", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "capabilities", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `assistant` INTEGER, `account` TEXT, `version_mayor` INTEGER, `version_minor` INTEGER, `version_micro` INTEGER, `version_string` TEXT, `version_edition` TEXT, `extended_support` INTEGER, `core_pollinterval` INTEGER, `sharing_api_enabled` INTEGER, `sharing_public_enabled` INTEGER, `sharing_public_password_enforced` INTEGER, `sharing_public_expire_date_enabled` INTEGER, `sharing_public_expire_date_days` INTEGER, `sharing_public_expire_date_enforced` INTEGER, `sharing_public_send_mail` INTEGER, `sharing_public_upload` INTEGER, `sharing_user_send_mail` INTEGER, `sharing_resharing` INTEGER, `sharing_federation_outgoing` INTEGER, `sharing_federation_incoming` INTEGER, `files_bigfilechunking` INTEGER, `files_undelete` INTEGER, `files_versioning` INTEGER, `external_links` INTEGER, `server_name` TEXT, `server_color` TEXT, `server_text_color` TEXT, `server_element_color` TEXT, `server_slogan` TEXT, `server_logo` TEXT, `background_url` TEXT, `end_to_end_encryption` INTEGER, `end_to_end_encryption_keys_exist` INTEGER, `end_to_end_encryption_api_version` TEXT, `activity` INTEGER, `background_default` INTEGER, `background_plain` INTEGER, `richdocument` INTEGER, `richdocument_mimetype_list` TEXT, `richdocument_direct_editing` INTEGER, `richdocument_direct_templates` INTEGER, `richdocument_optional_mimetype_list` TEXT, `sharing_public_ask_for_optional_password` INTEGER, `richdocument_product_name` TEXT, `direct_editing_etag` TEXT, `user_status` INTEGER, `user_status_supports_emoji` INTEGER, `etag` TEXT, `files_locking_version` TEXT, `groupfolders` INTEGER, `drop_account` INTEGER, `security_guard` INTEGER, `forbidden_filename_characters` INTEGER, `forbidden_filenames` INTEGER, `forbidden_filename_extensions` INTEGER, `forbidden_filename_basenames` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "assistant", + "columnName": "assistant", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "accountName", + "columnName": "account", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "versionMajor", + "columnName": "version_mayor", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "versionMinor", + "columnName": "version_minor", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "versionMicro", + "columnName": "version_micro", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "versionString", + "columnName": "version_string", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "versionEditor", + "columnName": "version_edition", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "extendedSupport", + "columnName": "extended_support", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "corePollinterval", + "columnName": "core_pollinterval", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingApiEnabled", + "columnName": "sharing_api_enabled", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicEnabled", + "columnName": "sharing_public_enabled", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicPasswordEnforced", + "columnName": "sharing_public_password_enforced", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicExpireDateEnabled", + "columnName": "sharing_public_expire_date_enabled", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicExpireDateDays", + "columnName": "sharing_public_expire_date_days", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicExpireDateEnforced", + "columnName": "sharing_public_expire_date_enforced", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicSendMail", + "columnName": "sharing_public_send_mail", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingPublicUpload", + "columnName": "sharing_public_upload", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingUserSendMail", + "columnName": "sharing_user_send_mail", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingResharing", + "columnName": "sharing_resharing", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingFederationOutgoing", + "columnName": "sharing_federation_outgoing", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharingFederationIncoming", + "columnName": "sharing_federation_incoming", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "filesBigfilechunking", + "columnName": "files_bigfilechunking", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "filesUndelete", + "columnName": "files_undelete", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "filesVersioning", + "columnName": "files_versioning", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "externalLinks", + "columnName": "external_links", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "serverName", + "columnName": "server_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "serverColor", + "columnName": "server_color", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "serverTextColor", + "columnName": "server_text_color", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "serverElementColor", + "columnName": "server_element_color", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "serverSlogan", + "columnName": "server_slogan", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "serverLogo", + "columnName": "server_logo", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "serverBackgroundUrl", + "columnName": "background_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "endToEndEncryption", + "columnName": "end_to_end_encryption", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "endToEndEncryptionKeysExist", + "columnName": "end_to_end_encryption_keys_exist", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "endToEndEncryptionApiVersion", + "columnName": "end_to_end_encryption_api_version", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "activity", + "columnName": "activity", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "serverBackgroundDefault", + "columnName": "background_default", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "serverBackgroundPlain", + "columnName": "background_plain", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "richdocument", + "columnName": "richdocument", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "richdocumentMimetypeList", + "columnName": "richdocument_mimetype_list", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "richdocumentDirectEditing", + "columnName": "richdocument_direct_editing", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "richdocumentTemplates", + "columnName": "richdocument_direct_templates", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "richdocumentOptionalMimetypeList", + "columnName": "richdocument_optional_mimetype_list", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "sharingPublicAskForOptionalPassword", + "columnName": "sharing_public_ask_for_optional_password", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "richdocumentProductName", + "columnName": "richdocument_product_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "directEditingEtag", + "columnName": "direct_editing_etag", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "userStatus", + "columnName": "user_status", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "userStatusSupportsEmoji", + "columnName": "user_status_supports_emoji", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "etag", + "columnName": "etag", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "filesLockingVersion", + "columnName": "files_locking_version", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "groupfolders", + "columnName": "groupfolders", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "dropAccount", + "columnName": "drop_account", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "securityGuard", + "columnName": "security_guard", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "forbiddenFileNameCharacters", + "columnName": "forbidden_filename_characters", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "forbiddenFileNames", + "columnName": "forbidden_filenames", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "forbiddenFileNameExtensions", + "columnName": "forbidden_filename_extensions", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "forbiddenFilenameBaseNames", + "columnName": "forbidden_filename_basenames", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "external_links", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `icon_url` TEXT, `language` TEXT, `type` INTEGER, `name` TEXT, `url` TEXT, `redirect` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "iconUrl", + "columnName": "icon_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "language", + "columnName": "language", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "redirect", + "columnName": "redirect", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "filelist", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `filename` TEXT, `encrypted_filename` TEXT, `path` TEXT, `path_decrypted` TEXT, `parent` INTEGER, `created` INTEGER, `modified` INTEGER, `content_type` TEXT, `content_length` INTEGER, `media_path` TEXT, `file_owner` TEXT, `last_sync_date` INTEGER, `last_sync_date_for_data` INTEGER, `modified_at_last_sync_for_data` INTEGER, `etag` TEXT, `etag_on_server` TEXT, `share_by_link` INTEGER, `permissions` TEXT, `remote_id` TEXT, `local_id` INTEGER NOT NULL DEFAULT -1, `update_thumbnail` INTEGER, `is_downloading` INTEGER, `favorite` INTEGER, `hidden` INTEGER, `is_encrypted` INTEGER, `etag_in_conflict` TEXT, `shared_via_users` INTEGER, `mount_type` INTEGER, `has_preview` INTEGER, `unread_comments_count` INTEGER, `owner_id` TEXT, `owner_display_name` TEXT, `note` TEXT, `sharees` TEXT, `rich_workspace` TEXT, `metadata_size` TEXT, `metadata_live_photo` TEXT, `locked` INTEGER, `lock_type` INTEGER, `lock_owner` TEXT, `lock_owner_display_name` TEXT, `lock_owner_editor` TEXT, `lock_timestamp` INTEGER, `lock_timeout` INTEGER, `lock_token` TEXT, `tags` TEXT, `metadata_gps` TEXT, `e2e_counter` INTEGER, `internal_two_way_sync_timestamp` INTEGER, `internal_two_way_sync_result` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "filename", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "encryptedName", + "columnName": "encrypted_filename", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "pathDecrypted", + "columnName": "path_decrypted", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "parent", + "columnName": "parent", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "creation", + "columnName": "created", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "modified", + "columnName": "modified", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "contentType", + "columnName": "content_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "contentLength", + "columnName": "content_length", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "storagePath", + "columnName": "media_path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "accountOwner", + "columnName": "file_owner", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lastSyncDate", + "columnName": "last_sync_date", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lastSyncDateForData", + "columnName": "last_sync_date_for_data", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "modifiedAtLastSyncForData", + "columnName": "modified_at_last_sync_for_data", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "etag", + "columnName": "etag", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "etagOnServer", + "columnName": "etag_on_server", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "sharedViaLink", + "columnName": "share_by_link", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "permissions", + "columnName": "permissions", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "remoteId", + "columnName": "remote_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "localId", + "columnName": "local_id", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "-1" + }, + { + "fieldPath": "updateThumbnail", + "columnName": "update_thumbnail", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "isDownloading", + "columnName": "is_downloading", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "favorite", + "columnName": "favorite", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "hidden", + "columnName": "hidden", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "isEncrypted", + "columnName": "is_encrypted", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "etagInConflict", + "columnName": "etag_in_conflict", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "sharedWithSharee", + "columnName": "shared_via_users", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "mountType", + "columnName": "mount_type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "hasPreview", + "columnName": "has_preview", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "unreadCommentsCount", + "columnName": "unread_comments_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "ownerId", + "columnName": "owner_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ownerDisplayName", + "columnName": "owner_display_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "note", + "columnName": "note", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "sharees", + "columnName": "sharees", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "richWorkspace", + "columnName": "rich_workspace", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "metadataSize", + "columnName": "metadata_size", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "metadataLivePhoto", + "columnName": "metadata_live_photo", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "locked", + "columnName": "locked", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lockType", + "columnName": "lock_type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lockOwner", + "columnName": "lock_owner", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lockOwnerDisplayName", + "columnName": "lock_owner_display_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lockOwnerEditor", + "columnName": "lock_owner_editor", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lockTimestamp", + "columnName": "lock_timestamp", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lockTimeout", + "columnName": "lock_timeout", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lockToken", + "columnName": "lock_token", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "tags", + "columnName": "tags", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "metadataGPS", + "columnName": "metadata_gps", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "e2eCounter", + "columnName": "e2e_counter", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "internalTwoWaySync", + "columnName": "internal_two_way_sync_timestamp", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "internalTwoWaySyncResult", + "columnName": "internal_two_way_sync_result", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "filesystem", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `local_path` TEXT, `is_folder` INTEGER, `found_at` INTEGER, `upload_triggered` INTEGER, `syncedfolder_id` TEXT, `crc32` TEXT, `modified_at` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "localPath", + "columnName": "local_path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "fileIsFolder", + "columnName": "is_folder", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "fileFoundRecently", + "columnName": "found_at", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "fileSentForUpload", + "columnName": "upload_triggered", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "syncedFolderId", + "columnName": "syncedfolder_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "crc32", + "columnName": "crc32", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "fileModified", + "columnName": "modified_at", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "ocshares", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `file_source` INTEGER, `item_source` INTEGER, `share_type` INTEGER, `shate_with` TEXT, `path` TEXT, `permissions` INTEGER, `shared_date` INTEGER, `expiration_date` INTEGER, `token` TEXT, `shared_with_display_name` TEXT, `is_directory` INTEGER, `user_id` TEXT, `id_remote_shared` INTEGER, `owner_share` TEXT, `is_password_protected` INTEGER, `note` TEXT, `hide_download` INTEGER, `share_link` TEXT, `share_label` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "fileSource", + "columnName": "file_source", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "itemSource", + "columnName": "item_source", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "shareType", + "columnName": "share_type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "shareWith", + "columnName": "shate_with", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "path", + "columnName": "path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "permissions", + "columnName": "permissions", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "sharedDate", + "columnName": "shared_date", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "expirationDate", + "columnName": "expiration_date", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "token", + "columnName": "token", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "shareWithDisplayName", + "columnName": "shared_with_display_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isDirectory", + "columnName": "is_directory", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "userId", + "columnName": "user_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "idRemoteShared", + "columnName": "id_remote_shared", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "accountOwner", + "columnName": "owner_share", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPasswordProtected", + "columnName": "is_password_protected", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "note", + "columnName": "note", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "hideDownload", + "columnName": "hide_download", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "shareLink", + "columnName": "share_link", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "shareLabel", + "columnName": "share_label", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "synced_folders", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `local_path` TEXT, `remote_path` TEXT, `wifi_only` INTEGER, `charging_only` INTEGER, `existing` INTEGER, `enabled` INTEGER, `enabled_timestamp_ms` INTEGER, `subfolder_by_date` INTEGER, `account` TEXT, `upload_option` INTEGER, `name_collision_policy` INTEGER, `type` INTEGER, `hidden` INTEGER, `sub_folder_rule` INTEGER, `exclude_hidden` INTEGER, `last_scan_timestamp_ms` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "localPath", + "columnName": "local_path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "remotePath", + "columnName": "remote_path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "wifiOnly", + "columnName": "wifi_only", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "chargingOnly", + "columnName": "charging_only", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "existing", + "columnName": "existing", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "enabled", + "columnName": "enabled", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "enabledTimestampMs", + "columnName": "enabled_timestamp_ms", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "subfolderByDate", + "columnName": "subfolder_by_date", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "account", + "columnName": "account", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "uploadAction", + "columnName": "upload_option", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "nameCollisionPolicy", + "columnName": "name_collision_policy", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "hidden", + "columnName": "hidden", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "subFolderRule", + "columnName": "sub_folder_rule", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "excludeHidden", + "columnName": "exclude_hidden", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lastScanTimestampMs", + "columnName": "last_scan_timestamp_ms", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "list_of_uploads", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `local_path` TEXT, `remote_path` TEXT, `account_name` TEXT, `file_size` INTEGER, `status` INTEGER, `local_behaviour` INTEGER, `upload_time` INTEGER, `name_collision_policy` INTEGER, `is_create_remote_folder` INTEGER, `upload_end_timestamp` INTEGER, `last_result` INTEGER, `is_while_charging_only` INTEGER, `is_wifi_only` INTEGER, `created_by` INTEGER, `folder_unlock_token` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "localPath", + "columnName": "local_path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "remotePath", + "columnName": "remote_path", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "accountName", + "columnName": "account_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "fileSize", + "columnName": "file_size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "localBehaviour", + "columnName": "local_behaviour", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "uploadTime", + "columnName": "upload_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "nameCollisionPolicy", + "columnName": "name_collision_policy", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "isCreateRemoteFolder", + "columnName": "is_create_remote_folder", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "uploadEndTimestamp", + "columnName": "upload_end_timestamp", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lastResult", + "columnName": "last_result", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "isWhileChargingOnly", + "columnName": "is_while_charging_only", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "isWifiOnly", + "columnName": "is_wifi_only", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "createdBy", + "columnName": "created_by", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "folderUnlockToken", + "columnName": "folder_unlock_token", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "virtual", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `type` TEXT, `ocfile_id` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ocFileId", + "columnName": "ocfile_id", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "_id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '365a8731a100a61ae5029beb74acd02e')" + ] + } +} \ No newline at end of file diff --git a/app/screenshots/gplay/debug/com.nextcloud.client.SettingsActivityIT_open.png b/app/screenshots/gplay/debug/com.nextcloud.client.SettingsActivityIT_open.png index a5159c8740aa25818785201e842d11aefd28ee82..9d35b9c6b5723a6fe85741824bc2399847ecc262 100644 GIT binary patch literal 36209 zcmdSAcT`jD+CGS{C;}=9A}RtFii#AGqCh~fARVMh3!);@JDAXvA|e6`0s_)|OXwvK zkfI1kkroIgQUW1?&_WH6dBS_GOwTjz&dKpXWy$x-Jp+ z)iOM8F)+icyXHkVx#q9J;1ulvJvYydGh-PlAx?_jXU3-dPmQ@AZx%n=T-@$J3sn0C zzKJvP(0}-kA1B^?>EmwC4f?hJ_@UHFf8f#o^zr|T#`2E*pLXpZ{r$UZ^V(Mk z(L!1tnu(G*ll0*zEM-Bp?D+3>`%CoE-WRV5MJBmkR{7wW;@8_U;8%typ!prdlu@f3 zN!bf*g&HC2v$Y$0dpO7TOq;K%XWm*q{?1M*{vzWrTBtm~*^Vz5YoJjx472^W;`}|3 z`u<~(m7g@O&t*<22gqHW>5m+q%}wITt$B(yO?|WMVu^Cz^$r&4UCi$-&%8A_qlA3- z6zaVBg^KatmD$jyQMv{5WsqYmu?s_}j)7OZ$AlLtHi|K}a>uwOOV{RyYh;#7xs99> zhWO-M12|5B2`o4h06qELOd8(*SXeJk%lxKj+)vvr|DD!V^5ELYhQa<4C{$*K-{*8Q zMkb?+%%*;5e9%}mO!68nK=v1Vt}pon{~RFiEvtl!T;J22b#xq=;kjya*iW%#jWE~& zq0X~bCW)C=md+)Ocv_oh*HPE!tLEYryO{^8$W_Orov5)qr_Bj{wGG}hG@IF!cA|+f z!mKXAg-_aHXcAj7_h;O97J`{3-`KR-7CRljS!u*4^K_H&x!e}|_?CZ3%>=pA;jh^3#%WIBr7o0$OZowygYQ1)NkGRBK^LOztFlcRBPl$cI?QXKj zDyHv7qx#btD(B~NQp)ByI}EMNXGYeg8hl5z8n*=_QtVf;m5z&h-85LsJU$NULEGu3 zMRwBc!V}2EEW4{#Ny}5+jW={M(@ZMj7HC3zGL;rFkn1x=4UTrJv<2MWnCy{jk=YeR z6sFT)?aXUmAXwfI3muD0Qt)37pmtd7^;H^e6nSahYhEDe!uadhe+z`g9$H;xW}TL;X>y1)b2< zaTs-xJQ~mX=BIE#+7_~5-6D&8;T>2k7YX>MME7j*avb?tBxFL?gD^Q*XhL$tRqI_x zb5%74`dz8C-x*T%f45NW%IO{><_pmi(yp>%X{N$(Y-h~uldH@}HcoL+E(V4S*J&Wz zrJM$Po2bD#-ENIf&b-~tyG!QWxhugv=ujt|%+uMtZWYT_YdMzv+1)lIf_)ZUyJ0no zDLqXo$q;((vnzrQv_N~|s$j&DlsP3q^B(*d6$WEE?q&&|b&(LG*KZZqW#QQ%`q;frHO*6ldcKn5~q`E!$c{>zd--*{}fz<0PyT&P&On-aSi%G`gJlB-v@Ud)mO7 z-CatCkoJQQX(DBp=!FbP()i6npMmZjtck$(G%3hsLz%$-fQC(2+{s3^=Xt>dN!Tp! z;1lk&rB8Vq-hxVO4G5u&n7e9^M>*g8dD`BfMUmgKapQk{IL8p z|ISt6GKKH?FydzR9LJ%Y_B9Bl^n^Q3m;7-2_g6*;#2iF~K&C{q@x%03%&V+~e3>p< zvYz4t@z`;Ho*{bzI{!QPDhG2Irxu< z^qSwsYA+vS*H?K`g5=(>-Fjgu$pzfjAQQB=>SRUXbw=NXgtbP}3nKRkKb^Vp3hNt6 zwA|l0(oTb7ZhC_vNHbhDMgnrgnLf)G32$?F_1#*?%SkSQuFOr2A{RH_yt;<2r<|?=t(vb}bsz(^ ze45`zly6|xtmGDqP^lf%!4Sti3~if>TKW|l+*e7dkk8sp|88V<9fZy!@b8ka@rE7A zksy&B-nx65i#enM=Xm91b~#@G(XTm;OnfgikZcW`A1gH27+gBq)p|G;;$+ATg0qU} zGm@$C*d8zYvAI1c(y!eQvQ3y8#NF9FUj3M!{wOR?+p-Du>DgYzH!Ch%v#$pJhFXXouK}vgpz|v^Y5`iEsPT-fiQ1yz%R(Tb6Eo@c7d=OclwLC z-?$~(w3Jw#*pT@Rz4lvT1G90uwrtjMzg1529!{u#*~B9wYO@u2rcTB%mY_O} zJS*#5yzLxPuwCW-`(RPo_DBONa4YVFI|IX=p5|BDKEz*j-<}zL8B3IRa+&DW+%Q4k zM@)H{UhfR&_A(1RT~Jg6xlUkzD$?Lv`*XmlvK@_aw@TlE_DC)EOsH3yLv+fCm2I7- zkDl1*^JblugtO7-`UqT5DP^VOVxoe_OoFC2)$ylRVuK~=Y$C7t(<&IYR7}>%S!~ew z$zKbH%+XyCp8Bz;my-D#xG2kgY}uc+JEX@u3r?V8ck!Kv5bC%h`h0`j==0O}+s`rS zBBRFR)8qDTNmi}L0yc}ew{?>lRkxY#fT@uoirqktvchK- z{(i)F`6nLlyr&xCzTAO}LQyf72+%(RH$VNWXMRtfFNSs!Q++QwnHsTQM1XSBBP>K&(w-FJH_0) zdqh5Kq--&OTYknXaS(oTf2eO3yRU`*X_kqZr(lU(bH$Xdqbnc(geEQgJyT`Q_9^}bx1cuf)i#5N%vRN_eVx4N zs~jvA2KsGaM#1YcC^7x(w|}|(zxGCoqFj~Zn5&R>vO5N0o*_YBv7^QfeqaMV4;}8! zQXh*IF+CAO{e^7UBPRRr!8U$gj;t0nNAY)U5DSnd$@cwudab>qb+G97hZ$adIkb!3 z7%$`Y8%p*j-{qfsb zRvD3@cT7pFBo%2|)wM8Ii>dpLt*{%Z`<t4B}`{>S(*7VgaSvJ2NM)m(VUzJp5-Hn>-%c)fgJY3TjEtK=w z{P$slgapp@Mcks_<^DYNT@F zb>h>9%59<-0@t%(t233NuzA&WA+;W_#c>A@X_v`+UeiB6eF#V{`rxw0$iNWuu;=@` zlb7x59e1D)`Ml?Eu(o3I4LV}cd)p*LadA&9rqH+#vevIBO&hjO@!<2{0WTi^McgtV z%X=;>&K|vO(ctIH(UrR}KU^mCGQ@8t-gexN;xj^en_6)GGX()V$I+ z))-t)k!e-J38AYQy>-h!xCOWEFo=o;hmlH=6VHlNk{!_Swd>*XUKf|cNrY@)opX>o zu&8-$0FDvmY_^e@bpzgATP!O)O5(x(yFF5}K*K9K7Y7QA+I>RXN}jcjrr!^tIFlR=HEl}T)<{cGlz^u zf4-p#Ilyp7fSr=!zc)O?#v?0vBK|@6IZo0^T!kH`Fd&)VLKZAgNu>?Twc|XpL-6#< zGM_EiL_@0Qm-w63SRaE}u4}>leWAir2~u|UCJQ9p0CL~G_-z4xP6|IYT9jbR{`0fY zb%JX9m!f2lz1dmd)b$02`j-32b``b*g`JPnaNIJE)e9q4tt{|fAKmd%#$2#y1c@w) zi`WX`DbG5ctc_DCvL5-JDN=TZnK}YjGoS)}?u+B-%ZJR0Ij|Qh(P{c0J(VqiC#}&{tCaH6IRR>vQ&5D*^eQ4k1lrA)nHvhwcBi$ zUZ|+A z8ixy?pxm_XdYs_QUDeHvPf}stA7+YPj+Sw<7tR-h{S(|y?0Z-k{rMya3c1q(<7L*` zt8ejW8xu&OZzKt{Y>c#lwZl7A4bgB9^&IDFmE?>WDFl$pEv~ zB+)`IdN#pEPT65M0aI$FZaNMYO)C0UqK<$_M$1?OG~1}HKbd@YpuX>Mih{2_3IvbS zym2Z;5w>8JcB=M7)0bmN#x)E7-3qDrO*rd@YozdHkW_Wr4vjTL2rMqtF4mWISz1ot zpn5u>$xK@mlQ!F`f#W2HGA~sfJ<_b5C-_^OWkx$Esg<>)na{S3k|h zXMTWtnLZ_VPzH=F4o%pL5!gE$1DTkR@3)vVPdzbEW4oR;n9m@(_Iw#y*ivPt?ZG-vhGaQywN<2W%_2+gggk~|AL zD{7<~;bGN)Q$BRk{g@^;OFizM4H$EM`!8MZ)kLXl7Y?DzJsNwv5ClLO$y>(S% zUk;1F`VV}H3NC1yrE}riu?pp+Kz4WE3Nd0?wJK@aj|E=2V%Xxg>Gz4WWpS1f&EJYD z#W|$~9H9rC6Gv5u=l~ENQMcV@hW-fnRd<5;f&C+LZqglu^hW1&<+OZ|aEyoYQd2K{ zK`tf>7bQzb)uRquEWfPQ$NxT&2WQu`ZjInEe5;u#J?t7@A4|S*jn)**dQ;(h_M(wK zZ*Z&rgV3+*F6;Bd(h4Y?Sd5ZYozGTjXP=+2@1`kXYin!WW+*pNtH1t5L7zP}=l7Dn zXm~Kpe8CZQ9bbRvH1s6y7ezQ69n>Q20qmtPhtb1z4U-xZ)6GaE;Yk-Yg_%% zjQ#Axei)u4Y9>}QsETMsm$wR_>s)62`%7*)|GA?ht$0hv%s0l}!VU5xp7;Rsb|t7I z9i@x42Y2{oTbSxnzfQ|)!pHgZXwEggksjIbQ1Ch)2amuXxE~wj{EH+(Nk90&68 zd{8gpsalS1_w;}bzZm59_8V1-zHqnZvsk-2*I+kHk*Rfu-;wm?p`KZDia@~ZR=&!-O=_uXnoeX%*2G|H|b zoRS-Jd#A>P`Ta~V)0Z}VCuNJDeIE-^%r>tuhgeTDcI@16#2}J_0r_?guduV!{O56N z%x&WNHcx04#zmFLkC}pEr=lode|lc;uP=Z_3u#xn+WwpZdFjWXk?OjXM%1(O1~Pv9 zcW8G+CkARVci+p>$`-7vdCL~uqDYc$Fb+YRnkHHXQ2?QpK|Fkd@{sa5k7GC^T5!H? z?y$m>Zw#xkH-lfh|9)w|vcyrHET~AGzgZi)87)0;MPN1;D!%t4BTVC&JF7VX^|Oi8 zA51u8P8zs>@e{LR5Fz~o7HJRL=@hNg;3~i|SqNH)fdn~P{{oDImBH=u>t-_WP1OeG ztVLSd-H^gx6XL1uNSGz^IwWNlz$`Dtz0HhWiyGIgv7lb3^@*-~?8o>LB8AS?NnAbne@ODK6Ju{$Oq z@)v`7n`Nj=HwOKP=ikdFPe@p|^LasoN!6JiQ6v|!1(!Db*Pr_18XoDsIzuvudex?M0fy{m#4*I=4;L0q-${hpJQuRWm%@f_^0 zW&(eVS5J;M-|A<)z^1eIHgk5gp+mtOq0Lz4t%guhWsV0ibC9{vQ!jXT=a@rBtca&l zW>p+q2_x-cX~Sc=x^;8Gs8YUWbe`g#9G2R;V5gt-AVx}WEE5+bvCzO)6Eb4Eu`m+H z?iwk}cM2MpTJT}q-G_7LmuK1HV3Fzc@&^t|_3AaVR)L~uvq*27NOjTKd)X`bM^_YX zo;0$kA=^Dt+GxE+PN1A*D!Pmo)7aiharm!ZMLjzWmThmx83QnX?*a92`vySOwYkl? zeHuf;J>^=?<{#p<#24{blX3uno>9FgkyI|E_4UeNvfT5ZAOB1m3B^%7-X4O8i6Mtp zs(0ICg)oUpPO(RFBH1a`zMc9x!|m|RrHQ8p0vf|Kxm5&t8mW{P-+F=dpRh1p^~lGh{Rrod zlS*kK%JMa#vBB6k19zb^->SLwq9m-}Pd=AJ_Cm&^`su-2vQ;3??NWZ7nlRFj*q>*3 zI>ut5%GN8q02%dl>RMbRp@nD4-eanH!9>tqB&3-fPrj;4jrSX!>iT4lu>q5b2+Rb# zF|yX^J2Miam;wj!TY7PfmRfL_`|_3;-`v|&E#8U59Z;SXjhWk6$zI&; zypn&+9IYN>*x}w(&}UFB4=)|~o~wg&bVOaCJm>SfqT^&&bQiDhodJ({F@nsM7pNJ& zYL=5&jEyo7^*H~*_U`^5oHH1tpg!di-%dLz53gG|_?qOj7p~>6hHrdMUr}B1%}H_Z z?=vE)yFP0-oXK_LAA!X{TLto>qt0(c@y3~Th1$33{1!&PNzWF?W9%I2^-L?bug%>p zi2NmR`-iSa#=D3vC$SIjb*_Yaos&qS4X@uci*%WNIO=iE>sOPWkNB(ObD6P4z!tAnuw%?hx|yI}A=ke*3L<%A9p-pK$oG zV3aK{aNkM;{>f?tWA6dF<2*L)YUaBM*{v3AGcrkUKd;ienlI@QC0w)rzWn%sin-v- za*So=YVCEBAh+(Uf90+QiXJj5pPe>fQUxt+B;}$GFrs@?wLiB9>X?2}aLuS3XWDge z1h|b6qH-##SLMv9l}8UBJxwmK28_i&*}#7gh5tnv{*w{>=eK`l6#t*yxX&fhf#ko? zk4I$xMwb6hJ^n}P^1r{V{$nK^+PeyHAgYFPemm8*o(l=y)1OpEkI#24MxAcIXG5s(>Dspia@LT_wO4naS9t&KWmMsVdfC51^~Yn z;PR1`%PJAopd3L>G>6n4tIT#yCKJG0G1h^ zQQR1HQ%Vj9_{-Ffy6%v;F&QR?%1QCVLY7-N8sR7p(oC|?O510T?qrDEG79wQ1SKdy zv~jEsR@T{voRNCjb785TG*B?h>pfp`A-v8$YYwnO?^Ep{E94mK&IGA9uf@!&dwS{h zPd2FaQ(leHX9K0q>&kZ731w1YyH5Ml7#N#lEy)4#=~I? z!&y!T&zA1@1`XQ&9TQrdlhoEwac?A z`{B~3f|01qfaK@@`=xDAHIHUQDiCe^b1ml}#85JX5XAzI^4KS?tu7GKwNn&g5uk8$ z1e}l~m>cpM#=?tEGQ^|`8Owl|4}d-hK=f3N3;P2$C18C4y!FWJGj(Bt3u(WO={OUL zRJfzZJF&E4wtxSBt-t@a68Cq-zb<>fxUJRMS}?PmR5sAihHg)-``o0$E~W2jr3Y#7 z-d3Wd&7`#bkj}in)g%BK(hNsI;grSce#}wg*^i?f<;7#wE>qf<3DJU@t^jUN9zDqL zx?P085@S8}^V4NVF!iwrfd5NURq!LVUdWLKe}C~JrgtKym5hDxFOMs1V`}|&;U%S~ zI5~|ePrAO|-Y?3X^G7Nj+?bA^f2dmfqVpV;>|N;ts22~M??w`7w5H5q736ItKPkT4 z9ab*Uqw=qgiD$TTi9yTj0A=P`>$P}%-H2oXh{IZ+EeY%EVA-Enio4>s(kA3MKUCuQ z>&p!?m=RafU{M$+#eVCwh{<&Q)=c6Pp1vGyFHj+{F#3SP1YunELa=G>!^^BBdPBWAUYW~G<)deRyx@MFeR1q#DM~YO<(p* zD117}Z++PM&E^Y$1bhHy5IrLF9?8_xFU*L;-fW~tC z_WHm&!-bLo3B|AZ@>aB-k0L1#*=hfV_Ne*BP6*M9wRK$dx2ZZ_Vay)x>P>-SK<$m z4xpI3X_b^8R!jiv|8s4sO7N&a7kD)>X^ZhHt^y4}K&9MspKJ+rB#+k6cf&sGsBXU| z{s+C`&Y#OpQ}Eq>{Ltc}6Q5w*YvEG}C<*@Rmj9kly3bqyVx{1y8b>9FQq%kdg-Ou2 zr8|cpii)@vb)IkX?9fg)f-s+eeGoV;WfhV%gr!;iZ z7$H|zY;Ojqb_iQYPv0o;mG5hHiWN1tWn-zC>8qo3xhnq!9mIp&$(Yn=e5ohoDaG<^ zaIf!6z=i|z^Lh&t(hB3VtUzk-WZeiRw=>{FF#py;$YAY7+sr;{}31+7IurQQ^fMBDA3D=fIwG zJgMKiV8msBrH+^2W-1f`UnVmKy!sLu#7 z?z!lPY8u#n5?bprr6sQT-^IWN`%Y#|G2Yf_cfn!|DI8&ZWvtA~I*sb$nVjgcVL72O zvG!yyN$!5ECuV&0QvgEJPWr2>p5N{1)7OQa<3w?jAczChl$XjHTFmIVx?UzNvOGXB zm`qI^Nz~oKYm6|yxhQ~`8C$qk4)V$CRH0MuupjJ0Tk0&M!Rj)a#d3aC-|Jq$ z7LJ(|dUj%wY`r-lquu7!mZYyd?o~OM&S=*@>=ldHLSW%|_=O*(uM6C9wLtUcL#ciPcVLefl zv4n>`oa_D>d+bIVQ~1*&OUaP^#{{NQKh`qBCQ7|0*5Tnsj~_zpDT|3`PvxG&&#^-G6IBeYJ(D$%c zU;9Q|Ry6M!SVzbc#b;r8tnNzdQY8iASRR>b7y)Z z=hUiJH~ce)QDr>_{L*6y)8Kk3@$zi-!n>}2r&|9#8; zzi^`%>Dc@@dPKyyv?U4R9g7vc3zEkaFKqgx*XoSsHIQxEjd~VGYo^9uO&#M%K6&|p z&Ilc?>pxJ!p*#vgBjy2z?EwU;>>u=ilxrU_4w4&362iO|y9h$JUM%SQ@B z-~qI71LT+|AjUj_lHd;1LN#N=%)5U`ea5J%)<`blzy#59zl9DU>`Aa}|2Jg*a)v&n z>fQK`xG~_3SU4y7@=1W;^4w6#GqrQD`2-prR9h#*en9p%r{1V2dXYz4Y1IH;?X-C#KlX720J?D*M1ZH?%MLpL9kDAO$A#Zo0ds$02DA%-ZBTqI<)s5GrUrM zCA~mD@9AHD%aivzgcgmqD8iq$*bc6|MLPop6xaKbHW^!R9>7$o)69%{nCg`*U^Al2q|Mt}((N zu)|UoOwR!^f3`2^kT0l`zOP@jpK}244+QBZR_o7g8NUSUi2ZoE-vX-9`aR9C=@_E| z!%n&)J5vH`n`Q@GJ^D+kHybp47-^x%;Sl^2fJV+*GidE#&T+5!CFMfb;P`)tcCjPX zE*ZN#@ff-?4J!?@|-gtk9+;uJJD}nra>*|$; z-SrV^3p6@9GnAcT5A&n#Zake_2>#uzS8eJrX1lRYxO`hJqZl^2LKom_D`gMoCzO-7mu;%vzB73SUh-?{p9_ly2ic zku(`_ykr|(y{}G=B5lX5INVum13=lKa#=oGe>|Sls75_Tf1$32)%@32^l$#o*5o!t zR9cGFtw_gcL$kB-zuRvf3v;WK1Y~lYN^*r0ZLk1ZA6MHn%v%vc7wO)-CK`z2+!Whf z(HMl5%ih54wO4$Kem;Lng!{#AtRpM0CiR9u>>#%!ZF>2K9uycBje=_S>m|ar0b@%; zm!KV})_%~PUCI4k~n z1zi4TNeYyI@{&wHKm#Cj{&K^-v^sR?P@|9Us@cJ6LgF;NjC7m%RpQdociVIR z3!d&4@QvOFwPJUb;_leJ?AhC;s<5Emo*5Xzos;wVmtwKZ>fG~tP(MJzj4n+ykLBuS zjE3;}5e$(~o@pbKaAj#Qt}^Zfoef~{l|Y@@A4n0xxi$4m3$2IQSWyo+?Xcx}FdRrq zDZcCR;qo(wd_fFpbUh{~3zQ}*QgXjaW9m@(aAx8`ByXqgA%N4+*AJOrIVCz#?>wOl zXpZyCK(5a^Dg-ADieQQ@?@|xfa#41v8%!Nwb&^nCi;gs~F|9g`5N0-PMLic?|Z3piGDm~!83D|*OI3sQU_`T*A@i!UZ zn86XaF)K>PS|$|P0*p_7e)Y`jz)%tB9vmDjy$F=3l7M93rMa#MMn3==5g_`aJK5o{ z`9tQ5x$0jBCKdo~`{M4~qb?Bd^>VyRfM|CEpjcv6U=<2z!Kx>Xe??rQ4-#I00P?OU zkDRB*9Nur6VuPu$Gg=+DVz;9ajlZU{W*KP1@di#_MTt-{Jzy!OYByZ7hbHvY!0R~R z0CO-VIo0gbDd08!zheIWFE=gk4oHuSbf+R`5?GZr>T#kqfX%30o$Ve$W=rw0fkl}b z;5`Z^(#5(v*`qa*&kJw>KQ{~TYDS+R`>wvd@&G?jCqF!iLCPo=QRsW;&LMU;*cjNC zzliZUv}?O`mkB@?H?e?+x^CvbMjW7u?i|@pna(WwsT~8z2kubEAy$mPlWKNZD5|Qd zNg3d!&UUf=DFOVM7o8KKYk9PUSzVz(6<$~idbLZAjgl%T(h4-q(JwcimA-!p06l2+eAiZTc7ICz&DL1Eu{6nt(y-UA*jtPjI$MGn+rPM8OxVSMtQxo5*Yv>Bs$ z`tqQu(;?-_h20HYl~61|;Xv4|1MFTa-Mk|loXU6GwS|sk$ThRcZgkX?p%Uq7;ky>I zHUxYGf4V<3O$x02YNoNWu&^_u+!y`sJ?yyOqqzC!AjkVq4k44rcQ4`&96UT!XINxn zpr+K_-R%X4mX3t%OU&Da#%1<$fW3OJ5tw@LTgtHthqxa%*=X11llA*6#?*ueGLEC- zpI#C3avmi=Jmu)WP=Of@6RUsu^z`XR9ugln*#NWy7K6MY*|j^VJ-ew&f!BSI?UXB@ zkpUr)S->&Y06fLmm;WkjxW>)eP^sH60_?eA*(N$z?FEYMq{h=E{_t@R{fGX4zP)k8 zmfKV|B%4+_4ts)$Kl|B<(34h))4gt5`OA0tJ6C0rQ~lPD6*~x6F%>i{6o@s#VJd64 zfT?W+2}WxKFs9cIuEh4CS9@O(UDu zxf+1S;P9M&GN5i{ucUC1_-%k&Xd3FbWtEt-R4o>kyxoM?qiz6K-N#4uVClUm9HGnA z4|5i5d`+|gz2}fz8E=y^*?vh-cC31ZN15y7vu<*sfdx^4w( zVS#SO+oCDJX2+_Gd!yc6D|!j^Yj4VLm7A6RLRVE#o2nmxFUDh|g+u$X38b80)CVn$ z&iq{mUn345e21&#)i19DyYebtk7qOF3&3uNmCpsszsxeOcD583OH38I+5vEK(fRih zn@mw4YnUbgc}c-| ztUu&R5OYXhbmr|>OR2j~AcZWQxKLnPg}BcO2EE=MFI)uPEiAjjd>|)*-{&0U%GMMM zgU+WmO39brR|J%oLjT1L@ooKNY`H)w`_WJr>5DNZI)b3JkIpf>oe55m!d2PqGlJ>{ zUs|jIctrqn(~Ju*1m53Ej43l?gqTIRFVmfQKU{;q%c`EMSj}l*J|RszHUaoMXnilB zw@Z&y;MIGiv_D1BU1Wh=40o*V@C>(?9y9M6xjS-Ii>HCV8mQyi@nT9kk4-OKK+1-G zgn!ayDiW_BGlSFw^PZ6`>Uz3u;N;E+$B<06$4Z{5#4~S$gre896W;Ci zqJrhvVyi%x)vLSQ?dddItDfa1!0RqxF4QK{3M_OG7VkPJ-*4Ui;QDg1#VjdI7;k6C z?#djfJX)`pz;z%PhgZ!3)+qLC20_Yez{ql3K`ldVYdTu{uZh$7*Kx-Yo_1Nk4+aH2 z2*_Bwzt$oenp$w|0Uo|F<`wAMzwLW&!6Hi1R!{dFj_+H>?lSN4E^ww<{f>SKaI_vw2GSwB5vVI3{yG%o)Nvj?n1X2wBH>f4hk z76=TM5)RUI`z0cAL}1Y*J+Z)=+%SQ7SuXE;{~7I6VA+*^GsA;{go{cSBdEViE^tvk z1yqlRsrEk9sPLa-yT%s4Z?!zd6q0BF)UJcBr#P<}-Are^75z#Djm@UC=j?3sQT_hV zsZ^blx)i-MFJI)n^aaIRm)STPpPA6p<<3>z7Ne(VtB%vGjRhOE zY-t@F8u4GHu`<}u81_?l1AxtkQma?(1{B68j|OKD+rprz`0k z%s)Ale}4PFPk{c9p7>vE>z@gB3fQf+Al%i`X$s&*9`Wy7HLLaP1ZM~@lasv0C$4!nnk+ z6j0)h0v*W=3grd!25Q6~Ong31(#7fao3*ZRD%46y$s0xPm`P{#STzY{oXHmJQF z*6QqsCFsMcq}>I$7L60haAMx)Vr0|4|I-`f%rQVL=mkwpw?zx?0nFoiI%gsdQ;Xe(`1d9Z+3N>y`Z5?+pWfZ!=JPFZctUxyVng)CpO?ov+DS)QusP zbt{k*_BNj-BE{>7I;$1k+eJ_`3UZzwA_}ZZu3`;4uI;j)b5c`NAN$G!wekB3FztSL zSnf2AN|FkX6*kX0K><}N-2OHJ14oB@swOGgY)TY z(H+kp0wQ^+9-u?)d4OtIEWa`yEUzqfM@<+w_h)&1DZfu?V=g;AZW1`K(SeWI77Q%D zMc13@-fBb97=u3c3V?Kl)S@G1Y;b@!e5T9#8z_~gbbGjZxs#<5*W5*~m@;ttdQXYh zA~Z24PD)U7p$_ z0{t}mLvv)|Z8&b?2X1$ud?qIw`6ob>{}1qyvjmx^_W|Yd&QLnm7Jt&Pz))nVD<&H( ztgAMEo4+ryYr(2kY=ar^vz=TyrxJ1ACPrAS1W1Y{R)+DX-WxtPB`tz83h!^Vd9z)< zu{N2&uUV2)UV90#Yp`{y7g)+C3*pz=>c2Cins5nZa9Tpm82Fy;G>@xB(3hh~c+*z> zFA2yM!o(FbYyVx6MNRL4KNmOJ7e~=dbUSA-@A-35w)%xe^@E9;JqDtkMz^Cg+gbpLs`=UXaUC!Z81iZ( zsHcSp*yL>BKjhrf;qWr+f13g|vefhT(f4IwkT-h@eV$xNhBg0Ka5k`mEhjHPtEn_G z|LD#N3r)NFSm7jjFMO@RgNvIIToiz;zWi~-)kCc69amVU)XFK6QDM%xeFkT6mGX9j z*Av%yD`eB=jL>zyuduAx2p+jhhcuFBg^_hnq2;n`dGmm3!1wylB7Dsf>^~h?umiBQ z(C^e+pnMvIu8U~(a5DFl%hF=>dn&}#`haj|>V#@D1sULv<(-Sm+%n|q4kO1J);LGh zDi_UiR&>F5dZi+wDih8*KA#TgJ{m2sd?iv-0CST)4=_jMDA#6_8E!JsrnHUAg-1$=m02 zLo0A^E>|T!>EJ*RN27I{!|=BX;Oo(_n!n z`=;}V1N+1Y+YloZ$O#E5<8-_GuJi}xo_YY{VUkD?9Y5hAUSzWqw|feVB-SM7s;nM&if;Zm+QVU<#?@sjLsl9PIH0% zP3plrR`(k_?2~IW(mZ$lb~~Mv601G@sLdP=*2{hMooMrJj}2b_r%+h!BG|1zjV&L; z(z6`6d+r7(xVwU?-SzhCYX!<}@o?_!u;_bYyPSpmHl-Io8Elsl7rxlwD9)!ISm~EN zu&KOi30$xK-~M9AEzIqd5A{MM6OnZgv6tN1fOx3NBW(qthBgh?=WMWZL!&`Zc$A6`#9$vW0#4i>(10+w+%+$rQFW- z1vbc4DMjuyD?lb50I~K?4{fQZfxB*;aSUE% zZF?Dcw(sp;>xwseY8JJqV!wU2XPNGhQqwg1Ip$5+4ME(z=$BT`3l~|7N+J23DWf0P zV7MY2<@r8wb81Gy;V#W)9sNo=BVFHxgPFopU zvmdVP-hLKCDFO#+0ihLM&DQZ%!TUR&M`13Z+{E4J^X%AKsdd~Egfbl40IU5j{d@yJ z6?L;0`?o9iXUKa5kFiFixb;~hsy=S9O3`jCsUa-h>v3<_1t*RInMZg$Zt~i>?ZW)G z_eIzw&x9Y=c~jcxUq-XU%>;_-!3r%%{W)(JG1VJ$80dZZ2%Rm}vtI=?`y-QXE&AcS zhCB#0n~2eO1rG|shQqiqO=uuI8WkLm1)Lw?RL#9tzut1?Zo({y6`BI5)V|MAME zCvKL4FUtg6amx=aF*Zu4hp!P&`^+ukY6;$>F#Xkuk-8Ksl*L*h@-R`a75G;g#5_Lx zEf};+9bs!Y=(9 zh)NaK&vCeR%0fry#4il0ylcs;%^;RiGPZW$tbA8Y~9?kSSls1@5f_n4c$JL}c>_=snfuJ?IVI@x9; zWevCYe5(D*{UCV3ylD3w>FC0naSPURd*>FRvvywqkj0^kBVQDTRBuOOyLNMDL3A)K z%?g(_DqT>CvJ=BhoiWN`Q0?)3;DCd{LL6?9`TR}D3cIfL)NWa~y;mx}dt*45|4vuM zeua|~7w5F4E;p`P!-8@=dTv`%e%czff9|oxkT>YTDJrE;yNE}LD{h9$szK^4PCxhU z-sMj=M+U$M87nCMd57)&Y`rqw<_OLZu8X@Y{b_s}fXIO#BjqpukTTp<;q!ftKLJN! zj;RLB?jJs=){S(OZU;vVUINWfd}C`ih0e5J-UVhRhs~j-J?3N584dvWb+xZFvndXh z^KnBQVX~JWd?`6j}m*S3t8Lso`7u3KhZ{ z>VxwfYL&YWT^I1K=ckCLE*R-HxZ;UpOj8*EChV>k-*Vb>m9eKh#h|;9GofCK)Plc3 zMK1{}#(G1{O9^wu40U_61l?eS9iLPntqmrVphNzh69UxP_z=v`uHY7Rwjh&HTM#MVH1TXN)v?layxgtc`STdA62MUBN6HtfLVv7{*Q1BWl4cbR?1=1MS^k zLjs&0V_scfuevj_;f>4by46gucVGF8T}|&*U*k|%4J&Hno_llkz9=C)og3zeZ;uh& zlz^y)pijd#Rsh`}qS~Njqp>en97%HIRhTD>Q8eaG1@wm-#GDuMQ_Coy5cfCZMx`?n z)x|+dAE^Syt;{3vYVT=yyi`=Q)nXttM+BoAiw1&%C%5yoqc{ezs(I&-L z!KaEqXSUw3N&4$EN?8Kb)U!YT0&_wl17Z>l24E9;5u3z1bIEvuNy-Aun|5i^3St(V#Q67li-~dN za!=EeMtu~Rf%Xg-=7woqiebh@AcS7w{CGVAqaNFsPw*m8xAPBbZYpogHI4Mg!6dcQ z6!@~&92Vy$z34{`wlWyUy!*h(I<}c(XC?RxQiacFz-(v3!Ro^^du{(NZ|A=eHX;N$ zpSh^FIdi&7e#GUMA>vkAsGOmT%tEz895`aYfurqQkX*kX!n15C7~zh}9WcysXfF?UX1d|gu6uto+tI^bE}1pZM-9=4IYOWJYo)h&~X}LmGk?WjaH{zE2*H z`GNb2cd)H-9I{Q^&>q7g(ksNwh&p)h`#W97j^C*?*DY{ z`sRuR|52jUNTKn~+N<{}(h7_am1&7#j?Zm{z<*wNHf<+`c$f{rqlO^hB ziRXdC8E}RbzN|U8AtX!2vJ#OkAp%K*%_HR=85c0T#wWH^S!>`@8@^@ zZr8Zoe!uI#bK{KXYdxQj$9+BX?Dvmalg=UOy@qf1Not8Dsjl>g$p0EK-rvV2THorZ zI8GUPQT977F?dIXIc{J2iV@uRWeGgL@I!F27~TGJ`Pc6Jt=NCfO8Q0{aI17w=#3x< zZ}zaRk?@V`RbUg7H~?`dBaL`0JP`WeyUMl0c8xJ-&-ZO--@r-#bCNAuMeX#jCGFT* z%NMsY_FsnHdU@XMS1Zl-Gi+jWptQ_Q^r^pu^IxXHa zBf7~!u^HXC4|0yK68pITcKh+U{^FG$qpM5(^E2Ah@UsbWJ>3~~W>{&{nPpRBtr!=) zL@&yq#0{?<>=;ZZN;GP8YWq`*O~%Uu>wIPt!7+FkKH6}Qo+irE-N)mfjBdsp^?l zuD>|PFY^oXSB50iGd#r)C;WHq^@_Gnd93vn-Rv3N9$s1=<94ocpsfLETg^^tad|m3 zrydX(^3&`1eScnwaoz8UKd!+~e%KNyQ{t7F>kG4fQ&_c~=_RS1PxA$8xf~c}l+g#2 zlY?*hw;NBYx^Cgtn?^yyiNs`S?C)v5&j2BwQ^|mV#c|THdsCvr4}Ch`A;b=I^~adM z=KvV|0KOH(H&88p0~Ey#%D|)r=z1?jM65uDnVLYN}h@lAebqD~pj(nhN^i3FKDYBN>}b=EsciN1^kz z#u9PX#hM6$D)^H7_x?=>_`e(#&%&PDUmmX;kL9?Fcek*l-tpQR&>LrumU1?!)X7(8 z8XbfhTSD^WiJzZ{-~sa(V{pKj1&BOq38O5r1}?@PaB6-50W$o+t0w~*+!l4I*i#f% zLE+Ewup0ysc1-Xtd3>L_T$KeO8{;i+fU4aFm&1PiEalrwzx}Vb*3GQC(sAJSFhAZJ z%~mAtDA@vap!n^4!6QH-#-aTg1F(7=90Tkfu@(k^rYBlKXTA(yZ;w~T10}p|O34Xf z2eFx%D|xCZSWuy3L3;7K*s$gvZ&WH5czUcxWt?Y-@H7aSZjXRT!%~LdzAc_7^#A~x z>NOx*GuB$zy?ML;#tzF{AhDIN zi30jCyV!`zE)Wq(g$aIx?1Fneaq)^|B+=5_$=*QL8v@hJ+X-d*@_Az7KoP*YNhO0fyh!bmw{052_B{YYqJ*Z!DTH?0(bEHbPSdJjl%epuq^`?&ZC zm#tqqPsB)x_d&tIn>omNu~kpJ5f1oMf#YKr-DDFS+|+u7hANe_ghovT?hcKz4vl{* zJ9ngqn(>4pNY1>&J&C0mgXZxnyTOg+x|I>p;P#(Y!FbZlm)dp3)(_;RpA+B8CoAaG zf2qIuwk*BR|KNAk+`zRfCAjxl9UTK0@UWbz@ATgKWx0Wu-E|BE8uxpB<_oX3L(1(e z>I`GR2_^dHGp)(#MHN6f^%DQ)XSlh=1C5ia503?(8c+%WTjdUuGH>d@o+IIDgnvAr z9q=!}11x&-j{oFn|6ehks5vXyU}G!ChZV4eowIt-vvv7$w~no`_wO5N`S0BzKtq+w zcLF4vcrA`1JnRM#Or>$a8m-^&wWZGN3c^qBj&N$8B{`*ztzW4tv&AoKm7693vbfm- zY`A3!4u8%aCkgAXa48g#m03{n1;6S}moUd(QYwi>gDtOV{`I)77ennxgUj9-Uqk&v zncbIO7rn&(0MU>RtSAJK)n}6raN{RtxxaiN`R2ikrZq2XV-_ULDgVy=$>rmtVE@G< z^2h)w@S(f)SJ``&p6XS4{u_^t=#?ti5)aHcN1eDMY8y=2s83`W64t}v;mu7kCaV3< zuE3OJi!G_sxwttXPEsobHnpGq6;2D<#VM`UwDfP)CjCpoX89d9Qw)4>tjNXuu8vPU za5Fr4qTQ(HM%If4{|ub>GCe}4!y-Yg2PDI38&S1vL|!WGMiZ*3B5#K^KR`uulMvJ! zQ&TZ5QtOnnpYn-oW#)u{9P=i6xii=6(LJm4IE(6BKVZyHRo7gz*S+1BhRu+W+GNr3 zXLyb|*d)P!sww!Aw6b)VO}aOglk?Bh#h4Fcmz8Iq%HhwdcBnw-j{@~#_81+rEdhlf541QW8RK0xG) zoSL#6o;WmfvYKO0p4);=xf%o7=vvQ8{bbUR2SsGx7}`p|5Y?Krr~Dx5}T_ZQd=Os-D7yd2c= zN+`(TPzw%l73AtadP@8zK`dzIR`f^rNBJQLuU_+eeBW-eC~#rYn@#%S1;e5pg8Z2S zS>JtEhDW+NU*D?weMDE+UdUAbF<2t!d?=CQhNl=si$XJ0+c@m&oaXh$oCr_6`3}a% zK@#mx_PNCW;KcIh`3uF*SotmJq`jJ0ta4$BZv(e?$phA zxI4E(Xe8!8o+aim!N{AW`ECjK#bBTzI9T!4CF3foW{~E58)Tp%O^_cwmp>2~(zs^L z6Iwzr@K%}a4HAGvGR!YfYdyG`pGCOwmp%kM(H`TlJ2Z1}z1nB_yK z7o+yE8$6>hSWhmgP2h-9s&djYG>MF}`6=#@)$oYmnPD*i7Ve6fH3eOi+iBv6&x2{3 zdo;4WMAH_iVC|;b+C8tocC{jZz%Sbx+VvoObS&HAcQy$%5H5On@ zX{WG%(y5D5b-Vn%@Re83kp;t9nIUIoI|1|?gusg|&bJ+ggwlpbRGjL=Qj?KW(RcfP z&pG?`h5(t6kR|Zo{l}vMwCfu7GmTeLeqq`N`v7RqNecyE+sD@G-|>m(RPU*CTeLc! zUU&FW`q_TMtSO*4t=4|wq4KcL(bJ|k7${5x64jYAcgpJ>Ev_l=wq_PFYMtVl>La)Z zGgqN~f{ZU_H#S}plH-11uD}eE&qGt*+>1yw4)uqSUR{--utv2ZDeQOa01%(_Z}!&q>V{ zPdE2I5(B2(rc(n2L&uX7DV}yW{`@(PZYsUdarpk5k3X-^-g>jVkVQt$?fZ8KvK54K zRWIEk(0Xfg`BnVe81hcGnZt~sBk6;O^D<~$?Mgx2LDyo%V8!wQ!rJ6u3FkB6?Y}K! zO-AZux^S?ySk-oIN6IV+R{D^dr+yuwuCH0V@0R4L=LgcRTs~#nY!Z)Rdv3WUQEb+< z&OmdyG^`*8S1cTAtTR`gO(8R=sX53yd^bWkXK}c9wASrOQK_mnjsHbg!`XO}SwIk0 zMBP%0lin?g_BX8m(ox7AJ@4gxQ(--0#qRS8g@jT-y0yaRH#c`h!fmcHwFF9vJ1k=oaP}H#t!1skjmw?Lh`nEVZ@G@jJJ5nUvqtl^I>;jJ5;nGD zBDu*lyuCI>3hA6oHLJ+W8?bIPdLV#wSzu#3zwdXVSl5^+z~EvM_oL<8kB@_6WVJ8w zKA@t|>QPisP>`dgpr9Z$f>#$^|J$p7|M$PW@$bL?e&qkhH|{B)-v{4%+|Gozzz?AA z{Is~B3V-bU@#NWIgo46MCdY!un3FR3M@SpIu~i4U%qvJJsbfJ#=)ohm@(xD>$L^a+ zv=6$OrWL6D$BRza7vveh$=FOhzYld#3TAuc$yX35#6e2mb>vhqZ7gSoC!2n`jn=f7 zL;aSnGk}|+lO&Adf=F2Y80IVO$5Ua+=DsB1Y_SfAJSX1!GCelwf6RowIz zIIG0rYIE~345GlTlk3Y_CRfd{gQc==(s_vD+7xBGe{}(g^8?jO(+&(qHb~C3=8Wwa zn8d`l+j&aL&y_v;96qy<6HVHN632$E?)1o$snG}+r+bfY8|GXq36p9w20=}$8#HT_ zsLm8&PBA8MdXde852{6z=FlI$Ib^*gyu_Y~^(bDkmLwf=5MDL2v9TT8>>-oc{TXue zgCjrv@$Esk&V_^Q2>$bI_$4F5pS;h_v%!LJS7mw>hJ9&(z<+;wB@1X2eO?LrK?5))$!~X>-A`~eO#5L^x75Zr zQKzALD}9t3YUhHSQZbT-vdegq)EpdC?q7MXcM(w|9em1Q4SuY=zti-Ac zLXD9iB-rYkzdsKPb3G}i?6Z6E9Q(#6r|&5{X3RIvBlu?!0U7mI+3?C}X{>t018GG>(xuKHQk1d(`c) zhp$?Lk=92Ha?#qPkb9v~t&ZOP^_^mkY7Q(S+shXzaK!OBkwwP1)iJ%$B4F7c(##gDB_5tz82&r#Lg!cqsJflVnnt55KTc>M6saY$J(BldD<@)l(@X6{1C227W@+;)OjaI2L)o zXR9zGH~BXkHgoiD8|SNW(`@CCdO$OmCSf=CVLDsV)Kaps*+7%p1dYfh`59b&xZWXu z^h|2pv6?~o*sE9Xt0PCYboyN;3f6-A+_^~2px#3`$lo;VqDsMwB z%N#o0{L9uabg{ZPYyLHZqi@@1uNVXS8V<&~#p1e=mg}CYKONIIT08*H5FI3o*V_3z zqTL+Hh9##PSc~u7x5Q{Z^~!}sufAr<EALMKHpMbU=0Jkfoj=iN8XTS&^8 zDG652f?0z^y^IxgSxUXL3ba#Q5mnM_vvOyj;a;G=$AyIj@E=IKDtR{i>5^QzaO#_R zpb@tW1uU7b&#Wm57SXA#MD5}i&m?*fcC%w5(7{iNk~8hyeAw8svm(O6xM1o1=M{Vt zygXkUhW}1mtoL9YF$R@jcW>iCmA#Q?l>N4y^Y5sLs7HuEtA0NCh{uWTIjfDx>?-t! zOJ8mb8I}!Agj81jOejNo$IXB8?n1JUHq4AXDd|)baBwxBrmeh!2CYFT_SD2^*TM9T z=x-Gdk2jnYG5kCWPt%*0A1q-Kf~$g^P#PXoo3OOhx~FogCcp1C$-8%@iI|4h=Haut zfUGLc@$pv~a6gx437_v?#u7#r(|xigL|27_REW>@6x|I)PY1D_>l0HbIqPYP?TxN` zn+HS(0UHL}LvvD+fv-QIzpVgA^t*|IVJLbD;;^t`bD(V=uurM=Aaq%II} zinO$y5yBNYOU5o|FD497&8oEVH97Q4wyYrxn%2AiAZ8Pb^R1@&-i^WvBZ9dnHv0Av z*)v{6O9L9^@yfOp3FZCOjIb|$*A`YV8|seHc~NIhbzR>k(I7^QnohWn+ITD=T4LM+6e295u;uf^rH?g7kp=F_9{ z#GQk}H#)ChjJFOS#d{=ES&zMcy@0shFzV1KeF?gOuzc#hE-F`qNEn?#eJrYa2+^7@ z^oYe}+oKU|q4HiE*jpBTvnu*|g!L&tP1+jL)FT)6F59Kg^SLmodGv0vA-7r{K7(Sp zQ7t(`+FLXz5yjfCvexOLGfQJDI#F8d3-HjWYvK^hrt5onBeT~}l~ zEUyffW8;Pb6AOQ8R|ST^?oQ@coY654z$qf%qi++^`!P#l_!zm3CN_L|od?-_C;KDo_(X5j%7Ph}{yP@j8wa+<;YbcM)JxgYIOe=SK; zvKgNoGD9`2&208so+4Ph5{H-_%3&5$#;5;z?{EIn%=7zT`f57&rQ=_g8dDkV9(60U`6l1qO~1tl~*$I^S7dyM6*DJYc? zwHzJA{mgPD?H6?BIDC2@t8mIW6oJ7}1x!278 zQj)K7zmalJ+1BZnW}8IC$7|xhQ-aOD%L&gW=GkN1e$gmJ(or;h@RE*3Sf>;9k+zfNOxj?#roAyj&- zN=a>*eP>)jJHbjCgonc`bZe4czu4;@jxoD(-yOY85DD(nuOpb}-ewd*IF z>kc}CXWpU~>-i(UtkWPX))7p6RZ?Ph=;_b%8!!H{L8!E`Hh&b|;rY0fPj7vY=%IoslslHt>H7m#~^!YC3IPQRr6c$}c zrm=cVI>B`C0p)c82K{hXOUE4H{I0Ue10nps|9czzzpGD;xcNVJ&;MVW;#^|l{Y$jn zs_J{)l3zFVCx1KHZ`CqQF=h%h{&@TX>IqjJx#JQSt1E38($csA?@!G08H~r4;%(NS z_3)*|?IfDbpx!kX0a4h zLf=Nq|AQ{bXQrQLglM0ke<);SelwZ+bmsA7#vfnts;M^g)B#f3I<(P)>>(wJeck7H zC!ws_0VV69w7wVKIhY0Ga`@ud}f#bvs}ok!w7h+cTSKm>!aCcIuiu=s7;_gz~<5k71v` z^bFht54jh@#3Clhrxh~~85MSeHmt6cs2QbUB+QNEd*=D}xet$f`!X3CGmjhFX!!SP zSQok*_wA++vB&2+J}77GvqgU28}pjPlKU@7LAl1Yz(>BhKyN+cbG)h%CpKwJJBBr= zJc_{}EMeWuZ>W4K){@oP5c%P(3Z-u2r%V$6WQzVZ-dS0KNvSy4|zF zxazc(aiC=B&!{J z9!&)WixMIPyR*_RdV(5Zd}ax_*7yjfGjV9t8`_ft>?-a_D^B0elN1x_fS0Vq||1yaeS z_cPGa+cUO}`$6Bs!I|!OOK=^}46j4AUUBJz@W>QhP9}7U!iV@MnHlKgFQ5bQU{dvR znGd9Nd@4Ey`w%BsldVdDKkXCI4K{%iZ5=w%tFYAG0g5{IaDTBR0Z*6@TJ+_re1$BN zILL#PaDBwqIWvn_?E`s2)l>+YB|W;1KIIgbB4DUE@cvvOz-cW2oe#FuqR}hpAAc&X z8KU|_YJ1q6bqt8^)H|cl!X=CWD#Xe}aF$ec!gptU#LY0Vq0}>p&wxg0Ii9dhB|q$T z71JyBF}gayhASzyMCk4{VPI2>D09dsIM)VbeB2>qZciO+t4nZ5z<0}^WvyMlUQE$) z3^)!+TQuU=o7ElgP^rVt8=+&1y1{J^SX^P983VGMsS8LnoE?H$U(N)WT<1O&&WaZs z)zhfE(8Sg`HrN}JPkE+`FvCZ`QYbU_D$y16DYv~acTL}wKGuLfrHc0*_OWGcT2UzY zvaWz`)>WK&n(Yw#IpRtF@4~XK$BeRYDdP%?Yu~vuCA}`;ngDS?s5xAMM?}rXNyc8b zw+r9^FK$9mw@AxO05ShEUTg(+WkH~~@3~@uw-+Z^D9Sg9J zb>Q&Mjx^zMreX%=G0zj^-NIesIqnC~3ZG!?FX>hkJjLKS<=ey=FOsd>GX=rMI#e2V zd*`C-&5vivn8(Ps3CN@bFCkoQ1brwXS#E{ZrBYm)Vg~$5^wF(kk;q6CgmkaU@>@1- zf}2Y%88o$`)!JnuR2hrY&S(i2tKCkJRyY&>f&PZ%csk(o%QmurXO7=H?=JlW{3>59 znQh2TYd&7L?Obigm`hW6+$xzpv`(zkYH~ z99-08JTdd&vHmWOilozIXhCvt6F^0ag zNjnt#({Cz|798K6a`{Hr*x-9`6>@Eyl08tTG}}ytDcLS;thv28-+klK_;rDZh$KS4 znH<#~r*j+rU~>#`>h}AhfyVeioyU5C_+xm`2lf45=e^L?4-=NH7Fpe6ADAZ3L2}gj zHb|WqvzIH0TS5GOXEUR5nCssXM)9g>I>e;GrzR25p3E%e>0v0$LL8OlLl2l}y+^)K z@$<_xab%L3SibiMr3v{Y0FDz6eA*asBw}MPFVG2^MwjaZTi@{1#pIaMogn z*}oaI>GZm-uS3@u?8%Q=ZBnXxKH5vJC4X}3MO^TIS z%H3qdJHO`Y)a%+?JH8WaEPks{_KXb_to{X~L}!_wm}Zxz`w8(C98z7uj`N*&u`*Ho z8oD%M>1vvogS{ukZdYhRXL_4&D(8YAv@lAXXI4(L ztI!yY!;GXhOQ=CO1*kLX{l09X`NdWQu7GF3?O)G@=^w&Lhnm?$LAFL<1Q?!Br>ZbC zMnwqJsE;Fx@0b{4A`kV4zp{xV&V68{`w$W4Dk*oC=H&HbI+j^%Gy82R&UD|P&=}qv zR>Q0x6uwM>os81x(}rnl6r6K&5zI*i=evn`x&oci)u#|>RACnTL#YBrmJ+PXbd;EA zMp|(it-=({^>!_v?s|G&xyA=K+!HI(`fJ6yd38U$K2obIb9*@uDeqcgm_KHVV9o~3 zI7Z6@C9=@$Q1nVdisTpR!WRtymukAo0X$#iAJxlXt^k}7Qs zk_6=ky76zJP$b_J5)7F1*-)eFWL=Ot;(+CTT(xIW~H$>kB~A}(vq~B1K&Z64yww*?F^*#XcX7XrLIoZkLDsl!ct>K z!QSKxn<7P-10$dT1VJoA#!kRS#{M<(!sL+6{4doIL&Ux`L*2dMJ(1E~;Qph%yr8MT z44@}|j9YYN^Tf=t!nV%njLhtxJ*MYF%(Me;2tUNZ60%#8yZuY$-Zjs%%X@W@uf@|0 z%8#pndp-J#TnITurIh@4HB+JNjTfh;3PvSaD zpfKGgXl`SZYa6KD0-FsWek%$;&1h=9ei7mDZn}PSEEmd-QFh)m=a-?Ii5ZwWhTgBb z^dU*po8<*R?T~cl#hFJlAMibKBqm&>)bvvTDT66t{o;p`5i6e4Xao;s&C|oDI-{U_ zZt~EYsn`?3R|M?==#63Cw~z0uTjQd{CWvzEmUMKK)0tRVU@^Vih3U>z3-oOBH|C5$ z6P4Yct*RUAF3J_QJCfxyVWM%JFh^U5ePy&Sa}CTCwR^Y@E4)}FY1H1UQ0DW}R$lql z6{Yt4sQk$Ubu!82`YyFg-Bd&I+}d}%o9WaHKiO8-ta0Uz+a7kmAxL7W_l&&Ys7)!# zaP~|hgLGbWdG2(otiNCLA4Z2&#LLW0=5abNrHgbN>r7&SFYG1TlgdA=_ylQ@nsINy z7AdEjSvp7vs5_$So6M!~?A!49_@tATQM#3+8(6^e&;R8*0f`z4 z+fvQsM zt%B4~;mjPoN31T!XV>!bjC!)g-n^k!%^+VIYObJz*lSFNI!P;L@iA~8pFZ~g{P8@B;#yRa7Ex=+ zPMr(?!GWi|)_Ys_Hr=G&*PoH6W2N7Ki=U~1wzGcrk{Ug6qe^t_b-I}scV?{G2f&IH zuC5@(J*6R>^9v~mI*;lVb5oYEl)Qr;5It$GBmvw!|MvqmvGMQZV}CD1p;#X85z(vy zLqY!>MTG0YluWivX+MSAX=yU0NyUSqw#w9rXJH2k=K2OYR~9Vy><0d%2XCvR1w*@i zzXLqg6Y_4!)_6>DsG#($;*Lf_XNijj^=!#6L;b(!ex_iwdW>6eyS0@|C@E=K%Ut9w z`30?!FHX&RHQcaVk5qK**{uGeQ;TG#?yzB72cj~>ciarpqwJKvFVVE!*drbbqKn;B z)8L2;!PKaac?ZqY)5TTidokzoj1sgBfA$?Rzhp+r2kHFG{{BLu5}MPkInm^%2R*V$!181`p>Q!~&FRdkueX)%NdC(<6z7rjHRUG|Ju9^uIJ zAc>p-)zy=PlRYk11zbxPe6ZY~99u*bqwfq>)|edfXCfRZffgcK{@c)O*Z9+ic#tZAmEC!e@TJUn~j z?<8co$Z9(HkW&I%tKor-SRZ|NAfYy~QZtD&{Z3uvI)-dZtvLJRARo0#jX!Howhe0y zN3}(Nf7Pp^*jzHCX6IF+99y_}Ww~mTQ&+Qq5RIJ5R=jCx-)VEv$?TDciuR#nPTsil zSXPUo17(TA1Xkd5pl6QeML9;1cL_XtbM#e90X2mue~!?-=FPoya`8=8|0rKUGa>-> z%)AF{!{b1FuOKg?+oq}3j_tR<;rjA7N zuf?K=jApX|6;5LDX%@)nNH~I#+Ckf+JFITjhD-$uRa1 z*F82}#^%cvw|Y8$y+>sUm$nSEz4>-&j$-2m3D=1eB)lpLa`&fM8zWC}P10Epbl%rF zH^6f56uTX)KO$OmFS~gR5k1BLAD(rRPNEv?`2C=U&gW`Bh$vFhZ4+PH~O|SZr3P z;%iMCB3bFd>g2P5Eou)pzj3>u*FI2QJDZb8?K)>4mbOB4Cg&Af)m3R{CCkX4FKDM} z=MCx3nO!VhUJ)Nrku|_W5uuZF(oF$r!o}Y?q;0Dt&!lXArXGlAn25ya#E2vou65I& zXpeKOj^-wiF{~?O73Ep5bbFxO^V}NQLBne`E%(hv9;fJ}D5kA*siliG`=)ejWymuj zY}E1?9P{?=2Xoab1R(@YQS4TRb>;b7nsihn!o}^ry`n1Y8I&WJXXWyfg4HbpjPswG z8|i&!d6g59bR`-i$}(^BRl7IhVfbnEv{O*j?VdB(Y{?~^?IYFD(A{DBy;o%|o2r%C znjHT+fkoy@Rff^-UG-fbuT=&Mc|X+aN&EY>{l^@I&>KLd@ugX<4-^?L6N!uQi{1A* zNx+`DTTK!yPnN(Co5n(`XLu#}jo@*-bzyee%kv!SN_F2pSP?SOlB_*SN5;r|DOwEL zP-c)hu@&NU=EmNLJd^sOQJd76bKBO##_JW~-V3GY%$$2DB_?*tp-ZNQw;g(27F@$h zabM|An5t*=UUgc36{A>X!2?zw(#7+L0+s&a-`C{wf4|JIQ7y2~D-{asaThGc)qG#t zR22p-gUMR(9Xg3QPm1S65!H^1TFh&TSCI~ki;evhPX#vjgmgI zkO<93%oS~n_@r0OjvzCtgyiNQ;z&EmktGrJ1;CB+Qm98R|&dS3XVc)T>I9Z}W|O zNnNkN+K|rLU13~lN<@&XchfdW(yYCBeBknLOC*XNLH}Tam?yl6R?V(lX#9808JD`T z%id{ST!EOb+Y@D_wmDr3?+Y-aX%q_H%L%o>;L2_!L}rH3l;8?iUk*(eEZ*9f@scP>3F}(Q?O!{xg>fcZQFPGQFbkS}C z=*FFbaCPtqX}YKnebLKY9ghV6i&YoY+R zQn(1H@VhJx5WE3!B_HrSA~TQ_!G#1$+8|@$zv=BFJgHp)FU~a}+6PFB?!qXDcQSY% zmUH1f?E&IPizdhCvyb3)rARLz4#Y!g(%$Y>VR~|U(0AC%6>Cebgn}Jc z%bhNK@CVyb9O%_}Q^cJfF;pG?&-Hq)lx+W}SkDtw=gIgq<0zLWgM})_P{mr{!`f!? z8n)$_K|pb340rykMlNBEAJU^E#~`Vb3KiES)ZV8B{5h!h*bL(YK^0%X@l0{Az(5K4 z7n%L}{6DmRp@=bqJ?^`cc=2B`2>l9Y;1|>(lNMcQSW|l6hC3R(+Cd_gqt?o!su@`& zMs=dOPSCG?g+-(37>^yN?S=(zCwBFNvmp**!^GMhARzo9Ck4(>ZnDzOK=5%JlZT<8 zx-CfkDI$LW(%HQ8AJ`|6e+z|jP-7^wm(BDccur_gXyw?NhPC<`y@? z2~V8QzvioTQ$u_zXw~}&-%GyAqLOv`EHo8pGgMUYPN?%d;>m4w$=~JVM-YBR{5x|4 zkFcd}YAMB=iE8BT0BB^No3OQs-OptmKs!1MoT&KVNKPV!0vWS`9-5s)UAvxz1b4=k-9hp+cm+Cj%A-_Q)vZmHCJ4c_67CclqAdP zto9z7*E#CU6l6{R;Iu+X-snS}*L*w+AM8`Y!;tfVUsyxDd1MuF5m*n{BPlV_w|7hw zO^yQJ8-~N~DmsI~zMAzg`atUUt9LvLKg#dvGUl^`;)^=~wMgCU0>awFkThXybs{mi z9Yx!mI+WxeTp_JS?8To$Fol42rBdIrd;a-ZW}^9&>DdDS9gUJ(F`j!&0nA2ge}#Rz z`faay;dT;-i0ZM@YgC(vy@ERiy7&~@KAq0YzuVea~Jk3<`XV$jlt#p^is*m)J!K8Kz?pU*xJjvju1V0 zo!){uiGm~|Cb?Oa!CGn9$9hd0*4AmxKmX|cyd@;t3(`;sCZaf3~ke?2x;~{OIf~+gYj87QCqr!G&w|KAbF6h5*c8e(1@_@IFE1w zy-_P`6UOagk?w51`hF@De;wxfT35f}T+&fiJR_miPK<+i7U2FCu!wH>H-`Er)7?Lbgl@CrBwiTc?+ z?~`*$2^4+PKyTjQS@0>Y-yWI4V_QzEfAZ4o-x=xYSf;9x-C~q{v!->UJ!%EdP+8JS zQtQh_?+{w5{#Zvpd4XTM2psg}i7ve`i`?}F95-Y>ioN;7_J}0p;9dTjTr=0}Ev^s3-`r6i zmtqqS)573G9WODz=ApvhIovsgSuT8r18Wq*GT)ytN>mET0z|Ca^Fr4B3ijQ>E|Cdb z5o0g9Km97Ey_dUZr;*{&Efi<_MdO`xdnA#iRVKHeDGMO%5!p&Z>^%{+3*&c7 z^wm-;*ywLBjaYreh+X=!)!tryz9q9#d$ZcCR{NvdI`d~L3Y@DPZOs1e{sX+q0$+^~ u8s+jllgy|;^|1bV%>STr{Ea<6dH8duzLWlKFgWT?s3@u{6yGup_&)%Q8A28S literal 42751 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≫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 literal 44315 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 + @@ -627,4 +630,4 @@ - \ No newline at end of file + diff --git a/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt b/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt index bed77c0436a9..a4e0f74b8117 100644 --- a/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt +++ b/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt @@ -60,7 +60,8 @@ import com.owncloud.android.db.ProviderMeta AutoMigration(from = 78, to = 79, spec = DatabaseMigrationUtil.ResetCapabilitiesPostMigration::class), AutoMigration(from = 79, to = 80), AutoMigration(from = 80, to = 81), - AutoMigration(from = 81, to = 82) + AutoMigration(from = 81, to = 82), + AutoMigration(from = 82, to = 83) ], exportSchema = true ) diff --git a/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt b/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt index 4dc78224018f..37ef4568c5be 100644 --- a/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt +++ b/app/src/main/java/com/nextcloud/client/database/dao/FileDao.kt @@ -49,4 +49,10 @@ interface FileDao { @Query("SELECT * FROM filelist where file_owner = :fileOwner AND etag_in_conflict IS NOT NULL") fun getFilesWithSyncConflict(fileOwner: String): List + + @Query( + "SELECT * FROM filelist where file_owner = :fileOwner AND internal_two_way_sync_timestamp >= 0 " + + "ORDER BY internal_two_way_sync_timestamp DESC" + ) + fun getInternalTwoWaySyncFolders(fileOwner: String): List } diff --git a/app/src/main/java/com/nextcloud/client/database/entity/FileEntity.kt b/app/src/main/java/com/nextcloud/client/database/entity/FileEntity.kt index 2281a06ea9da..d223172bb91f 100644 --- a/app/src/main/java/com/nextcloud/client/database/entity/FileEntity.kt +++ b/app/src/main/java/com/nextcloud/client/database/entity/FileEntity.kt @@ -115,5 +115,9 @@ data class FileEntity( @ColumnInfo(name = ProviderTableMeta.FILE_METADATA_GPS) val metadataGPS: String?, @ColumnInfo(name = ProviderTableMeta.FILE_E2E_COUNTER) - val e2eCounter: Long? + val e2eCounter: Long?, + @ColumnInfo(name = ProviderTableMeta.FILE_INTERNAL_TWO_WAY_SYNC_TIMESTAMP) + val internalTwoWaySync: Long?, + @ColumnInfo(name = ProviderTableMeta.FILE_INTERNAL_TWO_WAY_SYNC_RESULT) + val internalTwoWaySyncResult: String? ) diff --git a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java index a6ba1bcf15ec..37b1b10d98d4 100644 --- a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java +++ b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java @@ -54,6 +54,7 @@ import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.ui.activity.FilePickerActivity; import com.owncloud.android.ui.activity.FolderPickerActivity; +import com.owncloud.android.ui.activity.InternalTwoWaySyncActivity; import com.owncloud.android.ui.activity.ManageAccountsActivity; import com.owncloud.android.ui.activity.ManageSpaceActivity; import com.owncloud.android.ui.activity.NotificationsActivity; @@ -476,4 +477,7 @@ abstract class ComponentsModule { @ContributesAndroidInjector abstract TestJob testJob(); + + @ContributesAndroidInjector + abstract InternalTwoWaySyncActivity internalTwoWaySyncActivity(); } diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt index 8bfc81c0301c..b42d1ef25d5e 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt @@ -95,6 +95,7 @@ class BackgroundJobFactory @Inject constructor( GeneratePdfFromImagesWork::class -> createPDFGenerateWork(context, workerParameters) HealthStatusWork::class -> createHealthStatusWork(context, workerParameters) TestJob::class -> createTestJob(context, workerParameters) + InternalTwoWaySyncWork::class -> createInternalTwoWaySyncWork(context, workerParameters) else -> null // caller falls back to default factory } } @@ -277,4 +278,14 @@ class BackgroundJobFactory @Inject constructor( backgroundJobManager.get() ) } + + private fun createInternalTwoWaySyncWork(context: Context, params: WorkerParameters): InternalTwoWaySyncWork { + return InternalTwoWaySyncWork( + context, + params, + accountManager, + powerManagementService, + connectivityService + ) + } } diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt index ae6d35a5c39a..d460fd623f7c 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt @@ -168,4 +168,5 @@ interface BackgroundJobManager { fun schedulePeriodicHealthStatus() fun startHealthStatus() fun bothFilesSyncJobsRunning(syncedFolderID: Long): Boolean + fun scheduleInternal2WaySync() } diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index 76a9b836b8eb..af345d832bfd 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -84,6 +84,8 @@ internal class BackgroundJobManagerImpl( const val JOB_PERIODIC_HEALTH_STATUS = "periodic_health_status" const val JOB_IMMEDIATE_HEALTH_STATUS = "immediate_health_status" + const val JOB_INTERNAL_TWO_WAY_SYNC = "internal_two_way_sync" + const val JOB_TEST = "test_job" const val MAX_CONTENT_TRIGGER_DELAY_MS = 10000L @@ -647,4 +649,13 @@ internal class BackgroundJobManagerImpl( request ) } + + override fun scheduleInternal2WaySync() { + val request = periodicRequestBuilder( + jobClass = InternalTwoWaySyncWork::class, + jobName = JOB_INTERNAL_TWO_WAY_SYNC + ).build() + + workManager.enqueueUniquePeriodicWork(JOB_INTERNAL_TWO_WAY_SYNC, ExistingPeriodicWorkPolicy.KEEP, request) + } } diff --git a/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt b/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt new file mode 100644 index 000000000000..18d32c7491a5 --- /dev/null +++ b/app/src/main/java/com/nextcloud/client/jobs/InternalTwoWaySyncWork.kt @@ -0,0 +1,91 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2024 Tobias Kaminsky + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.client.jobs + +import android.content.Context +import androidx.work.Worker +import androidx.work.WorkerParameters +import com.nextcloud.client.account.UserAccountManager +import com.nextcloud.client.device.PowerManagementService +import com.nextcloud.client.network.ConnectivityService +import com.owncloud.android.MainApp +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.operations.SynchronizeFolderOperation +import com.owncloud.android.utils.FileStorageUtils +import java.io.File + +@Suppress("Detekt.NestedBlockDepth") +class InternalTwoWaySyncWork( + private val context: Context, + params: WorkerParameters, + private val userAccountManager: UserAccountManager, + private val powerManagementService: PowerManagementService, + private val connectivityService: ConnectivityService +) : Worker(context, params) { + override fun doWork(): Result { + Log_OC.d(TAG, "Worker started!") + + var result = true + + if (powerManagementService.isPowerSavingEnabled || + !connectivityService.isConnected || connectivityService.isInternetWalled + ) { + Log_OC.d(TAG, "Not starting due to constraints!") + return Result.success() + } + + val users = userAccountManager.allUsers + + for (user in users) { + val fileDataStorageManager = FileDataStorageManager(user, context.contentResolver) + val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(user) + + for (folder in folders) { + val freeSpaceLeft = File(folder.storagePath).getFreeSpace() + val localFolderSize = FileStorageUtils.getFolderSize(File(folder.storagePath, MainApp.getDataFolder())) + val remoteFolderSize = folder.fileLength + + if (freeSpaceLeft < (remoteFolderSize - localFolderSize)) { + Log_OC.d(TAG, "Not enough space left!") + result = false + } + + Log_OC.d(TAG, "Folder ${folder.remotePath}: started!") + val operation = SynchronizeFolderOperation(context, folder.remotePath, user, fileDataStorageManager) + .execute(context) + + if (operation.isSuccess) { + Log_OC.d(TAG, "Folder ${folder.remotePath}: finished!") + } else { + Log_OC.d(TAG, "Folder ${folder.remotePath} failed!") + result = false + } + + folder.apply { + internalFolderSyncResult = operation.code.toString() + internalFolderSyncTimestamp = System.currentTimeMillis() + } + + fileDataStorageManager.saveFile(folder) + } + } + + return if (result) { + Log_OC.d(TAG, "Worker finished with success!") + Result.success() + } else { + Log_OC.d(TAG, "Worker finished with failure!") + Result.failure() + } + } + + companion object { + const val TAG = "InternalTwoWaySyncWork" + } +} diff --git a/app/src/main/java/com/owncloud/android/MainApp.java b/app/src/main/java/com/owncloud/android/MainApp.java index 9d8507b7b4b0..9fd3e2cb7abe 100644 --- a/app/src/main/java/com/owncloud/android/MainApp.java +++ b/app/src/main/java/com/owncloud/android/MainApp.java @@ -371,6 +371,7 @@ public void onCreate() { backgroundJobManager.scheduleMediaFoldersDetectionJob(); backgroundJobManager.startMediaFoldersDetectionJob(); backgroundJobManager.schedulePeriodicHealthStatus(); + backgroundJobManager.scheduleInternal2WaySync(); } registerGlobalPassCodeProtection(); diff --git a/app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java b/app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java index 95653322a517..5390b5d5c6e1 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -77,6 +77,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import kotlin.Pair; +@SuppressFBWarnings("CE") public class FileDataStorageManager { private static final String TAG = FileDataStorageManager.class.getSimpleName(); @@ -558,6 +559,8 @@ private ContentValues createContentValuesBase(OCFile fileOrFolder) { cv.put(ProviderTableMeta.FILE_SHAREES, gson.toJson(fileOrFolder.getSharees())); cv.put(ProviderTableMeta.FILE_TAGS, gson.toJson(fileOrFolder.getTags())); cv.put(ProviderTableMeta.FILE_RICH_WORKSPACE, fileOrFolder.getRichWorkspace()); + cv.put(ProviderTableMeta.FILE_INTERNAL_TWO_WAY_SYNC_TIMESTAMP, fileOrFolder.getInternalFolderSyncTimestamp()); + cv.put(ProviderTableMeta.FILE_INTERNAL_TWO_WAY_SYNC_RESULT, fileOrFolder.getInternalFolderSyncResult()); return cv; } @@ -602,6 +605,8 @@ private ContentValues createContentValuesForFile(OCFile file) { cv.put(ProviderTableMeta.FILE_METADATA_GPS, gson.toJson(file.getGeoLocation())); cv.put(ProviderTableMeta.FILE_METADATA_LIVE_PHOTO, file.getLinkedFileIdForLivePhoto()); cv.put(ProviderTableMeta.FILE_E2E_COUNTER, file.getE2eCounter()); + cv.put(ProviderTableMeta.FILE_INTERNAL_TWO_WAY_SYNC_TIMESTAMP, file.getInternalFolderSyncTimestamp()); + cv.put(ProviderTableMeta.FILE_INTERNAL_TWO_WAY_SYNC_RESULT, file.getInternalFolderSyncResult()); return cv; } @@ -1035,6 +1040,7 @@ private OCFile createFileInstance(FileEntity fileEntity) { ocFile.setLivePhoto(fileEntity.getMetadataLivePhoto()); ocFile.setHidden(nullToZero(fileEntity.getHidden()) == 1); ocFile.setE2eCounter(fileEntity.getE2eCounter()); + ocFile.setInternalFolderSyncTimestamp(fileEntity.getInternalTwoWaySync()); String sharees = fileEntity.getSharees(); // Surprisingly JSON deserialization causes significant overhead. @@ -2477,4 +2483,29 @@ public List getFilesWithSyncConflict(User user) { return files; } + + public List getInternalTwoWaySyncFolders(User user) { + List fileEntities = fileDao.getInternalTwoWaySyncFolders(user.getAccountName()); + List files = new ArrayList<>(fileEntities.size()); + + for (FileEntity fileEntity : fileEntities) { + files.add(createFileInstance(fileEntity)); + } + + return files; + } + + public boolean isPartOfInternalTwoWaySync(OCFile file) { + if (file.isInternalFolderSync()) { + return true; + } + + while (file != null && !OCFile.ROOT_PATH.equals(file.getDecryptedRemotePath())) { + if (file.isInternalFolderSync()) { + return true; + } + file = getFileById(file.getParentId()); + } + return false; + } } diff --git a/app/src/main/java/com/owncloud/android/datamodel/OCFile.java b/app/src/main/java/com/owncloud/android/datamodel/OCFile.java index 566b1c06d3c9..5577bc182a32 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/OCFile.java +++ b/app/src/main/java/com/owncloud/android/datamodel/OCFile.java @@ -117,6 +117,8 @@ public class OCFile implements Parcelable, Comparable, ServerFileInterfa @Nullable private GeoLocation geolocation; private List tags = new ArrayList<>(); + private Long internalFolderSyncTimestamp = -1L; + private String internalFolderSyncResult = ""; /** * URI to the local path of the file contents, if stored in the device; cached after first call to @@ -1051,6 +1053,26 @@ public void setE2eCounter(@Nullable Long e2eCounter) { this.e2eCounter = e2eCounter; } } + + public boolean isInternalFolderSync() { + return internalFolderSyncTimestamp >= 0; + } + + public Long getInternalFolderSyncTimestamp() { + return internalFolderSyncTimestamp; + } + + public void setInternalFolderSyncTimestamp(Long internalFolderSyncTimestamp) { + this.internalFolderSyncTimestamp = internalFolderSyncTimestamp; + } + + public String getInternalFolderSyncResult() { + return internalFolderSyncResult; + } + + public void setInternalFolderSyncResult(String internalFolderSyncResult) { + this.internalFolderSyncResult = internalFolderSyncResult; + } public boolean isAPKorAAB() { if ("gplay".equals(BuildConfig.FLAVOR)) { diff --git a/app/src/main/java/com/owncloud/android/db/ProviderMeta.java b/app/src/main/java/com/owncloud/android/db/ProviderMeta.java index 579c81fe4e21..3ea8d4b7e196 100644 --- a/app/src/main/java/com/owncloud/android/db/ProviderMeta.java +++ b/app/src/main/java/com/owncloud/android/db/ProviderMeta.java @@ -25,7 +25,7 @@ */ public class ProviderMeta { public static final String DB_NAME = "filelist"; - public static final int DB_VERSION = 82; + public static final int DB_VERSION = 83; private ProviderMeta() { // No instance @@ -120,6 +120,8 @@ static public class ProviderTableMeta implements BaseColumns { public static final String FILE_LOCK_TOKEN = "lock_token"; public static final String FILE_TAGS = "tags"; public static final String FILE_E2E_COUNTER = "e2e_counter"; + public static final String FILE_INTERNAL_TWO_WAY_SYNC_TIMESTAMP = "internal_two_way_sync_timestamp"; + public static final String FILE_INTERNAL_TWO_WAY_SYNC_RESULT = "internal_two_way_sync_result"; public static final List FILE_ALL_COLUMNS = Collections.unmodifiableList(Arrays.asList( _ID, @@ -171,7 +173,9 @@ static public class ProviderTableMeta implements BaseColumns { FILE_METADATA_LIVE_PHOTO, FILE_E2E_COUNTER, FILE_TAGS, - FILE_METADATA_GPS)); + FILE_METADATA_GPS, + FILE_INTERNAL_TWO_WAY_SYNC_TIMESTAMP, + FILE_INTERNAL_TWO_WAY_SYNC_RESULT)); public static final String FILE_DEFAULT_SORT_ORDER = FILE_NAME + " collate nocase asc"; // Columns of ocshares table diff --git a/app/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java index aa76b4935e8f..086006d40559 100644 --- a/app/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java @@ -697,6 +697,7 @@ private void setLocalFileDataOnUpdatedFile(OCFile remoteFile, OCFile localFile, if (localFile != null) { updatedFile.setFileId(localFile.getFileId()); updatedFile.setLastSyncDateForData(localFile.getLastSyncDateForData()); + updatedFile.setInternalFolderSyncTimestamp(localFile.getInternalFolderSyncTimestamp()); updatedFile.setModificationTimestampAtLastSyncForData( localFile.getModificationTimestampAtLastSyncForData() ); diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java index 58ca7cd8432e..6caf81f4714b 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -295,6 +295,8 @@ private void requestForUpload(OCFile file) { } private void requestForDownload(OCFile file) { + Log_OC.d("InternalTwoWaySyncWork", "download file: " + file.getFileName()); + FileDownloadHelper.Companion.instance().downloadFile( mUser, file); diff --git a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java index 861a29e75838..9f48c9ce92a7 100644 --- a/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -55,9 +55,6 @@ public class SynchronizeFolderOperation extends SyncOperation { private static final String TAG = SynchronizeFolderOperation.class.getSimpleName(); - /** Time stamp for the synchronization process in progress */ - private long mCurrentSyncTime; - /** Remote path of the folder to synchronize */ private String mRemotePath; @@ -95,17 +92,14 @@ public class SynchronizeFolderOperation extends SyncOperation { * @param context Application context. * @param remotePath Path to synchronize. * @param user Nextcloud account where the folder is located. - * @param currentSyncTime Time stamp for the synchronization process in progress. */ public SynchronizeFolderOperation(Context context, String remotePath, User user, - long currentSyncTime, FileDataStorageManager storageManager) { super(storageManager); mRemotePath = remotePath; - mCurrentSyncTime = currentSyncTime; this.user = user; mContext = context; mRemoteFolderChanged = false; @@ -365,7 +359,7 @@ private void synchronizeData(List folderAndFiles) throws OperationCancel } private void updateLocalStateData(OCFile remoteFile, OCFile localFile, OCFile updatedFile) { - updatedFile.setLastSyncDateForProperties(mCurrentSyncTime); + updatedFile.setLastSyncDateForProperties(System.currentTimeMillis()); if (localFile != null) { updatedFile.setFileId(localFile.getFileId()); updatedFile.setLastSyncDateForData(localFile.getLastSyncDateForData()); @@ -393,8 +387,19 @@ private void updateLocalStateData(OCFile remoteFile, OCFile localFile, OCFile up } } - private void classifyFileForLaterSyncOrDownload(OCFile remoteFile, OCFile localFile) { - if (!remoteFile.isFolder()) { + @SuppressFBWarnings("JLM") + private void classifyFileForLaterSyncOrDownload(OCFile remoteFile, OCFile localFile) throws OperationCancelledException { + if (remoteFile.isFolder()) { + /// to download children files recursively + synchronized (mCancellationRequested) { + if (mCancellationRequested.get()) { + throw new OperationCancelledException(); + } + startSyncFolderOperation(remoteFile.getRemotePath()); + } + + } else { + /// prepare content synchronization for files (any file, not just favorites) SynchronizeFileOperation operation = new SynchronizeFileOperation( localFile, remoteFile, diff --git a/app/src/main/java/com/owncloud/android/services/OperationsService.java b/app/src/main/java/com/owncloud/android/services/OperationsService.java index 372a3c88e089..648c7ce1b444 100644 --- a/app/src/main/java/com/owncloud/android/services/OperationsService.java +++ b/app/src/main/java/com/owncloud/android/services/OperationsService.java @@ -707,7 +707,6 @@ private Pair newOperation(Intent operationIntent) { this, // TODO remove this dependency from construction time remotePath, user, - System.currentTimeMillis(), // TODO remove this dependency from construction time fileDataStorageManager ); break; diff --git a/app/src/main/java/com/owncloud/android/ui/activity/InternalTwoWaySyncActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/InternalTwoWaySyncActivity.kt new file mode 100644 index 000000000000..e5489e6d9468 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/activity/InternalTwoWaySyncActivity.kt @@ -0,0 +1,30 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2024 Tobias Kaminsky + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.activity + +import android.os.Bundle +import androidx.recyclerview.widget.LinearLayoutManager +import com.nextcloud.client.di.Injectable +import com.owncloud.android.databinding.InternalTwoWaySyncLayoutBinding +import com.owncloud.android.ui.adapter.InternalTwoWaySyncAdapter + +class InternalTwoWaySyncActivity : BaseActivity(), Injectable { + lateinit var binding: InternalTwoWaySyncLayoutBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding = InternalTwoWaySyncLayoutBinding.inflate(layoutInflater) + setContentView(binding.root) + + binding.list.apply { + adapter = InternalTwoWaySyncAdapter(fileDataStorageManager, user.get(), context) + layoutManager = LinearLayoutManager(context) + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java index 88f4e90c9d88..0dbf9ca99e92 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java @@ -171,6 +171,9 @@ public void onCreate(Bundle savedInstanceState) { // Details setupDetailsCategory(preferenceScreen); + // Sync + setupSyncCategory(); + // More setupMoreCategory(); @@ -310,13 +313,19 @@ private void setupAboutCategory(String appVersion) { } } } + + private void setupSyncCategory() { + final PreferenceCategory preferenceCategorySync = (PreferenceCategory) findPreference("sync"); + viewThemeUtils.files.themePreferenceCategory(preferenceCategorySync); + + setupAutoUploadPreference(preferenceCategorySync); + setupInternalTwoWaySyncPreference(preferenceCategorySync); + } private void setupMoreCategory() { final PreferenceCategory preferenceCategoryMore = (PreferenceCategory) findPreference("more"); viewThemeUtils.files.themePreferenceCategory(preferenceCategoryMore); - setupAutoUploadPreference(preferenceCategoryMore); - setupCalendarPreference(preferenceCategoryMore); setupBackupPreference(); @@ -548,6 +557,16 @@ private void setupAutoUploadPreference(PreferenceCategory preferenceCategoryMore }); } } + + private void setupInternalTwoWaySyncPreference(PreferenceCategory preferenceCategorySync) { + Preference twoWaySync = findPreference("internal_two_way_sync"); + + twoWaySync.setOnPreferenceClickListener(preference -> { + Intent intent = new Intent(this, InternalTwoWaySyncActivity.class); + startActivity(intent); + return true; + }); + } private void setupBackupPreference() { Preference pContactsBackup = findPreference("backup"); diff --git a/app/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java b/app/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java index 5574e8ffa1d7..00ab1b25cfe5 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java @@ -424,8 +424,12 @@ private void checkDestinationAvailability() throws MigrationException { throw new MigrationException(R.string.file_migration_failed_dir_already_exists); } - if (dstFile.getFreeSpace() < FileStorageUtils.getFolderSize(new File(srcFile, MainApp.getDataFolder()))) { - throw new MigrationException(R.string.file_migration_failed_not_enough_space); + try { + if (dstFile.getFreeSpace() < FileStorageUtils.getFolderSize(new File(srcFile, MainApp.getDataFolder()))) { + throw new MigrationException(R.string.file_migration_failed_not_enough_space); + } + } catch (MigrationException e) { + throw new RuntimeException(e); } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncAdapter.kt new file mode 100644 index 000000000000..b432add035ef --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncAdapter.kt @@ -0,0 +1,43 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2024 Tobias Kaminsky + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.nextcloud.client.account.User +import com.owncloud.android.databinding.InternalTwoWaySyncViewHolderBinding +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.OCFile + +class InternalTwoWaySyncAdapter( + dataStorageManager: FileDataStorageManager, + user: User, + val context: Context +) : RecyclerView.Adapter() { + var folders: List = dataStorageManager.getInternalTwoWaySyncFolders(user) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): InternalTwoWaySyncViewHolder { + return InternalTwoWaySyncViewHolder( + InternalTwoWaySyncViewHolderBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ) + } + + override fun getItemCount(): Int { + return folders.size + } + + override fun onBindViewHolder(holder: InternalTwoWaySyncViewHolder, position: Int) { + holder.bind(folders[position], context) + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncViewHolder.kt new file mode 100644 index 000000000000..978b8c73172a --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/InternalTwoWaySyncViewHolder.kt @@ -0,0 +1,44 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2024 Tobias Kaminsky + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter + +import android.content.Context +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.owncloud.android.R +import com.owncloud.android.databinding.InternalTwoWaySyncViewHolderBinding +import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.utils.DisplayUtils + +class InternalTwoWaySyncViewHolder(val binding: InternalTwoWaySyncViewHolderBinding) : + RecyclerView.ViewHolder(binding.root) { + fun bind(folder: OCFile, context: Context) { + binding.run { + size.text = DisplayUtils.bytesToHumanReadable(folder.fileLength) + name.text = folder.decryptedFileName + + if (folder.internalFolderSyncResult.isEmpty()) { + syncResult.visibility = View.GONE + syncResultDivider.visibility = View.GONE + } else { + syncResult.visibility = View.VISIBLE + syncResultDivider.visibility = View.VISIBLE + syncResult.text = folder.internalFolderSyncResult + } + + if (folder.internalFolderSyncTimestamp == 0L) { + syncTimestamp.text = context.getString(R.string.internal_two_way_sync_not_yet) + } else { + syncTimestamp.text = DisplayUtils.getRelativeTimestamp( + context, + folder.internalFolderSyncTimestamp + ) + } + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java index 0b27de1bc378..b02a85ae5022 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -261,6 +261,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat binding.favorite.setOnClickListener(this); binding.overflowMenu.setOnClickListener(this); binding.lastModificationTimestamp.setOnClickListener(this); + binding.folderSyncButton.setOnClickListener(this); updateFileDetails(false, false); } @@ -471,8 +472,14 @@ public void onClick(View v) { boolean showDetailedTimestamp = !preferences.isShowDetailedTimestampEnabled(); preferences.setShowDetailedTimestampEnabled(showDetailedTimestamp); setFileModificationTimestamp(getFile(), showDetailedTimestamp); - - Log_OC.e(TAG, "Incorrect view clicked!"); + } else if (id == R.id.folder_sync_button) { + if (binding.folderSyncButton.isChecked()) { + getFile().setInternalFolderSyncTimestamp(0L); + } else { + getFile().setInternalFolderSyncTimestamp(-1L); + } + + storageManager.saveFile(getFile()); } else { Log_OC.e(TAG, "Incorrect view clicked!"); } @@ -556,6 +563,17 @@ public void updateFileDetails(boolean transferring, boolean refresh) { if (fabMain != null) { fabMain.hide(); } + + binding.syncBlock.setVisibility(file.isFolder() ? View.VISIBLE : View.GONE); + + if (file.isInternalFolderSync()) { + binding.folderSyncButton.setChecked(file.isInternalFolderSync()); + } else { + if (storageManager.isPartOfInternalTwoWaySync(file)) { + binding.folderSyncButton.setChecked(true); + binding.folderSyncButton.setEnabled(false); + } + } } setupViewPager(); diff --git a/app/src/main/res/layout/file_details_fragment.xml b/app/src/main/res/layout/file_details_fragment.xml index c00d53999a43..9466d4638d35 100644 --- a/app/src/main/res/layout/file_details_fragment.xml +++ b/app/src/main/res/layout/file_details_fragment.xml @@ -170,6 +170,39 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/internal_two_way_sync_view_holder.xml b/app/src/main/res/layout/internal_two_way_sync_view_holder.xml new file mode 100644 index 000000000000..4304150df226 --- /dev/null +++ b/app/src/main/res/layout/internal_two_way_sync_view_holder.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d20254961e9f..71b8e5459c93 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1218,13 +1218,15 @@ Year/Month/Day Secure sharing is not set up for this user Resharing is not allowed during secure file drop + Sync + Internal two way sync + Manage internal folders for two way sync + Not yet, soon to be synced Google restricted downloading APK/AAB files! No file or folder matching your search - Event not found, you can always sync to update. Redirecting to web… Contact not found, you can always sync to update. Redirecting to web… Permissions are required to open search result otherwise it will redirected to web… - Current folder name is invalid, please rename the folder. Redirecting to root %s. Please rename the file before moving or copying Some contents cannot able to uploaded due to contains reserved names or invalid character @@ -1233,4 +1235,5 @@ %s is a forbidden name .%s is a forbidden file extension Name ends with a space or a period + Sync diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 061f947aeba6..aa1e05dc5515 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -53,13 +53,23 @@ android:key="show_media_scan_notifications"/> + + + + + + -