From a487378dafd7400feb4412198643ed50ea358a12 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 02:24:04 +0000 Subject: [PATCH 01/40] Bump androidx.core:core-ktx from 1.12.0 to 1.13.0 (#2521) --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 7ab2dec16..3505985c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -198,7 +198,7 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines" - implementation 'androidx.core:core-ktx:1.12.0' + implementation 'androidx.core:core-ktx:1.13.0' implementation 'androidx.core:core-splashscreen:1.0.1' implementation "androidx.activity:activity-ktx:1.8.2" implementation "androidx.appcompat:appcompat:1.6.1" From ff9be43291c490a51c08399e84e5de6e1299af47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 02:25:16 +0000 Subject: [PATCH 02/40] Bump org.apache.commons:commons-text from 1.11.0 to 1.12.0 (#2523) --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 3505985c0..2e0ded858 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -246,7 +246,7 @@ dependencies { implementation "io.github.wulkanowy:AppKillerManager:3.0.1" implementation 'me.xdrop:fuzzywuzzy:1.4.0' implementation 'com.fredporciuncula:flow-preferences:1.9.1' - implementation 'org.apache.commons:commons-text:1.11.0' + implementation 'org.apache.commons:commons-text:1.12.0' playImplementation platform('com.google.firebase:firebase-bom:32.8.1') playImplementation 'com.google.firebase:firebase-analytics' From 860095e862acf4719c8856ad93e698b150455e7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 21 Apr 2024 02:31:28 +0000 Subject: [PATCH 03/40] Bump androidx.activity:activity-ktx from 1.8.2 to 1.9.0 (#2522) --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2e0ded858..2229f600b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -200,7 +200,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.13.0' implementation 'androidx.core:core-splashscreen:1.0.1' - implementation "androidx.activity:activity-ktx:1.8.2" + implementation "androidx.activity:activity-ktx:1.9.0" implementation "androidx.appcompat:appcompat:1.6.1" implementation "androidx.fragment:fragment-ktx:1.6.2" implementation "androidx.annotation:annotation:1.7.1" From bbbafdfe70697e0893cf40a48558f53bd82e7843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 21 Apr 2024 20:37:31 +0200 Subject: [PATCH 04/40] Bump sdk to 2.5.6-SNAPSHOT --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 01f4c3b16..e6f4846ab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -195,7 +195,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.5' + implementation 'io.github.wulkanowy:sdk:2.5.6-SNAPSHOT' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' From 4a65a5b19236d4cdb53a9d804cf8e91af7c4749e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 21 Apr 2024 23:51:34 +0200 Subject: [PATCH 05/40] Migrate away from userLoginId to studentId due to vulcan last changes --- .../java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt | 4 ++-- .../io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt | 4 ++-- .../java/io/github/wulkanowy/data/db/entities/MobileDevice.kt | 4 ++-- .../github/wulkanowy/data/db/entities/SchoolAnnouncement.kt | 4 ++-- .../main/java/io/github/wulkanowy/data/db/entities/Student.kt | 1 + .../wulkanowy/data/mappers/DirectorInformationMapper.kt | 4 ++-- .../io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt | 2 +- .../wulkanowy/data/repositories/MobileDeviceRepository.kt | 2 +- .../data/repositories/SchoolAnnouncementRepository.kt | 4 ++-- .../ui/modules/debug/notification/mock/schoolAnnouncement.kt | 2 +- app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt | 2 +- 11 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt b/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt index 96382cc10..5ddb4dd08 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt @@ -8,6 +8,6 @@ import kotlinx.coroutines.flow.Flow @Dao interface MobileDeviceDao : BaseDao { - @Query("SELECT * FROM MobileDevices WHERE user_login_id = :userLoginId ORDER BY date DESC") - fun loadAll(userLoginId: Int): Flow> + @Query("SELECT * FROM MobileDevices WHERE user_login_id = :studentId ORDER BY date DESC") + fun loadAll(studentId: Int): Flow> } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt b/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt index c32e4aba3..64d49bce7 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt @@ -10,6 +10,6 @@ import javax.inject.Singleton @Singleton interface SchoolAnnouncementDao : BaseDao { - @Query("SELECT * FROM SchoolAnnouncements WHERE user_login_id = :userLoginId ORDER BY date DESC") - fun loadAll(userLoginId: Int): Flow> + @Query("SELECT * FROM SchoolAnnouncements WHERE user_login_id = :studentId ORDER BY date DESC") + fun loadAll(studentId: Int): Flow> } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt index 89b04ccc8..44e900647 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt @@ -9,8 +9,8 @@ import java.time.Instant @Entity(tableName = "MobileDevices") data class MobileDevice( - @ColumnInfo(name = "user_login_id") - val userLoginId: Int, + @ColumnInfo(name = "user_login_id") // todo: change column name + val studentId: Int, @ColumnInfo(name = "device_id") val deviceId: Int, diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt index ac096b02b..814a3c8dd 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt @@ -9,8 +9,8 @@ import java.time.LocalDate @Entity(tableName = "SchoolAnnouncements") data class SchoolAnnouncement( - @ColumnInfo(name = "user_login_id") - val userLoginId: Int, + @ColumnInfo(name = "user_login_id") // todo: change column name + val studentId: Int, val date: LocalDate, diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt index dbaa573ce..0300506ac 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt @@ -49,6 +49,7 @@ data class Student( @ColumnInfo(name = "student_id") val studentId: Int, + @Deprecated("not available in VULCAN anymore") @ColumnInfo(name = "user_login_id") val userLoginId: Int, diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt index 85b37afc1..1a84a6a5e 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt @@ -8,7 +8,7 @@ import io.github.wulkanowy.sdk.pojo.LastAnnouncement as SdkLastAnnouncement @JvmName("mapDirectorInformationToEntities") fun List.mapToEntities(student: Student) = map { SchoolAnnouncement( - userLoginId = student.userLoginId, + studentId = student.studentId, date = it.date, subject = it.subject, content = it.content, @@ -19,7 +19,7 @@ fun List.mapToEntities(student: Student) = map { @JvmName("mapLastAnnouncementsToEntities") fun List.mapToEntities(student: Student) = map { SchoolAnnouncement( - userLoginId = student.userLoginId, + studentId = student.studentId, date = it.date, subject = it.subject, content = it.content, diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt index 1f4178fae..3818f01aa 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt @@ -8,7 +8,7 @@ import io.github.wulkanowy.sdk.pojo.Token as SdkToken fun List.mapToEntities(student: Student) = map { MobileDevice( - userLoginId = student.userLoginId, + studentId = student.studentId, date = it.createDate.toInstant(), deviceId = it.id, name = it.name diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt index 19466554a..1303d0e7a 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt @@ -38,7 +38,7 @@ class MobileDeviceRepository @Inject constructor( val isExpired = refreshHelper.shouldBeRefreshed(getRefreshKey(cacheKey, student)) it.isEmpty() || forceRefresh || isExpired }, - query = { mobileDb.loadAll(student.userLoginId) }, + query = { mobileDb.loadAll(student.studentId) }, fetch = { wulkanowySdkFactory.create(student, semester) .getRegisteredDevices() diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt index 6a04ce75f..78d956993 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt @@ -37,7 +37,7 @@ class SchoolAnnouncementRepository @Inject constructor( it.isEmpty() || forceRefresh || isExpired }, query = { - schoolAnnouncementDb.loadAll(student.userLoginId) + schoolAnnouncementDb.loadAll(student.studentId) }, fetch = { val sdk = wulkanowySdkFactory.create(student) @@ -57,7 +57,7 @@ class SchoolAnnouncementRepository @Inject constructor( ) fun getSchoolAnnouncementFromDatabase(student: Student): Flow> { - return schoolAnnouncementDb.loadAll(student.userLoginId) + return schoolAnnouncementDb.loadAll(student.studentId) } suspend fun updateSchoolAnnouncement(schoolAnnouncement: List) = diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt index e2dc5cd84..9b21f08e6 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt @@ -19,6 +19,6 @@ val debugSchoolAnnouncementItems = listOf( private fun generateAnnouncement(subject: String, content: String) = SchoolAnnouncement( subject = subject, content = content, - userLoginId = 0, + studentId = 0, date = LocalDate.now() ) diff --git a/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt b/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt index 721297513..e43654b8b 100644 --- a/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt +++ b/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt @@ -23,7 +23,7 @@ fun getRefreshKey(name: String, semester: Semester): String { } fun getRefreshKey(name: String, student: Student): String { - return "${name}_${student.userLoginId}" + return "${name}_${student.studentId}" } fun getRefreshKey(name: String, mailbox: Mailbox?, folder: MessageFolder): String { From af989ba9f62774e6888059c3f79987ea66676917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 21 Apr 2024 23:59:29 +0200 Subject: [PATCH 06/40] Don't display brackets in login student select items when schoolShortName is blank --- .../studentselect/LoginStudentSelectAdapter.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt index e6d131829..ef8cf4ee9 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt @@ -19,19 +19,23 @@ class LoginStudentSelectAdapter @Inject constructor() : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = LayoutInflater.from(parent.context) - return when (LoginStudentSelectItemType.values()[viewType]) { + return when (LoginStudentSelectItemType.entries[viewType]) { LoginStudentSelectItemType.EMPTY_SYMBOLS_HEADER -> EmptySymbolsHeaderViewHolder( ItemLoginStudentSelectEmptySymbolHeaderBinding.inflate(inflater, parent, false), ) + LoginStudentSelectItemType.SYMBOL_HEADER -> SymbolsHeaderViewHolder( ItemLoginStudentSelectHeaderSymbolBinding.inflate(inflater, parent, false) ) + LoginStudentSelectItemType.SCHOOL_HEADER -> SchoolHeaderViewHolder( ItemLoginStudentSelectHeaderSchoolBinding.inflate(inflater, parent, false) ) + LoginStudentSelectItemType.STUDENT -> StudentViewHolder( ItemLoginStudentSelectStudentBinding.inflate(inflater, parent, false) ) + LoginStudentSelectItemType.HELP -> HelpViewHolder( ItemLoginStudentSelectHelpBinding.inflate(inflater, parent, false) ) @@ -98,9 +102,11 @@ class LoginStudentSelectAdapter @Inject constructor() : with(binding) { loginStudentSelectHeaderSchoolName.text = buildString { append(item.unit.schoolName.trim()) - append(" (") - append(item.unit.schoolShortName) - append(")") + if (item.unit.schoolShortName.isNotBlank()) { + append(" (") + append(item.unit.schoolShortName) + append(")") + } } loginStudentSelectHeaderSchoolDetails.isVisible = item.unit.students.isEmpty() loginStudentSelectHeaderSchoolError.text = item.unit.error?.message @@ -170,9 +176,11 @@ class LoginStudentSelectAdapter @Inject constructor() : oldItem is LoginStudentSelectItem.SymbolHeader && newItem is LoginStudentSelectItem.SymbolHeader -> { oldItem.symbol == newItem.symbol } + oldItem is LoginStudentSelectItem.Student && newItem is LoginStudentSelectItem.Student -> { oldItem.student == newItem.student } + else -> oldItem == newItem } From 6eca8c42f5b996b0f2dd36f81c2c52c886af978d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 00:11:29 +0200 Subject: [PATCH 07/40] Show graduated students on top of student select items list --- .../login/studentselect/LoginStudentSelectPresenter.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt index 344414180..c81d353d4 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt @@ -12,6 +12,7 @@ import io.github.wulkanowy.data.pojos.RegisterUser import io.github.wulkanowy.data.repositories.SchoolsRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.data.resourceFlow +import io.github.wulkanowy.sdk.scrapper.exception.StudentGraduateException import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException import io.github.wulkanowy.services.sync.SyncManager import io.github.wulkanowy.ui.base.BasePresenter @@ -108,8 +109,8 @@ class LoginStudentSelectPresenter @Inject constructor( } private fun createItems(): List = buildList { - val notEmptySymbols = registerUser.symbols.filter { it.schools.isNotEmpty() } - val emptySymbols = registerUser.symbols.filter { it.schools.isEmpty() } + val notEmptySymbols = registerUser.symbols.filter { it.shouldShowOnTop() } + val emptySymbols = registerUser.symbols.filter { !it.shouldShowOnTop() } if (emptySymbols.isNotEmpty() && notEmptySymbols.isNotEmpty() && emptySymbols.any { it.symbol == loginData.userEnteredSymbol }) { add(createEmptySymbolItem(emptySymbols.first { it.symbol == loginData.userEnteredSymbol })) @@ -127,6 +128,10 @@ class LoginStudentSelectPresenter @Inject constructor( add(helpItem) } + private fun RegisterSymbol.shouldShowOnTop(): Boolean { + return schools.isNotEmpty() || error is StudentGraduateException + } + private fun createNotEmptySymbolItems( notEmptySymbols: List, students: List, From d943d03266283d4a0822a43583b6d96434e4e8c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 00:39:04 +0200 Subject: [PATCH 08/40] Version 2.5.6 --- app/build.gradle | 8 ++++---- app/src/main/play/release-notes/pl-PL/default.txt | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e6f4846ab..e3e8a7e00 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 154 - versionName "2.5.5" + versionCode 155 + versionName "2.5.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", "Wulkanowy" @@ -165,7 +165,7 @@ play { track = 'production' releaseStatus = ReleaseStatus.IN_PROGRESS userFraction = 0.99d - updatePriority = 1 + updatePriority = 3 enabled.set(false) } @@ -195,7 +195,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.6-SNAPSHOT' + implementation 'io.github.wulkanowy:sdk:2.5.6' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index 9d72cb076..a966a31f6 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,6 +1,5 @@ -Wersja 2.5.5 +Wersja 2.5.6 -— naprawiliśmy migrację informacji o tym, czy szkoła ucznia używa eduOne -— naprawiliśmy w końcu (teraz naprawdę mamy taką nadzieję) ten komunikat o braku uprawnień +— naprawiliśmy logowanie (pusta lista z wyborem uczniów), które zepsuło się po zmianach po stronie VULCANa Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From c72a117e3460414039460da870e7bbe0f0039eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 21 Apr 2024 20:37:31 +0200 Subject: [PATCH 09/40] Bump sdk to 2.5.6-SNAPSHOT --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2229f600b..5c00122a2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.5' + implementation 'io.github.wulkanowy:sdk:2.5.6-SNAPSHOT' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' From 21211252835a77b7fe855b1be686a4cbcf6d197c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 21 Apr 2024 23:51:34 +0200 Subject: [PATCH 10/40] Migrate away from userLoginId to studentId due to vulcan last changes --- .../java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt | 4 ++-- .../io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt | 4 ++-- .../java/io/github/wulkanowy/data/db/entities/MobileDevice.kt | 4 ++-- .../github/wulkanowy/data/db/entities/SchoolAnnouncement.kt | 4 ++-- .../main/java/io/github/wulkanowy/data/db/entities/Student.kt | 1 + .../wulkanowy/data/mappers/DirectorInformationMapper.kt | 4 ++-- .../io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt | 2 +- .../wulkanowy/data/repositories/MobileDeviceRepository.kt | 2 +- .../data/repositories/SchoolAnnouncementRepository.kt | 4 ++-- .../ui/modules/debug/notification/mock/schoolAnnouncement.kt | 2 +- app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt | 2 +- 11 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt b/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt index 96382cc10..5ddb4dd08 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/MobileDeviceDao.kt @@ -8,6 +8,6 @@ import kotlinx.coroutines.flow.Flow @Dao interface MobileDeviceDao : BaseDao { - @Query("SELECT * FROM MobileDevices WHERE user_login_id = :userLoginId ORDER BY date DESC") - fun loadAll(userLoginId: Int): Flow> + @Query("SELECT * FROM MobileDevices WHERE user_login_id = :studentId ORDER BY date DESC") + fun loadAll(studentId: Int): Flow> } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt b/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt index c32e4aba3..64d49bce7 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/SchoolAnnouncementDao.kt @@ -10,6 +10,6 @@ import javax.inject.Singleton @Singleton interface SchoolAnnouncementDao : BaseDao { - @Query("SELECT * FROM SchoolAnnouncements WHERE user_login_id = :userLoginId ORDER BY date DESC") - fun loadAll(userLoginId: Int): Flow> + @Query("SELECT * FROM SchoolAnnouncements WHERE user_login_id = :studentId ORDER BY date DESC") + fun loadAll(studentId: Int): Flow> } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt index 89b04ccc8..44e900647 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/MobileDevice.kt @@ -9,8 +9,8 @@ import java.time.Instant @Entity(tableName = "MobileDevices") data class MobileDevice( - @ColumnInfo(name = "user_login_id") - val userLoginId: Int, + @ColumnInfo(name = "user_login_id") // todo: change column name + val studentId: Int, @ColumnInfo(name = "device_id") val deviceId: Int, diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt index ac096b02b..814a3c8dd 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/SchoolAnnouncement.kt @@ -9,8 +9,8 @@ import java.time.LocalDate @Entity(tableName = "SchoolAnnouncements") data class SchoolAnnouncement( - @ColumnInfo(name = "user_login_id") - val userLoginId: Int, + @ColumnInfo(name = "user_login_id") // todo: change column name + val studentId: Int, val date: LocalDate, diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt index dbaa573ce..0300506ac 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt @@ -49,6 +49,7 @@ data class Student( @ColumnInfo(name = "student_id") val studentId: Int, + @Deprecated("not available in VULCAN anymore") @ColumnInfo(name = "user_login_id") val userLoginId: Int, diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt index 85b37afc1..1a84a6a5e 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/DirectorInformationMapper.kt @@ -8,7 +8,7 @@ import io.github.wulkanowy.sdk.pojo.LastAnnouncement as SdkLastAnnouncement @JvmName("mapDirectorInformationToEntities") fun List.mapToEntities(student: Student) = map { SchoolAnnouncement( - userLoginId = student.userLoginId, + studentId = student.studentId, date = it.date, subject = it.subject, content = it.content, @@ -19,7 +19,7 @@ fun List.mapToEntities(student: Student) = map { @JvmName("mapLastAnnouncementsToEntities") fun List.mapToEntities(student: Student) = map { SchoolAnnouncement( - userLoginId = student.userLoginId, + studentId = student.studentId, date = it.date, subject = it.subject, content = it.content, diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt index 1f4178fae..3818f01aa 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/MobileDeviceMapper.kt @@ -8,7 +8,7 @@ import io.github.wulkanowy.sdk.pojo.Token as SdkToken fun List.mapToEntities(student: Student) = map { MobileDevice( - userLoginId = student.userLoginId, + studentId = student.studentId, date = it.createDate.toInstant(), deviceId = it.id, name = it.name diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt index 19466554a..1303d0e7a 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/MobileDeviceRepository.kt @@ -38,7 +38,7 @@ class MobileDeviceRepository @Inject constructor( val isExpired = refreshHelper.shouldBeRefreshed(getRefreshKey(cacheKey, student)) it.isEmpty() || forceRefresh || isExpired }, - query = { mobileDb.loadAll(student.userLoginId) }, + query = { mobileDb.loadAll(student.studentId) }, fetch = { wulkanowySdkFactory.create(student, semester) .getRegisteredDevices() diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt index 6a04ce75f..78d956993 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/SchoolAnnouncementRepository.kt @@ -37,7 +37,7 @@ class SchoolAnnouncementRepository @Inject constructor( it.isEmpty() || forceRefresh || isExpired }, query = { - schoolAnnouncementDb.loadAll(student.userLoginId) + schoolAnnouncementDb.loadAll(student.studentId) }, fetch = { val sdk = wulkanowySdkFactory.create(student) @@ -57,7 +57,7 @@ class SchoolAnnouncementRepository @Inject constructor( ) fun getSchoolAnnouncementFromDatabase(student: Student): Flow> { - return schoolAnnouncementDb.loadAll(student.userLoginId) + return schoolAnnouncementDb.loadAll(student.studentId) } suspend fun updateSchoolAnnouncement(schoolAnnouncement: List) = diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt index e2dc5cd84..9b21f08e6 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/schoolAnnouncement.kt @@ -19,6 +19,6 @@ val debugSchoolAnnouncementItems = listOf( private fun generateAnnouncement(subject: String, content: String) = SchoolAnnouncement( subject = subject, content = content, - userLoginId = 0, + studentId = 0, date = LocalDate.now() ) diff --git a/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt b/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt index 721297513..e43654b8b 100644 --- a/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt +++ b/app/src/main/java/io/github/wulkanowy/utils/RefreshUtils.kt @@ -23,7 +23,7 @@ fun getRefreshKey(name: String, semester: Semester): String { } fun getRefreshKey(name: String, student: Student): String { - return "${name}_${student.userLoginId}" + return "${name}_${student.studentId}" } fun getRefreshKey(name: String, mailbox: Mailbox?, folder: MessageFolder): String { From 622c75bb424363af77685c2cb8fe5cabd4fd55e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 21 Apr 2024 23:59:29 +0200 Subject: [PATCH 11/40] Don't display brackets in login student select items when schoolShortName is blank --- .../studentselect/LoginStudentSelectAdapter.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt index e6d131829..ef8cf4ee9 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectAdapter.kt @@ -19,19 +19,23 @@ class LoginStudentSelectAdapter @Inject constructor() : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = LayoutInflater.from(parent.context) - return when (LoginStudentSelectItemType.values()[viewType]) { + return when (LoginStudentSelectItemType.entries[viewType]) { LoginStudentSelectItemType.EMPTY_SYMBOLS_HEADER -> EmptySymbolsHeaderViewHolder( ItemLoginStudentSelectEmptySymbolHeaderBinding.inflate(inflater, parent, false), ) + LoginStudentSelectItemType.SYMBOL_HEADER -> SymbolsHeaderViewHolder( ItemLoginStudentSelectHeaderSymbolBinding.inflate(inflater, parent, false) ) + LoginStudentSelectItemType.SCHOOL_HEADER -> SchoolHeaderViewHolder( ItemLoginStudentSelectHeaderSchoolBinding.inflate(inflater, parent, false) ) + LoginStudentSelectItemType.STUDENT -> StudentViewHolder( ItemLoginStudentSelectStudentBinding.inflate(inflater, parent, false) ) + LoginStudentSelectItemType.HELP -> HelpViewHolder( ItemLoginStudentSelectHelpBinding.inflate(inflater, parent, false) ) @@ -98,9 +102,11 @@ class LoginStudentSelectAdapter @Inject constructor() : with(binding) { loginStudentSelectHeaderSchoolName.text = buildString { append(item.unit.schoolName.trim()) - append(" (") - append(item.unit.schoolShortName) - append(")") + if (item.unit.schoolShortName.isNotBlank()) { + append(" (") + append(item.unit.schoolShortName) + append(")") + } } loginStudentSelectHeaderSchoolDetails.isVisible = item.unit.students.isEmpty() loginStudentSelectHeaderSchoolError.text = item.unit.error?.message @@ -170,9 +176,11 @@ class LoginStudentSelectAdapter @Inject constructor() : oldItem is LoginStudentSelectItem.SymbolHeader && newItem is LoginStudentSelectItem.SymbolHeader -> { oldItem.symbol == newItem.symbol } + oldItem is LoginStudentSelectItem.Student && newItem is LoginStudentSelectItem.Student -> { oldItem.student == newItem.student } + else -> oldItem == newItem } From 2fa868173bd7b634579d1c4e06e2591a7612985f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 00:11:29 +0200 Subject: [PATCH 12/40] Show graduated students on top of student select items list --- .../login/studentselect/LoginStudentSelectPresenter.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt index 344414180..c81d353d4 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt @@ -12,6 +12,7 @@ import io.github.wulkanowy.data.pojos.RegisterUser import io.github.wulkanowy.data.repositories.SchoolsRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.data.resourceFlow +import io.github.wulkanowy.sdk.scrapper.exception.StudentGraduateException import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException import io.github.wulkanowy.services.sync.SyncManager import io.github.wulkanowy.ui.base.BasePresenter @@ -108,8 +109,8 @@ class LoginStudentSelectPresenter @Inject constructor( } private fun createItems(): List = buildList { - val notEmptySymbols = registerUser.symbols.filter { it.schools.isNotEmpty() } - val emptySymbols = registerUser.symbols.filter { it.schools.isEmpty() } + val notEmptySymbols = registerUser.symbols.filter { it.shouldShowOnTop() } + val emptySymbols = registerUser.symbols.filter { !it.shouldShowOnTop() } if (emptySymbols.isNotEmpty() && notEmptySymbols.isNotEmpty() && emptySymbols.any { it.symbol == loginData.userEnteredSymbol }) { add(createEmptySymbolItem(emptySymbols.first { it.symbol == loginData.userEnteredSymbol })) @@ -127,6 +128,10 @@ class LoginStudentSelectPresenter @Inject constructor( add(helpItem) } + private fun RegisterSymbol.shouldShowOnTop(): Boolean { + return schools.isNotEmpty() || error is StudentGraduateException + } + private fun createNotEmptySymbolItems( notEmptySymbols: List, students: List, From 2816d7217ab140c1f3df744d6b611bd9abef6836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 00:39:04 +0200 Subject: [PATCH 13/40] Version 2.5.6 --- app/build.gradle | 8 ++++---- app/src/main/play/release-notes/pl-PL/default.txt | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5c00122a2..2cfe55d3f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 154 - versionName "2.5.5" + versionCode 155 + versionName "2.5.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", "Wulkanowy" @@ -161,7 +161,7 @@ play { track = 'production' releaseStatus = ReleaseStatus.IN_PROGRESS userFraction = 0.99d - updatePriority = 1 + updatePriority = 3 enabled.set(false) } @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.6-SNAPSHOT' + implementation 'io.github.wulkanowy:sdk:2.5.6' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index 9d72cb076..a966a31f6 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,6 +1,5 @@ -Wersja 2.5.5 +Wersja 2.5.6 -— naprawiliśmy migrację informacji o tym, czy szkoła ucznia używa eduOne -— naprawiliśmy w końcu (teraz naprawdę mamy taką nadzieję) ten komunikat o braku uprawnień +— naprawiliśmy logowanie (pusta lista z wyborem uczniów), które zepsuło się po zmianach po stronie VULCANa Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From 82210c37e37a13d68924f014d079edba0f8e8fb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 22:03:42 +0200 Subject: [PATCH 14/40] Display separate annual average and semester average if available (#2524) * Add displaying year average on grade details screen * Add displaying year average on grade summary screen * Add displaying year average on grade summary header * Fix tests * Hide semester average if it is not available in grade summary item * Add full names of summary averages labels --- app/build.gradle | 2 +- .../64.json | 2559 +++++++++++++++++ .../github/wulkanowy/data/db/AppDatabase.kt | 3 +- .../data/db/entities/GradeSummary.kt | 8 +- .../wulkanowy/data/mappers/GradeMapper.kt | 4 +- .../debug/notification/mock/gradeSummary.kt | 4 +- .../ui/modules/grade/GradeAverageProvider.kt | 8 +- .../grade/details/GradeDetailsAdapter.kt | 14 + .../modules/grade/details/GradeDetailsItem.kt | 1 + .../grade/details/GradeDetailsPresenter.kt | 3 +- .../grade/summary/GradeSummaryAdapter.kt | 57 +- .../main/res/layout/header_grade_details.xml | 21 +- .../main/res/layout/item_grade_summary.xml | 70 +- .../scrollable_header_grade_summary.xml | 74 +- app/src/main/res/values/strings.xml | 6 +- .../modules/grade/GradeAverageProviderTest.kt | 4 +- .../wulkanowy/utils/GradeExtensionTest.kt | 26 +- 17 files changed, 2816 insertions(+), 48 deletions(-) create mode 100644 app/schemas/io.github.wulkanowy.data.db.AppDatabase/64.json diff --git a/app/build.gradle b/app/build.gradle index e3e8a7e00..6d51ad841 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -195,7 +195,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.6' + implementation 'io.github.wulkanowy:sdk:2.5.7-SNAPSHOT' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/schemas/io.github.wulkanowy.data.db.AppDatabase/64.json b/app/schemas/io.github.wulkanowy.data.db.AppDatabase/64.json new file mode 100644 index 000000000..178a5eab5 --- /dev/null +++ b/app/schemas/io.github.wulkanowy.data.db.AppDatabase/64.json @@ -0,0 +1,2559 @@ +{ + "formatVersion": 1, + "database": { + "version": 64, + "identityHash": "dd5446e82ad8d0a65c545a5dbbaeb81c", + "entities": [ + { + "tableName": "Students", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`scrapper_base_url` TEXT NOT NULL, `scrapper_domain_suffix` TEXT NOT NULL DEFAULT '', `mobile_base_url` TEXT NOT NULL, `login_type` TEXT NOT NULL, `login_mode` TEXT NOT NULL, `certificate_key` TEXT NOT NULL, `private_key` TEXT NOT NULL, `is_parent` INTEGER NOT NULL, `email` TEXT NOT NULL, `password` TEXT NOT NULL, `symbol` TEXT NOT NULL, `student_id` INTEGER NOT NULL, `user_login_id` INTEGER NOT NULL, `user_name` TEXT NOT NULL, `student_name` TEXT NOT NULL, `school_id` TEXT NOT NULL, `school_short` TEXT NOT NULL, `school_name` TEXT NOT NULL, `class_name` TEXT NOT NULL, `class_id` INTEGER NOT NULL, `is_current` INTEGER NOT NULL, `registration_date` INTEGER NOT NULL, `is_authorized` INTEGER NOT NULL DEFAULT 0, `is_edu_one` INTEGER DEFAULT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `nick` TEXT NOT NULL, `avatar_color` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "scrapperBaseUrl", + "columnName": "scrapper_base_url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "scrapperDomainSuffix", + "columnName": "scrapper_domain_suffix", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "mobileBaseUrl", + "columnName": "mobile_base_url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "loginType", + "columnName": "login_type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "loginMode", + "columnName": "login_mode", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "certificateKey", + "columnName": "certificate_key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "privateKey", + "columnName": "private_key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isParent", + "columnName": "is_parent", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "email", + "columnName": "email", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "symbol", + "columnName": "symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userLoginId", + "columnName": "user_login_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "userName", + "columnName": "user_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentName", + "columnName": "student_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolSymbol", + "columnName": "school_id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolShortName", + "columnName": "school_short", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolName", + "columnName": "school_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "className", + "columnName": "class_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "classId", + "columnName": "class_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isCurrent", + "columnName": "is_current", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "registrationDate", + "columnName": "registration_date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isAuthorized", + "columnName": "is_authorized", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "isEduOne", + "columnName": "is_edu_one", + "affinity": "INTEGER", + "notNull": false, + "defaultValue": "NULL" + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "nick", + "columnName": "nick", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "avatarColor", + "columnName": "avatar_color", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_Students_email_symbol_student_id_school_id_class_id", + "unique": true, + "columnNames": [ + "email", + "symbol", + "student_id", + "school_id", + "class_id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_Students_email_symbol_student_id_school_id_class_id` ON `${TABLE_NAME}` (`email`, `symbol`, `student_id`, `school_id`, `class_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "Semesters", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `kindergarten_diary_id` INTEGER NOT NULL DEFAULT 0, `diary_name` TEXT NOT NULL, `school_year` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `semester_name` INTEGER NOT NULL, `start` INTEGER NOT NULL, `end` INTEGER NOT NULL, `class_id` INTEGER NOT NULL, `unit_id` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_current` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "kindergartenDiaryId", + "columnName": "kindergarten_diary_id", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "diaryName", + "columnName": "diary_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolYear", + "columnName": "school_year", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "semesterName", + "columnName": "semester_name", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "start", + "columnName": "start", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "end", + "columnName": "end", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "classId", + "columnName": "class_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "unitId", + "columnName": "unit_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "current", + "columnName": "is_current", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_Semesters_student_id_diary_id_kindergarten_diary_id_semester_id", + "unique": true, + "columnNames": [ + "student_id", + "diary_id", + "kindergarten_diary_id", + "semester_id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_Semesters_student_id_diary_id_kindergarten_diary_id_semester_id` ON `${TABLE_NAME}` (`student_id`, `diary_id`, `kindergarten_diary_id`, `semester_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "Exams", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `entry_date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `group` TEXT NOT NULL, `type` TEXT NOT NULL, `description` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "entryDate", + "columnName": "entry_date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "group", + "columnName": "group", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacher", + "columnName": "teacher", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacherSymbol", + "columnName": "teacher_symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Timetable", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `number` INTEGER NOT NULL, `start` INTEGER NOT NULL, `end` INTEGER NOT NULL, `date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `subjectOld` TEXT NOT NULL, `group` TEXT NOT NULL, `room` TEXT NOT NULL, `roomOld` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacherOld` TEXT NOT NULL, `info` TEXT NOT NULL, `student_plan` INTEGER NOT NULL, `changes` INTEGER NOT NULL, `canceled` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "number", + "columnName": "number", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "start", + "columnName": "start", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "end", + "columnName": "end", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "subjectOld", + "columnName": "subjectOld", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "group", + "columnName": "group", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "room", + "columnName": "room", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "roomOld", + "columnName": "roomOld", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacher", + "columnName": "teacher", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacherOld", + "columnName": "teacherOld", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "info", + "columnName": "info", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isStudentPlan", + "columnName": "student_plan", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "changes", + "columnName": "changes", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "canceled", + "columnName": "canceled", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Attendance", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `time_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `number` INTEGER NOT NULL, `subject` TEXT NOT NULL, `name` TEXT NOT NULL, `presence` INTEGER NOT NULL, `absence` INTEGER NOT NULL, `exemption` INTEGER NOT NULL, `lateness` INTEGER NOT NULL, `excused` INTEGER NOT NULL, `deleted` INTEGER NOT NULL, `excusable` INTEGER NOT NULL, `excuse_status` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "timeId", + "columnName": "time_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "number", + "columnName": "number", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "presence", + "columnName": "presence", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "absence", + "columnName": "absence", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "exemption", + "columnName": "exemption", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lateness", + "columnName": "lateness", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "excused", + "columnName": "excused", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "deleted", + "columnName": "deleted", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "excusable", + "columnName": "excusable", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "excuseStatus", + "columnName": "excuse_status", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "AttendanceSummary", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `subject_id` INTEGER NOT NULL, `month` INTEGER NOT NULL, `presence` INTEGER NOT NULL, `absence` INTEGER NOT NULL, `absence_excused` INTEGER NOT NULL, `absence_for_school_reasons` INTEGER NOT NULL, `lateness` INTEGER NOT NULL, `lateness_excused` INTEGER NOT NULL, `exemption` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subjectId", + "columnName": "subject_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "month", + "columnName": "month", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "presence", + "columnName": "presence", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "absence", + "columnName": "absence", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "absenceExcused", + "columnName": "absence_excused", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "absenceForSchoolReasons", + "columnName": "absence_for_school_reasons", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lateness", + "columnName": "lateness", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "latenessExcused", + "columnName": "lateness_excused", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "exemption", + "columnName": "exemption", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Grades", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `entry` TEXT NOT NULL, `value` REAL NOT NULL, `modifier` REAL NOT NULL, `comment` TEXT NOT NULL, `color` TEXT NOT NULL, `grade_symbol` TEXT NOT NULL, `description` TEXT NOT NULL, `weight` TEXT NOT NULL, `weightValue` REAL NOT NULL, `date` INTEGER NOT NULL, `teacher` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_read` INTEGER NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "entry", + "columnName": "entry", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "modifier", + "columnName": "modifier", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "comment", + "columnName": "comment", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "color", + "columnName": "color", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "gradeSymbol", + "columnName": "grade_symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "weight", + "columnName": "weight", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "weightValue", + "columnName": "weightValue", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "teacher", + "columnName": "teacher", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isRead", + "columnName": "is_read", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "GradesSummary", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `position` INTEGER NOT NULL, `subject` TEXT NOT NULL, `predicted_grade` TEXT NOT NULL, `final_grade` TEXT NOT NULL, `proposed_points` TEXT NOT NULL, `final_points` TEXT NOT NULL, `points_sum` TEXT NOT NULL, `points_sum_all_year` TEXT, `average` REAL NOT NULL, `average_all_year` REAL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_predicted_grade_notified` INTEGER NOT NULL, `is_final_grade_notified` INTEGER NOT NULL, `predicted_grade_last_change` INTEGER NOT NULL, `final_grade_last_change` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "position", + "columnName": "position", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "predictedGrade", + "columnName": "predicted_grade", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "finalGrade", + "columnName": "final_grade", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "proposedPoints", + "columnName": "proposed_points", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "finalPoints", + "columnName": "final_points", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "pointsSum", + "columnName": "points_sum", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "pointsSumAllYear", + "columnName": "points_sum_all_year", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "average", + "columnName": "average", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "averageAllYear", + "columnName": "average_all_year", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isPredictedGradeNotified", + "columnName": "is_predicted_grade_notified", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isFinalGradeNotified", + "columnName": "is_final_grade_notified", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "predictedGradeLastChange", + "columnName": "predicted_grade_last_change", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "finalGradeLastChange", + "columnName": "final_grade_last_change", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "GradePartialStatistics", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `class_average` TEXT NOT NULL, `student_average` TEXT NOT NULL, `class_amounts` TEXT NOT NULL, `student_amounts` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "classAverage", + "columnName": "class_average", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentAverage", + "columnName": "student_average", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "classAmounts", + "columnName": "class_amounts", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentAmounts", + "columnName": "student_amounts", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "GradesPointsStatistics", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `others` REAL NOT NULL, `student` REAL NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "others", + "columnName": "others", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "student", + "columnName": "student", + "affinity": "REAL", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "GradeSemesterStatistics", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `amounts` TEXT NOT NULL, `student_grade` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "amounts", + "columnName": "amounts", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentGrade", + "columnName": "student_grade", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Messages", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`email` TEXT NOT NULL, `message_global_key` TEXT NOT NULL, `mailbox_key` TEXT NOT NULL, `message_id` INTEGER NOT NULL, `correspondents` TEXT NOT NULL, `subject` TEXT NOT NULL, `date` INTEGER NOT NULL, `folder_id` INTEGER NOT NULL, `unread` INTEGER NOT NULL, `read_by` INTEGER, `unread_by` INTEGER, `has_attachments` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL, `content` TEXT NOT NULL, `sender` TEXT, `recipients` TEXT)", + "fields": [ + { + "fieldPath": "email", + "columnName": "email", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "messageGlobalKey", + "columnName": "message_global_key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "mailboxKey", + "columnName": "mailbox_key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "messageId", + "columnName": "message_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "correspondents", + "columnName": "correspondents", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folder_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "unread", + "columnName": "unread", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "readBy", + "columnName": "read_by", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "unreadBy", + "columnName": "unread_by", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "hasAttachments", + "columnName": "has_attachments", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sender", + "columnName": "sender", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "recipients", + "columnName": "recipients", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "MessageAttachments", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`message_global_key` TEXT NOT NULL, `url` TEXT NOT NULL, `filename` TEXT NOT NULL, PRIMARY KEY(`message_global_key`, `url`, `filename`))", + "fields": [ + { + "fieldPath": "messageGlobalKey", + "columnName": "message_global_key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "filename", + "columnName": "filename", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "message_global_key", + "url", + "filename" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Notes", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `category` TEXT NOT NULL, `category_type` INTEGER NOT NULL, `is_points_show` INTEGER NOT NULL, `points` INTEGER NOT NULL, `content` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_read` INTEGER NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "teacher", + "columnName": "teacher", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacherSymbol", + "columnName": "teacher_symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "category", + "columnName": "category", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "categoryType", + "columnName": "category_type", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isPointsShow", + "columnName": "is_points_show", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "points", + "columnName": "points", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isRead", + "columnName": "is_read", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Homework", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `entry_date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `content` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `attachments` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_done` INTEGER NOT NULL, `is_notified` INTEGER NOT NULL, `is_added_by_user` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "entryDate", + "columnName": "entry_date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacher", + "columnName": "teacher", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacherSymbol", + "columnName": "teacher_symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "attachments", + "columnName": "attachments", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isDone", + "columnName": "is_done", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isAddedByUser", + "columnName": "is_added_by_user", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Subjects", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `real_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "realId", + "columnName": "real_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "LuckyNumbers", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `lucky_number` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "luckyNumber", + "columnName": "lucky_number", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "CompletedLesson", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `number` INTEGER NOT NULL, `subject` TEXT NOT NULL, `topic` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `substitution` TEXT NOT NULL, `absence` TEXT NOT NULL, `resources` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "number", + "columnName": "number", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "topic", + "columnName": "topic", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacher", + "columnName": "teacher", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "teacherSymbol", + "columnName": "teacher_symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "substitution", + "columnName": "substitution", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "absence", + "columnName": "absence", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "resources", + "columnName": "resources", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Mailboxes", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`globalKey` TEXT NOT NULL, `email` TEXT NOT NULL, `symbol` TEXT NOT NULL, `schoolId` TEXT NOT NULL, `fullName` TEXT NOT NULL, `userName` TEXT NOT NULL, `studentName` TEXT NOT NULL, `schoolNameShort` TEXT NOT NULL, `type` TEXT NOT NULL, PRIMARY KEY(`globalKey`))", + "fields": [ + { + "fieldPath": "globalKey", + "columnName": "globalKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "email", + "columnName": "email", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "symbol", + "columnName": "symbol", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolId", + "columnName": "schoolId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "fullName", + "columnName": "fullName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "userName", + "columnName": "userName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentName", + "columnName": "studentName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolNameShort", + "columnName": "schoolNameShort", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "globalKey" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Recipients", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`mailboxGlobalKey` TEXT NOT NULL, `studentMailboxGlobalKey` TEXT NOT NULL, `fullName` TEXT NOT NULL, `userName` TEXT NOT NULL, `schoolShortName` TEXT NOT NULL, `type` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "mailboxGlobalKey", + "columnName": "mailboxGlobalKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "studentMailboxGlobalKey", + "columnName": "studentMailboxGlobalKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "fullName", + "columnName": "fullName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "userName", + "columnName": "userName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "schoolShortName", + "columnName": "schoolShortName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "MobileDevices", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`user_login_id` INTEGER NOT NULL, `device_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `date` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "user_login_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "deviceId", + "columnName": "device_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Teachers", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `class_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `name` TEXT NOT NULL, `short_name` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "classId", + "columnName": "class_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "shortName", + "columnName": "short_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "School", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `class_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `address` TEXT NOT NULL, `contact` TEXT NOT NULL, `headmaster` TEXT NOT NULL, `pedagogue` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "classId", + "columnName": "class_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "contact", + "columnName": "contact", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "headmaster", + "columnName": "headmaster", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "pedagogue", + "columnName": "pedagogue", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Conferences", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `subject` TEXT NOT NULL, `agenda` TEXT NOT NULL, `present_on_conference` TEXT NOT NULL, `conference_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "agenda", + "columnName": "agenda", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "presentOnConference", + "columnName": "present_on_conference", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "conferenceId", + "columnName": "conference_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "TimetableAdditional", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `start` INTEGER NOT NULL, `end` INTEGER NOT NULL, `date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `repeat_id` BLOB DEFAULT NULL, `is_added_by_user` INTEGER NOT NULL DEFAULT 0)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "start", + "columnName": "start", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "end", + "columnName": "end", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "repeatId", + "columnName": "repeat_id", + "affinity": "BLOB", + "notNull": false, + "defaultValue": "NULL" + }, + { + "fieldPath": "isAddedByUser", + "columnName": "is_added_by_user", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "StudentInfo", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `full_name` TEXT NOT NULL, `first_name` TEXT NOT NULL, `second_name` TEXT NOT NULL, `surname` TEXT NOT NULL, `birth_date` INTEGER NOT NULL, `birth_place` TEXT NOT NULL, `gender` TEXT NOT NULL, `has_polish_citizenship` INTEGER NOT NULL, `family_name` TEXT NOT NULL, `parents_names` TEXT NOT NULL, `address` TEXT NOT NULL, `registered_address` TEXT NOT NULL, `correspondence_address` TEXT NOT NULL, `phone_number` TEXT NOT NULL, `cell_phone_number` TEXT NOT NULL, `email` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `first_guardian_full_name` TEXT, `first_guardian_kinship` TEXT, `first_guardian_address` TEXT, `first_guardian_phones` TEXT, `first_guardian_email` TEXT, `second_guardian_full_name` TEXT, `second_guardian_kinship` TEXT, `second_guardian_address` TEXT, `second_guardian_phones` TEXT, `second_guardian_email` TEXT)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "fullName", + "columnName": "full_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "firstName", + "columnName": "first_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "secondName", + "columnName": "second_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "surname", + "columnName": "surname", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "birthDate", + "columnName": "birth_date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "birthPlace", + "columnName": "birth_place", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "gender", + "columnName": "gender", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hasPolishCitizenship", + "columnName": "has_polish_citizenship", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "familyName", + "columnName": "family_name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "parentsNames", + "columnName": "parents_names", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "registeredAddress", + "columnName": "registered_address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "correspondenceAddress", + "columnName": "correspondence_address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "phoneNumber", + "columnName": "phone_number", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cellPhoneNumber", + "columnName": "cell_phone_number", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "email", + "columnName": "email", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "firstGuardian.fullName", + "columnName": "first_guardian_full_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "firstGuardian.kinship", + "columnName": "first_guardian_kinship", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "firstGuardian.address", + "columnName": "first_guardian_address", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "firstGuardian.phones", + "columnName": "first_guardian_phones", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "firstGuardian.email", + "columnName": "first_guardian_email", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "secondGuardian.fullName", + "columnName": "second_guardian_full_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "secondGuardian.kinship", + "columnName": "second_guardian_kinship", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "secondGuardian.address", + "columnName": "second_guardian_address", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "secondGuardian.phones", + "columnName": "second_guardian_phones", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "secondGuardian.email", + "columnName": "second_guardian_email", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "TimetableHeaders", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `content` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "diaryId", + "columnName": "diary_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "SchoolAnnouncements", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`user_login_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `content` TEXT NOT NULL, `author` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "user_login_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "author", + "columnName": "author", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "Notifications", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `type` TEXT NOT NULL, `destination` TEXT NOT NULL DEFAULT '{\"type\":\"io.github.wulkanowy.ui.modules.Destination.Dashboard\"}', `date` INTEGER NOT NULL, `data` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "destination", + "columnName": "destination", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "'{\"type\":\"io.github.wulkanowy.ui.modules.Destination.Dashboard\"}'" + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "data", + "columnName": "data", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "AdminMessages", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `version_name` INTEGER, `version_max` INTEGER, `target_register_host` TEXT, `target_flavor` TEXT, `destination_url` TEXT, `priority` TEXT NOT NULL, `types` TEXT NOT NULL DEFAULT '[]', `is_ok_visible` INTEGER NOT NULL DEFAULT 0, `is_x_visible` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "versionMin", + "columnName": "version_name", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "versionMax", + "columnName": "version_max", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "targetRegisterHost", + "columnName": "target_register_host", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "targetFlavor", + "columnName": "target_flavor", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "destinationUrl", + "columnName": "destination_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "priority", + "columnName": "priority", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "types", + "columnName": "types", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "'[]'" + }, + { + "fieldPath": "isOkVisible", + "columnName": "is_ok_visible", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "isXVisible", + "columnName": "is_x_visible", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "MutedMessageSenders", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`author` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "author", + "columnName": "author", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "GradesDescriptive", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `description` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "semesterId", + "columnName": "semester_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "studentId", + "columnName": "student_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isNotified", + "columnName": "is_notified", + "affinity": "INTEGER", + "notNull": true + } + ], + "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, 'dd5446e82ad8d0a65c545a5dbbaeb81c')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt b/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt index ec22c5a3d..f23c79de0 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt @@ -177,6 +177,7 @@ import javax.inject.Singleton AutoMigration(from = 60, to = 61), AutoMigration(from = 61, to = 62), AutoMigration(from = 62, to = 63, spec = Migration63::class), + AutoMigration(from = 63, to = 64), ], version = AppDatabase.VERSION_SCHEMA, exportSchema = true @@ -185,7 +186,7 @@ import javax.inject.Singleton abstract class AppDatabase : RoomDatabase() { companion object { - const val VERSION_SCHEMA = 63 + const val VERSION_SCHEMA = 64 fun getMigrations(sharedPrefProvider: SharedPrefProvider, appInfo: AppInfo) = arrayOf( Migration2(), diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/GradeSummary.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/GradeSummary.kt index a42832ced..f8a357a39 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/GradeSummary.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/GradeSummary.kt @@ -33,7 +33,13 @@ data class GradeSummary( @ColumnInfo(name = "points_sum") val pointsSum: String, - val average: Double + @ColumnInfo(name = "points_sum_all_year") + val pointsSumAllYear: String?, + + val average: Double, + + @ColumnInfo(name = "average_all_year") + val averageAllYear: Double? = null, ) { @PrimaryKey(autoGenerate = true) var id: Long = 0 diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/GradeMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/GradeMapper.kt index 66e922171..57322a7ae 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/GradeMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/GradeMapper.kt @@ -37,9 +37,11 @@ fun List.mapToEntities(semester: Semester) = map { predictedGrade = it.predicted, finalGrade = it.final, pointsSum = it.pointsSum, + pointsSumAllYear = it.pointsSumAllYear, proposedPoints = it.proposedPoints, finalPoints = it.finalPoints, - average = it.average + average = it.average, + averageAllYear = it.averageAllYear, ) } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/gradeSummary.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/gradeSummary.kt index c452204b9..e92d1afb3 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/gradeSummary.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/debug/notification/mock/gradeSummary.kt @@ -26,5 +26,7 @@ private fun generateSummary(subject: String, predicted: String, final: String) = proposedPoints = "", finalPoints = "", pointsSum = "", - average = .0 + average = .0, + pointsSumAllYear = null, + averageAllYear = null, ) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProvider.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProvider.kt index 8da59eaf4..7f14c01f1 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProvider.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProvider.kt @@ -266,7 +266,9 @@ class GradeAverageProvider @Inject constructor( proposedPoints = "", finalPoints = "", pointsSum = "", - average = .0 + pointsSumAllYear = null, + average = .0, + averageAllYear = null, ) } @@ -294,13 +296,15 @@ class GradeAverageProvider @Inject constructor( proposedPoints = "", finalPoints = "", pointsSum = "", + pointsSumAllYear = null, average = when { calcAverage -> details .updateModifiers(student, params) .calcAverage(isOptionalArithmeticAverage = params.isOptionalArithmeticAverage) else -> .0 - } + }, + averageAllYear = null, ) } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsAdapter.kt index 15b5db031..bcbd2df2f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsAdapter.kt @@ -96,9 +96,11 @@ class GradeDetailsAdapter @Inject constructor() : BaseExpandableAdapter HeaderViewHolder( HeaderGradeDetailsBinding.inflate(inflater, parent, false) ) + ViewType.ITEM.id -> ItemViewHolder( ItemGradeDetailsBinding.inflate(inflater, parent, false) ) + else -> throw IllegalStateException() } } @@ -110,6 +112,7 @@ class GradeDetailsAdapter @Inject constructor() : BaseExpandableAdapter bindItemViewHolder( holder = holder, grade = items[position].value as Grade @@ -133,6 +136,10 @@ class GradeDetailsAdapter @Inject constructor() : BaseExpandableAdapter ) { diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt index d9621f51e..ec5d34c5e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt @@ -226,8 +226,9 @@ class GradeDetailsPresenter @Inject constructor( GradeDetailsHeader( subject = gradeSubject.subject, average = gradeSubject.average, + averageAllYear = gradeSubject.summary.averageAllYear, pointsSum = gradeSubject.points, - grades = subItems + grades = subItems, ).apply { newGrades = gradeSubject.grades.filter { grade -> !grade.isRead }.size }, ViewType.HEADER diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryAdapter.kt index 95cf97bed..1cc74ef09 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryAdapter.kt @@ -3,6 +3,7 @@ package io.github.wulkanowy.ui.modules.grade.summary import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup +import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import io.github.wulkanowy.R @@ -65,37 +66,55 @@ class GradeSummaryAdapter @Inject constructor( val gradeSummaries = items .filter { it.gradeDescriptive == null } .map { it.gradeSummary } + val isSecondSemester = items.any { item -> + item.gradeSummary.let { it.averageAllYear != null && it.averageAllYear != .0 } + } val context = binding.root.context val finalItemsCount = gradeSummaries.count { isGradeValid(it.finalGrade) } - val calculatedItemsCount = gradeSummaries.count { value -> value.average != 0.0 } + val calculatedSemesterItemsCount = gradeSummaries.count { value -> value.average != 0.0 } + val calculatedAnnualItemsCount = + gradeSummaries.count { value -> value.averageAllYear != 0.0 } val allItemsCount = gradeSummaries.count { !it.subject.equals("zachowanie", true) } val finalAverage = gradeSummaries.calcFinalAverage( - preferencesRepository.gradePlusModifier, - preferencesRepository.gradeMinusModifier + plusModifier = preferencesRepository.gradePlusModifier, + minusModifier = preferencesRepository.gradeMinusModifier, ) - val calculatedAverage = gradeSummaries.filter { value -> value.average != 0.0 } + val calculatedSemesterAverage = gradeSummaries.filter { value -> value.average != 0.0 } .map { values -> values.average } .reversed() // fix average precision .average() .let { if (it.isNaN()) 0.0 else it } + val calculatedAnnualAverage = gradeSummaries.filter { value -> value.averageAllYear != 0.0 } + .mapNotNull { values -> values.averageAllYear } + .reversed() // fix average precision + .average() + .let { if (it.isNaN()) 0.0 else it } with(binding) { + gradeSummaryScrollableHeaderCalculated.text = formatAverage(calculatedSemesterAverage) + gradeSummaryScrollableHeaderCalculatedAnnual.text = + formatAverage(calculatedAnnualAverage) gradeSummaryScrollableHeaderFinal.text = formatAverage(finalAverage) - gradeSummaryScrollableHeaderCalculated.text = formatAverage(calculatedAverage) - gradeSummaryScrollableHeaderFinalSubjectCount.text = - context.getString( - R.string.grade_summary_from_subjects, - finalItemsCount, - allItemsCount - ) - gradeSummaryScrollableHeaderCalculatedSubjectCount.text = context.getString( + gradeSummaryScrollableHeaderFinalSubjectCount.text = context.getString( R.string.grade_summary_from_subjects, - calculatedItemsCount, + finalItemsCount, allItemsCount ) + gradeSummaryScrollableHeaderCalculatedSubjectCount.text = context.getString( + R.string.grade_summary_from_subjects, + calculatedSemesterItemsCount, + allItemsCount + ) + gradeSummaryScrollableHeaderCalculatedSubjectCountAnnual.text = context.getString( + R.string.grade_summary_from_subjects, + calculatedAnnualItemsCount, + allItemsCount + ) + gradeSummaryScrollableHeaderCalculatedAnnualContainer.isVisible = isSecondSemester gradeSummaryCalculatedAverageHelp.setOnClickListener { onCalculatedHelpClickListener() } + gradeSummaryCalculatedAverageHelpAnnual.setOnClickListener { onCalculatedHelpClickListener() } gradeSummaryFinalAverageHelp.setOnClickListener { onFinalHelpClickListener() } } } @@ -107,7 +126,12 @@ class GradeSummaryAdapter @Inject constructor( with(binding) { gradeSummaryItemTitle.text = gradeSummary.subject gradeSummaryItemPoints.text = gradeSummary.pointsSum + gradeSummaryItemAverage.text = formatAverage(gradeSummary.average, "") + gradeSummaryItemAverageAllYear.text = gradeSummary.averageAllYear?.let { + formatAverage(it, "") + } + gradeSummaryItemPredicted.text = "${gradeSummary.predictedGrade} ${gradeSummary.proposedPoints}".trim() gradeSummaryItemFinal.text = @@ -116,6 +140,12 @@ class GradeSummaryAdapter @Inject constructor( root.context.getString(R.string.all_no_data) } + gradeSummaryItemAverageContainer.isVisible = gradeSummary.average != .0 + gradeSummaryItemAverageDivider.isVisible = gradeSummaryItemAverageContainer.isVisible + gradeSummaryItemAverageAllYearContainer.isGone = + gradeSummary.averageAllYear == null || gradeSummary.averageAllYear == .0 + gradeSummaryItemAverageAllYearDivider.isGone = + gradeSummaryItemAverageAllYearContainer.isGone gradeSummaryItemFinalDivider.isVisible = gradeDescriptive == null gradeSummaryItemPredictedDivider.isVisible = gradeDescriptive == null gradeSummaryItemPointsDivider.isVisible = gradeDescriptive == null @@ -123,6 +153,7 @@ class GradeSummaryAdapter @Inject constructor( gradeSummaryItemFinalContainer.isVisible = gradeDescriptive == null gradeSummaryItemDescriptiveContainer.isVisible = gradeDescriptive != null gradeSummaryItemPointsContainer.isVisible = gradeSummary.pointsSum.isNotBlank() + gradeSummaryItemPointsDivider.isVisible = gradeSummaryItemPointsContainer.isVisible } } diff --git a/app/src/main/res/layout/header_grade_details.xml b/app/src/main/res/layout/header_grade_details.xml index e43e8993f..1765d9d1e 100644 --- a/app/src/main/res/layout/header_grade_details.xml +++ b/app/src/main/res/layout/header_grade_details.xml @@ -45,13 +45,30 @@ android:textColor="?android:textColorSecondary" android:textSize="12sp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@id/gradeHeaderPointsSum" + app:layout_constraintEnd_toStartOf="@id/gradeHeaderAverageAllYear" app:layout_constraintHorizontal_bias="0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="@id/gradeHeaderSubject" app:layout_constraintTop_toBottomOf="@+id/gradeHeaderSubject" tools:text="Average: 6,00" /> + + diff --git a/app/src/main/res/layout/item_grade_summary.xml b/app/src/main/res/layout/item_grade_summary.xml index 2c8c4ea37..f425bad83 100644 --- a/app/src/main/res/layout/item_grade_summary.xml +++ b/app/src/main/res/layout/item_grade_summary.xml @@ -20,20 +20,80 @@ android:id="@+id/gradeSummaryItemTitle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="40dp" android:layout_weight="1" android:textSize="17sp" tools:text="@tools:sample/lorem" /> + + + + + + + tools:text="2,50" /> + + + + + + + + + + + @@ -131,9 +191,9 @@ + android:textSize="16sp" + android:textStyle="bold" /> + + + + + + + + + + + + + + + android:textSize="16sp" + android:textStyle="bold" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2775365d5..3117eab9d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -126,13 +126,17 @@ Comment Number of new ratings: %1$d Average: %1$.2f + Year: %1$.2f Points: %s No average + Semester average + Annual average Total points Final grade Predicted grade Descriptive grade - Calculated average + Calculated semester average + Calculated annual average How does Calculated Average work? The Calculated Average is the arithmetic average calculated from the subjects averages. It allows you to know the approximate final average. It is calculated in a way selected by the user in the application settings. It is recommended that you choose the appropriate option. This is because the calculation of school averages differs. Additionally, if your school reports the average of the subjects on the Vulcan page, the application downloads them and does not calculate these averages. This can be changed by forcing the calculation of the average in the application settings.\n\nAverage of grades only from selected semester:\n1. Calculating the weighted average for each subject in a given semester\n2.Adding calculated averages\n3. Calculation of the arithmetic average of the summed averages\n\nAverage of averages from both semesters:\n1.Calculating the weighted average for each subject in semester 1 and 2\n2. Calculating the arithmetic average of the calculated averages for semesters 1 and 2 for each subject.\n3. Adding calculated averages\n4. Calculation of the arithmetic average of the summed averages\n\nAverage of grades from the whole year:\n1. Calculating weighted average over the year for each subject. The final average in the 1st semester is irrelevant.\n2. Adding calculated averages\n3. Calculating the arithmetic average of summed averages How does the Final Average work? diff --git a/app/src/test/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProviderTest.kt b/app/src/test/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProviderTest.kt index ad7bbe15f..b9f56efed 100644 --- a/app/src/test/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProviderTest.kt +++ b/app/src/test/java/io/github/wulkanowy/ui/modules/grade/GradeAverageProviderTest.kt @@ -1679,7 +1679,9 @@ class GradeAverageProviderTest { finalPoints = "", finalGrade = "", predictedGrade = "", - position = 0 + position = 0, + pointsSumAllYear = null, + averageAllYear = null, ) } } diff --git a/app/src/test/java/io/github/wulkanowy/utils/GradeExtensionTest.kt b/app/src/test/java/io/github/wulkanowy/utils/GradeExtensionTest.kt index 35dc4e5ba..37363f373 100644 --- a/app/src/test/java/io/github/wulkanowy/utils/GradeExtensionTest.kt +++ b/app/src/test/java/io/github/wulkanowy/utils/GradeExtensionTest.kt @@ -23,13 +23,15 @@ class GradeExtensionTest { @Test fun calcWeightedAverage() { - assertEquals(3.47, listOf( - createGrade(5.0, 6.0, 0.33), - createGrade(5.0, 5.0, -0.33), - createGrade(4.0, 1.0, 0.0), - createGrade(1.0, 9.0, 0.5), - createGrade(0.0, .0, 0.0) - ).calcAverage(false), 0.005) + assertEquals( + 3.47, listOf( + createGrade(5.0, 6.0, 0.33), + createGrade(5.0, 5.0, -0.33), + createGrade(4.0, 1.0, 0.0), + createGrade(1.0, 9.0, 0.5), + createGrade(0.0, .0, 0.0) + ).calcAverage(false), 0.005 + ) } @Test @@ -86,7 +88,11 @@ class GradeExtensionTest { assertEquals(-.25, createGrade(5.0, .0, -.33).changeModifier(.0, .25).modifier, .0) } - private fun createGrade(value: Double, weightValue: Double = .0, modifier: Double = 0.25): Grade { + private fun createGrade( + value: Double, + weightValue: Double = .0, + modifier: Double = 0.25 + ): Grade { return Grade( semesterId = 1, studentId = 1, @@ -116,7 +122,9 @@ class GradeExtensionTest { proposedPoints = "", finalPoints = "", pointsSum = "", - average = .0 + average = .0, + pointsSumAllYear = null, + averageAllYear = null, ) } } From 43d13db07ce22e9e433f3ff3e9b7373775068b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 22:17:03 +0200 Subject: [PATCH 15/40] Update translations --- app/src/main/res/values-pl/strings.xml | 6 +++++- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 33b715d75..895f7687a 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -113,13 +113,17 @@ Komentarz Ilość nowych ocen: %1$d Średnia: %1$.2f + Roczna: %1$.2f Punkty: %s Brak średniej + Średnia semestralna + Średnia roczna Suma punktów Ocena końcowa Przewidywana ocena Ocena opisowa - Obliczona średnia + Obliczona średnia semestralna + Obliczona średnia roczna Jak działa obliczona średnia? Obliczona średnia jest średnią arytmetyczną obliczoną ze średnich przedmiotów. Pozwala ona na poznanie przybliżonej średniej końcowej. Jest obliczana w sposób wybrany przez użytkownika w ustawieniach aplikacji. Zaleca się wybranie odpowiedniej opcji. Dzieje się tak dlatego, że obliczanie średnich w szkołach różni się. Dodatkowo, jeśli twoja szkoła ma włączone średnie przedmiotów na stronie dziennika Vulcan, aplikacja pobiera je i ich nie oblicza. Można to zmienić, wymuszając obliczanie średniej w ustawieniach aplikacji.\n\nŚrednia ocen tylko z wybranego semestru:\n1. Obliczanie średniej arytmetycznej każdego przedmiotu w danym semestrze\n2. Zsumowanie obliczonych średnich\n3. Obliczanie średniej arytmetycznej zsumowanych średnich\n\nŚrednia ze średnich z obu semestrów:\n1.Obliczanie średniej arytmetycznej każdego przedmiotu w semestrze 1 i 2\n2. Obliczanie średniej arytmetycznej obliczonych średnich w semestrze 1 i 2 każdego przedmiotu.\n3. Zsumowanie obliczonych średnich\n4. Obliczanie średniej arytmetycznej zsumowanych średnich\n\nŚrednia wszystkich ocen z całego roku:\n1. Obliczanie średniej arytmetycznej z każdego przedmiotu w ciągu całego roku. Końcowa ocena w 1 semestrze jest bez znaczenia.\n2. Zsumowanie obliczonych średnich\n3. Obliczanie średniej arytmetycznej z zsumowanych średnich Jak działa końcowa średnia? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3117eab9d..957ad6de8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -126,7 +126,7 @@ Comment Number of new ratings: %1$d Average: %1$.2f - Year: %1$.2f + Annual: %1$.2f Points: %s No average Semester average From f6226e6b53a49ac6112e020ad6aaf52e65aa28a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 22 Apr 2024 22:36:05 +0200 Subject: [PATCH 16/40] Version 2.5.7 --- app/build.gradle | 6 +++--- app/src/main/play/release-notes/pl-PL/default.txt | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6d51ad841..ede6dd951 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 155 - versionName "2.5.6" + versionCode 156 + versionName "2.5.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", "Wulkanowy" @@ -195,7 +195,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.7-SNAPSHOT' + implementation 'io.github.wulkanowy:sdk:2.5.7' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index a966a31f6..d96ff15ac 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,5 +1,6 @@ -Wersja 2.5.6 +Wersja 2.5.7 — naprawiliśmy logowanie (pusta lista z wyborem uczniów), które zepsuło się po zmianach po stronie VULCANa +— dodaliśmy wyświetlanie osobno średniej rocznej, bo VULCAN rozdzielił i zrobił się bałagan Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From 6bf6a9da11567555f32f0f5e717f17c02f3ea0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 24 Apr 2024 19:27:11 +0200 Subject: [PATCH 17/40] New Crowdin updates (#2480) --- app/src/main/res/values-cs/strings.xml | 12 +++++++++--- app/src/main/res/values-de/strings.xml | 10 ++++++++-- app/src/main/res/values-pl/strings.xml | 4 +++- app/src/main/res/values-ru/strings.xml | 10 ++++++++-- app/src/main/res/values-sk/strings.xml | 12 +++++++++--- app/src/main/res/values-uk/strings.xml | 10 ++++++++-- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 46 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 780d9351c..f37e1cf2a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -31,7 +31,7 @@ Semestr %1$d, %2$d/%3$d - Přihlaste se pomocí studentského nebo rodičovského účtu + Přihlaste se pomocí žákovského nebo rodičovského účtu Zadejte symbol ze stránky deníku: <b>%1$s</b> Uživatelské jméno Email @@ -113,13 +113,17 @@ Komentář Počet nových známek: %1$d Průměr: %1$.2f + Annual: %1$.2f Body: %s Bez průměru + Semester average + Annual average Součet bodů Konečná známka Předpokládaná známka Popisná známka - Vypočítaný průměr + Calculated semester average + Calculated annual average Jak funguje vypočítaný průměr? Vypočítaný průměr je aritmetický průměr vypočítaný z průměrů předmětů. Umožňuje vám to znát přibližný konečný průměr. Vypočítává se způsobem zvoleným uživatelem v nastavení aplikaci. Doporučuje se vybrat příslušnou možnost. Důvodem je rozdílný výpočet školních průměrů. Pokud vaše škola navíc uvádí průměr předmětů na stránce deníku Vulcan, aplikace si je stáhne a tyto průměry nepočítá. To lze změnit vynucením výpočtu průměru v nastavení aplikaci.\n\nPrůměr známek pouze z vybraného semestru:\n1. Výpočet váženého průměru pro každý předmět v daném semestru\n2. Sčítání vypočítaných průměrů\n3. Výpočet aritmetického průměru součtených průměrů\n\nPrůměr průměrů z obou semestrů:\n1. Výpočet váženého průměru pro každý předmět v semestru 1 a 2\n2. Výpočet aritmetického průměru vypočítaných průměrů za semestry 1 a 2 pro každý předmět.\n3. Sčítání vypočítaných průměrů\n4. Výpočet aritmetického průměru sečtených průměrů\n\nPrůměr známek z celého roku:\n1. Výpočet váženého průměru za rok pro každý předmět. Konečný průměr v 1. semestru je nepodstatný.\n2. Sčítání vypočítaných průměrů\n3. Výpočet aritmetického průměru součtených průměrů Jak funguje konečný průměr? @@ -270,6 +274,7 @@ přesně v cíli %1$d pod cílem %1$d/%2$d přítomnosti + Nebyla zaznamenána žádná docházka Nepřítomnost ze školních důvodů Omluvená nepřítomnost Neomluvená nepřítomnost @@ -737,6 +742,7 @@ Vynutit průměrný výpočet podle aplikace Zobrazit přítomnost Cílová docházka + Zobrazit předměty bez docházek Třídění kalkulačky docházky Motiv Rozvíjení známek @@ -856,7 +862,7 @@ Autorizovat Autorizace byla úspěšně dokončena Autorizace - Pro provoz aplikace potřebujeme potvrdit vaši identitu. Zadejte PESEL žáka <b>%1$s</b> v níže uvedeném poli + Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. Zatím přeskočit Webová stránka deníku VULCAN vyžaduje ověření diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7bc5aa990..b8bf5019f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -113,13 +113,17 @@ Kommentar Anzahl der neuen Bewertungen: %1$d Durchschnitt: %1$.2f + Annual: %1$.2f Punkte: %s Kein Durchschnitt + Semester average + Annual average Gesamtpunkte Finaler Note Vorhergesagte Note Descriptive grade - Berechnender Durchschnitt + Calculated semester average + Calculated annual average Wie funktioniert der berechnete Durchschnitt? Der berechnete Mittelwert ist das arithmetische Mittel, das aus den Durchschnittswerten der Probanden errechnet wird. Es erlaubt Ihnen, den ungefähre endgültigen Durchschnitt zu kennen. Sie wird auf eine vom Anwender in den Anwendungseinstellungen gewählte Weise berechnet. Es wird empfohlen, die entsprechende Option zu wählen. Das liegt daran, dass die Berechnung der Schuldurchschnitte unterschiedlich ist. Wenn Ihre Schule den Durchschnitt der Fächer auf der Vulcan-Seite angibt, lädt die Anwendung diese Fächer herunter und berechnet nicht den Durchschnitt. Dies kann geändert werden, indem die Berechnung des Durchschnitts in den Anwendungseinstellungen erzwungen wird. \n\nDurchschnitt der Noten nur aus dem ausgewählten Semester :\n1. Berechnung des gewichteten Durchschnitts für jedes Fach in einem bestimmten Semester\n2. Addition der berechneten Durchschnittswerte\n3. Berechnung des arithmetischen Mittels der summierten Durchschnitte\nDurchschnitt der Durchschnitte aus beiden Semestern:\n1. Berechnung des gewichteten Durchschnitts für jedes Fach in Semester 1 und 2\n2. Berechnung des arithmetischen Mittels der berechneten Durchschnitte für Semester 1 und 2 für jedes Fach. \n3. Hinzufügen von berechneten Durchschnittswerten\n4. Berechnung des arithmetischen Mittels der summierten Durchschnitte\nDurchschnitt der Noten aus dem ganzen Jahr:\n1. Berechnung des gewichteten Jahresdurchschnitts für jedes Fach. Der Abschlussdurchschnitt im 1. Semester ist irrelevant. \n2. Addition der berechneten Durchschnittswerte\n3. Berechnung des arithmetischen Mittels der summierten Mittelwerte Wie funktioniert der endgültige Durchschnitt? @@ -242,6 +246,7 @@ right on target %1$d under target %1$d/%2$d presences + No attendances recorded Aus schulischen Gründen abwesend Entschuldigte Abwesenheit Unentschuldigtes Abwesenheit @@ -643,6 +648,7 @@ Mittelwertberechnung durch App erzwingen Anwesendheit zeigen Attendance target + Show subjects without any attendances Attendance calculator sorting Thema Steigende Sorten @@ -762,7 +768,7 @@ Authorize Authorization completed successfully Authorization - To operate the application, we need to confirm your identity. Please enter the student\'s PESEL <b>%1$s</b> in the field below + Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. Skip for now VULCAN\'s website requires verification diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 55c9db40d..48c90f599 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -274,6 +274,7 @@ dokładnie u celu %1$d poniżej celu %1$d/%2$d obecności + Nie odnotowano żadnej frekwencji Nieobecność z przyczyn szkolnych Nieobecność usprawiedliwiona Nieobecność nieusprawiedliwiona @@ -741,6 +742,7 @@ Wymuś obliczanie średniej przez aplikację Pokazuj obecność Docelowa obecność + Pokazuj przedmioty bez frekwencji Sortowanie kalkulatora obecności Motyw Rozwijanie ocen @@ -860,7 +862,7 @@ Potwierdź Autoryzacja zakończona pomyślnie Autoryzacja - Rodzicu, musimy mieć pewność, że Twój adres e-mail został powiązany z prawidłowym kontem ucznia. W celu autoryzacji konta podaj numer PESEL ucznia <b>%1$s</b> w polu poniżej + Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. Na razie pomiń Strona dziennika VULCAN wymaga weryfikacji diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 0e7e0e1d2..d7f6e6cee 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -113,13 +113,17 @@ Комментарий Количество новых оценок: %1$d Средняя оценка: %1$.2f + Annual: %1$.2f Баллы: %s Нет средней оценки + Semester average + Annual average Сумма баллов Итоговая оценка Ожидаемая оценка Descriptive grade - Рассчитанная средняя оценка + Calculated semester average + Calculated annual average Как работает \"Рассчитанная средняя оценка\"? Рассчитанная средняя оценка - это среднее арифметическое, рассчитанное на основе средних оценок по предметам. Это позволяет узнать приблизительную итоговую среднюю оценку. Она рассчитывается способом, выбранным пользователем в настройках приложения. Рекомендуется выбрать подходящий вариант, так как каждая школа по разному считает среднюю оценку. Кроме того, если ваша школа выставляет средние оценки по предметам на странице Vulcan, приложение просто загрузит их. Это можно изменить, заставив приложение считать среднюю оценку в настройках.\n\nСредняя из оценок выбранного семестра:\n1. Вычисление средневзвешенного значения по каждому предмету за семестр\n2.Суммирование вычисленных значений\n3. Вычисление среднего арифметического суммированных значений\n\nСредняя из средних оценок семестров:\n1.Расчет средневзвешенного значения для каждого предмета в семестрах. \n2. Вычисление среднего арифметического из средневзвешенных значений для каждого предмета в семестрах.\n3. Суммирование средних арифметических\n4. Вычисление среднего арифматического из суммированных значений\n\nСредняя из оценок со всего года:\n1. Расчет средневзвешенного значения по каждому предмету за год. Итоговое среднее значение за 1 семестр не имеет значения.\n2. Суммирование вычисленных средних\n3. Расчет среднего арифметического суммированных чисел Как работает \"Итоговая средняя оценка\"? @@ -270,6 +274,7 @@ right on target %1$d under target %1$d/%2$d presences + No attendances recorded Отсутствие по школьным причинам Отсутствие по уважительной причине Отсутствие по неуважительной причине @@ -737,6 +742,7 @@ Принудительно высчитать среднюю оценку через приложение Показывать присутствия Attendance target + Show subjects without any attendances Attendance calculator sorting Тема Разворачивание оценок @@ -856,7 +862,7 @@ Авторизовать Авторизация прошла успешно Авторизация - Для работы приложения нам необходимо подтвердить вашу личность. Введите PESEL учащегося <b>%1$s</b> в поле ниже + Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. Пропустить сейчас VULCAN\'s website requires verification diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 9dbf72820..a84438944 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -31,7 +31,7 @@ Semester %1$d, %2$d/%3$d - Prihláste sa pomocou študentského alebo rodičovského konta + Prihláste sa pomocou žiackeho alebo rodičovského účtu Zadajte symbol zo stránky denníka: <b>%1$s</b> Užívateľské meno Email @@ -113,13 +113,17 @@ Komentár Počet nových známok %1$d Priemer: %1$.2f + Annual: %1$.2f Body: %s Bez priemeru + Semester average + Annual average Súčet bodov Konečná známka Predpokladaná známka Popisná známka - Vypočítaný priemer + Calculated semester average + Calculated annual average Ako funguje vypočítaný priemer? Vypočítaný priemer je aritmetický priemer vypočítaný z priemerov predmetov. Umožňuje vám to poznať približný konečný priemer. Vypočítava sa spôsobom zvoleným užívateľom v nastaveniach aplikácii. Odporúča sa vybrať príslušnú možnosť. Dôvodom je rozdielny výpočet školských priemerov. Ak vaša škola navyše uvádza priemer predmetov na stránke denníka Vulcan, aplikácia si ich stiahne a tieto priemery nepočíta. To možno zmeniť vynútením výpočtu priemeru v nastavení aplikácii.\n\nPriemer známok iba z vybraného semestra:\n1. Výpočet váženého priemeru pre každý predmet v danom semestri\n2. Sčítanie vypočítaných priemerov\n3. Výpočet aritmetického priemeru součtených priemerov\n\nPriemer priemerov z oboch semestrov:\n1. Výpočet váženého priemeru pre každý predmet v semestri 1 a 2\n2. Výpočet aritmetického priemeru vypočítaných priemerov za semestre 1 a 2 pre každý predmet.\n3. Sčítanie vypočítaných priemerov\n4. Výpočet aritmetického priemeru součtených priemerov\n\nPriemer známok z celého roka:\n1. Výpočet váženého priemeru za rok pre každý predmet. Konečný priemer v 1. semestri je nepodstatný.\n2. Sčítanie vypočítaných priemerov\n3. Výpočet aritmetického priemeru součtených priemerov Ako funguje konečný priemer? @@ -270,6 +274,7 @@ presne v cieli %1$d pod cieľom %1$d/%2$d prítomnosti + Nebola zaznamenaná žiadna dochádzka Neprítomnosť zo školských dôvodov Ospravedlnená neprítomnosť Neospravedlnená neprítomnosť @@ -737,6 +742,7 @@ Vynútiť priemerný výpočet podľa aplikácie Zobraziť prítomnosť Cieľová dochádzka + Zobraziť predmety bez dochádzok Triedenie kalkulačky dochádzky Motív Rozvijanie známok @@ -856,7 +862,7 @@ Autorizovať Autorizácia bola úspešne dokončená Autorizácia - Na prevádzku aplikácie potrebujeme potvrdiť vašu identitu. Zadajte PESEL žiaka <b>%1$s</b> v nižšie uvedenom poli + Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. Zatiaľ preskočiť Webová stránka denníka VULCAN vyžaduje overenie diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 2d8ac1f4d..d936e8cdf 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -113,13 +113,17 @@ Коментар Кількість нових оцінок: %1$d Середня оцінка: %1$.2f + Підсумкова: %1$.2f Бали: %s Середня оцінка відсутня + Середня за семестр + Підсумкова середня оцінка Всього балів Підсумкова оцінка Передбачувана оцінка Описова оцінка - Розрахована середня оцінка + Розрахована середня за семестр + Розрахована підсумкова середня оцінка Як працює \"Розрахована середня оцінка\"? Розрахована середня оцінка - це середнє арифметичне, обчислене з середніх оцінок з предметів. Це дозволяє дізнатися приблизну кінцеву середню оцінку. Вона розраховується спосібом, обраним користувачем у налаштуваннях програми. Рекомендується вибрати відповідний варіант, тому що кожна школа по різному розраховує середню оцінку. Крім того, якщо у вашій школі повідомляється середня оцінка з предметів на сторінці Vulcan, програма тільки завантажує ці оцінки і не розраховує їх самостійно. Це можна змінити шляхом примусового розрахунку середньоЇ оцінки в налаштуваннях програми.\n\nСередні оцінки тільки за обраний семестр:\n1. Розрахунок середньозваженого числа для кожного предмета в даному семестрі\n2. Сумування розрахованих числ\n3. Розрахунок середнього арифметичного з сумованих чисел\n\nСереднє значення з обох семестрів:\n1. Обчислення середньозваженого числа для кожного предмета у 1 та 2 семестрі\n2. Обчислення середнього арифметичного з розрахованих середньозважених числ за 1 та 2 семестри для кожного предмета.\n3. Додавання розрахованих середніх\n4. Розрахунок середнього арифметичного підсумованих середніх значень\n\nСереднє значення оцінок за весь рік: \n1. Розрахунок середньозваженого числа за рік для кожного предмета. Підсумковий середній показник у 1-му семестрі не має значення.\n2. Сумування розрахованих середніх\n3. Обчислення середнього арифметичного з суммованих середніх Як працює \"Підсумкова середня оцінка\"? @@ -270,6 +274,7 @@ точно у цілі %1$d під ціллю %1$d/%2$d відвідуваності + Немає жодних записаних відвідувань Відсутність зі шкільних причин Відсутність з поважних причин Відсутність без поважних причин @@ -737,6 +742,7 @@ Примусово розраховувати середню оцінку через додаток Показувати присутність Цільова відвідуваність + Показувати уроки без відвідувань Сортування калькулятора відвідування Тема Розгортання оцінок @@ -856,7 +862,7 @@ Авторизовать Авторизація пройшла успішно Авторизувати - Для роботи програми нам потрібно підтвердити вашу особу. Будь ласка, введіть число PESEL <b>%1$s</b> студента в поле нижче + Шановні батьки,<br><br>Для авторизації та забезпечення безпеки даних просимо Вас ввести нижче PESEL номер учня <b>%1$s</b>. Ці дані необхідні для правильного призначення доступу та захисту персональних даних відповідно до чинного законодавства.<br><br>Після введення даних буде проведена перевірка, щоб переконатися, що доступ до системи VULCAN надається виключно уповноваженим особам. У разі виникнення будь-яких сумнівів або проблем, будь ласка, зв\'яжіться з адміністратором шкільного щоденника для з\'ясування ситуації.<br><br>Ми підтримуємо найвищі стандарти захисту персональних даних і гарантуємо, що вся надана інформація є безпечною. Додаток Wulkanowy не зберігає і не обробляє номер PESEL.<br><br>Нагадуємо, що надання повних і точних даних є обов\'язковим і необхідним для використання системи VULCAN. Поки що пропустити Веб-сайт VULCAN потребує підтвердження diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97bc6153b..9175321d3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -856,7 +856,7 @@ Authorize Authorization completed successfully Authorization - Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. + Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
Skip for now From bc3aa7b8dc2686fb2a329e5a089bf496688f80f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 24 Apr 2024 22:28:16 +0200 Subject: [PATCH 18/40] New Crowdin updates (#2526) --- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index f37e1cf2a..9abd73c15 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -862,7 +862,7 @@ Autorizovat Autorizace byla úspěšně dokončena Autorizace - Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. + Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
Zatím přeskočit Webová stránka deníku VULCAN vyžaduje ověření diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b8bf5019f..39fe5c14c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -768,7 +768,7 @@ Authorize Authorization completed successfully Authorization - Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. + Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
Skip for now VULCAN\'s website requires verification diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 48c90f599..bdd5df91a 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -862,7 +862,7 @@ Potwierdź Autoryzacja zakończona pomyślnie Autoryzacja - Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. + Szanowny Rodzicu,

W celu autoryzacji i zapewnienia bezpieczeństwa danych, uprzejmie prosimy o wprowadzenie poniżej numeru PESEL ucznia %1$s. Te informacje są niezbędne do prawidłowego przypisania dostępu i ochrony danych osobowych zgodnie z obowiązującymi przepisami.

Po wprowadzeniu danych, będą one weryfikowane w celu zapewnienia, że dostęp do systemu VULCAN jest przyznawany wyłącznie upoważnionym osobom. W przypadku jakichkolwiek wątpliwości lub problemów, prosimy o kontakt z administratorem dziennika szkolnego w celu wyjaśnienia sytuacji.

Zachowujemy najwyższe standardy ochrony danych osobowych i zapewniamy, że wszelkie przekazane informacje są chronione. Wulkanowy nie przechowuje ani nie przetwarza numeru PESEL.

Przypominamy, że podanie pełnych i prawdziwych danych jest obowiązkowe i konieczne do korzystania z systemu VULCAN.
Na razie pomiń Strona dziennika VULCAN wymaga weryfikacji diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index d7f6e6cee..6914641b6 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -862,7 +862,7 @@ Авторизовать Авторизация прошла успешно Авторизация - Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. + Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
Пропустить сейчас VULCAN\'s website requires verification diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index a84438944..8bb0e1bd8 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -862,7 +862,7 @@ Autorizovať Autorizácia bola úspešne dokončená Autorizácia - Dear Parent,<br><br>To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br><br>After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br><br>We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br><br>We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. + Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
Zatiaľ preskočiť Webová stránka denníka VULCAN vyžaduje overenie diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index d936e8cdf..70269211a 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -862,7 +862,7 @@ Авторизовать Авторизація пройшла успішно Авторизувати - Шановні батьки,<br><br>Для авторизації та забезпечення безпеки даних просимо Вас ввести нижче PESEL номер учня <b>%1$s</b>. Ці дані необхідні для правильного призначення доступу та захисту персональних даних відповідно до чинного законодавства.<br><br>Після введення даних буде проведена перевірка, щоб переконатися, що доступ до системи VULCAN надається виключно уповноваженим особам. У разі виникнення будь-яких сумнівів або проблем, будь ласка, зв\'яжіться з адміністратором шкільного щоденника для з\'ясування ситуації.<br><br>Ми підтримуємо найвищі стандарти захисту персональних даних і гарантуємо, що вся надана інформація є безпечною. Додаток Wulkanowy не зберігає і не обробляє номер PESEL.<br><br>Нагадуємо, що надання повних і точних даних є обов\'язковим і необхідним для використання системи VULCAN. + Шановні батьки,

Для авторизації та забезпечення безпеки даних просимо Вас ввести нижче PESEL номер учня %1$s. Ці дані необхідні для правильного призначення доступу та захисту персональних даних відповідно до чинного законодавства.

Після введення даних буде проведена перевірка, щоб переконатися, що доступ до системи VULCAN надається виключно уповноваженим особам. У разі виникнення будь-яких сумнівів або проблем, будь ласка, зв\'яжіться з адміністратором шкільного щоденника для з\'ясування ситуації.

Ми підтримуємо найвищі стандарти захисту персональних даних і гарантуємо, що вся надана інформація є безпечною. Додаток Wulkanowy не зберігає і не обробляє номер PESEL.

Нагадуємо, що надання повних і точних даних є обов\'язковим і необхідним для використання системи VULCAN.
Поки що пропустити Веб-сайт VULCAN потребує підтвердження From dbc7587741ba6c6181fd84b585b1124b0fdcef36 Mon Sep 17 00:00:00 2001 From: Michael <5672750+mibac138@users.noreply.github.com> Date: Wed, 24 Apr 2024 22:44:59 +0200 Subject: [PATCH 19/40] Add settings button to attendance calculator (#2492) --- .../AttendanceCalculatorFragment.kt | 30 ++++++++++++++++++- .../AttendanceCalculatorPresenter.kt | 12 +++++++- .../calculator/AttendanceCalculatorView.kt | 2 ++ .../settings/appearance/AppearanceFragment.kt | 10 +++++++ .../action_menu_attendance_calculator.xml | 11 +++++++ app/src/main/res/values/preferences_keys.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ .../res/xml/scheme_preferences_appearance.xml | 5 ++++ 8 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/menu/action_menu_attendance_calculator.xml diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorFragment.kt index 2d5667015..63d1d8be5 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorFragment.kt @@ -1,6 +1,9 @@ package io.github.wulkanowy.ui.modules.attendance.calculator import android.os.Bundle +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import android.view.View import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager @@ -9,7 +12,9 @@ import io.github.wulkanowy.R import io.github.wulkanowy.data.pojos.AttendanceData import io.github.wulkanowy.databinding.FragmentAttendanceCalculatorBinding import io.github.wulkanowy.ui.base.BaseFragment +import io.github.wulkanowy.ui.modules.main.MainActivity import io.github.wulkanowy.ui.modules.main.MainView +import io.github.wulkanowy.ui.modules.settings.appearance.AppearanceFragment import io.github.wulkanowy.ui.widgets.DividerItemDecoration import io.github.wulkanowy.utils.getThemeAttrColor import javax.inject.Inject @@ -33,6 +38,12 @@ class AttendanceCalculatorFragment : override val isViewEmpty get() = attendanceCalculatorAdapter.items.isEmpty() + @Suppress("DEPRECATION") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding = FragmentAttendanceCalculatorBinding.bind(view) @@ -40,6 +51,19 @@ class AttendanceCalculatorFragment : presenter.onAttachView(this) } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.action_menu_attendance_calculator, menu) + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return if (item.itemId == R.id.attendance_calculator_menu_settings) presenter.onSettingsSelected() + else false + } + + override fun openSettingsView() { + (activity as? MainActivity)?.pushView(AppearanceFragment.withFocusedPreference(getString(R.string.pref_key_attendance_target))) + } + override fun initView() { with(binding.attendanceCalculatorRecycler) { layoutManager = LinearLayoutManager(context) @@ -50,7 +74,11 @@ class AttendanceCalculatorFragment : with(binding) { attendanceCalculatorSwipe.setOnRefreshListener(presenter::onSwipeRefresh) attendanceCalculatorSwipe.setColorSchemeColors(requireContext().getThemeAttrColor(R.attr.colorPrimary)) - attendanceCalculatorSwipe.setProgressBackgroundColorSchemeColor(requireContext().getThemeAttrColor(R.attr.colorSwipeRefresh)) + attendanceCalculatorSwipe.setProgressBackgroundColorSchemeColor( + requireContext().getThemeAttrColor( + R.attr.colorSwipeRefresh + ) + ) attendanceCalculatorErrorRetry.setOnClickListener { presenter.onRetry() } attendanceCalculatorErrorDetails.setOnClickListener { presenter.onDetailsClick() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorPresenter.kt index d292e5650..29cb2197f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorPresenter.kt @@ -1,6 +1,11 @@ package io.github.wulkanowy.ui.modules.attendance.calculator -import io.github.wulkanowy.data.* +import io.github.wulkanowy.data.flatResourceFlow +import io.github.wulkanowy.data.logResourceStatus +import io.github.wulkanowy.data.onResourceData +import io.github.wulkanowy.data.onResourceError +import io.github.wulkanowy.data.onResourceIntermediate +import io.github.wulkanowy.data.onResourceNotLoading import io.github.wulkanowy.data.repositories.SemesterRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.domain.attendance.GetAttendanceCalculatorDataUseCase @@ -81,4 +86,9 @@ class AttendanceCalculatorPresenter @Inject constructor( } else showError(message, error) } } + + fun onSettingsSelected(): Boolean { + view?.openSettingsView() + return true + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorView.kt index 94e661212..21afe532e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/calculator/AttendanceCalculatorView.kt @@ -26,4 +26,6 @@ interface AttendanceCalculatorView : BaseView { fun updateData(data: List) fun clearView() + + fun openSettingsView() } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/settings/appearance/AppearanceFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/settings/appearance/AppearanceFragment.kt index ba234aae2..62544f83e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/settings/appearance/AppearanceFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/settings/appearance/AppearanceFragment.kt @@ -3,6 +3,7 @@ package io.github.wulkanowy.ui.modules.settings.appearance import android.content.SharedPreferences import android.os.Bundle import android.view.View +import androidx.core.os.bundleOf import androidx.preference.PreferenceFragmentCompat import androidx.preference.SeekBarPreference import com.yariksoffice.lingver.Lingver @@ -30,9 +31,18 @@ class AppearanceFragment : PreferenceFragmentCompat(), override val titleStringId get() = R.string.pref_settings_appearance_title + companion object { + fun withFocusedPreference(key: String) = AppearanceFragment().apply { + arguments = bundleOf(FOCUSED_KEY to key) + } + + private const val FOCUSED_KEY = "focusedKey" + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) presenter.onAttachView(this) + arguments?.getString(FOCUSED_KEY)?.let { scrollToPreference(it) } } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/app/src/main/res/menu/action_menu_attendance_calculator.xml b/app/src/main/res/menu/action_menu_attendance_calculator.xml new file mode 100644 index 000000000..c50906901 --- /dev/null +++ b/app/src/main/res/menu/action_menu_attendance_calculator.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/values/preferences_keys.xml b/app/src/main/res/values/preferences_keys.xml index 080456ef9..e87e9854a 100644 --- a/app/src/main/res/values/preferences_keys.xml +++ b/app/src/main/res/values/preferences_keys.xml @@ -1,6 +1,7 @@ default_menu_index + attendance_calculator attendance_present attendance_target attendance_calculator_sorting_mode diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9175321d3..a8e159ec6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -796,6 +796,8 @@ Dashboard Tiles visibility Attendance + Attendance calculator + Settings Timetable Grades Calculated average diff --git a/app/src/main/res/xml/scheme_preferences_appearance.xml b/app/src/main/res/xml/scheme_preferences_appearance.xml index a05d95c04..1ca4d2048 100644 --- a/app/src/main/res/xml/scheme_preferences_appearance.xml +++ b/app/src/main/res/xml/scheme_preferences_appearance.xml @@ -85,6 +85,11 @@ app:iconSpaceReserved="false" app:key="@string/pref_key_attendance_present" app:title="@string/pref_view_present" /> + + Date: Wed, 24 Apr 2024 22:46:55 +0200 Subject: [PATCH 20/40] Fix race condition of showing empty view in timetable (#2486) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Mikołaj Pich --- .../history/LuckyNumberHistoryAdapter.kt | 2 +- .../ui/modules/timetable/TimetableAdapter.kt | 46 ++++++------- .../ui/modules/timetable/TimetableFragment.kt | 13 +++- .../modules/timetable/TimetablePresenter.kt | 23 ++++--- .../ui/modules/timetable/TimetableView.kt | 2 +- .../github/wulkanowy/utils/SyncListAdapter.kt | 66 +++++++++++++++++++ 6 files changed, 110 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/io/github/wulkanowy/utils/SyncListAdapter.kt diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumber/history/LuckyNumberHistoryAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumber/history/LuckyNumberHistoryAdapter.kt index 0c1b89c8e..9c718af45 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumber/history/LuckyNumberHistoryAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumber/history/LuckyNumberHistoryAdapter.kt @@ -33,4 +33,4 @@ class LuckyNumberHistoryAdapter @Inject constructor() : } class ItemViewHolder(val binding: ItemLuckyNumberHistoryBinding) : RecyclerView.ViewHolder(binding.root) -} \ No newline at end of file +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt index a4221a2a2..b9b7a27e2 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt @@ -7,20 +7,20 @@ import android.view.ViewGroup import android.widget.TextView import androidx.core.view.isVisible import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Timetable import io.github.wulkanowy.databinding.ItemTimetableBinding import io.github.wulkanowy.databinding.ItemTimetableEmptyBinding import io.github.wulkanowy.databinding.ItemTimetableSmallBinding +import io.github.wulkanowy.utils.SyncListAdapter import io.github.wulkanowy.utils.getPlural import io.github.wulkanowy.utils.getThemeAttrColor import io.github.wulkanowy.utils.toFormattedString import javax.inject.Inject class TimetableAdapter @Inject constructor() : - ListAdapter(differ) { + SyncListAdapter(Differ) { override fun getItemViewType(position: Int): Int = getItem(position).type.ordinal @@ -61,12 +61,10 @@ class TimetableAdapter @Inject constructor() : binding = holder.binding, item = getItem(position) as TimetableItem.Small, ) - is NormalViewHolder -> bindNormalView( binding = holder.binding, item = getItem(position) as TimetableItem.Normal, ) - is EmptyViewHolder -> bindEmptyView( binding = holder.binding, item = getItem(position) as TimetableItem.Empty, @@ -307,31 +305,29 @@ class TimetableAdapter @Inject constructor() : private class EmptyViewHolder(val binding: ItemTimetableEmptyBinding) : RecyclerView.ViewHolder(binding.root) - companion object { - private val differ = object : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: TimetableItem, newItem: TimetableItem): Boolean = - when { - oldItem is TimetableItem.Small && newItem is TimetableItem.Small -> { - oldItem.lesson.start == newItem.lesson.start - } - - oldItem is TimetableItem.Normal && newItem is TimetableItem.Normal -> { - oldItem.lesson.start == newItem.lesson.start - } - - else -> oldItem == newItem + private object Differ : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: TimetableItem, newItem: TimetableItem): Boolean = + when { + oldItem is TimetableItem.Small && newItem is TimetableItem.Small -> { + oldItem.lesson.start == newItem.lesson.start } - override fun areContentsTheSame(oldItem: TimetableItem, newItem: TimetableItem) = - oldItem == newItem + oldItem is TimetableItem.Normal && newItem is TimetableItem.Normal -> { + oldItem.lesson.start == newItem.lesson.start + } - override fun getChangePayload(oldItem: TimetableItem, newItem: TimetableItem): Any? { - return if (oldItem is TimetableItem.Normal && newItem is TimetableItem.Normal) { - if (oldItem.lesson == newItem.lesson && oldItem.showGroupsInPlan == newItem.showGroupsInPlan && oldItem.timeLeft != newItem.timeLeft) { - "time_left" - } else super.getChangePayload(oldItem, newItem) - } else super.getChangePayload(oldItem, newItem) + else -> oldItem == newItem } + + override fun areContentsTheSame(oldItem: TimetableItem, newItem: TimetableItem) = + oldItem == newItem + + override fun getChangePayload(oldItem: TimetableItem, newItem: TimetableItem): Any? { + return if (oldItem is TimetableItem.Normal && newItem is TimetableItem.Normal) { + if (oldItem.lesson == newItem.lesson && oldItem.showGroupsInPlan == newItem.showGroupsInPlan && oldItem.timeLeft != newItem.timeLeft) { + "time_left" + } else super.getChangePayload(oldItem, newItem) + } else super.getChangePayload(oldItem, newItem) } } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt index 0e6459110..b73e7c26d 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt @@ -21,7 +21,11 @@ import io.github.wulkanowy.ui.modules.main.MainView import io.github.wulkanowy.ui.modules.timetable.additional.AdditionalLessonsFragment import io.github.wulkanowy.ui.modules.timetable.completed.CompletedLessonsFragment import io.github.wulkanowy.ui.widgets.DividerItemDecoration -import io.github.wulkanowy.utils.* +import io.github.wulkanowy.utils.dpToPx +import io.github.wulkanowy.utils.firstSchoolDayInSchoolYear +import io.github.wulkanowy.utils.getThemeAttrColor +import io.github.wulkanowy.utils.lastSchoolDayInSchoolYear +import io.github.wulkanowy.utils.openMaterialDatePicker import java.time.LocalDate import javax.inject.Inject @@ -104,8 +108,11 @@ class TimetableFragment : BaseFragment(R.layout.fragme } } - override fun updateData(data: List) { - timetableAdapter.submitList(data) + override fun updateData(data: List, isDayChanged: Boolean) { + when { + isDayChanged -> timetableAdapter.recreate(data) + else -> timetableAdapter.submitList(data) + } } override fun clearData() { diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt index 8ef0772b8..111050618 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt @@ -81,7 +81,7 @@ class TimetablePresenter @Inject constructor( } else currentDate?.previousSchoolDay reloadView(date ?: return) - loadData() + loadData(isDayChanged = true) } fun onNextDay() { @@ -90,7 +90,7 @@ class TimetablePresenter @Inject constructor( } else currentDate?.nextSchoolDay reloadView(date ?: return) - loadData() + loadData(isDayChanged = true) } fun onPickDate() { @@ -104,7 +104,7 @@ class TimetablePresenter @Inject constructor( fun onSwipeRefresh() { Timber.i("Force refreshing the timetable") - loadData(true) + loadData(forceRefresh = true) } fun onRetry() { @@ -112,7 +112,7 @@ class TimetablePresenter @Inject constructor( showErrorView(false) showProgress(true) } - loadData(true) + loadData(forceRefresh = true) } fun onDetailsClick() { @@ -145,7 +145,7 @@ class TimetablePresenter @Inject constructor( return true } - private fun loadData(forceRefresh: Boolean = false) { + private fun loadData(forceRefresh: Boolean = false, isDayChanged: Boolean = false) { flatResourceFlow { val student = studentRepository.getCurrentStudent() val semester = semesterRepository.getCurrentSemester(student) @@ -169,9 +169,9 @@ class TimetablePresenter @Inject constructor( enableSwipe(true) showProgress(false) showErrorView(false) + updateData(it.lessons, isDayChanged) showContent(it.lessons.isNotEmpty()) showEmpty(it.lessons.isEmpty()) - updateData(it.lessons) setDayHeaderMessage(it.headers.find { header -> header.date == currentDate }?.content) reloadNavigation() } @@ -216,15 +216,14 @@ class TimetablePresenter @Inject constructor( } } - private fun updateData(lessons: List) { + private fun updateData(lessons: List, isDayChanged: Boolean) { tickTimer?.cancel() - if (currentDate != now()) { - view?.updateData(createItems(lessons)) - } else { - tickTimer = timer(period = 2_000) { + view?.updateData(createItems(lessons), isDayChanged) + if (currentDate == now()) { + tickTimer = timer(period = 2_000, initialDelay = 2_000) { Handler(Looper.getMainLooper()).post { - view?.updateData(createItems(lessons)) + view?.updateData(createItems(lessons), isDayChanged) } } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableView.kt index 40190d51f..f4d5b7621 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableView.kt @@ -12,7 +12,7 @@ interface TimetableView : BaseView { fun initView() - fun updateData(data: List) + fun updateData(data: List, isDayChanged: Boolean) fun updateNavigationDay(date: String) diff --git a/app/src/main/java/io/github/wulkanowy/utils/SyncListAdapter.kt b/app/src/main/java/io/github/wulkanowy/utils/SyncListAdapter.kt new file mode 100644 index 000000000..e9135f498 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/utils/SyncListAdapter.kt @@ -0,0 +1,66 @@ +package io.github.wulkanowy.utils + +import android.annotation.SuppressLint +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView + +/** + * Custom alternative to androidx.recyclerview.widget.ListAdapter. ListAdapter is asynchronous which + * caused data race problems in views when a Resource.Error arrived shortly after + * Resource.Intermediate/Success - occasionally in that case the user could see both the Resource's + * data and an error message one on top of the other. This is synchronized by design to avoid that + * problem, however it retains the quality of life improvements of the original. + */ +abstract class SyncListAdapter private constructor( + private val updateStrategy: SyncListAdapter.(List) -> Unit +) : RecyclerView.Adapter() { + + constructor(differ: DiffUtil.ItemCallback) : this({ newItems -> + val diffResult = DiffUtil.calculateDiff(toCallback(differ, items, newItems)) + items = newItems + diffResult.dispatchUpdatesTo(this) + }) + + var items = emptyList() + private set + + final override fun getItemCount() = items.size + + fun getItem(position: Int): T { + return items[position] + } + + /** + * Updates all items, same as submitList, however also disables animations temporarily. + * This prevents a flashing effect on some views. Should be used in favor of submitList when + * all data is changed (e.g. the selected day changes in timetable causing all lessons to change). + */ + @SuppressLint("NotifyDataSetChanged") + fun recreate(data: List) { + items = data + notifyDataSetChanged() + } + + fun submitList(data: List) { + updateStrategy(data.toList()) + } + + private fun toCallback( + itemCallback: DiffUtil.ItemCallback, + old: List, + new: List, + ) = object : DiffUtil.Callback() { + override fun getOldListSize() = old.size + + override fun getNewListSize() = new.size + + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + itemCallback.areItemsTheSame(old[oldItemPosition], new[newItemPosition]) + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + itemCallback.areContentsTheSame(old[oldItemPosition], new[newItemPosition]) + + override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int) = + itemCallback.getChangePayload(old[oldItemPosition], new[newItemPosition]) + } +} From 6a1851da13dd6678b1bf3e82cfde1b99d83efe43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Thu, 25 Apr 2024 09:26:47 +0200 Subject: [PATCH 21/40] Bump sdk to 2.5.8-SNAPSHOT --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ede6dd951..12fe81108 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -195,7 +195,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.7' + implementation 'io.github.wulkanowy:sdk:2.5.8-SNAPSHOT' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' From f983a23b1a2f6033c089e10470c4edd018c05ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Thu, 25 Apr 2024 12:45:09 +0200 Subject: [PATCH 22/40] Version 2.5.8 --- app/build.gradle | 8 ++++---- app/src/main/play/release-notes/pl-PL/default.txt | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 12fe81108..7a2f0ca57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 156 - versionName "2.5.7" + versionCode 157 + versionName "2.5.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", "Wulkanowy" @@ -165,7 +165,7 @@ play { track = 'production' releaseStatus = ReleaseStatus.IN_PROGRESS userFraction = 0.99d - updatePriority = 3 + updatePriority = 4 enabled.set(false) } @@ -195,7 +195,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.5.8-SNAPSHOT' + implementation 'io.github.wulkanowy:sdk:2.5.8' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index d96ff15ac..2b87f21d5 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,6 +1,5 @@ -Wersja 2.5.7 +Wersja 2.5.8 -— naprawiliśmy logowanie (pusta lista z wyborem uczniów), które zepsuło się po zmianach po stronie VULCANa -— dodaliśmy wyświetlanie osobno średniej rocznej, bo VULCAN rozdzielił i zrobił się bałagan +— obeszliśmy próby blokowania Wulkanowego przez firmę VULCAN, o czymś pewnie zapomnieliśmy, ale nie miejcie nam tego za złe Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From cde2121b60f5dadcd6fc884d12f568451aef1b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Fri, 26 Apr 2024 22:05:46 +0200 Subject: [PATCH 23/40] New Crowdin updates (#2527) --- app/src/main/res/values-cs/strings.xml | 14 +++-- .../main/res/values-de/preferences_values.xml | 10 +-- app/src/main/res/values-de/strings.xml | 62 ++++++++++--------- app/src/main/res/values-pl/strings.xml | 2 + app/src/main/res/values-ru/strings.xml | 2 + app/src/main/res/values-sk/strings.xml | 14 +++-- app/src/main/res/values-uk/strings.xml | 2 + 7 files changed, 59 insertions(+), 47 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 9abd73c15..7dfab1872 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -113,17 +113,17 @@ Komentář Počet nových známek: %1$d Průměr: %1$.2f - Annual: %1$.2f + Roční: %1$.2f Body: %s Bez průměru - Semester average - Annual average + Pololetní průměr + Roční průměr Součet bodů Konečná známka Předpokládaná známka Popisná známka - Calculated semester average - Calculated annual average + Vypočítaný pololetní průměr + Vypočítaný roční průměr Jak funguje vypočítaný průměr? Vypočítaný průměr je aritmetický průměr vypočítaný z průměrů předmětů. Umožňuje vám to znát přibližný konečný průměr. Vypočítává se způsobem zvoleným uživatelem v nastavení aplikaci. Doporučuje se vybrat příslušnou možnost. Důvodem je rozdílný výpočet školních průměrů. Pokud vaše škola navíc uvádí průměr předmětů na stránce deníku Vulcan, aplikace si je stáhne a tyto průměry nepočítá. To lze změnit vynucením výpočtu průměru v nastavení aplikaci.\n\nPrůměr známek pouze z vybraného semestru:\n1. Výpočet váženého průměru pro každý předmět v daném semestru\n2. Sčítání vypočítaných průměrů\n3. Výpočet aritmetického průměru součtených průměrů\n\nPrůměr průměrů z obou semestrů:\n1. Výpočet váženého průměru pro každý předmět v semestru 1 a 2\n2. Výpočet aritmetického průměru vypočítaných průměrů za semestry 1 a 2 pro každý předmět.\n3. Sčítání vypočítaných průměrů\n4. Výpočet aritmetického průměru sečtených průměrů\n\nPrůměr známek z celého roku:\n1. Výpočet váženého průměru za rok pro každý předmět. Konečný průměr v 1. semestru je nepodstatný.\n2. Sčítání vypočítaných průměrů\n3. Výpočet aritmetického průměru součtených průměrů Jak funguje konečný průměr? @@ -811,6 +811,8 @@ Domů Viditelnost dlaždic Docházka + Kalkulačka docházky + Nastavení Plán lekce Známky Vypočítaný průměr @@ -862,7 +864,7 @@ Autorizovat Autorizace byla úspěšně dokončena Autorizace - Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
+ Vážený rodiči,

Chcete-li autorizovat a zajistit bezpečnost dat, prosíme Vás, abyste níže zadali PESEL číslo žáka %1$s. Tyto detaily jsou nutné pro správné přidělování přístupu k osobním údajům a jejich ochranu v souladu s platnými předpisy.

Po zadání údajů budou data ověřena, čímž se zajistí, že přístup do systému VULCAN získají pouze autorizované osoby. Pokud máte jakékoliv pochybnosti nebo problémy, kontaktujte prosím školního správce deníku pro objasnění situace.

Udržujeme nejvyšší standardy ochrany osobních údajů a zajišťujeme, aby byly všechny poskytnuté informace chráněné. Wulkanowy neukládá ani nezpracovává číslo PESEL.

Připomínáme, že poskytování úplných a přesných údajů je nutné a nezbytné k používání systému VULCAN.
Zatím přeskočit Webová stránka deníku VULCAN vyžaduje ověření diff --git a/app/src/main/res/values-de/preferences_values.xml b/app/src/main/res/values-de/preferences_values.xml index 0170acfa3..7130cdd47 100644 --- a/app/src/main/res/values-de/preferences_values.xml +++ b/app/src/main/res/values-de/preferences_values.xml @@ -1,10 +1,10 @@ - Alphabetically - By date - By average - By attendance percentage - By subject attendance balance + Alphabetisch + Nach Datum + Nach Durchschnitt + Nach Anwesenheitsprozent + Nach Subjekt Anwesenheitssaldo Licht Dunkel diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 39fe5c14c..4945d13ce 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -10,10 +10,10 @@ Einstellungen Mehr Über die Applikation - Log viewer + Log Viewer Debuggen Benachrichtigungen debuggen - Clear webview cookies + Webview-Cookies löschen Mitarbeiter Lizenzen Nachrichten @@ -38,14 +38,14 @@ Anmeldung, PESEL oder e-mail Passwort UONET+ Registervariante - Custom domain suffix + Benutzerdefinierte Domeisensuffixe Mobile API Scraper Hybride Token PIN Symbol - E.g. \"lodz\" or \"powiatjaroslawski\" + Zum Beispiel \"lodz\" oder \"powiatjaroslawski\" Anmelden Passwort ist zu kurz Anmeldedaten sind falsch @@ -56,9 +56,9 @@ Ungültige email Den zugewiesenen Login anstelle von email verwenden Benutze den zugewiesenen Login oder E-Mail in @%1$s - Invalid domain suffix - Invalid symbol. If you cannot find it, please contact the school - Don\'t make this up! If you cannot find it, please contact the school + Ungültiges Domain-Suffix + Ungültiges Symbol. Wenn Sie es nicht finden können, wenden Sie sich bitte an die Schule + Denken Sie sich das nicht aus! Wenn Sie es nicht finden können, wenden Sie sich bitte an die Schule Schüler nicht gefunden. Überprüfen Sie das Symbol und die gewählte Variation des UONET+ Registers Ausgewählter Student ist bereits angemeldet. Das Symbol kann auf der Registerseite in Student → Tost Möbeln → Registrieren Sie Ihr Mobilgerätgefunden werden.\n\nStellen Sie sicher, dass Sie die entsprechende Registervariante im Feld UONET+ Registervariante auf dem vorherigen Bildschirm festgelegt haben @@ -73,7 +73,7 @@ Discord email senden Stellen Sie sicher, dass Sie die richtige UONET+ Registervariation wählen! - Reset password + Passwort zurücksetzen Ihr Konto wiederherstellen Wiederherstellen Student ist bereits angemeldet @@ -81,13 +81,13 @@ Andere Suchorte Keine aktiven Schüler gefunden Geben Sie ein anderes Symbol ein - Get help - Full school name with the town (required) - Np. ZSTiO Jarosław lub SP nr 99 w Łodzi - Enter correct name of the school - Additional information in Polish (optional) - Np. \"Ostatnio zmieniłem szkołę i…\" albo \"Jestem rodzicem i nie widzę drugiego dziecka…\" - Submit + Hilfe anfragen + Vollschulname mit der Stadt (erforderlich) + Z. B. ZSTiO Jarosław oder SP nr 99 w Łodzi + Geben Sie den richtigen Namen der Schule ein + Zusätzliche Informationen auf Polnisch (fakultativ) + Z. B. „Ich habe kürzlich die Schule gewechselt und...“ oder „Ich bin ein Elternteil und kann das Konto des anderen Kindes nicht sehen...“ + Einreichen Benachrichtigungen aktivieren Aktivieren Sie Benachrichtigungen, damit Sie keine Nachricht vom Lehrer oder eine neue Klasse verpassen @@ -98,8 +98,8 @@ Anmelden Die Sitzung ist abgelaufen Die Sitzung ist abgelaufen, bitte loggen Sie sich erneut ein - Password has expired or been changed - Your account password has expired or been changed. You will need to log in to Wulkanowy again + Das Passwort ist abgelaufen oder wurde geändert + Ihr Passwort ist abgelaufen oder wurde geändert. Sie müssen sich erneut bei Wulkanowy anmelden Anwendungsunterstützung Gefällt Ihnen diese App? Unterstützen Sie ihre Entwicklung, indem Sie nicht-invasive Werbung aktivieren, die Sie jederzeit deaktivieren können Werbung aktivieren @@ -113,17 +113,17 @@ Kommentar Anzahl der neuen Bewertungen: %1$d Durchschnitt: %1$.2f - Annual: %1$.2f + Jährlich: %1$.2f Punkte: %s Kein Durchschnitt - Semester average - Annual average + Semesterdurchschnitt + Jahresdurchschnitt Gesamtpunkte Finaler Note Vorhergesagte Note - Descriptive grade - Calculated semester average - Calculated annual average + Deskriptive Note + Berechneter Semesterdurchschnitt + Berechneter Jahresdurchschnitt Wie funktioniert der berechnete Durchschnitt? Der berechnete Mittelwert ist das arithmetische Mittel, das aus den Durchschnittswerten der Probanden errechnet wird. Es erlaubt Ihnen, den ungefähre endgültigen Durchschnitt zu kennen. Sie wird auf eine vom Anwender in den Anwendungseinstellungen gewählte Weise berechnet. Es wird empfohlen, die entsprechende Option zu wählen. Das liegt daran, dass die Berechnung der Schuldurchschnitte unterschiedlich ist. Wenn Ihre Schule den Durchschnitt der Fächer auf der Vulcan-Seite angibt, lädt die Anwendung diese Fächer herunter und berechnet nicht den Durchschnitt. Dies kann geändert werden, indem die Berechnung des Durchschnitts in den Anwendungseinstellungen erzwungen wird. \n\nDurchschnitt der Noten nur aus dem ausgewählten Semester :\n1. Berechnung des gewichteten Durchschnitts für jedes Fach in einem bestimmten Semester\n2. Addition der berechneten Durchschnittswerte\n3. Berechnung des arithmetischen Mittels der summierten Durchschnitte\nDurchschnitt der Durchschnitte aus beiden Semestern:\n1. Berechnung des gewichteten Durchschnitts für jedes Fach in Semester 1 und 2\n2. Berechnung des arithmetischen Mittels der berechneten Durchschnitte für Semester 1 und 2 für jedes Fach. \n3. Hinzufügen von berechneten Durchschnittswerten\n4. Berechnung des arithmetischen Mittels der summierten Durchschnitte\nDurchschnitt der Noten aus dem ganzen Jahr:\n1. Berechnung des gewichteten Jahresdurchschnitts für jedes Fach. Der Abschlussdurchschnitt im 1. Semester ist irrelevant. \n2. Addition der berechneten Durchschnittswerte\n3. Berechnung des arithmetischen Mittels der summierten Mittelwerte Wie funktioniert der endgültige Durchschnitt? @@ -159,8 +159,8 @@ Neue Abschlussnoten - New descriptive grade - New descriptive grades + Neuer Deskriptive Grade + Neuer Deskriptive Grades Du hast %1$d Note bekommen @@ -175,8 +175,8 @@ Sie haben %1$d Abschlussnoten bekommen - You received %1$d descriptive grade - You received %1$d descriptive grades + Sie haben %1$d deskriptive Grade erhalten + Sie haben %1$d deskriptive Grades erhalten Lektion @@ -241,9 +241,9 @@ Endzeit muss grösser sein als Startzeit Übersicht über die Schulbesuch - Attendance calculator - %1$d over target - right on target + Anwesenheitsrechner + %1$d Über Ziel + direkt am ziel %1$d under target %1$d/%2$d presences No attendances recorded @@ -717,6 +717,8 @@ Dashboard Sichtbarkeit der Kacheln Schulbesuch + Attendance calculator + Settings Stundenplan Noten Berechneter Durchschnitt diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index bdd5df91a..212e442b9 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -811,6 +811,8 @@ Start Widoczność kafelków Frekwencja + Kalkulator frekwencji + Ustawienia Plan lekcji Oceny Obliczona średnia diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 6914641b6..87b458adc 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -811,6 +811,8 @@ Главная Видимость плиток Посещаемость + Attendance calculator + Settings Расписание Оценки Рассчитанная средняя оценка diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 8bb0e1bd8..9f145efac 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -113,17 +113,17 @@ Komentár Počet nových známok %1$d Priemer: %1$.2f - Annual: %1$.2f + Ročný: %1$.2f Body: %s Bez priemeru - Semester average - Annual average + Polročný priemer + Ročný priemer Súčet bodov Konečná známka Predpokladaná známka Popisná známka - Calculated semester average - Calculated annual average + Vypočítaný polročný priemer + Vypočítaný ročný priemer Ako funguje vypočítaný priemer? Vypočítaný priemer je aritmetický priemer vypočítaný z priemerov predmetov. Umožňuje vám to poznať približný konečný priemer. Vypočítava sa spôsobom zvoleným užívateľom v nastaveniach aplikácii. Odporúča sa vybrať príslušnú možnosť. Dôvodom je rozdielny výpočet školských priemerov. Ak vaša škola navyše uvádza priemer predmetov na stránke denníka Vulcan, aplikácia si ich stiahne a tieto priemery nepočíta. To možno zmeniť vynútením výpočtu priemeru v nastavení aplikácii.\n\nPriemer známok iba z vybraného semestra:\n1. Výpočet váženého priemeru pre každý predmet v danom semestri\n2. Sčítanie vypočítaných priemerov\n3. Výpočet aritmetického priemeru součtených priemerov\n\nPriemer priemerov z oboch semestrov:\n1. Výpočet váženého priemeru pre každý predmet v semestri 1 a 2\n2. Výpočet aritmetického priemeru vypočítaných priemerov za semestre 1 a 2 pre každý predmet.\n3. Sčítanie vypočítaných priemerov\n4. Výpočet aritmetického priemeru součtených priemerov\n\nPriemer známok z celého roka:\n1. Výpočet váženého priemeru za rok pre každý predmet. Konečný priemer v 1. semestri je nepodstatný.\n2. Sčítanie vypočítaných priemerov\n3. Výpočet aritmetického priemeru součtených priemerov Ako funguje konečný priemer? @@ -811,6 +811,8 @@ Domov Viditeľnosť dlaždíc Dochádzka + Kalkulačka dochádzky + Nastavenia Plán lekcie Známky Vypočítaný priemer @@ -862,7 +864,7 @@ Autorizovať Autorizácia bola úspešne dokončená Autorizácia - Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
+ Vážený rodiči,

Ak chcete autorizovať a zaistiť bezpečnosť dát, prosíme Vás, aby ste nižšie zadali PESEL číslo žiaka %1$s. Tieto detaily sú nutné pre správne prideľovanie prístupu k osobným údajom a ich ochranu v súlade s platnými predpismi.

Po zadaní údajov budú dáta overené, čím sa zaistí, že prístup do systému VULCAN získajú iba autorizované osoby. Pokiaľ máte akékoľvek pochybnosti alebo problémy, kontaktujte prosím školského správcu denníka pre objasnenie situácie.

Udržujeme najvyššie štandardy ochrany osobných údajov a zaisťujeme, aby boli všetky poskytnuté informácie chránené. Wulkanowy neukladá ani nespracováva číslo PESEL.

Pripomíname, že poskytovanie úplných a presných údajov je nutné a nevyhnutné na používanie systému VULCAN.
Zatiaľ preskočiť Webová stránka denníka VULCAN vyžaduje overenie diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 70269211a..f48732c3c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -811,6 +811,8 @@ Головна Видимість плиток Відвідуваність + Attendance calculator + Settings Розклад Оцінки Розрахована середня оцінка From 6f2168d6417711be34d129a626cf31352a417571 Mon Sep 17 00:00:00 2001 From: Michael <5672750+mibac138@users.noreply.github.com> Date: Fri, 26 Apr 2024 23:33:45 +0200 Subject: [PATCH 24/40] Additional lessons in timetable view (#2491) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Mikołaj Pich --- .../data/enums/ShowAdditionalLessonsMode.kt | 11 ++ .../repositories/PreferencesRepository.kt | 7 + .../ui/modules/timetable/TimetableAdapter.kt | 24 +++ .../ui/modules/timetable/TimetableItem.kt | 8 +- .../modules/timetable/TimetablePresenter.kt | 130 ++++++++++----- .../additional/AdditionalLessonsFragment.kt | 14 +- .../additional/AdditionalLessonsPresenter.kt | 34 +++- .../additional/AdditionalLessonsView.kt | 2 +- .../add/AdditionalLessonAddDialog.kt | 14 +- .../add/AdditionalLessonAddPresenter.kt | 9 +- .../additional/add/AdditionalLessonAddView.kt | 2 +- .../layout/item_timetable_main_additional.xml | 153 ++++++++++++++++++ .../main/res/values/preferences_defaults.xml | 3 +- app/src/main/res/values/preferences_keys.xml | 1 + .../main/res/values/preferences_values.xml | 11 ++ app/src/main/res/values/strings.xml | 2 + .../res/xml/scheme_preferences_appearance.xml | 21 ++- 17 files changed, 379 insertions(+), 67 deletions(-) create mode 100644 app/src/main/java/io/github/wulkanowy/data/enums/ShowAdditionalLessonsMode.kt create mode 100644 app/src/main/res/layout/item_timetable_main_additional.xml diff --git a/app/src/main/java/io/github/wulkanowy/data/enums/ShowAdditionalLessonsMode.kt b/app/src/main/java/io/github/wulkanowy/data/enums/ShowAdditionalLessonsMode.kt new file mode 100644 index 000000000..3e7cdef5b --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/data/enums/ShowAdditionalLessonsMode.kt @@ -0,0 +1,11 @@ +package io.github.wulkanowy.data.enums + +enum class ShowAdditionalLessonsMode(val value: String) { + NONE("none"), + INLINE("inline"), + BELOW("below"); + + companion object { + fun getByValue(value: String) = entries.find { it.value == value } ?: INLINE + } +} diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt index 2bb1538cb..8082068c5 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt @@ -14,6 +14,7 @@ import io.github.wulkanowy.data.enums.AttendanceCalculatorSortingMode import io.github.wulkanowy.data.enums.GradeColorTheme import io.github.wulkanowy.data.enums.GradeExpandMode import io.github.wulkanowy.data.enums.GradeSortingMode +import io.github.wulkanowy.data.enums.ShowAdditionalLessonsMode import io.github.wulkanowy.data.enums.TimetableGapsMode import io.github.wulkanowy.data.enums.TimetableMode import io.github.wulkanowy.ui.modules.dashboard.DashboardItem @@ -213,6 +214,12 @@ class PreferencesRepository @Inject constructor( ) ) + val showAdditionalLessonsInPlan: ShowAdditionalLessonsMode + get() = getString( + R.string.pref_key_timetable_show_additional_lessons, + R.string.pref_default_timetable_show_additional_lessons + ).let { ShowAdditionalLessonsMode.getByValue(it) } + val gradeSortingMode: GradeSortingMode get() = GradeSortingMode.getByValue( getString( diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt index b9b7a27e2..5cb6c401f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableAdapter.kt @@ -12,6 +12,7 @@ import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Timetable import io.github.wulkanowy.databinding.ItemTimetableBinding import io.github.wulkanowy.databinding.ItemTimetableEmptyBinding +import io.github.wulkanowy.databinding.ItemTimetableMainAdditionalBinding import io.github.wulkanowy.databinding.ItemTimetableSmallBinding import io.github.wulkanowy.utils.SyncListAdapter import io.github.wulkanowy.utils.getPlural @@ -39,6 +40,10 @@ class TimetableAdapter @Inject constructor() : TimetableItemType.EMPTY -> EmptyViewHolder( ItemTimetableEmptyBinding.inflate(inflater, parent, false) ) + + TimetableItemType.ADDITIONAL -> AdditionalViewHolder( + ItemTimetableMainAdditionalBinding.inflate(inflater, parent, false) + ) } } @@ -69,6 +74,22 @@ class TimetableAdapter @Inject constructor() : binding = holder.binding, item = getItem(position) as TimetableItem.Empty, ) + + is AdditionalViewHolder -> bindAdditionalView( + binding = holder.binding, + item = getItem(position) as TimetableItem.Additional, + ) + } + } + + private fun bindAdditionalView( + binding: ItemTimetableMainAdditionalBinding, + item: TimetableItem.Additional + ) { + with(binding) { + timetableItemSubject.text = item.additional.subject + timetableItemTimeStart.text = item.additional.start.toFormattedString("HH:mm") + timetableItemTimeFinish.text = item.additional.end.toFormattedString("HH:mm") } } @@ -305,6 +326,9 @@ class TimetableAdapter @Inject constructor() : private class EmptyViewHolder(val binding: ItemTimetableEmptyBinding) : RecyclerView.ViewHolder(binding.root) + private class AdditionalViewHolder(val binding: ItemTimetableMainAdditionalBinding) : + RecyclerView.ViewHolder(binding.root) + private object Differ : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: TimetableItem, newItem: TimetableItem): Boolean = when { diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt index 402b03dd9..93290ba21 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt @@ -1,6 +1,7 @@ package io.github.wulkanowy.ui.modules.timetable import io.github.wulkanowy.data.db.entities.Timetable +import io.github.wulkanowy.data.db.entities.TimetableAdditional import java.time.Duration sealed class TimetableItem(val type: TimetableItemType) { @@ -23,6 +24,10 @@ sealed class TimetableItem(val type: TimetableItemType) { val numFrom: Int, val numTo: Int ) : TimetableItem(TimetableItemType.EMPTY) + + data class Additional( + val additional: TimetableAdditional, + ) : TimetableItem(TimetableItemType.ADDITIONAL) } data class TimeLeft( @@ -34,5 +39,6 @@ data class TimeLeft( enum class TimetableItemType { SMALL, NORMAL, - EMPTY + EMPTY, + ADDITIONAL, } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt index 111050618..c00bdc3e4 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetablePresenter.kt @@ -4,6 +4,9 @@ import android.os.Handler import android.os.Looper import io.github.wulkanowy.data.db.entities.Semester import io.github.wulkanowy.data.db.entities.Timetable +import io.github.wulkanowy.data.db.entities.TimetableAdditional +import io.github.wulkanowy.data.enums.ShowAdditionalLessonsMode.BELOW +import io.github.wulkanowy.data.enums.ShowAdditionalLessonsMode.NONE import io.github.wulkanowy.data.enums.TimetableGapsMode.BETWEEN_AND_BEFORE_LESSONS import io.github.wulkanowy.data.enums.TimetableGapsMode.NO_GAPS import io.github.wulkanowy.data.enums.TimetableMode @@ -14,6 +17,7 @@ import io.github.wulkanowy.data.onResourceError import io.github.wulkanowy.data.onResourceIntermediate import io.github.wulkanowy.data.onResourceNotLoading import io.github.wulkanowy.data.onResourceSuccess +import io.github.wulkanowy.data.pojos.TimetableFull import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.data.repositories.SemesterRepository import io.github.wulkanowy.data.repositories.StudentRepository @@ -169,9 +173,9 @@ class TimetablePresenter @Inject constructor( enableSwipe(true) showProgress(false) showErrorView(false) - updateData(it.lessons, isDayChanged) - showContent(it.lessons.isNotEmpty()) - showEmpty(it.lessons.isEmpty()) + updateData(it, isDayChanged) + showContent(it.lessons.isNotEmpty() || it.additional.isNotEmpty()) + showEmpty(it.lessons.isEmpty() && it.additional.isEmpty()) setDayHeaderMessage(it.headers.find { header -> header.date == currentDate }?.content) reloadNavigation() } @@ -216,7 +220,7 @@ class TimetablePresenter @Inject constructor( } } - private fun updateData(lessons: List, isDayChanged: Boolean) { + private fun updateData(lessons: TimetableFull, isDayChanged: Boolean) { tickTimer?.cancel() view?.updateData(createItems(lessons), isDayChanged) @@ -229,53 +233,84 @@ class TimetablePresenter @Inject constructor( } } - private fun createItems(items: List): List { - val filteredItems = items - .filter { - if (prefRepository.showWholeClassPlan == TimetableMode.ONLY_CURRENT_GROUP) { - it.isStudentPlan - } else true - } - .sortedWith(compareBy({ item -> item.start }, { item -> !item.isStudentPlan })) + private sealed class Item( + val isStudentPlan: Boolean, + val start: Instant, + val number: Int?, + ) { + class Lesson(val lesson: Timetable) : + Item(lesson.isStudentPlan, lesson.start, lesson.number) + + class Additional(val additional: TimetableAdditional) : Item(true, additional.start, null) + } + + private fun createItems(fullTimetable: TimetableFull): List { + val showAdditionalLessonsInPlan = prefRepository.showAdditionalLessonsInPlan + val allItems = + fullTimetable.lessons.map(Item::Lesson) + fullTimetable.additional.map(Item::Additional) + .takeIf { showAdditionalLessonsInPlan != NONE }.orEmpty() + + val filteredItems = allItems.filter { + if (prefRepository.showWholeClassPlan == TimetableMode.ONLY_CURRENT_GROUP) { + it.isStudentPlan + } else true + }.sortedWith( + (compareBy { it is Item.Additional } + .takeIf { showAdditionalLessonsInPlan == BELOW } ?: EmptyComparator()) + .thenBy { it.start } + .thenBy { !it.isStudentPlan } + ) var prevNum = when (prefRepository.showTimetableGaps) { BETWEEN_AND_BEFORE_LESSONS -> 0 else -> null } + var prevIsAdditional = false return buildList { filteredItems.forEachIndexed { i, it -> - if (prefRepository.showTimetableGaps != NO_GAPS && prevNum != null && it.number > prevNum!! + 1) { - val emptyLesson = TimetableItem.Empty( - numFrom = prevNum!! + 1, - numTo = it.number - 1 - ) - add(emptyLesson) + if (prefRepository.showTimetableGaps != NO_GAPS) { + if (prevNum != null && it.number != null && it.number > prevNum!! + 1) { + if (!prevIsAdditional) { + // Additional lessons do count as a lesson so don't add empty lessons + // when there is an additional lesson present + val emptyLesson = TimetableItem.Empty( + numFrom = prevNum!! + 1, numTo = it.number - 1 + ) + add(emptyLesson) + } + } + prevNum = it.number + prevIsAdditional = it is Item.Additional } - if (it.isStudentPlan) { - val normalLesson = TimetableItem.Normal( - lesson = it, - showGroupsInPlan = prefRepository.showGroupsInPlan, - timeLeft = filteredItems.getTimeLeftForLesson(it, i), - onClick = ::onTimetableItemSelected, - isLessonNumberVisible = !isEduOne - ) - add(normalLesson) - } else { - val smallLesson = TimetableItem.Small( - lesson = it, - onClick = ::onTimetableItemSelected, - isLessonNumberVisible = !isEduOne - ) - add(smallLesson) + if (it is Item.Lesson) { + if (it.isStudentPlan) { + val normalLesson = TimetableItem.Normal( + lesson = it.lesson, + showGroupsInPlan = prefRepository.showGroupsInPlan, + timeLeft = filteredItems.getTimeLeftForLesson(it.lesson, i), + onClick = ::onTimetableItemSelected, + isLessonNumberVisible = !isEduOne + ) + add(normalLesson) + } else { + val smallLesson = TimetableItem.Small( + lesson = it.lesson, + onClick = ::onTimetableItemSelected, + isLessonNumberVisible = !isEduOne + ) + add(smallLesson) + } + } else if (it is Item.Additional) { + // If the user disabled showing additional lessons, they would've been filtered + // out already, so there's no need to check it again. + add(TimetableItem.Additional(it.additional)) } - - prevNum = it.number } } } - private fun List.getTimeLeftForLesson(lesson: Timetable, index: Int): TimeLeft { + private fun List.getTimeLeftForLesson(lesson: Timetable, index: Int): TimeLeft { val isShowTimeUntil = lesson.isShowTimeUntil(getPreviousLesson(index)) return TimeLeft( until = lesson.until.plusMinutes(1).takeIf { isShowTimeUntil }, @@ -284,11 +319,20 @@ class TimetablePresenter @Inject constructor( ) } - private fun List.getPreviousLesson(position: Int): Instant? { - return filter { it.isStudentPlan } - .getOrNull(position - 1 - filterIndexed { i, item -> i < position && !item.isStudentPlan }.size) + private fun List.getPreviousLesson(position: Int): Instant? { + val lessonAdditionalOffset = filterIndexed { i, item -> + i < position && item is Item.Additional + }.size + val lessonStudentPlanOffset = filterIndexed { i, item -> + i < position && !item.isStudentPlan + }.size + val lessonIndex = position - 1 - lessonAdditionalOffset - lessonStudentPlanOffset + + return filterIsInstance() + .filter { it.isStudentPlan } + .getOrNull(lessonIndex) ?.let { - if (!it.canceled && it.isStudentPlan) it.end + if (!it.lesson.canceled && it.isStudentPlan) it.lesson.end else null } } @@ -341,3 +385,7 @@ class TimetablePresenter @Inject constructor( super.onDetachView() } } + +private class EmptyComparator : Comparator { + override fun compare(o1: T, o2: T) = 0 +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsFragment.kt index faa833c20..bf6be56f6 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsFragment.kt @@ -13,7 +13,11 @@ import io.github.wulkanowy.ui.modules.main.MainActivity import io.github.wulkanowy.ui.modules.main.MainView import io.github.wulkanowy.ui.modules.timetable.additional.add.AdditionalLessonAddDialog import io.github.wulkanowy.ui.widgets.DividerItemDecoration -import io.github.wulkanowy.utils.* +import io.github.wulkanowy.utils.dpToPx +import io.github.wulkanowy.utils.firstSchoolDayInSchoolYear +import io.github.wulkanowy.utils.getThemeAttrColor +import io.github.wulkanowy.utils.lastSchoolDayInSchoolYear +import io.github.wulkanowy.utils.openMaterialDatePicker import java.time.LocalDate import javax.inject.Inject @@ -132,8 +136,12 @@ class AdditionalLessonsFragment : binding.additionalLessonsNextButton.visibility = if (show) View.VISIBLE else View.INVISIBLE } - override fun showAddAdditionalLessonDialog() { - (activity as? MainActivity)?.showDialogFragment(AdditionalLessonAddDialog.newInstance()) + override fun showAddAdditionalLessonDialog(currentDate: LocalDate) { + (activity as? MainActivity)?.showDialogFragment( + AdditionalLessonAddDialog.newInstance( + currentDate + ) + ) } override fun showDatePickerDialog(selectedDate: LocalDate) { diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsPresenter.kt index d0a01b38c..16ec9746f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsPresenter.kt @@ -1,14 +1,27 @@ package io.github.wulkanowy.ui.modules.timetable.additional import android.annotation.SuppressLint -import io.github.wulkanowy.data.* import io.github.wulkanowy.data.db.entities.TimetableAdditional +import io.github.wulkanowy.data.flatResourceFlow +import io.github.wulkanowy.data.logResourceStatus +import io.github.wulkanowy.data.onResourceData +import io.github.wulkanowy.data.onResourceError +import io.github.wulkanowy.data.onResourceNotLoading +import io.github.wulkanowy.data.onResourceSuccess import io.github.wulkanowy.data.repositories.SemesterRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.data.repositories.TimetableRepository +import io.github.wulkanowy.domain.timetable.IsStudentHasLessonsOnWeekendUseCase import io.github.wulkanowy.ui.base.BasePresenter import io.github.wulkanowy.ui.base.ErrorHandler -import io.github.wulkanowy.utils.* +import io.github.wulkanowy.utils.AnalyticsHelper +import io.github.wulkanowy.utils.capitalise +import io.github.wulkanowy.utils.getLastSchoolDayIfHoliday +import io.github.wulkanowy.utils.isHolidays +import io.github.wulkanowy.utils.nextOrSameSchoolDay +import io.github.wulkanowy.utils.nextSchoolDay +import io.github.wulkanowy.utils.previousSchoolDay +import io.github.wulkanowy.utils.toFormattedString import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.onEach @@ -22,11 +35,14 @@ class AdditionalLessonsPresenter @Inject constructor( errorHandler: ErrorHandler, private val semesterRepository: SemesterRepository, private val timetableRepository: TimetableRepository, + private val isStudentHasLessonsOnWeekendUseCase: IsStudentHasLessonsOnWeekendUseCase, private val analytics: AnalyticsHelper ) : BasePresenter(errorHandler, studentRepository) { private var baseDate: LocalDate = LocalDate.now().nextOrSameSchoolDay + private var isWeekendHasLessons: Boolean = false + lateinit var currentDate: LocalDate private set @@ -43,12 +59,18 @@ class AdditionalLessonsPresenter @Inject constructor( } fun onPreviousDay() { - loadData(currentDate.previousSchoolDay) + val date = if (isWeekendHasLessons) { + currentDate.minusDays(1) + } else currentDate.previousSchoolDay + loadData(date) reloadView() } fun onNextDay() { - loadData(currentDate.nextSchoolDay) + val date = if (isWeekendHasLessons) { + currentDate.plusDays(1) + } else currentDate.nextSchoolDay + loadData(date) reloadView() } @@ -57,7 +79,7 @@ class AdditionalLessonsPresenter @Inject constructor( } fun onAdditionalLessonAddButtonClicked() { - view?.showAddAdditionalLessonDialog() + view?.showAddAdditionalLessonDialog(currentDate) } fun onDateSet(year: Int, month: Int, day: Int) { @@ -131,6 +153,8 @@ class AdditionalLessonsPresenter @Inject constructor( flatResourceFlow { val student = studentRepository.getCurrentStudent() val semester = semesterRepository.getCurrentSemester(student) + + isWeekendHasLessons = isStudentHasLessonsOnWeekendUseCase(semester, currentDate) timetableRepository.getTimetable( student = student, semester = semester, diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsView.kt index 76d37b754..291c12172 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/AdditionalLessonsView.kt @@ -36,7 +36,7 @@ interface AdditionalLessonsView : BaseView { fun showDatePickerDialog(selectedDate: LocalDate) - fun showAddAdditionalLessonDialog() + fun showAddAdditionalLessonDialog(currentDate: LocalDate) fun showSuccessMessage() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddDialog.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddDialog.kt index 9a84fb0a2..9470c910f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddDialog.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddDialog.kt @@ -3,6 +3,7 @@ package io.github.wulkanowy.ui.modules.timetable.additional.add import android.app.Dialog import android.os.Bundle import android.view.View +import androidx.core.os.bundleOf import androidx.core.widget.doOnTextChanged import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.timepicker.MaterialTimePicker @@ -26,10 +27,12 @@ class AdditionalLessonAddDialog : BaseDialogFragment lateinit var presenter: AdditionalLessonAddPresenter companion object { - fun newInstance() = AdditionalLessonAddDialog() + const val ARGUMENT_KEY = "additional_lesson_default_date" + fun newInstance(defaultDate: LocalDate) = AdditionalLessonAddDialog().apply { + arguments = bundleOf(ARGUMENT_KEY to defaultDate.toEpochDay()) + } } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return MaterialAlertDialogBuilder(requireContext(), theme) .setView( @@ -40,10 +43,13 @@ class AdditionalLessonAddDialog : BaseDialogFragment override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + arguments?.getLong(ARGUMENT_KEY)?.let(LocalDate::ofEpochDay)?.let { + presenter.onDateSelected(it) + } presenter.onAttachView(this) } - override fun initView() { + override fun initView(selectedDate: LocalDate) { with(binding) { additionalLessonDialogStartEdit.doOnTextChanged { _, _, _, _ -> additionalLessonDialogStart.isErrorEnabled = false @@ -53,6 +59,7 @@ class AdditionalLessonAddDialog : BaseDialogFragment additionalLessonDialogEnd.isErrorEnabled = false additionalLessonDialogEnd.error = null } + additionalLessonDialogDateEdit.setText(selectedDate.toFormattedString()) additionalLessonDialogDateEdit.doOnTextChanged { _, _, _, _ -> additionalLessonDialogDate.isErrorEnabled = false additionalLessonDialogDate.error = null @@ -61,7 +68,6 @@ class AdditionalLessonAddDialog : BaseDialogFragment additionalLessonDialogContent.isErrorEnabled = false additionalLessonDialogContent.error = null } - additionalLessonDialogAdd.setOnClickListener { presenter.onAddAdditionalClicked( start = additionalLessonDialogStartEdit.text?.toString(), diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddPresenter.kt index c207165d3..db59a2ab5 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddPresenter.kt @@ -10,9 +10,12 @@ import io.github.wulkanowy.utils.lastSchoolDayInSchoolYear import io.github.wulkanowy.utils.toLocalDate import kotlinx.coroutines.launch import timber.log.Timber -import java.time.* +import java.time.LocalDate +import java.time.LocalTime +import java.time.ZoneId +import java.time.ZonedDateTime import java.time.temporal.ChronoUnit -import java.util.* +import java.util.UUID import javax.inject.Inject class AdditionalLessonAddPresenter @Inject constructor( @@ -30,7 +33,7 @@ class AdditionalLessonAddPresenter @Inject constructor( override fun onAttachView(view: AdditionalLessonAddView) { super.onAttachView(view) - view.initView() + view.initView(selectedDate) Timber.i("AdditionalLesson details view was initialized") } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddView.kt index 0df53815b..8d9678e7b 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/additional/add/AdditionalLessonAddView.kt @@ -6,7 +6,7 @@ import java.time.LocalTime interface AdditionalLessonAddView : BaseView { - fun initView() + fun initView(selectedDate: LocalDate) fun closeDialog() diff --git a/app/src/main/res/layout/item_timetable_main_additional.xml b/app/src/main/res/layout/item_timetable_main_additional.xml new file mode 100644 index 000000000..b3aa55d42 --- /dev/null +++ b/app/src/main/res/layout/item_timetable_main_additional.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/preferences_defaults.xml b/app/src/main/res/values/preferences_defaults.xml index 2981e1845..2177b25f0 100644 --- a/app/src/main/res/values/preferences_defaults.xml +++ b/app/src/main/res/values/preferences_defaults.xml @@ -22,7 +22,8 @@ 0.33 0.33 true - false + true + below no alphabetic between diff --git a/app/src/main/res/values/preferences_keys.xml b/app/src/main/res/values/preferences_keys.xml index e87e9854a..ce8773081 100644 --- a/app/src/main/res/values/preferences_keys.xml +++ b/app/src/main/res/values/preferences_keys.xml @@ -31,6 +31,7 @@ grade_sorting_mode show_whole_class_plan show_groups_in_plan + show_additional_lessons timetable_show_gaps subjects_without_grades optional_arithmetic_average diff --git a/app/src/main/res/values/preferences_values.xml b/app/src/main/res/values/preferences_values.xml index b588ea5e1..e5020b533 100644 --- a/app/src/main/res/values/preferences_values.xml +++ b/app/src/main/res/values/preferences_values.xml @@ -152,6 +152,17 @@ before_and_between
+ + Don\'t show + Show inline + Show below regular lessons + + + none + inline + below + + Lucky number Unread messages diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8e159ec6..8c3825b4d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -195,6 +195,7 @@ Lesson + Additional lesson Room Group Hours @@ -731,6 +732,7 @@ Theme Grades expanding Show groups next to subjects + Show additional lessons Show empty tiles where there\'s no lesson Show chart list in class grades Show subjects without grades diff --git a/app/src/main/res/xml/scheme_preferences_appearance.xml b/app/src/main/res/xml/scheme_preferences_appearance.xml index 1ca4d2048..55f425d99 100644 --- a/app/src/main/res/xml/scheme_preferences_appearance.xml +++ b/app/src/main/res/xml/scheme_preferences_appearance.xml @@ -88,19 +88,18 @@
+ app:key="@string/pref_key_attendance_calculator" + app:title="@string/pref_attendance_calculator_appearance_view"> + app:title="@string/pref_attendance_target" + app:updatesContinuously="true" /> + From e1a19be06c306e26c5dac744a883788dd937b979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 1 May 2024 12:29:41 +0200 Subject: [PATCH 25/40] New Crowdin updates (#2530) --- .../main/res/values-cs/preferences_values.xml | 5 ++ app/src/main/res/values-cs/strings.xml | 2 + .../main/res/values-de/preferences_values.xml | 5 ++ app/src/main/res/values-de/strings.xml | 74 ++++++++++--------- .../main/res/values-pl/preferences_values.xml | 5 ++ app/src/main/res/values-pl/strings.xml | 2 + .../main/res/values-ru/preferences_values.xml | 5 ++ app/src/main/res/values-ru/strings.xml | 2 + .../main/res/values-sk/preferences_values.xml | 5 ++ app/src/main/res/values-sk/strings.xml | 2 + .../main/res/values-uk/preferences_values.xml | 5 ++ app/src/main/res/values-uk/strings.xml | 6 +- 12 files changed, 80 insertions(+), 38 deletions(-) diff --git a/app/src/main/res/values-cs/preferences_values.xml b/app/src/main/res/values-cs/preferences_values.xml index 5e488e40c..c9b2258fc 100644 --- a/app/src/main/res/values-cs/preferences_values.xml +++ b/app/src/main/res/values-cs/preferences_values.xml @@ -56,6 +56,11 @@ Pouze mezi lekcemi Před a mezi lekcemi + + Nezobrazovat + Zobrazit v řadě + Zobrazit pod pravidelnými hodinami + Šťastné číslo Nepřečtené zprávy diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 7dfab1872..fe1da1b85 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -198,6 +198,7 @@ Lekce + Další lekce Učebna Skupina Hodiny @@ -747,6 +748,7 @@ Motiv Rozvíjení známek Zobrazit skupiny vedle předmětů + Zobrazit další lekce Zobrazit prázdné dlaždice, kde není žádná lekce Zobrazit seznam grafů v známkách třídy Zobrazit předměty bez známek diff --git a/app/src/main/res/values-de/preferences_values.xml b/app/src/main/res/values-de/preferences_values.xml index 7130cdd47..23828b030 100644 --- a/app/src/main/res/values-de/preferences_values.xml +++ b/app/src/main/res/values-de/preferences_values.xml @@ -56,6 +56,11 @@ Only between lessons Before and between lessons + + Nicht zeigen + Inline anzeigen + Unterhalb der regulären Lektionen anzeigen + Glückszahl Ungelesene Nachrichten diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 4945d13ce..7ccae51ae 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -180,6 +180,7 @@ Lektion + Zusätzliche Lektion Klassenzimmer Gruppe Stunden @@ -198,8 +199,8 @@ Wechsel des Lehrers von %1$s zu %2$s Thema von %1$s zu %2$s wechseln - No lesson - No lessons + Keine Lektion + Keine Lektionen Änderung des Zeitplans @@ -244,9 +245,9 @@ Anwesenheitsrechner %1$d Über Ziel direkt am ziel - %1$d under target - %1$d/%2$d presences - No attendances recorded + %1$d Unter Ziel + %1$d/%2$d Präsenzen + Keine Anwesenheit verzeichnet Aus schulischen Gründen abwesend Entschuldigte Abwesenheit Unentschuldigtes Abwesenheit @@ -306,10 +307,10 @@ Weiterleiten Alle auswählen Alle abwählen - Restore from trash + Wiederherstellen aus dem Papierkorb In Papierkorb verschieben Dauerhaft löschen - Message restored successfully + Nachricht erfolgreich wiederhergestellt Nachricht erfolgreich gelöscht schüler Eltern @@ -347,10 +348,10 @@ %1$d ausgewählt Nachrichten gelöscht - Messages restored + Wiederhergestellte Nachrichten Postfach auswählen - Incognito mode is on - Thanks to incognito mode sender is not notified when you read the message + Inkognito-Modus ist aktiviert + Dank des Inkognito-Modus wird der Absender nicht benachrichtigt, wenn Sie die Nachricht lesen Keine Informationen über Eintragen Punkte @@ -647,13 +648,14 @@ Berechnete Durchschnittsoptionen Mittelwertberechnung durch App erzwingen Anwesendheit zeigen - Attendance target - Show subjects without any attendances - Attendance calculator sorting + Anwesenheitsziel + Lektion ohne Anwesenheit anzeigen + Anwesenheitsrechner Sortierung Thema Steigende Sorten Gruppen neben Schulfächen anzeigen - Show empty tiles where there\'s no lesson + Zusätzliche Lektionen anzeigen + Leere Kacheln anzeigen, wenn es keinen Lektionen gibt Liste der Diagramme in Klassenbewertungen anzeigen Schulfächer ohne Noten anzeigen Farbschema der Noten @@ -694,12 +696,12 @@ Wert des Minus Antwort mit Nachrichtenhistorie Arithmetisches Mittel anzeigen, wenn keine Gewichte angegeben sind - Incognito mode - Do not inform about reading the message + Inkognito-Modus + Nicht über das Lesen der Nachricht informieren Unterstützung Datenschutz-Bestimmungen Vereinbarungen - Show consent to data processing + Einwilligung zur Datenverarbeitung zeigen Anzeigen in der App anzeigen Einzelanzeige ansehen, um Projekt zu unterstützen Einwilligung in die Datenverarbeitung @@ -717,8 +719,8 @@ Dashboard Sichtbarkeit der Kacheln Schulbesuch - Attendance calculator - Settings + Anwesenheits-Rechner + Einstellungen Stundenplan Noten Berechneter Durchschnitt @@ -764,37 +766,37 @@ Die Anwendung muss neu gestartet werden, damit die Änderungen gespeichert werden Restart - Authorization has been rejected. The data provided does not match the records in the secretary\'s office. - Invalid PESEL + Die Autorisierung wurde abgelehnt. Die vorgelegten Daten stimmen nicht mit denen des Sekretariats überein. + Ungültig PESEL PESEL - Authorize - Authorization completed successfully - Authorization - Dear Parent,

To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student %1$s. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.

After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.

We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.

We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system.
- Skip for now + Autorisieren Sie + Autorisierung erfolgreich abgeschlossen + Autorisierung + Liebes Elternteil,

Um die Sicherheit der Daten zu gewährleisten, bitten wir Sie, die PESEL-Nummer des Schülers/der Schülerin anzugeben%1$sDiese Angaben sind für die ordnungsgemäße Zuweisung des Zugriffs und den Schutz der personenbezogenen Daten gemäß den geltenden Vorschriften unerlässlich.

Nach der Eingabe der Daten werden diese überprüft, um sicherzustellen, dass nur berechtigte Personen Zugang zum VULCAN-System erhalten. Wenn Sie Zweifel oder Probleme haben, wenden Sie sich bitte an den Administrator des Schülerkalenders, um die Situation zu klären.

Wir halten die höchsten Standards für den Schutz personenbezogener Daten ein und gewährleisten, dass alle bereitgestellten Informationen sicher sind. Die Wulkanowy-App speichert und verarbeitet die PESEL-Nummer nicht.

Wir erinnern Sie daran, dass die Angabe vollständiger und korrekter Daten obligatorisch und notwendig für die Nutzung des VULCAN-Systems ist.
+ Vorerst überspringen - VULCAN\'s website requires verification - Why am I seeing this?\nThe register website from which Wulkanowy downloads data displays the same screen as above, so Wulkanowy must also show it to be able to download data from this website. There\'s no way around it - Verified successfully + VULCAN\'s Website erfordert Überprüfung + Warum sehe ich das?\nDie Website des Registers, von der Wulkanowy Daten herunterlädt, zeigt denselben Bildschirm wie oben an, so dass Wulkanowy ihn ebenfalls anzeigen muss, um Daten von dieser Website herunterladen zu können. Es gibt keinen Ausweg + Erfolgreich verifiziert Keine Internetverbindung Es ist ein Fehler aufgetreten. Überprüfen Sie Ihre Geräteuhr - This account is inactive. Try logging in again + Dieses Konto ist inaktiv. Versuchen Sie, sich erneut anzumelden Registrierungsverbindung fehlgeschlagen. Server können überlastet sein. Bitte versuchen Sie es später noch einmal Das Laden der Daten ist fehlgeschlagen. Bitte versuchen Sie es später noch einmal - Your password has expired or been changed. Please log in again + Ihr Passwort ist abgelaufen oder wurde geändert. Bitte melden Sie sich erneut an Passwortänderung für Registrierung erforderlich Wartung im Gange UONET + Klassenbuch. Versuchen Sie es später noch einmal Unbekannter UONET + Registerfehler. Versuchen Sie es später erneut Unbekannter Anwendungsfehler. Bitte versuchen Sie es später noch einmal - Captcha verification required + Captcha-Verifizierung erforderlich Ein unerwarteter Fehler ist aufgetreten Funktion, die von Ihrer Schule deaktiviert wurde Feature in diesem Modus nicht verfügbar Dieses Feld ist erforderlich - Mute - Unmute - You have muted this user - You have unmuted this user + Stumm + Stummschaltung aufheben + Sie haben diesen Benutzer stummgeschaltet + Sie haben die Stummschaltung dieses Benutzers aufgehoben
diff --git a/app/src/main/res/values-pl/preferences_values.xml b/app/src/main/res/values-pl/preferences_values.xml index 4df60b51f..8eafa1cb4 100644 --- a/app/src/main/res/values-pl/preferences_values.xml +++ b/app/src/main/res/values-pl/preferences_values.xml @@ -56,6 +56,11 @@ Tylko między lekcjami Przed i między lekcjami + + Nie pokazuj + Pokaż razem + Pokaż poniżej zwykłych lekcji + Szczęśliwy numerek Nieprzeczytane wiadomości diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 212e442b9..acb1e601a 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -198,6 +198,7 @@ Lekcja + Dodatkowa lekcja Sala Grupa Godziny @@ -747,6 +748,7 @@ Motyw Rozwijanie ocen Pokazuj grupę obok przedmiotu + Pokaż dodatkowe lekcje Pokazuj puste kafelki gdzie nie ma lekcji Pokazuj listę wykresów w ocenach klasy Pokazuj przedmioty bez ocen diff --git a/app/src/main/res/values-ru/preferences_values.xml b/app/src/main/res/values-ru/preferences_values.xml index 8d4bd8d7b..6c7a74aea 100644 --- a/app/src/main/res/values-ru/preferences_values.xml +++ b/app/src/main/res/values-ru/preferences_values.xml @@ -56,6 +56,11 @@ Only between lessons Before and between lessons + + Don\'t show + Show inline + Show below regular lessons + Счастливый номер Непрочитанные письма diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 87b458adc..3236b70a3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -198,6 +198,7 @@ Урок + Additional lesson Аудитория Группа Часы @@ -747,6 +748,7 @@ Тема Разворачивание оценок Показать группы рядом с темами + Show additional lessons Show empty tiles where there\'s no lesson Показывать диаграммы в оценках класса Показать предметы без оценок diff --git a/app/src/main/res/values-sk/preferences_values.xml b/app/src/main/res/values-sk/preferences_values.xml index d78dd92da..b19caae7a 100644 --- a/app/src/main/res/values-sk/preferences_values.xml +++ b/app/src/main/res/values-sk/preferences_values.xml @@ -56,6 +56,11 @@ Iba medzi lekciami Pred a medzi lekciami + + Don\'t show + Show inline + Show below regular lessons + Šťastné číslo Neprečítané správy diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 9f145efac..4ce141234 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -198,6 +198,7 @@ Lekcia + Ďalšia lekcia Učebňa Skupina Hodiny @@ -747,6 +748,7 @@ Motív Rozvijanie známok Zobraziť skupiny vedľa predmetov + Zobraziť ďalšie lekcie Zobraziť prázdne dlaždice, kde nie je žiadne lekcie Zobraziť zoznam grafov v známkach triedy Zobraziť predmety bez známok diff --git a/app/src/main/res/values-uk/preferences_values.xml b/app/src/main/res/values-uk/preferences_values.xml index c32eedb96..72abe1f70 100644 --- a/app/src/main/res/values-uk/preferences_values.xml +++ b/app/src/main/res/values-uk/preferences_values.xml @@ -56,6 +56,11 @@ Тільки між уроками Перед і між уроками + + Не показувати + Показати у рядку + Показати нижче стандартних уроків + Щасливий номер Непрочитані листи diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f48732c3c..559ed753d 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -198,6 +198,7 @@ Урок + Додатковий урок Аудиторія Група Години @@ -747,6 +748,7 @@ Тема Розгортання оцінок Показувати групи поруч з темами + Показати додаткові уроки Показувати порожні плитки там, де немає уроків Показувати діаграми в оцінках класу Показати предмети без оцінок @@ -811,8 +813,8 @@ Головна Видимість плиток Відвідуваність - Attendance calculator - Settings + Калькулятор відвідуваності + Налаштування Розклад Оцінки Розрахована середня оцінка From 71ab9586acbcb2e7efa36c7fed54231c714ad4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 1 May 2024 16:57:31 +0200 Subject: [PATCH 26/40] Add admin message to LoginStudentSelect and LoginSymbol (#2531) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Mikołaj Pich --- .../data/db/entities/AdminMessage.kt | 4 ++ .../wulkanowy/data/enums/MessageType.kt | 2 + .../SafeMessageTypeEnumListSerializer.kt | 27 ++++++++++++++ .../LoginStudentSelectFragment.kt | 15 ++++++++ .../LoginStudentSelectPresenter.kt | 35 +++++++++++++++++- .../studentselect/LoginStudentSelectView.kt | 5 +++ .../login/symbol/LoginSymbolFragment.kt | 16 ++++++++ .../login/symbol/LoginSymbolPresenter.kt | 37 ++++++++++++++++++- .../modules/login/symbol/LoginSymbolView.kt | 5 +++ .../layout/fragment_login_student_select.xml | 14 ++++++- .../main/res/layout/fragment_login_symbol.xml | 14 ++++++- .../LoginStudentSelectPresenterTest.kt | 10 +++++ 12 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/io/github/wulkanowy/data/serializers/SafeMessageTypeEnumListSerializer.kt diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/AdminMessage.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/AdminMessage.kt index 0c8f1a5d1..a8604c5c1 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/AdminMessage.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/AdminMessage.kt @@ -4,6 +4,8 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey import io.github.wulkanowy.data.enums.MessageType +import io.github.wulkanowy.data.serializers.SafeMessageTypeEnumListSerializer +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable @@ -34,6 +36,8 @@ data class AdminMessage( val priority: String, + @SerialName("messageTypes") + @Serializable(with = SafeMessageTypeEnumListSerializer::class) @ColumnInfo(name = "types", defaultValue = "[]") val types: List = emptyList(), diff --git a/app/src/main/java/io/github/wulkanowy/data/enums/MessageType.kt b/app/src/main/java/io/github/wulkanowy/data/enums/MessageType.kt index 531684e4e..ecd8d916f 100644 --- a/app/src/main/java/io/github/wulkanowy/data/enums/MessageType.kt +++ b/app/src/main/java/io/github/wulkanowy/data/enums/MessageType.kt @@ -4,6 +4,8 @@ enum class MessageType { GENERAL_MESSAGE, DASHBOARD_MESSAGE, LOGIN_MESSAGE, + LOGIN_STUDENT_SELECT_MESSAGE, + LOGIN_SYMBOL_MESSAGE, PASS_RESET_MESSAGE, ERROR_OVERRIDE, } diff --git a/app/src/main/java/io/github/wulkanowy/data/serializers/SafeMessageTypeEnumListSerializer.kt b/app/src/main/java/io/github/wulkanowy/data/serializers/SafeMessageTypeEnumListSerializer.kt new file mode 100644 index 000000000..a95eab807 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/data/serializers/SafeMessageTypeEnumListSerializer.kt @@ -0,0 +1,27 @@ +package io.github.wulkanowy.data.serializers + +import io.github.wulkanowy.data.enums.MessageType +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +@OptIn(ExperimentalSerializationApi::class) +object SafeMessageTypeEnumListSerializer : KSerializer> { + + private val serializer = ListSerializer(String.serializer()) + + override val descriptor = serializer.descriptor + + override fun serialize(encoder: Encoder, value: List) { + encoder.encodeNotNullMark() + serializer.serialize(encoder, value.map { it.name }) + } + + override fun deserialize(decoder: Decoder): List = + serializer.deserialize(decoder).mapNotNull { enumName -> + MessageType.entries.find { it.name == enumName } + } +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectFragment.kt index 0fe36aa99..4eb602658 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectFragment.kt @@ -6,10 +6,12 @@ import androidx.core.os.bundleOf import androidx.core.view.isVisible import dagger.hilt.android.AndroidEntryPoint import io.github.wulkanowy.R +import io.github.wulkanowy.data.db.entities.AdminMessage import io.github.wulkanowy.data.pojos.RegisterUser import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.databinding.FragmentLoginStudentSelectBinding import io.github.wulkanowy.ui.base.BaseFragment +import io.github.wulkanowy.ui.modules.dashboard.viewholders.AdminMessageViewHolder import io.github.wulkanowy.ui.modules.login.LoginActivity import io.github.wulkanowy.ui.modules.login.LoginData import io.github.wulkanowy.ui.modules.login.support.LoginSupportDialog @@ -111,6 +113,19 @@ class LoginStudentSelectFragment : LoginSupportDialog.newInstance(supportInfo).show(childFragmentManager, "support_dialog") } + override fun showAdminMessage(adminMessage: AdminMessage?) { + AdminMessageViewHolder( + binding = binding.loginStudentSelectAdminMessage, + onAdminMessageDismissClickListener = presenter::onAdminMessageDismissed, + onAdminMessageClickListener = presenter::onAdminMessageSelected, + ).bind(adminMessage) + binding.loginStudentSelectAdminMessage.root.isVisible = adminMessage != null + } + + override fun openInternetBrowser(url: String) { + requireContext().openInternetBrowser(url) + } + override fun onDestroyView() { presenter.onDetachView() super.onDestroyView() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt index c81d353d4..39070cf0a 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectPresenter.kt @@ -2,16 +2,23 @@ package io.github.wulkanowy.ui.modules.login.studentselect import io.github.wulkanowy.data.Resource import io.github.wulkanowy.data.dataOrNull +import io.github.wulkanowy.data.db.entities.AdminMessage import io.github.wulkanowy.data.db.entities.StudentWithSemesters +import io.github.wulkanowy.data.enums.MessageType +import io.github.wulkanowy.data.flatResourceFlow import io.github.wulkanowy.data.logResourceStatus import io.github.wulkanowy.data.mappers.mapToStudentWithSemesters +import io.github.wulkanowy.data.onResourceData +import io.github.wulkanowy.data.onResourceError import io.github.wulkanowy.data.pojos.RegisterStudent import io.github.wulkanowy.data.pojos.RegisterSymbol import io.github.wulkanowy.data.pojos.RegisterUnit import io.github.wulkanowy.data.pojos.RegisterUser +import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.data.repositories.SchoolsRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.data.resourceFlow +import io.github.wulkanowy.domain.adminmessage.GetAppropriateAdminMessageUseCase import io.github.wulkanowy.sdk.scrapper.exception.StudentGraduateException import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException import io.github.wulkanowy.services.sync.SyncManager @@ -33,6 +40,8 @@ class LoginStudentSelectPresenter @Inject constructor( private val syncManager: SyncManager, private val analytics: AnalyticsHelper, private val appInfo: AppInfo, + private val preferencesRepository: PreferencesRepository, + private val getAppropriateAdminMessageUseCase: GetAppropriateAdminMessageUseCase ) : BasePresenter(loginErrorHandler, studentRepository) { private var lastError: Throwable? = null @@ -65,6 +74,7 @@ class LoginStudentSelectPresenter @Inject constructor( this.loginData = loginData this.registerUser = registerUser loadData() + loadAdminMessage() } private fun loadData() { @@ -88,7 +98,20 @@ class LoginStudentSelectPresenter @Inject constructor( refreshItems() } } - }.launch() + }.launch("load_data") + } + + private fun loadAdminMessage() { + flatResourceFlow { + getAppropriateAdminMessageUseCase( + scrapperBaseUrl = registerUser.scrapperBaseUrl.orEmpty(), + type = MessageType.LOGIN_STUDENT_SELECT_MESSAGE, + ) + } + .logResourceStatus("load login admin message") + .onResourceData { view?.showAdminMessage(it) } + .onResourceError { view?.showAdminMessage(null) } + .launch("load_admin_message") } private fun getStudentsWithCurrentlyActiveSemesters(): List { @@ -341,4 +364,14 @@ class LoginStudentSelectPresenter @Inject constructor( ) } } + + fun onAdminMessageSelected(url: String?) { + url?.let { view?.openInternetBrowser(it) } + } + + fun onAdminMessageDismissed(adminMessage: AdminMessage) { + preferencesRepository.dismissedAdminMessageIds += adminMessage.id + + view?.showAdminMessage(null) + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectView.kt index b69700f17..4d0ef9e92 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectView.kt @@ -1,5 +1,6 @@ package io.github.wulkanowy.ui.modules.login.studentselect +import io.github.wulkanowy.data.db.entities.AdminMessage import io.github.wulkanowy.ui.base.BaseView import io.github.wulkanowy.ui.modules.login.LoginData import io.github.wulkanowy.ui.modules.login.support.LoginSupportInfo @@ -25,4 +26,8 @@ interface LoginStudentSelectView : BaseView { fun openDiscordInvite() fun openEmail(supportInfo: LoginSupportInfo) + + fun showAdminMessage(adminMessage: AdminMessage?) + + fun openInternetBrowser(url: String) } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolFragment.kt index 23ebffe9d..a813e7c00 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolFragment.kt @@ -9,13 +9,16 @@ import android.view.inputmethod.EditorInfo.IME_NULL import android.widget.ArrayAdapter import androidx.core.os.bundleOf import androidx.core.text.parseAsHtml +import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged import dagger.hilt.android.AndroidEntryPoint import io.github.wulkanowy.R +import io.github.wulkanowy.data.db.entities.AdminMessage import io.github.wulkanowy.data.pojos.RegisterUser import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.databinding.FragmentLoginSymbolBinding import io.github.wulkanowy.ui.base.BaseFragment +import io.github.wulkanowy.ui.modules.dashboard.viewholders.AdminMessageViewHolder import io.github.wulkanowy.ui.modules.login.LoginActivity import io.github.wulkanowy.ui.modules.login.LoginData import io.github.wulkanowy.ui.modules.login.support.LoginSupportDialog @@ -179,4 +182,17 @@ class LoginSymbolFragment : override fun openSupportDialog(supportInfo: LoginSupportInfo) { LoginSupportDialog.newInstance(supportInfo).show(childFragmentManager, "support_dialog") } + + override fun showAdminMessage(adminMessage: AdminMessage?) { + AdminMessageViewHolder( + binding = binding.loginSymbolAdminMessage, + onAdminMessageDismissClickListener = presenter::onAdminMessageDismissed, + onAdminMessageClickListener = presenter::onAdminMessageSelected, + ).bind(adminMessage) + binding.loginSymbolAdminMessage.root.isVisible = adminMessage != null + } + + override fun openInternetBrowser(url: String) { + requireContext().openInternetBrowser(url) + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolPresenter.kt index 5c31f14d4..8de2994a7 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolPresenter.kt @@ -2,10 +2,18 @@ package io.github.wulkanowy.ui.modules.login.symbol import io.github.wulkanowy.data.Resource import io.github.wulkanowy.data.dataOrNull +import io.github.wulkanowy.data.db.entities.AdminMessage +import io.github.wulkanowy.data.enums.MessageType +import io.github.wulkanowy.data.flatResourceFlow +import io.github.wulkanowy.data.logResourceStatus +import io.github.wulkanowy.data.onResourceData +import io.github.wulkanowy.data.onResourceError import io.github.wulkanowy.data.onResourceNotLoading import io.github.wulkanowy.data.pojos.RegisterUser +import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.data.resourceFlow +import io.github.wulkanowy.domain.adminmessage.GetAppropriateAdminMessageUseCase import io.github.wulkanowy.sdk.scrapper.getNormalizedSymbol import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException import io.github.wulkanowy.ui.base.BasePresenter @@ -21,7 +29,9 @@ import javax.inject.Inject class LoginSymbolPresenter @Inject constructor( studentRepository: StudentRepository, private val loginErrorHandler: LoginErrorHandler, - private val analytics: AnalyticsHelper + private val analytics: AnalyticsHelper, + private val preferencesRepository: PreferencesRepository, + private val getAppropriateAdminMessageUseCase: GetAppropriateAdminMessageUseCase, ) : BasePresenter(loginErrorHandler, studentRepository) { private var lastError: Throwable? = null @@ -43,6 +53,21 @@ class LoginSymbolPresenter @Inject constructor( clearAndFocusSymbol() showSoftKeyboard() } + + loadAdminMessage() + } + + private fun loadAdminMessage() { + flatResourceFlow { + getAppropriateAdminMessageUseCase( + scrapperBaseUrl = loginData.baseUrl, + type = MessageType.LOGIN_SYMBOL_MESSAGE, + ) + } + .logResourceStatus("load login admin message") + .onResourceData { view?.showAdminMessage(it) } + .onResourceError { view?.showAdminMessage(null) } + .launch("load_admin_message") } fun onSymbolTextChanged() { @@ -166,4 +191,14 @@ class LoginSymbolPresenter @Inject constructor( ) ) } + + fun onAdminMessageSelected(url: String?) { + url?.let { view?.openInternetBrowser(it) } + } + + fun onAdminMessageDismissed(adminMessage: AdminMessage) { + preferencesRepository.dismissedAdminMessageIds += adminMessage.id + + view?.showAdminMessage(null) + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolView.kt index ace12f780..2fc910242 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/symbol/LoginSymbolView.kt @@ -1,5 +1,6 @@ package io.github.wulkanowy.ui.modules.login.symbol +import io.github.wulkanowy.data.db.entities.AdminMessage import io.github.wulkanowy.data.pojos.RegisterUser import io.github.wulkanowy.ui.base.BaseView import io.github.wulkanowy.ui.modules.login.LoginData @@ -44,4 +45,8 @@ interface LoginSymbolView : BaseView { fun openFaqPage() fun openSupportDialog(supportInfo: LoginSupportInfo) + + fun showAdminMessage(adminMessage: AdminMessage?) + + fun openInternetBrowser(url: String) } diff --git a/app/src/main/res/layout/fragment_login_student_select.xml b/app/src/main/res/layout/fragment_login_student_select.xml index 04c808857..6b603c9f0 100644 --- a/app/src/main/res/layout/fragment_login_student_select.xml +++ b/app/src/main/res/layout/fragment_login_student_select.xml @@ -11,6 +11,18 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + +
+ + Date: Wed, 1 May 2024 18:50:57 +0200 Subject: [PATCH 27/40] Update screenshots (#2533) --- .../play/listings/pl-PL/full-description.txt | 2 +- .../graphics/phone-screenshots/1-start.jpg | Bin 349651 -> 188563 bytes .../pl-PL/graphics/phone-screenshots/2.jpg | Bin 455924 -> 267623 bytes .../phone-screenshots/3-timetable-dialog.jpg | Bin 371438 -> 232165 bytes .../graphics/phone-screenshots/4-exams.jpg | Bin 276565 -> 175412 bytes .../phone-screenshots/5-timetable-widget.jpg | Bin 480600 -> 257241 bytes .../phone-screenshots/6-class-grades.jpg | Bin 354200 -> 208968 bytes .../phone-screenshots/7-account-switcher.jpg | Bin 300110 -> 193797 bytes .../graphics/phone-screenshots/8-themes.jpg | Bin 424342 -> 257099 bytes 9 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/play/listings/pl-PL/full-description.txt b/app/src/main/play/listings/pl-PL/full-description.txt index 7da51da2d..b0193b5d1 100644 --- a/app/src/main/play/listings/pl-PL/full-description.txt +++ b/app/src/main/play/listings/pl-PL/full-description.txt @@ -6,7 +6,7 @@ Wyróżnione cechy i funkcje: - szczęśliwy numerek, - podgląd lekcji dodatkowych i zrealizowanych, - ciemny motyw. -- brak reklam, +- opcjonalne reklam, - tryb offline, - powiadomienia. diff --git a/app/src/main/play/listings/pl-PL/graphics/phone-screenshots/1-start.jpg b/app/src/main/play/listings/pl-PL/graphics/phone-screenshots/1-start.jpg index 0ed20c04dccf9da83e1457c1eb57bec7bbe6a036..19b96d9a6a32df8ad4b497cf9c55e9b519f5e45b 100644 GIT binary patch literal 188563 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%0DOkpl3N7dlr#?K*;n?5g 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 VHs?< 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
  • -)KsU@mn8Ore zbVLd$K{t~Mdwqi*O9imo7I!|JHe;mR#9~?E>C15gfyy25%6K_aq^W8l)Y41FRrQnQ<;|^Srpnyssc`YC;r%?7_{x?IF~wvRuQ1S( zc)lxXe@3nAUdi3ptRXG=xl|#tN2w7+E&kSx9ScdA>m2$dnU3TO6gEUoFDE)^p6~}= zs;tY)B${N$MX-^8bkhy9zp=hK6DCy~#rslEqjQN!zKR8;+wOA&Dq!cNx z6mc85O1d)DId`}i(c#W?h@mw^mh%Ite!&>R&*I3Lk0W(SH~J9FeY~uJyWNr`R-~q< zJ{>#x2j~kLBs5ZiSH4d8$9y2Fbx*$w&fyFNEe*@YZ-KHC;2Zo4roVG zQV(7y3;sE%VGIi1U7>W_uJ?OaYkALt20#pYnVYKhJXT8VGds8W@fw9|SfWGtP>MXSJ8SN8{&?pa_BdH#{sipiZk{L;N7CD;0k9C91k zBK$w}-MVff^Fj>$HmYyBsTOT&#WSVprLPLQjAVUrMt|qD?fi@J*S}U_T88S9^0U&% zg^RB*fxOTEHc-F|&KLddV^yYTT58z()y%HPoxzJQh2x21`!J*EznRfsSXH5icp6Qz zGiT8$rDCii|GX4R;|nyMYc69lM2^NzD|=eCE(XH8m*7*Y!f-Qla&|a*m5?HI`a)4^ z@BHCer#Z8W9#UA`IjH{aA>7=XHVU=s81m`e_hIpsh5|DD&2WK>c--Z$#(uV?nuOZ_ zn3NbLYqYIhu{m$tgYRm`(6?F}tWWqvUN=j(z3|c-qu}(r!Z^jZ@d2k}`2g>kA#wn8 zi278yW@{MK4)sP^yt=(VYjLgYMuRI0{w8H?)lA~4BBQgQNjS>O~GrQPp9CLfSVmWzA&h5(#X zreP;!HAbH6R64-lJKVGag*pD<&@B8UJa-=EBMUteUB4}A5F)h@vP6@Ll-wMgRC$7? zziM?=NV61a_CK-gTR&GRcg7wkl^*x9 zV&WM{W12zC!#$uyj_n40GCy5I!mh2dJLCo%OASSzm%{#zy-)kj)AS2kwuNFsC_#gY zQ{XHU8J9mhPAOxMu9FK~er@p_dffCXLGCL@Tz>J!Q#FNF;C-s$e3SeP^~n}#ChtMF zBKg+>?gx!$YSqt*2&B3pupkIW$^E=jAo<>8H^=@#h%8yD)4Jkc%P)UGYO3BHD|!vL zP+g48*>6$(n!FZM4vb|^af>(2xZUBzk*c7aBYJ34^4Kff0x-4UU5=i}m}b7}8>l$jq6UzLW1-U<^DW_~YNJUqp@N!6P78HdB zB>(Oi6VvRgAze9LsUna?@sL|keva4obcYVG~$ z``1i>ROIA~>2nl5_aEIX+jr~TN!?r9x_5R4JHZ%S79%ZPZD@|C)H~jpgRcb)P1k&h zvb_}CA4NpvjbBp*V3b|1_01zBle^{>kI+|t4GQM%zB~U0l(WW{Y>w}`pqFMmIC41F zG+UWrC8(MXbv%z@H-`Lw=4QScS35WMWUB_}CfF_TX{gR&Rxg%pfb#VPlLt0&QS?~UuBKvwj`Xvj&4_N*d5X z03eN%2%~AiquBS3#BS*aa=RO+K6^#|FHe4;f6QEq)lqt1H?%zId7DH~-qmzRNGYCQ zE9nF=>~P2=L$t0iVgYKnC0mi-aVJf4^DoYYUC_(&jExKR{&hm95I#boPXQJ)F78<0 z8=`b|`5UuJ?0$&O?0E35*=tuJQfOtLSh=+-ux>Qsy0S%CVsS~E-DIg>wc~pHj^56A z;$*RNREip;sz1co;ldagkBf5iSJhyqhILAihIOT6gQ3HPaxw)X!zPiF*zRr(#8O=9 zmu^q79P^pYOhd~YSR4Z>*m~uq5fje8yNMAW3tvFD1+`+yvUd(25@@3|bh05FR{d(W z(&XF9J55@a@1C1uQyzS5legr}WsjpiL|oIW6{HH%!?0hB#7+dD2X|Ndl%A~H#A^bw z!|b#<7BEg=R=5RS=05=XtTP8n=T3N z63R%)VgVn_v}m;vW6U_EdE-sX#>Fc&#|+!b99-{sM`MmLVa9TN3q`z_;!ChGd^bF`ie~Y%i zZ@npdqX@FNnq3jt?(;0Rd-ZLD826g*?+rgCLRS-E7XtsFEoK8xOW%!32so^jX!R=G z0StlBCe48+6w8t%MB9clhfMiImC|AFv6=*p`m`JjE$;0;mVva(+ut%^RgDE?4DTK>FwW5du$PPaa!BpY3g zZTN|lfs(SXDD980g635g1Ge0FrhR0&Q2td=V~+|RUFoofaZ}6|Ejj8ibl`S8n|I~hS*}u1KQw++j+#2 zWetJhxS1!W9Fqs&8!?A=op^0m*R-OPIC2}J8^{P12=Ct1j1O`qD_K^pwHhsqmKv$^ zr;pIHtu%n0ZV4IC0=}sfuM~?|gUn9@um#DZqBF1j{~-;d)c-f7Vaqe3SZafA-9VJ5 zj7_QF;q|2YXHaL&a8#~B20w!j+2{Nif@-~TpwIz-$=E$l_*NKS_JKFIp~}|lMHMDw zVhb)_t~b{d)|siX=73wD>GZ8jD0(+ER6F#Zu2z_uy6Za+7|AYlS4#{bOzh&wB_;Dt z6wZY-(Jb3uDaF`WF~*PH0_mb2G6jL3F(bI6@$m4mq1#(Bd;3Z$PTE)%FPR7@}a-NVEBx zfR*{N3xC$%vFGhYwRRQE=+ZYy5aa)iy!Q-iGF|t@U2Dd1?1P9%bqy#;C`y+;GX_ve zV334R0w@Sb=n0{hH5P-*d-iz~pU1y)Y&${+H z`#Sr>{`AksC-9c%$$P)|bKk%6Bj8`rw&`m;Tc+FLPTjPAGzZ?|WEkItq#Rue7KdUe zn?Cclk+yB6QYm)OB@=DfFfG#EV7UVV*{k-Q8Hmh8B%BjdJD8@bu%7ENvus8kA;V62 z%NMCBp`~z#W!D}YU%}`U8wLX$fZIAf)(OE?3Nvty$?(BsNu^D}=@HH6v=i`b4xoeF zHI~iKgFCgjX+*Bw|9n;Nex5svbuNR<=|_H|v6_$>+7^Sn?vR(7AMlV#@p9`N_@e!W z?8OHGP1Qs!-kIr9nMp7DgP+7mAp0V4R_*+-7W(#urMGoYv$@_@@1lDB19~ zZKtKlvTEFW{%h!ME-1SvH%VJ8lA8)Z8%l#&l#$pa5IKJ6$CF5F!Qk#K;jvep+NApfwi;JUf0N&$}l>nX?;MW6Z z-KWj)q3YGR}GTWwEOMdf>=%T3WANVvXUGL^PhF5tEegt(d8WiJ*U zf7X`Y;7W@unmu?!jPt2{8c5yK*I<1T!8a+oq$>l=7iWR{^3IYA@kbnm0qv31sA4Sa zqF95oNo6rlCy0&wwH~rV!EEoXnzz%;}6iHQM2T&>*kNkC^;=Y7_*P`UeyVC20NDPo! z@S+Axfy{z|Wx1w}F>5a^owuqUHK{v+Z!mAmXMjdGn?<(FP-17E@2=jkh)7RG3Qa6m zMJ~nn$soeE*30;e54FiOX?AM|@g_5pd;Welba%@`2wnYbjbXncp*B9C1S!$8Q z^RQGf0IC&EqalzQeZ5YVM$5mKo9Q#6;?RPg?FN@N-{d|myoO-I=fH3y=W|8NS;Ksn z@Kqe?2fg9x2ou&3Zpfu*`}4fxS=|`k>cB{^Wq$Oe17GjX2x&(_6`4SU8)W@aIwQG2 zL6yVSNH_cB)Mp)%wwJsv73YxgJ~V53NOsOT1|Jn7x^vL*{&;E#_9%c;B`jXD3c*~X z7wj5>`!Z+-` z-KT?vh3`3`-Ufi!zbXq*?YGkvmRQablH1rPr8woSxwWJo$i?nNl?&TV*oC7C*?w(i4`eM|(UP!~vD zyVH;@8`Ek`eUl5d@^si^AtSTuc6e{qRVN&R%DRdQiL#wQZ5ss5EELVa+9Xb6k$<== zpi*?&d$MT`P+IF^6^iRWUifS~)S3vS8I?LA?i;?t)@q?mzu!jt$JAo|R=cgYD;XpA z6Y8XBBufC7!fJhP?z#!PKkafWdZ0PYu!V7L?ojt|`awB#v3QJe3u4p507^K*#1y;P zf$y+a(hF_wBWf5s9Eq31)9|RN_<^>F`#MO5R|pgJkS%OY-fH zTbQ?p=Iv3LH`64#k$i3Gqd|&tp8ZZ*&12}|5VvlWsN2xocmKZCV`5*E8wO_{b*U;{ zlWdh&Xwns^n#U7Y^Nq@oN%xS7Zx}B;@ghYIGrRLf8~VDd+^_6&&)kM4T8H365@$2z zujGq~mspx&Oq~QR&&g4thgNP^?+q?z67FS>eVRcTUfatwUD^J1Z&uv;hU;MJ(?=oB z36$+0FHME_xY(M;fOg1oC8NFr{k}9;b}8A^H#%wfkJ$#)_h@vhI5!2wbUR+Z^G5D@ zBm6l>^6?^4dz921^LO^&>)MJYP10rEqx%FY=h8pAR(j*OoR<^BePfSN4ygqE${nHq zhB6qWXWjyQm zG~Li9jMxGJwO!}@rhXZ)mFqxVWcJ%Cy(ML_szx5a#Eru{Ou_+{7pM5Gp|-B!L8=dABk1VnfnJYluKgo4V~A ze;%8R`}3I3jVp)xK>zoUss87&4WI#z1(ZMjLF4%tdnRlGisBx>&2qv`LZNYG%@wbH zhna|}3QQZ)U+3rcyPCUW8*J@Va-G+sv6BAgxcPZYhJ2Xdif5_AnfiAlXCa-m^pcKP zyi25@O*z-bPcX#LNA8*G;6ESPhV~3kPz)uZa}xOARL_U(YUJ zCqAf;GEi0aOJDYsQU-2T;T=lyYSVt^!+^N+_EL9TC&0RBCU(E7adW?=QUOOHMzih< z1;0gyE>LrMIkGcIG`RbtA`CW{*2aL%Suo$W6|iruEFN7oo>07ERN}I#@53I_yne_(E|vMs_PMwf6>1&?;yV{|fCea4=E3T$ zitUBK1Yrz@%y!lYNq8B0Uspox1FsoqSz+L|k<<{FAgpnamE+K>{A?{T0&}gibVQQS z*+xIy$5N=u@ufqHiHXy^uJ1BQ>#>jJOyr;~$mO#x1DDB><(b6FT}60+SnrL;J0OLv zg}L1*j8x$F<$+ENK9e@}&VAppLlXmi_l^AZoNOUsE;_AVF;(L}nFm`gpb|1x@XPU* z77YBtoPlj{Cfg7cnQ^M3IXyqxnW14T(c&g=Jb?MTdc^8C3rHPv*l5KtDbfBCb%$p+ zE83fOtbL@cCG+{*;V|h-X+9AJFn^gcZ3`{7R}6Uo{~xK$=LkKcf8!*sQkdob^ox5> zT2JH+u*_f`q^F4C!88doe}nm5yztdv3PXFsj5FN0kfpqO*@#UHZk}20+wqwf&|YlA zuQDswy(cAuvjTP)UHgQTu94VIQdLe+|6RC|{*5Q@uvF#~Ok}HZq1eNW|!UHJeweE{9hNbUu&wb|(f(SXaY!&33+{TuxfTOuX7| zhIsGn_wGA? z*R`{)Xeb}nm}YdveU3(`(}?OiG}-^1?=F&^l*;wA*Dg8RaZYi8FYP<@v;4mcWvG`qr;XwPdi~ zC_}T4q8;Bn;f2tWo-0^FuwZl|kDIE;iWxyk;ua>M8O5j5rH-kw1Yi(+e9Av`Jm;q## zt&WWx(%vTeo~+nW@Fg=~@09+oyET?=6LKICkZz{0vD0(#bNah{w@L1KfMm3{n!~xh zN#8qatGYdr(6rODRBU~38bhy3Z?SUJh^zxT>-$QbL1p**%x^2!6qwYsy)+Pi-9QVB<9*f%t7_r)&G2aTnhNp^Pd6egEF@*wP%u*H-nF89-VhV5 zoPWsoJqw4L|CAFy7C?Ohf~7M&?Q11f^PV@u+n;rbX|Z27dv1Do8DFz2z*-QZq&eQ9 z9P#ptys1$CPB;cojYI)xeyW0E&8;mVAPpTG#%TZZSn@u9&tG}lskg`QU7Km4a4LU9JeR|+*aF>MS z@Cys&s|`ct@HQ{HyHaHBN#m@7!wId9k_XEpRToDY1n)aE7bSOPs4vOXQ_f>TX5?xB zVA%?6r6+A;9^1ky~gD&z31Q;XLkT(JCk4Z+r9qOTbmA_2Xtqx>tu3*Q@C2yJE5^-aNhu~VmUNs zHM4!+rD?GIqQ}iObkWgu8pd^ZjHLnIb9Q-dUE8!XPUgr!R0au6bjI^3HjwzRvTpX>iR2gr8erT)EuYSKhZySD#KVK!{6k z+rah;?}k+Vzb2%@|05xV{Qol{rInr;{B+F3p4#fa140d6wKtV=nn8mKAzRDBQ8XnC zmG}aB5FE*a!DW>$L2`Zn_N5o}&+?C7MojEE^xl@BCn8Ta+*w#m>^=@v>%ut@g}%c@ zbT^br8)1hOzh z?Vcihp!PU*wq8NOGg3j}iZ6qf5r{DC&S*LNyz~j{65uHWm`73+6m+NCZW$|o^TV-Y zQqJc}cuw|lhQ0flLhsiGqU)-U3PXcawm~=0)M#9&GY8!-3@A6-@FOlWs2d8r} z^}ITdvjI6GoJ!)>ZG_>4-;U|gT!qUSFEg(DaWbeyDrx9nd&g1k?iym+ZG3W=LUgnF zE!w8VE54@OdSczLvkrj7`k{IaRYXw9+3dJkMK>?fy>_3EQWez;f2LB)?RlnQvr+t< zMH>GEJWQ2s$k*1M^_u)WJX%iv{Mi74Vi|w{18dHIbLY$KANx!Bu)Y=GE~enTB$HGu zswhtW(K4(kUI%alSN@O?)`P1H&>^!E)*<9lDS1Q^v)=vYfRI*6{c;7GJ4c?h zE$0KMEtM(x!c(r(%|-pESutD5J|OT=qq_8OAUV5jl&E=o3vrG2pA;eL)W-)EO{O2> z|F-DGJfHq@OwHZ}6Xw8ED5m~K@!g+v5m!PNvabbpIq5|bRoIBIx~U$Qo8vg2Hl`T8aY4ulXOhw4ArL7yRJITZJB~OgJ%_BWY%YnIp&Pg9y zS@9+xcJOgcmR(MWa`nY4v^2fdC2qI1#v1warHTQ9yTwfFNWjsETN2fy#_RIsceKA` zL##ELB$Z5gIy_Ng#L7MmhN^j0!jpa}2qzl7WtO~rBj^$5F49I5NHeBL4thxl7>n%j zhMxWLFzDj)Lw`GPs2#*kz9?Qz==t|!!^L49Aq)PUxt}NXAuG6sMX53+Q`m}9l{9;9mObP)V|rmZrQ=Ql?-Nc z7I!!&pS3aJ3ke~RPP>u<(FmERXu$c1Q-WAzDfOXw0EGjA>X6Tf+p6M}=ZB;}A z@VaFfkO#yhW)mMaf00e=17y>9>g2+(FxSdNf7a_fns))lmS&^A__haV{N+*)fqmEB zxxJ<-5PpaevhoTpWA@6KS>N-#N+PuBqEOIN45%(r8Stq77OTH(0>361I1{^buLa!h zpN?k1YhT_-Jgz=RxjwS4%LLz6$c67Kh7#r!Yi;${WoZ(~vAX9~a67(^owgv`H-ojs zH_RFs_4TF}rOU2&D}2~_crypR<@y2&huYEYsP}lZP#>JSotPL;tibeyAOi+! z(iRY!wt1JQq)^lwp;ufLh^1aPJ(Y*SK6-`3r*`H=7CW$IlJ(Qvl9j|yrhZi$9G>{U zCLC(;jh%V-Y3oa)@NSnjEWZxwRMBT;t2$3Yw5p{bxGQK{?ks>hVn$Ml;)ZLl=sHbe z7yG2aX38yp1D501UslQ%Pj3_GR+&UDf0#NlW+GwrDb4Izles|;nuFnjJ8aTY6YC$Y zRfMZSYkUjK0MHS*3?XVBRfj`fIpw)5sx}#65@^fm{hC@uv;}S(aUoAjcG>-g3tpAs zUF+pgjm*>dgID*wp$EL(XRgyt{hleO^0#AGP=<>m*xM-4R(fw&$9g-UVpyf}yuJ{& z5QC%S3|!-*d6LDWYzQP2;(N9XDi}9#54o`1RTgc7D(%4T7dz2m_2fdc&@-vBjos%@ zA}F?+^Fg5ne%uC8j10ZQto~H^=}xLSF@2HuihE2HEv6A4QP4NPEn@f zO`MEN|4wVEY)*O=Jl+@>@lI){w7oug%V-~{G+OGmrI@#YZoq!t(`26X4_;mtHr!rC zI_J?G&4)@{14elF%s+4?-sSGr&qhA@u=WmYv3w|)xSlg~NT!i41y$~_g>37ZZ6Ss3 z6fsXF+#}=^5PXo#=r4RPgD4)b9Uuah03~l9lL;y~AH2eqr_;XztEf!~1H#t#vS~gh z-Z5omo*noqq!-1KNx!eJ6f^J7+3}Cn0Nzd64?MI=zImv5i*pf~JRo@oDVCG;qX!|Ixc*PdI)n1oO^{&OD>pcgJzxH`n4!shZT{!ez z0};Zf^074z%ip<_RDozQSZ(&F;@P6Ad-f=8gHGw&7Ll3UpbD~l~@o?Mz_OI6%j#q8$xiq1kS)8h^Yh9LE6_5mLx(Eha!h&9W*q!_G z$O50gu$*?>LP}m0-}W4(!+(S%y^7D=uoD*xN+j8H#o6L>S}IL$WE~1SVdWL{@CB%m zKY3%)pNH`4fpk+IKIfv;e=G)Na%|lKB%Pka;e^WKjXKrwcinK;YC{?u@X==HeaXn`S{@EcFSpT#9E&YQQ1 zy0*kMO)X57PrhjG`BbVWV369#N+uUt-Ku1QSa2<%4I5U(yeR5YVAk0D+}K8Dl6OF1 z_ zBN>dBTt;{9PpuL$RATI&zPWRMBa5WaKg5Bv7js^e%n5*hIrh(H%U?$R)hB&7X!zip z)d0LwVm~YE6iOQBlsIA;iT3q4|xF!1Al zGeG}O_k6;i1;V1s;O ze+_NdY1d?V-U7lMHJiAQI5EvA6=#qV_+^f@y48ujJi~h~lpe{pD58I}m-=wz-3xb$ zKY65$Wf?`Pj&26nN(AB2MyHB^?#y#`)zo&OBgs!5UwK>7LQ6Xu%O(>54PuYGIV5R; zaYzCm8qv|%a!nQ_TKdoT@P8Z0)_b|%)^4;^W+dphM(9dJO{4!j_S5H!SAWmaEetD# z44+XO;Yv;0(9;{h5gp#$V2_D)!gm2md1%^8a$sNcDaR{d)_KRW36!!}6W`I3w%d zw-LOGd*u*}KKId4<}0;xxxe=cMv!`oUR7!~6ccgU*c8=jr0SBOS9(J#i6#{q0H0ge zdg1%sm-GEM@8-huop_g(J}3Ja|EL~Qe@_a~U_!kGi#DosgqVYY(;; zbq*Krao5)1K^)&SkKo{6O5>c<4Z#6?*{C_9$>VqLo&NqW?^pROZSt#-FpQ<0FzI-U z%}3|O+00uq!9^s4Yj?)l=E+);g*UVej5acvKiQprHPJMZQ~?3o1k@duG!dKz4ITPB z$eQZ{W+~!8wYJe$TF_iHO-XO3Ulh8iBHnDd^xff)URS01>z<en8;=@o7j-X7Aa!Lh8Lv2urNb^0*vwnS|h&i7}riRDJ{u3=|dKNf2dIqw=3fC`tzX%X$4T2ER@% zAAk`U)B{lL--*v$?4}J&uI-g> z@h8S-t~}A&NZEhxhMgs59SY0$TX)#ewj|2GytGFZT_iTD)7-D`QnCL`6TO*{8Vl-`^ATw!CV&% zS5x*tCDpInEA6^ng8#<5z)V)muxl@&Qr>?m&V-3|(>s7NFz8#-Y)INiC z7~xFh%f1O8lFKSDzkIn|Hh|Y$!|^UNPUFp!DjXiDKlqok`dfopXCSlXa~6Ki1?ErQm=o?2~S#;g%)m+Fy#f9>Sg9` zQAvHMTfU=5V>R%eK~d??J( z1!J6i;J41rV?o0f$EigF1fOYG<2tD*VZCDqMe&*`j7p>av|9(4f1;O*T%X> z$kV3AwJU$M*9#4q#-xU={EQOd@JA}|yH*090ftfYG&e)3ae46_EAIujSjLmg4Ubeg zdj06Ufy#QdH7^B>(W-lt6Bz1}@m?;ejX9|p8{Rh}zt!hmxd9rMNqbSH9k8@cVbpOn zOKieUu7CeTGxUy;c9|0`n#mfDyF03`lX3APDMFQ@)hZ*AEAo;qZQkla5*J7&kPi7% zb9%+((MF$^)HTp@k4Qt@OU*W+sSj=oTW($gchx|)IzqMgZ#<`W4RDg8N7}9zeF`N| zvAVtUiW75bAkd`4yLa6PvL}7k99GW+dD>NWImT`+mb5HvkP2cws|;M7Glx5TbMj70 z_dtBOCWj$-1BkHDs~BUqXNua~CNS!%LW@1IHJSI=(}b>td<#w7{G>oTi>xr+BV4)~ zFe4t2$gD@N$8MP&@8w;72fZBez9SF<_HivQ=}Kz|H7QEZQN)*}vxm z;{W`i9S>gnPbi5(4HvXV$l7Q(TPmg<{sUV?1aR=l)B>$kGH393?)NvAzdVR zaM()pAjJdfWw@APECc8iMXp%xc9ZKed4C@B()#>E;}JDRdlm8LF=9vhzG~fA{*m`T z{mGTTxySNMb9S$E&D}kcm{{)lTv=QrD<9z1_n0aQD_SAAQ=W`3IID%gbnYs@uA`xb;;A!G-r6GJrTEPk0>6?Mx3uDPLskXOG`=uU9-_$JlE`l zi=SUQ5sAcGqg%1tb?iO~F<8?(*^Y<+A5(nmc0RG|(+h0Hafa^}AyVBokm6B5yl&e; z#V6)+O2e8V4`WUkMD0J+st(W15_2c+$A&~0>|cVU7jzWraV|%#>G_hJhoRaguY20N z#pGSzhJQaI<*t+Zm2-K?CMzG|v~?~Gm$G4gHsnkZt=NyAVxdS#wdkWN{$895DrDVF za#T{-ss;*V1l>CZQ8U(T{`4O!jx!OsCI!JrPR=xz?U`dsQafiGBW+QWps}- z%2D1##BnV5ySui=Q`hp$mwZrF#YO{k@>4C>lv>L3C1KF`oH!bqZI36uLIqUiwuc#)5I=Qfeo6u^1NM#^63-Cp6{nZRLS`bls1J(mONO+- zwkpP?-Udj|!-qp+D5!8+pl)!_`)jvz2MIe2F(e>uq3rgx+po>#sKC*rkPXtwl9nrh zYW2uw*F?hOL~6)}VomVKldJAINSI3YC(wQQ;&oyZ^~yaE>d^oXQ;MYe@d+mvXhpLj zx)(P}fiei-%{a$|-9J|YA{SGNdLLGlxUq07s8H7&#*=PrxttwgtueR5GP+hB)sBhz z23NlQ>kl*j@R-{iLnpr-Ox@{>BVXIDwdOPLG)`@6(bX;UsNYF#_j!&Opfo&az1|s` z&Be>9(E@omp0#J7v2kB_hdY>GK<$1jr%vRFkslh71o?1bUa6AL&?3bY+o{ZPi`Hd* z&i3nb&Ageev)vgC*;gQN=~iy5Vl_^#IN!{d9Oo_AO$?~7kw>9n#I!pG$Ekb`@u_^? zP`$#fmbx@ImdwB$Xv=189^z>Nnsr#58qmU(bZm8Z6}qW4r^_AGgf7q}ba*;&t)2n9 z*5lywA@`e9C75^-5~$*C0nUcz=HDwR<@7r1;RI|50^t8QD;YpS8|I=h*b_0PEZ>zC z^!fKv5iK!4F>BVl+CO85jvgJ1c2)Wa$L3O|gIFWLL+O9>8Z@LM@QsZ$TRJ6*ldb^+ zbO>Ch(xEl9M1sdNOl0V`Mzeg4`WRJ#I)BfD;SCLsU~dB*n|t2F^5Rv9up*DzkG*}4 zelNFhlW0tKdLgc{namdKFDWA4k6lc!_e87(*U74g^3drOGEuLVj#^96UbBPqP($my zNbfr-%i1&0GwVS-b!|7LmBtJ?f@;3iDVo^svSma)h!PzUQ@wh%F1@^P+Qf}}kCa_J z-g`6J%(2B<)NNlIV!}C82q5)3U+cHidU@dSOOZh6-!_Xi3@<4)5bF%U2$Z#LZ&HhM z#RlI|K3^d2P22cs7@75c1J4^v)-@dA7#Gv5P5NY&qSFhu!EY|8M@Fd)_*TBDv2#?j z2S5t@Ll;1isBqr;ovl@{^+v`;IJ$_EFyPsf&^T1@L_OLEN}~X^{TWzo8@C?4d~NZi zbf-7a4D)F zKl&cQ#@J|k`fc}o+Ri$At3(zqCSK5FThJ(A+Ls#d7jl&Z^50Z>I|_U)7_3D(MG3h% zob(rX!~G#=*&Nt{z)JjZQqG0$ZGhS7d?||?D2(dBg!;6qWt6d}b^5jh( zLXHK$xUZnV1jI~UIPIBiZDmgAh9(VM5?NkVo8NFO9*FmeS|9LSac71akou8KSiLuX z>4`{;P6dK<(?sTGRn}C1`8yysgSQ%28pBp8F=A$?%H3`|`_hXlM~kn$rM=Dg*!^{h zy{U?HH3rE8v@&qGXF$%Stpkt(oOr`GdL;cJP;DSMt0d0e+?91nyzRXkG%6Ax;DRJS zoy_dfl9xi)E!^uIK#~TGxU=HnR73*hXs_mA551)o@BC9H$3sWh+DLQelfjnJ&0MF# zVKe2k9)j$H_?6pde=01L)zi(uBX^AaS zyL(n0(XQ!Q$pcFcTsmPsbNhAqQPJ#tLMn*+od~zz+si}1Z=0J#)y>Vpc-&=ocka4L zdpwJ74YVQ?5{UDIz#BXzKvKgNmB?WCDkgWVCL{V|cu*66j?swXV?nBmqKC8`>-|E6@* zI2UnQz#E{CP>S+Y;$e<1r!}YEb>;w?qtBLU-qeJ>Dj;gg_)=7{@VBF~jS;E?G2-AT zIH1aRD~>NCX&3kc(eFh4zNV!3uF2VZ+^b7HxI@-IvYP{0@5aRD2O6KejFobu{&#Z2 z|3`A8i_3@V@~t(sJbX?^ z8!cz?o*t1*OlBxR;UPb(@Y@tL&(n5TM_t)PIEwnGIgfVC-OT_SR$;)EzYzXBX6eX~ zj&G$cWf5fjF7P1fibZov4&$C^MRrb)SX&X(dU>lApYVa{Nb#iGAkRJg z;?12UzB#-D?DN*Pq>JceMUw#Gb^cUYv-}zAI<*~$k*+B8+4 z5&eOkKDXmhw;%X`+xf3|`jSbl?VrEqU#VG$%h7y1wDJa1Ya){9J3qZj(tuG&1FaB`tTyND3Sk{2W=R#=n_+b+`7)vyGe; ztlzm0&cmma^*Xm0*}VWtgJe`HRB1247yeV^ zsq=pG)H-Lug;{H6<#uHwtuW}QC-5Od+wDkauYS%w)c*HSHav(!ooxh zF_1Ji3ey~nyVM9r8CYt}lPlfyayL{;Q)mMC6{8ifz_glY5b+B*2{cax4Rl)gpW~$9&Rr3>b`L=O~)(o;k*$0n$@DQ>eHlNli3GyaijluMsRO`OE zb|nX;7|Af5Ree}_dk-$2*rA&D7vH%?@LJBk6By{Pl(ltxu z57%~+)wRv36#!eK{^64y z6uXTT@9wS5a$kMtB<`t}ii-p=p@@jMxYy0Ry9!BzJ0M-*B1(B=bB{FbuCj)T=r+S- znZMRWb0#$0CZUE+@{S}4n-GiASz?rgl~?Fu%)lt;Qapa$@@$L+>a9B#M@(R5v`&&N zsLHILe|bMSFA@9NrM7u!*mx@Ug&H@Nqzws587_QgNeSPRoJgQgRjzhdT_T#j@z)6& zr8z7bnP`;@bbfD6>{cbg5-mQnc%h@qa0kF$(k7R?SY1 z!RXj+&`33u2n(*0z;GMvBOPRGmGvEG7R$u8(L!}^D`D6f6?_$ysV+?K^^6j*a1;+b zMiQv+++6SFL+e(aLDW zG;#8G>{|JoyE$XC#&M}eo*~#=Was)lV;!Ljo1hdG((4{0E;ief_kA-TH zJDv1_w#NdMhr6J}qg)6|mp&H)0&s3haJV%mf}sImfFxE^uSQE{bDs_^VfWYcSNHkI zj*b<+bjMmwFDPNtY-X3v+Y! z*0+`8$w|j?xphjV1wCe_+{O9Sp#%cu7Pc#Q*HT0Ge6pPI&DdB2?x{_UfuECSS+8w> z6_a>pE6^WwV;EFQ4=jB*;rWc|wL91}-kX|l^X>X})p<*fF2;LZz)qM9T~3F^WaGm; z>XJKl1pU7xWE}oA?i0GUhy$NZdB&D}tLzwT22^>lT>Oa)fp7>7BAv$ev2@9Bp@-8;oTuzbh=s**( zeW~Z<;V{weW&<}NXZW~B>xf?DY0QPB`o_p(7n0f% zvQZDk8R1iyUrw0V zg=7j4Z2rFTomtF-O2l3BuOD+eeHH8}VmEV;OgbD6_o>pB1RBp17sBVkh^zMvG`si@ zZ6(k%XtJlRU8V=9Qv-okb0cDB)v;9vC!W@STI|%S(N{`+3qfa#5*D+C36qrau3JaZ zza4n~c*Y(&SY@YYm@{t$ZS4eG^CDyy6w``mOOV-^gtwtQ zHW%q!nA?SKNo{s+|Gi2xtQLQ<({2v$qRHdazpr;~(jBl0xvw?+VPWAx*l&yb0`ch& zz=XC5Wb05o@bXWhP)>xs%uS7zJwQFIfZma9c2FgX2ky^Fz*Dwh)5p*9-*$T_A?uC zmP!W0Tbs5B4NFzKTg#bk8_pTXB>i~@k{zGs=0E<&gQZWxj&-U&C?5}NQ7L4&8&V9q za&`Fe?>-;K`W@BcD~~2id&;Cx-u|`g$&jl|duoH$K~R%BGxg1)aL2SB?2||_PG8PC zhtrFnZDlIe*_VoOEz?uG3i%}w{eRH)o#|O3@k`T7BO%6HD`ec-V@l!6H_4VYdh4Zd zTL}OffJ^X`$&B_m`-u`V@coRMlDB~=X1c$RtAl_E+Feokjpr8pzu}AM4KL(Kl|MRO z`>9fu8|Bt9IP(aPVb55XTT>g&4=yQ#muK&siB&xxUw+G2$9Kf6#b8@+pmipqIU=X0 zg57Bcv6NO3B_<~Hnpu#H4HxJ6C5^IbB6Yo$fF=pb%BfZ_R&$kVdT{TZ!6JNOOllM% zX}Z0`(lh){)06^%Z7GGUoHwI+uj81GL=A*d#hy|`H$edqpH_cy>D?Wqo>R)$Z38)@2#;Nb#5U(m6Ep)Rc?DLt=xEss~6Y&t1uY-UZ7;33SVzr9fW>l=RMqe6a z&$g|9;43KK03((4F7Pru3gu8foXz~a%xiBd4?IOnwT5G(XF8nNC4DV;T|3PZ@Wx~b z1hTe?B6IeB^Vx0>!)oB)xL4v{GFka3Mug9-uP2`E`q`cowdbU_2d>Sv=jc+)Rk@vc2-% zp}UZHo60cs^~0VSa51>8C~!o8-(~1_1vm+!+>)EUjT4$s)2Fy_vC_Txz|h%Na-#qe zipi*ZWN7rq!<(<%%dLXZTejkFkv@eCMQb~g8ez+`Ab_PQ*cb<;z=;%5MF6ovcDio#O1_Vpgx~>8~vzCCO%x`}l z3&QMq$ZQ|kt^&Fx`bOG-w%cc;JR!1HvT#D(>g^D7=Y>-%+y z(e-_u)zlllL7P$K2)#Is*V!qO0Rmmip#*-Y(QZd~EYW8EKMV$>Ztzu>^E_7W=Dp5} zS~x0lIrn{-FLX(Xl;?8WGoQxOr&#*G@qPUQb`>>Wh??2tTtBeX5R0VsXyvpyYM*hr zEN!f2!Ls@Gv(fhj+m?T86xl1?6h}5CMe-2oE{f04|3w+w$-=vcg&u;efr8MBL z^NW0tJD>vlMZxtq?l+!j0m0jZ?G_kupPfC$u-+Wa(-AC1ik~PQI(KT+DgQKh4@Cjx zL7m$ASK*EJ^ikD}mH_Ng58rUu3C^rS+)GF|)nn6NDpRAe)}d@FH@GvyHJj90emWaR z=@bk^G_uU@8h!t?O}!__b2GqBn*-Nucf`AUl)q|h(Qv|&HB2fz<%wha{+72dSajYE z@PsT3OkN`EI*itC7oci+@HNGa5zRm`i57t+J!pZZ#gt0t#j_1}K@`R1?#o+?FDiWl z7WEP6B`0a++FJ|>DQX6B4aiZ}*(UGs$SC-?OY-u;2mxzkNrMq>bF;|Sg9F)>5zb$AN^O{hT*NSQL893`ypHCK%tT1uY;^lKK0Ih?GU)xI1#lW zqz(neHEH}dYE)j?9V}F&aYD}#_(3ziSMH}#+%6`JDsZK7GiU`*>197AJg*I7xF!*P zy02u*#@BZ9`R{|#6((&shG+KW5|Ocj`jm5+BRlp7?LUS6PBrcWq^4TvDAvam9-;^Hsw#t6*0RrAV?T zu{Ts>PR3hE85PvQb-Kf(@~jC;T?S$0K_PMjP2>vrI;H(=%$W=p7M3zYLUKKPr8hUT z6WeCn;gTBG+>^#DGLcQNVV0q@_RNq>nMi#JWa} z8f%QA5!;#x*kXx6#DY4}*uY*;!7?jVvBj>~CN>lVqXrcfofu2(QA8A5EU4If*PM6O zT6?d3&b80)?6a@UU+)F@^5XmOJoj_o-~028Z?}s{1}e;uji{-z?)JNE`v>b&T=*l$ zA8<2nB;!ug5!MsK=vX+CTk3{YZb?N>UPEADbj!aH#qs$;f22S-qk_ASBw8%!|IC1d ztF@R@=Eg<2Y+Nf0MPb9&;g+@@H`8Q3efM;}E44SV$ETo|!53=5f5j}f@j;o(*t3@L zoIuPhPV?6hjQ)Aqb>TRI*D|+bw3k3KwiqSD)(i0aqjVMdOAFYxG?ydkz1|2C$!=qqm)G?jx5p5U`)5G7s&qv>6-PX2P2dF49UT z7yE)sO4%7sfQDK_rU#4@`?Y!bH5AZMmo(dDB+yLYx&&ID-J~9WJ=3v3iF0+Q%(ZS* z`3BEap6u*d)z)2;mE@SflMF>qIzRjp;e$C z+_nbj1BP;uGO->+1me&CBSDU&o6i+|ab<@>R8FN-zXTEPALt)8?C6*EqTGl8=(0Zf zz)bfSr*vmYhNQp#k?H$?U<0Q&0paD}K<%q_;&Udp>bM2uS^^Fl_-P;TYl+~%mtqi% zW5^N+m)e>7SQ;MCe>Wduo)Og(L3i9>U5S3r$5)kMuO+iff{% zK3*uET3iuscI|+D8NMsIa`)+$Fi4U;KqmXk)!C>_WFicAc)7F9+%c8>-{)CZHx$_y0GzJ|mB7^m4> zslG$m*}YQGTMMcLsa|sOip#+GK}|A;CSK$ZTE(OG7Aiy_z7-Zt1j1+pW-9Fb+3FYF zBahY**;_i#0>))DJiA>4N@K(0ftrj;hD$&KReq9b$V_Y8N9Vj9C1GHf0yH=~d_vwVZcfnBEIv{z@{}HV7z_j}_wCCgZF|kn=JLa=oXHjqyjb-d`fX@oU(n{>$)9ZwV|AhIfh6 zVV}>9nv2}=6s~z=d#n;!i14ucb8K3DRsm{m%>|6@_e(#_V&>Ctq;|d+(+I}a9#r&o z&F+_Ih12}1hQ+^ollN&X8Xrj(4Z@Xf?iqjDC~u1Uau}puUYC=sd&OQQY*G9XaU<&w_Pzyy;r ze-(d9FTVozsb9*vpEn(SDa$rGnr&7)e@**q#Q~s`;*^l$#zUEwXj4B?Kb;7p=&4TZ zl;xiC-*lM$%Y>N%k_XMJQ4Qe_qdlcSPKr89R`USn!_GFW?K}R&$*Q)=-UP>Y)&34C z{$@Rm8SiOrq zzV>7)N52+KtmkZ{>jz8670^tATK!IM=lSRQx}fm97JY(EMuH2!+#*Xrm8VXCppLRB zj(+wX3lnXya;wI+S)SPO@JQED!{T^?sYQ9IW~e@O3+n!5_og8u)zmZy8P{j#o^{E( zNv-^7w)hLXNPS@~&#e`*fV*ajs0fLk=YtsJqB2i1p8SbAkziUm1#_oAv3Jkwuz+d@ z@oB9%v`Z42z<|8F7@uFV801)GCc&~oa{;V>;CkR1o&+|9etJzJ=wt5!ob2m#Fs+-Q zL2SB^fK87bkeItj-$XBk20T?lyyPIY4LAh1KK_f*pRQdV>KVu{9rOCV0s2z`MYU1W z*=Rsxuu;7rHz5&zT{cl96XVaYP}xXgq`7>U&i8T1kxg)H7JlPZJ+x|Iujy?MVMS3T zoC1d=9ry|(QURw&?r8a)p6PR6mmIHQN%f{fMux-79dpSr!!oP3hLUWmSqYxi{<$bw z+-mhIJwNd4K>Zz*^2$xI3F(}m@>p{*?a+g-tYrpLiz){NY7?Em7M+ zqwLwf8ij+mRh~N{O7QVD_tOlY-regh{s&t}Dq_1^j4>fgAN6Sjx}!$xYc(ADXBCU% zE2Fy#@#-}qC-nj8l0eujGQ1Q^wbGEucHz~7c(csC->TgTQJ4Uwf`2m;j5Nw5)NHeD zGP!i^0>gQ2g8018w=--2hhz5b%z?i0CNS@*vW}R5rL;J}U-@VuEeWG%qkN+-Tl+Y*8GqkcW5Yzw^vk5B`Ov2$Qq$=ttuu7YJiFI;W!%(77%n-Q2+ z+cNFZiMP37Kn9|N+y}ms0+?ELW7wvqu`X99O-?slnI~Rrn7Io6tP)g+1lq%*8&u;4|)%#5o zU(8y;$dl~Uwt2I$>w`wu_|(52t~JJ^7ADz@>jZ;{oA2b4dI2Zk)7DFcbrO_phAKi6}A6l7|jD;ih+kmErvx1sP6vbyt;2(!^G}ue~8Q>hw7|Yz*ol?m*n}n zetMcH2{*?d$V982;x%;^1E1YMN0F$X_nHw!^;w-t`s$A2rg+h&f4jpV&3&sWeu_Xejok#JH|0V!;Q zUu7xEzE_tLxKl4_?kEYP)j05q;)a)a_x0t%V!C5if9}g=3Oo&3&TwDF`>=d;viv$p za?x8R=5(WKy}(6GfWIPPS_n!e66c>+W|E?KrL!hFLgca8h1p%2D)WvTP^1uDsPC(x z*YD;@65T7iGH&OLWkTrO}K;COW=YGZK z*3Oy-CKbF_ZLp86b=)!~FO;;5J$NQtd+T}oJVSg2l~2+Lnm4tefLelDb`GRv-rQY! z1siMp^PaguB|1L7w3t=B-*4Yx#(GWT-%Xb*s0%L`BeVO>Z(TMsi0BiJ1nWe+9_awE zpj8)QLWZ+IeLg~w43UNnKCaav9*Z}Q_K^FUbbAU{kakyyf)k5*g-*og=NAjyc%6}v zbEk5Fnw8QTXjY-^*}LmgRjiJtJ??`|iDQg&U(hY`y00vDmY{Bg7&Qe%1Ul{L1rA@Jac3No_Q2?FswgaYu}P zU-+e*jWu^_Mx^-5)$&o}h7Gr!7PR@e@2NQ-AK}EmX@(>$_)Db5JqGg#E^%Me7nvsm zeOv;@$-;MX{tZaD-BtLE$cV@xJk;-Adqq-M5U+F z-4wNTS5h6QLrD(}u(eMPPNws{qaT{Ik+aT4+GYk+OmHn1<2(Yod;`BKn07VD<*Lrc zw`cCM-OIhaJx zW+f52-)l0Hv&7SkfUKefvLo)7dGX3gn!y_J9iHQq%r4%icHvY%Dh{=rAmyK6u9@=e z7s@5*>|R}~5wMxCEZ3)mzlO#MM5xZ>-f2ISriw8lhI*G`4MgmuIbwh1R9;UTjE?c0fn(s+Fb?l^bSAp6u6o6A_Bt z$r|jbo0D)Rxq|z{1zkp5UD76qf=)51Oh<4@ap{0ZoTN=Opt7?nFTiX^rmmpBo$ z{0%>b1@oWWame)So9#9FcIG_#)L#6%g>i;B7iS9?7w<%_osXZ6EF?2!Hr;@H=?mJo zGfD|B90tKe*y7?4lIB`a=Rlf?{)-E=tDut0L#G04WMVlHR3cc-)1 ztqWY}n<1j)2;nr_7LTifd8R5R=+Q!m-;_vLg7@Tt-RbP&k#`K!a-0&>`7BPPq#;oi zkV(PlfVK%S_(uMwe9KsjWk9-_7vbrqr)bESC2)rM%tfHfWc`g{IotkPvvh0wS$<(T zyXh^gY~H}5)Q<}!Dn@WQ8^0H{Z4H#AAWFemF!1aX3s7=L#XSlgvVA>83cBJ%bz{5ma?FaFC$T)YqPm{YmSOxd5OAfU>y9u8 zH2aAXih0Gu-0)Y$5-K;^MFZ1hAO|altH@4eIEByb1ia%Hm60H|LM3>liV9+#e1zdFAy@i<@bpza2w$PI;)SQIT?vCyocDkAE)Q z=0|a2u9y+W#^rx0a?U;+ZIwcI?JBI;mIu>I$gB77RnM&)%Er@QnuX(u-=$6i3D{yh zv9FLP7W%dE7~}XOZCTNjz6lZ!p$|M!Ay2F#6uJ@u^)`~&xriH6(zzoE3H15XnD;D4 z&P8tnxx1urmHJbcM_+qa1jtcwYROHBsT6WyZ$!u7razJKd2sLTZ5>=~XV4ORc$6V& zopq!c8Jq(k+en}tR8B*Ix>0e3dyZk7vWo%2=AmQ-li;eqE7SAc>A~F(YG`QPk+d`O zv{U@yFu|k6={>Wzq`2g?yW4!_=Xe3kPI!s?q7vxC?xEqqJSp{U%Vae!m5+ZOwxR+u zfq+-XihBf*U&~PJZm5zzMfbYUC>4E^KWO@Y6}W zrsSzuSCRGT4M}pFL<;LyJ<9%ynO33_z9EC3foN&%DW6uD zCgIT;@j`yNEr4Wi#0r-A>?YOmlO45|kY5T&)G{YB<6NB`VBfp_-zKZ?Cq;qx8zG7j zj{kq=GX%p?**2aFntwdLO!?BRHXbXP%em?%+7ycapVM!If z;(Q*Z@U#Rk8xQ1)A?UWisHwh~lIl)3^s1o8f^3yS4dZf3f4+>v$hLOI0pJ&qdZ|Zc zYF&koZBFOnc8*hNaAf&QyQXr25_;MH!#jqFiASN z(SQ`JLg^$OzFnYANHA`WNh31wdDD-_Fh(8JXaxCGA^tDi_ zENWEN$d5jeq9eudr1_^29iPjC9iefSX0t!f`;%?V1PvFt+;jpk@r?h)jR_CaAled1 zcuA60!Anf{#{B)c*Cm5BIW8sMLd3^IVA4!rNw_J5x)G30=l@ue0f8(;MMd{tgpUGi zuQvj44AcDEN9(TlgHP`b@}PW$1{>^Aoq$#VSm81AT#qWz4lw^VgOf)7UY&A!G2k}G zojBA(T@Ow{A8Wk(cE%qOsmrh79+BFlN4HwQZQN=+)JeVDf%FcX`RK?NE{;T%AICev zqz}2ekg>Yc$CH%4U?(B))K8tmdBUbCIr}4a7#yVE)6Z+{wdjNuD8>jtl*Qm5c z#uRnOsSvaaEkw=aH(r>S59f{S#oPU)pI%yCt&@B-uEXc#QLfPRda0NZ#)9#QSIOo7 zRh=0$B5%oNO!ZrR=7YO5J*ETvnYM1WPIwPGeaz*TQo@EhFMfFUw_U=?1J5i043!*o z=$aX|Q+{3?VT@HwB>tAz!5Q-j?AIUL*|w2nML@Way?1VXD7vS$ zTl?9Hu`W$#qx0qeLC&GnTnTeU3o#I=(UXA^7f#ZOcA#3inSN#dh1^+B52bs+GGhsa zL;T(3sH+OMF@FBu(5z#p5P<7z=hokQapL;i(^P$~C4{9GQ0(-eH^&d`$4uEAxUDC9 zb#TPPT@gn|6?*A}?Znc?j?^H=FRdpQiu}VXF{svHY(7o5^=jzu&5WoPm`KooHG_Yi zy+jX?VSxMjK+JN)t>~ytvpOCNy!#(kxBie*fc+GO< z$6)_Mmd>Mu{e_Gb8ioujyQeaIDP&QN{Bp+_{T>ygUr=mB*)c^-X-)y=({Qa+ZCrY7 zN)09}u}pTq;mWe8U5(@$AD9B>{qJX<(r%Vj@k(wQAHEDEZ~Wqv|9K6AmHDtp$7Wfy zX1(ZIb4Cq}`K~Pf%t^2U^4{1XQ`IS_z<6m*i(8XCiB)^j?2>%jHD%h18oCKu$G=(B zjlGKdoSgS^9qI*o*d;$C(<7B_3=l(I&8c*#vtI){~e{}BSN`yK3Zq=_X z4l%*9(b1C!722*rc;XvJPxHi^ysNir`fTiPdlrw9TPak3sZ<2sM)sFz!R6Een!xAW zV#)O3Uq-rA5TtRuwAQ|&&Fj%;nn9)YR?>vy6cdE%LMF3MMGU_2-cC*Vdz{$Z7+|fp>UY%xHEtR>M9AflmHi7-*(kc)yrqeR<|@2d=DCc&%yWqwWPl5f93y8l zG=BYP+vQumo+dfh&&M~nw_Dbf+_ack8Zi}F1~COZ1!k63_h<=^CX<#Us*Y**!otIm zQ%A3i_B-Os_LeNh#dag1dT-r!QgL^!rUfd8YW`-L{2OcUFo!j$fX6CoTBhtCx&_Tq z^=T*MWR@_JQh+R}hXe@EfmA;)B8)V3?D0VkpGlRXEf)5Xso)%XL8BAp4 zge4Mf9jDtqwdl?>Pp)C+eTwYwvny>md-m@6K_7W zLI4g1$I~xP4$f}sYAj=Cra5`N>fPVY04wqH`NLa^=ucL=UK80QR$V(ZOx&ZudQ``t z*)nNUej?VVK!obg?S(Al%D|Uv_}}DvBZ-Cy3Sl+}-XpW2jndg-7f*LOX#*PQc#E

    GAW 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 B&nEx? literal 349651 zcmeFZ2UOGBw&)#uMK>ZHWJ{GUAiZssA|N0o)Bs8qFbRa-lCy0{mm2AtUIIkG00BZa zD!nNXY63#&3B80CcsaM7yU#s$eCHc)eBn#Q zbaw>+^z_647Xg1u$5a5bmYGa>yng2-t_V1@ponn+S{{ExjpUoWq4q(1`@!r|YGpCpVrlffE8J z1pZGWaJu-EIiM5(1c?2G^_R=PoqKYk_$PVrB`%QvPkY)Y^*teQLg0kJ34s#=Cj|bE z07ChuhM!FPZ-Z_8ugrKNnI6OL$e)NOH2$G6>;*}8ALMF24^KF3`6>67!RE~e?-(kR z%eQCnGFo>|)F(_%4C4Q7ZxGmpXaDwhqwd0+r??$$U`Qw zw74{4Z9dj4%UEnKPVVuiVD~RenZ`vw=mHCHKXd`y$CR)zYqNWZ7f^T=Wvcqr;}@n! zr%C|wKcCMB4E}}d{TWlhiRyos#D(B(3cu6CwHGTY-9VQR$k;qsud5~^`Y!w2s065GxyCiCEbo|k00K5xy@@;$XGzAbxcNP zQ5e$`h^N4QCeg6G+Bi|`*Fy?|NDkW{jGAoLt%dHDmWn*Y;f0Jhjsb~>1<+2!ru4Tc zhHxN4I0lTUX&{ff4jl3hq~jLV)ny9PBsE^0-CPaI^2Y{EW}(nxKJ#7SA7A#GM@My7 zC_fQv6FX-$`wNPvnAIuybQ$b7V66G&%FbU;ivE8?5GixTpFEE}0-rJ@I zrO=x-l^s>{tWQqK>BS`>-R zeYqiC=fJv~%MV+P%FI|E2RCv6*PDjf_uiG#U4~L|CP~XJbzm#U&4SpP!y7^Z!&#Ybc0UlIE~6G<*~(Yt^aO4wBRLJ1eMXIN zDMd#Fr?Dz8)PdfbJ*!P>(?D&RfxSzoYQKX?@MSDfqY`Q2M!(L~sp|5!A7p`*f_V;7 zj4MAE>Si@_|AkS-Q)ge>+yDN@y8d~jGnBI|qsi|r-rBNsHpzTB3r(@+{fv$hh~c53 zFYPm5AI!+Sfzoh;vHi9JN{D7xAl=xh2@tNNta>b)w5Y3lfc*5}61C}RY9RYNs~50N z>FEyN@juG<;h~$KrK9S$UVxQ{2~L-F`*#t}Uurde_*M`^AUpb4KcARSb99hpL)(B& z@NOy1LVQ5-t>y2By^|3oSH@y1SugvSk4At>4w!sV_7^l1(BkVBsKgfbH=D-#lSUKZ zAS6GsM4?+;ym8#uNhmzr-v^XYz|lh2Z_>2LaR1?xcJ#qx+5B)~F)LM#nSEnRW*g{C z&$5r=AD_xD+JTF&8;|XVhKLtQgkd`H@zRtm*51vPxa~4=W-?j1E4-s94o%_dGu(DF z7}!yRw01W+$wrbd>*Au*OyvojIR&XNnwz~C=mN8Z%%xBXrYxBns(*UOq*;h9(5r@_1&aNPneX-*eioqAyj74i{U zs5w+aeALP`Ac66aq_rKZFaas4Sm>Ki19?T!I72V=J-2J=LtHxHCdqz8)<=TS0be9l zr^}jiCc?y8qGr|uC+LwIY89<*k-OdrbFSO98mSy`71cCW+hXen$J-ng=&IDcn7 z-)!J)_PyLjby=W{?j=}K-n*>?@mKxm)YlMqJ{_|xa$}DMoCLCR5G*uwwAf`W9`{qhnKfIJcwwJ#j;pWrrP15UGp$~scIm-(R}uN!nhZ77!l(Mh&FRqZ1}s4>1Q>RGFs3iAR~cAw6#pF^ov}Hy zvl}=!t}#&w4jR_9Puq|BW^s+|7g|fD)l6&Bt>Y9Djpw^sjp8D=L|TGb%3;ns@7n(} z1HeT={*9eKX#OO^DH89wLOFkGqma17MjM%R4@E4kWKB{^XncMQV8=N76*$GmdZul8 z$kHlnOKOPWSG0NRYd#^sT2C~rQ@bz{0! zma&Q)`EOT|eF=R zF&QNG#GDS-`gh*^Cr{3v5SO;Th;g^yA zqs9E)8~&$6&Nqv#{wg7bUw%!V#H4tX0>xwz^ zs{85k`)7~qhPP{}PcEK;0nTr@jsYYrhr>Nn&CjBqk5Ei+^&4{o1x>}9#4^PAHzMDajC^fc-*^@j zs96?BdWiWFG+L!FN(f3JaRJ>c#Iov3Lz~nhvfCz5NjU~0Iu2-E0aMJ9&#oT(5DLO( zg_a&jjql+be5>Waj;SyTG}qp}At=PzVx;Csu&hiPqes=%&c}qg;~)@Opix3p9uR00 z<70@vkJ5M4WDA}%20 zvl+fCc3ZBXYcfaD7Ct<&FJ~t-a>K0b%L4}Xjo<2^FYlC!#yh@X>JNe*0Qbg2s!YUm?MzBAZ1=s8iPjw!j% z`lp}b4^mAY1*NZ*^W)-Ynv5N%v|!|njbHu_*q_qMJ!N(eu(p`Wk)?iO1I*%!%_qr? z1Z&=XW|klC-n}cG7t6C51Om0R&6a*jn#nn5Ef*!g-z%Bw?5y|TE30j2!cm1mdMNu1 zonYIc3`ogA!*gPMs$~4Tnx9*hn*yn}!*447x{8U-8sI9e*!0M=BY&1RX{R|3FSGO@N669(^e1Nl~3t*5^xfTiHTJj8`9L+x|_A7tOFcW{2gafS20dcwFtgAqv1xJ09v5lhavRwIWIUCy{! zgYlnPA1b#OoYN~zZf})oT#M*Lw*XC;HN=X;2cL;{JWz8U zZ9(u4$)`Fycqlw$o0$|uD(Ji2_a&-(zNSy5pzXoc;@l3f&$YdeL#4FMbF5c9+3qv~ zo1Pb=E%(H*%pE*IHH2CT)!-GgKBT54Y9Ifxbk%-4V?R-GVK>&mFCN+zc>c{Qvj4K@fLHbEcM`+<6=>Nx5rzUXc2o==wCiw;yyNaio z=ZKx^%WiXN^QHIoHHC44`*BcdV|I~90lUxYJXu-8Z??MQLbgAw!|^6Bw^z-j(#QDT zFV;<#fseumL^_k!rt8*$1(%%Pa!|go2HH;DWY)dR1VF~CA(j;w?k7=+&;&hT?b4$U_F3Ol!|;mBE)SOIM`7AccD>V; z0|Ve-ek=?O+$^2{eVL`+=^tVP0PZt$AbMG^1vHD%7Wo7s%?NBQCH34lNVp1dawMv&Pu9h2ei;4smsjp80~1=?Fg=f(`tEPL zYJYIRyd#yg=vmArEf9cab!k8L?xn2*#r{=RqF?Vf7fq#~LVKm+;z9QyG+A}Td{5)o!x@UX^Ry#YBpDE7i6`JWdh7j2H z5x(|@vJ$^y(R{6VA)_U;(ulf@iX@HO(`)rw#_|P@@4P0NF;F>nb_@BD679W|WXIhiJ&>X0P`rJ8_%!NcrfAdb)({;p&OOAm zH;M;8gRtMTtJ&)1T6Q!dX4tsb8R?@^vCGGR=lD9KS0&Vg-l=cEHIz#V0XmLk86E<;*?!CluZ-qK z18wO(&0?A0qUqtOgD{eJjbR=+T2 zPJj8A4i_+7aa2i*!;Dv$RqS7Qbkww>1h!dOO!#sPu=ZoJ-5Bdtm3-Yy?0~P4(j?eo z(Ajf@=;k%PsZiGO!|h8~SFNE*nTw%`Daes%=Q!}=2&?MrX1z7(6%6G@?LQP*3{yqU z1zCnR)L`~3-CXB?tUe%(EH*&AX*pbr1g@6C{klcY`?q-=cFJi3SVl+{a9Iko5JwS? zXmBL=cydmzWDi&&CIUNLQrN8NquEq7dsk%Ad#sv-WuzAQ;FgkXnN-A5*cUd=y1=pZ z3Y|)1syi^)T|5Gv%#Zg|Y>{?UQAKnv#^z1JW161X`J-+2*`|E72;8v^R*AJzp3x#g z6ivJIof6u3(LE;gCsn>2#;BAg75^?<^^==sefZud{4^z}s*ZKR~l%J~H8zPBeRwDDTI54BN8jn0#`$h1PLO||3fC^4q?989lOY|vc3 zwRE;!uV_WoWI*Gt=F{uJn{2|bZYM8*E$-y(mtnK0OmAC4q&J;3C9n8}u{hU^Hi9bV z9_7Wgpbp?5{#mvIyTNMTq{^o_DcI564d?6W>zgA~0}p?R)lpeUtit+>!enKe=AZsD(!awQKu1)t~+l)QI;R;<8F-`Phw*tr%Qei$|#BC4pXLJ z8_;9L6+Vnx6HdfdBx#f$GUm?|!jU3`d`1beitWe~x?GxVD@KK zQ~nV)-7($Dq8d+z<2kI7CI!n$X-R3(wqSk@s%53=*KNsWd0U`s3NCGkKU6_{tVXtM(#{iaHPk?>z4|hdbK|~xxBQnIzzuA}@i-`ZIeFQt#?60wv|fi) zr`>6qxFwiA)v}>i)xzs?s2rA_MUdGu8rdCT*A=y zZx7XX`PcLkaMq|Amk_5k3;C)J@u{73+2uEC)OMSuy;cR%SDa18RNH{I{s!1Pcyq~N z@y22!@6ep0{?>#A`BQVh;_964HM0V7Ay=hQL+$!Sg1264?335&(N5tLeVF;MU}-i@ z_fe^54SXeX$``$rRyqe!6R2yd(((w@H4*RM?O&w$rPCa4P9}%AVU4~BXc=6ROF2Jn zXYf5F+pqvmiJ@Ln5sx=C*%x8ov?Uu!Y8nQziC1Q`&@WA1>U017&2lXYY#SgH4mU~6 zV9Co;ANg({Z5Ea0RST1>ovo9E$Upw2>fav0-wgr#53kk;MPB4j2%3+7|K+NLZ$ghm ztd8zYlS-aF!T1#|PZL(4)C4bKbF2=poMdt=&+0#8oTi49S;mpUHgRI@Bc+H<)<}OXXNqAd(Yb z@nzmA;?#{(eo#dV@;3Ed*Yk$yIyc?jXK6TSRIyd$+UX!5Q8S|rFvT(l577n8`#krC zNtKip>)H~b*-jXQ`Q5`ak|Te^-GR6GbjQDEeH2CYTp!DjnbAm!nN5M+zJi~O*_ zE*9Q3I*(U~6k*m3Q^WxiaQc%bu0=02}zi5N6D{eGcX@EQQDKsd!_fLnjkk!2!^b zsXndsND(}F|Gcg-l%vKa9^RXN7YGIMvRCTii{pB-alD@1ym7{5^EKHt}OvJUYKW2;;3f zC%>!KBlcpqo@=+eCiCVhv>7F32+C#+QufdG+Pn+%@9@ERgW{?@Vx*nkAZp~*>9=t_ zAM0x!DX7b06L8jUgHPsgR|!J9zHv+Mgw7kX!M)HM60Z$h>-BlUmV%pcwluEgw%^gN ziZ$EdD_9v|R^LtZ!6vIz-p4SJO}e-gc;85;6MboVF&R$@vRNc%T%7j1if%SloZ>vh z%hN5{j?DZV&fx4qibLexJUSASNhskRSrocHAALXg)8{QGV=c3F{`NS7G-pIHuef5R zMxSrMV_815aWGYlmFFNRnN9s6ugbilt;GJFDv6|R9=lPScjekX%&a{|psc3mTJ`au z*6~FvVtrE6RLH=7ykR^(V85TYaXEHx$jAozW0~gSzIF^yO53PJ-nyBhwOrKqYG(4n z!ZE<6@g}9&v`l6gWx;_OLSNzLxqJT%_szR4+$LP@(=o+ExuMJ~FURt8lPu51%^S^j zkg(#l+{qmZEPFnEP*9L==@pGU5!7$qvkPRtOI-{(2z zMq_|CapUY`pxvY4ZLiRDvUNX;LIz~y>MaAe-YLH_Nkq?_0#A+Ng^1F)7oKiHDOje< ztcMfjP8t~0Rj62TMBmo~j7PvqYY)aYF(J}Eg~UFr67m)poyyrXEt|i8Hj6zky{sTSoIB_t z-4-{nF2yFSc6VLU(N@nE1G#HH`zRkdqM0_4H&Im|S1eZ_u3(zt3U{GKU{yMLw>vM~0DA6r*HoYHLbQA5HP}S%z7zgypI0oDV0)a>N`pteNpv1UyW?{Brs1&bq z+j?Tf9kJS;dM9a~!S076_}>S%U5^WjD1HM2cm9>zx!eK0i1|5rIhJ-w$VB_~QZZAI7c!BAoKTPc<9^DviO2 z$?Jy404(mkVP^g@K(Y6r!NG9~#ka_L#Ia~h96bggBCYd37l zfZOw7v4za4k783HiAJs8OE3>Tgf%xlg73<|Cy+jR3d9Sc{SbFY4ihkueGbKrxQG4R zx=+R+hpdfDUJYlHP*bSS-dja&-v*|wuJwdIqH$L%4^3g5yA%uj;4IMgjDlw^17=lA zvoZb|MNkqX%cY^xMqlf|b_wsXA425p%~}q9;Wbl?k+s?R61Sh=c~DXA8Z_Ms=Grdd z8t&3r8V(VRSQuRziG3vO=^WE;X}Ia!J0dsxYX)w%Rn|eldo3xfNjxo-vwmWbW?2x@ z+^-N^TL4jXHP)ucp~9bt;Qkz6pMEeRVPVVA>yV=Z73mZ+O0{;GHlR!t5t0SH4a0`MoffKZDTv!jc_l{nI1}{;S1<`gCVu0HDIip zGi(@w`E}x>_2Y5s7YSIKkwhT^h*{M+eFWgHMs+ZdcAtuyDA#@au((Em(`M0QhEI9 zhu3M8`~ERYW-T6>WB$3$+vS7RXJ%gZc;0<9+$O+N9s*=#H8Jqx6cxJjX_{bWFR~fs zPZ(!+aouvc@+~nsPjE0#aACkW(tXW+-T0LZ-{esr1(LJXFdEZ`p^`a^6$=~AoIbQS z3cPJtB>%~iQ|)|1(GzgEe2wh5h3D;aV%^5{5?N(nxo1WeWIKSXmk_U3uX?RJ(Rdjn zoD^0Ci5hdISB}$geRZk|n#QW}q`bNj?4{2b%q%FT!yfEyg5hXLfL|8LsJTo{y=r(R zq3A}BT`XdHMT0SBX_W;1WU;D$CBbdWq}qkpGcGY}M~8VC9vF^HssHlt&*QWO{rLcy zQ2&M1p|K$Y?+s)}Dsf1$uq;k6vbL`|^VVXCdg1Q;xq`}!P|ONN*ll5Jc<>1!R}2tFt%_> ztKPK;>)K**A&>;G(Id(XK2hYwzTz)bZyK%J^UO7~kh8Ef`JI_~~6`%MQ2MMz3SQo%H%T4cBWL z!Sk2uG?P6X%pNzDRPrtCE#Y(hEH?WUZ3hzLpu#+XA|6JB-dm|bHFZbfF&-tB8&?#% zt)g}V_a*&fx0V^98XW`4BNL?qVvA`r8xJDv#-WZ@slzV_nUm~eUzbL%-0f`LB;Nu? zuBfGVmyc!E_7c%6iT1PU9?V-F*xoD*$ETx(;i9cq+n>jSMcfy7+|l`v)P#=4L|SsR zR?f&*kW(mUXtg7x_AF=5FvVx_FvA(;ZR-oo@V(K|7oE@H3 z9d>DgH!&n5$!i|T6Vg+!+tqP+1qOeoZ-Q+LuPc4R&uM#4<}pG0MP=ne$-a`03F2TD znBbilHJ3_1XM^P)%JbJ$Ffm?ArSCK@&F!o(**ta3U)F->rk_-orCoVMfr4rTaZGYu-X zx*1`;%a~jXN#$zQIg|PoG*iK>^W(Sd*9%C=<&Ktg2-}W zf0KFQeqn3V*UHk9&?oKW99>uocR(b^8K02&5#X zyT$k0U+v#mb8Yn)kW%D!3`m=!9I>f9P7EFn#Wa61H3!xF1McD^5bNmd?i5L+2X?@18S;sRzvvv1Ukh_%uxM@X^Qi85mlbP~E{ z=Hp=M=U|l{VElSz7{Ul9*KHrGscQkEMYuTnr_=U!mj)NxQc6X1>hcM1;Y7`_m{;&| z%tSOT_HE^xUaJ4nvwKa9$Ld~trrgEHeGWiyVFqL^xSvQG1uoc*>_SC^K)x{$7<-hi?i6Hlg5GEBsrYs5>U1-*~b$Bcn9guEg%8 zryY=q9G_5`AY;-UU%Z3We1Pfb6hnLy=QdQ)aNT{TM0|<8V1+S<_kH=7pFdrn&J`1r zZee9*)p(9ScY&-|s`0oR$Gzf1lUO7(dM^;R}!J?%gpEt(3e)B3ASs zZg9|4=ht!_4AzKG-f3wen=CZZ<(aaieYq<*?Ktm~{)* zKJUt{X#=&jQ2C01BXr{g2i>$6YzB*Q`cZ=xSu=;y{$J{ByZ56sJzGOshHVpGSCAVL zP>_II>RtBEq`=T9ZJ}?tW5DFm=s{Ro%WPQwYG!RU<(ZHzM-04s@a`B~Y~ZND z6(9cHFPKA8oH?nQHC$V=eoLTQ;!gVnjS_cv9q z{s!k&G0qVl>IsjEfH-J8A*fb^)JN?bL`hzyhWC3~R6Zqwo0#n{Qtq<`+C)dPDJaNm zK9Dc@eEVIe5e$Y@u%fVm$)hn*`YF@J$PzxMwb_5C2HmexV;=#JpgQYk&AH(0_@;z2-K|-DFmFaQz`QTEJwq0#DoyoBV0`(XI`(up}cd>o-E$ zJ>Pi#@!$H!Jj80Zaz?&%WU<+mbs;Kju$<@@&iPICYDNVk>-E`1ir3P6z|U4VEY~Yk zEZ*ZiEb#%||hdf-izYO{ks&bX|Ti#71WgftTsvfxed+DD5$>Z!{o}rGS2&5}G;YO&B@I zTCuFFhI%?|3*}Wcaj7`SwhyVVcjQic4>1?NYt?&pqya*aTpB`Zj*J%5$z~9n@>|ocsf2 zN;Y~^k8eI?z-Tq>ZJ7b%%*lC4KP)WXsi_{zb~B}-$L+0%xby(*=pDgK442AnJ>)gn z+rS-za4*`QMU2VWxpj;@1zeO>A=uD7tqNcl%LZ%D z62KOjF$vtPRGo#Qm(M36NBL7kP#}U4EBmXuevi2L=vLF$Nk7KY{0w~zVQy)(D!Po* zu%=T;SFZ4zZBFwy#3u=gDqH9?;EYJG1XUD$d?AD6R(ev`qKroBI^;=?*<5$+T zwdNI;b@6^0Kwft{S~ zoJIWPX1s;aaSYQBFIKTEt*;5|d$z(gO0k0u*T+Ul+3+aHRm`=urNAr0Tks;hA~UX5 zwz4>WYx{C?2eH+zYqW-_rsg@qCSm1aMwlIsmiLMgFAy7u5nq&c`@PMlezHUb88RN+ z;7S$JOg}DV5L^f#j2nDS;c~D0h^KXI;PX}r|N*l&zpR?CEn?25pKjYQg z`8F&{af;i-9rW5Yk@8A9J-_CDjVIfCE$7+|p@%9AH@fWGB)`2VIHE|%6i`gvHV(yaKs@-Rr7FI(P6E! z-wi*;@JCjOX7rSf>x^Z*?xsu)Vp~ITmG>*w{V9`57Q!JgZVMg4Xj35caJ)XWBD3Sj z#O`Qd=MFb&_va(myPBKXlcQRJ%!@wPA6&=K_BH7iN85v%B#Bh_eZ@WLH@k0ktPkmj zj}e+-W`~|WtBznkf4(iRkO=zh4j-NLXvL3jjm=@&W#_7A)nsp*@iBnQ`heVrWH|=d z-Z=&gen(V3D7L5j+Yjt>k88f79!Y6Ft*sqRTy7?mP#Q_=RJSMFj4^?#&e$$YdGnHr zlLL{8J=HzqbZf7FD2N{Q9#!#`9WUq*uBn#EHW?Wjoa)#XbXVFr$p45JJTfDd+28_% zV=vDL$a8xp>g(mtEm8JJ8r9|qj!EXQCkOB9xobn3rfQbQ#gZFQbwTWv1tGHLo6kf? zGlcFqwdjmR`C2xvT#I+E1>5HZv*b~@Z!Oj`>=uqM^-z+i>8YBpvb!|6=CoFKmG#m_ zP-yug(!`;_jPF5NLi-B)Tbaij^Tt~Q6s*DL!g+=1bnpm93(0l_{ngZ4wQch1A<9ZA z%#xt!BMpkaeQ_nV*EC}++7X%E((x%_D~WZ-awJB46n+e#!apxnMf=D|bvl={y$p*BtPRqkaa^!RB*arMl~=9{5_WkdK5{hmCFV_8*v1CbnV5Ny|f z5b&g>^kg6Q@;RhTh>PFEq;LDb~$8*I8Ne@cf)oU#cOS zZ0?cfNkX2_E`Hr41ea8d?er52mVP#RJHCPV<*gR1szT4H4iv!u$r@8QOW^!$k{&?q zf0AVCXJ&Dp0&E20|D${Jb=Ra5F zN4Hcxnn|9x=BZ{gYH+=lE*_z~1yykO!HODe%RkvZoP2g)C63H8eW93`vj<(^s7elP zRArNJcdsc4=t|MPv-N$#Js%^yH1U{>ySA0cu2Z8?TMWk-oO_hOk>9=*2Xd8Ge^**u z0}BGfcJ!%uzNonrUGzo?rL8a+#%yB6;cK6+Fuq?QiBFEN(G622BnDfq_yw4jbP$Rm z)+ywT2kdzl(dLfG;;He;am#NNEqPL!>PtvN^0Sm`kFt8<65BFqS%ndo!X^o%t*RNG zH5?%`Yr|2&nycN87^hqM+tD z&d(s1b9*xc`TH}hNvg^mn2CScs9m zk=DX2JLjII>(&D{mt2;=I7&%(JkS1!M3b0^c9IjL_QXZ0+-0>wflqfo92yx^){h&K zR;L#XN-e7;CH#8QuOwFL=hyI5sVHR(DN|-j`o5+fIANAk4h3Pf9b+C}w*3=I{HSaSp! zKG*e!I5*rPw9022QN}BT+F`>HLT*ut=Ts=gzPyYLIhmYadirr!h289j*Y^SodK6DD znLfN)T=UzQnpd$S}L$e@7yorBI;8RM8c{h?-_U(4)L zcYj^+|4vemlPj)I4Cxuknt~7xl!Nvx*JnNGFARyb{?ujM<@r=jeQ7N+XQ@(QUf(iq z=OMwFfT>ua8DH>`PVfDmlR2bvxtmtWu?#C)==vn(@3UZ4lGx!U=r#~Mb>oo-!K0pg zxr)|dbJd_g)!R{lT<3Qcw4xzX-EybGomj+n47lGcWlFF}j@o^*OC+IPCl-zvd+G{I zg;OCu`f^x*^8ux2B}G^K2TJ#~c{@H8JsUHL=@{A6rNA2~5@vVppgD{6=h>7zfA7{w zE_>$p!t+_lHeQ^4#>=;OXy1=9i;BDqT$?Oj(X6s}iGJ}Iq!eV8Qa)B|^dvHJs_W&W z;kVm^w#NWdm&TRc-tN907?{|OgKdo`%d1-oi2}b{#&JnMP?~?fWo$r$NQEjw{p??j z-jo2k$h%IJPF1IPez`H`%h#~MUTW~Z)!5XaT7%Qm;O0jSOBF@=UZ7I7KMC*ssy5q| zupn;?7jrPd0QKwTbsDcfEDWA33zimB#tGHCEsx5il#(a0?h1=`CecZ*`FX5&dXzc@ z^V7^lGii_mFj-xYh^hFz6z*KMb^W>XisRj_s+!sM85No@+5(iem;$TGI!JwCZ^mjL zVwKLKV&KWDDr4m{dBv>~;Mb?yR)p4-JB{|NUr6-xpYJntU`s^-VOm z>OO~6e7w~ZVCK?bp?M+VauAZMG$u%}&LeRRXrI#mbJjt?W`QdEz*-+^plgYz+<@is z4U^1yzD(tgk|2wp$IR-;A{KcUdx84X@LGCVn8Y@UH`@O~u@~(jEar_eos|d2fav<9SqJ^n z0lsBZ`7=al>KK-26SrUy(OF z&z3VH$ACSi;KqGpzF5>bF8SLYr8Qgxab4Cxer@1XnaAyT=@t8-no}@(C)4n1g-asZ`fq zxzSzA`wCR98(oGEDwtlbZ8e{prbvMm+eg{I;9Ch3dBpX7@kZ%ey!ri>IJO7FI}$MlsT+^3>Y{-J9_N5QigXW5A3poh7@_uYq}51 zj`^jpe;>_le+v7waZ^_6)fJDR-}G)Le*Wr>W9cZ?N!QTP5T?Y%BQJtlVn!&@(*^A3 z7sXl%Gg-i1^AENH__AiV^FbSVkFmuwY8x^(GFI)o4dgb+eN zdIu>-Y@T`OlI<*$=vh5@B6xb?J|pa`mLd8lTi2N zLG5v}(+}gzBevIfKApv>`*ynyN9; ztYS%qGl&k}kxxz>HN!I9C-EZ{!YRPSz^TBz&}u>opq7;KfGVOxcsyw~-RO zw>!(hb6#;o1zIK`jK(?oG>ZGSv8#Rm%CVo^o)tpGtI5E95nOb>ZU1o8SjG-aT+$GhrlDMo)uwn>`hDfa5O@SOT=!*;OCB++T zRwyYH*K}2A6u#s^btUC&c2UViD=t)V*+i#Q450cRyhg+8^Q>5?cIzRDgX!vOVjF*G z*PYHKP!0q}p}-ItS?76(zLXjevLn0av*-3BUw~n4SD8b6khL(}C--~qU3-~hG7%-Z z2&@ZDO}OMTi1oaBgMalpcV-hBBwP3mSYg*JLax9(U6dD@S8L$;wF+2}; zt4~R`QG2pU!uW_pG*AYyG(&!Of%$B=BDZRQWU-iiOg_rgECzPC`%l^teiz6To!fd* zfBM@|&iG-NE%jh-K3T~9aI92116x0j%|vAq;Vs3<))FzvHb{bd)-u&<|CEQ{nZne& zlk!9}|Iy%*LC zg{>WMqscc@{PZ8BDC%3pw^j<+VEJtxe_r_889HkJ^TJzeuK%+? zpCI>qmWd?Nk0L@E_^$w+rWHN5m|~7AdyM7Uq<4VD?Q?c@dXGhXeNvSaa1;>6eGRPZ z3m!PG?z;KE-onQJ?JdlEn_O>xC>|_!l`_^zKL19;R;`5Epm&U*y2C{ktD1TB5?rc* zA%U3C#k|l!zmx{mSDzDe|7c8~)tLc(p;4fntaq4GbOYAF0hW(HB^mWIC370+$7ivS zcxh(pFwI_5TT#NWxc}SelB*l?u3>$qKE|xB#QexNR8Ed%XUB?9R)b6HlX(aAy&j>A zEALGO`!C}>(6LXVP%~@^jIYR_lbrvAqAMe#9^MVlS3_2624yy-3mT3tNgG(zzh6<{ zHSI z`GNPC4S3wzsA?^#F6KRxW-|y|+oIsb^m6winRmdX{_KSh-7-pM>1_pOfT$tw*p`#R z&K=>!dginb=``~k0y^>J-tm3oYOB$cBJn^49zfrL9wYXf=%710^Dyh_5G}%BO)a)zkQy1~ zJ7ik`*ris^c(3?wM?6Vsg4Np%I!^5$Gt3e2y2^ zB38aX+mG;lnY0)3NORAb;!{D?Fi;rtq;Vq?!Wb-6lj`iXZa|cZv?y zvTGX$@>-u?k|$up{C)CY{B~6_uG9WS%#J%-SOOX2q==z7QwO~I3{n!{_A}?(P;O7X||8Lk*3h}?gmI?nIwj4PBbs>jy1HIW=KR0D_uAAPE z{|7{O`Tze1263$6Q_?oSF&m2=`Et5WSV)*eUsEux`QEp4YHAk3tZsD8&!;nHx>rWV`mtCqWRu&`yspfcl zX7L=n^e($)CBW4o(`&N&bMv%=g=v-+pUw}_Lj*^W%4MUo58Z;E-%AFb!w+}azg|6e zA)fJ^Z2k8|ACzOUgFO*A-mL+X9WA48#cG6n_PaUxAnVSe?S`hQ;OM?0t%hcrTv6+G zgqF{x6s(W11ljUd8+HMyVOt)F9!j*2l+8h5C3qAo{Xuvnd54tzn&3 zRF~n`aa9vRWGx2oGtXfQ=v2}_qO`_T8xH~l<-6CXkhib`Ak5?18jK!5LPBuJI+aj= z?-sab*vTyBDQ!211xm1HXv-Jr4>k(FU&%`AQ2}!~+Qk-OaBr#HgS*lW__WIBlfI6n zOmV*};&U`#%^T2{>vD1eKO8*O4xGhal+HSkR+ndhlyUlDx<{LJj49p*m|e&*#|Rzl zBh2e4HRvJ#Fa@1Ja`+IwU%3@s@8l`=LMx*8WuD8o0NhE(0FOu(nH9!s^s3+3r(YLJ zhjg@{gU?hXHLPsSZ57Dr?_u!gYvq|Sb8VNZTVP%k)SdcLL5iVaM~z08qQP&Rx?xP` z=;1Oa%mUXvg1K|Oo8E_1J#_tUV(nJm!x*jE9K=YOMrNYH_^BC-*V%VOv54*4dBX7T zKTetI9+|`6x>lrJyyO$@`$wF;zrAh0`Y1KEX8rg?Mn&D}tza?Mx_&^freEpsUgl|^ z`{=|t*)K-i9~a6#m8hexs+$GcSCGnJW$?#EV#qe5YR%aAc2DmRCs3%oEULWLMSj}k zt1l$@rUpP(Reir%-WDOD?h*V^TTSVQVMhSWX-{J=D)hJLI}d&5vA@;s_A4`kO!E@T zzcSmR>QAv1jeq7$v8tBPZcj}BD^$m(zDdJ6a#=wp0Ptw0yc^JPF<6_bmUt!l1z&(unZ@WB*hUo>{*hM1TJ-G_-%CWX}N|#eX*d!(wl9|Ia#zg-7-CKvsI=C$V z-qk$}7Bq&NWEWuX_zD|$GuN^`19xhx{Cg}+_-NHuhe?`QUM4-w<-%FWwR8eIj9^>! zs%`PvbnrDff8v`@sj{}+TeE~7i|trz#li2JX7I!9a~IQp?k#nik)dwwBLcIZTK)Ht z@*F=w(Pv)Xp1gl%Ag*uMpwBBtA}D&r`K1L^5+);ZbrUV)9ob-L4l6^5J_5xBj8ATq z0B+@;3*wsphaV?9FiHK90E~}gJpRUz-G=D5A#$(traO2fV=#oi3984aOv|l; zwT_f$+pA>SnMhU1;9P=CsLPl24!#MO3)>~>>87AGkBcB;$fV>JZK9;0Lte#(Z|nHc z;y)Lb&UrfS?Q4#;xCIk!A_BH)ZBrQOZkd}S1K?*9FO$sBfn>64B)8eSAhc$Hp?Q33 zkoYo{zmgSxn!1%n+mwQ9f>yWr5kSav$<~>|Gxf$Dwmjiv=iKA0(H;O<4N`aXUN8`c z=z2#09;HX_?U@e;H}oN?!E}+clqZ0NoDXPeJG8XgCb+MK?K|1odnptPYYMBb<@m>I z+Y)$uII^sGm}=Oa5o>stc?KH7LEQDi^`#{?9$Giwm@wgSLC%icJ%1~&=A6E?@E0?L$~Rl6I)#lAsVc#x~yoW z^Wob&HJ@282}nyf1WjdDI7D<76dq>gb%*tq?0wl~;XAf>N$)*P&W%oWJ&SXoGS&^Q zWFvhIoMxs4PIyc+bb~(3hZj!q%GJ(}$=C8`V1G@Vjfw&iSsa;%)3wmRh_L~IeDJS8 zv=m3VN>kGxR&|hnZB(v61joM03^y{tCB)3XZ$MMlK6f3@dJcrV_lnCx`MMF&J zB7+s>W#I=|XydC-vu`W>Wie7DWNcooafur%T}l)Pi1BSOdivF2kh&isT+mL~r7Dv0 z_s1R~qB92>K{*a}m1T3MP-kqj3kCZwK{m6$nG_0cA;kf~t@xJXmXm^ObklGa_6^zb z=Y>m`>e@2Ld5gC-_-H*rV{w08c6a2^k@}}8&H|MJ{nGaX( zHim)zdb5_djnd39 zx6<1gE6ANpDRQn_(7l%fkM^P{n$s8@p!o2Gp+4ElQx!LBZ~$c4{($WPRLeveVbzt` zKc`B!`CryLjp3yH_-~Q3AykSXTyndNEK|JQplm&DnX-QWsf`+=l;*fuT0dK4z8qQp z%be!eeb`V?qb86)jiM^JpHb=ADV|WC3wQmcR=q{`fQvr=#hB*~Jh)M|WZhQ2wCoh> z85fPciOs~2TmL5|;o6${*NV5@};l3I*XYnHx`hchijysl=VB{=Qu zrQL|>0Vrc`*URM3fHPijBwNHl+k;kXsrYg%LAE8v! zj2wNX|A69298f&z=Y?4I8Ek5BsEF=nOfb(1%r0Cb7XxEk#&J70vNp$wwV?@~3{wXt z?~9ZNHdwyR%I!kMwYzoH%mS^Gln~65TEh>=9C3L3Mw$z1FexOkWbDPJq)5Ettjqd7E>Q-S3yam#J?6{jRm?bbep70ZQd)EI4WwfGGMDJ>7YD zP4R>Sgg@W@FA#@=2LgJeTZZ6|MqK@ z;262Xb^gGPXM$UP^~c+cdw{xy@<|b(`KlLiA_cX>nFUcGC_K?M7APZTwn=+?%i{eF zp-d{i&t(u#6)M)D;Yfrl944#hhZUY2#>1 z+H;~B?C?FN!Hp}(s^Nu@jEqe5?e*Mg)Fu>#Jb^|fFwzx>0a0((`mywVLgmj3q`(-R z6d8#s-%Mm^ika0+>f8(0TOy$ zcb^ok2SQf+R|Ab(NHFjo7(Ld>7ku<8a&JoOvq_&ZsUCH$IT!i>mXpq9BV7942m~qd z#@>+6KCr6Hwc|68mC}v=kQOLYCjD)AzGY{ym1>8UJbRtpdU~&hh*xI6YZdXC<}VL( zC-3j{KRS9cWHN15c^hs#OwKe+LVmBy;rRni-UaMN?i`23sM2Wf>h|YumocYvLk#2x;aO4Y6&2f@C2`nb9Lz$#&S`ky?~u_ z3yhVcU$oMr;@e|u(btVkuSRe?X;@FgQdY)8w~np-BQ49XT~G>y$}4V$oyZ5HS(ARO z%8!z=isH(63_TB8_?^{;hG=R3cco+l6rR3WsJ z;xGFP{O1M2HO}7A26JO z&lzctC-0`Ng+kU0X&;_as=Jj^EX|Fwyd?S#pca|>y-}{IZD968*Iz>ihepZbA~t@D z93{YdsDrz}Ftq~T8a;S#stj*zo)zUx&3yb{dhcI;rMiLs^QOo#y!GV)5Ku+)8{KEGiync~qk7R5A^a?8v#g>0ehV3|6H= zknL zZc=3-MP9pRoi5Al59e_WVO$&#MlTFwo|#KZZyHh7C@J=`JCOhDprQdSaIcPBkqOhf zkAg?>)NFscZt;s%w!eKpKQF@h^#D8mi3wkd06D}unujSnUEeSDJsyto=9AYSt2FXY zN&>~@+&WD-Ahvq0LNG^1Pd3%ps0+oU%;;6k%%Gyu7UM<~h#94pgpWPbez)B)+S0&Z z(_9yMKH;A0uz`%&b#0){$84z!?dZAN3d0?{=5uWj=RMA%R3BHLVzH3lwy&8qkUmQp z1$fJ!?s~_I4OMo6qpv2xy9yB#i0iGbSkiguMD-^5pkieKTZATZH#f%6M2{*U}q{Wg)M@+1rt;jMc zQoO0e`;A^j{cTq1&JK;Jng&v4;K*AN56K<734~os_M2U4u_Yh)X%l$D**?qQ z*XlWb0|{Em>T~;c_2>!{q17dRZE|Dojf*=RzX3nQILfOlx*`7QMp|j9 zRY)vp8o8R6?@cb2eXg#kZ0S_|HY>JgB7t@QV8r~*kOAcEHigZB($Ow}JL^MoS)pkS ztCq_W zd11hYW3yerTAq_6BpRlnmpMi{o#-)+iSBvc{1^jq`v{dr+48oHpF7`P05M2|R&S%yyG==|)Z&I8Eie%q1wiC!4XboOsZ z`S*mA{I5SRj6MGr}fc((?D(06hUsn0NS}QWj^NWp=wR;*t*dQoB%3_-o)cxV(Nb9VRa^BK`ZztA= z;FcN^MK>6TiR$Ed1oz$Z%>(TlEV{M1&q;+03D7Nt^lquwyCI^-ZR-I|uv?>)dX;+x zIdmJviZeMx;En792`T;t;_tYny^k(RjE%1|`aQyC!-)e~$LwmwGNO?#Zd<@DW`lTJ0O_Asp7A^B5YIi#RHdD8){nP&1J9;OB!Qy(@< zaXcNGPI0@`*qQil3hXJl<76L#h-L0hA%z`FD&gCa9!(xiOBoY+A_`-TOuYo~BM)`mE|k#pmasJ?zL2 zJZ0@#6#7>&eN!)s?p0pVJAOPQSz0OTPI*%cAQorMQGB%W;d9#xLyH<~c-S?!P`QZ; zFb5emQWa0VrE08+EP?o#ao?%?V41pj16u=9!nTAZI9ZvH=3QFQr}3^1848HtPS4LXMA_@h_E@a+9p8hQC?wX+ zYLB1k__1dik9^P_@zcXAagf&s3JV1%!((lIuiupw4*}#&U))|5tkFg2L2ubKO+s38 zmQyB}#Ft1X=EEUm9@GB)VoW&HpSvv!BH zTjVWCTOR%hX%&SveGdb>I*=K@Inm=t^ecasHs({!YRHS0OFHR@oL;v&j&ft`2+3T@ zNvcVLN8ZB2T6Te{+s1}7%M}IGX)EI>vj+0n9bA(Jlhg{#sXvQqLIvKk%vJzq#VtuJ z-5+{He5dQpUe{Qzc41>;-bZ(EQzH*}5zLlb)A?&Ch1XFEva(s$Qb~0h=WtecX=cE3 zu2sa+?E#H}-_6sS*L_I8mChPRR}gnp1RbE1jVikg=q;(2K-FEt#SqU`#kLNGX5FAwTEA=>jIj z&N!he&ZkCw=q>>#qu~Anf+j7k zcozJhsI*#Mdwpq{;h?}=C-pYE(K+I9uP<7|y+|3gvB}V|KtFrzi>Od%zez3gyjq-c z5@=j|>MXeW>p7+LjUfGml&kLpz_^~M%1fCjfxxi+0@JrS&Q^V0)=7}qIk7Nf)5Vl3 zXuX~+i}$CUln6PV$~S&1@W0jutKGgCJEtN~ ze9={HomXorWw}8hH>+Smozb+YX~OSS?cp}5vgqgz;kN1~zIr-w?LY&nNV#$+NYH0gA-v@Q8}Tv3WPgNmH+_T; zDd#;QSrqLc405OHG&#VOXf9&M1}?HW#Um?T*mybsCIs-6@<>5++)znK1z66h^3b(F zEO+By=F|2F7unCc`+iKo4&63c#}5~;cuX=+N20pU(o#}1#A+1|6KrWQW3w#k5}>xKwOX?C+sCZq450i)}3~nOAwi|61k5wB9r%j9mLM+UGM% zHBcF>sY!}A=!97N8O~&xrxYwh4TSZ<@DX2Rv5Q$TtfgGy-ZW>L-n4^I^t8jszoA@W zx}2omHmMe^e-B#*M<~ouWH#rijrD%(rrV#S&hYcGa;G1gq+2}cHpO=s2ca@5d){|t zt3~m&4*fZ3aKX_od0MO$y^L$j&SGVIC!GH4bbTM;NOQcH`e?7ENGf*UiW7G?>Qyt6 zDw@m(H+kgnWK*VX(l#!~I3_3OTwLMbMyCn7QGgHSt3l>tl+9H74DWJq1A*BBoC{7y z?}(d+zU=aCCC7V2sM}_(3w`*|;B+6+26QS#&r$xsv6LqjF?qaB=9$$k`d!)=PFee= zb`Y(Lc^WQsRX)9JQgyLMMnTeQU1&wcS@7KY*Sfw)ru^*N%IA_O@0m#(xP7~6L0>YD z7P9A`H~WbIxv4>_kNu2|`tXOup?}_^&bSn2MRT`|S0=Sn01pfdi z$ah>3%|1sn9AncrZhYGMeWRT*VYk_qgR$uuCs=U3t+Y{!bgE?Y69(P$AMNh3OV#<) z6E0%s{c|ZTuHO}p3m>GTYAP0owRt~-hg zx6*w8qWI}#g)x#trp4r6hn#VsGQZW3x2(qbXrIstb{OsA80#OT62^2>g#T1wR=?LX z2B+aO@peDIxlM#|37+s_0GyaXfT*}=E~puk+7UUO~Orta-pBU=tv#* z%ZW{3xm12$7>*j*GB7;3el^;f5w$JK+MRppwfvnbcQrT!;Ea$AhL*KAj3+1HR>s&J zH0=RR{O-SE;&<+Z5Y0#}*Nxf0zlVNTB9K}`qZ4Z^2F(BtvrrZIN}%fg=K4r<0G*xB z|ADd@!WTwmmz+NhZe6L;2~iBu$wZx86K)cbKF5T~de71IjBcp^&Y*4^cn>VO^P4P@uEbEuFgwoSvGzFeo`b6^krB3hn6Yv4&15o+(b1VwyPi*qcpe z4}@l)&|+6RH^q+(SUYMgTVfKPBaI*C9FxHv4B>%ejdS-FM6VIkr%F)ZFP{q+8+6_u zy)IZtra^LdYfqwoo5Kt18rGB=ZG(?vR(M>yqVbDng5?9NBW92HmTZ<2RhhZ0Tm^_) zoB}X!bB1{I8?3Ve=pA3oszjqqABuCS_8d-&u4(l-Sp^n9K8*;Ui_RN^Wc#!7!619VTCStibOz7n zM=1vi(8+e5JQH#fCP$gJx6#k5Y7TBF2@Zz8J`oN-HYL$Rc6&^gzGdMK-SZPLuVm++ zOvt-O>>W7b{E4e4jL8O}Y|9Y+wiF!h>}7sk%Z_z2jU!1N^&j4tbM6?$q~^n&;y%nU zmd@|*=E=D8v5H;%&BG^+8$e--d%9Qheu!gT-A(#%OxlQlmZ1^2Ec0-Bb7H5-=;wt> zK~8VPj^t-{5@1L(6?jIHqUa}XSg@N*^A(bXs(=Z+4irKcQE$K7ta{WjPSA9 zFYaLW;njuN>vtS@lpy!jdDC~;`zXs5UUm6f*~u_`yO-^vXPP5pm;%P zbsd}E6^&x6?ET{CX$xq`s%r>HtIZed)7oHM4Itw@Ld(4uZ#*2;FMzvboH#B3ouLa^0^M`c`}O!3_=ub-`e7dsouI>8;{=w%%tDypR1%8D+K5F^6mT&~RHbr-vg=YQpHu zB|A5eIi?nFvY7MRCPdo(=Y__S?vV95obW80J#SNL^kO?E)^}{fr=uy*u5ikT_l_tk zE{)89&5rNPVM8{iQm2#H#g~g*;Vh_|y*7dE3(E9au{9a%*!_osUM#HnG2*S(eM-=npc>4w|;62eNRYyC=D zCl1qy!7|_J&mC7aB!SWHZF8L%r)(?80xq;y24(|U&>DeA?^mpcW}o0|BzHCF1VU zwF*V4u~{w_2Ty7oFlB1;CQfnwaqE{2ABNp4I~&l@*UKMzROVS~Kv68;1GTeO7v^tZ z^{+uHi-ue@pP7_9f$mfK|Qzg%M#z(h4riQ!KE4n;4Rp`_w` zI%Fm6GKwlMs9r;w{JmB0mXmxK$RjG(JJ0-GR6`#(0S1I>*rrZ1}NdvnW9I`!u490D68Vlo&LHOg$y&{dg} zhMySu;z2qO`l3LiYFwD+!Iu;9)$Sb% zLRp{=<;>V|(W$Wzv9DRVlTS)Ah9};y3K*KDSu_Rm3t6SedgJqfh})~jhE`fnL?D;y zc8*0zwnQ~8poG)IdhqNW?TH2t8Ffbs`8N|Q+p7VB99F@*4Yw21y6RGQ7Y2$$dDH%r z#6NA0dR!}sdBh3Pobf^HTvGHM$FOem>e6FCxS_JK%J)g3&WQ2W z+SyKslXIzJT!d(QpAQ=z*Sr=1H!2VvNgAf&6PN4KI$^Ots;Nccl{uhrJ*9DEcUqW< z+kD>R9(!h2HIv6lTIK9fh_-=YSd+^{<3jSBqL6oUec+$64l#y-DVv)~_wBAF%9#x> zPKpa1a!xDD8K?6T>x$+U+;8V#V+XWwa&{)v@=%H84*e)q2jz^exuq34Spqtk zWvI^LEvJc2E2!|oS&xPT)myfxhJfN756a;d`cPC?hv?$IIdoYUrq(Xj%TZQ`n&4+Z z*$j_blFg%?`r|u@0H%BqrJ-%eV=oWZ^XZ)lKE$^KTQK*<>O7|a>0UAN?S0?-3PxFz z@!f*aFdTzcB;1I6BVgP&IS$?gYiqa^1UlfobHeKy!k(d^m$B8>uWTu8ZRh%rl>ex{ z;}AYDks`tOole0BcFz>MO8Jen&Vce;9qOGYI>=5j?Csf(jhV=+^W$ZcZ9gyQ%&Fi0 zx>1}#;A=WmQ4b}VmL7@1N@tk${rK#1$zDcMvC+rXDg!r>JCFu~={nbd34@)=iHM4I zbG~{cB7PsQH_|N+Xn_rBnIPgH7dIS4i_+Phn<;6Hn=p)>Cg_gJVpGIZ8)q*I$5}E; zI3P1Y&_rP-m_w{ z`}`TOBsiZ9A4#Y(q&_}>!yEBOldoq5q83VpZ>ybj98Mgo6Gj3!M9Dvv&R0>aJErU6 zZKdN-bEp_ZtYeq^}8fs6c>9{49o+&}KNQ!8wqssjh z#?K2!C0y(#e%5a}p-$>7y6^nrUDoR*yeHIT1_(4ptXyKJSegvd1TC#XzV zdatTMNJwuR1VDer0^9*m@cnlvyHhP>yr~7;QXQppmkK7KdF@OBgHy~8TR2$)me5X} z#8Olv>Aell=21g|8bekv$9|SV#JSA}%^4&3ugWz#BrqNVW`n~~SLElSjs9uwzMt;P zEi;&!=~r#9L}sN@9Rj-1V4!JSgB3;*lblv+(|#PZ-hCV_)n$oxczy1-a>y7D8!dD)$k@Ab3dl$iqU}-i7&p9))pdw zAuFE|8wbk1V?0pByRp$N+Hd%!+oDyGwqgaf5FSrHRg z{!PY)N<>vX+=r9REZlV8MYJ>H-L|^AW{OcmY}YNUoZo&=c}Y_*gLIm8>8!V)Nt%JC-ouk zjFSGD@kG0#MB69dw|D@Rikj^%QHCc!K-+{CH0v2yJ?Y@B^s+HElGO?BxN^ja#t(y3 z_bqzR=%ie0NIZJW8f47MYllOP?GJsX5ieBC+r;e^IN?G6z2JtOA1HA~q3!*=z$wIs zGLG2q)k@hYPW2rIJ=r8tc+Z{|ukVz4Y!^S9*70p$TW#MVXcs?;G4&J%75^U4_6S=z z;SP@6Vk=n4dx9oPwfdu`nPnFxB49s2$Jtqd<&BQG+`5c z&*f0EFRE4pRtplH^ekFOPY#>3fl2ApKAKtO)0e9#!qh@*PvZK7eb=%tSYXte-?dcC z++j`pVj;TG8Hq9I9&oHoo>=(0b@cF&kFAZert(Tnhew(Et5lo5d-v5JS3k<$?31!A zt(~+X>Fr3j=mxCB2J~gGr&Json!U^}2i)c*($v9pMD?UDZ%{n+jH4N?NDzvLwpHv|H&EJ|zRMupGcUaw*Ot8F@}F zvm1?3v0-BG5aP3S^Yw!ZX@ZDhymcM1+-{#=ml2dY7xiOJbJQ7?Rw z%SfNr;)lkLaf07_`!OL6CiWKIvP8A#2%z3ju(2#?J5|$RGQ?1BV0*qrra@fLu3h## z)gwTnQ2DNkF9@eus+H)-3NjU6ShZ2N%-=)OTx{Q~#2dX#GCIX67RD+j!r%vyWR2vo z!9_JYY~g#WIfo*gU#3yFl4Z)>R()wb|K~kotzzw;oB*dI+oj9e$9MJ> z+E949+Sq*@x@q(&)?v?s{U{gnFD3bh?wzlq_;siF)UzDmh7DazH*jruaH_1D(8hwk=B+R_9}!JVKyLD$uC^flr|xLV6mOUTYmM^kb${zxnni9wF@V z7G*!FD#ZAn_#q`tz{N!cuDis+WnWCDxbh0r>B&fJsl-Rp$jObJu_j^FQqq7nwB!~k zRvv9V_#11CWfy4sMKm|0#BOYYE`|+NSVyH5(@Od4VC9&G&D@H_$BC?KA4XFL+Y6%&cA;V(I7SbCmKQ`^p8Q2#{BaGf#N-OxjJ{)F4 zRt#0lt(L@X_$T39f3dLZHtU&o1&Y|(6EQsTnIN96=eq@%UZ+3^m7E{@1qohqH4t6A zUk=s2@xSH={l7@e+z}87LWM;8PK5_VIbtLctwzSM9(QDD zZrII66<(*q&4|0Z#VC+rf+06UDZ|BT( z-=>S5nyIa&C@qSTbK0UP#uBlo_F59PtB_3h+Q(k|)J}v35kaJ?VyBh}l2H4aSd$=< z-p6_Uuh;#*|JVKG%9G@H3hb%5H^y`@s$*S5R+7u%tjlYODD9tbY(6pA3O`-~|j@89tT_=;Oaydl@VU{5~rCXNudq-*n zA8*#5pPSL09&^A*mN>kGjh9es$WR^-amM-Kl*U!*1xgg9KQz&HJ_wJuM8EB3hvgjO zDy_Rkv4EQ#^7`RITCNFr=X$gU5P5uxfPa`3ADy!FeB(rvCqI?5J5lIe)a~FG7=y{_ zUe!6hGgTX$lwUg)e~fDWvZKVz%CXb8>0W?|tevL+++t$lU4MU3J67-@qsH^TvkQ6D z`FhsL=&Bo%^ZTJIX41;EYW-Y=5x?mxFvjbV)QrB^A$d*HyS*E%XJOx0)&~xMi%MbO zh>7gtQoS1S-@=I8f46(?Zrf$lKQM!#p>@)Ir-M2AT)6?aQQte=wjLpf{Xve9} ztYM6mAfm5cTDjfoqT7*4%&1oWY8NyVuDYPUsQ-#}R^FMYXgY)mG+Mu#7Sh{%_g))1 z^&CZ$0@IN%nxI)Oqw6z%q8NEb~@31GzHjM=i~u_C|v>l)L=F{xN|Q zYvw(fx8CXY=vUgXN9`<78%?V9_z%;wlHX`*=29m3weRRL@*rnbkfOHm&K%IFc_KS5 z(MlHl-tTtvicuv)^qI|9HKW^Sh-c#G_^Spga%Q9}E*td>Rvk9^6C?dl`DvG3kYvK_5?^AB<+#>dBJqm>CaDWX(vXZ)HTGnwImIEBcryG+lwV)Ir zyf;2X#cj7u0z7>HQcNtr)JS}Ev3H8?o}?w{`xE2DSw?_VLkLQP)^N-5BmMYP*OSwb zr_C4OE37>7*DtumxrutoaQA}>!|0_Iv`%xcbvaRCCbs6@Pi_V_?ZO{CUxv%2m{L3w zB342mdqss-X|L0Z+l%Aaxz9yPy?3nf@9PUf0*|Acn9VrGG}ZqL8d?iJ?ri;#58NP1B={)(u_2MwwKj%2nMjA z+5V*FR$)401E(3$qE3O7m^`bt(NS|PrA^D%^NK~6N*vR;k=faCJnfk7or%Lq z31t2BOI#UY+c0foFtdHyUCWqU=^>oG5skFS&FFWPymK=c|L&SHSUBcG=mm&#Tuw(Q zGB-2rFli1DO?jnkzu20Ojk4$Jrqc4D(qc}D-G`AD(^4N*qvsX7-sz@waZL8ofC2XB zE|SdPT*d%Be}+C!ltRH}Dy;s)gtjsL!?}~emZ6SXl)6&G&W_wS7smy0ExSr7&$rbQ zvT1Dv(~UP4iR07^$*So>58Ic?BK8a1iUc@{!B~l0xHLQbQ({qpRtnZkV zvM-rLC322*L#JskXfcJVolS;FbMokwCPn32c{2=C>)^m#7``)4sPoL(s9$4hb~wAJ zz!`9j3!?CjG}Q8f1YtA9x`33?`#os8xS%FjOG#`ZCsEK@@jmv;wcmXYbr)*(+OCui zb(<~32SFWV4*-sFR!9A-nVL$hn>CH$6Oy67j!m50+3STJ9<(XS^8W6S0`fv;!m9Gh^=Hmh-rlajA76E7Qca1Gndy0Nt1m#u+F< z&S#U8EbZJK3I`mNpe0=3xtfE|x3w(tlV|5EBJ|E@mDV}e6<(DwF%!pGm@DHf+e?NF z?~h2FRLVHAh>6dtPu%1EQ#mB7$uIQSNE(?^762LUtbAjKaZObzs;peVuW<1UgmZjH zzQjjyuCi|AzTHjZrJi2PsZ=Z8swnz0uXSEtX=nYj@SBcgoTQd}F;@7uMkY+x!uC8J$ZA8_667{Scw1cn2*BUrnnw+r5XSfo?3Vdy-aEJT&XH9D89t>VU6Qo8jmzIqzHN zqxt&zdQ4B0!m>%sXZ?hAXRT|zZ63r8U)Nv?UN`92iENusYFm^(EA2O2J+AB#p1`0R zMox92^5qlnWn3JrW`s1Fov93T!i&sDInK|!L_Z}p!f!++t{o||DM=L@@X4&)s3~IO zM5g9}cIhAPDwJC1!awu9CDYx zFYfdr{_HDjZJk)&kYBg+r&i@Q4M7H9{`CZBg{fy`z_=QYk>dw1EAI5*cXE7L72{L$`N0$h?i;Y*_Fz@Za*f$f+Y6uoZ}Y|^&MjiB!97qK6-9_qN& zszO4)?G#ePZ+1zg*vvcwnR$Mz)mu~C&?uXEU$QD(Mdix{%celm3ZK*Fn_-YGc~g4h zNbPGv=TWLj0W_fb%MYP{vjw9Rj#TQG0lZE{vyMZc;RR?v@O++gywaZ(H=yi^721i zRLU2<6D1>({_V!HK39&#Mcm+uaS&KEJ%-`&Cv9f*@P6&f@p$OkghQE`fzE)3^O{b- zKviHB$A&1)K)>Z_DkriBK3Vm)B=5y1 zkKW5#Qlh4R^rbbfcF^}IA8HeOJa0`(Aps-(ptf>c3q(GldnB99`m@`rK+l#nhP~AI z=q9E9GE{P^Vu@H$(faYFQy$aYxseVxEX!HSnakm5(7on7eC8PK{jcG()A;KamrTgd za)Q!53r~m}HjFN1uTWN#KQ(Ro5v&!#W=w?pkE5IoJ`?wDSn`ai^FtD)_h9^ef zHul{g`o@1Nmys`(_|SjKN%~djTXy{fz1SS0f-xJ`{Nlfm8p;j=OWpB8JYOPKN-PnRLZlDIB!d~@0SOXzA&q zrP|-Tjb(=+Jbz%axzfBtQbz0aE_7N|a2haNw~vf1P*;GI?KIotE6CQCX=&^j(dC_) z1%8q@omD+?QP2S5o8sB_$^n@*H!BvZf4=paI`rs^gC zJ}UP?h|JIS8ef^3@gu;FMKo9y0Sa(#Y^!Q4?Ay86V0?_GF*7n`$&+Nbvf9~Nv1c2C z9v?nW`podEUd1{peVh0=`R6vJ{kQhT+@6-mZ4ysT5-wSc-V)*h!LYfLZUSx}SH zvd;eft15>_*IJ=fn1{q=)~02+M^P=?jzj71a*F)WGxA*LoSoME;NQtZEy3w;8fL_s z?z{e#FFMQ*TFEl;y)tOa*LPsNzY`z`XnR9U+iCa^h4Ksj3!psjm1I4qXN*JME z?tS#5J4LBDCH@XS^V&UiZf(X4G0aMa9R9w}8lKiqbJxp6YfiY5M%-}H(L?Tmcz;WU z%XVK6q??_J%d zyO!0DwmfvCY`V4>&Aa#dyY%ps(mlX6@LSFf%OR5t+!T_+)mq(n_k3w-h{YpYn_=%S zW;FF5SI}0z)jUo#HSYc}5aQBRtZef_7%c0Po&;zTjK`-xPVZ>ntfaRn(bMKv%)Tgp z%aUjB1DL}uKMwN!>QTUBNu_Dw_lVfqs1TF^yNg3r1wALF-Y_&&p#s~~I-&=EYZk>& zBI_j|9vLuW(#;V=TLuu8Kk2#b=tNW3?mdX{ekKaY`2bXPyZA9uyG-zh6G1ocN}6&8{szBMk}lm{f0iE=U`F6F@SZ z+pmhYGUdH+^YU>ZXAKa-FQRBBY6IHh6dsQ8s)TFK>Abh0(xPzW-|1KH9U&Y8PQE;< zi;KKLeOYSnQEOMN4#BvJXx)AC^0?M@w>YgLP2hxYg?YGtP4U=g6T|B@r(^~a`_cfA zGhACa6$TJWW<+RvjfRSh-4WCiB6sDSXo;>`$a5E7JvPQ4PVliOH9b2MABIv#_c#XhK$`bvVv`H;J=1|GZej${yj$L>G-Zl; zHb-q}N1(Usrz~2TZQNlRk~VgcuC3C{j<+UyoO4W^>_i9WzK!XrAcv*}z0N7MgYqo#OsoY`wfpZlGCbB3P{UN&A5*CBt+k9Z zn-|Zc{!bmzlH~@tzip98#W_tgfV{qd=Q3`3!426`uSOh3+HOA|m{;Gr{kHM0|1f#< zZR$t4pCEZCOUE(SMA zML%6e=OxCy)lw)%Vg0UMd-ndlBQlAgOjLVwBV^~&!8JN${E+}9kl)()&Rwqxu(xgG zI?xw^wpmop#R8jF_mfWLYkw@3Ky%@YExiW!^E`tkBxMIfKbZsz=HMr>HNPdk!E|3 z1@9YU{iil8NBuxg_Wt-k6glz#Taokh_MF)Pcdd3FG4lZ~6Kr1SHX3t`!vidE)LTyH z)&9|w-|r_ISQaB>G!w%YwI|9!rw_-S&b^B?9h8gh1z;^JNtO=~1U)AM^FCN5`f{-| z^|%`Y^My=Dq+q`<-Pcx!vp#I6dyzF<10pr&3gZ^2CqD0Hj6TZ<67wUOBsy$7oGi`8vd%8Ry8ByDOG`5n$Ke1OcoQz}I9W?;<6YKO=Cm&>JlIt{yA^o7>AFeU# z)Re?=_k={md~}3*uB!smS5nSzQZ_{KMOBhtaf(g)exZ|Bk0Tw+>R2WpNpLC^qQl0e z^Sg>763)IZ(C4F7=^4uQgPq-N7hZiIdi-)mW&rCVGY9q%U$d+Yrxv0`aZ?O$CAE&# zsWmt~x}x%^s-|jC^uPe5q0h4Q|MXuv&Ds~Vnwf~&(jKM_e>aYFrvmF@K30(01^`A< z@zpa+yiw5iWhWJK*U_1GyiDpw5GXHc4W+|3If`jQ@>-3TXNvhE(;dL%yIu_H*mSrG zbwDZXfEs`zHEOH#h#SyGFPzTmwb|pKouW3{Fe9pbD4=5O5OV7XUQwKfVo$qdoHnJyeRtO<(D%h zMd^@Vl9$F8dl&>|yktg?7A@K-Fdla3^qcH{Qj3jRX_Vy4^}L&-4-})g$h2Y~>2uj= zov?u8dQUc#`)%JP_t!;FmnX(<>suuy87uA1y>IeySuzuK4@y4r>J;5D>D%bMHW)3p z#{epCEx(eUEAHLY%X(6g@1t}7%W`i@i;hB5Syn??nX;slu+izTqJV%Tt)l&+YXrJt zS{|tsY>UaN8Dw|qG&cr{!aidgXFEi%Dyb(xdI!GF=`C+djPK5k<1-c`A6h_`T9Fwb zzsa3qF-oW0Bp-C4IOFM|5pB}xE&iXUk!RnI5?}{$ch3bvJ0GS&dl&0&Yn{eD@z3in zHrA)NnMidPB}yGgjcX2CL2jEEE z`1pFa$qX9RdsXcIX-pgJ@QQVCnxDFbxnfLmBln-f*^R;SCde=6#bAp6TXRZFw<3K79@8Bzde5&r6tU*rN@OvY+C8G>0T@L)%sZFu#RI! zEyY(a<5ftvAGlC((dHXV?RmWxQ~O7Dijppz8V2q*VLR@mEO_>!^WwgyF!*9{_8_2= zbN0QjgdzR%@5m;CI6-S``*-DRhQobtbG+x7E;B(m-)C`x)x()_ z=QHb5=O-LiH;&zWBkn^lsip6c&iskWd$(5V0Q#jqnTf8N-!T|kQ*~sT9wyb}mi_K0 zT9))=zeApGp-@~ z`ekOd?GT&Z4M>f)9HG^~=!}S4zu$xs6C>?tquo!)YHTQf$i=6IixuVXr?CVO0d`FT#+VA@#mZ`|Mibo-CLyaNV9zy68T~Cfww!8?}A_U9@N6Bc#>_>^RKv9(NGjfPmu09 zb9Y_Dl6p0}nlU3O0&2itL5BoZ(QJdyye>~NS^v)N-ke`3DET3j{t_~g@1FSxa5Q-_ zjfq%nSN3Sjv57aTAUrFk?F;Re) zT75QE4S8Zm>lsXZdB?vver>}3d)mklJ&40|tZAnEGm_&4b$g_N?`|$K!%kiH%hk~* z@6H;T4YX1T$G%jNU|NMO$2xaI6FsX!%KC5|k;$frWG^QqBzhy7W$f1Dk{vgw&|@FH zqt&1a1UM*Lh!C#To`I0X#K_tl$Jd4gZ%c)vQf&uq2vf`O8&Na<6VtAGzQZs#d`zWQ z_zHn!7ERlRkuEo0xHa_OV4Ytsq@+CmADA7Xzh!V;p^Aox$@L|wA3ful)A{d%4U<+? zV=o^YdyN;G$NBdz23`pgug2YbMG?&un2Wv(nj=^mvSiYtvPAasRVTA-DsG1lgch^A@g)d6g!q8?&;Q48HE?-BToZ)&lzx*Fso#3LilZ#p5T zT|YC$c**6s&E~xrwUTNr_exj@zk<824f`|4=+P3ReJxz$xmJu;bs^m3ZI@fP&-sfwJgkwT>z$t3UGB_8~kDEtPLtg`>#f3&Y=Dcl~W}DIcLaz zWXoiDK|He-x|1dH_?->QmaF0??nqYh(@#A2nqX1X2#(%%=d>PcxvWH(F3^!8DsA;GS{qqU12SQ9pzx#hdS-Ax_~n&SUI#gbSb=Y1Hw= z!oTht)hVc>WlL<0kksQbB*%zGXLJxa4Qp^U$B@*212AgbW-{}KCT_!f?vF(Tc-_!8 z6xPGO0z8%SN{##0xbI$#?`l!D4Kdob+leGfqKyl+)!nGXoZt7pJaIcwvd{X?5xyh& z-HBrNnKXBitn2M+6%}p>0JR$NIR6Vcn3NK{d=+^_Z#vvh{~-7czMPC}o7G*mo@Z*1 zFORb-+UJ6AY2HgcxA`fbA2mo+Fjl@wU8CamGb-}BZeF@p3p)OVF+kT`y7{P01XChd zbKT`zq&-Fb6eG3W?6+(MeFeE)w|wVF8ZGk@-!Zy$AfQ-g{Ty@qhtSOnwxmJJV$c_4 zjj=T7NdFbDZfGM#b?7-L=W5jtp;h7#H)D6?*T(YQ3UJzf_6K(H%HDgbvLudMEVbvi zuesR~_7YnYAthUoLa+jv7DE;c8N-5eSgsB4qFUEyW#~G2tu;C!u&veZ?2B{6OkIH# zYJZIb;!*tyX`UsxsleH@q_16@*)@f$mjsVOXSOqqH`G;{EsQFX?*2Yv7W!M*ZB z$g9pxX5`#aKeLc;nat}7Qgyam${zwHw^|-Th(OW3Ra*dK7(iSXP}hO{H(%bBb7RrJ z0(0$MnS-Itja0qvJ%Z0inJF$`W*Uu(T9aXAK5k%09%X$wy3e~QK()#L5Gt&x6lfB- z*xP0>8e9K_V?PTqJzTTuh$I+2F6h8939WDf<_Y%GR+{H+9eQU@WUGr`24 zj9s&?Vt-y(%#+vy-Q56I0cx#J18DZNHIKpnVZpjQj9aN{TeNt}Gk4=~&2+Ng< z%xa1Q;Yd|YWjWuwXLxVgtz2ae1D&2aSXi(_wAx;t{4}&@MOo<5O)gW9;GItm4;k~7j9PgvPLv#vuMc~>+89P&eqZ>n#+8=yPT+~H zafew|J@wZFl{2^>Lie@oQvm~iN^93mKPnbnW9ZnE9iQ?hBjmEGs*cFQyc}Qoun8pm zb((7)$kVpn5X(0lrMe-!`n%rHZYL|A>eK{t>cAyM`(%^Ol2PL;x?N39@0dZH&~>Tf zFUojln6BlP$c=M&8DqcEsCutzo&-GpW%oENPd^{;TsKacYHWQYKH{t7DVy`=my~M9 zO`OblQs~Oyiw<0TVCXaxO$afy!mDNfa^RPI!=y$9FvuzSfi*R^b+%*1Xi5C+Z_=2) zf)keR&KU^_G}UZz$nQ$dc524cSa%Ia4?PQQ_;6ppUFpY(*v&8NV&LfH&h;tI&yqY# zM3wuqCTAm!x@*D9Dp7Yg;0Af1!}mprh23NFo*&^?Y!jPm-A!U%Cq|n(=n&2ahqPn? z^xgFvgTZ02-Skq0{aqNzL?Ztcw~+UQUEp#HA%l;)YPyDbeaMJ;v7tKk6@@E3)Cl>+ zcFiYzzX-Io6Z{$@GYT7q6pk#<{}8g-xVtkNqHs>|#?*hU-6SU1c8YhAF)-Ihip4J8 zKb@!6J9wvQd-iN@W*I*;`MgEK<_uW>fUU+L;By3@I3%ulE~bd8z!2vfZeVV6ZzBA6 z6R3>E30-&@J$dtle}qk3yl&?ns$^?7xet%ulnh_TJaOK=*X+mjlCWzy7zSfxWTn=sToy?ktkB5osJwA1&{HH(2Wbr6IImcJx+Ae+0hnOg87jWWdx` zd=5vJP)Dl6*!>W~^DemKcuIqg7(v!-SH}X_qOyRvc0~Fzw3*F69)7xm%!Cj7@3tV7 z4nJ_HOCojuqqI~~`Tv%dYG+n22wXR0Iz>UzkFhV5bJ+KK5QRrY`ha=uZX1AOJjweV ztXsSvBD+1xTSEOod@1m244k7wr#XYaczo@TIv!K;Luhz$ZJGDA8wKOtczUROp!{aP zmR0gpaV|};C2e)|gyhx`LTXw*1Q7uxiKZ*>htP4o8|#6n&j(NfD`sAnHICBB*FOq- z!<(BlgVs0Rm-1;7luqVbi7WJc=)(7aE7^62$7ylZdBs;-G4Ys(7I(q>N=4Dut$Wew zxKxp@jq1tRnv)%oEC^W;p7q`2u_O9LPa$z#)3m1a<26qTYH*5YB#8#S?+RJRMJb zpA?-&qi^A6JtS)UbcRv^9f3`Tz=nh~9111BT-s5oMc;Abe<7ZQ|23nb+U$g{U+N*< zPtqg{>hx93qEOmzf>5#kioaZ~idv1^nOofS{X{tFw7oyx$@cM~G;9ucol8?cjVxT0 zonF8loW2-+v>+%^TfVAXad!*> z6ez!4m>F_Wk4fZ4^1L=g*xc!2{49QEUH>g4dk+I<*X$xfE*$rA>`}r%2bmzl9;Ivc zo;_zW95D}*57VCF^C^1ZRU@=*9`Oop-w+Ch_Bo24snaL-uUdSLI0MJVIOSs9wKD8V z^*j0J=iepOs%lov0~j!gfV}e~8!mwrQKO#_PR|;q9LpV7oea3xsgRtZ;y09A_>gQx zb(bv%yHZhE$!&kVADYt7tH?S24FI})Mk@oXPTdV`}; zvOhW1XC*$uSWHXf;Xi~_4LEmd=&4}JU8Blo%@~a+%}bEL5vW}d--BDqZBceQ*)-r` zIfmXmd}!`hm*d1Siiz+eM2JzMXN=z5Oms<;lzN1%Q!86CB9qBD*_cAlBsJG%@9QHY zb)_=Rt)sB$Du3QFI?FOl4N(4_%vT=GQa#9h&DF7QJ&Gnai@KdO%Wz8Ucc8|Hn&TBF zZy7KnzFx&1rfn!9dhYzmSg)y>tZSaL)Lxv!HM^8G0X**2BRP9i6#TiVa7s5-=_cuT z)sd(ULu33n1EIc)hvB%+MQsjN!VmsA432RcNBCG6HEZmue1R$9{O!F0%2oZd z?mVwq1y^^yh0#Wb{D03V2*_9uFG)q%RZk&GGdr^vLzW7jFGLYGgVA}502$G=l;9ds zSE@k!$UnWOH5ur?%G3HNd`#Xp)kNM@F7Q=7ug}C=-=Qkhk8>f~Pc!$Df>xVoL(pBF(0*rSsT-mr0BfgtbGT;O zaUtspx(@)YUw}FN62wahkKYpcs5iWaSe0ut4tYmEOw5S*xrNG2ekt9o(NwV7|@1z6cO4pu^#Xm8-`KO`WsEO3A4#~w#2iJ+Yxa(83sU~t!#p04; zaaC1-oUAwP6vi_*)Y<7CMZa}33*pAX*CD@j!2bFms5e_E!YdgYG=@Cx&YwNIqQI-dbTrh@adb5#Yx|jKnnS%4e zE53dBMA6`?pQ|BfZ>|UlIpX)>qzxMyl-n_iVg-6$_VEST z5As@|?z3pns;EG8)shaZDya7k6(7z8Tn#4$&+Mh}ivM>Mncw;kp+)KcG2yRnKowKlgsm2kQ4 zi-zL}$msLDV(JAEx!Xgs;Cn~(b+vDjww$)yh8m3aW)CBE+p(f}gDWdSeHAbqLB8-z zy%`WePwvoalv^xD{Ul>5m3-4aE$cBg!SZ{#_+oL&+H3c9Q+XwgzAG0^?u;0py+uCo z%7irDEsE1ZFQl4WtsonbuT@o5UAq=s<_BK*UpHY;|2=bza{=hzKh+yNBaE4AxlG_X zzpeKxx(3O$DE&|$H!7TD`MQ^3{YEadRgn^Q|VLkv&XL z=LyzUO%G&Uxa ze@azlU(Sr-MxkB!V{aU4$JS&g*UdVH5VSknOmDs9`De+Esk8^BFQhI(XNE7BHpm!9 zJrEtw`O=<45AJc&oO0S34-kzo$FG{O<=i8+9H*Af-886CD$cMw-P&dt6YG;{1{!tI zj~~qqeYU})E|M2k$-zh6HCC=?@||ESPHirWGcA+j)TpdbijObODbl_*<(9hb~g%_Xl(Ac zSPA|FfH$G~XblaqoP(?5wFD#(d8g4$l9#*%hV9Gqp*Mt?dUmsItZ=QEvawpYgSK$X zvt%7pi};CFr%)@C#u4*^u!2J#t}UiFCJ{eH6Lx-!A8j^XX0y`PTT;pFahyXyhunb_ z+TTp`Muc>;fBvsgIPt%n{ir8yEVHb1{o%QenJ{-45KdUJ@AgNT%;U z+pxHBKOm?cVNUN$($=Vz8zF`%KDu8CQlL1)C<^O0aN_2rNgE#jd0AC^SYiAWPbNN` zy?A-+zCH{O=_maC8rFILbc$)LRPz6~UEZY%THoT~I9AJ>pmuQ-p@zSZZ0SBP)4vUL zh#Y6WF$asMVDG z$d~UBVZxJH1$X0WpZJe2D5l!>-?a4u0;lo7p_^pbP>M+c7=eM-E0&aU__QIuDs)u`GAFC?fGco?mmdh&*DuRufl-ZstiY;^^ULX z4Hy{ufB+9+0(X=);4xho+M+n&a^mO4^?XEx-M29P+oHsI>|IRb*>D0HAS$@z7QY+{ zn27W)^edE=lexdQf|EYoLN-K5USg9seIn@wX>OWc6%~~>;7jw4S_HhQfvuL}RxvHV ztC8^=M`g;coM5y_%kuIapam1O%OB*a^pwJHVV)3~CSa=;In;T`(F5KEKKGW)6wF4C z3EFanu-9{k21ss+W$0;_3$2K2XbZ`%6Rn6vQv@&9XOV> zBRifhqk@L^P>6bgACW6K8*VcW6jxsCkV1gourZ@r5Tc9NUq8d`tRH*@JfqbgNQX%> z9C`B|;CxfaxP5qS67*92hmf$$r>JZEI#Ty#3TV^#C6Hd(*!N&WrYAv$zI{h#TmFd0 zhHMiz`|qGa3-`i!*@8g+E5UqkM8prF?~iN0T5jAH`;SGX9MF)HCuZut?)G<}#;Z|$ zlMB3Glwtrmi5C;}aR9xq)ipQIIX|#Avp=w2%jE)RrvS0ttP@9^p?NoM_wHf+feHa7 zx`6DsJ^HN4c-Q{_UXBtk+|3ADRbGQ0C`Szl0*SW;=fmpg0jSSSC;|-Gb@`y1RlZv| zR@g;*x7qR)8FL64hHZd;2pKfrJ~CjZEV8q90%duYlh*(j_F3pqcptNezZzY(Sry?< z<^gaTqp-Qt(zByfZ`a5gs9DVA6^keiTJ^3c%M zgM_xm_wlX-7pZmrnbeXcj(qT@v&XfZl0d3G z{n$uv*I)njit67-iEi-R*C=-B#8y0z{_$#yM~K0HM4*}IvZ45)SVcNx+U4hAeBt4% z7l^GacgF3V-++N{oaj~iSqZUAi2}P?<8>eYZGEX6AXQyxI-}pcK}@Dxec9JWH3@T_ zJg;4^?F@UrKo0lbd>g7&4JJEcZYH#ptm21dUmDsb|DN%NBSCFHrn8V7!TJZEa%0W| z@YgDt>|2-(ABvHxs2>$rfj&IF+*Vb zZ4!d;uAe>F)nI1}Erm|k23X+r_em*7is{L=eAVEi$08vSa*L{7gs+{rckWs@s|>F_ zHlT7mUQNapp*RrTc|VLO;QI2@;`}rRWYzM8A>ziycktmvEiaCH_ldb+dO7WBPw?AC zH^VZT^Q)GGQ%(-^&NE0}V(3PLV$=Xn@V+x3Gb=?kuXw;y*w( zya4!??<`Q82^kZJc2yDcAbHyb-?3PX|X18V3&?_kK=@7<^9@4vI zq{F>O&o)PwebpaA@->-2D2>X0;OD>KfSKs? z#1EnPqjCS-R?^^GHV?yJc>HF9;}T-g?#W4PdGf`tdHfQ3(>q)xS^2?>aXU#cwHy{J zp&?5Wk7pBorIY`{;Mhy^Rhv1uN!TBjUZYx4M#F#M^>57BZD`hu>1AO@`>e+-lI-dX z?HBxTbR{L3OqNrNba<)wANyrFhZPI`?E|#Bs|vH;%!GTlB;A1X9!W;?!_HYKjTc2!@TM@y#3#51t{599Tds#~>y7Kk_7?wXd4 zot!;%fko5IAEX5#UBP!vVq(>V+0=Lcq#(lR%%P9BKT7`XfH;%y<8G0Tp4ZdhnH=W3 zsWpO2GQ#ScS(bkedgJa0DaDyT$J-5fpO8@S1!XV#Fjp!;1tBz)8DoxcYgQcY?%Zarf zX>&;rZPqSl5N@>N?yLcV@`XXE1cZ3xZfDPHxQEN@k9T{(020YmC9*8nJhFHsjjB3c zI~{XkG^WGlV*I2&tenaH%}j-ghYu`TMZOZzG!|1wpN^vER)0bfi>DwK&5sp-9yQ!8O{S_3?9{FS+6 zRVqyrzrITGHexu2!aT)YMHuyF(wggHhv6!kvG*uXhtlizJwh^448B&48K$fe50$80 zhol;J)sSa)G^8V})b&)e!pK6dl?h2gX~*zBDb}YARLv+~x2$Z6ug)w$$MtY)xYqKa ziH~cLh$-Z|bMG3VrRQ3aio!V=!#aglzjuEXSk(rmgXzS+KAit?wK$8wsdX_v3<{P! zzAv#7kz1Hg$@;!GxSTEbOb_!y4E%v#)+16=!FDY5!@U$;3LwaL^AoY@&>BwbKwmw}Pv) zk92fwooRSp;R36)UcA|%+hUZ{nW9jn6xt;S3>VU($o` z?wWWw6SYk#?cis#2-=vh*9~X#LM5epzD_g1s@r1|@|K}IhWT>HsidRbQvdMAe2@!~ zOJs&z?E=D{ls5!90w^z-H1kz&7y

    #Ewf>R?ev`rG0F1;!e+=lh~cCPxyvEhvb}5 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

    EJ#)mP3*_; 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 }FDz`yRL8?qCos(vt2u}SB* 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 z z<=~BL3U)TX#DCnXF1v#`*|0WG5ez@tG0@xX)~+Mfk_6XEQAQICLx~;#0l=~oSbrfl zUo**9x7RsrN4YOqFKRi?ZJf+2vT81+tp4o8SFwX{uy@l+b~n%JgUW$1)Jr0Y1!GKn zaA5?f7g_ZzEgc2I`&ZwW2XO!Q9jrfykJG+@X-8d9!W8$Nr+zw_8(n1Y##$&0VfF(Mm zq0ewmf%3Mj87ro!)*gL=eYMO|-J$|7vf@@yG3h1%!4cf~0862ZnVf;z?f%YjYxF;} zH1p>FD@zkM!=_N3{;xDmtKv)zvhMr}@knn@{LeXT0hvgr($!T~4jMcg!~D)AxwoF8 zg7Y2eB85MFLqBwg*TV87)s?R~iB!RxmSPvM- z)^PiF_jETQJ5?Km5;IQDFzdI&ryo?`Fiu|>rA<4|nS*d2X`DWNMmeSpjZL4?fEwAV zM=9gKXG_;QC`cCOE=*R$O$Ie?_paAloL1xP$GU|GNJUBAaO*4oBmTIA^8wzkpxBratbKE9>Ba$$g5W{GLUIk+>sc@U$S*) znzpk6s)olbSF4kss%K_v{f()!%_yFPRk*CQ(fIEPE7Hx~L9cM_?~##An(wiIe9l~r zduE*LVtxaSzr*;KW0e>@arX0X$jge?1(!|u<=2Bnp9sXgaV>AG8#8Fo?!3JwS4MpM zc3hAvzVV`YE3XaY6bth!acdJdKJ*{MIGzA)qMt%Q_TelrV_Fk(e14D%{;P5pmB-#ZjZDlooEE@-JTrXn<|Iy5mWF_YiNIq^*V(g zH=!)fE!c7*`LjLuX{xqi#JJ9#$p_BbvXbJW^YbfJC#)k?AO8+8tJu(<2r+tHH|i1| zE#uMPFbo)0>Z1+2sOzoT_ALi)w+(*Im5^^Spmg7kl9slj_yDK=ngVpXn!XGb2tj*x zn9(F}?#@-;0SXV=X3Y5suZbLopy$6zkkjHHCt=NrDKW`IHqB`U=#omW}00WphNUO*O`tu9c6;H=`8P z7&D;ahFFrP_AL{!>m?*l7+3(UKVC6@U9EW&?3622c$!)FNo6|FQSH4SKr@+UDI9j2 zFFewEHnKMc50XT@DXKR@zv3e|=E?Fd;``<33gg(iPV=0$_BKzZI~$w#qxO4}?l#3f zv9vYUDc2=mlm7;TW^Izz{*4q{bQUFg{>u^hB0dkn@@~is7C7SxJgo%a#)_`9xxgp( zY;o-T`W{PB?5)GrcaD8-zV93sU97Lw_Oi6Etc?YOE=8tk@@aWiD}(nWO#KlfcGJ=6 zX11#mNgMGZ5Zn4oO-!O_YnVxXOq?HyuERz&>%y<48jRi=^9sI*UX84NM;#GTigcS_ ztpGFohtD^qE}i_@UQ^m&>UxK1nu>>z)dTWQ+yXQ{H#ZS}k+*e+2eVC2AiZ=@&Af4o z`^^d?wy*M)2Q!n#m=(F0MFHfPm?j#{&qTX4O-n0`S6cT+qaL7%Xw%$GjG=&WE%J3&j$QeDNK&JemVk6(oBJqpOoFUij{iN50m8j+!F;(r-f zEn#8)HGQED6Xic;!9;jd0Fx_kc~*w%MW_$Po;PFmx9OlKuTMssB2{E#9plFx7gSWM zfZ3uwvd^i;v(ayrZZ4qqW1fal-4z2I;wd+?2=IfDSLwa}>e|_kHq`c=ywc<#4ML{? zuTN}_a%?5zy1_+ch=Px0;yt#eQ@J{%-#FzHSYz|il zS54`pXb{YUz1ugQtc~*WbEW2~MlQ(vLPKzV0(JhQ(Q+SdEr#Syo&i;p56#P}T_V_t z6t)-?m?B`|lHUk#Z7k$|2KPMiv~?PNyHJOl5{47&4%cO~b7R|VDQ85Lw8nH~fWaVI zl*_u52L!|5-M3jg%;pdw&}q_)VBYriw}f3{Dddp0)@Rq@R{iQWW_6Bc;$ot$TYG*c zRXkH(-JXY8=}gH@+#t(3&PVuC!l$}lg)&Nwp#FY>c&0pjE|#$y7M3%EzIF<_ zW%=Ii3+K4K+N9_e6Lq0#$wF;2*w-%z&y)7937xDNoK91d^=wN`#9SmpRSqptd`65c z^I8*DMsE$A`^r-jbc1@MAP+~1T|os z?c=BCd7DBF_#Wnww1KZmN=pZ>4qPw6ZD@5m@meOb+4jI&41eDlvYzgQHl|+C`gixR z>&1`A%+G@+J~gRFZrgsm>^V9ly@2354ZT?%Zm(u)I4z>9JPRgm4p;NFWVy6Ojo94t zQeqvPzJq9Pw=3D)OjlJoFr37+)*ReyF%L{H;3CJ4O!>%2tjQKOl`y%~*TFZ^8IBg! z_rtP?U9$1??;Pygyy%1t<@S;q@=zBK-mCg?|1iDWi()R5? zi$#AUWInZzO)B6DzJ>DU>;&5mU1)#4jd{%u4S+z3bNSboLgFl6oCLCmH7XG0?KEea zY96%!P5Y!}#u`fvyKTm%tXtxUhQg?GC0Z7iOswMD#EX~F6dM?BGJQ3DlUV{%CxXJ) z;&0fcIgR9_mTzB^_eHFsG^-AQ5n9lVHoqvTr-sUhB`5<3W!p3gZ_5MYHhFM#ppT=_ zO_p`PbC?Cx2czSoM15=X`LiFp#zk*FU7g3z8(o#|dU=JNp2R_gxf(5gbe)YW}+v1<$U-tb)M;c3$*X7v;^*q?1S4Qhdw z9_$~yEc+_|n8dqQO-y(v(3hsZYcBRK`R_f`jcl5YD{Hf`8bD{8Ryc$!y_|pex022J zeLhyGg|yqmt#ISf1p)=v~&t>?&;t-X*$((4~=S2N?nO_0*2@ zqFpDyo`$T-PoD-J6vyB7G^WN^bSjB?3rT(Fc-zmToh3NAy5%2vEBtj+wZSA`Bh~_H zm%CSMXzLCcjm&OXt=nk;B3cTA7wTYXids`mg7nvSM3ll04J0xxND8Lh_xA)It$s}L z)l^~4E%nNlUoa9XyW@vrCW79a`A8CK5o95p5#;4g+T8E!l)=z>rGt|6;;@&3SQQq* zIWZ_p;YRV|Tm;ms!T*=qAIe9rNKiB!{ zGlcC^5z2f~(>&MU+Apvb4_CHc*qc=bWiJcO(0QiN zKve1Zf;wq*=j$K39L_3qe2;q!WAvGBGomj?F-fbsrrU*hKZ!P&0eu1- zcsjM-Lx|p4_iP_I&Kv*Qo0GX7##P`sW#rgpYFXE~2|i!WCo72Tuq)(c#$HT!Rg?{h zd@3B$)Oi*uRT_3Xf7YI)N^cdIokt`=DOJ;{`^9c}{6WdC0vdgr^#H?Ow?Kr$G zCUi1kwczptydN?4M0B*Uc)Iw6Ec#Oz>jvX4-r-I+-alnV%SKhVWPU_mC2szyNbHI7f-9J4Lirjo6HZp}o0m9Lh;h9lLyBN}IU z%E{8Qh_srw(Oxc7OFavO)I7qHg6o*;w@zthHon|X_WYkMIV^8i|9L4vcxUI_!jpt( zz8xgtw=Mj`>J_3dx+v=xn`s<0oQpIR#Yb19{SrNG;Pe48eme&zQR3#TQi_N}d?9%1 zq_puM=LKCMv4!#=Pd)wf^wXM-_#SBjv6R?~BU)trtiw53)XcQEt}Xmo_{X>ZBIXHq zo|LYwc2k@JqR-~j4~ZuR15Ig^;nUB*_0+2s-|DF=&l7j}_%WVUbXQ2LT`@as@ypMf zZ;W-{MbEpmu6m%}NEzL!tlR22Qw1)zDGC)!V}J$WHqma&aKP6ex&9ItxuEXLBaRcNBhNLJ+G-Q zLh{sX&EpIC!7V=KHL=3kT-wBBvL&1HEo$ZAd9pA#Zc#`Tl1JHV*+{QZT=JX9zcf{^ zIF>qEScVj5AYDb{Y673`6^ZUImCCW^6;?Lz4#8HgJ@S}YU!OQ7SE7|E8 zp6MLwh>i+L=|X~Or?c|`>yPf$I5^OBkl>FpfklB+XlI8m*5BtVUgj9KMM>r2dh9q>OA#h#dlse*|D1~{_ff{aFCk~Cv#pdG znV!xlrG_~!*3<@ z?#VRQro9$bW&&Mh_x&_G>vXAaxv`y2sK*7^dj)UVPpj$xMaOcTNjLolRPGG*+PPQv zt?l=F4yxH6)@vGF@tj}EZS`K-LSlk6YQB|H1_~-W0MrCO(k^M0Jv;B*utK<6X|S^u zbeu*BgNQhns-JB-_GMVE!7~f**>dhSY)2Q=Mvank@@0}M%EA<$Fq%$??naKBss%mx zRBT4?n`rZ(zDJAJWKrw#AA1B~y`g13*-_IW#g^{nA+T zE@cVTwnMw#7QZzgRx<}g8e_ba4ogRBY_c5!8j(6qn?QNCiS7LuwIP?rIdcJjN+LO5 z6E*c!n;#@)g3|~jOo>4Y;Af9FXdzBJ8rG$%P8`^cWJCn|vWK(FhUToo%khDDz^*Qm zo!osJiu|C^MI=S2u9>YZ#p>Qn2tOtH0fBOrWfgYa2hm@i?52{FXi>Y5c63i3Z!2rX zIeIQ`%HMdEvo}~KT18agl-03!nRMg>w<7lZ4*KGk*Bs4796M|N#kQhPs5_>zl8}t(1Y?n2L77R1{h-j5zj_u*M<=JEfK}{I z^au$Z>6lOi(pw^q*%l1~OXKF=R{1oueV%qxhSO{SGDm#Qoh0odCGxHb;6EJbxjvZHzU)sSz zA5d1_v$Y?;m#b#FqKLxPC4ZPhze0X{Vd5L6CG@io=Tg`t3WD&>iygnsZYpii#c3W1 z+MW1s-G7^LEWUHpJ+2>I2l(J}759}Ga2j`w)G(LxzlEj$gXZ+_Ll#->c`t;cVu$>> z4b|lMx$KG|y&W`gT0M7J{9tt6z)oZ(Yh0C2)68kgJlGA5lmteLi`MH46G=A7DbxQr zBkV~sKiSkwAutmi2#LIG&tItjL-MltLw7x3Q=;14s74%kcrcjXhb~|1BMcAwD&c@j za*FOQ$4d__hM6)IT|w37^jq#VevF^(67X3xOy zX8*@${0~{}->3LL4iz897XJ31s@<^|!*-BeW?%qp!J@^(U&PrDoGa;D*UxX<)L&=W zD#KLoD|pu5B@Wj-)IXIGJB;^kQSEV7j4RGcH;1bg5*{cXsBkt#olOpkC*h@i56{ZqdN0;u`L#m`W&U5 zlQxv+*=h2x*4VdjWWG{zY?mb(td;JR6K!>7F#vlwWHK5P2N+vNK%-N>v1ZtIAlNDn z-$P=o7~=(9N7o>`*8npX#=2BCWbD6$kygOpj4|B*)n%dKY z-HS^7o86mKeA~?USJUAZHZz8NFDucLijVD)k6&FK;XkPE7zj?cNOI@1H?|D1NMe(M z$Bk_E6(F0?Ss2@r=5*dFJXb(=L!0&Ow1i&?h-zhUO4#J9OyAu8Yp8nehFiVmBmsPK za{dVk)|4BVsSv9-G!$a@3p{n%K$Cw4XnV3+yTMrGlhd&vMu z`pT8&{NPD}CXrbWj{s-+^$1%LEkAA9#DwPE9*lfz^7K5C>qbJ5WyV@%Q$WLB2QB-g z$?p!qd|AzO`JsM7WFA}xw0TYP$E#f0JeT@@dj@(Eh?}}~t)St3jO6scCcWx@ihmGT zKI?}p^+xJeY*wQq!c!})ljR*Pteq;HuXcm21Hg!X==Sc2Mn^6~O}7M5>Iz%9n%6_v zFc9Pp82tR)bY{K)A?=ssX(JI-F|K%5N18#1#Oy)B2pcXX+chsw^4mwMYXhqKX)eWt zaA!}Yxn=9n8BvHm)fq3DRc2CsZffi&*z78WSsI1-ZsoUz51dQNfsiduILgiPijBNN z*q`04|C&)~q_%gk>h=gtjL#y`@|Ht;1CeDV6Qx5@7KoPZJs_O-Zq_LrrR?g(H18=s z%gi#{gOEjYY7&(NlZ|(v6DuE>`aPPO>sjFk7llHCE#@Dzm_M}-u<8PIIjA~O-FsJ3 zJ!4EDqV%UVkFE(m;Mc*U^Q4sk4JigEVb}B7Dh@XLED- z^RUsqq2+3q0 z;gq<;&JcM&4V{Q-qPD42gcbU{@bGqVs~_?QZ{!0%J@s!;m5(S6Tn!VZ-M9Dj0Lm_Q zRVfwqZ1XSMuVC_(&a?#%r~Q3$BXyUdJ^`oarMj`@W3Q`H%lDF4><%0%|DO!kaeBtN zqaWU>qASzPUsm9!33|1=+9Lc0oC&69$Q%8$a3Og2wmM$qYxktEYqp~<>X-{mjlMKz zX&<04Kwf!&I{db_%7CthOA5Fba!TTCSt471%O!udlReD_^gFT(z@w6G=$ny2N!=Cb4_ya?dy;-n7PHO>eJr`G zy(Dmvex&*XFLPqoMXQcJ`zA80ViAMlaO32GhobYgtTP^NC_Y=Ek|j38{Ggug(F4UH<+)BeuE+zN)WUa&hH%ZK+>P=6=#flNbg#tk&PrJ85Ho4m3E_-lro z5WnF^OUGK$iHIp|MPFLyu&k=-u0Aj*P!tysqS!l74@go+J{{3G4L=xQ!RzPw?hlsM zk|H7kqAM-Uw{uiZiyFdup^-TPaLJ=Did1j6p`x?)pfsqWMBmY0Q~Q|EIsV`6wf2x1 zT@>Z;s(hb2G$Yr$$yj;WPdaI;X{!4(?}x3~4=kelS5#D$=e12@;YcE4auI~VV5%q~ zWeQ%})w$oS5|1nHO`KU7ia%UYlVe<{eln(J5sCM^?e2DjN-RV27w_4U~Ackzhawd%jZxv zd-~jYX4dSpQP@)d-fC|^{^quV!?Id?e^M`9B+KTaE_(wXx zgXZx2Bbw6fHdww6vD7#hTTc% z1wj#c@M$Gdt0~U>czriFG$ehn2z~Xgf6@e zD#H^XZ#Obe`q-fxdh{}k^X<}oec&4v%xN4WU2se{?j#F&=RvBQ_ns-n{@bS83(Q#* zUrRc|&rRj*gN=vrETx9aw;gL>y(AtQW$sRh6L-!DMLFXzZYg{@`ev!dc%Pqg5t9jL z#`t~Q1U5f#K5^c>d73(8qkWW{Y+Vm7z29pU&Fc$9=^st~g0itb`(l$(VO#lisrGT- z>4inb=n;H+b$&1HxvwYZvr|fr*L}~J0 z>W8qX?;Jx=Mq^dS6+tI<5pWC2#eJq9^#hX3fH!|kbMTDw`@!adm-#iUlNEHRTaq1c1Cx8jQ<(fOil%AwJ4-JjbZvN9yhri^8S2i~6T zcKXefA!!yhqnlUiVx2i_J$mp4AE;pEW8Z>@c^cZ zeUa(qW8Jf^q9sjrIt`?>)e4oB)q0y}RX17}3+4NB9{wlM^lD7?A>!V<4Pg zc#E(q-*NH8_DeNwX(s#LP=cd#@5I!W>WE&*5ymZ(SQIb7kSg`92f)s4W!PWiiwv>XVIk-ySV)q3iymBD)S{n}o)R(`x%&TZ%>Hq>HAtjh-DHZ6+H$2qQ+w6m;tXJO#whAIUFdJz+?UJoSthP? z_1sTC&t$7YU*M1ba0lSHJ)yg8(!YgGoIS(y1T)g|E`q;vD5bH~zcK`#CH!wFB7_Y^ zEY3C$!T%Q%k!>nm(Sg9piavIwzX8sJhIb>orl?IE|` zV=s^C?ER9|ew9#LdZ5=|=L#wo{dun{y7UCD8|UG8P7d}}-~ZirXlq{&^&?}NNw_*U zG9h$yAwp9*a;iepreE!1a4*^Ysak%wgpsMCOX3g7DXPBm*s*&JQddXQ5V}GaIY1{; zR(crz6;=?rnVhiDkLe-0HhCe{w~wRaWVO7EU31y#<)l#uC_B9@%CN4_|KTF_>)+|+ zoTXwIdqwF9{eM@KuHRw00Y9?3*?mb?Iy2P;B6@@s%-MjgQeYXl!kHWMCL;eLd}wf( zEr+OkSog^&$}j@soZ5P|S69D;u~!C*UkkMT?zd+f1p{}bsEe#FgA!d$d1nmSF&%rP z5TKD3M`GPjJh4bMhXwA>%89lv>{$=#ogQ-2h%=m{_75$lWhhZkUJbhM7O4V19^PWq znT^EiDofo@9N^)$lkS4{C!L)UM5l6nE-EJ3Q#iX!hoYE&&VrTZUPpP|3lGi)sm!cOc`1~Ox=7Th@$U+bmA+$P!=Y+{o!%g2nJWUG#Lna04!EKLZ_ z>F8idPRgGmFk$U9tv5j%SKN8vQ@m0%OpG}UZm!_W)xB4|odDk;6s{LbEDdHQmIq>+ z9h(7>%=PM2)cJH(R51C>ONkogv=bZE(Bw~(3^7Ef*gABtet{!gI*>e@o2G6aN?(isENjY zLAGA9jbc9BHPc9u0^vOEMcOK5ibh{1pMu+(Q(Ikfx1`Zai2!^Pn@nuqqm%j7GTL+U zR(~XUtU+|fG(Y{qc-oDPMK_!rsDd(H=IhT`j*KdfT}sCD5A5287a=m>rKe|#x_~bl zr>nx_#da+C?U;-wg&bNd!I4lO*=d2v_XEs~7gBRp_;f-|REwi_C7J zR-E-+8|oM9p?y%V5KuI7Ss#_dF&1v<^K(h5;m2b7(ARbco$K#`yfrSKWDRTBa~lRW zwm25MyWCc4s9>qBi%vFW)l2eCN4;Y(4wO>wPe;km5B9&;A)Obhru*6PeUgkiyIrEv#s?)W)ikhYm1Wh269 zk6F+=YpW{M+>xBVCA@WMsQzz)#P;R&ZHx;;Holy^eMOJ@Z97->gBn!xe7&LiTbGX4 z)3)N&ndIeb#+~(I_bf=Y<*SF*Az7sS3NQb$(Ki=r51W}^%L^wn3sDxZe=RJUm$ha? zO2FQxn8;pV+4ubV?`1zlLv?)SVO-!b>y3)JSiIL(3|6=Q21EijXibz2NrAL1#!Pzh zuWHL;^M&$(NiF?0BmTqay6qVR=6x#p$>ONQzS*8R5oUgD+7_oDIty_Qw*_i+0FbvX zJ}53Ywc=JzONQp;HBJ7ZU7~inNk3j$iscpyLOhsnOJu!A=4)gGO!(QuZe#@x>r|!K zM%1fU&t)1>9U6QMP305SB!ejh5han>JuotlVq-&j$_Z}UqZnZv1pnAbMlBF(9WXza z`x=eO+^cw6lJ!&CY8#hB$hE(k6b~+kJ-|XSQWa>w*)_ANU6+y>kSyO8@pF!|X4^Vq zDLkI95C^s{F_(;vwg}fZfB$ydAEEHM;lXzf=hv}QlzwK;9sg6i8FxRtVCI8mwrh~s z--NR~cSgG4(N<0@ON6{RKN^2rt;aO#a24eT8OWrXe1mQ1{_&q3R`%cb@DoYA<)Jip zwPSDX%aP_~$NtIi7u}EHcX}hFCZYohjQCK#tSn7|9#afK2!Glp&XAm=kqPdF#3P&S%m-&;3g5EwwaG96qUO3VmGH z`_55T6L`PyO6&*3^=I5#^l|0&;Lb*u?!PcNDRgxq;-I#|Bw;S2*|I*XZ43AC6*G^l zQZ@1=_5X9SfB$<87Kn;cq)TPh&Wo{*j^5toy3`J^P-VlBU&{5%@)g>H2fa7L|Cy)B zBQoWSwSoZ;ZOC6@WT|JHOzxAj*W&A>>#fXJj{k5)moM+0Mxd=ty7X0Tosb6kGVcGP z-1zxFKT`1r8aI^$Vr-zaYiz~$U(0TRY=rL!$Z zjc>n(K!iAl!2-kSFX*Q2lR@|KSLx!SI zs~vJ=PLRO(qnSE4NR!5kH@D_C*=Q@FWIu-lHmjLOQ|V@2PLhqsnOLtA7Bq}?!QJni z6eE?)8QrTS2EH*03fO;oEXi;@KWd2V-xM%CX+N;_4?7Ag@Qx%YsqxtB@+!5hf&71e zA=g=x`WyaVU5*uIM2i9P$Rim|fg;b{K}meq~gQD8qZ;cCRmBG#J3g-R}9E z^$EY)YZ|*Zz)To>kB9#3nYim+5S?lyC>H{-9(LYy|2(_w*JQjcrvMf+xnut03@T81 z?Qbx;*8B*IAGTb~9NW9N@_+&Pl)jANJUNMKDxC58tiEa8d|#*g#4I4&f%KD0&v8jM zQ0JijvX!@oA1KWP1cwE#iZ2Pj)Ht-W=$q2Fw(dBOAv)4{ThGbkR3Hodkm*ur;mhb1 znx&;z-o-!*+6zfHH8HM5&P#W!7X02tt6HL+I76VnO5$dtM2V1?Y628j_&DpuNxOLi za%nc!kzZ>B?_=VpgKkxh z>0i=tqM<7{OWbq~TVV;6m5PV(CYsImILI%R%X42dHdb3c9Z64H;?f2jNQfz77SJ_=1X8ak^LYc}%e-PCjLyB6q`i1m zDzPngD{e<0+7~h#&Yp3FISqt73>ZnHsn^{0N&HM`wQ?lwSlU>pHqQ@QCSI|exKsX- zraK+4EmUn|i*%&)rbpyyTcutNn6*P++*9lcIWc?S>T+!gaQv2fTdjrgf?O(a{4g1{ z`_OZ#M&trz47dk=ae9O-eYJTB4>9{Ps|DLt-znT{3qdRC6y|r*c5^@3EzDtuF0Z`( za>jt)iw?RM|0Li`+86bo+tp-rG_98g-$S_h*8tB+c~f_Tr1j6OoMK!2R^X<4KmtfI}mG1ejE-7R^aS zZAUKX5@8^q!aP>u)?*%X-7* zk(dBX$)HEjt+SlzdWX+H-}~_9DS0;kBwsoD-eRM$e8Z^wtlXk=XrIwQ2&K}jTG5iS zT^enAmF-c+YRnUM%P3QfXd$)u0sf#2_`Myw1kBapaAS&aPvP+N7aF1vANfc=(1ZD< zT02^@W+yBBk;=oIy{m3J)j67itKGrE%d|>xLOH$<*j~PbTUFfud))xmCYzug<+7xj zmf478r?)$o=5NIujb}%G$;`2=auGfSeqbcillnHZaX#Qh zLr73~9)+Z9TOjc8;$8T|?y8uU)3(Xa@h@xOUQ%}-$W^4qDo63ucRr?9DMndb$RGe< zH2C-Aegk6?vb1qya|D)-NY)fKv7b>tL@mzXd?T8-xTwt|3Sm=U=kdx{w>~uHekeiT zo2%68h{CO(e_q&k71c9~cVV$HD&c`+44l~}p6NXQq56G(4 zB^!R&@+?Pj71Y~J*dRM~`)n{dY$!tBhN5}&oThN2uriTaSqbUJ#}ItapD^t=w_76j z!qF1G7QW5RQ)9srrxl|M=#u|RnXXH9Zy5cs`-o{<4CQXf}WqMLw$#VKg!i(@5WSGR^?7RKMDMi-!b+9VcY{p zYaiEzS(mhz_@3G*e~eb4`Kcr644s$l?gNeziSVAJi89mUIp7UHGTO}uBQp-PcHg^C zN+>VGym|X$azfRsL>aWGo0+a+s@2NC#iyEC`x|{NYplS3H8bCOHPllNdYZCwraYK( zt5@vk*H##>zH?*|DhkQS=ifQVnA-wuOOtdhUi8Mz(-fB5dGTo(eU1MYmZbTi?Fs&3 zQ^|F)p}rs1O#bWj1(?yF^X*iE6?zCrlwhm~m8ZHS58qCwv6~kPqZZH+UL>H2^l~o* za|pXax52mTJt6O{nN;FGHUM6xy1Op3H=yEpSN4Ri6}H9gC+8tkogUT?uoc3>v#Grf z^CL{uDGJ&iWc&wwasG$sc^LCj#2!m;#OgbT%Iu(e;>AbIg^lRK#u(S%@zcmW@^_BU z>iE;PglpUQ6Byrrr+^{=>%5HOa0d6jn)-5)bKq$-W1ANjnOk?vHdz~@LtKus3aqL2M=aauH~mWMnOOHG@r)43Frq* z__>N5=VYGlZsb*`w`6J!@B{`d>{m~R6xrWOO-{_*!m=*8533uTJb>S|Yz2gnpEng+ z#dJ_VmUfY0NXA?6thQgJn$$l}zRvf6A~aPP{53ACuMO?9uM4^jm_ItP8L1sGvW(CS z_@Fa3>f%pt8a{+LxsC;5G)%e@tBR?KAqXvt(=6{LL98~!nTF&ACC|jV%*l5NicQ5F ze-TzgjWv-19TPH9JP^LVN}pFLDp%z-!$s?$$W}m&NEwB`(A8~;|SV$Hs0l}Qd=Uqs!rv|3$S(7snT z)MfQ381A-!A>A!(CE)_5iE#0aiJL_^Ct5&?BDu51aP>G2^n26JOhiOwPitjHT5BvA zr(ss16Lx|GwKZD2e!3bPM_<8t(zc7DQvCePFQN7{F2X1>L#JO@Mbu}xHuLxXAHv=| zob9!3_wTd1I#;b$Ra?_)O*Job&8rg?#WKdMHI_&aL(HCbwY0{XYY0mXF-1%f5s{)| zDoRL@pyn}ALlQ!)o%O!^{q1KTzdyFWB1e3W1mEkv@9R3x&k08^XG-Y@tGR#mkCcyX zSHXQp8q1`SoN|{^_JpO-Dhe2{#;jP(!x=fu@vIfAIUVu!co)E7*lx}@Ww}dt3g?O zWi3bbkFrCNWmkdD_Bc-m+<{%Anu529jP7lk+f1)1qVHvr-$pXGxPl#<-yqv76vk19 z^k#r=@8LyFCv+^YYadk~-Q5PCEbwLze>CT+i@_Ub6E_o7cKd(+2*Kgf5&8X}*@Sho zvvE<_+`ivgs_Kp{FZ@cgtJx1?qHr-c@@hB8(Up4UK4l3-u#{PX8I=PH?R~L18sfL2K?ze#aOpvg+%_Z1Tv!!~hAY|y_3<=f;%#kti+Uxbuwh+|yw3CqTuGUoN zB6yt*ap+#ttb!ZXPtH)DU3SuDG3oE~J+p*7GiEur-5Dccu)mEVb~p>8y%h~a7NJXy zNZTG@ztO$E+R0x}odN_*0lCt#&AjTId3-9Y>f`>oUEDupDB-t02VH-k!WCP_t%x66 zoKHtB@RqX1Gz_m2dKn*yyO^AAGhF#Nw@Wx^gdd-dyT>LR_wrs3`1(r_`tzw%4Lp(V z->0(v(~#r#e+)TVy8_QoG_gms-aJLfF9{rzz_=9*d5+rao4OWv!Rh!}EXQa2v&F8k z*1<5(3UvRAa=JtPT|0xXqTBIn#W6YyF&RtYGg0Ur?T(NAo<8vG&2co=EE!jW%ahd>6Hd=%e&u=&4fVET*+Xea~|t3--Tkh{-yAj&Vxv5EXoyqE}&J@VYS zU|l~vD3G^>%<`A*V#+RxL}7duUDS7^Ne6#&A5Y_8RUF(@%xS@3jU47~OzG9h`-NcG z6iy4sm}^rQX_EYHtnieGh z2y{n_N$QV#gidj&CL^68c#<;tRrg_lW*^6;+z(c5qCPWQZ z%Q{=?{=vODGU~0V=Q@znly`J;G>z`?6tA zZCw{hvcl}PnZ*DvDmy6|6ET3LP;rld6?bEonNnSGmGY6nL~L46ok*!jf;QCgIdusD z+_@gvfZo>eF+H-Za1U4k?eA_m3cUpOlAWv;n&DlMxAe}=_%{4~%H)RlzZw?H5x#3_ zKf+vPu)@MpQNgn-U|3@dHR|mN8ndjcOil}jD8wD>iM7(FQrEUDd>X?yvqJdP0R7Bi zbVkvwJE#W8k=e0+dtvxgVdY>p8Xk2^0&-WwajH?H6{ZN4L{8JIkM|hc0%jf$sTiTd z^?n|LiX_-ekpxi}7h84BwM@X=79#e-HrC<8ApSZjENH81=>;;T1|PN%xagvZur_N)j%PrZ@F)PRZ5pOcQj|FT&L(R0;JZ-aJ#G^ z6?$b?&1_-ut=ZxVn3RK7zt+?8>lxEupBMdp=CI@cHs8qpAM?%qe`pJPCW9#0XnDeYRk-PzY$cyDM?rY}4L`7#&FZh1lawjR{@_WvuPy33;&Z2X2cg0#&hp5#KI*~0yFHad z`Rn~Z&wlj=eOX`gb3rC_*;1PBUrs8iB`=mtt9%3;IzlZZ$P-m{4T5^yM;Jgb`s}*=Bq_6~b>e6Y ztvw)MY5GhLK}1$6+}%AcsD9oAdK32bV|4Xq@<7wi+*c|r%K5LfY{@?3gfQUR$pfsz zy~pcR7f;UMCEK;R>$V2RHAQal3RiQaPUX6zUG}nL5JE@P0`Z)yyXyl7?Pj7^4jmU) z4gr8GtGO*^Zw`d%2ghI8FonhZ73Da8g z`iZ};nR1O~U{;L6K|-y1R@nB1gCkPHlTIEN5Qa*a?s< z_>nwTF8--Xx@Kr&{~G^i0yK=i`ALa&B)xTq01hrJ0k;7d8vWRsbThK6^QwICSk?JM z+eMvLeTknAb7oG&4DDKw^5%3yUo8>+!YAfq<%y#@SPZD_Mq^u!kd%iEdaFL7`fICy zN9P$Gv@_EE>9OaCg{FeJ^eknI-LSJAAhfW6lDZVSvQPlcZ5VhTGZ0O5|KVs2UJxPaq+msmbmHAc&s-Vh8~V~5nStila+p{ILht$j#yXB046yMnc)qz zV=fwh-nY^6rGk^aQV?g-hy4qtDV_l#mNPwIs%@=4A}}qawOG&=bc<+619#nW%0z?7 zni&ZOg0@gj%6e?`v*Mp;#Ix)7ZD1mUk;<#IBH&G)=5Snb$_#B+e#vi3Pn}l1Fm)?* z%f8C}Qm9NmvYPb79i6}1!5gqXWc6SEVJ2K4Y5hdPawynVgmPC-S<<^8$ttNV^ZOtP zI)fuGd+&SbTJxSUsmL!iGvL$cM0A#Zh9YEzV(TMp%yPXoKN9 z9YfyU{snz=&QQU7uAJs?wgZBHAGfi%`|Sm-X`HL&w>*7+$uSi@U#$poll*j2QX*E~ zMZ@vU9v|xoL1&Fd;4vP9S@0zC>V8DrfXD2g(Xmq>9vqt%^&9$ZDZAknD2f_EZ9Om; z#{0>oGJA?zmbZoNW})-DUgOJZ?t$R1)a+FM#Dm@J!U>=AzgI+cQx-#30oQ(^F4leDyy(;>97TIcc^s=Eo^z%km&ZuY+(2^;!yq4HH>c?a0OP3O>^p7h%RI)LGm%WvRjhZBz!cHD;Z6)3;1r#cK1rSksZy@f{{hO?E=yHF*(G7Z+l6B$ITItOmZGc%>2Ka|6 ztmA|-yTCcB8DlWk*HTI?$4X<)TGRuFeWT3ubWv^XA)?LJq!zP3rK%c-3W9#8c+OYO zeZ|)YGl8E6)WXEdrdVv4*6lyKqnGUg*~?WAt%6o9B9!#BKggKEV2z@KoAbut zt9~s=$ql$WlJ}|3)w-|APbl9K>Nj4oFQemYt8%~R(#8LrrTy3A{42$jsoKz@y!VfN z#=Wn=ar^-ygC2KoyQXj3SR|1)OT(A@#{D!zD&JK^{R!&-g5ejH-`tVoxAVadR_>|7 zLvUk>%zOHB#a11H$d?7W_vkm*{<*NI;@na7x~NwX{&Wd^r?_g4-r?6>F`UaJzD; zzFhti{?TL1XwvTAr%cyk_$x+A_oEGpM>)>nG0OZ?JBz6XXTeVZ;eu|?%){(hFOcI7 zN{0dmE&M(zA{6qUZ}-;38h?lI-=|7Mdu3j1+E>syMkGMp>E=k5Q(XEh) zRXBB*NRQkf>sK=Pk{s=9rhe_Nu`Z2PTppRq!&N}UqV3w9-Wx5&$Qtm)ChGapLBuk? zoikI4C_MglOFMck_@H!6Ig0pwFfXQ#!Uj2N7R&X@&b zamHl@52dhP9AG1PeV;|G@PZrFYUK(PQ6b;&^e&T&OwwCUa371bvn4$>JwvXQ1t+u3 zGd7+*x!gYqFN%bWT~R9H8$}ocdN?l+)NI0M&h1>CQYtF~ntMPd3krROVE;0`JFzCK znce3Elz`4w`t3F<{$M-*g*Iy4fnf*u2vTcAtw-luR%+5nE`>fW^c75*EQP1zb@ih8))1G^dw9E09^w)b!)bZRlF)-A! zL6mSd#hsSCqf*&B;8|hAjX6tC2$>au5Uyq>MR~n{&`KG$tM$-(hcI4V$1Cv>uVhrn zM*`W$UE8zcM^_0^zQx!vv8F8@X|zQdy0Shh?8x|8zi-6x>lnT47#YVAA0;quRvy#@ zlKPOC6*69FZ$Rx6huOdE;6c!B*_`3v!}L2b05<1DJ<*2 zjhT498YElnnC>$8XcFYn*c!f@A3xXT9cC8R-Jm^ivzDkCw$K=)YOg?k{jwaCzcyW2 znXY96m>61NZeE*khe_S*kgK)=2Zn(D+<7{g`+RG4A*>ff#emF-n@I`YLu=Yb=30u5 zDcGZL(B#Z4Cv#O^`mg^;F`Bin=5(g-7=-4q7OjNX9{;~_T|5g@<>&S_5(%gJYv#I zs;ytz<%6oNmHF8#GrdC3M^BpQdEzF$$W^Pzv#P+C%g(*7D|2Nb*~3&G|1%= zxF5K~RkdLtmUIAl>h^<#P#)OC*L+gxu+*X`rD4&Ht^mGG`QCz zPojH0Hzj4V6R!^Le(XZ|kit&>(A6=a!WJH*Cr~9jegFUYg?Uq_aed zaFE#p^{nx-O*bK9G1(5e>}pMuA58?9P{i8S3<{S%h{w+iwSUn< z+sBW7vMD};Tv9`~&t>&`6r}sNLc*Kn*ny%NiQZdf=78#i-wM!$Bt$K^iZz?xSfkmlMS z?o%0t$~c^Iz>Clo^ZWUSV_HsW$~<6eT3^WsIke?u?byqc{$srs#C_OM`3V6#JA-Q` z=TE@nZfk7=K*0Q$JzZ6=S13A1q4sTmVhK7w;H$7hPmmUSN)o<)e2b7M9K z@&pl$zB({BcX{iR%9s1~ur0^;q9QPqr~4~W$MbhG)f zhh~`bPFb^9bAVmL+;$AZu*zV8RgA>BAw_%6c`WlzfQ`-EqpQ+yr#N1<>Oze=EgnET zADnG6vF`O8r|ManjxNu6Dk>o8v?wDx4?7(~)hYzt5(dwy8I^ITdjA|Fu|MHGkw1dJ z>4#Fy*kMx~YCyPkUziv8aFSx3B{)e-+EsS;E&ERLO97@>ncwXDYmzq;_xbx2HElK- zRpN3m++WO>In7yo*=i7-k z-xzK(&I-x3G(~7xlnrUSJEs<;J5R6h8i$tAHGt~s>hXWaO6aQi;9Y)ZIY;Geg^G#J z8D81iEO8!N)P<=dl;yTWB^SyT?{)d9j+RfChOuy4o!cuZ?|q5I7r(n;zqhCzQ;djD5YcfL58Lcp~lJ4eGhNlq}YT; zb$EI%&^|Q}I@&MBQ4Jg7s1`yWXWH)0S#0ZnoX&N6)w`eC3!A+1xqk}xpe{^8bP5Yj z3hDK2Ef{*AKE=UShZYQ`dt{hKA8E{XY(va9 zQsH!iHgb?l&@18#Ei;nK<~t76cfg+1Jbi!2&|%nTR}=LD^L3&&{>A2b;pC$1<|AoV^%b>1GpECRmLg)RhZ>n4Sa6S&F|V&ZWIOqM+!k z^K!cE@K8bSV(i#nqX^0wbLOUbPvyg}UNSdLtgWpJ|Jt4$Le;THUUG|PIk~<`A)DZ% z4xCzjGcrTO+vhSZl|TS%D|WnAl7B&b(G-68vN!*@J>9Y9=daO#)PQ024Xgte?}|@R z3{x_}rjBp0cTx=UV@jiOF1x{C2zdfsoj!)??Hh~*%m zAP1!Qzy3XWZ(d7ChdI!?3Dsho>l9uvSH2(CDB>UDMYK{j2kaB{;-4eNY}DG_P-V41>)> zlf$)sHS`Z?OQY_M^On7~%qrYS`}57&{+?xBG1lPgq-xzvk96swFileS7e{p7Sli+N-6ep)}M58-8H9@-ug@+4v3{Rt_>k#7Vg@>{{VJraE1a%9H zoA3F$3Z{pE++t-h)iP zxto#fUQ(FlaXrJ*#zZosgy+Xte9f~Fi~oJneS=);_V&#dR_l_1QxHj= zl=E)FwoY)>*!)cD!3!78q|OOOyDc$+5!+;T#3jb zYMo)MSSQD+>z9kU1N*N zJ1=ab>O?Z{9M>tO^1JA&#SNZ(A5%A2{1%2sX&qiJvS!>)+N61PK zXk<1xtgt{6yzxeZhJ{$Z38iJ-x!scObFU}7`TgsoMQ%S{o-ItNE85t0)-68zwC#v# zyvxMo%^~dhb?wfh=gVw!TE(XQi^f!4i=hT0*)`K?XfrQa( z!lpbx0k{=2XRC_5-WigVTcmss%As!V?eG}v5(YksEg%cWecSPRD=+67t1;JwJJ_@Q z-@g-I#9Mj0OqBL{VF$%f40lrhUp!&hKxAhC!5}w+b_APUzc_8kR$$~AAYNK*hP3_c z*vrf@z{dVHqL1#k-mB}A);46>7O(Ltg+;52Sp#kT>GOwN=;FVT_t&s{6L1|+sm1WT zBZ=6oel($<$fywdqGSQ|q&r4NZUbo}Z|BP9+ZIfr*#|SbpRoTI2Ph9?&pD`3Z@sIL#lm%>s9VS9}(rh1IL)VN|W;I~1lk0#>*4?+y# zb2a%fae*2LwMl{tXo>=@PQa!qSe@{zAP0U!faOvS8%>w(AD>TRd>{|DSK{8nfuc(10B0cxU}3? zXmG+yOcVH9ciOEw)!5vHfL>=-(!V`A7;uNOm=b}w23kz)h`&ZhM#IEMrA8bMluCC_ z^YU0dS>_DWxkgFyVk2=P4LWs0eqTbVLd#BaHIqnJ1u@FR$ENjro&YAM?IAJYoD|AA zrbp&BIW;j9A(!vFxt#z%5?GLz@oH*WQF=Wv6PqdWajLb!PGh{W&LM?;&KEG_m0Vhd z_m$JBCRse|HHg0qDR0-SHs6TU{{>3Ta<4sLRgHgP_d!31_ zi7Y@|N5^_$op{}L34d=qw};@)$#+?Bc`)V#aWxtu7)=c3DokQ^?NqC4XZH|4&x6fB z^g&y{7r=W5RJ|US(=^3KX*hva*oAB0CNu_K8Z#;FH?U$T-@L+DRlRU=_>jjU#YU{( z)*e8*-wpn8SD&pKkw?O5Z3E0Ls4{l`0nKoY6q3GF%B#dG_lbhA5}V9Xzl&Fq_o~-{ z>)x$9CQnbDQd^|Ioxyu-BHG~+H2h#woOK)3EWlgWbILH-UzndkUTur3*N6t3tWE@J ze`Ssgtp(%R|+x=y`-P;A* zh^i9?*p-Klxk5f!uiIFSIyJLySUHnfezF+00{<<4I(X7CtRl~F*0jpgke#+CZp`a> zjvd52J>IMP4mk?jOnC9#dGET$2HWel->3y#&~bG45K!DZ zaf@$&0kii}YRm$R`ug6Ty(-5ebZMD<`o9{VpE{K{(m02i#YKkFLM83BtOPSfu_gGf<$_nQOa-JyEn~MA}l~j8q zAr=49b*((no|cwsU*?Y9=@%XqtmDP@nE$~w>!~t+lfDC`DN(a)ssOZ1GYuP(jW43J zqE+2-@Y~;~2q-6lRcEM7hbA0V-rPWhj#Pc{gJT-LRYjUTs%aCxOw)3<8Jv!qrqwM@nh`te z8b#i=x*l13P&9J$hCs`2h2>>jhfYe@>1hIMRCkP`?E2fXEctaPpfK8TLitAP_>N}B zAS|p-y|7Oz(chk40_t|tMmW}tneC;NSUt#M7bgcfcY1HL*X z#`;| zH05ro;7!!ZIo*#Fdmq6CF8xm3{>XqqHDXp{AUH{<;D%3WaPD^?-FSSs9 zgTz#wKY?=(@Gs~oLZT&6xw$?2D8D+TVPV7E;qOqPNKm7EPf9k#v&O4xbii_a<*RjK zz>xbMAIf?Idk5)0SmCKyudh#W^4?4mb}B6O(ag#K(Q>aS8pz75u!E*;Pq-Y$J~ZH z-HYs=L6Gz_cJnim7Oy@$ajFWbBb&wcghDZ!RtXo^isqzpqyqAbVPQ&hfbB7ah<+$i zBBJu|Q$xg+;!HFBdz;_cK8tsWw3f?JGf#J%z4(A(Yr{-Yzge#>;~3MuCKyxcwrA_r zPC8E+*n|qqGyk*}*D{RK#F1hm2y41x%N_G*jm>sQKVn1JK+OY3o(U?O?R8gv5t@>t z13~4YGphig1`|cMLCI_V>a*T-vi<#E&`C{C9-STkL`@Enx!Jt`Q14!`^tA0VKqqem za&jxOrlzq8GrQti1hiT8n0?zi)3z&hi2@$DBqPnq8eavY<%8a=d>Si4T3Wh@v-{Y_ zm!VHAO*l-z0%T6;+aTXE*sBC-KpSE`PG_XrAQZFS zGTd=Jl756QoAf!*Y`wo56>^w(JCp4tc8$cV`D@YD03O`~yE#hG;4xDfXY+2sq}1)laP$klZ*0M-;sM@J52FF7^v{4DZp-eyiq z21K)hLNa)h8tdh0LKuHNCCcJW)65aUj4cKC*8Q=WqYEU>(zdjj2hg-CX>$ch9PIZM z$sXhMj5k-{^$NbK-M0zFXLnSVLeH6ajV_x{%;=$~3aea0kQl%>a_q>|+`Clxo&@RO za8hnFl~BsCCx^CD%u&j!I?WrAAV*tLfzEnypz{3Z_bI7*%GIO9FONaD)(jX#4S{_L z$2q6;tG}%24bNeKK70fk;ZQ;`!94l}HSsNeq{`z=zar;-)HNEPK9Aun{$tr7g>3sJ z5_6b4-Z*_C79Vhxu-PV5W}vEEr}%V+DR>_y+jSga;0g>_TlcxbQ?7pEjW<(4PW(hk z2+?{*C%e-G$TNC}1Jih*po`G&P(nvT_O7An8aKq26YJ`#r!0;*1RSON^tI9LnzimU zLEN%iHX}G8pdYIbXX3yCxO0CQAS2aA^>t^thukMyF-}JnCtQjl)+dBFyG`eEsoYo1 z3vma^ylC_8*XYCc8<1KaS#>&-x4Sua&_`)#N_foF>`frG9^BH}U#9M97(eMX1Nuny zJV4lxzR#iFSEnVq_Q0&GqDVLOh(5W}x{>0$@}bT~{-`rfkt0VNpzHz;9%-v$4A3k8h&(~L1&IiMxlvOe{5{d9|+ z&pb=vNj&%RFtWiW-rgnZbkSd{ow`?t(u>S;WQ^5=`i9L)LkFf{m!je&$|nuvyDXy@ zxU#6tI$2Srr7&LB0wd1YJ0!sJk=+#={i$kDQLR+f0GUXhu0nSGqsGDrJsSOjrXpP;T79Bt7@5D$_^ zQ1Z(Z6Q87Zf@hpaM-1`YZ27?86d4FzBz(^n^ej6@J!D}_eVJT*1;0qwvf`>eN9Sf= z1~KfXTCZ5PH&1lMx?m$%b-t?z8yoy24Q?HMPK{LDjY%AEnA;AR&EdHj-!($Nbw_#U zB|9x8tv~GB46VS^wCeLNZg$C6KT6DyIU&JspNzp}{YCM>*bj^EkvgNUk#SG!d=J%0 z$%lGZjtGRQmzi%Ab;<`S`aI&vW`{^oxmA0Opn}=#j3mYQ zwuajMRnS7T(9W$yIhLBlpI^TfIb!6sEu~TN)InRz{ws89yd4RCc}v@u0I_wAZ?|@p zt>cU2%MHaCZRz){>vd#qm>NJx1)yiSvJai5E`7)rE67>NnwJaAur;&QjR;AbCD0G) zFeeLg$BZ#@e|RXbw>Op6cGUU_13Rh0!I|la6BpOD3*)=7EM-D%tvR;^_VsH=TXNdX448!Ofbb*3@xjnFc4n@7&yfA$ zN2{>iJ3W;fm|OApKOsXo8{ReA(fN+5V3f5|!5$-ZvoL@9-sI$V%-Wd-;Zuqq7t-y*MYBl(@U) zr={#Gvld~oDr}cFT~X?csR&r*b(ZFGT4cJTb&gBBDR9#QuI)M@!#hPeKYM)ih9_#z z{bQr;Y`~|JS;IUU=4i5C<05|O3I^n~8Qa*?f?;5$H*1aTDzs#HM8S_Y*BZv!Qv3yt zTjVWGKD@0ueZcN$>gplp7>tpyW;*LnA3)jG<&Hn*%LAi<=V)}FZhmX#SvDwwaa}5a zj|OzrB&bQ;HQOjZeA4gqrT{rGG#k5r8zWPvVMgA`t$q?9@evD>DjISsmigH4+MqZ{ z32@G4DNJD@-AfIA6YrOTm(m%*vuydo>YDzaA-AA|9V=A74g&*Tk|=nMQHUlL*r=4= z>{?7@yJuLMSgDv;N(pvKbwageM^(qh+}s1AbONe4k6Lw{CJmN0I}km-QK4q+-v`3t z_mIBf$2szWC5qqzS4zcXqy5T~!iznfJ*Bp0Ln|MG!ZHZB@Lny968ELyRh0h-9x|63 z?5r`MQk}sry^VIfKT&?TXipG{DcKOE*0c<_tt(>Gw7nMeqR}bt^wmorcg-iLv(BEM z>YQ-PM5|BbiBTZ8E#;_X{YF+XAtry28|-9GqLkmTHW@Nh-Qj}zg|K1N1`WcGXd}I#?52A&kICXz@ez9w?MjY? zP42s`Ux#--4%*j1O5u(}T3rWo61I{sHx$O+2V!OCS?(?SP*JBM_XcT+l*v)XEdLYbh-u4_pE%OLcn$WrA>1-@ArDy`6=DGT15qjWX*Uo*_x>1`?U)ju9rpD|5Q=L>*8_QJs zGn%BhAy3+K@Pt{z@73)q6ywV=*I!t-TM)Efw8E`iXrB<%a~g;3lYAZfiO+ z4vguQqoz1}jEK%+(3JCuxEuaM1Hy(Z`r+A|U9SR@q0lGs>Y=Ffc99!=n?AV4IrJq~ z9gbXnlc;JHn(+xNy$+zHX!FiuVNvLrfzOOoQmZFD;wT1>3F2+qXh~WM4~%+xw2f2? z-Rrd1zh!9vZQZaA*OQ4OQq_VAfFf11pP~Bq7ZbEAYktUkO;$Q*0VRi)p1T$q3D&R$ zl>iqAAfx6*U0#pjKfkoiGhb(VQ<=3tn;GL2^Lt5lHI7U6%Z($*BV~&U!naaF<9zY{ z!21D&ramU}SW&qp!?>W`yB9p&s8-(T*d!ZWr4xBb$`v=h7VvAl&W~=_8wZbmw(J(r z4sQ2&|Bk5DKd`FXgM7@xm6)87%oe(vHw?vUL8E=7sjLp4aq(aOc{9cV*eED<1T^h@ zO?PcUPFF2f$|(E<%F&U7@K~<2mQRLRupT|^Zp_|PC~O6n0Q*kz8Lsr^9Ap6IxAQRSLO09QF}?fb?? z4$?LfFa2m~YPUV*>aMSu`n<)9gBn2j4IQ1(g}Pql%mM++%9=eJi)DdAhR#sSu%5rO z|NT~XUckLpkJKaE5l%w?R24D6@Aiq2SJAM6M!K!-uzPJRfKYBL{KHn)ZVw7Je&)I6 zafnxG^r7uFDj0u_m4AgKeh<2z8}SE1MA_~@;awr2cX^2*{(c8`m$_`30TylND*#i) zYUM58tOE|X)U}~m3sq!ME*7H6L+^KxduXhETJ3FSzY)d z1ne~y<2LivI3gl24XRbl4bThZZ9wmNS>-2(?!zo_MWA{#aBK}K7tXOiIDzYo0)5sN zH1G1LcGZM(^IC@aVlCC59rWAIZ!eY?oRTFrjF(kf_nQvCAY2rKM<`E6C0F-@mrqKL zR%oN8)}w0%c4sg4aU9Y7Whaq^u~n$0#gdu-{7b8O^lg6hugPY=?3SSH_r3ql{QHz` z|Bg1@bFQiDny;8aSPvRvHmLMfN^7y7YxB}?J%8Ec+S7*7nsiI+4Y|H|RUDy&=qo0x zUS^j4-_{pHin@~wRVUtUFn6@&y03kyS9r#en>&-#qbEox?d{zU>YS*lt3D$BPN#;o z=iWRtv&x#cc(7At1iyi8-hARx=juFJu#ia5czj~L5ey$z12-iJ3kY3Ny5F)0QO*a% zqcRr~e5^I8lZ9a>9a?^m40k08zwBBtMLFiCu)1k3#7y+^5awK<%^>;$XL^xo_DWs< zg-9xQw(!$o5L2{QZ;xYO?6Vv1B3sGxSC0?FttOV_C}TsM9En@0=CWh21-W8oDS8wh z)XVKX1sh49E0!J!;PpSH8QzcaG7bojQP zdYDq0D}PBqGf9c2GFX#|cfmJ~%QqD-Kv6cPv-V zI|@1)WTqb;^7lm1%aiLtuuvdX2k80r+O zMh&RwF`e>dBi}iNn)zmb1Dw*mP++*?lvbU2c*wPRuXjx0!VJ}NhuarRt;ZsErdeyV zoX7r7z)csMMK=@dZqOh5yxU$-^GmmTM%>p5gKGOdPO;NEqPTc{cbBVI*bz$C(a@JE zYC)o1IS(5GMv$S_DKXNk{XLJqjSqE@l|>^T=gi2lB#jPAms3QR0{R8xJ}kYZwoKfS zP9N>3)~m^^csXF8zE(&ZGLiU5`0o1@Pk%p+WWPW%+VJ7sxVv|LP%~>*!stZJzmQau z2Xd0_{BttP{P<_zT!`QLn!4!r{#u6yrB`hY$KA#fq;MET9V%ECXlU_IsiWr~LbCOSx_v*-h=_sFTHuMul+ky|Ap7yhpxY^aGP`$W&KFnCN4vPG zjiuZXJYW4pPJ-E2a#U3iYkJF6(ZSE{t@JBf(S_=&E(DMD%{?bo)6}FGHX|9*^g{)v z2TRF2qpP^9At?U9<$|u-xqva~;u{e^wo}9f@1=q9V2a$xvRV{na5Gw|rSnK~nYik@rL) z_xT{%2M21&4r9zg3r@yjsWG&gU}pQSn(#XM%6M?&UzKHR9#f(+^-F^;gIBGXfg0+e z{x`JyIFkpK^aJ#^MdgxPzI<9iUWAaXjLf5kwxd{*}L_(qgwpwIbOfOa{77rtz8uDzyLt+=0v2Ihb#ouBh za@Akf@XGk?6=5FP_kYTGO?q;6YN`=>2QP^7$jrgka4dOw3l?u}Hn8wKqSmi;nn`E1 z`mtH*e^j61b>5W?B?kYW<;R#Ab&gm4s@;y>mi|+*KKy?_G4t!|+YOqxcT{iYag&1( zNlqu9WY+F`$(n6s*60gsB0Ze!{EdEV#!B@aIQ5Pa<_`zzr#R6EF?JHi5nR1sjCW;}ms&zeb)mPJkVEi7TpKhe0k z&(T8ESvc3qaSF8BV+DkgELhq1?znM6+~rTiIpqh1Ldvsv&QgJXv?2mR&83_E_UAq+ zZ9>b{{I*!mKeuOI86MDL)SRtI%;=O0WGQzS8456H%YJ~skPMxvk1c9D%SqXS@~SIo zLl*^uvP%&F$@ue!JMPf-U`~YXK_wOn^Ip|*P+PskFCNgFsw8QnV4R`RUVL3QGH)+O z(?WPYyK-&GuYvCNZ3TPZ#*O*U+-k#lbO)+}2T!+VzRAALR14^t-#K`>lqCMs@BOZg zPv2EnuPX2EBBZDkmHSK66=!?qX0Lrq zAxEcgY=4`8#>qA9%fUY`FB#3{lslbAt(Jj-j&$$yHb+Z`_?On>vy9^&QZ->cy+x^lu;rU8KqCJRD|$bx z9%)38VrP!|RTuxtin3wXbsxJzsj8bnw*_L4#Jt1ZBrNxQu$*%~SY#ECP_BnICTi!D zLX7bQO73nvcJn5ns5DVlbjfaTWVS-_wQ(zv>QJk7o9^ZM9%$`=8@mwA)_n-6Eul|R zfI#pGv9%sad+)lo;Np+vsY+#{8Bd!@J$vY3GgO!1w9sJzLXf{@;xN^ZtMgZ#ZWHzG z&+oWjRQ%s}>ou-9U$lGX$rCs2lt)>@kRdr0`Y7nJN@fJ(XI1*`n~tehl+0>0 zgS}mwsd`3Fc2Qxw;)~SRqW$JmgQXlpRvTMpH)_@Rhyg~xj0|lf%;|?V>@5i`)AUbf zGFW2}ZOH``Bk3#CjemoY`{i^jj1$Mq9Ga+H=MXpNyI(?w z3>lpmktR<$M?r6%1xN1?79#rrk$nd?_b$AA{c|PeF*e?37HHw*~tEy{*#Fl^*&seXu~e9+hBbuO+BI#u9S%V$w8*bY_a4B^)7DE#7ZsgU2TEP%0@T#%Ha4chkxJ1L z$G#R(Cr|t}v42I54hBs1gr^#;3acoNA+HG)FL79xjlMTSyL8NdL z7*|7dY^@7|j&mb{dXx6~M<~KOpZZ>S2~D1ryI?%KYTz9ISaAB2Z$4K;y{p_ma7`D_ zh%`>_EU5g}Y1qjh2clW4r;{#3&cwqYEK(~a( z@m*yF*r+lJ5{1m@zFd^-Y1zpY9~}Hr=f>xv|Kd3F#M33l=7V>*0QRbDfFsM5PTggv z){86>v34z%N$wJHtHn3ZFXd66PCf>gk!%Q??T68SKr17p!3~RVh5z zmJPyonx#Q@P7{KCx4||%2^v$^0a)hb1HeZ^&vpdub zZfpdH8>u=7a-US)=L?AP9IsWttk9>7FP2yZ?MRbYXOja@teQigHLZ%gV@ulDEe=f) z%>L{4&^nWw>QnCQvbqyh&{tU~_rcm&GoeT=G#{e@U>X^aLzfB1zp_c5fgAaWUz`>m zl7LnMcyz`P;`Y1Rd!x>@r>kENxsmrdVNw|rvkP^YPZ(_vwBb}cL8*uL*f9oXUhSgw zK)qd|Lx|1bZ`L6DpnGd z?2;`pt>drHA~-T^-seVWkPTaf5Z?U{ZL5{NSSJLj7QdX5zG^0DdMaBXtU6 zOc57CwH^XNQ<`^z%1$wCYQIuwBj6Ha+=Z50$ON2x#g^x+i{Q`zy~ADI1SGQS$G;Bu z6>QfJm6$>lGp-aHBoLPfr}j*NzOv4qFW|0Bm8;l%b9 z=DJydVWDf|td?8Rll3<<#>jpRiM{-dgUcIHD~^Wm+__SOpk}rQmv}?tj3_ndw=@MS z%{Ot70l?t1Tmy2K>o6uJY~3+l!2a9luYaVA;)Y5r-GU)T7@aF@{lQr7kq}ogl$Egrs)9ivd91;VgwHbJgRAW(47 zjRNGVvDcP^4~LUQ_}S;KD>K!ub;_4tv7_{=uEhzKsC}e&pJUEL;i*ny!n|>%`_pK6 zmfdn^oN7p#^pr=Muwd9BaB=+VBxe<-jv02QiGX_U9?ysLl8`8{vn4f^B;z0sLZO(j z9C7_KmC9b79ffwg=Ut<=W+jc+Di?89yyl9XP<^?@0+5J=PjM^|xUrAKG)7{;-UY48 zI6^77y6h5%*Qu2AMvt&A5|eE~Q%4|UCvaY~H}d~OCwBGgKXDUlzahUWCadEw?#2F` zmp2+{-{&paIX~r?C!G6;^e;troe0mk8qur4!r+gbS zgWLyJ@LRFyreziM^kL{{WF z>KfU81YUXD-8C$Soxh{jKA81mXIjZN6|2$Tx~sIm+TO{h>(6=QPy}G!&?yU4i_8$> ztul)URmWV?lT&MPlaXcz+$J7*!W?h9q_0-DAx)}P&M+u*IZ=AICDxIXAa%r5yHf7+ zAp;xh)*lk6Lc^YjHXK#V@4GQ%7H-Ie-24|6RwA0F`b;RjVMLWEGS~Ulq0#98O05}0ZgoxVjp9dmV%RxtYKNZZISX@x`r`QT}D0F0Kw~A z;-(FKO~gn7_(OA;VpkN8*3%?!cj0l#dZKp|M=O2REuvE?#b>_wYSdX5|7LR4jACl@ zase0?U&n98hZ6$!Hj)J;W`C6|Pa8=WOIhuRIeV%W9YLHQNFPktHkRU*GKL1p!KXub z{CiY})gZ#4R~yC&u${p6w$0wX$9bFkapqW(S^Yv&;=Nv80TxN{0Hd(x9q-8CG9MQK=d59-rX`D30`y7OdAWA zhH2a0#v!}pSiizCu|TmSpwzPYdGXp{DL))>~&L}HsUybQHUo?R?Dhki(q(IuQEy8h>@@B{cKP#qM zq%k|ZlTzSpCBL>6p~b$7GmKEt&M6EjwyM>#+!LjFsi&%qjAl3*6qXtaO9P+NT*M-i z4_p-4bye6Ce>yfW3e4WYo;DhAi<0RIGj29+yQZw&h`OR7)!#e3kYU@oX?4<@Az}kC zziN)cxs|H|2~*W(Fk?{`S<2WlNt zhq^J`NZf}<8azTOvWnmBkG-i8b3}py`!u9MuZ%PV&jsU(tSMz_sx?k>{(&DxS6o{$;DB6x-l`oN?-R0vrY81EBQhL8V1)g zVs-~ZXFxpSn}XMr#fIRa$T(D5JS8pY%;KeralarvRxyQpFqVm7aIYCc?(V>uhELwU z^K8z4y!vGwS>_+SDpnC}iIIIZin_^c%E37%S$5r!R{YHNl}a(@NxKuYa*|AC1j@O> ztH(DtpjlhlM@4+A#1(*Spzj{D)3muW@cDq)xyT;+8ZVI3lI;guhrhMphA_F2)VJPW zfY(t9u?b>JroD@9-Hy0NYEAc5T2+0pBQVM;1MQq~t{X|tFj{a6jR7yLow;T`tv*gNzziF?)C;qR@MB}+wRD1q;W`Q`2fF3 zvud*j2M4DcHa|i}n*M?84V=D=kS>j;#{gH|=iw?cn!quRWX_Cal43la_YogpznA4# zx2khSuVHtcL#0KJ?60ASc06T~x0ytdG;nk?I%>T=vJihoni1Tm3N&)yc~aS|ks3G6 zYVxfim7Kbg-7Q+2!|S)~F=N}-4og*hZ^;Z+RJ?8#Rv?|Gb@Th*)A^iMKnrb$3Ky|aSz`1OY%<{|GcxDOGdi0KXDts#OCOG zo3SNEmxCEA%##yc;V%Zr9+2U4KT3vXxwDfUE$UNtCDv?pbQ4OuggwVfJL2#NoCUmm zUvLXi=ss6p5F&#lKBO)I^gTzIer$CuwHcDUNQD$LF8sf=hd3DmYvdE6Bh*D&y&UGnLuIwYX%Yr<24Q*hsu}aHL4qyxvedhX)33Tt@->z1Imh$=S-|uHglv;ZR>$d_1xy(qZ=gse@8UP{E9I?V?$&OA|>F z8tBrLhfwUIPi$ATcrZ;ykz_$RIh|xrG2JkkjpYWeo~&FoHSznQ>C~1Ugy5~e;EaBA zBK|uCh3$?mvthQ-wGo`z0H3v72Q{|4?RvuKLBx2E2tLRT?Ugqo7m2UD&TU z6~KJI#5t6m$fG$tIK05sk6UVw_Nf603CDtV-?fMim)XgS^0Q&Sy=XT#>mo~zNria3 z5{NkYjfv{8X!5*l%-eyV`T(&M2%7ym(!&o#565G&p3(HYs_M#ms+=2?TTD5gS0()2i*J4||C?u=tgzhU zM#qrHfX9TsXa45gkEb4e^}i!SJv&vw_q>GRd*hC!IL`ba^gaG!JNpb^>)?;CFmW2Z zW~h1|3KaEz$yt2%V{?<(8uBx99MJ}w3b-LBxCs~wKlJ=nYvPKB=4y(t9JDi1H-%%)9 z-2~#dZqxJ5z45PnGnDUk*7SLtQ+Z4Luv1uwL)&g)YrIx?S$8cQ+F}*~JhDy5J;+`L z$4r5dnxqa}sYFJ0yTJk9&C0dP0*Zgv$ZG3M%tQ?_pmiob?>W#TOYb}Pw0pmGm0uIb zuUK}hBKlW*S{qJ`mD8T(eVR53XrnF^D|N8@iJ$C-c;rYEXQygzoS%`;c49 z3oh2xn>WL}{vbKMFDnsW`iw70n3=@E(wf=2aGg0#e|}9Cb4d+C|6rHcJf6r|dCqDh z?1h@a5?69%Z*s{p-x%i@3X-0oS9R|>l1zYjAb|>R*Vx{Emd@8K>eMLjV}0MVzdd1a z%;B4hn#c2wN#8h~`M)*m%mUma!jWx2X$>L~ZbL_0Ny(*$_e`M&#I zkA3q%+LS^4elBu>mId)Pac_+_J|JNom{{PnvEe6D^rD4NRZk7#W^CL0s|tZd_@zJImCPw|epZ~mxjWef1#U$gzzyIam68o=om@_wtJJ7M|M0C(Vp7PQCt|qpwm(TAH zNMj1^0AbdzBK*y}n!5axnt9V^vA)ixl`x0V%#p2MiyE zfL%fNF!vQj8nToJ!4c}=^U&ihGSi^xTjpXtIM9+Wx*;uszJIWfcDBL%rHgmfAwkP6 zXrktR-!@mTXh!z3c|{6DtbZnEHU%ecZA8T&WV@^AW8HMFJMrzmc<8f-md<6_RS(D1 zR3l>=97;A6nl(j0QAG`RT>xQLSHm@UemchUo|=;0mr<7u1(&((;7lvtp|wTtQtlGj zVc8)*^U4F5A*#of;Y5{uA3HT21*VzE&S%}V#a_24TD9U*K1Ps?C}tlJZhlqDqEdXp zi|#0C5qX9N$=@l{1?0$@st?oNd*aMJpsaJ|WZ&F{cBhQ!q z;hW$QKIJoH+3V4~B%8B5ThGpsLp#^N;FGhW7 zkM5l6b*=I?TaIxKWOR4juPUnXwM_!~>fDWt(|8Wwghqg> zN2D3^+Tyo)c-T0cD{7urgxfIWYP>W^-{qaX{NopddOevA$#**bJIHdII@!rtiEH>RBN&%eO;KOp;ft4H{SWaY{H zr44DWnPhMcuxbTqNxgH_F%Qh~EN?BvUGSPRLNNq+3`mD*=DjQ1vOhf5651GK#C9acgCN8nRalULF8sHTk=z+mp766PH=VMy-# zFHoW*Fe(uBreaRTyIL)?@_TWM^9Y>QnzMO~w`HB?_g3~)*RX8hXk+AT)PNvL$?&|@ zWlHDB5!~${n!FfDq=DbW;{tATj##xN+_BOrsbz?szPGQ;ISk!bzB=r@_`l9d8uMI zqASL>AUajS@fF^em(di!QcwUtf*VV#74L9{j_K=&eR_wLzjscv_4_Z9gXmBfCr>W#6^R? zsw$!1?oW?e`}tscMs!zx%GN2y^w~>sKO1qkThy}BtKA|t7jJM_nB9eGVg~0k)<;R~ zB!n<4bkHMdKjC6tIN7gXNok2fdnM z?iEAO*Jl>^&^4sya3}{65@wckeoefo(AAV#qet(oK@6+AlNe!Er?5!|?V0!jz(ZJ3 zVB&5wB=PvgFR{7Uxj-__@=PNpYO%Ee@LF&@wkJSP%U>YO;O=WcsEkiW)Mi;4OycO3 zRnYde$MXy0N-NNe5N z+8^TQo=zMFM84QAxP4`b*5ett$h~);HVxPlT&?Y*z#PO>q_&lFR=ZGm?i4EBt=M4f(& z>BQ3Oj~+j;ofa169qJy*54qysHJ* zC{?dc>NweB=>iOBwdjKHl)h0gecJV2;vTb#QABc_#EMFi*Xcq9Hm}#)BqE;R7RG) z1BCJjGmjN;^#=0a?i#`FjDLurCYL8$;%{3|iD%9svtu%?2VNp}P&-McFECU@pO2kt z*#_l$XoHQhj({Pr^*uYXRl`rmM874PbEXLU8Y7|R>yyl8HDq-1x$#at06j88zMAQ1 z=VEy2VF(HT!c&`37ZV3W&UN)p_1I6_?#SkC>1&r)m|nLVZq5$^J1;C7hm76o^LV#b zgYVz4w4g_NmIk(M03CP%ZIv?Dn^pzS`XMgocA;x=qkv%k?L<-w)>6n#tJXF{+fPoJ zi+Sov;4{C`ik)`H==_l4$G%3M%N|!?4oEBl_|vh(bYdLfJ*Pu$PtL-+e{8r7G`_xV zcx~#SZM41FeSlfZnbK!~&~w#0F|#NsES9q+I4- z9t8MC>}NbA+ZmI#v!{A@Gn00;4y&YMUI*vp(mn4lshxgLhkT*CfClrtctm%|rTfG_ zi2C;5kN&1KWFHF1IQ82zzxg2oI;8kYUPN7pCw(aG9&k*1KpJkX1O(^i_UVBpf{En{ zF^|9`%_Y01516jZ8tto(;&c`T=(`+!VlqPCUlL@6H-XeM*;=n|tn-@XJ3P><^2|^# z1n)RP=^vD0r)M)?G2Ht0TZoo;uAyQ|BH4C?fat=>X&u;-0&NF210GHMcQl{Ixc%wMy5!ZCBf6hqvknYguRm$ozNyM;q1 zA%m&XEb()6#CRF-t(8H^-f}Cz7}%pB zW>?no@{&AJo8wQ;$2PxnKF+sc>rNZtuWLdJ<^8}3sez=;} z=Ba4miG2{;s5-k;Dc@yxQhmP(z&9X_?sKK~(^RdH;nqG<1gL)a2E5#B>1Cm-WAKt8 zwW}!*w0mBPG?o`fE3II63Cz4{tfZ{GSDL@l)w3% z3jfC@6{h>E11Lw6M15qR9lPo7*{XyBH9JWa0l`~@E3z3>D_XcCEPcm6#S44C0{cD+=rmi@R41JYY zBN`oW4IgIT)b_U61>`~xPa5W2qs4DLUdW`@=XY1h_xD-;*4oK>|F|lRzld*ZQi;~`tFq$Z4Hqf-=Fe6BXQqy)DaR}! z56shg`J6qTYdkm$T!SO?(|`eOVz1R4QzA5>>_^O1(hIcs_~jY%i^x{;96=xU?A%_U zif+Dcspw)%EFNFykE|7a))oKiUJGON*WZ1Ce}=_91xR$Kzg3SgfcJ5;0k}r{s&S?( z)>pp-XDlwJ4hm^S2hIc4R8{vY*~VSVAorG{fq~*Yek)?V96q4EunQIz`iF1J4`Hw0g8p5lAlk^_px?DZ|!eR&~){qqn|c8 zf2MIl*DF(Yft2w?E@|%utXLg=HMLB7DQkh^e*OYk`AmmQ7SH3O8(MCLFSkGbR_S9WD0GcD_iyXr z|Bo%D!;SP2oTR>Bw)-xDP>j0}XUeC(P7ziPZ0*;O19h17_XAbwTk~*0Mtx{%!t(B6 z72mj=Ol#Xn6)~PD>)ce$@`S2VH!6UmmFlE^PjJbp2yfC-jX=%0&9}&bdqHO`@+n zC(oMBIO*qHa7?Mf5vYuybrl1MgK)C47#NO%RH`JhmC{0hG0C};JpI@J|Km)`$r5bP zfK&F%hkO__nTJ&pUGN%1-uTy;Aom6s=QUcg12KVQ<#;vJ9XG4yu79C|@(P3K25KtNocWC%)$~G@Xx;Ro0M#%P$4r&%Vltc-cKlcX%Biao z$EQIpK8>tV*dUH`Izg0&`1dlH)@m*55u%eB%(fh8plARKtuVxQFFe|QqL%Y#a@Vdc z$y%uRE^CA6P@naSoncbGhe9&ucUp+=O$%sg;3b9#D^}jYHxUndhYM?>qBDOwW**E+ zd3|O?bjRu7>M|*?bkosAIdh=uDCd$;WR$47weg)l6@S5PH(uYXn<&Qt9K=-Slh7$Y z#zV<5+_fPE?kZ@i-s_g!dr-?kw|8PBTm_=sD+p9bY7bPl$TDdvBS-QWD z$q2H$M(^p0k|yb#n2vA$?i2r9KkXD%(A*{&QbyjA+i|hKJ$Lo3sq28XsCJxn6r&mS z4$ia{5^+ReeWjjlkDU(SW_B>biHUEqwgAU!#^QErN4&C7SMU>)P0|f>TGEs`Jh81F zQ|oJ$los`}`x0pONBu9J*cD^hDPYe-i)PfqOrF{MXK$*6m%u^VTUciL0&urx9`!2a z9q+wzomngZ>25QYCcSSvJn1#k7hfudT1vm@mCv8*__T9ERDIvBk?hiAG7>GV|F(0t ze(f6Yse{(#u&Cyfnxb{Pw+jz zODe60ebWkk4`L~~SO4CV#`-==<(vN%U@mr%S;OOV-WMb7TRRS% zfs-Bf2L{Ep3*gnjr$EMef6_%XXwG*t{Mlyhav(^Of3-g_25Ym@4cl3&NTOX}Jrt-G z?rnYdM%MnmYz)B^;4CH}9ek;%;c@oI@eanMLRagS zp+NJmmBBL19qqH6Z-~|pfMdWXF`aS==wfHIYgodp5~Eoa?`IEGBWq39Zfl%9OxSz8QJ?K(5jAR z{W%PDfK90gFe^`f>CY}IP}74m6Te98D=}JaAJdt^*ixYlY^+R`yNGr^s5;Q+(-bzo zeNJ#$*{6ybO*U)_t6xtOZS-zawlt`yaT*v<3tMqn*zO25VZH7$4NgA@aWmSLCsOyR zmI7R&rUF0wH44%3FWAJtYr6lgq&91g-`Z*owlXQOPs>YjW=ojQH8PxSmj51S7s+a# zOzzY(8xU9AL>q6!FME|(E2K%q4^Dve7VQHBb8o)M%i(GTD@pDlTFb=(_50ckhk0-O zF>4Y7L$p>UL*ypWChgv)xm5DY45nCu@KmhX^2>EOW<@@<`E*y4KJeaT;IkUbwLn5c zG+-QYijwV3s?Ih?7?|Ps#*|ei`3{9@9ANYqim1BAs8=i=ed>LO=`sGM-Uz4HX3Ue(&PaTKL;e?0=+W#7Ch0VIgSpfJGY<=7k?NAJkq zg7t8$n_Jw=TD9G-Py3rtAOG))p6|Tb{*6X6z;Wl)5ItI;0YfT(hc-z{e?4E-nIF(L zlR`&-7LqBhDtEoz=4-U?D@z!2@-269ocnfQW`j>`*aZv<% zRL)$rV>5mHTj|FsGqm>`|8=Ot{}L|Z|KUGIWJ_<#<=cSws_Co7@L%U^5c-EgA5}nT zZWaKqBvcT>_%s8Wbk-{s0kS$qCKt9KT_+RtVudUCQAlh`Gva97dd??R|qcETvV13Z+NA;sb*v}ePvvnl6bD& zs`3LS@0~*+C?%s+L5s(cb4bq33`2F%O)i>m#C(Yz}6)!Aam4@g*Dm)nAT`K z84|bak00?MZ7;>294Joxu4ltYz>gsVeL;HC_2nHkP6?@ah5CC5;qV#&NN!BjK~M;Z zv=6;4B&L~Hj8lklM_kh?rR7sMVV@|!$AkX^Np+wULNJJW^7FX;!%}l@S8k~){Ur|P zkNYqbJ2GVFCWwOdRiisK3yC-Gjtci;;3j&@u=Zxnq>od2~#tTB!q!K|igq`($ewVYtSO$Y>UR0PX8S8^FU9_UC? z(a$XDL6w;;RmY-_Kl%cPq~dGxgJ5F~akmY;Ifr(~P^w4>lcI3rf}*jSW7W^7Gt9nL zK|+U@6Fbabq~Q1s5v*LZmbz8uT9xqv>A9$m-l)?D>Rz2)bj%qJm(Q3p-r~5YkQ(*U z#-A}~=7i(efcbP>Stv}XHZ#)oH_RE`%5!6*KiHq{(Plw6E6P0wTeU8Byqs3}@mEey zrux15QNglT)OlbjKrv!)S3Y?rR5K^?{E7H^3B{;u(*BVSdU!05nKPtb7-$i?B3lMXeX2@UO2+x1c~+Z@HWGE&!mxaMuBGGDF2saXNw*|e;d z*h3HqD$chx>h&L175q+0zh~P<5PRUaWMS^eda@v5mgJmZvac?r94$C2sT(M~!+71a zMzQQAc|?fr=(y=k2Xf&EqV#%D6t&KmCR>p&WkjeFovoWj0zF%~3ZO8(^G#~kUdNgI zMqsY`Y1Yv4#qkrUfe4KzzZusSWohGlwieDI@pg=Qb$7;NH2@#IZ|eJ4-cw*pSQF%t z0SW9MC<0h>z5V^^(U0AdwI99cwYpZrXj!Ao3?v&kx|LHClCEyNyBSd}FFl2_yfqyv zAbHCq+?BDuWy+y40@RcnimW}M^72o+358_T4sfz_QNB2flw{}9{aSMrb+&|d?|0%j z!9=U>{plENr%&Oc4|H`A$AH$HpWKWcBn7TGYVi?hul!d1Z70Vsi+{>RHB>pT;uFJW zF{x*E68U#4J*g~*>n`%9gcsVF*X0{Vmho*=WcozodG_CgaGdgYxn}(j_wiGWp_+dm zpd@QMXcr+SC6~L{7t34_b))$kbZTgg_I`K2Al(#aZ0W~{O}{4lU(DfPsyG@3E8jo1 z+VA1AI=C<4x-MfLy`DdQ+4a<}ug~lcYmCzW1!qP^=av5X1)qu~Nx3SshprKJ&zPPYCl=2gJ?L zjJ&&}gE+dxmhRIS`_~Plxt2|3lGwjcK=G>#luL?r+YjMHLz>{oJ(;$e`518yn|g9*&DC-xkjkS~r?b zR{us-`b!R+gI?jB95T3+fn^y%wS=ZoJW_XVTfhG?)UCn@ZnmdR05Z2AhIrgI)F!5? zoh`7!fOjz(-Yy++;|P0sl7n%9I{3EbrGnUv_opdP=M))3-jH&eIi8zPmCK6um2L1sc$z>X&f~ zD*cD%$=HM;e(Ti#;Kai{b;m%WWnQmDB%HTUKtLq51P~IeLFueMVj9*8(=#C_(;K~f9tZf>YSjI##{VR29 z(9qc38YdFq#fM+nB+Kie-93jt_%*Q*b|92qv9 zv~+b0j@|9ioL@C{t0S$=YIU1oZ-WMtt*m+*dh}kIE$5k4n-DuAO1>U|cNu|DH{pd? zOSGd|fpOV%J&*h0%Mj+QTLoHIr^tA(nS$1&EP?UX#elBfi9f6oTk6W{nz1@wHXPmD_tP<_Vbhy{<)uM)4sNl1U-3F-!?^v*(Vvcqv$k5vyDsrOT=61q zcTncQz+(7mBIqJyB9|tN*wJqyykWWX8?m?Cy7Clwu=pVE+^UwXsRY{@0{5~ALxG+4 z$d&X%&Z5Fka;VnzP-Mt~&~m(W^Q1_gm}2~FZTrnjOKb4X{w8Z3?Y&k0g#%6O@?OkQ zhtwc};mgtY{qotig4Ef~v zPWTC&dGMzSOLA@nxFy9IW9CvsZEILUMz`3#vioDkzq+kdFv?Nl<*}dCtE|ob%CjCD z;ULXR5J4CUPuBCu)tZL83b$@{g&w^wyD;WT8FD#4TW3h#5WzUh#Fu$&LtOaiue*M7hTMIsPD={v28w!}lg_Y#j$jh!i4fU1RJ6<{S^EHf|nf!s|uIs!E9zjp{+vtZqTIn z1iR(@QTRM`UrWp15P6g7!;ai`K(94%mTbrropx?B5S^Bsx+B!VQH7Yrf80F;LUC#u zyx`Ej$j$sJ|IMN!BF%c-$v;IFp4~isd7tzQJ0CBAXxsD?%I#!(&h?8vJ~J1q>;R?1 zz8d}e_fL{R^w|Zm>Pd6=;Y=#rqes8)&gO`kkk!<_^fOIK zOQweg+)Q+-YiW##yn?8_lOG$J=Cv$s+%ez1Vywd{;?O)Gcy5S3$ugUH7;KFv%Gna2 zW9O+eDx(&=#%?Q4Ufditv{paXTeT0M!yDj%tD5g)7HzNo4Hl@aw_X`S0pOL0i0cp}^l#YM_La2#S$IyfH05b~GiS!O5Eszi* zV1Q79fOG*Vp?4B`4G)t^H9{3R<4iw9;@dPY#`|J74>O6ZjJhvz+V57hs}8TCzh|$bdkp~+Ge6ZBGoj_$VPWrr)2|UOnk3Wk%AaVSeDqu z_3{y#uv*)0Pk;#{5=t$Ptr{E6t38Eq3hze2WwH8bJzAV?(u)T_31S=dP#QNnP_Vh0 zuGmg}SYXPZorX>EERzJ4ytR2^I=m=t+)BwP_Jg)vR``r!3Y<#)^rp-{jtM0H&hmi8gyV4 z{ZhtZOFNy8cfyM3&ViJHYda`8fR~;quxP=FSt&YHRxDi$3zhJX8dK(VXI3&y7m=G! z9PN5~h-?_@xGOX`KRT;eWHm_s5O#}?f}-S#pjkrZL|rD9>97aY;if4usOjWg<)4i7 ze`0?W)6|_R5d9*uDC+Uio=LhRUJ!=cI#ZV8Da)2!6Q=xF`?f1UCm*^qCxi!^^9ufXRAeDp~-+09UrDy+qP` zr{OV^HTrN~(@(`9qH0Y@bX9u}M#`nxPGEZ%Z0G&bT|U}X70=SWn3bA>_$MrQS6ZJ# zogq|rXbS#ZuE!jAY;aDTr&O|cGVPkzVU#zp{=M&^hn4nh!;}4<4(cX!Ke;zyj&BDZ zJgXhV$$c8R46%D>g(oMs{3z+z&4VwOX6>kZsTp@lGZDm;h^CtE-LLqaY;gwE-kB?X z_H9G#ZOFvT(@}b2+-}xQn_^WI@bU+EOVyfp~mZLhXq<5g(3R7Zw;sUf-PXw8;M zqB9R?$eqg2F;JT+A!5v`YKy8!?X5lib!I_xFoH|d6~40p?@YVRum49;e_x9yqUiRf zw9;fBS}Wr5)xFEJ$S7R}J_Hk3TO@Qoe~q7D2o-{xM;$hLse%Mv;D$HdzRToY+CG05 zE17Xhn=~5fJ{ne*vhMa6+lS@82;Y$lk$i&rsJh3VQ7;l9TD{UD32(aVmu)5baLg*| zyve6jW&x2rU?Yf-u5&DagK!#Mzfo5g>up5`aht60gG);S3^wA-Y;9Bb@=(6Ed*J2sB7 z2V;%96##7^&pf}4D0ar2qJ)M1{0oDL-Cj(fvaLCPOlqI4{$l6Kk@Gjf~(aFbWSQ(_~r*GhaXS|>{kAR z!toyvlK%zeR&!)|P0e zBZrC0dwZ{XTuU!7_=oCcqG$K3;R;s4AHZnDeI&g8E7&x3apU>hTW0EO+#{Pz4yop-<1LCchcYZD79TNsQq$ zWQvlYmjR#S+2JyFp0f`;fv;8MCTH>-PoMUFBeBhN}5CPJ5OC<1h7%-Vi_fqdO5FM- ziZ=|%)mbPU9py2t54PDX_{K8%S(kl#gFbwAWdDs(6nXAIvS7|uv}|MQsxNnE;(&jb zRY9yBO8xamwG4K)DnCBz3$e^NW5##>R>bRWWXRQB(6Zq)? z+J3bB{f*7(SRmZgJsZP$aaF$Q^N;rVbPl!mUaa}@5^KwY=!%1qLb+SX093QJm0tU} zrSR7gc0!lUL#h=gm<%Dy=^@U{3Wepa@F5i4`5L>DvBYth5ydgQxsfxa_l_Vwx8h%< z-B;{F(Y*3eS${|4u_f>sjNS$4My1KJHpf3y#uai>>~dV2#(|ex*I?JUKVZ?9PP;|Y zb0r@K8aUDzr-yE{sWEao>-D?1fE}M~&o5~ZZWZ7Nuxx}pxrTD5tO;G+tlVcASXU&ZkJwbL z8Sk7;v2%r@P(2luv=qZ#4b@@=`dd*)D5o%$FUFhf$)&F&*{{j#c{-Hz9uK^Cp==By zZI*vWdJ5Wnby_KQ)sO=y$@~9t`4;HJ5Gbp&h}Ju~ywou^KUQ;@fG& znby+5Nbe0pHvmDi>#UEjkxY+-LE@6j^!G<@*2zC5)FfKQ30K;X`bQPDGB$TFQ*XaZ zG>{Pb$H#hopas4Xj>f=)Xy4H*D z795WI$~;=Qnmj@_GAEl!*V>r(*Qr{#A3{o~Sv3#TWIC9_-d~erVhLKA9NC1e)KQ33 z*`zfi+ji%Lx7A6?^+FO+ZsnX-%~pG5E*_x zfpm%tq+mT>Z40QVp$erf;SyOq!&EV0pTjuA-K@+Qtq;CdIpMMR)Z&^;nP+Z@LETk2 zoPBCAlFoxt==-hbicRF*CpG1Oez%gB^i={x9WvaB)%YSeIDQJWm2^=RX}N__K6!}z z)Bet**47mg5 z>&uBTk*J!wdJrSBS{4vnVp?ZN^r1KpoiIHx_4QL=gFUw4ga3G^{&si#=KKEXs`5uG ztZG^dj||Ex%$-xDINFSJ-5)z|L5oo$nfW9mN?3T8C}h~2$F*jT+!+8(XDMbb&6e(J z<&;B2^nmQRB_QrfN($ZvnSJJox|GNHHb3xze}sfOePW63Uez2N3k}a!(Dh*d$E>X+ zOyGJS+EnH7eW8)Iragl!DO5fNxFc4ldpH)pl@`yk$3Wd<&* zsEu~@S9)TVL`TwBz5GceeO9dKxo9IZn3KL^D?#|+>H2Rw|8woQ%U*77WnSI4<4_~d z?)F}DBU29?;Rfu9)D1a0DJ(-vQU2NqcqY?^J^hSJc*K zAA*NgHK8~W7s!jm&bg%-)di>U)VguKlYuqA4py~WKlnf5!#bWtv&S4RF2SQb)Pw|v z++u2j1umH;Rm5QI+}Z@ycKPBv=r8sVQ6NW1GPu=VO{ikG6Jp|WhzH9fGq=)dS6$to zDaO+tRn{hif)@1)2E;Bsi1_Abd;L;4M#o@rMW`+LWh%~Dh)4&fdV5FYZ4Jf_0D zrfO&ewU3sLE2vM&n_!x0hKB7mBNRTuz@Q;G|0G8H>m0enOTA0VLUP^IF;81T&ig>VEsAhHcq_qMY zcuGN=*mV?nr^r3nxvep%mWgS5C!VLE)M%!bJgYw2xmB=?sH{;s_x+JmJjGG1Qytamqs6b~wnp0o;_{7F#k+P$)~o<2(g*wV&Cm*gcQ zKC4`4>n*wKQ}MCtmrfU)hjyLt6xxI2UY;VyJ0$W5+c~dfi{UL5nK{8 zRVOQ*f<;F9Wr|3ir)pIHbn@TtkF8TBjFfH|(>a%-tfOo4sfq|y`$4K4Q;}6lwV+tt zeK%zTS190d45{V8n&XX1Zaar0<1gT{3(GPhVfLd4*bGIXtq~*zM1|hg=$qN%@tQ)n z8=M{$_Tv`3Z_d-<%W8jH-ov*`Z?HX8mlhRz(C6hBrkvQEx_B(l`sXhHUaP;hK0D_8 ztwpAP-%T!!H?4CUxN)*)7_X*Hj81#+^c&-BLy8Ivxu62uXUSxnNR2+{pUl%bQK~Gk zJY+(UUe>`nUMJKZGQCZECLS#wO{X^DaIoizj8qeku;ejr5~rhMv-M5Usp_72x8&>K zWp3PV-LzZg{^lcHILZND>yMYV;F{xjz0ajq9>bGZZ;UMia}ks-&>|A4{tDP|0{1bt ziP%lY_6F@e-j!kbXfM_T!WcMwm*dfPLGy3~y8KDn3+kJRi*A-JtWzG)V#zs zx9HZEi@`R5iz}`MWqQ6E^W{(H|HJ+~+k18Ou>MnL2z{8wLW?p>iQe)?jQhE;0v(D} zwIZc#?z}qPjRCwIx5HD-NvZdkd7gNM?r%&S;9KomrIe@o+E$6xjYd_7b*s-A5Rs9J z3SJvIu1VeUboi~w9i{)xG~917TkntZgK!q{#xpTRRe?27>u6I{>nhJ9!{|b{R8nE| zVt#%UJ*YZAb18Lcxon%fv>pK&m{jL{*J(T^w*|$)4hD0V5jA3qQ$UDS{9R$8^p7(# zeT1?6X7AWN!O?e8qr>t+^~(W?FdleXVS8V6cpIIfQ0m5%<-r(Dh$U^P6U0MQeNXNe*}H_`mX2fN$IhDb(aC>la$o zzC4c67#|uA?TV#m)XAxUbveStYi*5kTeEwI%7sRB=j>cc1+_+d;S0#d+ip`U)PK18 z$4A&KRV+EuJT|DyJ*C`qLl`En-|GsKqT7L}bUo|=EIcC3rsFpAYR9~_Nzk5d*&Gw! zG8DbUc6Xgj*FBSGdG8N{>#uL%P3?(vrljO`ziMamo|SkvBiNRCV!up~TP~^g1*9W9 zpe?L_V^659<}&}_ivHU*CD>zH=8gt?mE55d8Bwmfj(gOBH6LT?N0j&AS<8HLG(M{1 z#Yn31XK%khqU&_CP&Wncry#2Swe}eN__o;@Kt=n;hened|M~qYwQMG!to+ zCjU3C((2-XYAJ*EE!T$h5GN{A8U|n(_|I_t3D1PNmqIMLXdX6GZlsKU6gO)|EQ7|60Mu6#Ea&NFX&pt z*OSFDx&S%%MM?YLmh#7XKGeze0sG>SWq zC~}FUVua_u!)!}bMqpaiCE=!+CbZp@=650p(B8A6%AJmRm{8&!Dpj|re3ndOfFe?><3 zKjJSYwTl%dWr~T%zWp|w7Z0yF?`yIbz&upSp|_(}z*7;~RxL>#*piv4YlV*BJ){TZ zZbfCxByw<^8;X4#iPlf-)7e?4RVyl-8O+reys`)=3LD-+f2DtNy>H{$t9#FQry{K` zKNDBJa}6GSo+b_m3nNAAiH@Z&mDI?r(UBB~$4m;8b#K4?{j=)R4PRU?zgbIM?HG4G z(-mnE%S(SeX49@0o25IwDGX)nixNtw&nP$M^rVwrxVDrEvp7XIg0`|MhXF{`@U?1UicH?T6TK46@_;S$^l<34%Ohr)S z^@0u6Q#0@5xv#XAF09~FYt0t%TfUqMgDuc;2OT#PCYs28Zhma$5UfOlAUF}M+(IN5 zq)mZA8xP%@(){uZ(g9`dUr&^{q(2slY$Av!UOCL(pzTlCq-VeWuRavt*|^4S8jlR7 z1!^jCM4BuNhqe$Y&%DOitKlgm`{5`ux_KGT5b%6A?Vox7cT?HB<8 zbYDl{Q_PZSrtYYRqGbao`}(du(8@lYwASu@VCv*nofZY^i;e=S!o-wM8159EiheXy z^G~d%vE{u$Po1KssZ&6Y;Q+B4{sqcQJfUgoxkjHJfq&T%Yjw2G+S=jNz-&ODgY4Cn zIWV<6=@6pW!;ZVj#r_Ov+OrFz_tsuKuGvA^SI;<; zVy6d`Gy`mIGp^h6S${&cqgOH}rdc>gV#XYlwa#~*V{(sD^OM%Rr70yZX6Y@KDOMCl zXM2@fB<PbOTykt90Rk@ zYdxex7K&?35j7A|=cRf=<`qK2`g6%^U)=op#J?{bck<25Zj2bbDPJQvp~bPUZzWM8 z)5znYo64xwY0r8PKARr}LS+f1jeC1GH?xi}UpJ53DPo*FK<^#j98MoMxe6)^?ks4b@=eCr<>g3n-P$p*3usFV4!pW%u2K775;=mpDEW& zHK>KZSUz1u!`>sX&WDA(iBfL22sIBQgXB8n_r0=QLI_&b<;`3ZFKA<3(ET3h3bR3; zEz2PTKGaUl1I%<_CpVYy41{0gi4xf;me3X=# zbDSx2@hTfT*|7;&yNe&5Y*wCiN=jXq>lPggoXz;vPAH$bZp2m4905TfE+x{LCQ@bj zqu$;e3>tUoy5gqt{Sg+KPB~*lPuvA6+5J-d5GBU zA<#@a+f%6}ow=bJS)H4(4{8kP&!Vicc$;<9c==RY@zPhwqUCLpx191KleM1LLIKEJ zthZnA!WOO`b^V@7$uFWlv+{Er4JfiOC^AWLMn8XZr$Qk(Z9?BYk)u}a2HA4o(lLYq z^+wmM9xgl6h|e1e=z0?#a9e@91xTo*r-Jjj^X+`4-#9R<9>m1gn7fcYH$&$X+?1c? z`bETVOGkHoS%tVcA{?Sy1|&4-bk$tVSvdLwE^I)m1I)xSnJ>2vNA!)F#+m8sJ-xQM z7ZwmPu`NdFJgD1irj5*WtpphDe}6>oAd$FE*&ouo_!E}{3p z0fUDqX7&U6JKBE0t{G@$Lag=sBk{WggnG?xt%Kzm6643eL4K?0f2($~BuIUtMk~;M zhHu0jB|ds>eNR$?8GF%j;d!I=N?|t1$)2L_ zM0!l*wwXV{ykOG#)DZC#>L2YNYj|oAi+-ObZ{AO6s`2@HlmyMv{3C-X1F3A2oZv;Tm8Ty7ssU^3Lb!r5lvU9prLi*(`n z-)g7Xo-YV*vJdB_t=Pz!%++IiAzT2Zi&Gv}TS5LA)MtcBy8_Nm+R)r9yz&>MJJaUg z`JG~<_pwMMg8Q_{O^NZ}OZm&|p6b|?VMop?Bp`-)5M%K9a!thqxqhHgWiO26X2Jb5 zS=iAK!jBS!%XwY^Q^)K(-UdRhq(fTYH2Mt4Qv&Xh!Qr{BcU2%o&U)Co+Dp!7agw%Q z1D}6N&r5OZjkc`lw-d5krWd_5VK)81(Y>7isxkEJ2g2h z%5`FgG-c8fj!MsOtKQ8y#3J7eU6d^QStVGyfDIn$m~HDJLJ8EnCn$i__1xwi=_e*4i&7J``ZC zc|=c!K8jU}`p3_T{l0J_;Ph7I?;HQ}I&0SgKW;bTa17VZCYSWq-CWT``A$ivnoY6t z3XEuIx(!e;XszWk56N$Y_*&u2VypL=l(2`NU0ZGPk5F)|6pL)d*IENv2K=!=uNYbD zz^k8D@!6X7P0GWnOpnNo18HlqhNK{68(=qSvB9QCuoz>v6)U&2PNs9kiY3PIv*PO- zr2WewC{xj(wkVLc<*mi3Q>Rv*LNl)+XI)-&Bfo6_=4VOAOK8azMIA(USGTqW(M4%e zeQVbfo*RPxR#*G?{j;*|<(m^>Y30wbXQoH1zOI>_zOI~pN-y>`=AdQx@Y_E9mM6J| zNxR{zcs*hlqP@|pIz#c!pDg=<*60|WZvP(O^S=h1{QoiNyGkMLTTJ-{qE0)3Mb+M} zeU$KC4$vxM>a-szQw(SDnikk+=!A+X4_0-YFSW&GUxq~F(AShey0fd7gz^ay>5enQ z5q?qNEkfJ6-f+GRNC0!^_Fn0bA7xrn2HytPt+7V$4FsK{4-n)4PTyQO$wX4SsXb@Z#rvf}|953qj zZEG_cd2d@l*M^rb8&dLUtbKOIY65Z?);FKG#8C+`f0p(mqnbNW7cYTAucU<%+y zM!vRs0JNiCjJH=8UbDMCAOul}G6cc4RS$AOFm#5MnNjhSBMhLbGESMxtRl_o&6(E- zP>jNt_!hTZ(*n12blh~2 z5FsvBuK{r<|8m$xF|r}Hwc~Pn{<2hAht;tX;A7oj$#A4E?UZ*TN3RO8^cZ)0bxchh z98SqcO+3LaNVdx`Edi>y=xZ7*uzGyiD$7eJ5D*=M;BpkG+eabDatv*czx=&1eyR(- zZ-c*!(#}?+Gh`n9&*p!D4Lp?ZFSX-5z{x>V6Ix9^5&dA|)HSrOVYvc=ep`vNUgGeU zGDk(K^Tc0So*MQndEs2w%Ee+}d#F1ID>)pNwob&f0>rRONa+-nae5YpWKSL-%3$`J z|1UP_$ChU=BzGna?}EIihVopHr8oARu$z!IW{=@ zXYELTiI8QL@}r(A_Sji9B~3Y_Y@U+lrY6+2Y=cQuXoCbMidw~3a`+h1Z+&b`5i{e| z|NgoFnRExyjpC5=A+iVbZHmS1zF1{&yh>L3`o#aS4J!mDFPikzp#Gco=Nq?bE$I2Q zHg1%r?~hyvIQCFTqqxS>%;bh;-fWqQij}P+sP+Jc4Ns(kGWqvD1lEbp>=_?q9EXhE zTjQ}V4`N39P*7MlRXNy}QKlH;temn$N$oeER+q!mxk=Q{aL838lFwiLSOW5#g2KSk zV77vbT%-mWlHZy(AO$Eggk8&mxlTN*k_^rhTjpFT<(aRFj7XS&;lt?P$U6}>r3?4| z$K6}{UkSg|nmF??dP8H}bd8k=_(i5OBCU_C#;-P{*9;W+YUk*M`ESX}p)-wAz4*QMJMw;u+BME8bjc z=4QJwlZTMyBxj2iA@_xmHo@{`tOVEK<~DqoNK*hp?|qdLANZ-Be^yIp;QQ3Uzp9|xwif%dL2FGhkk~jN9503V#Hf!myokV&GS*k ztx(M*(g6}BWp+*Q8opCyiV5g#@L79sVm$0z{k^g=`M6CF;d=$}g_(LnU%_rhm-;bm zXYtA}f-d2_XVD7G_AT>B%q_P%AumeQ*We+Z=;|zFELWeQvH_h~PyNjl`*V+3^cnt? zEo5D+FVQ#M@%tlp20Wl`-yac*Gr7>DxEj4dy7B!HTv0Ja&SIN$dj<%kc%H2mL`UD- zyhv+pjwDW3?13cm+?k1Pw&P-xdU1BfJ4O;STwEO7=%KqWbz7&u`9-PUl&}N5?ssMv zKN8LvrF!yTAol%V45j%y~c*=!RC{+puz?Rz$!#*;PosZsNrA@u*ca&FdQG&#% zc)v%t{Q~T_1X|K%zleHub0CO7Ckt_T(`o*JEJQ+jSJ8aV3zwgULKS?@8Od(^lzkuNS01rS|84(^01nqHe z@6ZYToX5*O`vzuX?H)-i*-IX4)RIv`^&Hl3!3kH-TfO;}r}YSDb}xHiin0xKsL!XY zeC_Jj)}~QvJR7^G%3jSc0E*y%V(GhX9=R!oNTEl6=RBH)Tpf-k@hpuQR>CZK0GN@ITXgtoJeL;I{VDy z!}5-ysjHKOj;7M}gG}V)$1fSv9#72t#}EBgtw-YsS@zBy9v$%P7uGoUG>hdpI{1ji z6)KPE6;dRimW7w9B%&?_tUgTG{bI?Xzxr*X@@YB+ojAi9Y_nfLr=3%}$l5%D1tWmc z+z;>G<~#$D{H)@eKU43dz+PnF0huUnozlvic;e;E3a)Sm_i{L@@dnwA0nkZvj8{^A z6$!-ymAG^^%By^euk2g#ZMSmccKy`>@)vU1`*{h5eKEU_wjVXuHJXGn^Zr`gWn9)^ z!gwswEWK@^aItbbGz~Q;l$*++ugQUWFSm$#FV+YI&E|X?Mdx~ikMd9%?#qOzjjzNz zaqw`2hx%S2MH#wrx%~Q!zm%D1q$n>I`THanwqTxb`s6t19Eg)r7uApE!({2~hp(X= zQOEvs@Q+4dlw4pg8+1wa9}*UIC|~QZ2d2guX`04qLK_UIEOi~l^4=;iLFC!ljmbRi zm&00@t9Q%qTv~0KoQsbvYutPJv|^x0H+)HeKDoYKmN=XB#Ydb7zfH3JcvAAk!qsKr zkxK^7NvIWdJ<-oPl2WSIu}uWw7`N$Jyw^T*UXKq#vZud}7i3K%)3mC) zWmb&@yDc@Bfb%|7IXM2U&DW);m7q8LR17b)ZNWS_B0}~@5|Mn%ajDxhKY`EX1f!la zeF|3c4>n`k;epNma=-r_rK6HumG<_9j}KqyYpr3R2byj&JORN%()!-Q5-M&?hYks- zrdbqzGz-Zg^DNJ?Y?$)$1#|u|dRMEqe`rE)(IK@s0qqhK2tl2V+vS8S)tIf$5G)`3 znW}VF1%39dmF|}rz}0_(g^@2LWu7l+_+tW_i208RZ2WZcvww)CWhK2Gw_=NQyUZQe z0#H-L+7HHybbKb&5#1SG1XZukjt8=A6>ytJrN$s$yfQzpP4E{%Zx>a$CK5Gw*iF_w zeo^Zr$S1kKw*O$k!yzc3Ah1tC#D4^yRh$^jLIDnB^2;v>NXQ|aFG9u6wQ&);=sD-! zB?nI2cCVxM5QM{f!%E-U^oj`tW4?mVQ7Aev>q1sni`T!L{Wm2LDJuN${kFX@a3VZa zCgsi4QgK)6jcBB5NTZ6UbfNm$s#eq4;zE038(CE?3s!qvX{By7<;m=@Iz;T6Y*M*I zUQc9&76bsIC59?^wTVw}RP0-8lbLTvYKhZVoy7aFoE~Bq;ZeF~Z2pOI0Za$H-=5A_ zRfTB0`qC(fY{q2_mD#7ff-}&T*xK#XJw6TpiA2(Gdm0nH%kJn9qq263 z7OB-?X!it_Z5}l=)ye?xrshS~ zmNukz#ROQ@&94|$j}Fp!*8J|CTRNzl+-jupl6?}Y{pk?p`u@oFH%UtOdV=hJpLzNB zC9Sp)-fN$XlV`t>>Kv07U=hko=8DiPHsS`D5^_<|BLnz};gAe%Y0r!JMK9kfi0kKr(7 zZweA)I}u?|W_NB8A;*cJlbI3*yAs1pYkxytuSD(f$L2qe=$}URU%Iy&$fixV+Pe>v z=%`+&=N~NAY~X;gZP+TCcN!SC=!Hv9A@$|YYLrVT2WjCCaZTj8MM%osn!(Q8YKuy- za9G98j+i^p*IpN1eWU5_`G}w||Al&WSkITr5VPJg+3zSG@*-}m(B@{EtOQf4qSr1= z$e_(9YDWstc_0|2M(H}`S8jH{vYH)Yn6L*(&XyNCsTa7?r0Fv~e^^Qt19~-WL|hK} zQQk42R(e`wTN3SlWn+8)1El^*uk5)}TcfXzi-3eoqhdhW2JtFnz5K>DE%6!tdALQD zQ)2 zkI7DF^zRZ3dFC2KpYvv%SMarufV6C%jJ;}$4#!=o-V^g-lhvj((*vj8uG}rNdi^PL zFzxbW{k?B7pIOux3=I-OX_&j6x38_$YN=SYPVlEJd zKi~c}jy$Eh(^_WKIc-ZvEGZfR0!purYy$<$YH+miFxJm~Y|nqHGe5SURM^vb=3$jv z=57}ze_2#gvOT^ff7mn2I^%-66xJ;(y|p1R5K52yjAnq34YRG=EoRdqI(+@&iYt+v zN}ww*XkSyiJDZiEKsI z&)bGy$^n*r0i4_Lq_yh<2z%ScO=s^-FiFm5Vmkoz*{xOG{g={>xS4h;@%tm`>PL?^eUexB}ujxln|3jhfp@N_oGOBNC$`)tI)_rYPP`I>Z zFk4kkstXJz9h^o}?rsb4XW`4>=6H4^vIj)^M)|T<&g!DEv3rdbDIxpA4{_h=)oK3^!hTv1;NhuSB&TvuH1g_rvto zdHK{JzmU5a|KG70hnd$K8RfhcSv!zBuJwTg(F)bcwAsaXBc|F>^&nBMcV~S7HXv39 z001uvt#1nJUcp!%*3CQ0LGF%;Q{v*_RqyB!D=}zV{5I`0e~LgIeT5){v4Lkgx*9hw zp+>eEArXzR7gcw%P*;!X+*Y!wjF^!vXzc%Ch2RwNSE@%k$#6T1JkO1IaT$sCe=8-V z^2RNGQ^`E?VY=48UndaP!xnyuJT|1FK5k4Ad6ZROP&j zsaghN6KwUDj2mO?%fu1**)3Id31#eMHmviCI+>K_+UDu8=kH|A(;)z&Tx~Y7Jvf$E zvUcP8sK+SJO5&xL6PLKaynU?2z;FJQUXPqcg1NQE_Rh_KD=M^lv2-LY#cdHuUFSaKwB zC!A%QeNWOB3EjEZ#S6ufvQ%M;Vfl!IM1eO{s)Mt{QcKKxtM-wDC&H^92V07j@`|DU z+&pu=_2*I!ht{*#r$cW`Jo%H*$0I`X>Ot@Rl~MjX$IlOMC7SH7l1o-3-k_N;U2J2@ zor!aN`)Z<$2vnEKT+!sG4R?q}j@Wo~X$a4;~8y*tz4IyKdlqn#A` z;{(^}YN5^BPOWDG+${YyG3DTRV{!Fw!Jc@6)BEx>wI2F8psaJV*bZdS*B%T*3SWNu zI(6IE?o$|#kzi0c*rWttlPxt1>BhS7+VpVl! z?CFrV=68u*4Bt@dEK@SR&XBV9oZ~a9G)an4n#QAws}>Y_)XVqyfDJOjh#VVfg0+`e z2aWvQykERS)rATj1OE3@0+fAXs~?7&323UMeuvBZN9RFDtq!ew$S-Q{p*0#ylA>bF zuhlRWNEAR&jwR7WaE@torX4zqBeD zOq{}QWTMW+z}cpEdJ3@aMdxFW34DJ4Pr7#$a!pC}!Jqu#zkBFF91*<|B~6EDOZh-N zr?>{oHtomdqvqs5fhs$wD7zV`AohvMoVybtrQG6C(nW6%Wk|CG*n(7`ur5su1ZAfU z>~zV;w#wR9kQoZ<`Q5^u+nR%FRR9LJpGs1my^l|xlJ7wl-xe!O+@6rkNPpV=FH}C3 zQ}c9!1xssIj4h((>G80vnw#kxsS7!fOy@amrR5MNCi*f$8KKkp6YplLnlqxN=C+G=dJbWrtLzk}X(h$3vNK6*wE=q>8sgt~ife3xs1*Dd2czRP!6x{tXX~A*?Of;x0I#5jyHY2t3W7e zpwQ(`7&dxekZvxqx=ZRPb)5b2IFHAM|+H4~%Ku66pi@n6mNQvQ-x~EJRZuz{| zs#|<@6=SP}x=kmWZ&h5NPjq+%fR;DQ9>HO;rx>wMVY`?C43b|kd!#XWibgN#pX zJ|pmY79`&M_mKAg=l+V-eIXCGH&MDWOR`iV6hAGtqmI0N;bAB=_I6BBVBc$j1$aEG-c9NL&a zjNlE+tXc(?e_$5zsVvfYRdcQm9^PG#lY7)&km2%QqJ8+i?N7kv^p!;E)C*stIr5pT z;y){deMct%Ia}QJt&!Y)!Dhh||Cb)(?d{R=H}x^m^p&-Yo5H zFmkQ(Z#F7V_?T#e&1fDA)^$_7dwOVZL}JGlipCgIqHwH-vExJs5yYaf^M;$X3edSO zO1xv~3psTzB@W1TXf19;0b?~bjurEn!=J^TXlw=bngU(yV`n2Sk@b!z{_#dgURX#p zQ6lagB*vpiXw4EU_r??{nukb@1?SRBbaZ#yFyS1x@+k>OnAn2iN-A@Sx1>4CiQU2w z-^|)wkB7xp?dvf)MFuGldzNW**Sl^Wg@Wkk@qg#dhK=TCx&Da>{V!qFaaqxuRO z_)k;u9*e1Mj*tmHUG^@abyX!%U1>~J%x*DI-dHx#ZByi-@qx#3ABY}N zhaUdQf2??Hq|9Nw{dt0kqpif{5zsw?z66tJkTJ)qdC@-3Na7X{B$(|D1d>4~YG9zE zwq<;onNIo1{*iC(Pqt}|keBr(EK#9C4rQFDFoVhe646#6LG>Bq?;d$Y`C~xBoO+uV#GDQpBkk$veqB1jS$1I{o zpK|GBPA{tHWKNFtKae?*QnvtJyr_kS`sz+&SjH!!D}J)I&;+UW+i&jUU)^mDIQo@} zLgM8ocwd|X zT;kh5apE5o$m{$6(~4JRRuK>VNPd)#??nU}64_9ccPulCbB z+mx^S_|FD`-CUl9?Lwioyrhr``n*mo3+BK`Y6V_!t@I1;P+mrL@|9vgX*sNQF+OTX z2pmQ@>>XIaBHzw=hi?NuR7i2*Iu0M{-0}d zrZo~`-n>SGzJmQl%XfYBj75F=g5-aypR$I$8M3nB#&A{8JYhoaUAK&4cUNEohjuCXmcXr!Sr14urx31V3mU(H=S@1Hqh6YqY=1&qXXmLLbs zCj=>|*}T{@&zhGiB0Mf#{>-Rpda+SA-UEB%%0J2*BlO;dgi=)0kn<`kQ|CMX5m|Bl zZlHdaAQcQ;9!(~b6hW(+ZF)WQl_c}AOQl6W&Ho?YUkXCs)W=wo3(QWKKG(5*+cj5z z_4CM{4xtKF$kiE3)ZuA==`7SP&+4dvhikc`5h+E}$80kCv|@Sn(6Zw9M;;6b#P@&_ zMiypRw;{s!rx)n%x@y9x5L9Supv|~9D`Um3QTSjjDi^)bQ8eCO zI#l;0r_WtGh&_&u)^0k*w$p<&gSqGXraULzhtjhq3ofdj%%Ml}Mz^@@zz!#hr*MT< zTzmNNZbL-9RD8GiD4`LNGa%JdM)!uO+JjnKIxkP>!%T5P15Ek*vz-|;nRbqKRp|ji z==+X4pm*pgkSbWKTC=$q7slpP8r;88EFn0El3GNDWfRxJ_{G=YwYmbGYeQ39TbphG zg?PhG;o-8@K>4SsH{lQ4pZIUa!K(a2&KEKe*4^2?8#_2<^JI}E$9pKE_{ zLF(~!^EL}~RP#X0*ivt!Ddy{FW=&*rOUvLmkSz^Q|9T7w-2kd6Td~}@-e`1hy2htp zu>exT$9`X@Y@d-|`vvV8!eG(0A0*xBd$UD!cJ(&*shriI%oPm_VZcySHTQ9v(-ecj z^n{pzym;N4C_a>1>hzEatvr8q`{MK}d{o;#f(LST^Rc7!figHwyE|b>8XjsOm z^J*WBJjiBHsgO6JygDl^QOy4&P}KUpjjs}832Qc;H4jJUN2zz2-Q6HN4RPs8hwSgJ z)49)2m7Coj^{mYu12#9ARuo;-3j}2qY-F!v1@7>_z5jCZ2hqGdy}E@yeB&MM{||fL z9neI!_O0t$QCz@C2PG6G2n$MYtI`pW5<-tsHFP2!f@`G(77&oWQUnr`2pAw#X$c*v zp(76O_UZzsQ|U+j+!uA z(F*!( z|MJ@PbDvYt`Ru;M>Y!U*F4jIGau!O*=N{Fm<&O9D>+2U=^loVc&xiqcW9gq0m{r$m zB4^3u9#G)*Uc)jpX}wvpLtdhv269h)sk4L#qMO*GvL)%}^b79|GmPxsfDim7A=v{1 z0ynq}>aswH`R#@A6^EgMyUc7BYul?8vt$XWdREZnQvWnP{_SkaPClN;ITbNiVmeT? zL)aKT?{aDf`e40hTP7wZZ*FtX5L)N>ykrn?Qj+Zg+0p!6ghtXHKdQ|Fd5?-t%?Yak z#YcXhG+4}O+*7jKodXt`ZytQ|GgtFI^mLS)bk`5FpHs*IoI7_sU(SEa8FKhnPFr>N zdy&SL3(lP{&+{dGYs7o1HDX?)Y5{g)1IR~R4dJ{*$~Q|ZBKu^-qOdBk4L5gz_`vIt zah33OHZs`raBAuRB?`Po=#?7ZwVPQP;|WOPfIK$6BGcljpr#Zj`beCdeeE^a@%kBe zItn}k6LMU}^o$O~y=jx~H$auM=UKl1u$yoylRep2UgwhPr6MeGiX7gT*tWZ#RtD8G8#O_*HOTcJeo}yv5bm>EnR8_k*nNstxx%vH~X;okDnV2 zlj=gdEq1t48uG%fVC)KQ-%=?&FOGrTkqN&c0?fDx9Qdpl!5E^~R;KIyWiB(fpNsmbW6FSFhQHsSn;BM-d%a*| z9LJB`zPsg@Q|UDi2TeR}5?=7Yb4_K8j*s{n$>z^D?Y$p}lxmmv9&&b;_Z+U-Xe~a{ zxmI{zp{o_d2_caQIk+ZC0adtNN~Vcim{4JZ;r@J-^|+ zh2<^!Iy4(PAqEvw7e#!{Jt=0=I9e86^5H

    v@;fIfH;8mwG~)!qO%Rx1i03t2e67 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 HhxhynoFzSs diff --git a/app/src/main/play/listings/pl-PL/graphics/phone-screenshots/2.jpg b/app/src/main/play/listings/pl-PL/graphics/phone-screenshots/2.jpg index f70e2c43b0b115ba465462c53189621aa41de731..fe81aadce2c4c14c4da77a23c7300c4d6d430b30 100644 GIT binary patch literal 267623 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�qUUsE%n&}AfQ(PZOH0dul+N7BU?#&G4@Zd0Hs0g4UY9Yw<0O9k z2ZfmvX~ep#>PCwyBDYZ3Q0niIyt*&~NZIVe{#8(~LcKwK{cjXOkd?k%@}v(C|J$KP0rRk~VNY!1~D9^}ym{$HfhOO$ydF4~lbR|Fsv z9&SfUO=t|-vhN zHu~fxOqC8gBm=WbBo?PYz%VcbT-LX$cOzh~9I#{Pf-Q}W&3=lTyILtk@;y~?-*R{4 zi+yZzO=TZ7&H*d2oR14Cl(lGadx4)uK`OMxy27z*ackHpy;+&yDKR@EqYh^r%L;6X zviW*ayIXtIejWtL_j_X#l=IH3xZci?Zd~BoEjwLFP;Oq9n%$yC|6tRh%>VkYPh?#bv%VjXUDAv}l zQD`I~?tLi{o=wzl8{8l&+dxRE*Z&^=~h@lz-=O$bZeHWF1>1YAubjzjS!(z?!4O_hsC)jOH)xr0m!Nk z)yAB}db01aXug+fDAcNZEHgE(4c5w>=5)U0q=o%kj`}~6k$8BhG(xh^TtlYCZ=;rp zcgb~nSUpHY8Mr=UC4U!oO}XuMZE*Afqp2KZyvBZRjSik!OsdQVi;#-p`IA2Od+o>B zEh55BcXyqiJCv8%FAThue=vgw*C%_c;iE)U!_GEvTlu#Jg#rZ;@H2y%mX3@irhbx= zNn#>pp07L_UhD(1Qe)dAq*Q&a-hk>nm(X)SNfM81v-Z! zS(dA-+%{RI{+$ONeWBNrdy*`dy+T5_jScH`_8HoAD>3-z97h^<5u`(JFZkhBt3&Ea zujjVP4T2Ckfsi{iZn^NrlyG7l4?M;C&QNGuz#iR@H3%L+0LRT5)u)4M*_B^#$-qWs z*$Z=bKK&5Q7e*)8#xwSIV5^>JfV4TJ<8y1uL1$uHQsq6?UrS?iz#3#)6sxNOcI)0SD6n9B;SbRLM?Wu2da+K@tJ!y z+l$H&()a5$NHnCt!Yd-{0ukTZ4$lR2xlepUdYNKJkWX z2EZnmuhqfg<#cE+G+=DzO4({=Z%&l>3v=)Heq!cRcD56`A@ZjmV0Eih+sr{HvzK}j zt=oyyHSIBpmfyT(NKNb|I{F=sO$mj-o}+%R|ND}0yb>?=gY-#wRDs{u?>v9YYo1*T zSXR1!w$Va8z)*A}_S`~ngQq_Y>Qz_|A*Xiys_U1SAZcRkYJ$}O{#)qjOx3Xb5t_4v z14p$?oWFEg{M&b)MB{J+PTRl*-KQ#oF*KvBZQC?gTv!wBxWYXNmEIJXH_KO=GfJ(geK zlPJ|dUL7!?TQ41DoL!yuq3)z875k*ymq#<3gipS~y-+kCUZv9+jZ}e{(e>OI)6ODX zl+qG4@Li)Izi2@#{NVPj8;XDY;4V&BPct$`T*<&>@5mK*F*hPFAC}SRmu(`GQ(?@ZA-R|*x8sMRGnP^!-|a%wbS|$Q_fpgU zIK8M?_G#Bi-0SD20Uz?4a^ZqqtY4~g2RDy3N!!V$2zhr*BFv2I%b3bV8lPC7o#$X` zVmY1cUF(C19eI;9@W)GQy8S&H;fm$MU8>S6l>-u~k{HqM1@7>b^Tq4m{09sK&1!cv z`S@e*^xvZvXG~Va0%LD+wx7I-I+3Exbh5^~++$pOv-F)uq`h=F6|7_Dt#mfEBX1~l z`~B08)sccXe3J!Q20He>^T>uwg-1UKQLTnzE&V~64O>0~WSUp+e69`n>ImOE$6GcT z6P|42xWuZuOoIYdLNo1w&`hdTnqE6v)F>ob1F;+0(4u+Es8^>eiYb02dlC@#ID}b4 zuP0wmo)~83F#Hn8Mb&i+@NW@RW{*i~&o~v+Q&ZAD+t1Ygw0JY0+uqqM$J*L&8q#*q z>OH#KQ>a1yvwIdcLc>@=ys@3ATyj+5K37;foTE)S4g9f(F{~me6Zm<8NSVVHcjUR9 z(1g9U=`G*pou_?_?)ro}kukh8e>)gTG{m#gVBsr{ z`sN;C;N#!2etx~x(@w8g5&>H2BBL=dBfRqvRW;&y`rruzz-Hlh*CzI=Hf{9`wsL72 z#WiW1-g^b;a-h85kZ68hNC52a8Bux<3*OA93+)qg`G;vy{YL5zb{)A#_#j$og6ukW zKf(v}OJ2@=^#|*l`%-MTvP?aem6=xnIjtj05HdmIQ!NV5n(;W2IR6}z`7LrvzzW=o z2H{J0rlgMo?^4{e$C^BR^C!{lWvs_w3+4%YXVox%;YQB0YmO(FN62?p^)8cFrb}j{ zh7XcJ$pN^03EF)ISQJ1b78nIfXdX%ES4WhNBoN%mz4Z~2p#^God)GCfx~q`^mz6S$ z$#y?q4%m#GF2NcfLLLv77W-xwYxk|@)<3I6km_a3;qkbFJ3#@#n~;DnuuD1iI(iDG z?c?v*O%{4mrfMzw!Niz*vwk_xwPCYG60_wyF5-#J#GyjD`G}?Jg?PNrFsPDvDF?SE z=S3oBj11_p?xdh2^MIZ_S`hp*4u|*JF9-0v*@bZw3QH zVvI%o3bOeeWPxQ>e@1D-AKYqAG(FY)Cw=KS;m`(Xy2JKExzr0=rKSoKzev zb!~~!^4%DWiCmUrl3iUEEBRkkU*DP_Oz?^BxcnL*^y=@@S+NQlbTa25aT1T-c~a#W zxF;zx1}^)$!tC3~>OGw^QQt`uyuMFAO#SwW1LBWfc5yqA-=jNb%(`WoQX;AKblh zWB+JG>c=RYz;T&k-=!QriwnX5jHLNOOp zS1NlcM-&;2wM}7@{=2r{mam9Kgtx38$MW`yKvge=5D(D?r5kax5>x@+lXh#@2Zeb? z)Bmgtu#ox9>}hqSke5gP;DDgPfoV!a)z9kY1ff(iCK^3nTK9n9gALJxfYsc z@nSSg#ueshhOY>?I{HYx+IIVNs3rss_kAn3R9~T?5Z@ygux#s>(Op3F6;9^mpQ&e4 zhD9TFU5$ea?j>>Ms4vcBvG9{&T7fg%@KI*3#wN&(QGS~?e?2b^0qG4TrOVQ>_yTAL~2!e2mWxOjWdW7Mwy6Zo@%DWX35Z=Z1 zeF_CTcp|@*3KE-3K~>eEfMwf06}@+Kg0+yVWL1W?Z(+|Q-OJ~7nQ^HIL1iT;sZY9cwyzX!YunU>rc{r`hjaT{7?H{#zNTF|L&s*-df9DA@kY^R=1+uUD z{Ox)p#5Ox)%qj<a8=U4SWAJz6kZkuR~d}g!!TuKF$+9w*tT} z*Ys)|*aW0Ygimw}8h+1982LVD0G@w8#)0~l%v-Jz@^LKoYsqg;uXH!=zE9I^l_MguTMe!i z%ckWN&h}Fz8*MZ(k?VO=l7&Rc!sB`S{wiFn8L}35$I(}pyJ^p#4Xq_z)s;*<6A)L7 z!b8G!BXl!9wl+PzQ1>-AHm1-i-LVDtI1pZMLCws!+as2`@8iLP-3TNAps}wp_|pk3D$7@CH$P-weU7NId^1E&VXZJ-Z{s zA!D}Cu6;>4>w!6?h``OG$UAIuHftw>!|RNw0bE^~wgOw^sj!h&^V_3Hq1iBE%%^%i zAdLt$`EwvDojNjhlDFLGye!uUMM7MN#o5PpQdVD1FI8cc2j$hL9xFIdg;bm9_C4=C zpk8kUcf3;0isf?;K^TprHkab{Pz%9)uXGQ-*R@)+DBZ%5at1HE|rBjIXbj!-LqqxwpMro08|H(Ma=%=;K_XQol9%c1fNQ4OUA=xv84Q+}}r(S-D)f zMguj{szUV-rVcM^U)HxKxEB})?QVy~zCH3&=f$pN@&y#NA$4CAZ^J+MKClWVxcD}O z(F-*;f(y;Z2*I3WV^G~ne8DFlh<&l*EEYhV#0W_*x@w}T^=dtWn+g-tXz+p?K4fWq zhXQ@eeZ_OZvWN$y^hC2HuS^n&c(ddL_}-oH11FwH{gM>h6>2!d;0*g_P>nAUdygp7 zb7+z5?TjDPF>;xa8?c2R+t7?6@E%N}27`7fv|7I?znbq|;x+0zIl=ti!TZ!1@1DPg zD}tg8A)x)b@v4r6G3Cy>dG87tKC{o&o}vp&jgTNy)l#ZovD|i1pI{K~Wb&w?mYe6M zBaUAbJbVNF*Qy1UX8lNHhFMRoa6hXS&6QKeUmp#er~u#{(^zSV2aC9T5v|tYq*h3+ zi49PG=a(i6@cp#oS})`V@ZC0MgWsKZT*aCVnE5nrXUek~XGaG$Dwntr9L+Wb*CX~>SARp@BgQA@ zD_bl$)0X7MPYdf{f}RGqxOA-xpm1{N1K?da6_h4yl*BgfghHiAy|wpJDzt*+H5gfqS* zzW|-OC-cwn2N~Y>_dY)@?;x&V_mKMxfzI*>Z*=?i3hvi_i$8b}BG!(bY|j1hVg7jU zLemXa{nLTu#Mq-8J*n|SrZz6Gi(lwyXx2ug)C~cB1XUApy#6Pm{h7rug@SaJVj!Ea{5?P9R5^rZ(*I+Gx+Y43wf4lVoe<;_V zCBV#uh*sFqJ=J#|z1HYx$wv|(5L`sy?1O5f24^ub4iJU7%g^)|76IJR@6Kd>Kd@j| zZs>8bPk*y;^&7oAqhhj@_s;z_o*I0q-T9TY3+g4LO?mcs!KHUK?qytyG2d0(f#pe_ z+CTdvhm`vL*XE}PM{L4`Eoqr}H!rlK=3BliV}>}<(wQJ$u)idgE_7<4GR66`0eg@c zC8bK#ElGhuVn#lAS8WUqkQW`i8%JCecgi5PYF*$T=+r8e?xl*aw!hdi)FFaqH^W`4 zO{E!j2-6ydfWU;x`?|DJ4cjJCo5{{L!bct5?7-E&iHAsxqXv9hlYM1c-|WX{cRVE$ zb>U0~Y0)_+VMhr(Ssj9nKvT#bHK37N9P@sN}x{QmxnRHl(3xOMQQ>o4C-Z z_(+mqHhAQbmO;z6>r9{}qmHc-(+-HhQL{of6I+fH^S+;rxk?jd)DvutEhCoDC=2<0 zAk;SOtj2i_J@7X;daxUc>f;AW+mUToRDnM*zR>G)GbB`uyX-T8xYK*ICZ6drIY+3~reZ1s^_~zXTm}lh?*GJC2f|#D z5J4Loy~)KXa&NAS8n3Bl|5Snckuz^vBS$7p2dhmAYD3y?jp@2$s49&643um9>~rVL z`FPJ7>ko}iGNA&U)G0zp4h_|)8LSNGQ%3{W_KE9I%{A=SF-5s+Zr4)rX1}82u(O{4 zr$FI(_DUB1XEVjtru-LIDCRf^UM6P)&y9W6v8l9l6 zV0VJlQlyC11$T+?^V?~AoYyY0po65wVcFt5gL0|YD(jda)W-U}gq9L07FE8xNQ}yz zBr?QcgBs|6me9QF;}@|zBzB3Dxko?zgIl^c`qT-V5dLC zgn!2hxUs)r@q^uEUQ*q}9|dlre4D|uXD_e*_Uo}?3q`!E8$&$ay>(&^c&ilv$$m7WK0uNUdFwd)V+lW0{)$^F_0^(-S z*^`VIg}T!JjXr?+U-W^+tN(>Q@RzEYpMvjg<{3>sduxlSGw-EfXz4BtZ(rpT0d-ce zQ*PM9J$*jsQ?q#0xJp{CPEuC%~q3Of4Bo>Hj2bijnGnnMh14TWuPb+>q370#l zluRw5w9ifJ4Ruj+?)E~wixTWi%U4=gtTN9(Tqc3kNFD|mq2 zz;MsG;BLNxzs^MuAVWl18Mowt{^N~i=jH)+UZz&_V>+Op1HM#efZt$hlrBWcTe}W7 z%a@8NEY04PO}XW8S%>c*4%fgf`SKp{jRDvFqWEU^q4+Z4t47(k1?LV1!SweH4D0Fg z-+QJ+oc$(AbTtCWSlUCR&8zwPa!<}PERAVnWPnnU-vCQixb)C$dACpqQ<*d2T(VUR z#myZzZ@u|)$uKy$A}wT+Ll?g?o-kkk+NFUxcr*f24@iv1I`$XvI*ASxCZ|pz(XUM> zmJjvowB~MFYIbVw4-UB;L5&6pf;~x;3j#FFrI{|=tU~C*pg@a-=qHQFok(rUo1###T@C2OC(1Bc>?8J2g&tqC zDK@}f%PGgJCXj-4y7QgYOOib5cR9-sY1pQtKK%kd?Fc2~v(l6YUds|X1g-Wtx%#$7 zFf^aKD<1b+jOo0Ml((yLZcI~1uZ55ku;KNf9~0Mt0+y`CJ1aoC6*1wY`3ml!BndCf zSzkfBSS-3qdEK}lA`H2{2A#q0M=YEE=&1Hp#AYt`iGZ!TZx5P?yW8-^>>DY0t?6K^ zP)3c)t@MaF@jl9Q*IT|~1@6=W;dW9Ks{()DCDp;P_egDos)|=@;$BZask_LViKMih z3S=_f8wR3&BMxE-rl`^Gd@ob#R((u3=Iru?B=Jt4>0?RcZcs`{+0yj;JhR(Hw<=Gs4dDB^!5N<_12TyDq<*xZp*wGeLBg?biDi9aGTBZxAW%2 zT#YZb%DywM<}$kVbH0RZdbNm}hak)l1`Kb_cGOe|>fKw+LS%NaZ2lzX7PH<8v(jG~ z@K;G$rUM)>`%1{R{~&eJFNZlC$pt#5YRd zH>Xn3{IDRVa!I(#%e)`0-n20~?-5)kus%$Mf7bf^i-)I0oG^yT^1rrAs14b)aU*Rt z*#Y(G9{d=nTQe#kfKl;*f4B0+B(Z-la2NFL=sOR-j6~f&s1}w&c8^5w8wq_=oor4?}Wb|rO