From 5b878023ae53cd348a22cf20747419144154d74b Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Thu, 23 Sep 2021 22:11:28 -0300 Subject: [PATCH 01/53] Initial Commit --- .gitignore | 16 ++ app/.gitignore | 1 + app/build.gradle | 43 ++++ app/proguard-rules.pro | 21 ++ .../wikistarwars/ExampleInstrumentedTest.kt | 24 +++ app/src/main/AndroidManifest.xml | 23 +++ .../wikistarwars/MainActivity.kt | 11 ++ .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++ app/src/main/res/layout/activity_main.xml | 18 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes app/src/main/res/values-night/themes.xml | 16 ++ app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 16 ++ .../wikistarwars/ExampleUnitTest.kt | 17 ++ build.gradle | 18 ++ gradle.properties | 21 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 ++++++++++++++++++ gradlew.bat | 89 +++++++++ settings.gradle | 10 + 34 files changed, 758 insertions(+) create mode 100644 .gitignore create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/test/java/com/arthurgonzaga/wikistarwars/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9836993e --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +/.idea/* +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 00000000..bb6808b9 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,43 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdk 31 + + defaultConfig { + applicationId "com.arthurgonzaga.wikistarwars" + minSdk 23 + targetSdk 31 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + + implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..31932ec5 --- /dev/null +++ b/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.arthurgonzaga.wikistarwars + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.arthurgonzaga.wikistarwars", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..bcc551a9 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt new file mode 100644 index 00000000..f32d71fc --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt @@ -0,0 +1,11 @@ +package com.arthurgonzaga.wikistarwars + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle + +class MainActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..4fc24441 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 zcmV-U53%r4Nk&FS4*&pHMM6+kP&il$0000G0001A003VA06|PpNSy@$00HoY|G(*G z+qV7x14$dSO^Re!iqt-AAIE9iwr$(CZQJL$blA4B`>;C3fBY6Q8_YSjb2%a=fc}4E zrSzssacq<^nmW|Rs93PJni30R<8w<(bK_$LO4L?!_OxLl$}K$MUEllnMK|rg=f3;y z*?;3j|Nh>)p0JQ3A~rf(MibH2r+)3cyV1qF&;8m{w-S*y+0mM){KTK^M5}ksc`qX3 zy>rf^b>~l>SSHds8(I@hz3&PD@LmEs4&prkT=BjsBCXTMhN$_)+kvnl0bLKW5rEsj z*d#KXGDB4P&>etx0X+`R19yC=LS)j!mgs5M0L~+o-T~Jl!p!AJxnGAhV%~rhYUL4hlWhgES3Kb5oA&X z{}?3OBSS-{!v$nCIGj->(-TAG)8LR{htr41^gxsT8yqt2@DEG6Yl`Uma3Nd4;YUoW zTbkYl3CMU5ypMF3EIkYmWL|*BknM`0+Kq6CpvO(y$#j94e+q{vI{Zp8cV_6RK!`&C zob$*5Q|$IZ09dW=L!V zw@#2wviu|<#3lgGE8GEhcx+zBt`} zOwP8j9X%^f7i_bth4PiJ$LYtFJSCN$3xwDN;8mr*B;CJwBP2G0TMq0uNt7S^DO_wE zepk!Wrn#Z#03j{`c*Rf~y3o7?J}w?tEELRUR2cgxB*Y{LzA#pxHgf}q?u5idu>077 zd^=p)`nA}6e`|@`p?u}YU66PP_MA}Zqqe!c{nK&z%Jwq1N4e_q<#4g^xaz=ao;u|6 zwpRcW2Lax=ZGbx=Q*HhlJ`Ns#Y*r0*%!T?P*TTiX;rb)$CGLz=rSUum$)3Qyv{BL2 zO*=OI2|%(Yz~`pNEOnLp>+?T@glq-DujlIp?hdJeZ7ctP4_OKx|5@EOps3rr(pWzg zK4d3&oN-X2qN(d_MkfwB4I)_)!I_6nj2iA9u^pQ{;GckGLxBGrJUM2Wdda!k)Y>lq zmjws>dVQ*vW9lvEMkiN3wE-__6OWD0txS&Qn0n22cyj4Q*8(nG4!G{6OOwNvsrPIL zCl-$W9UwkEUVuLwyD%|inbOF*xMODZ4VMEVAq_zUxZ+K#Gdqf!DW$5f)?7UNOFMz! zrB~tuu=6X2FE(p^iqgxr+?ZK;=yz`e;C$#_@D9Lj-+TDVOrva>(#*PVbaHO>A)mhl z07OJWCqYC60518$!&c`eNBcBW%GnfaQ*$eazV^2_AW?j)h;J1nUjN(I9=0+!RVx~% z3@Tf!P0TE+98jA?WceK-}A1% zW!K)lyKcGqy#M~})315-A#2NXQ`?6NR#Apo=S!oF=JfpX>iR*49ec{7AN$xxpK{D$ z2d%Fz&rdfSqourN$~Y^NFIMV1CZ?J*bMx~H3k&meGtH@q9ra2vZxmA$S(#jaaj-g4 ztJmxG+DLV<*q<|sDXPp$X>E)#S}Vm&sRaO5P&goh2><}FEdZSXDqsL$06sAkh(e+v zAsBhKSRexgwg6tIy~GFJzaTxXD(}|+0eOwFDA%rn`X;MVwDHT9=4=g%OaJ9s%3b9>9EUTnnp0t;2Zpa{*>mk~hZqItE_!dQ zOtC>8`$l|mV43Jbudf0N6&&X;{=z}Zi}d1`2qmJ}i|0*GsulD3>GgQXHN)pkR6sf1 z?5ZU%&xtL}oH;YiAA)d*^Ndw2T$+Mjuzyzz@-SM`9df7LqTxLuIwC~S0092~+=qYv z@*ja;?Wt!T!{U?c*Z0YtGe)XbI&y-?B&G2$`JDM)(dIV9G`Sc#6?sI60de6kv+)Qb zUW~2|WjvJq3TA8`0+sWA3zRhY9a~ow)O~&StBkG2{*{TGiY~S8ep{V&Vo2l<6LWsu z^#p0-v*t2?3&aA1)ozu|%efSR=XnpX$lvTeRdKlvM!@|pM5p2w3u-6 zU>}t2xiYLS+{|%C65AzX+23Mtlq?BS&YdYcYsVjoiE&rT>;Necn6l^K)T^lmE`5u{ zm1i+-a-gc;Z&v-{;8r)z6NYfBUv+=_L}ef}qa9FX01)+Aaf+;xj(mL6|JUzGJR1|fnanb%?BPPIp>SCjP|8qE5qJ{=n5ZGw?81z3(k;pzH%1CtlX50{E7h)$h{qGKfzC`e2o`*IqA#tjA z`Fz&^%$b9F*N`)U-#6>a)Z`55`$Dd0cfcs0$d13^ONrdCu9xcv_=n#WQo8stcz3jP9|2EvdI-RhJM3%Q%oM&!OlShM|0 z?gz?wHZSnm45njLtsz8PVT1S&jAlbKg5kVam$p16=EK@Sj4EP0OtH zmJDmdc^v)x>56Qg_wmYHz6h)>kl_h$>0@J!ypv%APmjZTAQVLy6Fu50RGY&JAVNhx zrF_qG6`x9MkT;1SFWo$)l{M$;3qUDn9JwE}z zRl#E_bDRJFii61kPgBybIgp8dNW!Cc1b*^YYk-#oWLJvtM_v^hQx~9?8LD4VFFxBF z3MlrsSC%f9Oupn*ctPL0U1fwfX?`tRhPD{PSLFPQOmIt$mDy0SgpNVvHS+f#Do>h1Gn?LZU9(KaN>Q_=Y*_T zvtD7%_u^^+{g`0VGzg(VZrpVQ6Ub5M=tI_p7T93R8@3Zulu3|#{iNcu!oiHxZ4Rf*( zfmiN$$ru(*_Zqn=`Gq#OuHRTSwp7uH_SokR&|)RuW5yo=Z|_4?qU-JU+tpt>!B&Is z@N(=SG;bpVc;AO@zbmMM zScqq1)b-ZQIrs={oD}|?6y{$HNB1U0^LsBh8JI&3!GBZxOXI<}&5-$lgkAaYqhOTb z?2vEnZ$-kk;*M_17(upJF3%+iH*s0-r{vttXVB2OUwI1s^+G(Ft(U8gYFXC}#P&E^ z>T@C^tS`Z7{6HT4_nF~n>JlZtk5&qDBl6r|^kzQYe`wq!C)n@$c>WOPA61NDFj<<6 zGW71NMMhwAl!U-yqrq2xrSFqRCI8acw7?}3j;ynxo*-b7Co;g5r%^j=H@9({PXXBf z@r>U>>N;E)81wx`B4f%{PB~MHka_);%kBCb(d|Jy5!MqJ%2p`t&@L)4$T2j&-WHvG zv3(uyA_gwqNu(k?jQTtv3dgPKRZoH8prxe7>pQBW5L&dpumS&5Ld2?(sCpJjvc4L5 zEnh&?91WVm)ZdTj=fjJ$pPDdgAttLXuke+?KdKxu*;kTC(r!tQk6;gxj4h%FdHAt(^M3YvYj(!tOeN)+Hvj6+< zzyJRG?^lZfWuR#t!tUKP&(?%3v&Zd$R2YN>lB(Lq`OInY48%4%yTv2 zYe1{G`3)(PDEio5Y@-I5tUf`c%%OCJMtSW56g3iEg%3`$7XSJJHyA z<|7&N)5Xrlgv~%BO24eFd;Hd;uiK%D`EdK|quUeRZDqbh9l)%j%J#0lfrZumvA<_w zu&=AVvdChf6}eqh(bUz`(`Ue*p01{fBAcTgKyDYLs_I+YyJEk+rM@avU~>fB$n)HS zM7pfJydu`i%gfS<{PF94kZDv$t>06sAkheDzu40NJ$5CMW%n^Lls?8^p^QGWURbKu3ZduZQZ((s2? zzE`}<{;Zt7<$C|9R8A~DJ~@%x>TfP zF>TX8)@v|t)q4GjRt<}5s6hLHwRel7>V@&r-O|Av(yh;Q1A{E>Ir>p+%dHD|=l+lT zpr(Dg&>#Nu=!)6bCLr-ZS%|;h)Ij$+e@r8_{qO19QvDe=&1tmpY*0lcA^Cc-#{9fQ z<~$*<&P$Q<_jy#<$40PMofM7aQ}C=jphI`4kLg}Z7CIN#26D{-4v-_CA-LiE@(%{y!BzsU%gG`Q?sjLUf%qFSl0y)2#ae*+EI>s|i`d^V$Dn)qmzqRq6VJRY|{4ujsIU%#bnqU6MR&-1I_43=|5(6Jr;Jvert) zE?S|Tmn}Tv<-??sxV5@9t}3D=>YZ0JrQe$CO~|EY=Lj9RM&4svQHPQL6%pV5fPFiH zfXDx;l@~et{*{U*#c#Dvzu)|znDO7$#CRx)Z&yp-}SrD{&|(MQtfUz~n35@RLfUy=aqrhCX0M}J_r5QsK~NmRCR|Nm&L z41UdsLjWxSUlL41r^0K&nCCK>fdR-!MYjFg(z9_mF^C|#ZQw?`)f6uVzF^`bRnVY& zo}@M06J&_+>w9@jpaO4snmU;0t-(zYW1qVBHtuD!d?%?AtN7Plp><-1Y8Rqb20ZaP zTCgn*-Sri4Q8Xn>=gNaWQ57%!D35UkA@ksOlPB*Dvw}t02ENAqw|kFhn%ZyyW%+t{ zNdM!uqEM^;2}f+tECHbwLmH*!nZVrb$-az%t50Y2pg(HqhvY-^-lb}>^6l{$jOI6} zo_kBzj%8aX|6H5M0Y<)7pzz_wLkIpRm!;PzY)9+24wk2&TT{w--phDGDCOz{cN_ca zpnm7`$oDy=HX%0i-`769*0M6(e5j-?(?24%)<)&46y0e&6@HCDZAm9W6Ib#Y#BF6- z=30crHGg+RRTe%VBC>T00OV6F+gQDAK38Ne3N9bm|62tPccBJi)5{B z4zc^Db72XiBd}v$CF|yU{Z=M|DZ%-(XarYNclODlb1Kz1_EKLy(NSLCN`eUl(rBCL zT*jx@wNvze0|TSqgE(QArOZU)_?qH(sj#TwzElLs9q)(0u!_P|R%Cy_0JFQxgGV>1 zz4?_uq<8_gM0`c*Hh|;UMz~vrg1gQXp{ufg`hM_qU;U>+zmvc5blCLSq@PrEBSGR# z&8=2Z4uXN`F3p73ueD1l{s{k$WipAvSh5W7ABe?4)t;r@V?y`bNB5FvBuE|0VRTb< zM1Hn^?DSsJY+sX@T5xW=#>T9VEV|?<(=6|ge$X6Sb05!LFdjDcoq*gM(Zq=t;_)Le&jyt(&9jzR73noru`a# zN*<`KwGa^gZU3-)MSLF0aFag#f0<>E(bYTeHmtdbns#|I)-$)mJ`q9ctQ8g0=ET?| zdO}eZ*b_p>ygRTtR^5Ggdam=Zb5wmd{}np+Jn1d_=M`~P=M67jj})fH4ztb5yQqQW z^C|C&^LHAK-u+ooIK)yM)QM?t;|<{P;;{`p=BclzAN#JzL4jCwXkQB1Dy{=^KR`=~ zTrr)y7eiYBzSNs_DvO=4A6#EgGS-zY%Vi)N*Yb`U;6o}KR}dq{r9pT5wqZ@3NOE8- z9-(}D|Nc5732CSYQbL)!gPQ#RbD8BhK3dl{sUuPvei0tkvnJBxDEAYTesU8H$)g(Plra{VH(v3u^CO1~(+ zU0O7#)jaS4{NcwA+LuSm&VBcX2#Im3xg)W}ySNw%->orn1taZ&+d)}8gJTqA!u|5P z{yv?zol_3|(1(%M(EVU=cp?L`{Pi|ixk{U)*guFML3P!OSlz;zGA#T+E@8@cgQ_mv1o7RSU=Zo_82F?&&2r;WE z@wk}JHYEZ9nYUc(Vv~iTCa3u8e4q(yq<29VoNbKk|`mq%I6u)My=gPIDuUb&lzf4`MEA9^g8u z)vp8|$$HE9m_BTV?lOosIGa4jud=jIbw)O2eCMfyw2*S8?hjWw^nqws$O*M$3I1)x zR0PWFb3$ySOcGTe1dz%N0l;RPc`x%05FtT^f^j{YCP}*Q=lvp4$ZXrTZQHhO+w%wJn3c8j%+5C3UAFD&%8dBl_qi9D5g8fry}6Ev z2_Q~)5^N$!IU`BPh1O|=BxQ#*C5*}`lluC515$lxc-vNC)IgW=K|=z7o%cWFpndn= zX}f{`!VK02_kU+Q5a3m37J;c} zTzbxteE{GNf?yLt5X=Bzc-mio^Up0nunMCgp*ZJ;%MJvPM3QK)BryP(_v@ei4UvHr z6+sbCifQaOkL6-;5fL8$W($zZ_;CZp305C;~$hhRquZr-r)jjd1z z31%ZK{-(`P#|Um_Sivn@p$-vz46uqT>QG0B1w9znfS9A8PB2LaHdzA|_)yjXVR*l{ zkcu3@vEf7bxH0nkh`q?8FmoO_Ucui*>_a~P?qQrlZ9@+D7%MTpSnztpylXrt5!-k8_QPB?YL8Kx_On8WD zgT+111d(Op$^$&KLAN5+@?>f7F4~wFi(8TL8+szgVmcMDTp5l&k6~=rA{Dt}!gb^r zSWY<)M7D|Z2P0cEodj6E42PV>&>DFmQpgt)E-|#sSUU@uKed+F680H@<;-x{p|nuH4!_mn85rx>wz;0mPi2ZkL#k6;sznu?cXh!T0S>{w6 zL^gvR05NY64l*<+_L>On$rjx9!US;l;LX6@z}yi#2XHh)F@Oo+l)h%fq$v}DNmF2> zfs^_t0)3N-W<9-N?uedVv{)-J0W5mh#29QM5R5h&KuiRM=0Zvnf#lF=K#WlCgc#9c zS;qvh(P$!_a8JwyhI^ZJV2k+B6Z^64?w|1?5gyo6y{}923CRZfYVe1#?F% z7h2SUiNO3;T#JUOyovSs@@C1GtwipycA=*x5{BpIZ_#GCMuV8XK=x;qCNy{d7?wA~ zC+=vjls;ci&zW=6$H~4^K%v{p}Ab?U%C6Z4p%eC<3ExqU$XR<}LLF67A$Sr20DR_pJ3yeBa~ z^sw{V0FI5;UpwXsScYuhbqGQ`YQ25;6p6W^+tgL&;Ml;>S3CGpSZ>VrTn0m1$y$HU z&65)I!c?oREz};c=nLCliriqQX->4uivHTgd${GqeAlf*!P^B|jkU|*IdNP(&6C>4 zqOW$)Nw9nvjy^&`?E|gotDV{JmJ9Q~vuhy<`^C4XIUDt|j4o6rK^e8_(=YqC zuaR6TRVf@tUFHB079o4MBIh{M~4>WwnGgesQH*3?w(RA%hCZ*7)b!aNV=yOQ%o_Y=Lt0Sl*(9^jfRnC210Om$=y>*o|3z} zAR&vAdrB#mWoaB0fJSw9xw|Am$fzK>rx-~R#7IFSAwdu_EI|SRfB*yl0w8oX09H^q zAjl2?0I)v*odGJ40FVGaF&2qJq9Gv`>V>2r0|c`GX8h>CX8eHcOy>S0@<;M3<_6UM z7yCEpug5NZL!H_0>Hg_HasQGxR`rY&Z{geOy?N92Z z{lER^um|$*?*G63*njwc(R?NT)Bei*3jVzR>FWUDb^gKhtL4A=kE_1p-%Fo2`!8M} z(0AjuCiS;G{?*^1tB-uY%=)SRx&D)pK4u@>f6@KPe3}2j_har$>HqzH;UCR^ssFD0 z7h+VLO4o@_Yt>>AeaZKUxqyvxWCAjKB>qjQ30UA)#w z&=RmdwlT`7a8J8Yae=7*c8XL|{@%wA8uvCqfsNX^?UZsS>wX}QD{K}ad4y~iO*p%4 z_cS{u7Ek%?WV6em2(U9#d8(&JDirb^u~7wK4+xP$iiI6IlD|a&S)6o=kG;59N|>K1 zn(0mUqbG3YIY7dQd+*4~)`!S9m7H6HP6YcKHhBc#b%1L}VIisp%;TckEkcu0>lo@u995$<*Em;XNodjTiCdC%R+TX|_ZR#|1`RR|`^@Teh zl#w@8fI1FTx2Dy+{blUT{`^kY*V-AZUd?ZZqCS4gW(kY5?retkLbF=>p=59Nl|=sf zo1Pc|{{N4>5nt#627ylGF`3n>X%`w%bw-Y~zWM_{Si$dc82|=YhISal{N7OY?O`C4 zD|qb}6nLWJ`hUyL+E>-;ricg9J@ZNYP(x(Sct&OI$Y!QWr*=^VN;G3#i>^1n4e#Je zOVhbFbLpXVu*16enDM+ic;97@R~u&kh__kgP#!R`*rQEnA+_dLkNP~L`0alC|J;c; zeiK=s8;BsLE)KbG3BD&Br@(Ha@SBT&$?xX`=$;eeel=|R_dIr6-Ro?=HEjnsJ_b`1 zK6Yg^-6;^2aW!xeTK)A~3Rm|L^FCHB_I>jIju7ZGo&N_1*QHkxH2!!%@o4iZ?vntS;&zJdPe1dH#04YD93A44o-MpfD zP{rn_aq>U%RDvC2+bp;xPlsOzauIi3*Lf42`jVKKZCRuKdYhi>FDuL2l=v{$BCN#Q6796s%r-AG$Q^t(3c@ zD?w0UhYr11@feiyl9kY_@H8~|xlmO<8PfQmj1!$@WieW@VxR@Psxfe-v9WCi1+f>F4VL?0O~K7T?m4-u|pSkBpUJZZe*16_wAp zSYZ@;k`3;W3UHKUWc8QeI}0jH5Ly=cGWQPw(Kr2fm=-5L(d`lcXofy8tJY3@Tuadz zYWXR{mW7XT!RF#RVCe%}=tM*O6!AD3^(!8un~opNI%Uko7$5t@<8+?; zTxDys(MyyGsUjtSu9$+|_-t!U3fVb1dkK?l`17<+jfl=hrBHnDSV>^R1=TnQeyqbW z>ov#l%!1|S!1>8UUxIdhQq`_klcHVx0{?#>K3#$4GlXncwldt!g17TcvKq-jo_996 z>oA=tH9CqRl6Yw?Uc`am!V?lHJbizOJaVaScf1UP5e7Dbgabq=b!B~T&_F6?ooU>w%x0A zH~&MHJ=q`fCH{U<7MDXE4SD32cDZA)WJeWkllJ`UspWaS#eDe^kg^oU_A14UE9zG-a^g{xaXf$})Wik>gT zl#dkzGr(;h0JZDuFn(+k8wNq?PZ5grQ<+sM?wBGt@JnH6v0#or-5wBQWKU~(S_> zkE!tc*ZJ1Y&*p(xX84POb3cClRMd!^qJ#CAZfIepEj-<`VURS_yCz0(?*Ixcj4 z-!zV1_QZhpm=0<;*(nm+F>T=)o?ep@CK5I%g^VAA+RB25ab?7)A~z~egru=I1S|@v zH7tXV!0wmGS^qj#e+MY;C5eUjEAp$Y?LDkS^QPZ}8WN85?r$u<-Epi;yZ1|J2J`se z$D6DpH~2F=eI0B&=UFAUnJvZAmClJlK)sutJ?M>xpZiWV&0=G4MZP+x+p>EX=HbCz zxls%Mw?*u^;LbHWIWCyq+yi)`GmFn9J112CZda_u@YIP%i;srFg_paU02Ifij*7}l z&CF-(3|>*a|+vbNR`^RP=9G?ymEJ0Z~)d&c*UE$UMepZ zcITr{0WqhxkjUnM15js_gW=e3Uh|y6ZReaXHIz-=p`x5VvB&rH9y>Amv@^WmXFEw) zQXYrk3feir=a{jMQ+wDIkkFnZ$k{sJakHn*?u za%4b!00ev8NVLM1TY=cl?KB&55BY_MU-sg?c>=Dbz_W{(Z~c?HJi*XpYL)C6Bd8WH zt+v-#0&o~@t4qESi*)+eW%@VD0|o^yF)n0hME$UtXF$*Lvh}7sso{`|pn*JDIy5^Fm3s$5*zEE=?u5<=l8FJc3r%+H} zdfoNl2J0^~!-*mOL5o-x32|e0Im*E!yY7F7E5N)W3>+v_LBydlEx?4$RL5f2oYRD# zaR0wv(-p~wO0eLDl3K=%`{5+0Gd$ktO=W)gWlGZJ0`K z$_RNA=ckrfa;H0KA~dR^p�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..133bc853 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..f8c6127d --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..956edb25 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + WikiStarWars + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..e17a4f5d --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/ExampleUnitTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/ExampleUnitTest.kt new file mode 100644 index 00000000..90370e43 --- /dev/null +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.arthurgonzaga.wikistarwars + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..5e71d738 --- /dev/null +++ b/build.gradle @@ -0,0 +1,18 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:7.0.1" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..98bed167 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..06624b5d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Sep 23 17:55:34 GFT 2021 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..4f906e0c --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..ac1b06f9 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..0c10d828 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + jcenter() // Warning: this repository is going to shut down soon + } +} +rootProject.name = "WikiStarWars" +include ':app' From 216d2f8c8d0f5fc4aa8c36e728c90629170fcb0a Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Thu, 23 Sep 2021 22:38:23 -0300 Subject: [PATCH 02/53] Change package location --- app/src/main/AndroidManifest.xml | 2 +- .../com/arthurgonzaga/wikistarwars/{ => ui}/MainActivity.kt | 3 ++- app/src/main/res/layout/activity_main.xml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) rename app/src/main/java/com/arthurgonzaga/wikistarwars/{ => ui}/MainActivity.kt (76%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bcc551a9..43cc6e7e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:supportsRtl="true" android:theme="@style/Theme.WikiStarWars"> diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt similarity index 76% rename from app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt rename to app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt index f32d71fc..53095193 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/MainActivity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt @@ -1,7 +1,8 @@ -package com.arthurgonzaga.wikistarwars +package com.arthurgonzaga.wikistarwars.ui import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import com.arthurgonzaga.wikistarwars.R class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4fc24441..def59e40 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + tools:context=".ui.MainActivity"> Date: Thu, 23 Sep 2021 23:15:04 -0300 Subject: [PATCH 03/53] Change themes and colors. Add new fonts --- app/src/main/AndroidManifest.xml | 2 +- .../main/res/font/montserrat_extra_bold.ttf | Bin 0 -> 244868 bytes app/src/main/res/font/montserrat_regular.ttf | Bin 0 -> 245708 bytes .../main/res/font/montserrat_semi_bold.ttf | Bin 0 -> 243816 bytes app/src/main/res/font/starwars_hol.ttf | Bin 0 -> 69764 bytes app/src/main/res/font/starwars_jedi.ttf | Bin 0 -> 46512 bytes app/src/main/res/font/ubunto_mono.ttf | Bin 0 -> 205748 bytes app/src/main/res/values-night/themes.xml | 16 ---------- app/src/main/res/values/colors.xml | 7 ++--- app/src/main/res/values/themes.xml | 28 +++++++++++------- 10 files changed, 20 insertions(+), 33 deletions(-) create mode 100644 app/src/main/res/font/montserrat_extra_bold.ttf create mode 100644 app/src/main/res/font/montserrat_regular.ttf create mode 100644 app/src/main/res/font/montserrat_semi_bold.ttf create mode 100644 app/src/main/res/font/starwars_hol.ttf create mode 100644 app/src/main/res/font/starwars_jedi.ttf create mode 100644 app/src/main/res/font/ubunto_mono.ttf delete mode 100644 app/src/main/res/values-night/themes.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 43cc6e7e..f8d083e9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.WikiStarWars"> + android:theme="@style/Theme.WikiStarWars.Yellow"> diff --git a/app/src/main/res/font/montserrat_extra_bold.ttf b/app/src/main/res/font/montserrat_extra_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..80ea8061b046af5af78623788022a3bdd9f79994 GIT binary patch literal 244868 zcmbq+34GMmwg2zl-z?e4z9%G^nPes*8`%>eFi8kY5(vr;A|Pv3kSeGsB5t?=E>tO2 zYg=1uZC{I3>hd&7?V~hh;A(&SaoX`0+Vea`UQX`zxQG6WI&uwg8IOUt0HK|Pkl@+TttlYG`;^61-_lGqt<&Ueb-dxev zUi_RUi(bR;|G0M3x(%}`_iWQ->JCjCvtixJt2P0iiT)1YXVSXMx2`?Bp=q_IiBe7c zLR-IPtlJq1|1g$>Q&5n*P^KS6sDu!3&da*JK&^ zou9Mm$~BvQI{2MeG+B5O_-~`1YRJJSU(|HXt%;+FS8sD zhuh)K&dPL-DX7iyWO=HxJXzJ^Y{)6T9r}iR@!ZsDa{Rfs&^~+$eOG{{TT9VugVo8x zA;o}GI52F7hQZ0+K~NWcVkjvoDJ3Z-D=RD0l~Pz+<#GE&i}2|Iw=4<$w&Qit_Nr)q z^YcrV+;InWAd268R||&~eSNp)#hjumceXsJ#e)~w;f{0zKj3Zx{6XP%H^_scS<8A# ziUSWGXsLZl7te`i{0Gwt`}GQ|51%Vcw9waQ(X2loO_GblGm4K^v?+_>qs-)k+mwuI z)BIWeSiI}*0=pb+@O&G*N&mIgN24hp{fpWeEz>5S182Y%%|HU_*eO=Tp;(`oB8^l3 zXcP~v`cmy=G!G{Y9#}HoQ7uR^T`|(^vP;t@0iR6*75aS!E!~}B!fBk)WJA-G7R1rO zOcS3+@t%qA_C~=UwBVId@XZ#y%!G$?^{z<2Zrw3t)9~X8U$|W-f&XPK=_x4>eAzCQ zpoQ_b_!xSGmtyKuty%|Jf($K3n;PuVoSMt+bgfAh$(qoT#hN7HaOlf4UGE)C!Q#=D zNf^~WZ74Gn7A_|b^7aKyL>$K zsOSj&=Z^~R+P|Nc_x`KDu;V6?9Qwpq$qpaSQ<+-f`i=Bcn+8VT1&`@ko>r<&3U;Nl zZGjzgIHhBa%P?1>chD`IPHh<)fy4a#jEwx!{F36rjJ%B8fTuDkrJz>J&&zfBV8@#2 zKipM$EzNDMzHI#K%WIJjPyNEK&`z;-=dPyu(35wpUcGbuF+)TE4hyUh{Cl zE4NSW3tcjO`W{#{%^N-?-;%FuC0c8+DMbjaAXQ3HD0Hb0X!z@LFfwBhmQP&4IztZmnFAl%It+l~O<)Ibn%O3yS=N?}+HF)KP%}XavT-to$mBFduu;NAE0}b$iH8-r|8{jbM zDIpFB){#*d1#vKPc|1%5R!_=jN&nCiaFe#?Q*c`!u%rq4$dA(pWTroF@tGctfjPx& z>xG!@6lkPB=!5FueR8Wlf!m#M?!ZsME9F|yOVt{KbyztLr|wt-1!S@H4!Ug1 z1Nf<0Dlc1iN)avFEOW`qYtOwYtJF%}zh5my>`Kq356y=xV zP^?c(k;h6qRx}T-dM)o*HXhWDrRKyzJ63dyW_cU$SdkXb31i1nZETYEMI?an(2k{M zASDX^oCQxe;WU2MFUD8nS9))gi|)=e@p*K#lPUV%C^+pN3SJonr=3i}%j|GRnE?;D zTL4$S*KMK~yR?1Gy^(b!uZ`2D9&$?92AXtVWPEO2|GG^hBm5Q{eC5GnuLr(#{D|@R z?<8mXJFR=U20zt0x(s;9hIcHaCf2~0HMc@6sXj^8JXuSoB}9I#;0@1*RV30xTj(c; zWtH?jwEra5kFi($4tqtZHX+!Ni7f($6TK9ku@oRXfX*FQuG?Ylc8r40#K<3w5&Brt$h{hRfsBPz zvZvkicf1p*-qT07WQ;AUCHO0ghoP66w8eCHmA)eUc-O%xWw6l#Hu`bWEn_~(gGki^ z!AhJTgys-yTuw=Djp5LMH@iI)S(r)u+k!vkyN5%k4j&fjd>qLNeJEcH{ZqK%5q^pR z4YK}S$oqp^->Kc9cHKMFt~)L4W8cNAUC5(%$d@e*eV13bf)^x!=bLb>WEz1%2P+wL z)W}2{;JTI*%mk!&P;HP|nUXffmMq`2!-t7)?5vHD=Yzn_)N-|!;CLNUkkD*7K)SY! z4rgc$3$WaYopvVacP{yNnOa6pl?&AJ{ecehP}w#)JPIj^!e~-3TvwyGP#Y9sR;p5>`;snn*JOa$P zkOC)ta!=(l*cqO1yL*bs&dRAI_mpRwC)?NN!F2oX-(G!rXHRYYDe;3lZ%c1$-Z8Va zS=8?jO}pa`nn~`7rLdl7IA2aC4%k1E;2>2i50)mwSx4UkuzFB7@I#(@c6L^_gCYU$ zJX&xF1_+;+H}In$iHzTc-V^ojhlan0CHMb?FZ6ooI>QrzlTERJOS!KC`J`G^p^tUy z%Y+Mp8|!}w;7+Y5m=6fA5_vHM05gs_gpToIt-t}Ac38|lcN`1m508-6hEF+$ncfEK zM_Vs1u~zRA?w{eNHuJu{ME(!@XSnMx@;4@5lKMB`uz~PH)T)TUakA?YIpMR0?K*2} zBUZkxZDbD*x9QjEl?F|pI7z%=Wz{&E742}py&Zf=?lb&ntZ>@fzzf?fzxWyKn6j6j zQlG}0Z3a%7))1^s#^D9q6s$B^3$a~?b?6;*!gi1+jy}`0G|XT&ZGs+M_vvIdb8=d8 zYsnFWI_etup9I z(qW;*fCKZ2UU8}-jR6|%yxCc#s4&%Jty=^P^<$x*{O~c+#)f)J=x+3Ox7eckI_1pa zzP3_d+Ik&PFJlIj9cDOu+F1Ln;Ff*HZl>(8f{Q48vKb1VZo)0Q&G3lb4!1F#Y^^=m zl9h%tq8m%ng$1e)K(w?mk#>?b*H(bzSv=@$Ejug6=VNz+mZTR387D?-_&aagGPty+ zVRlmJFNPQ%+Pi1sPTyQHYzl+r-sYIhnnOH6b4V7fIj1env5(Pdjs+U-j=oNudIiqD?8R`zpggmzFdvBNepgDK?F6h&Z<8g?Zhq@1 zEIOZBv*xKQuHZl07Bn|6Xj6ZtU;Oy`^^aey{`|T+2dh6ZI_8Gg=B+%cZ23zbRV=(H z0X*LZALg?G(V^4EFOAd258}ti(6e8!vwEiJA$o>f?G)?cP^{MzQ-ox7I&DPr(5i2Z zA0Jbr=hH@Xi)Q)DMDejv67$(4P{(_!l4Obhv zsbeYBJy2L6#f%dE8*B{!ZLvZqfF~}N(>66@kQ{&3=$YD3Nf2>%+BWIeSe((nT^vj= zD=VuntMgZS{qUKLfRoKrzR+cUwiP%#$aucuR3>wue156 zP4{KPEwe1$PjXh2m6rq>Cv*;Fhq~+wfoxku1G@Q$}qkCB9)$o(m>C7?YA6HxHqcfQU$1fvj=S4iP zqX9OIgL-Vz+!{N~ky#dB8(UmfR+v3;?6ldP%lFPz)7`gaFm%W=Z!mKHU~XZ?g(+i# zZIc_vtbS;jn(_I&Ru+h|rOnnvt66>lvk5C~NH3sIGVC3}%~|ld8IFNP+r!9gM9rQ} z>aZNf+1*&(38mgHCV|;WGsmyV;5tZ;an^Z z=I7*ST24t$aegkk%EkfT?@3WXGV}0l#>x=h_EO-s#WDNbQWbENUsR#9S1+fqPV4pr`SQUN3uzXJj$0ak~GA$p>r-o0w_Dpu zzZ(ZJC>2LLeejn(*(%_f*CLMX8XDTQ{JO&;*fe=^_r{I##VK2chc{1o7H-hKwx*`` zpGJCq3DNWdid&OI&S65t&cT8cEJQlb$k4Qmf{gsU9H5VZ7*q^B(tAr@%jo_OUuX2c znfl){Wuts)CNt3X2Cue-`W#sG60MfJg_3;uK5#B|hlG!}9SHbml^Ok*ft6NSJpD%0oq)=Zjk@$!jF_YA8QcGHI3K*7Yub0_Vq?1I|*vi`{#tG~EZ zt*@&O2J*9;M7n*28FTd$%oRxtnawnzIl-_gE!YHgk}|TJ9&dq%GMmM_% zNra`5Z)k55*Ite}TE1&&dhfnpNt&td$uGRXvo-Yjir>e`)jml>u;oDln!mEP$~tJmhGHj-%&kg^U||)MN!Im0eWkgl zaoeOTdu9w@IyCL>HT^qVx>sL3u{}6_&gW)L+qF7@kmyw`QHDDvV8jFuAV+)^+q^n?72B^-@k)$(vZ#i~ z{t|2nMP9I7P~NFm44IJ^-8cEwq9^4`q08d+T!0=dxWi}lJl@uGZA_%J*6@q+5cMQ^ zD{d)IW20poUA_s2UfA)438#7EIERu(x&`;!@u3$ceZVbz@^1l$UUEA~BnWyRvmWdj zJdh3BoL?n$XTYDIhXYM+GER?4*hL)!CGmdYz%Sr?QL{1)7D1PSqM^>^n$wABDC7&} z(KL3!ym1g54s}>s4witlIG9|SQ(0LFC#+ay{osU|;VUGFyzW2;`CWN9IT}g0Jhy!C z;_257UNpHhr=_r|xp{nLh4;~Mbr;M(JpXG~_TSTZiP*DoxPMJs;l7mAfWIn`a^Z8S z%NB%g5jU^-!mzJ=^XJ*RozgQPg95Eg3kJJ$h17GPCKPdjnH3JQuKIFHSSnGHvlR`ML`EE_-rA<+KHL{%!43&y5W9^e`u|2-m<;xV4gCAq7BeVSNAn8+p~Q56kjL9y#|1(phX(+}f+Xf|isOyEOcc5kYvz&{4)= zT?7tvq(ENE`tE@4QqSBLaB0G!qjtD3;jmFQICRdW({G2v76ESP;4eTwL-Pd7Xk@&P z>MJ4%SR6jHy*bM8a3B+whvS*P6aRMjwp(BQw};c8d|2EXy7`GG#P-m(ho8iVNwa^! zqd}~XEwRds#=?t?jA<;qAOSo-0o)e_r+km|__w3n1v z{$ll#S(8gk%1ev*e9^IEHxwGq-?nQX^o?yRi5w|1zPZcPa7(+Xz62wI7M#RLSPRVh z5<~wZvSF#3E%~gVWYBELpdnTUmJctuj*BuDE?S{ZYzSfiu{|UApkjM2&6SnqfTK%+ zV1yF&w9v0!4ZZ#AksnfE4+H8HuR)r~cR20^r8LUwq$Z(I0Ec*|10Hl#q)>$?RgMnP zN&Lgn$sEVMM}M_**RPJgvHJ@@*u9rShEIkTfO?O3In*s)#rU`f*8X=f7tnfr8(Xnh zczzU|)~mu#iGtHAQt(WIBRU^~CH*5tkgB25A;pb7ki?;a|4X9wy z!jh>{A_+S*auK>cFG3rJSxST!k#I8=I0+ASMj;*7`kejW}nYl@B3Z3P{J7X7wJhU9D>w&|T zCr<90dpPvrt8@3Qx_w~slmYqr@V-k!JHPZLaowf+hC`PwoHcv)tc7HqsDGXZ#I<=I zp6AsY3onv3I9H4kK2?l9Z$v(xPgF4q%jmcDK|V2Pp|8)PSuf8+llbO}(P%ze(I!E~ zs2Zz-Dn_H*G=EkOy|6epC{_7*E1*Ty!&;X%dekH7V0 zc|T%touSuWy=Z9K{{4?VCT@7>8~d-h|E90~zgcrRBEX{|T^HEX$wufXfxyg7L#5r9 zcnwqo?i07^_<`RSIAPk1-_NsE;=OHE;@t#1p?Pp(_zGsGTALW`#3@kZ;Y6Dv9D22I zQoWB6bi-+o!y{FLIOcMW!LJQfdVH02UY8pYB&*z~V^q;kOG_RNm7>q>9r7#f56#{5 z$nd1Ln%bEUZbWdTec7t%(-t27WlQVOoUX0)ZRM5iE2ebJE65wHpRi&=asC%-syvhS zc`CgA@)C@P`DHoe@;I~Q!#vJdcu@j)fd$W%U$N*=Z6D~cJ&aE;-)eVCFCQoD@D2=kx&_DhY3(bx8h@Ob%(U=nbg(%F9d8sI>)e1> zM!{io40xFxPCh@wDJx^l6vmvWPEW~cbesA_ZFmJilQ6zcZDDX8(si;7t0xDmr%AY+ z%_&m2gg_yM(A;hmFlkPg!-;Bjw+5$Z6-Cjhj1J4n<>CeA=Sqc6t%Da=Rb?{Fhl5M4 zIcwuGs_H&tnV~eB7MxsCT9h+!Z2xd`L&5nL-J}bKN=xoH^Ei&g3-JD$;fnksvMWkE zBC}CUQin8xFuf}wjclsi%77#?sd{UGerMGtF2}GjVktd*bj;Qe+sevuxeIGGxJ_gs z*;J}}bFpBK7!&&F@b|ykeVKp4ghA==?JL}WQhfQIM+)=5=%qf9KjdAlRJ$ygorONL z(Pt^VIArvljsX>{^RPFkdPXBonR>{Y8UHC@^UI@gsD_(Sc#iy%gLRdDFQVqKc~n%^ zX3j^uRUOZUt^-AmcTV4O$=8-!MUG21terhbHI930yXJj$)8*f~m}(raSiWLyHOZ65 zKsAn{4&0r$#?inyPmQC25wFJawA%j-461RIDn20*5VQC|-MfKto@z$}BYw4G1+RD- z3spO=j$7?mh2Or39XeIR-7ct;rp%XL1e6OUNWl(;nO30!8seQBCMc$E4I=>_rF>?xDlm; z6`t91#s7pVagNZ(g=%OHX*|E@J*5@;PG?X*e$qK;Z`3&m@zwE}W68 zU?n#S8gZT+RnU0f4b_)*2J2Ko+)r{^8CVk9G8=n zRE?kLmph0n@)#XEXmx4}eo$T{asD;ogpk{fE2Tx~3j} zrD9EA|GJ9G&C})Ud+!d-6OT{n>F*D%Hh;<&XV*72k00L*eMD`m;$F-^$5e}VmpLl= z-@NY(9n8e#P;*c@kg~pV!^0t5V3>0;t(j@zJx({q5cPO?-HoHhioL;M0twhL7N-+WKI6 zv5>GbLZ=j$Zp?fs_F~6!SYR@~5Dhjx%44B%4IPCl*eC6CCPug{mzMZ`&ydC{D?qVo^6g6ssrTl zQXL@V33=2w{$gl)zkS@uvDoEA>r%<7nB;^V!W-Vobu`&fT-tdMz=XcgqQr4$CB~_a zI&vr{C&!!P8CRX_q%e=mg}UE1TUOr@Qx&Dx&Aes7;RUzMRH^*X0b4ngaP3`{bL*`+ ztM)EZIsDhG;uu_xBd*3HgFzWNx;xkvY|n;uC@#uMO>rWE%5~7lE0U*3#fs($EI(h< z=GHS zg$%@bEGl?Pjrs2(;6XV z*?_@0KJ*xqW%Ea9agL8M6>l+^r+`Uu72+mBlevw9Y4RPxWd7q|lHG}>Sxh61#gsp{ zde_}~5m^9kQlK24U8dxjDA|?S;gsW3J>snUw2|X`I{K_@=J;5Ta^(lmYLk|(pR?%^ zVsb=_V{%Wcd5Frg*}3C!nVQKbZXUP0+2Eo<#&8kIvXM4Bt_K$tT77Vwn-`bcMMd-# z%Fyw;LaYgbtI#UQ#i;Zp(dmoJ%Kd@Z1%wo%T1k%Uzx7c66@LE})Am1kxEudFj9Rlv z$eOMD!Xqef@_%`+*dN+3IAg}3*lYe&V{ly0GeT>h;%qAS!F<}_`B89M6$(Ek3Ql^Z z;F$!6EtweJi@VD&YULX0=`+<{%;hFJ1qUQ9jIRe4{#nHbq6)r?U9Od5+*Osdv(muH zXqYu3d<1Q4Yf%BVwl?|Jyf0n4Y+w7p_>B|h4E9}j>z>0slc&Izz}w$9tFiVTU*+t% z6&LK={n7i=rw`2jJ;uyD@z}0cW0t71i387%g4384eo7Ra{1OFEx8Qz6e@W9A4xjC< zxb!nEe8`9+K#Gnx3QpRu;AK&8S}h7*OmK)05mEUi?D<(*cW^?Qz|BPjVINow-SSK4cJICTSF1x0 z%cXZOd}HJO{hPkG>)MAlJ%0BskQ?{Q^1RKEr;5eK!V9DwPI6QD=_VZe6!CAsVZH7F zJ*kz2KapKBfSj6FyFQqWh^-?RiNO-Yn~e*I(}37?@KUtiP$JxHE6LeTKGL@v!>*a$f()t0C} zmzaH$gm#U>q;Wr{FdwsF+Qxm>Hoh)-)}Wxfj#zM-#efCpS&XAM$1Hr}WXQrl69va1 z*3h$0?Qr>y1wU=UbLEAResP!EHb44o3;(2rPyK$)g8wZF9_jZK!EpeArs!{g{y42k zn<&x;52Ro%=laT|(=}E&oTvfN(vxvUL4D%jfugv-OQqUHYLXn)1mMLeT_k!{crPUd zCqPtkrzK0L(*^tBat#iSNkvhIT#h4$9Fjvu2aO4k;ny0dgJVQ$YNT1P%hp09C!5p} zN3i}gLEFWPgT>9wwYAL?n&7q%-ugPyODO1{q*(2NXb!D}57k)~u8#eo4`95MnrP{ZZeNMsiFnTg74J2mE z_=~__FhyyYqOmxLPNjMXRf8~Slwp$X9)j&wG<-l(_IxNYYEZ?#shD$+!tNYe?TeIk zf*i!2o0Wx)uQaQqAP-z-WMxN}b_NiXr^CA{qgM$%@%ydQr*9p&tnJ`P$BL9-u(=uk z%D~hc=gr&EKc!v1|4Cd;9h`pa8t*}zPM3X-%xd>h0r& zbH(jb`ghEmcjMH~PtHAIDTKsKoRT-n6Iz8=8SCp5HEy8ODg%p&Bn+6GRjEa^+ z8Ptaglh;9kQA0tJ;Adity5y2zDQqVKta6=+X#X`LR349~&Qn|C3-~MPAsLOU_04NC z%?18|s`3Cx=DJ&$DSt&%BN1soiqD^H5YkW zel%f1U42(qo%r;LjgQWsxM6zl+Rm=EZA<1)apdmF?(;6l36-`4s#}`I)ifD9xjs+N z!Tf)hc52sO^iQ;L*bDI<%(%#2_#!mHz(7PcUwcDgykTPaCFu%dP#jc##qbjP?Qp~} zO!y~`AF-~YPYo~f$nW7NybH(Q@snoa6S)p6lj^|{eWG0^SxAaJp+cIr36dtu9qW^9 zH>LqQL}4KngXjBUo>{0-=GlBU%Cg0B9V~EKe`}y??CRk!F28qp)*bUNxOG4{12 zBu%UnY4zjk^NZFm!m^!np#g2){3>mKTH5WVZn1TN?Nf* zhgK};KnjW49k<$jBL9ayBh{{v;Ot|~iSe;Y;9J^yz`Up)?38YaL#bXLO$jr?K2~&} zt zS@TIJl)p6)oUSzAA#!jw&xJWb4Gea0;iCIysJzry(NU3ad+74a42lmXPnY;tu>O27il+b8yOzH z=CaDE`HiJx%RDk=Pv};$ZBP2D&FSeoGb`ah!S=PuTcH7^IJrNlw$bbo;nXt_D4>#C zgr)d45CI+0K=^8W)W*3Qn~w{d4_Qe!J&eHWp{;<7@FoI|+7=3(#32H^IW^I6)E+w) zZ>d&~4fs6Zr_^6r<)fpv8SXOPwXqJ}qj%t2zy8piT}}O-HBE!lIxd}Y-3AS6@ytgMi*mKS7S=aOo_J$sq+|<=T+oXtF$K3H+Y~7-at;d zNOt99OJ@r5SPpuUf{r`{b;m%B15a(LNYR{*6z4iEavq^aBejd+W5M|$znCrn&O#x` z;DL1XQDZd$9*`tG4;yJ5-GIsq|CfExIQ|!X1ncAR<90)ph$$>I_MFW@EXMzWxqiRD z$v?hsTu!#XGApafo0*0~l+$O6AW~qft*wJjQpSE=fbxo5cT1(+|9SO-(*0X!?;hV@ zv8Hv7_mLOGqzyw?_w;NTx@O`**%SJYU{70nPfvT{;w4qy?Zp*=+3CU5VE5%yr(QN` zpf}W?Rr*Nh_{Pr8#_@Q`SnI~5ZinxZt<5=@fgCL5YRSc;tStOnGb=l2K6zDw-$Z~w zvR?PJk;t-xV_6u83OnR3wu!G%OZ{cDrRxOld%T8y2rXaZeJHFj zo;5Mt`M@Aw4;Y58*A0)sMjIXj)21k*$mFc&5n6@r8nh&P3+ZWRVVBL9v@rid-~zUJ zpEJwXJu)K8&b^2I7*(Tq%#>Cp({TNXXu!7r4e;p^xVyuE{{irYHh8-MN9*J` zZ470m>5c^Ld7S^nJVV=7P-teBq#*SeEiK1Kw~t)N1#tF|UOV&EH;pg$6qk)`S^tyL z+p)pPjB_Vf)7wH!dpXNY_1UiarR1lHx99?zOYB%R7E1&|RRo9Hv25MVJF05-EIaoHgscT7T#U&F=``*<) zsXO!$>^%LDWnCW6xY`=3IDlOI%)3{FNz%wgwbK+Edr|;<(h%)Qoa3h<+3JV-?fa3g zv)xtoL)K39zuAutRxD~Y`BnQ-*+h?zd8A#1)+yFM@%SfWNATe<1(Zi~(;k3}=h}X< zB?j*i{1XN~t)T6gCxZ@FklI<$8oL(!FN6M36V5x4g|BuZk_~i;=y3f|QB3_13CUJJ z1gYR|wpBmGt}oRO0dCe0!A*%lvDFV%qJD^?Gthvj`XRdtU`OAwey%cew6j~1{O#&3 zZ1O}>M4&w9ZTeeeYk9m_3-URVAL@thQ1V0Fhh0uiQywfQoSY0fogz5+e7>K!qp&G;R$l1zG=#e7FB62DY0lW_eIjSL~C)4PU;?_RWM*X-H57Eu_L z{-yZkoE_7r-*~|VJ7(-N<7OBUoo;Vr4M{UJ9bWI8z-)DBgHjhFq_f$=(t9NJBn-A z$Bo<(Q=qtp4X$ssDAy7k<8HxE@=qM%fGv)2qkfZxS!ct12AIh3J)a% z=ye=f@g}CZ;<1it#lsK8JUP;^jw>Pk4(-U`fdCd*##lVbMRSlrsaGAb1_P38LJ()j z1ftK37AB=gx7&0NQt_yanJeYE7tzFPUl&EumRZc8j7r1uD^ee0Vm-Q~VYk2ss1wEJft1g`~2Wix&D6ZdCA9}zr3#SWe8jwh> zt*;FPYE__eoZmmLZ~KCKDbOGKt7#m_4t9qpBV!uijOpc^AC)Rus%+v|PHv%gmkuX% zcU;*#@;s)K=kDQC3y`AIr(_omoY)N4|0d8imUHZZfmHk(?fJ$tk^rT+&G54+4rvClieJ|2UG7wo68jM1SJrwy2SmU_P!h z=Ho^+2S$pLlGeyz(`_%f_$q@ic?)`nx?deHd#}oe1Gu-Mm9z>!nrB*+6fNYNPl5m_zT8Ge=&Yd zr(z8?5=O2X!RV4;9(-C1g?@qIaU_m{)IY$X1}}tQYi)1IW24Jybdj-aQgK#y|Hwg9 zbbnj#o%&B%)7Y|hdHe#%rVussWEgEP zsX+!90>7lD^7z$Spt3INB{hmLp64mGkz1>~s@66)1R7gc=&- z^)2d|ymfwZdC|=UB{|vI8SbRwX;WG+Xe`XXsX8w!CnG7PxPNlX1r3m?;+159lRC?^ zlV!nhe1}27eW()y9G18aKWXnkHkNk;enCw;gPKBJs~(Mv*0S)-8l{SGwxpvaRnSt@3|pG7%{qzEg(ahaDAz5QPusnv zqAxGkS6$Q8GQO>$y)jVNGBSAcoVi>Gh-JXMNI20L1gkn#sxT^^6JS6SVxb7he zAy^Rkof6C%C?c9-!yg06_#y%-SSyud&+imcOx(zji8Y)Mo50C2`61=Prl0#jCC0$A z<_Ld+tlmCk_2wVUrz^~0nTpL&Wg+!joD`NsE|2zJ%$l|W-SKgwn17950K-KUwvk^V zU&raX94}3RdNBZ{S;#)%an3xSx;HDHF6<9ndgbu&$hK|e#h#-4jLh}xez0fv?mf?p z^<-fMB!jQ#z?WCfz!em?dy+U4UShhDkR z8eCb_O%jeW@tqMqr>UDH95qunNdVc0Dd+KPN#C! z?-2`5Z|LFny#WtfaFSYt&trBtpZgS@GdB3!a>Sw&(x+PEdfTGo!~GG!qsHx*k#>>a z+xdvs-plnRKPP5T56Doc9!Tpxr?f;*A=!+AACH2Q zRxA7?QSbs{qul;((>i>N0 zXM6Ubh$G|9J462neL$4|j(9D}IGgU&WThv;d8HBtsXk5tNn`t50n*mD8gOfqKTx6D z^1|&M^!%K>_Jf+M=hrSQ>CLP!DDkEJ`PJKYLRxREzMv%kwv4R&LVSOXCIoU(z0x?Z z0By1+i&$Q<@Z(W%l9$3iVu!P@q2Na?IDI3Gtb>Aw)vel5{T{RMAq8HI3jd59&Z|bj zPutRm@FI*628F3Zb_C8O| z)#vzeU_%9uaBQa-_f#CDjoK7AP%c-}ie!Ct`EN#{9c!umaWE?_Ev+c6 z5WW@{=A@*QT5lCN@n%DQRHE`#Jk%zB^xR7~g$}*+(p$|9CFLb$Bb!k?ho{P;d#>o{j+{N;vkG7varQJTqM-wbHsMrFI&h<*1NX5G z#KJ$6Hn@&kE{spNTmXk{Z@|y!TP_rjj!-6_9hlIv&!SWxhZ16S|jW^;U+wsD^z?&8Sfcm%GG(SsJ{MuOA0;h#m{a!E998zuS8IF#z+P@-{Drh?{% zvLmX`R=p!mrs6uzR77LaxJPFyBC|r73j4Up8Y(?FV!>$^=>(_XJd1JUbj-pho+%ct z@XtiSY3Ek(PwjBFh6;Y#g6GP;k$&MBJRX@J_6!vMNeiF){hCGpZ&C0_zo!Tei)7w% zsn!~`F5y$RQcA`aO5IUcfC}&0N|}TY6QTf*KCI+&4jAX5geb{C3DR%f@d)6z=G7Ov z^9BQ$v?kS!Dm``l3Jj(tr(pL}h4a;1O;4wthPb$Rz|zDVOheE$(kj?#HGpoKv~j94 z|1)7zoY}^XA76v=mGNEUJKI`n8fzL5UJ0nnFJo}ywenxN^y0+r80m83c_`b(7x_P3 zW7o|2!nAAartBVl<7G|PtXpP>wq*tD271KrQ#<{kFY~RJJE#)7wqbGfm6x6y77Uhq zL}9SK)>{+r-V1$Imi96oF@NYO=Gnm!Evj`#-TB+{1^)dBI=&lLovLqhkxND0d0|0z zmZa|;BHKYXHSr%*lo#NS>T+lelarUHX?Z1i#b}h{$2FgPOEzZUIzJDu9T;*DJG;iN znzbJVw6pJ=Ka8Q?P=3*j$&TNrbOv~cDh`ctVfcmJT^N>Whq#WL-?budW|O7=cKC-0 z;3q7&QE|?6sNx)S*b2v|cid|Ci9F6$>S2-_Y!C3+-p!3;?;;$LomV~BDea6ysa_vV z$*4Ftcs2WM#qEOx73VRS&FFiyy^C;1_Rcr-& zRGin2tE!YveA@(-6=R_H>Ex0Ppf`A2t0=Rf({+~suDck4@@hF$U9D-=4b}A;K2Je4 z=Sg@^f(^uH)tbkwi_D_nczd1sm_*AYC%Zmao)=qY9(UES53Qtl$}UBTT61J{M%9{Q zoD}zd1W~eVZ8(^chCBk~fLG&G$f*$9g##flTT~avRixaLPIhGiXmiD=#LWi8l;Tv2 z0fVc>42-zdV$7eHFsNFL@~5Cpd~>y!(K2qen7t)zh1s$VyEj$H5JjpMyM!s%=*S1~ zD(e^DpsFyVN2h8RejPn-G~uvLN#d!PYB7~hErf;lP_{t(n@W@B*kZa{cvXW&!y3saG~JgKY-3d@bVeX@!Z2P@!W}s z=h|9geJF~Ji03|Uqv#|!%mFylsTQ?NL!<>C#e^W$>m^>>>m?8#kby+6mw0Wjmjoya zVVVu~v0_!nt3P%3_N%)mUUTD}BmU~@>Jj{ln>eAjx8Bm+Gc-8XzEt{AKwKVxe5QY&bP8ka~Bhm^^qgME4UDDlGP!2VFq@w_jT(6gB8 zg_7b>+Tsacors{*f+>$rM%-!L)l+w0vFhp>q!p@PlH1#c+@|w*W8o*H4Gv8(@sFBt z#2AQw6CNfw#)XuX<2h8S7HS>A);un!C12jP43?MQ-E%Le@xZN@(i{;U7NMXKihym8 z2pVOd>S~vV9uRa)zHVd@iavjH_&0j#osp7J(G#_xHi;@Cy39E>4RF84hnmzRSDeGe*0&jCNndPmB&PjDCQ29&K$f#Uqk* zf|=fm2f;R48SAtpy!E85qH)V*E+HkGQ;!3dwA{o27{5;dmRe`ZMn1=Ek{4cx8 zlkCQY9c3tZcc9r-X*^C-qD&TxsY8BH+py}2`f-6e$2MGeo8!J``|W$^`rwN6bt}Zz z8*#E!_uekOe&?3Zrt*puO@=?hIG>iiU?xSw_u`Uq-yGj1p?o9$T?-$pflIa<1s)+y zN=ZrqLz%85eE-_#MqR(~1p;pI=0C-{M3gg2B7!NBN8hz;iG@v*Q`1y*KNjZ9=MOB!u7&M`gPn*3W#}Wo6 z^={GzW>oK^Y1b#FP4d#eH;S89wD?XmH>!Hn7~!`@wP^l~J|a>(0nGDD?RZ>_v-)bQ z*G9r1sp*#>UKb@b^*T-XqXbejX~#-!H0}Dtv{`C5jpC+NuhO1M4exP}ZC{dVI`m8KX&?EZS!hV32>U*21R= zFr2h4Hrp7!m&PDuZ3?l&#S3LGKyJJ5LSv z(5+mz`5^_o6o41ajn5)9*gmAtsHrOWoJ_pufTkH_)9}BvB;%V1up{)`H~ETzHlJI+ zCsZ=h`X8c0E(!hd%$bq=)qD1kP1!TFbKb>=4;!P^@8R|RPi0l~wkS?@tq1yc6F8-> zxm0MAf?arK1$Irt83PZT;vECTl&Eg5L8Sy}O9h{Wg&7%z6@}$xrSu)qfTuDk$@nO; z&y(e8rjikN6@L{IR#?4(f{$d%p|%^hB4^mS`C5Nv=#MKsKCgFDWu*sRO6km&p?R`* z?$nxK?tRM(3kr%tKPoOPDq0P;5f%Fg-?kqi{t>6EMLr<&ku-~lf64hr~km{&FP zttt#}%BdQ@C`IuTr_Nt{G!_NFnqn*p zD4q58dJ+zIc~}a@a+Us2iTE9@(mi|B0yRhOXD*QA=Gk7#z2mm4+I3a$HjEGDXJMQe zjRD=VdSTsK%DtJi46neL2@4ba93M>!()bPSm7JBQ?|Fb9-YX~bUTJVno`&&~TMuT& zqRAeH>fNLr-TUX`(5}}L(gru(blW6`n^v5DX|J?#qxMQep4cm6S~O!Ev{%|%sJ#-m zxG?{=88~ao#N00on%FCeCZu*G0md{7n~`q{z6J|X5`rDmdqb^Q=|7Y z2{5o*85o}?z`$;5V4O~X@g0Q$&$5Lu*t1-!y%jAtdWhKKd~}O?v`o+fdO9T{1MJur z+GG&n|5P-08oluNk-QuG!)Je;b-a<-hLD?R7mNKmEAL{;&c*pUtB=0U`ow(~&e^?q z>F#0ios=0Zm3_tQs&AS;VM5aXBzHH-;aPVrTy)patlbxR$4@BC+gdp;G_JX^5n(~0 z6@@>R)fiu~hHnQI;T6i_TM`*u0S>a_SM$2JUp)2JhKc?ajZIx^1~+^vesPnSy=ZdV;`Y+wo%sbN zMdPnnea977V}6($)@wv8*y_%(+aAO6m4M%54R@;{Fpe1GyraJ71n#74P_{|<|1?Bbg-OU2rRU`Gaqif^6h#lnG-RuDx5A1{t- z4jMi`mxK-7;ox*ulNhS>`F)u*d^}vjRX669E4Sac5ZK%yUU;(k_U={t=Ph_><#!iu zZ=VyKGu&J45w(By1=NPV@$w+;=VNGPk_13wO-~JX7OM|63 z0!m)Jo_F#Ezq(p^KUW(o9X~9@}4q*)EMpQ41EAr_8qKE$}C@6Oh1 z#e~pXJHH?YLchc*hVHiyMR>=H6j8hb1F;)%kqx7L6viH4%!y#&l?sD~wX>0kdv(OC zNMf+|ZLt{PlYp<)$;tx*`$8>Y(7u45Y~>X#iZ~ei!eq2?=(HCqsUJ0I+V?`9Cq)w{ zOJHEdhF?ZY-Nx^+Q7!3SMnI>%P|-dUi($x(_7XLs3DFpu)T%J&J=+otIq|UQ$<_0dA)7L^uYy~&b!||bSNo$ zBFPS6C5j$obWD!AqB$bHMclrO*A>Z_-par@ArF%Mg%o!)#?l$x5|xdA4SytlfR>r$ zyTT_zwt}kZahl_V1rNl2WHLUgf=$r+s0u31J#@AFh7I10!n z`i7B_!@oTKk9S{fzEAf4`qyDCWUOTQb?y)GQ?@8K*!v@y!R}IjUf5WYnUFVFwus=8 z;fk+x{N1S)Av;P&k%V)x+S;&Ub;tr%1a5rKA(0kpk-ecg_k(^A8j#K$KpEI}ycx>@ zVW9TXt1FDZ$VbCF4colaJo)f_6XKFoinzo{g1AT9Oy*v-?b42gpEue*Z?=U+B+iYt zu!u(6@JISjB5=K5<|&#u3EA**5@LLOKZ5u)=wR-W#Is?1KNq(5x$uj&JtPdAG_4_6 zn@nH+kOKR)B#&S_G69Huq9R`i7+#D+6%l8XJK)jXKKjH3f0UHTb$Ntp}k>yX;DuW)%Z=!2@@E(04b3(BQbZLCX z7n6l@L!CR!k~cqk?4?JKk?|Mlp;PGVq{uX-t9F|OYVJnwHW-^7fBoIM63g+5@#Vzq)xZ8Zd}>rhYA>B4=6EIjVd zP8YxZpf2ciC~;%-*KDbqRxzX0)8;zNVhD}feS2p1?RlLan8IM&@{wa}WE{|zS1oO^ zkIzZ_t)ZDWv&~WCI~6@XP5I)_z$=M)?P0v_wFmffv9CQO<=LV%%Kx_R7$IUWQui%b zu7LM+t8RLi>Hy$O|v!+Zek3mU|&cdJxyLco4#v@j*wT9GM z@RK|Se9M+|6nIm@@E8=$Z&)qrY%P9EEtKa#KE`jAC(3eW&zMF=v1!OTj$RxiO7RSOSlLqb_`)q*#g>cms)U=ox=Q#RVZm-kYFhV7xbh zL!EkW0*l(H+l&6K_1;9C*I!NR95G}g1{ZmJPTk3aFPVpzyRCW%`9gJdrQcdHfhqo! z@`~Jz-p~iL1}1dRnKemHo1N=l-DNEwx1+qwQxvG{4&~A!y0Eurt|6}%cpYs@xQ_gi zq~V3v6)S0b%lMLhfqgYaJ4Vu0@8sVoj8oBb5obO>Ffn5Ek!Yy-{M5v-yiKKD(!!u~ zRy>^`9~U&R&Ph{M?8DI5i2g-s?C2KtXvsPr-Ga3$SCZBIm*21$Z@yuHGx2Ayt|94U3!!W&N`!%-PmIf8TOg)hm~U&d!>o3~Odvh53j@PkrizJ7y^*S@VGB zcWhwi(#`9#@L}+~&5((7FXXSBGSsxYcy|d<@{Q!ZEYVo&7MYbqGaHd0*`$9(=C4|_ zWVRst5+!pPZC4_e$ZTO*qS3Pi75_GN%WSPgyL|9K1D3YO3<d#)A#H_B!2NN{gexGh_M4xab*^IMxNzrj35=~S@;>Kk;KBr zbJY}dSw<%sc7Q4RkJElyZdy)uCU8@-s@yo*sE?)j5FE(zSUDZ>^<>df< z3bz&`1q%-yT4?m1(zdF%_mZ}Svac)jj^FDIQ2%A&E99@Rx{46t zX%03PQQQp!h;ytkfLyQy>zQ0T5 z1Z;TauY#A(-ZE?8%Ahj4>ldXLXV+DQz6(!<7S_xeljda1y?&-zP0RQC#-vt>hb^zg zkkaR+%EY0*APsNXgGp0DC}v&8Vxni^FhL$~frsh~@HKIs5S5;B7x=Pqy_z#`qI)7{ z<$|p}6WVY1nV`9;t-t?%o}bAVmwaE`?Y}SJ#abqv_&l%Loraa)8e;)tF;3tHR$)j@;(VcfX_ZQPfSqJ7qEX<2B>57=5_uU0KppJXExSD%_KEz3>09a~GBXwVX_ zat^#dA7=Y}uPq?B2sZh(1(hu{URyAazQ(LZCf&*$7L-YT3jaUvstb-=-xjDG-_f_E zulI&|ldi0tIIuJj7~kHvv~S7{3&(g$?k*mSTy9Rs84+xmDuI=WBCPv$C@WvsZOT0-3Uwz#ESo*K{b(S1QvXm-q&BB~{woK(xB zqgz5#Y%QTFW}kp_M2RFsH7tNbmL>(mKZIsXf@VC3zALpog9mb8z4N_7cUJmxvT?Y| zN|LHXkDf-3^9u(;^zi4X8D9CeLiNt&c&riXgu^J*iPH)tL2n!chojLR&|e%(#v=

=`#)KG;=SQP=17j4kq9TUs=w=g{Du)f2YW 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 z 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 Ogs;njlgr_m!9M|bKS&(_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/montserrat_regular.ttf b/app/src/main/res/font/montserrat_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8d443d5d56ac36091e9689cd5d1b1948d9124545 GIT binary patch literal 245708 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 z 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 Lg_BF?GlRba@aD!@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/montserrat_semi_bold.ttf b/app/src/main/res/font/montserrat_semi_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f8a43f2b203054676b64e38e2b78af5468c39b6d GIT binary patch literal 243816 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

pQ9pV_Wo(eYaP&1a~#B8z|n;+Zi{ z>pQ#FukVun=z{2LWu+Snf-48|gP|n{dVBXr!eyP&E7r6vTfKT&+Ztsb5&cMV{t{~? ziHR5rpLi$y^c3(@cDNp}`nhO_v%RGHf7JmeNuc282yX1>=dqt*oZ2rL`&lfKJ?X-o zf^eV-A#ar~&F{l>JSWYQTqCRaRD3S5{k9nUN7L_4!Im(x$=HaR=$tt6f8!sCn|v;gW*4 zK4jm%&#!6u_uf0^w1h5i9v@N=zAn(SNOCl>*MwZ~kT4)YUZi0P~p{=A0r;9S2WM)w= z6LzPW%j_{9cY@bw0|LoR0bRgXBw)(#^0hP5+*x1cNxL|I)D5irQ7f2EfC zb7o7=Y4L6Cm(T-f`AgOV2F90746h#;WNQJ#u(bxDv2A@rV{_ly5=`q)oG(0q|3aP+ zElJjag4!=2_sn;rzyw0zg0gw1(H9&T8n<~YdCiV}3QF9w95V5N}qR?dKWo7fs}A?@ns3dn?3wru5&@u9D*>YTOoM zKA)Rt#%onH?mKE6@qPRh69oS?c6U0}578|F$Px7l6!w|94PlTzNx|Rg+O&)y-N5k} zcP9C9uV6!YD8DLLI<{rqkBf%0Dl260;va{$)2^d$(aJPaV>YQV`Am+1|5LU0Z}8Jk z(ma(ujE_?(WxM$blsb*fnlrRs$!TvW&iiaEn$V?uxM#NQq|x$Z8U zxyU{3Ravui&Lk_*O#JWg zM9lN_8qU*fC5m87Xe^3wsPNth4QaeXI`oY5kipR;-dG5XL0-u@UJ0EthZLY0i(A;^ zQW$R|h8rgZqJPJ!rnLft)@tw{rPyQ#+vlg6wa5^$jUCzrFgVT@~1H z1fQyJXnTY(s&9I%UrwsNf${o(slFLHFt%v^;$Hj_=^4AW@Y3ei;aMd+7t8$p`wc1I z7k!tc{Xl>8UFmNNg{$UN)L_3rF*SQJL9|Am2Qg8DuQp*-8OWBK)i<;#TlG!5T`%c6 z%U)G|V`;1p)k{=BWa*`Ai#9HZ(@XyL(lE`EwGu2INCBGV>xN#a0sLo_ZSjKd$V%Y5 z>+#s94Qx6?v?ik$oFS!M6h1sFqxV-$IBO#dUuh$v4Y-N=DKM*Vl2Ls_SH&q#LPWAv z-+(H(qij{*kYO63>Knk#>KoWAaVV<#ra;U0Wt0X>IZ|R&-R|GEKqRs(2DZX zS&((C;Vnx3U}!rFK2c*RdLk&DQ>;P1pJXnt87D%1l_-k}oV_gL2N1ik)5>kqgm(ho zi$SZi1ZNxYJvjoJ%tWlw_Lf!;XMojPT1ZRrTUxWy@^Cl8d`l}9X;d$G@Ov3XyyxBV z<;%w}8K6H0+AqDdy&Zv1Bg)uuXvK=Lj$IV(q<^s@@~1~gqRVLpkKm=d1n@I5G5nMb z{zZxka6ds*_5+{e3uRh-RG`r|B4wk13GTG_G?JjFDt&TKm^;N6;>K){=fV5-tPHP` z;tO$@br^ece8EnS3%2!*P<+9l(+N9VUupGRNpP&Y9zV%Wafv5w{``o(+QOV;!~B$* z?WdGHrU(pig*g^eD8Zhbbj$%3i!rzJ1h=^BDa6Anv_0yKr52(jP;}?wIRJVI3x9*A z=D!&}MeHRkVnUaTJvoZ%!^tHjjzh;zh4Z(NSVcue6-DJWb@UJxCrs&;P%B88&GlEd zm#~bBeu$6D+G;TBCF9Gx#|H|+Nk!8Gp{(AbitrJGb;VOV7lCP2nA{~~X+d#eer5ff zh%b7#$;eKQ%{MrCkHN`A&8I*e1)q>6+~j-(KWT^SL`?-hZ-^nozA!BFWcfer_8t`*=I9a_6r|6Jzity8E^(u~@j9KNxWG={OZYoBG4VB-% zB*cIqddVb&B*TkWs!RjVU72xsS8r%`Whov8&8>7zx`}S9{lk-HAwSh_DY+{4EZ}%g zW;$ItAret|N_}}?bdU%3xOvzQIa0F?&UD*G4T-s~eJGDP&r=T~<1D0A&Dw=0cKVa>Q ziAm?3cSbtTc}yahn5INPUY;ZZtVQf0NS?0+aXy>0ht&z4nJ+xJZeS!mbp!waNwPzX zlNvOGdPynL>orY?R6M|9PjyzASoCcL6A2ad=6^czaS^YwG8C$8s%)&S2~~v3{h=_W zIq9)Xaoy@=cLa#gfJrUy*P{`j?~cw#Tg~j2+s*J5-?E zsJJ`@2{NP&DXEMMGyVd#Vq}=(HccfERl=_atL!9QR6_YcC?iv1@y0rE%uOpu&*x3^ z;ogyv81&in5|U?*SmOq)3;CRm8z^nO(cngeLS_rStL@ML(t+V{N3=i2f9(B97y0`kpp%0RSIjsMx0DsH|KW)Ha z*YmsslJQM{kzeLMX2ZW=;^VFft<%7_yu`)m|KqIV)VS{}eD)4)_{uwkACNWio_G`e zlv0H^9#;^4Jb?kuw7)3^3SbHRrkKjHmujIzC>`~pm~qpM-xE{Mi3PuYsB~^< zw07UT#YS9Oz3X$cMrN1HD$Gqy z$y+q9=Tg!?YL28^)K@cJmlaG)hSTj$h6hn=1vmuj9Q-6Lfcz)RcJ*%9kL1IU@;TUD z+SxT&5`_UY(Pzd0^kC1SwB7RI=g|KV-{}Z5M_;7d!@Yx z-chxhQzjf7V8<6GoOg&kJB9zM1#h(D!*VyNLU0qGEPBAff!vNgzxU)Z@<5h8k*o6%?ZGw%KcSYBDj6xoI&vilXt$Pb2*}ia7YkTj~ z<|TcR`AfRS+OF;C-ZOtrsknM`$CfLTy*sAQYp8G8A(k}Nwk&UtriwRL?_bb3Jil&5 z9ymht+}$kGd(Ch~yW00;sRtgz15VoZ8C3`-rF@WxJq}N5PYlSwSw;Z5H?Y7YEmE zTDNZO`0;S4BEKL#eZx8-w%u^UwrE+opUzww#(W5424okmRd~Iv;>-ln8HjT~H?f@z zCg7-fO%M)on0JA3?<^IZPxCe5QbOtxJ~-SC7Y5u#>(j};L_dg$oe)3M4&W@|Eu;hL zETux)*;<09jUEy6dcro6o8X{WKm6!HL|rNJ1KG~^B&aksgKtD&TdaB)(qHPH1fU!O zHC!q#K%EW{p8iJhvwF&i?n#ioG7G)wqQoFVRSmlijxA|jwt~X+ZK1Mj_v4!HAG?s2 z5HqlDH5-y&D~V3f1*)by9)4yD_~|L&r>1~kaKOn+R^y(q;EhZj6FyK);4eZI^S}@$v;%A!*`qPECpPC##l znmCYZjDr;?BUn?96;FO24DoLmN0Z+NEAs|3)car=;)}Q4e)}(fbjQ)7$6o%`^UtFY z!uz$aMK46pU}+O)5ObwH$)GzX=`)j10gKc!Y*D&rLeU)Pn@!jl>yrbSr9moWgd0sl z$4JjNH`7~cvg3SkTj%Wl+`9DI+>*-l7f zE}d({Mfn^?=$uZ1pOSVs$qj{n!T~4CLcw3P;ElX46FwpTn6Uqo7Cz{}=U4S}-VUdn zoYDU|2b|8c!aqxJ>{J+k{1x<^;x#dB7u7Wm0~aX^{2BXnMeH>(@z-d*D2@IJA8GjA zwrwlK)@>`Ip9WW|zKLenqb14g7M5-C@Y4=B(MI9FYQmwpXpSa)LQ<69rL}<L^;Md1o z;^-7uLlNJ!Y14A2<-oS0|Ka(ueCw{h8*df(&9FRuQ7HJco1WMpzIGEHAA9}Kq0i0< z%&H8Qjg3HP;_b2J7vK7E@dlNN{2dGwBeqFCWjeg%M+~1bR*DM03x9!LCBGSd7ir?$ zSRkOx2n1lY8r_3d?QM~QGSbW?F|TqqM+(U43|LNQ0vxMWxiF)EYn8bi6&Kkjm!rnH zofIK}-`Re!zhSU=UCi%%i^@qE^9UBm<_mDGC4D` zL8r`wb9S`u$(f1R?5Oh5zHXA8iVsd$aN0%k1{IulF#(-UTKF_)ihC>k^L9A<_X_^L z15UD2!OvOne0gLkK|myXNI*~@bVUrZFljW^ ziwZgAb(Qr@OHP3@RJH1}$#$1D0mH*|{V zXy)Mj_3K2{^uFfkXZh;L*8IZ0!Mgg!xpDVKmfSF~Vot4CGt`kZzivVN?U8Ttsr$H+ zHsEAqS6yEsI8}mcLHTR>HU9l+*PHmMshYW!`PE0Q*3r5ne6K($)xCe!T~4CMZsUS;EkXoNh}5DRVLV{lNLU$g(Q~3KW~S# z#8UA09dMFZ3VzNGXCH^)lyx)q0Y4{a-8vIsRyi@5?};b!QL9_4wMUj#&k2_lyItcI+vCsjmcAO(!`0~bd*k>~++J(pxg|T!5@IVu?ond2{ubUx)h2T;; zJsDwDO`8?duiSsn*tQLw6vi^@rDemKZCou))h6$WKGYyh(@+IR#7^NDJkk3o#zD=c zkhs=JMmj#m63B4zGgrnndJr-Awc)XzT-c?vz3W%W#TS3FGG*Iz@Zv)B%avLZb?As3 zC8*Q_#?4fzWnjE5`yuch^_qxE(cBmVQ7j>%EO%(mT&ZQWOjxO9Z;2SZ*|J#%xh{pO zbZ~MBc)3ygxU!Yg!lA+f z1O{DhT+O6SoE6EyU)=;o`MHOo9LVL$9uM8dRM#oXdQ$M29uyYv`v$C0u|Kij!qJ!l zaVRpYq9PE`w2H=xhPl;&^1y6Ns+cmAso)P&M<_jNY6|n-rCnb@eOl>Beb0jS(yKaG z9CG9(0qHy36TLKZUF-0WXqs_JOZ0ZbC})M@%uAYDb6scByt-C>S2zcB7RyHG~=fyV$sti?Br37 zOMb_Qp8jr9^c1ll%!Q(--(l`pAQ2@4Pa{^ub2Q;n<|;V&l;&>2g@VJ2M?V}rML!%p zeJ(C~+7BPp))M+k^%wyke!|wHo8UN-n3;YIK5LPNI0Y^;fJ*8ujDUIzW0QcV1_A-O zNGqZTwt}{|FbvCyidVTDA@(2ou^X;B*pxrG=&I|-8t2b%8Ect8zY(#Z-|oL@RYmzt z`$bvwFTGvMdqjTpFFnhC0|IP9V}6G!4?a4-n_;5GeyM8U z3bn#uMrmn4y`C}oqD3s2jIeC=zm3AF-R*(-`dMiem~ZpMohoG7I5&A9M#c$&ZCScQU5=s#gf$M<8#VHwUEU*Vha zSA|cSUBS(Gse+THQgDuHVh3Q3i+^C;4}C8qfcGK1|6ktA5dVnQU$^Sv%@p6cX6>Wf z5#hOa!+~up?%aTH=NjV@-F|J*4H>os@Y9rev*2VYDg0MWIL;T%--J(arjBE$E_|a4 z(H(qi)Q_h>@TCOU*q&iXRetBqJ3{M$xotdZhgsxmITW73nM&|zow}t|LItOK)VK)o z{`ed6)ybD3`Y%3>kH`F_B#3#Z!t{TX^pW@lMhJ=%;(N4SZ@I4W5cK;9ECKaTQa;R+eaAR$4<8iu_C2qKE z&ow=HnIqHJuM+>!)ZE7a0-*nMo{jva>%$<~WM`0xMu zAH+>BfG#)cGqB$$&>^f2c^Tq`oNo?uzG@Q2nJF-is6I4$`5t|cw}GFJqvC#yb5|4+ss&cSI=RMQpbB;ezdX3IEET4(ir zehQ2%3*-I780`P4({gSy2C`!h#^#3@)mKRV7^i61>iZqDW!&1oY+<}R1%}VUIBR04 zH7Z%5uf^yyk(X(UESdC5K5p}=XY#9U59`-xst!COEhF8BrpWB`|E49WXPbhMBh~}? zjX|%zHrnl;)B* zscMO8`MnM(yl^n=#*AF%dmUUH!Jl!30ZHDUNIpI=aD3=fD+d-1H4oO-4mMxfIxz5w zl)huDSKrdNxxa1h+NS2UbK6&JhPLBbARZQw?;FzjHmyu~d}Vy5CSjbGlQHsnCEN!z zrId$QBhCh=_M3epHo?v!Uk+=*$B-Z_nI zoQ*sGZ+$=#(Tcba*zyxnSsH`5sbPcTl?elmRM}6>F}0xn3f=Iav0WE#G139Z+5LVPN0u34`_> zKVNjx?L{RG6>m>&Q8jf7@M%Si2GG}wY&3wbHD-6#IXg%+lFipaL->(@z)SOZ5<{m~ zh2b;6TY`N~-$+)K)N_rbFo;~M^=4;lT6RHpeqJt`W(DxAPS#*b(y4EC()+^Z3xNEo z&d=Pj0{UUiv0m}Z)GeKZiQV?rNFc&#^!X)6@%YA;t5&xko?RIjZCu>3Y+37F(Lal)KQ6k~Ev;Ww zTUlbghcVOV2OFs+EJ_5~N zw{G72xgz+NKpCm_W4)VJkZNxloSQ>ujORq!S1)BcoRN1V(Cn*i7^goJyf7?it2x|@NY)FQxT3NQJ>Bv z*?FlNzSoGqBT(rYr7DnWj=XiN4kPa4WtQdO9PL1_+-a7&9ovCL;#rD1(QwhKoN?qcE=2>v>*F(ZL3u7yeGR z7jC`VMnyEPY2v*6G`N6jYqDUCE{mX)*Oin!^_TiEzWJrTTKZC7Zces8DJvUqlI%fLvk*{tL|4rZN`^Vavu5}$fHy%Iq@{Kp@GjG5B_KW)$ZEEQ46N{rS zAGuvFjs6(xk(hNwZ2oww!7+dMJ?{Xc)rLX$`fV!&1~NUOG=_oq8w?Cf*MX`cUr)lW zGL^iI@ffJF)5H?i6u^L{s3Z*16!^)SLiI%v2t!k>0N(F)(vFJqubO?@wIlBpV~}

YDqo1b<&Qi@AH!|6x~QWGKP1)69aTzjC~J)tLUpL$Z4UR!2GHT zWD|c)1^bNCfO2#xYe^oOA6Cf-dBAtZ2QE<5%QaB6xxd*vyP;!4`|=y_KJ?=oZ}gND zIJc9e66ys-kae<}*F5LEfYF9GCH~GQ3>Y|J6<7*Uh5VDbc!|wiQH!%BDhB^PaSoXx z@=amYVm-)JP&GQG%qU&K%dtCC#>YCK9OFOMv43+xUu9(Ar(*fe(UdtAD;8`KncJiH zUa<@Fpiyq(-D$^+yxu11wey=Hk8Z#`CcV%=aWwWZ`Gp3GpsBYa1iqCT6s0Q<9~LQh zzALnk{$!oIsz`wCYG@G72N1$f3n?6G}t& z2IoHw1!gc5xHR;Md<^!;ABLws%C*RH$bx4*eUh)vNyitOk=fu5fb z+b{k=&9G6@C;{B8#-3qCl!J-svt%t4DWO6j49-Qb)m%f27zNOb@=Rt7Dh=F9xn2y*-ET05Q;GbLn z`dUQTy6KX6bJONzhr=RzN|7U)dhPzu$h4UiRifV{3-ic1S1a!T&kMZsZIgElO{`Yx zCQWRulw^=v=~?GW4V(R8*eo-V?6bX!FxU1f0&G5h6`?4N?qu?-2uWG7c#aW~SR`Qt z!%8m2LtB@3``S1s(nwR3CN;Llpjmu$d? zdDk}?yMCN^Cgz>SW1Nv6hH)w(#>=2cK*uQ1jWvWpx=~-AIL?fDHOA(}(fQ*%KeKNu z&TOn;a^F=S&^N7_yl3ZZ8ua|cab{x-@}8Y7>adQ4app;MyY<7%LR8|)(3eV2$E2yb{eC^!omG$#3ZNMoKKiR#QJY4ppJnleAaX~?4Lw)D8 z=w2MDhP8DyYnySTOxiulXKLS+XR1*WWdb@d;;3$KnV9O2vR$Y8j-$G@g~`ZYH!~+F)YiJIgPC}g>f!12HV5Hz?mnmRgn{edt9OeRhk#CKi~r#Q@{Q&*VP*?uf#PFc+)QRl??>MJ(MzSXpVpU zfmnu$X%wG`Rkrs&7p*+psf6tn>!PoKJuHD6UY@OY1Nt-_@gPJ(%*ZmOvyISlG76~hEny?L%#Wkb z%AnVQ@cuPIE#Zgx~xy=B?5CHwZt*4>*o?|B$@){p7Y{9jokE`(K>MOF>6 zOe(xipO=T%Mi1FqgHFel$>~|sGc$ZZPxbk1xh5Vp%Qo)!jvc%Dx*Ko2jt1VlS6tY$ zY15t&xo~OpCr$Xa%rE)89F{NQyyT%~54J~MCL(b#TXmO&^>`Qv_=mrhNiSv6St*@e zUP5Pus|w1T2ZSHJX%6v^*fEhW&f6Thdh`BSXurrjM{OxXilOXy`QgM*eNnboY` zH(OegnQ}k2mMZrHGr166X%u^3Mm&e_%!nNF8=Nl_Anb@~^2-D&n^>lWLvs*-H5_22 zM8h#gP$5VNQsZrcm&U_2p`A?&ninr!wyJf(p6-^*!AZo>Bm;S-O!>PF$}eTg8#xLK<6%$%7|<=% z5*V;2=in#DS`4`Zd&kf%-J)Eh7Yn3Z$o5VA7^kTRM}A3R+-i+6*EYtNoRR-8DO;)# zm4-xNH7m+;E=@SrsmWuZ7SY~PI9ih5q$u&~6loRB-4Cvj@Wx z1YcYN58z7KriHY-d!EdJ3FZ$7-5m;MX27jVPl88Fmn!M4-UPpJ;TN#ns9B*cknbMB zbB16hN>bBf(rmy55+Jx-HTG~nzM+f{frWwyALSXcHDCk?sixJ--vLnH8-+;oXJ>h3 z!Rq~6mN#UVH&x=oM{%+Lp7QGcfx{0TZP^#zgakmxs?GkyDx}yFB}%X-mxRf zu?n+wK>s9KBFF1~!-x{RVMHVtgE^TnC@NDC$7L??49$T1fP|31pflhCN7&)!>lLa; z@)}f+C(Ir#$>9P=*ji%ejUEy0u)!f005|r32s7|eY+S{}K?A!Gz@tE@pHo60R$Qrq zdjEC%;f|$C+7I1&Fy+>3MQ8Ne-Ti$%Vp;V0>yBX+#9KqW{?GCHUq|fUdCKB3&U`4w z=?}#?^`RISObm-^Y92&aHPaIbFd8M%i80t_Kgv55zk-uyOG_dv4Dysz-{%uz{EPgJ zg%L&l@nkyvi%Ch1zETJbaFn8`BY$gT&@X`ovHG-HkcWqPJ0u;=FHzrWC5ii{7RHLK zzP%o`vZ-5;y$TxGTAXECOx429J8zj(i`z5Og^I54n;1^YvzMYU&Lzgs$>!yG!Ak*$ zLX%YDr$dt{o0rc^zTyL|E>e><9UjLF!{dNDjlDO=FJn|o3d9ApKrkm%ZpNd$9I%0J zL8UnCc%V=xR@E(sx;s|3C|{$zxwU=q&a3%|!Ge5#@cR6cc}0G5FtW+NnD&v~u`_3# zH&l4hYQP=u&}wL}<7j5=127c*?R6E3Tgh)w6se;=K#^+vbWlX;R#1e@#sfGR@oytQ zj&dv;f2y|;U@!|rKk2&tfeT~rAN%@q6o$mY)`>5pA7s|_XVFiBw-M}dP4jI83h$ve z)gk)SpZ(6Un~&Z4o$+IL9k>-f1_GSNqgSH$t@t41ht6NGV=uQHb1bn6c13u*6NOp{yo7J)Hz^ ziTzE4=Z@cd&wu^$?%Qs=^H=}<^2^8z%ps2v5wVd zAhAFZ{8D`Am^PwbY`yV~TfXpxBQL!0qBtD=tC$Y$qk3UFeczDVE1h(jgmDTlZa64u zU=W>DA16!ic|R43-TF z<6L44j-)7zvrY``V;M#%#QdgsF@Y+}j3Tr6kbLaL1X&nO79G*=ij&djw{IU1M|Z4> zj)7OXZ{CAfj6LXgQg{-^X_**)>U5tkGYJm@(08iwv=13g^q^FRaUm&7eEGmq%BC;9 zcExR7OO`B`?TfBk6MgB9JH-4o*DZ=ZzOJ*oyK^1MF&drM{wrhcH}l$KQR#S$Gk9~D z_%9yg2v&wZ;3L!$2FtOV6IX=8TEUkF%u(59zL`fi`;J9l)aaA@uEH1ztIdrSp&~qP zHVtTzup-=Ofr{|B7Ihyo232e+s?i(QiD(kTIF%6NMUK=fs?`t%QB7YwMWlWzs+oN| zskS*m-&Irh&3r(Sdgp8!^zRxnR=7lvBn|kR(H&(3vMD zV-V-C=SQQGjRnq0z{e-emZpR=`X)bCWSpVRmh7eyA|J z!!|#%7gWo4%$9L$M@6`S@$M8DWKpO-==ER!HW+x_>8)`K^1yJh6~1HbL* z`58D9DvF_K_9ci%^JN7 zS4>e62D=J*WP10{pp%<(A^2u?umq3T20VCO!MI7;(9~?!di$-2Og)~b;}7@3(3Az` zhug;Qtg9>u&A(=K%dWCe*HGKCsyUB-<+84x#vQ@BStTQVRqa0C!m^tFYJcYDaAl~l zWNSyLydanOnCHst{vTuA@%~9X#u@ox7^f3pF+L`HMvc)f&lrq4`nP$=G-NOyIp( zGoRd|Dsc-wx%sjbG-#&p(V?PM&cdlp!>O&t9q}4O%skDwo9LlyB#5l*I}m1a<1YCq z!c6#QD{d=tWoKCQmhn+84J3K<5n?yILG|Oqj&!#9cDXFgpclz&3&J08z{_rChw^8s z(-zEK+~At>uy0!3os*yJjqNDObw%s5PFiDeb&z0GeVm26Gw_9}@;JxuOHFY@Zgsn; z5(bfZ2rzsL6?*}}g^!Qt(X%I|VK*KmAS=81A^AkfO#Smc);ni_>FIKJ$YdE)8p z)r~c43cJe2dY+EH6Hd0NW z`$e^_<1GdtQAsbt!6odXr)#K>@nz6U4D`MPz3j<~0x?D}o|^D?{`IeiZ#!6jX;E22 zpZKput>vTtCWiOikd?75K;uz1lxkcHwH=XkdhgkX@d{xoyYTKaeaAf;0n#E8<@^!^ znv9UMhnvs%(!2UkdV{OLjzN(~Mv(L^&#=U+*2$;@4&Y`bB)>p0T_bUd@f3g(`@|Cz zqi;qr@VeHGYwuWTD+Zpswz+UYwg^UlADGj73o5z$s2q5(xp_@ZMmp^{uY#(5U0_t$ zIUi6DY+!sqJ+Oh1s2=zqsvcNja6K?QVv=aWtVu8`gN;5upfcFNNL(5GD0W1xg(`#J zO;{P+h?P=BV5(LY3E{JJc)bVJ!R*~|EVzX0x2*duc)dX2HT053B7aGi$lV_O`u6Rj zTl^+^d~{S?xt%KE%s!>-|MB)6fN@mkx^reEtt3mb+N!tR)oRtN)!VAe>XOxqEm^W< z$+lc@#g;A04NS+BPyz(UK&YmKB*e+3B!pB*AcT8!a|uaIxFm#xga8Q|z3)F~X011yOYT<(OUc<>X(R3r#rft$2cH72q2CVO%tt3;MepR8EWr zv`X8te_W&mXq7hJBG(qcj^*>(#w8SIIZ2`*c`4OcYWZSE1{;2pVB=a9S03 z&sIC2^e|~Vv?mK(pXA=NXEpCxV0$O;SzuB)AYwYe^x%Jm0Z~#g9r9g62!}g#0*<-h z+)zeDa-dBu7Y?)oaG)(2Wg9lC_AQ$+3wY3;WiuRJ;^@QxqC6JCT+jSj#mT4BEslIT zF%G<6c^v0HPU?C(8YUfBj2q8Il4B7qyF2UgG5tUIvP!u@T z(g%pbTX9Iqfy5=tXAoFL@&mb6QVxM^O2?v9O&u!BFQ`0xSwYRAgVEi&m*vKel*lzZ zx5BM+u%fiwuAXIshv<)7Qe-l>CnnLp!QRWqZFaNJ3Zmv#ram8egj2FcN6jso4nhx* zN2G_lJ~~NDMheOYq+uqccp`HSq$rUu8#IoWf+QM8`WdHEkVaJ8dUx;P%96_FL;Fj1 z$u);}s1LE$s`{pC^=Y}Jq=rTaa2?@$Vx>I+7Q15co-Atd-qIGZhtq7#Zs>#C!%uS9 z6Mcj4r0eMWw@aS{ckc8g&N7~){f2)iU5}PV?0%6Xw~fc^V{H$Dbj1Y@2) zq?7jX#C)JbWITkKynFzl)*u-SAxofIBg6*cD6#);?m5)kl(PG_+jg^iQhd}T_6whs zb+xsGAM_s0Za5`mdG&o$v%J13EU%&k=Vhn`SzfatX>%?^L=?||44nv#iub`Sui3Qv z^B)67ov$;hAfdlg@fPjT+5rTW}=ifd+eurBo+0VQiBEW}5|&p5L4@-x1iy>`H<#q#!A=N8M`Yn@vxZ?AQ3 zvAn%@K!GglCPuovy_Qy&x8RcMQGU7>&vAKs?Ep!tTHnjtYo8%|t=2+CjWieQ2Vco& z^mUTRUW*ov6?Ku{o$R%aJ{?aG*Me~i$aS>*yS!ZAm$uhFqtD3E_h;E_pW)m9*4OEY zOWSLm_iTB4?Eq|H`l>B&uN~mri`doW?X?4Buceje^8F?4wH&6S-aLVnMi7R7wO}I z-h%NKz=TcnXJyJ65+jw_i&rvAA}QRClm?Q>+?1n`oGB^TCQhe8&3X0tLhr7zdL7R3LE z7QfY7I3$v$`4agUhhouUUfBg*5~pVdu~Uo3L0QF?8wcSv(Ff%hTc!m+f1(9t8e66X zKNF$_FctebWs=KYD z-13{0rtom&DKmw~MMt88P;PZ^;869i$+pB`BaJl*V?BkjQdQO@ zdjhZylvD~EC1I3iwMkx5lGVqU5~wShG^L%RXb{G6cV|XM=c?Q_85wJGQ*-lDQu1=ztw3h+08%LyV&4m<&&NVJFyE%5Ojl}+lpmk%Ai{-R#!AHp}3lt9uF{_L#1;)wbbE8KG|H(Pz`(eld5@<&<6DL8EO_f!mS zl+Um2&TlhXv$L{tRG&>7e*&=O<0`|r^w>-8;mlLpK@UZ-my~Vagz7maxfEjL4Ev=_ ziRsQ0rlL8ODTe^P$YTb6Hc;M$zgnM24P=l|4IJN*ofA7PmKGC*qyzhyKS=>WP-`K1 zi)ECJ?o-ds$mg$D=bpfR_|0!t!uV<#CHP@Os8pa~MZv`(h)Y-_Pj^LIFs>~NrW8)_ z!VWT_V=v10DSQEfa`KQ}&J+OE203UeVf*HOzn{fa<|3aeQ^(9!Hmd%~eM+6X`DReU zZ=L(ExhMYft2XxQgEYJKnB6vvL6$Pz9N%fS^c}PHM~uS4_5F_P-gF(a_J>{02hSTx zBOHV(p->D!nTEMQ0^ESa=rj{A@+8L`j3^(7yu7q7-bks(c%DFoijpAk75@e0C_xta z#eIkOJ$}o7{`k~G2M+Il_|%Vnc?%M5{yYEO%39T5q6`N8o>Ona`=i0@_o5a@vQ%y_ ziG%4g7UwP*I6_Z^;SM)^kT^vq)gJeswK_aw!4FvDO~`~nnqLlg#0F?ljU4E5HR#h& zgh*OskOS&Eu57QprX)Fidw%OgQ`MQ}LwyvT@&=;+M8l2t9h7y^P`!`gXCG4@CUN~=gvctRkFL$ESepa%v73INIp zAiZ<|vy9HLefwwBEB4Fh)s^fobJgt6s=p4UuPFxsr8_y4_CbbSxK7Y3uKUX`;y$ng zV6O=6eSxhS>~vKP`m(za2iV{e9NP-UEK$8KJ3BScZenKijL`2oB5MfycXgogq> z@W^yhteFFS$U`N;mLoLfIY6;YvEQf9BHGwgCT4{MgiUY@Jg zSL_wM2USNo&PW6A9SgXUrDK}5N0NVn`v&rS#?%$mep8ePSdjcp^_9eJ6{~XMk|N8KR;d4d)yqG}RDRgl7_!l~B0%<5H?TWs<@g)Rj71(p5n1>P>hC&p?;326>7kC@RqX$d{9Z?0P`zTce z!UtG$D4fHvm!0XCL49_;b(UXz;r0)Tz6@>gv4iKK1XIIJ`Ph-sz7sbb>24cn zCpcoB)+77h{Aojrl|c~?Y&*YEN#nBscSeieAy5YiLJC_8I2Gr@*(Sv)EYOGvze?J^ zxkqQ%$dM`a|3X8H*EzDb_j$?%XHiy-|;*0OjpZr)QWv z1F4K4U+YwE;h1}Vvs)wjHM>Es2CNJyh4{?whtQzF zgC-bUa|sjTh4Od*zVB}|gWI+76CJ<~Jc!=Bfr7v#LWY;8A*kD+2ue z(3Ya~xTTr%htSgVXgLesBU?`1bV7Y~=J~9SyY9cAy}V=Ft^@M<_tcwfs}8Fl<7MDr zB*lz35?>1YjU!4AZ`9Z_@DC2=kjLo-`%(a!7NRU%om#GcrY0Zfrak z2rM7t1)c_}5%HLwD%XS(W`4qpU@8OOAC+HZE8VV_UzE>3%WEw#P&v}>0+zyX|5jkwD3US5!=NEp z;f+8gej*omC}Q4Sm?*4OloV-(MJhq)^BoQd`P^!bY+~eyz@;qqg)@VLXEyfTklE3^ ztAE;0{T|B?IMB1Jxg+z2KKaF=FOQFZd8nkYZOv5wc-N*iZG|P`j7h)6{^)s_95~*e z^xKq&X>^7Y56qEBLy1D1YA@}j!JGY%@9|2+>Ai|RWN8x|$wA+7GXdX?60%+gG3Eij z0=ORzCb$Wc6>YA@iEF0{-NDHMdj(~%r`ReSE*?OI&EkH!F!;##9-C>ct?C7_8T)j! zi#>4pzNgRDH72O<0~V)VGIO{Byn)e0lDGtEN^lP*2=WXb>l@(4qO9{Iqy)wpjF;de zK!YOfNsc!Bz&CG1~8@+9?VzQ)UvZ7+5v~;3E-=~(V`_x|m?B41* z**JG^+4lPS?PcPVW|@T#FshJb&yE0N91cr-962OOnq2J?fu{iwTpxbfb=mQg zo6@a*VKKS&t(EoNN8XVq)p_>V&dDuXJtqx$x%nmW>RSX%-=)S!@vdX<;CJ0RSN7+Ta^v z2nh*gq4~bd+2yEZHD zuW9>0-n^T=@YY*|19fiIOx!AR+ZmLY`3G0MWG7rmd1N2daN!C}<{$D);0^~G&jkY* zR(JtmkX8eQcRkR@Id?Sg{1 ziQ51K>0wYTE3Wz3iKxD6bB1qNP(qgR;UfU*Ikvr{dBs7GoFX*=@C>z*1>xDUb7j<@UnSH2Qr2k3|J6@yNP$O^U>5(XeRO1&^MF~NSx(`3rah*Bi&+u!O?*%7@8rEAT4HstDSNQ-R%ve=RxQ>F)*PyFu>}XtgB7 z5l2d}uHhRIZ_0H!W=g(A8YWiO(X_9+e!3;z91;|qT9-7qy1ssfy|3QDt|{Byw&rNP zVUt@*b9QrY>ObW3Q@^ME^9Ns)jj@^Cw$nHagGvR*@6q#{xhBBuwu4`vlD@>Rug7(8 zo@g)RyFrFn9<1Vetl|Y+4<_6cNMPx#xDZkt&JYzrFax*peM7nc?MG8!aOR2&nsi{e z{({|N?Jk^|DeO*s{M2g~zQAlpjtG%+b{0bCqv|bqH}DE7SkSw{0pZ=E;sTO27)VcH z!0-%Ep71dsKQ#kmy5!AbAN6A@-hBD&Okdy3ZMQjzx?vsoIig9scr#Hw(uDaD?D&vJ z17Tzc5nXaYDa8CY&hSJQq0a>gKIbx&V?Z6g;wH?ynDcDD+UTievslk`s^iK-9N z$Vp!UAsA3}kVDsi9FM=Ulr#Sx>JI-%qAEw<6CN>vzCN7aD^Nh>PT?zqNz53vC9vYLg1Ri7Z}oI zOVvF&U+w^#ed*C3;x-rRi^MXMm41LLs5T0h zAt8c^xGgS8J`YKfy(6c62eQ~!NRz<7Q&Vaz7br1`OpM|Wd=$sTth7;NU=~MlJ(Sbc z-~dW5Lghkawpzl!pxQa4b5~rb1s&kz9-pC7s4)n70%6M|XAq$%0R9keD0vW|j~=Nh z@7{OhNNI6*wVik=<{9pJeAY0t^Ua@@H+mmF;t>r|nsJ%&X}%he+E;?B6P&ZNi z!@CjYP8>7$0S+PKi_S6U1b|z%-Z0bMHrPHhGup@gT@%>V^WZ5zw(93DhOforVl8AJ z{DrjzI;R%_5eZTTX?~IT%FW>I1x8YCfL()}=-i}n(pxU5d}Ynw*JiV2*wRBSR85ob zkYq5$$mHD%SSPTz;R9)lgeQ0oxMQMWNc-RGY6sTnO;HJ-Ar^!C>NyC;34 zdPbx6M5ZQsuh?|gz{uHAb?s=CH~W!i#YiEmj4A3$PfqG6D5|@1?Qm0mu`xN(k~Vx@ zQ_sCyKFl60Egj6Jc}4-h(0t5pPx5(AvDb8rDg6%fm!)2=1LOL3u0ayiuTKWkMSC*8 zifaWTc)d)pf8e&E!zF($fGfFTq3VLBnFMnR6f%tGP#B6J)o6h@5A_k@Oo?g}K8oifp2!bsQ0E0EUUk8{WTA5rZF9 zuCHE@yp?>YsC(60K)EMp$$-LARVeJ$H<<~lAG|9KCzbRDM&coY;gSxmIci5^#TAeM zjXxRzy5TFYA4a2OBsG@Clm+m7L%9TbPRgvqNB18X?k9CtYj+o&Mc8h>YCU+_%g8kCX5Q8>%J2Uj!UK+?^pc@*$ZAx2Lc4u3~c#WrO zGgNFWmS5~TGd1<)UL4feu;RW9eu(GpS+%yjeC;Zl1s^SG8r+`6=xMeu@!5(qO4r31 z^;Sywb#ANT?FEPGEl=S&VZ&;|>U`cz?p*t!$9{nGK_++MMS1Z|?*F;nKD(~%hP3p= z-Q`W)9cwBdQy*Y|`3Adw^P1AJ;$-W_xP&4Q^qzm)-17s>Y!sXE8h8%fY7~P#p&5(o zG&AfspRu^kWh$B(w*b&e{EWB%T(TDWb$xz(K_&wZ<9#{HW@yj#RD30`*T#XB#&w}z zr*Y5l>oKTRvT&WoEv|dJTqo<8xNg+0XJY=xc>jU|duyJe-~wgho`o$~HVhPMtD;=T zTa#ANBD9LMI!YqGlU6N{b19KhlYKQRn7Whq2CxKqQOoW)t57#FlHj~i0@`y(^7Oo3fNIrK5j1IrN`L>sDIeYfjS8jnf3(Fs1$uL2@K7e;+LD#v3TaKaY zgjWfJcZrPX5G7f}i6UObo#J8_M0aSV$&mvnhm6LlKqz{oCIf*?QhH5o`<3l=e>?cwn0YLb&`E!7p#r&A&4@A5H#=%vV%kpC+>G4$aB)X6UE#M>#V3KkK zyx5F->jG^2l(S;h&^Nrm*)c!{dAY=4UCeIWwgO!MSOe_eN?eb{^%c-XAnwHvr=2?> zz%a*w*u%ixUmRkUFYG^*sS!V(3(ha3j|eiE6eV`w+^_dF&CPtQu3(c-Xx=U)QLz^Y z9=-9(KjCd25^U0dKj9}2PYdi1;Svmqa_Iz8MQ8Lz)fMI8cm6obvS(Pf961L~5scr8 zlrsN)<*@t#IKC*!BEjNkF^7i*_<5j&0q+v;f?<=pSTU&?i6F^L2GIdxkB9;w!z^&7 z8(CyMjBd2AwgBaD-`Q=KPu;ln$aeCxUu1qI&2w+;>6 zI_#aByJFp~L&LLv>@B~e!*3lK9-dvPLY>4oZ6?~Zd~Fqh!eyGLUR#AclQfN>$?zMl z40Nahp==|{b}^mW#pLmH`2IV~>9PzJHTr=i24|J9!{7PdM_})B@SW^x;GF4n!1Kw& z1MYurZq`PmDkW5*2MTJYvPiD34&m!cMhFf>o}m#k&>;Ogd4+W+gkrd(PrP5e#T*+QfwT`!u0FnGgk9?DBZL^B2~a+P zGgz*x&(Ez8Fna24K6veHUrXoM>>{_HzR^3bMNX+rL+dt-v8(1t(%|dL_d%?qzx++C zBLmz>@(;0JM#*N6$ANQ0u?zwokUmFv78;VhF35t+)D)ZL3?LSp02}u46^%y++S&(S zV{00(9FSjJef5}n8M}=`#`qL~<(hiJRvq~Giu^oq70<6520j4>0B~`TC@~%=8#vJg zLnm|7D6l$D;S;$s!We|7e1n`U=I}8CZb!b1KwWtTUyU5u>z*5rWDn-e+d2V9jxtWI#9onwmc4+(dL-Kcr&Ww+r84{m!PaPXsf7DM6KYeT^ z`~AwJBUsU{`M+{{sjVn@VwtQAGAXpU4+3JxbRPtb?OL>=2p-d;-AQ-`+%2rAfjjbk zu(#^&8?L`~X7gBT-`dqF{fYe@>_XAD=Do*{A7T}C)qv0KTTjM!@%x5Jn zRYH)gc);qSaLcdr6$7{YQbQ9A>k=YbJ!r=@w%W@8qr8(jK4qCUgnzi>UxH?j2im2D zhe19jMv`KZW0K;{7*P~)XF&G;vhdU6#HTL; zBzU&Wf8YjRX-HhL(swn_7TA6ui+VboD#>Kb*1?g5Ys)myu|bWdASEkl;1`-=kxbkX z#$z2p5m6igK<34rF4NNfdHW<-3N^x{YK%3;M22JV+!s0^h#Y6!pgvnr-Dx&citGIf8b$2|jf#<<=KYB4)LvZocDYVmnYeD$u5+x& zH86h@<5sM^pVayN3hAz7Fy*v=p`bZGh0OTBw10|Y|3Vk9N<2RP3c6HU%cK6h}w9Wf&M^}eSe&$>j3bh4n` z>W9;E$ktz|ome%m`77mXF@8TVvrD2xu!^4&P>uYM~^}C{2C68rH00h=^2>dEPQ{wwOID_~Or{oJVG#^+k zas9WB>u=I^%o%H^Y{d945g`Kq3TQ}ZKNdxZSh@EqWISl~xJwfEE0$aP5BAUA^w_<} zX9o`s96f&Txtm|d4}%i#4g9F8`bWGsZ2lwmsT?CEl6^21T37h7xFudPGQ`FWV;Z`) ze9p)a9#+q3xPg5)zj9YY*`CaJ+xo2Xy8P@-Ycq1~1#NwC6Pv5Ilx8L~&+^o)#^mV8 zp^z|}Io8~XVmD^nV3xHi#a0?Xt3{`0605a1Cd7R4n2^qCX4^Tf{>Nn~%W)4Io_iM+ z&+efe5q)8&+`*m#oA=5Ee5V#&#||Fl*s&8?4!$M7gOmF?V?x9k{ug6H;K}6_6XG|b zbTE{HS;ab(k=1Nt`B+39rb1Jads`~aNlE6)7B%pVDVmg+AWnr?CxWVrM1+`^MuZS7 zk*6{TA(lNdJw0~UiRWKF{rc;22!Li@{e!+{8?gpv_Ye-w@x{0Nf32`)r_Se%ryK+kf)^h@sU(KRJeNgjUQ2?;CQ zyyOt<@WYdn*R5GGp_F#D{zO}ipYheWNaP3BgQNkRFpR=E@&o=b3UD9Sy2>L@nuh6B3Aqf)-w05_KpF(V@a)7T5FEuxNeST(F$5fk6t95I5e(TIU-#0dN6H>c0Dzft#CaP&9-;e0;wCWm0$+dLM& z16t@ioiO%Kyhnj$uuKU7pCRHoP!T33+8E3;hR{-J^CG1yCx!7uhsdv(l=DktICNE^ z&=iK8y=~8JU;Z*a&d!}$H#)kGeL6CF{k7iDe8c4R5!fB*a5S08BZ_F`*1I~#Am zy=jf7`UqCs9e5>!k9-R5Zww-dB!}bs@{t#tc;tluS*{y(jl6I*R_Ds$)6JdZQ`05+ zwRYN%m#yp8KXfK1JLX-E(dLiC_lDrcIqm|e<5F=KM6)2z)31EjZZ&0EnxCG$Z~)+l ztpEZL@TiRQexZdGaTn&#j=O+6J^oY1KYefd<>?>OX!SlB_wxb{RGvbwW_PR*cC?=? z*z`8cg3kX6skZT)H|TsAE=p{h*iY=FQv?9effkj46?D1-C#!`c;t0&Zc;teo_k4Z& z4+jru69m=ooLA)>yicp1r0YZ|E`zWx^@?#palNE^5*Mk#KiO=+cA-L9V>5=b7q{-) z`j6@BB8mzMckW~x2RnO*q00z)jH!RiOixQ@?5kiPan2-EGbOybd~}9c=shUR6)(R; zbcS$v()@?PwE1n>x8*N)vB)bT^EOXSvGJibJ;OLvkEtJKrguL@d?RN3M?PbU9)@3} zuA|sMCJJ*SLcBeswQzT(7i;OULyRb0>9Yc>goqR`*O^;ktw`YNb(;ORx9r{e!SqQM zIz2sy6_}iKUV(FS@Am6!fU^QzuiTE2nBBt&2Hca7^$E*D^i+8W*R^O6Qra$#1~GrG zXplv%J~J9bxQ=n0YRn1Y$`SCvO2y=!O`oW9)6-0uzBV*>Rrao3thKYbWAMTSIplla z``(91@fPdNga@tjpRi9jUM%9#q6zaK%d6yAw$eRQu9ZWc)#E@yG~eey)RvC}?-V5= zV_rCTr!eqNuzPhx(xW-T@M`1y)MEK(8EZV z3(dPHvMEUT4o!xqCuT;$NTkIPR-#BLf*)e!Eh8s&%3bBKI&jx&%_SEy6?^CM>B`cY zw&{Zhr{8)jcA!9x+Otdj2{YH$t!Ys|kb7%ZudbOfSvYLXf1-3?he$HLQ+MoyR@OBl zgdCCeh>%3C%_B>Im3*rfHw2Ax3JIacF5x4=J(qREf))racq54F|qYFg1hJw52tw6i9)HnFFws=KFBj;g_~PS@sdr~u#fGAx;D zT~c#))4)Je(;&{64T}+qGe*)QEJN^87aq#wsq7Rp;$RK9ks{cS;=>SyjGb}BjOZaF zIk3MY&4Wb_-G0s16NidQXLs)2ef$Wa{x5y$iQqM*gJTl|{a*z{d;scB5Mh;0*!|2* z_JZ#0j9mKV z$^o;Qe24tSuFAq!UMZ^R+CH$x{r;w=``kJQ*_ylWCVWb=?gZge_X)x!fLlo(mrd}+ z8`SEtk~(H3jQ@xzi?sXje<5TRasx$+6D$RAP$9LvIDaw##t0a~!PH<#zYY~aki|ra zB&0kfaMJ@tsLBYtuWD6HsxRt9Lpzmn%*Q2m1 z^4up%p)_D+fOeH}LNsEhKre7aG>4ib;(EE;{<480+ydZ;6N#v*-Cka~za_;Q5gJzA z)K*$jFwJgI|H#Y*o9i2PRd`OgHQTFeqQPiRo~0e~n!iCgj&YgYp|J!t7?N+{I~4|v zE@=gl2;QSX*`h$%5-?nz83`;Y@>VR+H)8Rm5l-d+YBskfQVJx%mD$0kFPkjFNhJWq z0Q+=P&z_N%i|GWi^VjwGOm6Z@T~;UHSDuR5bk5%(pX9UQQmJ8xeSyygUX#ed6(V@G z#W5^!Xkdy5foVc%@M73m!_$3z(>L6({+{E{zkCzq`Za6p6|7zT!yEIG%4HGa zZlA__T`Ky8*lRvSr|1{$eekvuZ<-yM{vwOe^#|3>eM4{^38S1+8csJn%nt$u(-l#=G(lm97OfLpSq6E1Nt zR>Zv|n4p8ExEDRNg)W+)2Tp*Vk3w6-6Jf+Vat}w_qRzG@<1N))e|VcqJfah5Yffuoe0F{N~z<%F$ca)RvFt6kNV3ExTy4 zu6koZWl6}2)JzZcH)RFcg=Hn#K~X^sSM;@>Ovy>!QaUu1dRb-t){=saRSh%gvQIC2 zuA#hgV{G(fT}dtWIsto1S_d<`pYQ25=@Guy2H+mjKA7EO#a>I-@V!=`wSek+X>BPW zW(j^GO;lS79vAMQWTLjz_@TFF?|W#U@^9agBh_8(YJxDm7qdH_;xR6J)%Lna?8Mtc zW39GpF)r@FC0#TMnKS{wjBFzxg(pV+0j{rHCdLKQ*Pot$oOO;6$4i4f1RA$i^KLuWeu)~)jl zdRLrI&iTpg4Ulr8YB$P{1H*AS)St;bHqb*Nk9v%QdsKot6P8!83t?&}ft&-_=`DQrkW~9k;G{bQdj7Y;EnDX7xk)ZS}3B)LobTkWN<+_=^t# zLGe0+gA+NL*BCPtm~L<^9pHf57`iil(*i^`x@E~*Q*b8d9eb|uJR89i))IS zQ&Nj3YwQInnL)7;VNq2RMK#kM=jw`!>S?cou#PkjvpdQMV6V3^;6bt864~Ko_IIwQ z6E*_Ux(aIDD+~J83BScYz(hDjwS;3Ium~U;#F0az<%ntlMCi=-Fy7;cYJn{YQ7w!7 zlO1YcgWR>gy`SlEtR}2?~h7gX_A#@9#edLF3o2az*cd zbdBjJ=~0Z~qR}{H*x(C=_bx&zv;N_YNOu5r>2Gk}Dg>b`LgoL$|rBqMDG$)T=Y`>qc(A zW<%_&+U%4py!SI>aGYo98iT|4*+~hnWYH`gig?;s7hSyCiSr|@!ZAXvEuQjW|v2MqHxBSKCZ(o&D@ScE3uVk=#Wo^j~^s6>@ByxL%pRisO%WCL7}PzG++ZmLn--2 zXmn^)M7V#5KMKC%F#08Uxi}06UJCvKL@4xKy!}{X|BPXvG3w@61qpao~i8?@*X*CFIXF4 zYr)#oI$ftV;5Hca<9r=3u3djuT-Pig)IaAx&>jw+M3cask)Hs!_9JSrKSo@ghgOA(-S2{0pSP5>oGk-=!hQxJ&Xx~WKu{E4=^(;tky;`7_gU;BzQU=Jx#J#AlKpG<)8vNHVP>+KpzpxzHurbHGGpzg?0m%ethZ%EMkhCBrI!1l1YAm$HEYmj zj*gD&gzeu3XHnuTVB^L5#7I?kJN#ee5WtZhyG!|P!Bvnbg#FTj!5{@;<;Y0^n}$zH z(;N>75~1CsF4O@hU=jNu7p&{Gl!sU%lj3bIEQF6jR^|Wf-XJJA`-Wy+F6(Lf2~I{L z)FT9fJ`@O%2WV?i$-;{v5GA%H!WZa_Z_MKbX1Z^kvuGNK}>WQm=-(>L5F& z9$?2g|EqEtMayZk)Ul4-h;%Co)&P)m$(%N>ddU#7q}q%q&9Qmk)F-2(q?YW=D~469 zYfVSb0FdLUE>v&IVQOEhnUN4j_P8>5;Y5MMh?jQS!-xkA4+{-J2}Lhb8X;T(CIYHR zMGE;S?3D}#P?kwH*Rd?^8%({C_BgEM!hYJ8Hi5ze4pH$&Kx054PpJi~Fpmi`QzZw; zHC&?ga0CX47&H0WBx_k|WnS5#;zRq2j@R$4{wTWIUKKk~TRSjN`=fDdYi38pkou1N z#<~sF)9v^Bc4c=Zmo*IzHZ=_pJv;+g9K^ncXc?xZ6*#ZJY3_hiRHo%DE5?oGCVpEU z#x#<+))0>f9LBTE@Jt6Ta7av}JP03vbzN3)jgiR~8+bU{`JZ3t8WTV#TV8)1utuEr zl^BC&dxLa%94}O)>iG}le)%sLn@LI~KPc!KMQAV<9y&&izByJKF1Kd0In|tEi?`YI zDkHiVyCYx(fdN)xZQ)pkCFHhJ=!?l&)VI0mKyA(b#?`wk?c1u0^VEOtDXXr_$!Yv< zXMNSR9ffS?x{A87?5y>*tZMa!?6iJ+L070PKR>t7UZS>C6&DrnEv~@2*zM*z5e{Qmd&(5W^}PyGODTvD0ho}gZ}E*p5*B=L!zLx9SW`p+ zAX0H4JCc|MH>>f)%^uDL(LF4WT~XXtSyfuRDrG3vmbN8#;%G@nMMY^@ZtfO~Eo*NgChx#kZ*XI@Xr&i`>6^;~UWfjH^re<~*7WM~V4Qn9VleR~e+dd)=LwqMb z1>Yef_sU6}A6axAURvOf08x;jx%SnE^fa!yaM34&u9ems80extP)_>NX@{=#Z7e8P zlL~7_Ge+n^-Z-E&B32F}jAm%TFkE8g5P`>jc;AEjFC4kRu2y%^xyHO`oC7pZ(u8W? zIqbkDqJ39>%3*1qQx(KY%MoZFB%#6%*aRxC18qFATP^WMA)hH|TC{ArS~7R2dqmh# zt{gEP&{ICTdAhWquz^PN=lG=IktZI38)@p}e8q2+&*Dw`iubcG@s+Ke|5$lJ4u)rK z_tOAd%8exOc?fFjAQiXfcri>9Ad(YlkI--6c@ywBG(xzmC4D0y#4MRHQsVE3nPEVU zJjIBOe>#vo#rzU6a*~PNeH<3iA z1<4+@znE3+{EcoAG$5DA@!Khq;eq@dONM|G~4&gy9+Wp|PVhsO^)#p2YanA1(}zsQf2N z1@uxzSmE~xD}0K>xUNTbBs!bUUG4Gqg$#{O)^*TI3K?=W$HT%Nf(;6>git_$$Sb)_ zhDK7k1i*FI#ljBybby=K>n>|rv3h#CG3fM!u(0S#>(DBW4DWWB*t46H z1O{OrVF#9v6cv&Ir|T|}qTCh;JK#^h^POpShCO^!$BQtw(Mb+Nmsgh!6; z&+hH3uIYiN`we$A?5?oyth0|5CU<3K6>akOk0{DfkArHiSyNF#@f8&M7en&8=5tag zd`=`Y=;W}Vlb_NGwE*Y$P&>Je&L(8nLwqF!#`&H&v#ieJ?{0(h>fw32rn8?{HJv@# zn+K^s`7nRZg$|>Cx?jid->I!UeJ7fN?|9z@dA-whNVD4YH?`}ZizZKN}^eWA} zIvTGdEn7_gs?7(cD@v+br(Kj`0YJoG)u_BmQ2GVg%R{e@_-G9gh(jV~i5j=|T1Rwa$d5#?X6||xd?fw^O#fygyMs#J5Z9lQ6sIt5;r6QoRz;DL{Yk1Ze zHa0jqHCVPPyAZS@w@jxMcm98(6&YJ+x9>mr2uuE4v_j!@mGng-5_7BF+a2j#oFg%* zD2O`{)i_k|ps?h>D6ew^b|ex@QlQIiFl@vnQyVxwin_!iNi>g|3%ynOC%O@jcIO%IMGpHB0l4Bvtv3dhc291{wowIgJ4 zX_oJ0S}u)Pgk}rO%R;JeGB;>8De}N@5<-=d$>Y0s?fzhT`h)4){Yx|RXNn40YgbF} z`VFHg!o^cnGg1>wg*kaRE%S4zXRrk{Q;Tj3`oE1%bRDFVXO|Ox5+S;u;yCX;1P8C@ zo{Q)dyJQcjC}6X+OW*_}yB~b8`v%&f(%kHV*y!}!QeYuL)d&lLs&Ooo@1RnHT&vBm zLqj{uucv}LdxlfF+Z^qjs2n7xP>#hCV8y6|6~hP)6Lv$YpB@nw;Io3)PX`XhDZ~l0 z@vsGfnWZMqi$#Y-5hs>_KshIr3>JddQRk91wkMYgsk42sUQD+(9;j!x1$7qp6jfTL zYWlj=pZT^H=(dZB{q1e(nPehWEBc#QQC11zUNJh-C_hfK#_UGy4tMYr;ySe#*QqMnGC1GkUF|x_2Y=!k?yqR$`3YY|e_S8I z`B?%@OSN&7`#?KOMCfopLa`H}uCcDJ(8N{R0CzZ;ErF)LY(KX1z%=x7&pl^s&kHXt zD^4!=FE3?-eVzTI8%AF1%FXQ>3<_62$VpDjhzPNzW)bw0SJDTFQB@$E#@kJBE#h*k z%n);jTU{W26p<%O%@p+K8=7J=A<2tLkw2L8V#PD+N9?-qA<4@V4AU1;Yr7FSYLO68 zV?w|p|*gK1b+|Th?M+AJ}0F6;=)n_kTZ8ZF`B#{ z$t_&}(B$Mp>x))BqTbosS-!2VZhKj0t9s{D#%#;j7khiZIMyf zF!)ljbs>pT9twx-DG%B&DzP z!y2##uG2pTHKF9*Me1~3=-FLrMnWU1LV-nbRC?kC)}Trk%(+Sa(Utr5W$nv~8(8Tx z6daPVCQpuIPpZx0x6wZ-Fgm~K2++H<#YFeO~y%C zi?RI|MJY=#g5Z;?AJ86BMK;9X5C9N(*7Jiea=5Ri1k}}>1pupITga>^)S!0DpS^~)wTJhTZRh9>`xG^F|1!SM*n&3qnH=8MYP1LA+GbhgxgK+tQA_geeId;;hi0<@bGSYtIibA~Uv? zGS&Ifiog$qIBg_pQ{3GSfz2jhbdxsXaPpBu-2 zm5utYQoniO@`HEZeRn^5L2bVV4q23A?e9=*Q$9RU4?Pne3ZraM3FbIF9uaR% z@C0;-loQ~=bTHS9Th6Fh2p&^q)w}Aizq|X6jd|-VnXB42?2H{Qu{AZ>%UheP*}2^H z_UiG1rykgIe@|%0dh@~EEZ(XeyTr-x6`ZpqsL zF`_(_ekdaC;aFwdk`67oCsf~_k|(y6pd2atEYR&(a#3mY&sQ;n`X0(n^vvBMx9q(D zI*^Ec9MjeyjlVMnxs&Bxa|l(!!;rTE&t%sTCGd{gE!r zkf3GwBL%#(+$JX#*Ucikb!|~za$3cn=9WE`=_&8l)s>djuP&|c?5wZv=%{BsU4{1H zoSb2MVOMx)V^(o*W@c}3RzujIS7oH-=B8z=n)|dQcU4Krs@xLbv@p!6ZUGih)74#v zP=)f>a|osCP$E-mz4MWDg#~N8>%?>~A1CFB^JLfqi=d!}!^UdBK`G!te$f>Q1Z1cW z6C4mc5FAteu32at2p=bdgT^&@iSj}#0vn^=_F`-d2L!iEU}GkqY;Hc;-OWE6hlU{j z4mEnWUen)yO{@6aJ~1>jLB9lz0w4DRAERPAP%$pasJJ4LHW!})8-w?A!p6OG53oNF zHYO&*g3*T&N8pT&(F@EP;|^Rb`U;c62p7X`lW?)s6&G``F~}BFb}*(}D$BOyk0hPy zZ`@IqTXpN!t&RU>&5gFEHu^|EzR;oOuyQekoU$B3Mz`kqJAsjVfstX~*D$i;4ravN z&HX6uvtvNa;7q!>8ieXoxk)WLT82vel4!Yj0WA|&z7bft7g!dYk3MY>LoH9|0(M?B zZ|tiBG4pgg+Cg?EN1uh5S1(1(;5QuAmE2#%OMvUJ79|*=r!?q->!Jlh+m1%FfD&N5 zE&>*c{Z&|Vq&>!g@Rn`hg7pAT%VE7<4eMc4I@XijU*dc}A|8M-)wy!wWXy5s`80o4(eFAv>zJql6;eGoK(=S07Vg}?+P*X3-W{(HK=WK{p)sgdo0{1xS?FsonJA`Ozxl_%1 z(;I8H(Tc*d@^Yj`XdS%b`cJfDo$t|=5knV5r?T^wXwNBv)C+iUDb|~f#mD^ zT6UM`)IBSB%t~`+F7cRI1EmN6r0RK;&t`)2TJYBi2UbJM%w@5fqZpTl(MZY!N{i<% zOU@`wv)5X3HH`M@R{QMQ&g(MEdJi^qb+%PKsGec-PqAw^a}LwCv92&Hvp_JI7!NEL z*yYdWF!j`}mq2AF_a9X6V5_cC|KpWC`*jZUI4{NgeaAj_8Wo2$`z6q-dMpLHhF`vm}VmUdfUyjGr?_C_*9#P-85?Qr>>cV5{ zSb=!+OY)emi?)=<u+x9 z>1nw*kC~fJJZ5^X3y+x(XgIh44WGqh@_d&%km}H2F_FAMJf`!+F2-Y$ZiEXQzYuT$ zG$G)io8h=?QQnE6?c4%j?PAhY{p~gP7o)7dX#L;b=sA$~<@;<96jd{}nX7x4CBlO(!pd zrpe3mPGIT(cU-3ns@AzqplZU@Hv&`tuX3FiMb^u6ojR_T-G2vQ0`|jN9Ki_xzj2)l zc+iRK)bXI~{x(J>OZiy0gMivd*zfD?)vh?ip|e;JSQjzv|I27({b!*O@X=xOH?vz< zCHUq~m+;Na^LMg6tQhy^#69qs3q19mY=%FlF1Z(iK9BR~=9kD?OojS{AS(lsvrtMSGFc+wF?URK(Wf4nnCR}tZ+byNI{g}U zjgDS++34u5#`@~&y1MG>dcb%y0DTX;`(MVWC_2AK{l(PA=j!U}SU{cn0Qy3x3ijtd z{DuD}u zSpvgiLPF9kw(9)2g2XX8u_0K&XgpX zy!DZmh^FMs?DULPV{fq4Q}0(~#h1iKhExTG#6(8M6m6<2*n!c&tqO2=HzauY*({de zowTZq@qCFwp{h&nmfRqC<&)i#-P+LmyB9{EnQ3bn92_iSUY|BMqjw|bdKA5fQI#Sd zV^6xh<)n7U9DzT=Bvdtzw{o9$5x?g$PuPqt(4!t*-=8-^lT6CYUS&TJ&Vs)0o%!jZ z!luZO%0SF9D(c<3LF{QP#&8-t9tvv?qA5`^gQ0SU91PDh>^U?$&;*e(P-J+f#2%cR z(c_vdVUz;}aZT~@u0CfRo;B4ej94K~zD2CCf4E_Ia%PLEJTxvbv#K?yA}KUIJt-+C zGo8tGg{4hfM#lI1`BVq5E)5QQF+L{7nh+fcl^B!a@NpU|<|(x}vGlxf*6H$Egm+`%}sP8|86@ zgEbb$$-|mg!qu0@WHK5}siqX0)fi`tO-iy5v#0GBWfyfE`HQMZ*)5xTd&aHi!jaat z^@aClWF{tOW+rFm<)Pq7ZpJe;1=ZCB=A4z$#j7eRR~1EH6&)5H8yglLt^UFs6=ktR zMVYa`k=WnsT=o~?^?I<2^S)xC++|AWtWSW)tzB$?HD*=#5@D}h_SfpVx7FD0jGV0W z#Pp0LcAxX!(q6wrdrNyvcGxf$!fugY5IPqYEp#p{nshGM{bm-;_CS{LA{!?0jC66t zA?h!7%VU~&??7~H%n8$>uNnCToF-UHTrnMi3U+-2Yr&(2tvoT{0-~dSKR=?wOD}@y zFxTUl4X^TWDNM(wISQMKNVTmjAUbE!o*YI<$qw26Qix9WSq9T#*)=8{9 z`?_Q0jTkFcSJZ1&%Tzs&jBT_7qq@xpVj@Cvc+x8~-wbC|MXrZ1syJ&FFNLb)@I|-^ zV~oWpP7`#Hc54ZA#9;=fxuo0Xf*Ujxz%`86QejbvqgazL9XSB2&N|=vEbJhk*Rg{$ z%#z+rj7rf~4tFCl=Ii*Fp*M3KGk?|&cz;iW_c{&U>vSC>s{_2hEp&{G-^HHjcf)XZ zhCd4(=V2Lf zdS1Uz{eQglc|?(m{^7u^-G?Xd!t;*%^!|^QdEQNb-f`dcdHp`P2krS4F8%BG;~e*W zm)^&*^+#o~>){avC9%K!~gilE}NWCUR`};rmDKUyrz2QNKFm8 zo__;e_>JH+P)6Gxj0@6HiV=Vp53VQy3LFmHv9-*sKE0haj46+P+Chy<} zG4@DYU{Vha6vYLAm&l)kIBR-1&p~EAESobjEb-~-@h_w&#Al>i6VgRbUtvLP_FwDi zKzVs;s@bX`A?)D!2`?YK^;#ch!cP5MB~g(YZNSbenR?@MEoSQ z9~5xP3yYw656zl1Ae^7aecup1e4&%D2%~DwUFlwaIqiud;pvvU)2;p%%Qd%o*&?jz z;_dRkp=UFHs|BB*&>DKAv%li6EEQvPs0NBvUCA{s;%#(@pi<^>RZU8ho15E8H$Q8D zKN*lw+0^1Jm{i^rKDshJ-C|BlGovOz>icP^IhtxRrSaZ3qW37Q;!2{;cngB#a15{| zZkSjjDQH(B8ztWtckD|bO-$I>a}WcP^C&vCp!0^C!bat&G*et^YMd!;u7SOT-r+CB zE8kJhv(@%m|CJsHDg>NDBH6G4`Q<7bq53fxJcqb86fXlMy$s3IW#;@S_H-w)v5C)kZULLLZZ z?gJ0vXW$9#&lB7$gu?)KVTBZ~g{aZKHgN_*2TA8O?aj=vSTZurhKzV?db%|}1G9C5 zzq+XNX(hYi3U9dPz?B0|{#aDFtBJTb7_Y$)@WMV#ZYc8^VTA)jc)ZQSJ1hm^=dLDI zQk_!3o6COwS5`*6rMeL2)s!m+w;zv8h)u8_j!sMC8_Z(rlH)RBl2AC9!fS~2{|!r|mA2iPou3xUnt zf2{3DEK82GWLd05Ns)2sF$r1CALh~em01*=qCdn zGMuu|IVjlTH2|3BS+Eo747;53B=q8P&gXvvtac~IY5{gXdc{$6yG!)PDOKurAT*^x zU^59O7x<20gX13e7^}9EYLiJ_G&Yz)CDtq+eB48-&VrW=`6^Yodx6N-i9aAz&> z`@8HZY`~>(Cms%T+L_%N?qt3?^2B=9N`D2<^&@CkY~BsieTcLWOG8IVhW6#KwKs)6>1Z)6=!7K;UH3TFjss zGcZUcf&)Qm2w@t)LTg6dI*I@eqGcxv;B-|h7y%R*ghfS2o@MR(J9oY>zdbe=$F)mX zA8DTVUM+e@ngLO>if^Nk4S4s#*ga@JxF*4IS;z%ix^<99q|qYJ?|^_EJO1?inEdOp zPkU(>5D(94@D^W$wK%vayg&mH2Tz5S?|TaQtH8c;qL7~>oM0`d%gc-RmKGM4?j8U0 zl~?|yf6IlVM=xwa&mrj9zzckYB;@5^k&GW-k+qVu5}}+V*mAUN zZ>2>=rF)C?LiPY+U*@~S3Ni1iuqX9kr8uT-5_^I>m>=DNL!--`3YN|~ zp^f(NX!3TwlPoo`PuP#aD|TYM3O--qZ;iqA_xN?9J&H#cUB`T=eG;y_6UE>T%?-Hh zLZJc!2#SNiJ%w75uibIgRXf;<=l>6L?*SN9vHg$Vxpzx?@0)D4B-tdJ-U$iW^hz3p zgq8q-5D2{^(h&raE+U8^h$1Kisq!p{qA2p7g>FG<&#uoW_*B^af6l$T$r3^F`}@D| z@3(L=ckj-fJ9B2{%sFSyIdc@tE90ot5b(Eh~Esg#aJmo7rZOyG1Yt)T}>uO001tYiCbjKIjyE#ru7&_oLZCwweDH_xp+W z`_X;W1^Kymkl&3<+3zN@-<=cmj$%#|JynHS8b&=YLJQNa5Cky9?wZ6uq4)Ao=&^E?~5I(27sv5HS?R6g?Hmt%d(A z<*XBP*4;HH%4EqrT&bwc+eR*xVGw^o8J)j?B1=+C7G~CMQcPT@6q9H##W?(4iYZv` z*X$M>8y04a(Ze!!-ABd{b#$~E@uX2Y#>hu}KDY;W(S`^(6~&hXF{B5%DaVsqt5cA1 z_`M*rJ0?aShVqN?9zH)NBqTaIBqZk6%LtQCq zn0S8}-KSB6{2sXf$1~5NW9H3inKi40sdw$#MNg~ov_gFP9%dfeVx4&?V&1%QC}S7O zh=tsEl3N3u*h@5toe~Y6vzKW4kpK}Fr&E%27z?Hxc!fm6J_KF^z(c?b6sN;5L_4Br zdtHPY5z&%RlPIeQ3=Bk=#&DR5DjWigonbueZ1%g#G_M;CYIR0Z-{ks;`>UE~#2R(l z$wAiMzLg&0uk#DmrshT`ROH2W(*{PU?0Y{Oa+j;v`(fmJuYqbGQCZ2Qz$(&oh%!<& z2a(k#swwX0g}LZMaf}Jjm4gG;C=2n2XBuW5mivrG*4&tqs6f%3zg{X0kArNVO^8FUYM(D;I)RuE+hc z;{CB5v@#O3lJbuh?~m@FmGPjJ`M5tuyg#OcRz`wWW`TmC=Oto^-$g1J2cNJo9>cB+ zL2M5qg6QC8tPW)dBLYcW^U&(X&lKrlJm_IQN`tqDL=dSo(%7&BQV-x4Fe-|t{R+2Z`LEQCH~J)XS>eG1A>>#9!?>x#1V>tpp^I_=o| z9U_8sai}k_3z?88jh##wC(490-IA4(Oqlf@@`ivbOTnrlCmmMD`Y6eKSQuTAA3~(J zK4ja3jT3bP}|@*samNP&^AmZFt; zU`(oU-mt$P&m73xg%DYad{|WngR_THfCDZoJcB%aWZ;6sNOZpacx^vFY|3>WP^-=F z9W$$E?ZDN&daWK<+jCY-@BBgL??(3NGje=cbxL>n*zwMTH#9bG80@&~#w0jtV`Wg9UV*R2_5mMc}Jsjjba{-4SZ4lV$3xoV<8NGY8BBYbQ*)w5- zf`{eTSlzqwTU3L>Ot1GyN$D{uGb1fWIbo7h*`(s)Nu^GcCn|E%GBRDwhg#~~Se|?D z9_TR})^zaJO`v_`;6Q)aUB|{mh3mATYF8%*(sANcSdsTwK>Iy%NI%1YJTOrzpFkf3 z@q~yb)sxm<3bZC!+S9u4N8#2)JPHy1-Vk{N)Y}^~n+G}*9I8pryDu?qX$JTxD!*Px}9T z;n4CCQPCsITMDYH@|(+BVvNJehvZjpHkKJ<%8bUc7+ipAae9oPT8wb1uW+(WLVQFx z>Fiux93AM~V~lXV%m+#(8t3?L9p|D}%`?=~TO8-&Ade6?m;9x(SP zg3CxjtPH+8U(v)i+oRXNF^i6VF(&X_jq9^5dRSRk<}2Fb4!p(6AV%cRVAja+y!0+Y1f}dh>)hoi54^Hp3KKaw@+YlpqKz zcO3VQ$;pd3AdU=kqUfJ7eF_saUwogq%UQu!(8(q$Ra|V0Q5CIu!C@_q+9UVMGMtt-&-iENo$6aq+EVQ58u^6;aaP?X*Y0sd46zEB_|! zkE=`-svus5Q+Ij9UxQB%!U2kAb&hoW4s#}Xor23iIa7kB;ru5s@HDCMH3IV_eVk_e@sQMgynte9~tgDVHjh> zCio72q`uGcgkBY6tEY#sQ1joRGD$Lj9x}bUwO4hwEYqZlB4>Yp=c0;9rmSvNwH0|q zel9M4MR^s_YayN-`xoQ`4Y$GMg##uPYJ?IXYa16Rnfcgtr|cVs~!$R&{OghFvh1)=k4S53o(B2qU{ zuhYTqPq7r!& zvnyXl-6)2@l=S#cPQlPbp>uqp>4EJAsbaLg@aU~I@A~-Tc|(UX3tx45Ok+`NYZ31@ z8pMNEh9jUh!JMA!X)5!>ywdpNwC~Vh9{X~PDP(0HG^Q9|3V~FCQ?8-Nmi98N>OL&7 zh}=f%K4|qZj)FYBMHfnhnYhbRo0c9Xt!jMMjKn#GwT-K5YgaecR?Um6EghQI%{*~L zef7@})CgJ%FjQ?-({PN!Y0k|wppxu)47rPFNTuiYBX_D7Ug3?HOUp4_crPJ!aq z4*oH7?}UoVyxGRE%!iBm%_(pyV#f;$ebvU4*p@(5YEzFupCyHX`lzHZ^)S65r7Hy3Y;aZvCwCr9`JVWhT@)lr^!-l60ej1XtGog7pd#0hF(I_oG3j+utwe$u4upX|qDllbU#ujBhAMzL zvJtnQ8$ln%)@4&Gqq19S>g6|Y-MR()=EX$?MN^iBt; z?Bw7iFkeTd0<{!lQDWl-)R0_5F<-E2)QIT;l6Sa$ZjN= z-}m8(VuMnWXz*LPG<@Y z^mB0pXCW%Qu(Uxa0g=LcNxMz&C4UEs+yk}~ap@G|HKaML9enM|>S-;_HO<4P*Q^>; z!~bo__R;2-Sl)e0T+9*dg3CkGaWq1~=rIcgjC=&W%H5B z#2R@2V%{6V05{-I1c1!JJXdS{yGfA)}Mm| zsJ%$~RHj7wPCtS7AND6DNYC^&X`-T{VxwY=(Gds{1>P4UH4x^5_~<-+JiNq}9WoIG z4+fE^P%Ab};CyNSWUUt5t;~S2oR+G9xlXdst&Qi~W~x`TZk$KRVWF+dLucN4kNL;+ zTE_|m^Q$aZ=o@SPVja8Y=j!5DSlII&HlVPuaAifIews(2r{_aqVMNDhwx0lI=yWY` z=$r%Q8|R=HM$8fD8Ldr9rFdw7IF`jugxuqU2XHP6eVo9dhf6&uQT`-xPuUAK_N6h+ zWYQX-S-NrK(x>~>Y}{B~|IcpHS}<+mglQ}y*PIUr0*1AK<2R!&;(0Qd?btR!j|dAm zN0P4`Ih?HqJqi{j9yAp}GAWP)*<#6MJww$xPj9W(&(q7p$(7h7APw8B*cnlJ>kYQu z5m3~K2qnz2_{|$bJx4dPnzHRnAM<=^AA+JZvj=@^vaazn`6 zuY(koE*&BgqPo5!6*^uU*K0;Ts8CJMc<9o3?DugzY{al4I+MIj5fXXq!z1vVv_pfQ zlFReu6j^{`TcCePQSMLXXc$*Te9f)hUwpyWe1R3ecu8?FTsRm<;YrA{Ogv3Qq-!{{ z5@sl3&|un(Eu-kc(jE=U7YPggBASC|V4&pZp6;vkCFmq>^hUPfQGDjD!{-Z}!d1Dt ztgNiCthDU%R{X(5`G;f1V3!HwP_|9%dmZ+%iEB@U=ida=SgfXwDT(0d_%aVS7blqm z;=TvE%axpivc)gR#}mv!fIoKn#Ifq?j05rVY=#F01IHyNCBzdaZHP92>l9}nSS!x9 zR*3cpBA)1vism8BK_$iv0b+U+;9&1`5%61hvO%7lu9qW2xZXcmuJ=bGiw;=5v+kk# zqYV$$?Og4D|IoUHz2C0CzwYfmbLyIJJssz7KHVCyjy)7GD1a@0EMUZ~>**@qEhAVY zXE$z$#0&{8igHgBh@YaWsv7X82(!aq0ABoPcKRUZ3nOI%CIY5rODBg$$NQmML<)ri zM>{Pn#B~`h>YSi7Ng17`jCiOxfO8&ToB3Z$zW#bX%K%XYk5*8GAlL1znlvM}U20yD zP85~P#kl@A>O;C&73o40#1BJ##E}gPT>1wo>HM2~!Oly*Ls9EM7AJNZxpZtCYwW(a zK?AIgiVnHdXkm>E=W63yl$uY73Qv42dGku=h<`=AR-o?VtaycOGve2ZolIe)MJ60{PA;QpIdTMFgXelxXBdLp z5NvPAL4uRLR+u?OMvAz+MsK1^NvH85yo;k6W(z@xXlUW z?aq*(qQO5Xlw(K=;Kw4?oRcFD_Fs+|{Pa#Zr4wPr(uB<_l_?ULmGhC8U+~9SrL!w< zV_0dKz^UGxzM4>;|@N+0cm-QD6KK#|1YTbuOj= z!+XI%pqG8+so~+Nyc@J8Cac zcFZo6JP9Q`ap34A>I>{+Ka(1d8AxN8EK&SPooRh9ZMBN;E;hd?j>UII>=-_E+VERH z4E-OJDb)`lOQ_5jSuxd70^W7n)Zsfu?65C)x;SDH>m0hq&Z)*hf)iB$qSTnL1m|ZR zqt4>&bChfsuv8G61Eh;@6DOegiuk(snzwIne)d`O8ep8~(zpk4?p89m$7HU})XG69 zg%ck*Y$yzwd=}^A;OOAwI18h}S)p`BbSWT;CnF0N9BfJ&MMs6RV?Epz6iNpLzBxKK zxiV)*=c*vYeGWyj#gaNzyr}FhQ9BrD8{`>G%|=eg#&ABMg6s zEHc`w??jOxT8azuD#^UW)_gKAAxo#bqu}<2hNo*g8_IZU4r<>&L?zZ9+rKo|?*~0y zi9VAop11|#EGL3N!>)r88V<$*OqyGp`3ZLN{yjs{Kn>RiyMCpRkky=lgO8`L zH=fdJ0{js&4=PuXB?0P5=v!H*x)slHXljSD)nJGUm$^c=CdN>K@Q#w6Rg?l;RzAB;Y@{#SVLX}JDXXa-I|?R zWvI+9%O0MUT4DGl>{V4nZbY>96;(uD1Zok%trDj5(O5Cb0~;FS1a*KD_*N|D2w08{ zEF2>@+)3#OeIzHZ7cb!7gDEfPs>lr+fmu6({piFfNfBWY&WI1!>BDXil|!_ciX#<& zIXJgagJ`2mWA*!ity408ZD3m3z|6{FQBgyyG8@y<8Z)bgMnw&)G%qaH>x)y9a&wc| znY_Hj)MA~kIF*l19gvyXn3|iJnVUK=GjpJLWj@v|Ev;KlLPCxyAwGw$(ZiOD(5Ah{ z|A6rcJrevWnFqAr=qK0^i%v}FWN7!%A7myhn!9oWnF(Xig@uR7(I7uk9+TLB2(umf zKVLe`D<#KIr!wjdgZhNwdyp z7uOMYkCz`N8cNnph!FP@D67U4LUImU05Zdi6qd&ZGshE`;6Y=BPU?lEqi^KL%rmc@ z$G>!Qp5S!z29*+pQf8qP7vjwzl`v-~cxyq?Ph%0klgb~06b(W#mocO!T{*F{DCV-JviHre3nSf0aqn(CWtr)ri2DBDTzqi zi;=5Rah%GaqPSj&ZWA66?jVj>Y3_9dOv0h?7^Tp0-4;GPnZ5c-`O?8tOEOx^T~AcIjp3&u7p0iF*Ooxj%CNMO+?O&Yl`#)(vTnjg2zI#~auj>+Q(6xJUw) zPuq>65_I~l0=C$cnQ6-H)-BgOj_wl_(O0^Sc>~c4p+`ylJIMEP`C?n7biD? zIp2<9Z&xqD*;#1vbo5YSu0Tw%VmZ;B$>IKm0L8<>$+<8mXN8kJp6~FWsoNc&xdXPP zhn4hJ!G`fPlPM*|hILc9sjR3VB`2jvX2u`%fX`p(0eiV7%&wPgl$faUpY#kfQm`;| zllcW(A8ka>MWF}(ytAkyZ|k&<&clT5!^MFr-voK^HF=3rK4ePbGPy}!%+=S(NJR)0 zr9aPa8?x>6S*93nevO%0TUM;V(<8YGkhZUgos#(9aI1{t&t8eSRP_1Z3T`Hkef3h= zXE7zo7Ub{FWm@x#J_&atSHu~Lt1~!qEdPdNURW_^r1@QzGI9*_KEJd74wTi#6`{bLEg$H82K;%d2X#JB`0{AJ5YfLzlGX_W>T0X>la>SSw zXf{i^y5rorop@|0SId55KZrE|w~HDOwy`Jd&-Pz37Kn|mz4S_n*kg>}PH@vfXb8E}0RV}S-a4X>z&-UR4 z;n_HAe~^aBZtTI_{dZ$8!+z{_=SBgY!FU?c@vN&J3gsDv)YQQzlLirvp=Wm*M1|rY zLiR?kKkvjxp_FiwlS9Xt5O@3bV`S)HegJ`to78u&AEP>T86&l~jgdNTG@{;xpftTn zW9@TWcVm@o0cQa}OtG`6W;Pt#cQ*64_I4o7hUQLm{d^JhdaCEV`eaFyD{z zJM$_z*r5P}Jh%knfw0eMA5ab+PD+^)!=HE{uvpsgRK2fMQZCL4FyCK%;|AVc&!s>Q z@F_}mI!N8&DNa~#EsHsA?!!Jc_d%YCTqd|$#ZW}B zWu%ht7*68B+0dQ>(Nb?MW~@}>TAT}u_hkO?1C`WSb2)lL^rRAN@11U-2BiP;i`WM9 z3)81}c`xWF-c?L98k3Qj7pq$i@CP)qQ#?~O(c6#QoQuEAbe!#DtEwp9U>9O6kI&EJY_gV-3vEyfTR6Q9HCA} z&Bb7tagH+Hk(@Ognw+sE1gik}?#sAAgt-dZ%M~~DdMe>jkPO|CBhG>(G5%hk>T3$@ z-ksyR7j-Yp%|TVWf!ox>Y9ibfd()DTL{86;`Rw>kTTtl~QB0D|Y9QYG+euRP{1w0I z%+!{C33;wr(+bA)=rN`swJv0Ah<}uE@UHO_+6Oi58lN~UMinzPbLrWs)6PGffdg3b zYHRcOW8;p`nzuSOx;}SOS?R>wFnzB1xiHPZhLKzPHSHKRW=E5sU$uY0l=l|Q`^S`9 zYwJo&de;?~^uc_K!X9%w{{|NV`>7<7d1H)voPFx=haFiAdD6s{LF%`K)CH9nt%}Ib zf)uIINzsYwD0QS!r+~4Syrc0}6J~LnM(I!ORo-^syjMD8Nn%gp3q)~j<3pQ5OF8~GqaHjNW|RmOk&t7;4HO5P zT!ySdOs5;YA&wWlZ^&=RX179yTK+J5k|FW)m+W&47=;R7b}>wwkTxtYYnnD(H#i}w zTec~yA}vfCKWALh*wFBzfmzw1amK954D&8+Qmoo3SZhrfXYz|EOzLUW2Mr9;gzI#n zZfiE|8j@Hv-82~~ z2t*ti;Q>V#4h*G3d7Z&2llG`eRyC#!?B0D~N_=EOQf^vWZcYgE)A7h}tyMKpnJ&2vrYt4EbQqg4BmI zc1dNS#1^E|ahMBseC09+GDRSvz8;CqjxQmeaFLc0pPrB|+BadJ*A5@9R(y2oYa~sL zmoz9KsY&F=3v-e7E6HmL6I2OB2>EjPvVVz~7$Rb&#tt6`qaqsmR61Aod8%jMozZb| z(PjLr5*j3w+?s5U4VKx%W6`u}Y)M&8QMgtc_7LWRjD-lhMO}yw*;{+MIFh9tPGE;Z zL&nc?bil&I&!Z>GsnooK^#Lf(eQ36@P39ZS$vhafF|f&O2527bE@g;g69&d2 z7eO(YG3@Gz%!&R07=fKzAmXT_xcD^cygG=yG*9iN;Vm$Ytc;Hr{~Eh>Ga559jcjsk zMO+*iOvc4k#O7rhV=^;ijG06Mpef?s2c1HsZpjwR8P&O)51GwT722YS6G^#3w5GF! z|6^Y|Pi*6fWmDC4xfTiD!y1 z9tt-}%^evj2M^~LLGc2-MYSO;5Jbu^u7VxP1*P)wY?kWNE7ogZPIA_-3SD?ap)R6s zYSMrppWrxWy{u1lSXvfy7}}DX_4KjOfT+mW$heto#)_=q&}`FNz@i$OGOf64h|?O; zi(ryP%P5{SBXW81ZF|+ymH_rFJ@ua*Jvx()avRll^=jL#59~_v=HQdvx#t5G)6QN2 zh4P3eO!g+XZTZml?(G|)wDSjX1@AbD&&)U2=+8!8y^3S^@CUdBoe;7>D}!M(0y{Nh zD6fzsEED#k@ixiG2OO7zlatZ{%Z37*9$;&DsMmQJw&`F9TqPbg6dMv75r$$^UIu-H zBh-ragb@e7!9>SybHSV3Ppvx-@IUoQW@YT22{jQ@rNp7@wM+;NtSKf-GSg@nyr&Pk`5eiaHBSzcR(y|=& zyL@ysqo!QUP4=ErWM1UO0co_+0;|sm@{iZ3$pnb3r^H$70s)KbGGpnqC`R-Hr%w|r zBGEwsYEt3J-tqChQ&M}y$M;G#Pnp|ho;A0P&0~$JX+~pOYRp#bSiQ(*Mwi9Mmqkl| zSq}7B7t9gx9FJfdlB1)NlcS=O%?GP7p7OY5@HUBqX3ro}n_v(*qJH>0A9PQW6r__x zvGNmf2^SEe3VPI?^A`-++w#IPl9t$J^B|%Yf5C$tqs!(8Ptus=u>kRbnE5>MR0t0; z+9I!ao9FxCHphPC{my(P5BM0%RN60 zc_Gu`QOTUrg(+aLhMh2MG&(vBa|KH-G|8Qzk`oX;2xPY73)KhFK&@)J_`5v{qAWfr z1A8x%g^PxH^cYNvy1ooNl?Dn>2M2fVZU5%!tgSb}Gh zF(xfd8bJJ;>zBhMXx+f3VMEQ6`Ij1om=E4Iq&WLwgw;U{U3np&e{Z~cLU{+Tp7=Xn z9d0fE6JA{?t{&Z^B{M58RMk{f+BdcPcz@?XUJ-@n_Au{|nD9__eBvsjK0C!JHx~^_ zst(h13(e_SloeZ~X^o8!F3Zee&xQJXg{u6+ef)yWLn9Uj7=yJjSi#Kc{7B1qoW4ZS z6qCeRVn8opq99rdMtu{VZi4SsT_Y;mcpf_ok0iTmb6=e zyAtMTynVDViqk3Kr~pDl{J=VRBl4_$o#=aO&O(mab~)gL*(HYoIpzx09c3ino`YlN zhxs;(ivI;|j1XIhtqW=(@`(oiw@0&)_C+O5AA*41yq~Nm0DPO2hLU}X*}#v$TYKZJ zKqG2SZ+#p!hnJ=p#FCla_$Esv&Z-o+K=G|^$j3ofXp2!nFJg#;Vs=}-XcYg&VyV<7 zYg>Q`YpH|}luGzOTjrqD^?y>T0DJOZR_~%hQPV|uVzw|HH3jZaCh99<&|0S07Ta5; z95xKv-pZQ`QO4iJw<@`Cu{A-`D6#4%ucdeF^V*rChA@|zZ9`C- z#f#B`Q+zN^gZvzLiM4TEcp9n|paV1ooHoANnM3s5XN&29(oQvd^x{81hCF6p)M+*9 zbnnz%AQz)#|5FVO!xv6i$TyXhp+a{m3H%Gz2`mvvvHd1$lxUq0PfDWJ5eJ;?pFSGJ z3~y+lmX(!J|A}=Hh5*+I9k`w=_1|2n{|tPCWiDzB4X%hs=y0TA0mhg3IC0~Yi5sV` zoQs!EJZDB4lN49LW};wz=(giTJ5LX#Io-t9SW1L+aZdj^pM4KA+n&cZZ^_S3Ov=ws z3Jwcbslvikd`(_LLP0@7LSAy13XwE|RbkdTY!v2!2~cq!NU~w0SyQ z+B~)Qm-6tSU9rfpFgmqFAoiYuc96^smAt}kpXD8|{G>!wBP5{Cw98rzD30|Bc~ljb z`lNR|YQoGKjFSiXufY?oCXAQ2tFTPo$*y9MWLHs*<&ZR6IOof1i6W2*2G(>i+hTAJ z){*mGEHL213X!uKiykNdY9U#m*i10^yV{!E3RijfI{B(tKI@(k*ztwWOyHY*d|X{M z!P%vhs#V=fXzc0vL6!%EDHwZ*yn}fTiYm=>-bPEM97JuU9GLB0D1nrNXsMK=DOY0_+vJ(e&(n7x638!HUZR)YKU_0SVIF(IjDwG4%>QQPpfXv(WMQT z&ExqxOTLftL3pOxk}LIQ*RLPJzO zDZvRn`tb8zLw&phz0=)2(qn5PG0$#Yz{qO;i&PO2+(7ehU6@%tqoLD1O{Kd4H>*`>ZN1j>Px*wqxXs`)bKBa2ZX5o1GEE%0gKo~ zc-b z!fGmaoh8-cVR`=ES8JI)-*MQ=Z=BGmg7o?zl?JrPWa(xZA(r?*;&JTDzm3Nktknht z==A|l=yU-AfVZ@Pfm&Tapq5esYK{44u{ADStk|zQ$+AP*Rp=6t4x!t8DLMyrt_)}r z9khx5nZMV1XtD$JT2(K#e{g6~jWc?JaMj-uY{`Ly;m!3BOHX!%CO}-7p~Qls6M7wN zpWV?c$D8x=)a%K*TYQ~pnIr0>$nRF{BlFw{|IqN%AXTWUzzrUyJ+An6_XuWnbUWoBnfu=yLvnw~b^(VZB9GB<@B=My8t@3<^a&coQzMCv!v$csWCF7)Q=!jkgz zoOBI>D*HyIUFn_>*DEAEI92T*^4Hx9bt7*riMq8yqBJ|PrIshKvvjX?(TS}wk7A#~=AYf% z$`)A8uq*fa?9Hu0^39X%${^~2R_@=H*Z2TDtJn)J40}xB{&I6Gi%2$q#JXK9{*+_4 z-nJaJyv6rJp1X6R0t`-O7nw_n;4eCem>)mo2 zkbACh&8}=(WA2z6czsx47L~9Z?U(Ese>alFP=j4s+#xFn>~>kff;WGKHxutot)e$$ zg`(IlVyhThl|-$=o89>9mPpvY{%%iJjK*e_7lc_>dEvUXO|(+lN*3E>SF(sNlspF| zufI#lHkknh1G9^ebG8f-T1aLP%Oxr2j^!e^0l6j2+H!Yb_II@)S>n3o?_w>K9QOI8 zk@b5yf_Bp(Kin=upmw4R;fpd>qYMRyNEbwM?yS`T#=7wQ*E@NByAtls?^6l4@%mH) z8?R3#{0BG!uit?q|1Q1iZ|zkB{~d5N3zRFu^yfT3omm5lb$5RMyUIMcQ0Ve1X~bxN zjR%Ff;4L5ee}%inL3jTn&i4A9IolhS2V^e5G`La`(=<_T8;yJ?RnYU4n`nqFcL!DI zIvO!{#oQuQu;sq{*v0xF_@Ecz=gZyMYlNm~$GRXiNnEesV3{k{9wq;2?G0jXs=Y0D z2L-%C?SG&9u5HCQ8P9(W&iFW1YyF>b#ng~LIH6 zcVsYmf%#Xgt&Uh*Ux6X?ov1afshbAg+CEU=ZyrL4#TY$#l`CRF-DEX7!|6G#TyF1 z!~Kk?Q66N~1~X0YZ?4!Oy)*v?t$sA|Z^RSd&brOXYBB0nf!>}T-a*DI-QoungoUQ6 z{8Ubvv@0*_@kYbmnD_~6Tu66Ow`g@R6LmkncVsi*-*X2Yg?+)sjXfv4u7m#016rs%;8m>3U&5mJP$FJmP_+53)fkn zm-J)rV2#W`tbSS|%iHy+hAVA-kg*_R*o#m})w1q~^u;$gr$N=_MaB@;#q)H1ee0re zs84!&TN`R-U$V4xT1%!TEg-d-wPZUDT4%|k63w=#qS)5@dj6fZw)AwAENREy!Q3}V zMY@w$A1pzdF*2~9gX;Rz7$H4s7loM=H?&h{)^+`Cl2;4K21Bw?EpIC28?sXohQ%*6 zo5q5u_2ADTcG~089P>q}FVV*a4oZ-`$!djgE-kKi_z?jktxBUm)GPfZZIPrd!s!lh zSn>=bb&+*J{k^}EIV!-z$0?dGVBHb|BmKR6oqhcHJeCp94}#0IQ$kvnr@OOLptZH4 zj)gyjacLKIi*}`?82=s17k>y*5zLGEK9*?y2B?GHq#;*rR^|cs_}^(#^kJgYnxv#7 zgMY~c$$Z@4eyaU}lU7~%XbRjV=pbC}H%=hCjVHWdm>mOeR~ub*k#{ zwo`nSC5g9ScHWu8w9)xfjjlDkrJcqsd&n}KeSFs^$d{Cw6vxWV``O1eM5N;pIhD@E zxd&|pZBQrm^3KQR^l$JZO6N`7d0`6dLi<9uzXE$3kYQIq$iZ*6J#U?YcxeHDUqi~c z+59Ya{@!%Pi3xdx;d8*# zkAH$EVh>o8v@Ix(0gHxvz;fwc#sJ0Ji0{)!eN=po{l-x=iF+D5c&;}NjHdX)9d%Uv zlZWvX?#$*JFfP!$itnv=Mxz~Hi+8@Y-q~vj#!1~uPEhi{%kz!(&T@VvdmDS$g5sj} z&Q-n*cA>xE&SmSJj*+CeYQ3|OZ{j1wcYS5O(=kpJH>`J>@%94fHwC3&y>k$~xEZ}D zD1NZsnT9%l1}ZBkexy6-jbiR+_AHJ_x!WA3;FcKY#cT+CV5=JNgn?!7r~e=tf%ORk zzw1^lTR~4mL!&o=pNw~OvD`;iavtLY`k6iZ@{@1XqDJOv*b{jRZT+8WAO2p)dNHFR zB9_&$J~ez@c}ZAwbQp!gWaa^oD&H3F{~woqs6Xq^;$n=6tREZLm;bt~I6N{kyok!C zlV6#P8wr0uM5=cI4fn!b#*M}Pq3Bl3a3r841A*_fyC-p*h;~g5BYp^BL(b?-Ho5P} zb7Mw|*lUBY#Tb+e{Sm$Bwx`jFosWuviDbv?Aw-B0QiUGSWS5>UdtF|2`G?C#F4tY%U87tlyT0K1Z?_7!-VtVV}9HG_V^w3`_S*Af1!Vk|6u>|{wMs; z`d{|{-ro}791s?e63{cCC16g#(tvdVPX)9GycBRe;8eh80lx zchI1q@j)|#76)w%I<8_WSJgn(2-RfOT-C#>XHOQG+FUJLzA>e=tn=6Db&u(`>GtT})Sc0Nt>@rupw-9f^Ypd) z;rjdaEA<=o&+7N%rVS2?Cr4A;f>)>hCd(vV)(J})8U_oe;Y9_ z;(G&U@HB)Nq72;(4;t1OHXEKZykt0T_{8vSBp>M?855ZiSrAzrIUuq%a#G}+$fc1_ zMjnWYj7o_rh^mNchCq2FuQbLQry3tLt}$*i9xxs?{@r-R_=E9g zj6;l1j3y>ECO4)gW?;;Sn8`7VV;+gw7PBYj<(RKyevVCw&5x~$of7+K?Dp6fV~@q2 ziMIhTOP!PYSn9Ua!>MnkevtZU>Q|{Z z(iCZrq+Lu8OhNAFC zOwCx7u{vW@#?Fi*8SiGC%ea#9OSh12mE8t)o6v1Rx3%3~?`Fw#&h*dJXU1oC&n(XD zmD!Zpmibubw#+@5FK52pJ)!%a?k{(LyZfizzsnM`09MfKsvghuIN0Oe9-sHP zk;CV>w|r&3cYbKTF+V*&Kffyfq5Mblx90E8 z|69JLz`a0KU@Vwc@Jzv>g0~AU75rT2Q5aR2SJ7LS~r5~1FDZO6iR%R$mE-NToTXwPR zhw{Mk=JHA950tMh-%`G}{EhN+<>m^viXem+&#EY?Xsl?dm|F2>#o3B4Dt_td)KlLx zrKhQ9P0t}cC-&Uc^VOawdVXB#Ua6@pt?XCXQaPq_N#%yh=PO^VJW+YJ@^a<(Rjewd z%2YM7YDU%4s&!S*R_(94Ud^gqtJT%Rs;5*hs$N&Ur~1w6i`DlNE8w^wbiwq6T*ZR~ZecWCbcz4!M1 zu}-M-sngUY)@9dK*7d8~U3aAJeBI}DKlX9%`dq0O>V4|N>l5p< z>nrQ~)wk5Isoz$Ap#H7;bM;@=|JtBv@NbB0=+;o%FuY+-!($CEG`!w$s^Mybxo<_^ zfqlpHUDS7H-;eu#+t=LBy`QFE&wk_j&F#0U-`0Nn`W@-_e!olo{@q{JKdFCy|K9zF z^&j8Az5i?dKj{DU0B%6wfTRHkcrak}fQ17#4A?i|XYJDXl= zI@xrs$ueldp!tK|8|*N+ZSehrA0GU~;N63d41Ry`)gkUf{D(vinKES2kaa_z9ddZc zheIw7`JtILdo}lLZfqXeJfpe2`L*VgL!*YK4!v*aLqi`Qx_#)2Lyry94~rkxeOSe? zM~595_WrO-!@e8#Ym0M>e~Z3lRLjhkWi6Xp+FM?0`Jm;~mhXpi!##&b56>CiFns** zCBruie{T58!_N%AH2mMKveuB+p{VsO&zsy)U%`Zk9HZI zIl5@{rqLgc{%G{&G0HLSWBkXYL&13em=k0EGd6B)zp)F)t{VH|*dNCwjLRBVGH(00 z_HjqXyNuV3j~kyhe$x1VPB2bbKjG5Eq=`inS5JInlGh~lr07X$lO|2tGwI5tA12+L z+;ei@DK1k2ri4w2nPQq!F=hUgNwSR>ddK&r>>m3aq5+6x@is5)=oP$?Xzj$ zO#5j%H@$v(^YpRPXH0)%`g_wqp8m!3oA>$Lr@1fYzKr_{?yJ79|9x%u{cQ#}BW=dY z8K2C!dcWWOjrTuy|5x|lm>D~>X66$!kIy_c^Rt=X%=~Fq_N>BLHM0iJ8a8YEY{%KY zvwO~7JNt>*PtSf~_Ki8FIVO$XzxeI$Pe0<^G z7yh*H<|56a$VCZ@suwjZ8oKEDMf(?h^`PH_xexYy@PP+kd(gZ%e{t2~=N9i<{KgWm zCF&*7OVXCie26`i^U$HC!qVPL2Q1yW^!&r&4<|mn^x<_6f4D4R+2CcPmrY;xz_QcJ zo0pGWK4bY4%U@Xj%JLtVn^$D5C|I#z#TP4nT5)rw!^(=4&#e4%Rq(2YRclslUiI9n zeXEYF_Ff&j+PFG>^_!Twceecn8>s0F|th;aB!gZ_Gy}s_+y6@KASZ97L`LUeGo_K7> zV?VApt>3%;qxJt>|L+a*4GkNHZWy&;+J>bY)@*ou!&4jDH@vjrjScTTUio;x$Dexq zxyScCeq^J=#y%Tgc_QM8O;7y1N!aAR$$yi6(}Yd4HZ9q-cGH$kyEYx(^yX&u=EBV@ zH^2X++moSB8lG%@a?z7-ZSmNWzvZDVUv4#QUAgu9rxKp3d}`TK=eN0StKZhNZOgVD z+YW7eYulM^SGWE2wD7do)7qyKp3Zr?^63>%AA0(iXL6sJ^vp}!RonY+fBjkAv(3*g zdG^E(pB<$;R_$27rOUaXV-2T)K1p&h0x7?0jSA2hX`Ym-O7k=MF#j z<@3hp=RN=OF4e9HyXNkCX4e1uqR+oB!bf|+_Q7fdwVXu;Qm7B3zaX-eBpx^e%f2I z_sPA_?|ozMnZ4icbKDoUuXJCZeKYp0+IMij*Zzt7x9mTCfIpCOAooD!f&K?t4@^EV z@4$uw`wpBuaQeV^2W}iNA9Ow#a4`H};=$~L0}jqQxa8p4gIf-sJ>+?)$Dv+_S`SS= zH1E)!LzfPHcj(s_17Ga^;=mW%4?7(8IjlJxb2#I0)8QqD4<0^w_^ZRe+W-4o+20;{ ziGQi>r4L@7`SL$s8TrbVSA|!{z53j%<|9Q%<{o+H$c5L2zxMoVw~po>Z9BU2_4L=L zzCQc)W3Qil{rVejZy4X0{KhlK*fIZOamN~tEjV`g%^q)VeDiN_1--TGtq@k3K&6`02Ojzcb{Wx$ivo&a3a7d*|m9?k6%%RG*l4V)KbtPh5J}@!j}$^WJTI zciOwl-aYW{@psR?`@>1@WcbOflY>uA`+Mr&xBmUoKL-8d(tEA%?SAj)_XFN9d4K); zufBidgQgGu`Jvl~;U5-$SbNI()bvw_PQ88V!l|!M`<{+CZ8}|ZdgSRDr?fN)Ir_;rpDI2L{51a4(ogUE^!ZP(UyQg|bg|{)>WfD% z{`T2~&lZ1n=yUG#*w2T5e(jRerQA#XE={_$^3tYDJ1-r-^!X+8<+#fOE>F3<>hiA3 z2QMGF{PyJ!E`N0S%H?k_-?(hK;&8?DO3)Skm8>guS4Le~f93dgcPp zt}eT}>1zAc*RFnW_43tUuX$dJyq0sV?poWmx!2ZRYrl3J5-v%(%H(97e%_WQ_pIxj zQuqRQxHHaXL<&Z#HYsmzHUF#_C5yyYC8T8W!XP@{l!c;DVCzy%%!e9KZ5QX2Ok*5dhNU0sL z9Mtavt{f@A@+06gz&3p60ZKpvpb_`ZBh8ZXa9+5s!u8j@yXD^^oJTn}sOK7GE%;u~ zK{p|$bS(mGYNYGImYc%gP!|H!M-DH4`+C`5%WCX?D??lU9{^b!#>5%41wi#dEceDg zgvp#9T5b`TFIQ%}zFP{P{RSZs<@SU3#$7=0MV@QYdCY-noT@AE`#DGc z5ySwx7kCtrt-1ono1jLW{ue-&!BrE`9F;eqkCt<>|1}tbHvQ2&#HljuH1I+5%`T;D zcG~hUDW&TU2)DcLxX-&_&H-d|G0)zXKnOwmqA(Vb-U(y{cK2!iByv4qIrN{qfe?tc z{1-v?4A;;V1TU`Fy#W6tBExlsCd`%p1rR<5?g0EQu9h$4BJK*i@!Nv{O6@>)4ByB6 zmm$RREe~MhIcNR=-gP%Pg5RD;JD$h7DyEhX_~!`_%}vYY0w~R9TFWiK*MLXy-5KdG zNXr1oV>y8|4(TnvM0`eu?>+GSXJ)W$wE=%W-g7_7rgXemuC;9I^-L*68Mtq`!cr~Y z$wIhV0&5*>1r-->yS7h-Q=NJE2hgVfzk&MkFP15b!ZS2RB#2;7p3a@) z%5nu!g?w$mJh495eZS-Nb0{x|^JCl5A1`noVoKK%$ZX&FXSvFIf_=z$C-}4H^DMs! zk0OqJ7l6H~BcEsa{+_@GxatbUut(V?;*jw8Uj^Ya%xQq^B;GUnzYA=6lXVsP~ShFJ7YOa!Pb(<2@_z{cf-izrBn+SGiy@rE4p&7_Qz5dFbmjT=Oi(@&n*;TzeojBdwD1Sl&aL z4B+{RTnas+x`9~ z+VlSa2>Vfw$*30r)n_Ks+oAln?;)HT(Jn<0>8ag!+x^?pN4OehMm(uM0DdP|b5C#p z`R)XN_WU$hXuZz`cLlzNbKpxXH}45jIRoDnUO;{R7eLqwz8)a^34N2yh5grHGnd4> zp-p$2gLMB8&TrqxrP=^WB(D{YrnjV_TCBp+Gl-3RFOZJ0)CJf&PRpLg7M(wy$>FL z6v{fvxey4?qAvS5S425W5c0TY8QuvUL$hE&{*y=xP|lCIw}o?)t;4+sz@xtfe(_B% z00(0=gID7DXwF@z!SA*B{bMdsD8=^_&P#X0({AZ z3Ke)q4L3yA9k3PetOmTtC3n=d9cw7b#HTq|;VjCOa})0IV3#6JE~a zUOb>T%Ksei{{h#)D}gK)XAT38z*#tf4UeSn>A)k^*$UK78?M9@c%ptGoS;ns{6X~B zYn%^cl0@L#74M9dRih4HVx9UF`Qj|?&|kR;ahyBEzoiGYG`4PwCJi)oj7NKm&u;@20F|Sn@K(acO z-%+l;Oo(SiUCU3LKk62R*v@Hu8`qm%x55>!H~1DutOF4?5XRzrG}`|PezU0Uq~u6a%gE9UD2LU%5lPeGp$fA}KT8+t1d_=l0VCtwXUnkL-a zhw_f%y9W77khc)JvIs68GLbW6p(pugEa%{j+#B^a@Y^jv@>47p%p+&CnRriLB)<2Y9kZ=-eBT_Q%{A06BjlbSn!v6@F_4sMuKiK917}*hQi8fcseSdM=)~ zg6%i<2$#$IqmKTZ8f#B9K+TRLJ&yVywY5QPhY|g0#QpwU3ZSD+m^abv2A+#U8qcY@ zUojp$&^~vmeRnI5+RYlc5I`8}$ZlT5e~R@=PdYQKnQHJ~ zTQLXJqF%Kd*Aui?&94M}gnO%?)11Mn6$_Ep6-FU9{Qbr3nXAa0w>b*R7O2uqL}u@Srzu* z8@NoF6L5DF^m;wUjD-sjf}qm?$Xp@QY=vEZJjM&b8LXW-zzINT#qWpl&MGcX>?e#< zDo3_Yyr<&S zg7w}?q(=bj048hNAE`6I_KXw9-Q0@rt$6Njq<^)pUF-Q*>L;_l7tX8ZV!#4G0f6vC zbtarG0@&U`b*8pcx)@LifGxM!woIf{2DOv$7su^`UsC|)G5Q1j4DS+H1!Eo|-3Lz- zBhqt}hkF6MC9VOKXEb21HC>LB{6ks*8v*n?jk|+@X@Fv3A=cN4nERZ08ejnCXBv*D zh-QV5hw^b6N++Ieb+@&}mePG2P}^+x#T4snZx#Z3X9fqV;}$ubaTng)YROcLqC55< zJ7jgtO~b*@ z1|QxJbCDjQ+_alasSp0r`+Yc>(|e#o3Vcy=2s#U|k9b5HpT%aw#(EWdlC`sg?C`M&%r{w4lZoXhnI;z_y)?t+(~62gQ?Ax=mXGK4k4v%*Wl5m^vy ztut{5eUq$N)+U=QdqZZCd&@)QQSx}TquO2VuMSab)!}NRI$oWw?yfFX_fq#)k5G?Q z&rm<0UanrPepLO0`WKBe>}P#7K^nD2r-{%cXp%LVngUI&W}IfaX0hf;%~P6ZG|y^w zXwcM@VCO>F?{*V(%*RaG0_Ln3b+I=liMufVKdteJiNg^#Ay@Xv0r&LAI&FN@$e!} zV1JW82Tv~r@ZbqN=!FOo52+n^;AARUn5?_3KsH1+QZ_-hME0iKLmng#lgFtY)Glft zb+B5a4pT>~0X)co2T$N3umcZ6!#9V&5Pl&1rSK!+ zZvqcrJoC_R40vFc>+qaeLFlj~$iAc0EPkUa+sE>vWugW1r1K+uBYZ7f7Csg}63z&x zg!kc<u$6eV0cnmNbu<*)#R~oK>`h2dD@^jp0KYw=p zQ_v^n1!gTgz)yTS+3lfnnWIpKnEP51$EWbX2T z( zKO_HGeo6j~TO0nIRN3lh^5})6N99FR2 zMLv|cL-8Elr;h@-!beaT;r$S+n5lSPaYB)#Fe!2sVTwl-QHlyhoFYXLsYq5lu6Rtb zK@pD#$1={IqV`;pyX7M}4gI9oE2PvSHA626*mGsSzT7v^8Vj*X6}9W1z30Y z_xpc-?|t6AQ_h?@bLLDtbKZ=1w0EAj&U+!UulJ&A@uq_dQ@ocV)4W%_tG(V{pU6Jm zE#C9q@W>>umumH9c!Rw`-p*c$=!YJ-r`QR7;~>oMhKjvKsVK(`cb+%^|9(0IW5r40 ze6d=bDy|b}dzXl7#7p97@f`j)vr+tBHaJ&0XE+x)zjZE0@A*62Mf13Gk8{8C2>zw= zfwKYq$L%sp4#YXux#&asd6&u&a*muPXUhHM67(runD1PT>x9n~1D$KcF3#^U&-w%A zEw_q7=O!`INnjncR@6FAVNCcV=A4g;xbrOZ|uRw498umzD75h8yiW$yZ zVuACGXm!342Ra{$`Oep3uJgWVbiNdA&L+|Be2*DzCvMz2+}R?QI6sIktWb||ei27u z)qjlCxCIoaW{Trw4{@a&Do%mE@p8F~xIvB*w?MCXE9R1az&iU*xu>{K)`)xMIB}00 zD;~r8_E9-eJObUzdO2UbCFhA}>U{!*(*{X!OggliIMU6pHDne6KRM{ zh)jvhh)j>nj7;@D@iuy2d4KaZd*6B=dGCAw^#1C7;eD+-RHwQGJ^nfBY;~SGUtOTi zRA;FR)e5x?|2;ZQ%~uQXFQhirt`@5$>TrwGU zSbI8x|0iYWY~2&1M=#wQV`)FVi!Ri|Fp><{yXxKbNQ|u|x?ET29G$Bxb*3JT|1*{9 zs4mk*x>(0_fBeH~h#sLX)m7>;U9B$Hd#Ee)o@%-7tKQVB)LZ&UwFt+HU#Z8a-{`&6 zReG$tTJNo{(c{#$x<*~6Yt?Uco%)@wSJ&&fxNWYek!4-sL_kcj=kxZgr2|U;R4Py4^a2(1JwiiAU#X{ zNgu2p)Q6})>qFH;daim{H>pSTJoTtP6kDUeZg{%ldHjitbW>(M#1jy-dBTm#f$G5$bilLcO6^svC8K zxij5{ zV_aK_;o(^6VRji2C(2CmTdW*^CyT^YayVw4!^G{-9Jl>NF#M`o2d<;#=hw?D-5wyNvU}pL~G*5k#H1Lh=RgAyYe=gu!!Giy#l4r{s(cdd%%=E8Y6-6tU$ z6QZuL{tk@wb#rTr6HZa0VD9|lge)p(DM&m#HKB$daK{KIt1jLgPk8Y;LlW+=#_0#n z8G`dW*UTwMOr46LagBot5>@1?YHTc6YoME25+e{~eFcdUiZ3C^ho{ad05xlx3KE%9 z=gdV&0mWsKtAbn=a|g|BY-}6^Y7?1t%?UAmPC`r~U_jO3e2>B88a%1#-aOGv5cg^^ zud%VEsWIVYRiwtW9`@wJ142=N2ba5&lv( zq@ZQ3o>yByF;vDuhGu#uB6H)-33vA)h^#AEQ?LdZtS!;Qz?Nxq=1v{dG`(?7VdId- zg2cEPa}YO(m|^oTPUxaUq;BLLSa~pSJ$Ui&HPlgIZBs(do1bu+K}ACEUYv*&6%eV} zD2o#F00Lsi&21!*x%EtHkD@yw*`h99yZex!wla#+YcJDaaYllKI+S~EL3~YN6V)Vh zSPY_CNE8eLkv^5E&%&m9lSS5ck|%~D6%q$U3n$7Zp)0JtBP-K|cnm5W(zyGO;zZA) zwNl0tElu^siJT%7pr9bpvu+}l3y#9t#zYSJro)#5UvVNAX!4jP1>it4$WG+e%`I3n zw;+)VrWGghiYCpRvsSg#Hx5noY%N?_oaj|FY1*7gGfd#1Aqelo;k}F2ioCj6bJphN z)g_#!+C=V1l5$8>?b@F7$iXAw^g~U!!=}zzOQH{E)viJPBHNtZhZG{2?}ju`JS9Qn zq1Z;0WIX5}kI?k0+D-+o#q}-vBa0J#i`F{y?gu{8yMNJIm)<)R ztyT0MP_$OldtlL8kKTid)<)>PW6|0k^xmmxZ3ew}D*_h`-xJT5z2_Fxp>F4rEHvSrC?Z)MRg@?mnJ7jp z9E}Dr9+JAvW?0x%RY-m4zl4Ao7AH#ls$HAiGftA07`^*i?evY$LH|d!SQ=u__F$q# z1?5b68L$~V@vS=t^f}w4mcm89yJ+cMs24zQ}ij$NHYM*y16Zd3Ae7P1znu1YZ?Ui+(z^Z z-P1IIH1zs~4NX;p3Xwwt%83`}0({%Z1cXpWtk8L&GBgAZ<3=}1fUyaQhcOX&VqBvh zG?f>GWe=Yh(0e5GaLbFrF<{f4K~$m#I+22chQjfbDb?Z_KaLAyIGqqP=Zq>CgRz^a zmnINMgQ`e)!{D2Ms9>64DsgMcn~S?{xVAuVabhn&H|D;ruDLXq=w4*MipQe=7)4xc zNc5_kGj$L~(t?e-$*g>oBFXag;j%wgydyNqop&B4!CNh&y@!Fsz(l?IwQW=(gZ9R4;J(_ z%^q_SwD3No5;3&$eYO)m0qC6kK8bR`Oe{)N;x&o57zeux8Zh|!+?rfO0-cxyHt$<> z2f8pgroiElW51$191fWZ2Zu}}m^h-Q6AU?K5DYnH5)3(J72S!xum-OE;d0nDyXa2G zgw27=gf$YJLvRNW9J>xAICdRGaO^sm@~i{cA(SUM4y8QFF_-crM-#y`z%h?t$k9wN zF-{BZ*;Ut(Y<0P1+3_}qFvkZy%46rU|AE!9NI4Q*n<0SBvz_X`8 zxym>R;7H>nfTI9ACct+z`xxIb#!2AE8Yh7thm>OszT=IP08TJY0yq({dj z**FP&wQ&;oDM-1O!FQ^062NK3NdTu8-H9uG{TXfT$V89UggbQVN`Dx~u{zkJxK}(q z9rH)$Yz%T{S+!)Xh}4eD5Q`3+v?tD;5xcWLZ;71SV``6aJz`#w8XSrAu))~K#lmnO zZx2->hiMMZsjbP_aoi5$^2gp3oKT;ySFPGkVSFCxUav@b`vqJHgA=d@{9FPt`K zt=m$+b~yR&?{Pei8y$CAGbYUd!E&l`Twa%$2W4QbSD{A90v*ZT{az=zI-$#>_N^u;%i?IJW266G^=9Hg85H^NF z5gx|zX$p(0EFK&0?1_7MZM;*PyvW9n4bp$=jQ8W^*Uq>g{SLx>1t!<`(@v1W{++;q zKGyAs;qaMoDRRW?*6l(IO1Byiyb8f+=qd|rxCedZ9@gCh`pdc2oe^?pL3eqg4bKj_ zdpZTs_!;~;*ng+9b}6qskq?_RiW|Wuibtp=~b3w?NE9 zNGsm^0t)&=oO{&@$S%>ua8u#xL>;w?X7<;J<#;bdSQj7*ptUA^%Yc6=_J2m>y8yWm z#BwnYH}o|Faxp?D!rzXVR>U>of~$5sM{hIF-L@H8fL*~>U~0pzb0<=_Ku_L^ya;O( zXsJYARHhQ_Le9deNj0Et&uwBV-U`$Hz(l2K1Lh8-OX1oUPqt2|v!aO+*LlNS-^Q08?($C1tw(|9+xTGTnGVL3XkkOeGdP`DIT|~{5vPZfA)azFoh&EY>FMM+xniD^ zCvJ6mIlY}euv}?&`ik4cxv=#ahTh<3k%X4Lzq5lg0Q(gK#pgJ&Ye#1%?3?Y3Hr0x@ zJ;d2XJna-ZL!DvHaA#L%gm~83&DmW%=ZtiUoMLB`GukO}N}Z?!Yd-9={NTi#a;L(n zbgGP&N{J2S)vQR2)LrF8P4GuxTtG~%4X1D%7MgCU7g@v?J>c*Qx? znd>w;^PFa<1^Xwh&U|NqSm!Ks+ML6jMNYf3*y(UOoh8oUPM5RPStibNmW$h+BXBm^ zO7xs%;%gCu{lF^cNarZ$Xy+IQ`{~fc9`Brhe(z&kLHDC`va{Mb#W~eE%{kp!1Fh^C z&Y8|x&e_;)J{J~JuR7;puj4i60$4d+C|-9iaxQi*aV~W(!>-a5*kSsObCq+oa}9Qw zu7g!eH8i`wbFQa7GxQK+#FyALdH^R@-t64s{K2^uwq$!bw~J4)m%rAz1E;3lg?+Vq zu%CUeb02o59&rBTJm~xxXQ@4mU8+Z&$FO7dg!82Hl=HOnjPoo`SbN@i0X6`%6ZeYq z7wmz*>b&N>j&s-Ebl!5_cHVK`b=G5t?tScUeTW^dkFdw}iSwzm5j$R=J72(Z;49~A z?3#b;{MFfnUA*sT&k1{Z|8RbAwmAQEesq3ves+Gr-k!kjo|GlowPx6N4XPr8IZoEdT3ILSaXV;(s26Q= zJoXqT$cb{2oDA#MMRJPV4||T&&T_77!ijfFmqVXUd#GFF3b|6Ql1E~X>}Xhq93zjF$I0X63FtZA5XC9js($ZO?wVkJhTRj@WaO8!n>kF)h|l)s0a=+W|Kd5ipmI8xp!Zhu)p#;?Bb5csqQDhUi>)u zwtPpvE7!~ScT$Wvbmh+&$ef?q2R#cW-x`TjSQcb#A>I zcN^UC?mq4WccMGVo$T)GPI32hr@GVJ>Fx~dpFiTxbZ5EyyR+RnZlimEd!T!ed$4?n^k!@fBEGtb={YYp^nT19lg0!SdoASe>kQ-@{GIAGja78(@XGg{@vZ|{=@yj-Qxb!{n7o&{n`Bm=R^wS z;6iX$DW#RCBC3bVP?sa~qL>Z9^iU)2w1O75Trz}jh$+EMMK2CJP_ zff}NAf%Vf+HB1dxyQ&dtH?_MOsftvw8l^_75>=|AIEON(%2kD`R8^`PmQs7FF={V0 z7N=8=Q#Gm5(!4@lseYrbQdg^M z)V1n5^;`8jb-lVl-Kc)AZc;a^Tht%at?D*)yGp3F>JD`$PT#~{u==CASKX)XR}ZK^ zsRz}c)k8Rw^AYu^dJGn0PpBu=Q|f8;jCxi*hm$&AP%o;N)XVA>^%u2Hy{cYQud6q3 ze&<{G|Ko4ORq7q}u3E3&Q}3$})Q4(=`Uod`exg2A8`Wp(bM=M#QhlYqR^O;^ao*=9 z^*8mM`d{HMDL;tu{S?V57)cu5!jpG9Xs?z*oPm5efbi*FCXLm z`bu4;tMwjwPd!HOrN`>M^*CLlYjvHj*KysT$KzDe33{TQq$lfr^%T9Io~ozm>3Rmv zDxIbGr@eIDs1MKwVh{abeTY63Czv+rdAeD*=vF;nFTi=GZTc|1NVn_7usG_}OZ4Ho zOD~1((Qbvya`X2p9eXqVx->)Cgf6@=a;^`sSJUyZx)sN}N^%MF@ z{gi%MKck=3&*|s&3;IRNWC2Xj^*5BxF^)!~?|Piddn4@EZi0otEwEv`)w>OL1PNFY+yPsHyI@st z4_g%6=iM((_8t%qiir0o??G{c_=opr?;-DD?-5uPJO+z`CtzFfl=rk)?LFf?>pdqf zhOO8O-iy$Nd@KGc?!_AK95F=fEG`lkiVI-T)+B!Cy(G>TS9&jduZYXVW#W48F9LUc zizi`)_A1*wyy3kG`?j~ecf5DK_1=516Z*jW(AyyHgU!&#up#;sRz#n9pTlzKOYbXD zC^E!p;uM^ayhfY}o3lg3XWrN1MDeKijrXmnfrZf~SR8%leeeApc1Qp4e(<)y?&wGF zC+}zP7cUtR5ho%eE>0-c5ib&n^oV3cG9y`$>`2c@P9zuS7Wazuj`WG-NBTzkMfyi} zhzy7fj0}qG7}+T@II?r3ATlJfOQbL|G%_qQJhCg!INmL?dt_v!C{i356&W2ViIhg7 zkuscoTpp>2R7R>I)sa0Sdq&2u*jlFdt`B>BhndJ5;+{_FfWZPi!6^E5m^yg zsiw@DJlU(6*VTGNYh-yxTWP!|Zr-&O_FZD%QTvY3yQH+P-uP?Sk92j`Z`0LOS$_?~ zM@uZ88vo7saAs{ZQnR?JxvR4yQq#Ghv!iuUW=&UH$AYHj<;z+lHF5K1(n_kb>YCfS znwKx0-`=`1v#zCcSyOX!YX?fh6ve#y<|ZJ*tE;n#Lrdc&maY;m7w9hc;#^!W&cKGs zQVUgUOJ8S8QD>>Gv!$;yrH_`xGUI94m&R*tfouH&S485rU`&0fMOhk)#7#j>*0r2< zNoj4RDMmc*jc3ZT#-|FKJ-)ef@!}>^+|2RavW_y9C8hD0+Gk!vx-?$L;fSw^Ot7VyV5s*dENg3TY0a9LjvQ1}WlsuGYf4pD z=}qRU^d@uRvL}Z?)MOOMP*%oVLN!@>$}Al*BQB+NHQp41XNtiyC4|SIh;bc(85M54 zV}Z@S*2YzN`vs*gjn~`it+%<=+iI@2DC!M0Q6oepQJ<$}zF1hXsf+9V7It=Zm`v&| z&2b-_g{rr_jhFP?Z{c!?c-Qj9?M=(Mj8ltfD{>E*t7_}Rq086nIS%z>K9D$BTvimVx_iq4+V4R2|@ z!s4y4_$n+*s|{(TRSjw;WYe3;gqd0~u%O8@til$jBJRx!YN@2OzKp@6XgS=H;{Llr z&q{GUZZmAKgv9+?ut?+ap0l>*I$GtdFxM+sizdd9zr`O~#c~-fZSk*6b87 zGG@25wRW{GZCmQiUeMKaL~B-KD$=B@vK8MD^BNh%1UFdeDzhwWsPYbA^qB{AYv9$< zya^n0=)_U&oz3l2Cf9p4qn0i$Db1?kaO-BKu{)bNRTB?+YAeE?lCUQl_QV1Y_44e= zt4S3ph(({D0;K^U923r~rYam`=qCCg^M;C?8lQz>Kogf$!yF4oq^Jc3>#<{q0kZ=M zd(3FU&fL_%!v3rpu3L6vq~UkA9dV3@h%Bv3m6C=Jj`0k1mKmNnD9a2h*3D8LAi*K* zhC6xjZ8EYpTu*gj-qnTcsV-G=^vof$FdlJUIq@_`=BCD|5Gl2$I@{$hH=bWv<5MDv@r_1n4$ljXbsW$uJm7IiZfewHzmf20 zia#{|af~;CUy%tD`JH8&4!iqyZ$=g(MOEH}ZPXCt%rGryLK=fD4W{;TCj_mQv6{#_ z+fFBR=XPDHRRFzZy&YpsdOOfs5>vA3nR4ZYM&2MpNN6Q{ynTZ(@Wlv@Hzf!IoF&W* zryP-G##DCq3J=7ZQKfQf(f=I+7T>>DUDZJoOUeZ zm`onf*qLQUwQvGMo;TaXn_-UKd7-h619E}^&%&ly;5C|{#uU@@LZhKc-nb2RR)ssj z1|wowW~}5yrY$w3dY+PKSxOwhP)q&+CVw-GT6e0K$xV%`A*|K5aWn-}4h&`uW{5VE za!l?^t)HhN@RySxqHag_8ulZdzbfL%Jp9!rT@6p8(9SKM8vkvlHYH_|COZvjva6t` z)GDZ{mHBB^e(c zoh@#iDQ>i+JhL^(&vL|;u+}eOWu!Gcp(?c~OUomzY0DnYx+Gf8=}V&3JPAS{-ry}@ z3bPiZN}0VNG~diz(2ayBQ;VeKYGG>mW9cbv$Xb{}WN40-du>5wqf%@Uq74~sJiVGZ zeUbsJv$NkiOJqr{Y&$H{X3N)R7eZ~p6cJKcnRQrtcA%>|dr^q~>_rQ@T3b8Xn>t$B zn!R?eTCbhUoZTLRQ|&0Hp`*;M4GkTo@iI$Stjz1+^jRHEOFEY>>*`#xu+{4@xH>|( z44Rmg(paV28mx@`B}BE?8Sn%vBP#**mN#Y&j&O^j-cS@Za)y%A_+=`O>a zu5R2xZ)!;|w?!%SvuW^_hT2~Ra{wzNf3Z@TwKP@Z*-N|O#pq=5R#jB~l2QW!N-UeIZQH4^g{f%pmIrl&(TmqX0Jn7#_urLzd5Y(8TZ0XjjJRJ1 z7HPbp=kl$2PR%yV^Gc+$>!RhnE?OQ4Jw}^qZ-o)V6)8?+tnmAJZv~GKS*uc!Mjoqd zwKtS|s~E%tH(1#!vkYsf_KsxqnMZbO`PF54Z5(sxVZpkn$#nbBl|X@H-ORL5mtSKh z9cEOiH4`T5DGh|EBAuP$6Qb*aK)DU{+jN^U$kt!cc= zO^sV2Qff^NWVLqZWo=q**h;hGS}1*KxH?NM6?T{lfz_r&fCfB{@#dRXJHN8bFksy& zj`a!;2ppS1qXN4OSISZ(KrF)&Rc6YN)y{n*Cy8{L%JK|`4C;YQo~9cL@KRrt@}NTs zJQ&SVIihn*6%8IcmtSFUnm&Qud7+Mh19F1i!NR6$z*}X4R;5~SUa0FZ$ycS-u3<%k zsemlgmoS`-NKuRtI#n=CHf&`aX|gokjCH4KAve|Ugs@f{MDEN(7e?l{aYSUksZNDX zs5!&$g5a_pP;(|)4$UqRZJgBk_)f^T?*wY!i9)f{bUMvBX<&JJ}lJ_u2g;dd~8pih(OT$(e3t_4mrG$2(E+pRSB40kF(X1kPTO&tnS z_}xXbng_pXrW~7Xjl*S`-;B8~8ghF(G1PFZgo=_AngYYyGc^l_PqpCTwJuwTSB9As z8yD>gz-95I7**oe2hEcKpoqkbfWi#FJ42XHm%%|@S#wTWM`p28H)fsGiTTb{6;lW1 zhx)Z=I|N)vON zjOONWs`>Q5dcQeifiKn>X3CDRoY1Tt-rVrS9sZuFxjTG@iBX>^G=oQ|qI!$aOg;sY zDqAVhkQ18Hr+_#y8e(%6y2$p{rAx`3VI~N0_31uU;8?#1Ic?$L$d;XDExRq%*Z3q8 z5!r;^UoV)Vkmdt9+P=&JQ>X0Xqj=qR7zNl>1UrM~lVR2p2vh`=6Ix49*dl`F!8cAw zbHmFD_J>v$1draRIl~`X;PRz6H+@)Xj+jBk5==vi%_g9o)*Ot?4kpcNu?2#PheTOH zk=LAIRwL{R@(Qm*QfYjdM{>%}!-B*{q7gy~Vrhx7sCW3ihw4O3MrY7Zm?aCsayqxF zK3c>Cc)j0`B4_^7$G|1Oa z4wX-c1i#S%fD#!&iWC04w6&0pLm$Clc10AVC{Lj*_lZM;;z~2CBY@_F)=BVYbozWX zxyDko#C%#%Yzoyhb7)pe@aVCO78m3@oF3FlGtAnGT|vEvS6GN)xy2&OI?>jBeqaR? zBAzl18-Ntx$HNY2s6}P3sRt zjQwW1>66ntZSu(gIl&B+y_kUdz`3cps6id9ZcW)T0?3?TN@!39^Fr(OMIu0B7P|&b zpY&;B2!`j1AwN$T!~TG2MpSs}7>-Y?Mmve*_+H_eB!~1)n@)z1&{EhCniEVc!_nQV zIwcyZd1eTndxx+;MPq8(8H%SRa#)mTm2BBRKXB0ufz#v!Gf(SH<9wg=IVgkVcbkZE zVDGfqCgR=N4zrjuc0DH-D~l_!=QpJis30j!;327V9{ zkeCxpHaR-uaG$OWngDQEww(pACnuN+1n7+RBvnofmI0@YfRPR*6>roiY5t&MGnV_1 zIl*kfig0v5JT%8cT0Sxlir%;T#3R6BXCKxdOhJNpsH8)=q|0wle@4R4Il;6foH!^##)^RZ z!32c?`=rlOIILHAs$#GQ^A+}HtO~FNlNN(5edc1Yg{LnZV))5(n2?_*GVIR@W;5aF zpt4MxC-qlY(ntel{24UEF^Ga`j`gOsz}{&So={di>tR1{XT*%DSxL-ntl(|7_+n;b zr6h(;PwF0G)yBdtX6(BF$NLzFx8Y{f6ye5RDrUA6;b)64yv^=h%{H+ye%vgyc+|plf`C#liOJZ?Lzp?v--=>dSJ{k)} zgxmCSn?7#KZ!8x}Vhy(Z4K}^C6O1+3dT6le8*KUplfK-xw{qLg%B}pD`|@sfEK6d> z9I>R_%4c~r&RqlAA8WH}$4|HZ+H`-kTRb#_WQ?t8~VM6P}gwlu~p@oTd^*)-J3OVj@j+}m^A^9S)+$onHBpo+l`jn=4wonk)Lf2<+eE(;|PTNehXh_ zn^~Fd7Gt)##w=ad#5@+W-F&%)H}>QuF=IV}x9vt^wpqt4eKDUtAHU5%X6cLB?%7(r z#H5a`3x)F<~#^NzHPk^&{j7=2$7LT!|LN{*lSX-)? z{R2d-*3w}uipu?Awbs&OjFr%BTYTof8Sq>Fng4FUZ~0Yc`Cn)2!`N)0P1$<4=H)SC z+JbOf4rBTPzb%I`R)OE<8@K6=F$=nN%ZIp4ZwxOGZqvst{c)S#7-XQ$Sw1w_^w#_# z)?oS2VAD6)^bIC`xt&&(+v!xfo!*rD)0!#^Z>%g(PX=Fkw83=OFree^+wbl%Gfek) z>+Z`cy2V#^^V{w}z*n6fUtXW?FSEl#0N-u6DeDg3ke(h!t!eaPxtH$mMlUQ;)8o6* z7pvx@Nild94hij6>M0L9d~Jc6R~_Xn!Z=38SWcnIMLCW>TIo z0$P^_F|?>ndBSO|MS-E9%CL&Z$uc{wF0=h(nVGgmOU?8j@0uP*wsv)n>RdWMg8#ws zd)W&1XDnL?lR*mUF~4(pmvOWmVPKZFt)zgArT7nD2fJF^7A#!GKpkxcQ3hjP+SW0@ z2cc#M;U-6>K~ByL#%^4Mp5X{T!wpd&VpPK&STkpk8;3^@GqN>-6A4=+58CO zrZ-_mJmE#W!3u}L2>`~pY`&p+85No_l7n%=VQHpFL$h%)W`bkf1ZT06)8eNjCI`5v zW?GCb5D;qk2H8!8=6}>Iu|p|>>!%SVQD6( zq1m{IW`-l08P3qmPD3*TGR^E_K6fl%+{JmYgYqDU&4ZjK596Xd7>@E_IFkoEO&$!$ zd63KSrP9ohO6-VSVi#s5X5@~Rn1v(WmM@i-FO`-rm6k7+Jn}&CWcXQH9?L+Da=r_* zSw4(=X%@+bb!Rh)){`@@sdLb*4519xXcuqe%l7inTPGn*7nx<23an9ySPnJMtS64)Cvm&3((63q(E|(GRP2*VCSpi%ey*FHJkPWINP7p)T{Qkt|lAF(^N$AG!_2{s_>SyE(IPN zZTluO3kI0Y+bBf<&Z`x?O?cEO#b6C-`Z6@W9<7U)EL#PPjIh*bPohz)O#<p$%N82f@+B=D*%md+E$mHwyzI{j zkcPZmkJQ{4ZMm7$N6YIfGv<@fx6JEYX=1P}S=QCow7}9`4s8+pTMUWiMjI3@x1CnG zS!Te`(_>&Xj4drK%OJU2+yntMMJcWD7Poc4ir8D)+T7XE5`py?QAA@q3>oZNyJ;~* zdnwEWtQeJ);eYD1w#OU4l90PJMf@pJzi$IFzjfLZPLhbmaDN z)%IjXEkTZIYUc_;EDHeMbrxqGrKS?%ZI+m2B{ep#24STcY!wp9uMDA8eS*+KyVFDQ zJ`FL83EJI&59IdwK3p+a(HO=ch0(@OO&(dO+HDz{LQ)abTWu>***lC;B+TOV$ z1#DG{WmW}PX4i;iR;5*DRiI^7CsAf~4P{ohP-b-tWo1=7Q3I)5vw5L<>mE?rJs=hc z1Bz4`j^(=KfSjO0!|`0JCO%+gIG*dbdq7%twH#|{kA^*U;dETp;n)iHq7)M{&@RyiNF+L)--#zgC?$n=J* z)fzvck)kWLp;(eOXYqbHHU8#Rn0#TGW87S`SuL$F`RZtC?LuV8&5`}O2bePT3I}s3 zZKqX1om0r|cUlx)9SSeAZv4$6fG4*PPi`Nc++|iq7(Y`M3MlCwP~APCEF8djb`MCy z!MS&bFgSW2(b~1Ft+}Zk*0s&67^Y`hkig;Rbi-jT-a=&4p{R0yoPgSdGmG{?*hHMo z?1&R^E|7zBhwj4j9-I~A;Pj!l@q8C2(>OSf=3_iR#Vx*$*o;$59h_lWfoGL770>B7 zW7NS3qu1k!o9ysR;FdB6XK22T=bN}G%E9TDWAGe{Tc8}AGr1VgPTcn7;9N%>x{lKn z-@@~Kw@^6lFt;4fO7}oK4|Y$)bG3Uep69!l;dzC751#kB_v49MH}QN_X`GxKQN8f& zqd*(Zog0N`iE74kzM7BcLUkCPi`CJ19;;5k6Q{l5d5Ss}&(qcEc;dV_JkM4a;CZRK z6wk}m<#=AHuEg^ybq$`^sT=XUNr48O;dURM52(lRd;)j>IyjpR<;Cf2Z{qomdI!(< z)kk=KqQ1iO8}(N_zgOU)`iFLfLnp1_*+XaI*;5a}6X&PlIb83G=Wcp8JaK{=o}+XO z&pq@Wc#hHFB+g75hi9#Bz;lA$7tj6lG(2bM{qdZm=iqsOJ^;^ybPJyI_2GCPp;zL0 zH17R!aON569cP}c#`9Et7M|zp3-P>ILlSU$*-d!fs_(@U=ab>u)YEb1m4kDfzQFy6 zUqyBmF3u-fjB|9Q@HkZBR=A&q#A!@YICK&do|%!MLNXkk%S-Z?DW>3rEVsU4@=TH6 zysE2R3~g^()`2r*6-g%K)WyriSz0N-19v3kmpEaohsape+SMVd!q3G`U5muHwCAG5 zi^Rmmp(n8Wv=Hqs<8^`2LmoXu?;`c^y^j>F`^&lwug-bxc|i04M2@J9$o{A~oLxqA zX`J&lg1?Y7p>cW{oioS z+|G$lAwSJy2T=Xredum){-8X*Ycu*B-~EG#P^o~QPDk7R2RAyWKFK%PU5s;n1;g(Lb1;$%i-wIV2y4-%WnY{_rE;Qp6NkN~89q=m7y>CMX<% z{772qGhi#Om~bjf_%i}j(I=C_QDZ+MhrtF%iYxHva~Q=?dg9R-N*TZytVC-FKV)Mg z)tId{Btjh;{)praaGTns&=-@NICdjHQO_I~!i8|)!uLy{;ZKrps!bvVe}>T0q)V<& zK4W;!DK=8MAoH2YEdVhkAep2xGTwbAAB7sZOcg5~Zn+$t@g`it}rKL=Y6FEog_PJuytK7|b{bj!!YK%8*-xX8dMmrsbHIO+09z&xd&68&-F<3g@UlK!bBIe6T`-*-=?0}Oo|AMsZ z^g2<9^CyRaN}NF{cEKr>BTy=wL@5ez7Uf8ks>mw>-J?95g^yDyM}tQtxCgg4?)#03 zez@1S4Dc~8CI+BSFBd!GRLTlq+r!%fA$xgyp@e&Td*fN-)rj43GG(3E4QErv@f`1s z7b9^p!F*p!(a9>rc~(jo<^-VlhrO z91D4p*$>nB)pKah8nGiz{6~+45r#&;DEir4ys4iWfVQYHg62XZNtQ_#qmaTw(PM9d zI}^PU^-Nz;4^AQ6OHr#V1eQ$TIFltk)iS!ff>wbD+Y-4i^5HN#1nsMPJ0m~+sHKkp zoJPAN9E4LR|B2kU-3O%Fe$aMN0v;zE;&Fs~G4#VXl_jc;j%rgCy z<_%03i;3&h_uWE)m}_sr==}j)G)tkp{2z_spoMx8{AfNE#PN7e{7KPIhO8!g^J6|w!Xg@i>K}A}gknvQ%VIhgyAkn|#b^rv2SznmGFO@^k z=E9(%KFe?fkth+(H2MXAsBzB4Gyp#|f*=pVr#+TW{J2!?WDjwF*lw*JZbI zGN#QTxwSF`3fJ?RiX^^}zXUo0B`d_-X9I8%PSYx==b{zoFyuxvkzDvptD)3aYEW|M6;9)_kq&AE)g*I{dC%=ZB#%Wps}*5M&qVGU zfyLB!Zt{oZqsSqj!jNNHd$Y1?B>xzq0g^PBB*efWFX)_z(;*p>SmO=Ds!w3mSA{hd zt>yaQh5_hYaL2${tii^4 z)}Z}DYtVkY2F=Bt2?v2Yv=Yt6-3f=lP3zHYUXN;Ck4AVsni*P;W`@?IxoPXsHm?mF zq*ZAy?ps&{F1LH_;O}B@G29(q2i&w;&BYxIO8`l0)`7fc&0;QRF_*KL%RBfhQ8Ayj z3dO8d=*?P%-C3)!D{B?9S*wuAT7_cPDhy?ETwlK=N1_(lF$+hC#80L9vFRFW2{IuJ1gq@6lY}Ib7ePxxRC_zWZ~1 z@5nlb!Cc=vvd&>J*LQ!e?>w&W7}s|m*LRHTJHqvy!Sy|w>pPeA52Lxhb6Nk;pX+-7 z>mLT;UX3;}gzLLM*Y{3b-#c@C@5J@JGuL;2uJ0kNbt?0Y^Ntf`xMSl4JW2Od=B>sp z8&TFkm9Yk@jPB4tIBB4E!A%-xA(r$|WvquPWw{y7ax)T# zSYuVl8jsyr5p)@&~+meZus1ql%$uA3~sv zR6^=MzvFi|$p3F%7no^=!m~!ad6mKA6J_bo1X9`ahz7dN$Y#eyq}zge!R!g;*u(pnEQ!c0+L~~~3 zVfFwv!9}Z;eB@^I*)-zw2Q>e}qwbF=>jH|=HsSX8}yM_ne<40V`h=u2Yv(Df7{3iuP?bZqE+w?86aPTg|CmjJ=6SaDb3DkEQ$kzZ#^XHxJ|PZo-r4YaM*7gqc3@Q{QG? zc$v0ksOv%D+xnPZp*yZ^K+t##ZE8AIV*v&@LLbr~h42~f znfOpR^$eRKo0y3i>EyObEr3Rxv^K>)qS?r3z+c80p;90fwHg|eF{{9g&M&k7<{B_G zm?!bcx_(uzKqq!?(c6#?5#uht-x8H*Z!~It4;RfH3^$p(fZv4h@2M8KM$kqL_kvuh zjOlXZWAMwq?Rwc-Qhb#EJ8wJgZY4MW0{d3w_!qETO7SGA#Or!J_XbJnw*A-*C3;8xFg^hY<3xcoG<%f_2~CxN+`d zVE+W)9>dvdNkanvJ~#9tcH6J*bp|b4PgUp2=^0Xa6k0|+^xJ& zE*3lBF6j<25LSgN;a&yX!U?b~ycB6Klb4HKao_WuaQ|8U8PBKWt4Q@4Yz`;jZsoUy zru&tF?LGM(p6|hq*;~#@z-{fV+lIgnPBS8qc#~mpF^<5@*3K z@jB5Tcltgo2H-Z|N5ml9==+@52Y2|sEXLyg-Y>*t_Zy`|8SdECVhHZp^~8R#TFikP z_veZn+><*R?h;ig`r}U9W-*rTvlUs^f^msjB6{G?+M~oUSTG)o=W*&dq3P~ggrBHR zM94|%B)He8H3&ajoh^pr?%Hz@egSM6U3HY~j94T?RK87K?X8HtP2Gl&dtd|E12@?I8P<#st49F&sCpD3 zPpN0%eonmrH}0&(^Hue#7{#`c!*F-)8^~q7T8~uksrLYhTWj(B2zHW_U?;f|kYB5> z;r>Q_BRsmdR*c5YwVMF*H}yBMH*T=~4!M&R<=(i(_8&sw9@{N|#9g*X^^^Jun15D3 z!x{wDDn^6Z3Kk>yh`n*Itp|${ToH+o9vYGctIJ$bg}ZI@V3*Qc_eThBwZ(Ig9)xh* zZ438cJs57>Zwot>{1V-TaNLUvm=$^jVpqaObO+pxdnCe-(no>vWArfyKUN=$a*@?&6>iHt9`GmX zlY!w>eL5i5=(FKIPoD?(1^NQOTnKB@8L%e37|%=eB?!Ttxq!J`Uj_Ho`Z~C;*Eixx zwx;{zuH0JyiQ94!d%M0J^yAK4xbK7w>i+tE4U1n`qC(!#S3WEzvJSACb$~-z2Uy5D zz^SYQ+?jQN6Ilni3+n)5tOKlM9pG%%0mfMeIG%NYMXUp?V;x{E>i{RR4sdtY0mfJd zxEt=a9SU74*%xKAwzr%$fu*bo%wtX9IMxK#uqH5%HG#cC_C@)u2`ptz;7Ha47PBTW zn{~d^Sra&tHG%uG4sc)A{!L-+-xSvV&1CIgIcxu*>xH(roV9=Tto|MFP- z*N3%#d$RVg4{QJSWbI!bYyYOR_HP<%|E9C{ZyIa-%30S}&RV`a*6HQ3?k*3v-VCp->YE#UX=BF zQP%H8S-;np^?Mbp-;1(-Z%5Yejb!~^IqUbzS-)3~n{Q!>&04;4+GBLg_bWTb8-sPmezc^ccRZNZuf8Dd?#j@7D zS)PeeY@S>qkA>@Ed5wHgzKfCNO57m-E^arc?;JG;W5*Qtd;ETJf5AQN2(e#`3+&3o z?dmbymhOjBx+S1^rkEfu#2nyZ@rZa7_Z2^mJB6Rbi2niZoZTQk!pQ%r*eE^|pNlWV zm*Ok&wfIJSi*bIoGskIk4sZ^14ss55u7O4Wv(8Hxu{Ss$IbS$mW7Ph^`30l%L^)Zu z$h+LtG+LpB!0rwbPxm?Rf!&L-*tIZsHP3)-&W0S~SZGMaYSc9DKE}Prm!dx3^wz`D zOrl-o!P+hl_IWW;4C}iQ*aIns&0Que?lNIrr?E#+EV7&r#SYE}F~Y%^;e0Ieoliue z^BJxH{zB~LKxc(n#bC@ShRO=mV{hlZp+)) z)B~Ka@g@vd^8iaBu;j`r(qsYCx4<+4mdNA5@4);D1cc&M?CoyU-$FodCF-n7D-tgq7-mdsf#&2KzrrW zMhlt)scFRf0KDfRtOdV|@VgklOYyrFzw7Y3Ir%BtBmTKC@Jz~a$7_cC9{C@R()7lf z^)9R%a%sK8YpYGz6i$P~FW2qk$Fu%{SBOacX$pw6jR>(TMYu>m z*zJ@2CrbUR8ij6&{w*)-8d!^fl0m;fiEIg(uI(e)YJJYDS+1o3M=CYdw(*5Z8k9K& z_rK+WbYRDTw4#ueO|17NX(Nky+JV{3A&;|G@H^D-mk43IHo#Dwvkn(2H)HRC!b#ty zu^u<|lubOMnl@!22xw97OqyJhUBdq(w8*5B=A8e# z^7|Sv;QJvgKcL2x#ymeGnwTzA$FOY!-HIhj@sfY5hLPraHqyuFN@D6Dr;j<-VoTMYdZWXzI{R8RP z4B2}J`C}g$5@vLx#Pc69+K^^l^KQam;sE+R(qEAcB6?HS4)%l`ZNR^(DE0@Di!aKD zesLXK18Db?N+&$FcH_DQ9}OAuLV9DTVNrW{1_NEiEOHM_&38(C4`O-*hvz2-xP3ff@sztz=f7z{v z`(wbH-5=sG_XNasvPdMH3{6-#2NSZb=eBr2a{KF_tx~dvd8<$>Y2EM{8hs6Gx5)n; zFUr0pU8aeL{wMhlaOmHZct1`0JB%$oW}CkMWEW$b2>w;zuhC-KetO-QH0iy!wIrdFJn4V=5=Ay7xrXCp<6zjNr_-7P) zuZ^MxefT$+yJB|BbbNs@kJD5CY4)SON`7X0SDH!Em?5c0WfyuiqKH1|dx@%T^)Tf|&CHBle2Buutj!>^k{jVJl89!NbQtsvxlqN0IkNq#- zmQ(+BYQH@)rQ7YF{!^^~cJ|u@B8cCzQd@}-IPU(j-IjkP;nh}|~4ORBNm|Rc;Aa7piJS`&*k=OoOsQgfh`$aw5B4Q zv=YONnq9O4p+3d(kKp;st$|5S$(=1hc$H&={-YNph30whn4Fl)G~eg-17_iaK~HA# z5>PaP`fBvF_(vE0rwi^)=*O{F4`~6t;K?(|574i|iXQJ==q(1|n~C0%#t=vp>M$34 zqFHMcsW6L1s`uf4pXHZIN^|%!nsXy&3wqh7Fzeose2ep-){3zVg(Ga3g#%_Ca`R^o zLsPSAVt{Qk5$*#_lMO%SZo>BHm%9i1&u%li&~K z_yI{gc(RelXzCG|R`3J%f&|N{jQkicVL`t_ACe<}zsVyW+lC>Q{#S#KDL(@+7p%*s zVIQrP0vR(d<~+|A3_Lx7kJ}~a4f-0J2i0AGA(Vn;-1w;m{EwN5_&)#bLjZfw_nJ6_ zd;ux=0yI#s$vr#X>HG+&HLWov0fYlP>^8CfGn76=C!~NV94zMIxf@f(+D3BWOZ+etlaIM!-}sjbWc)iw zH}%~EEgV+WLKHP4U2Y-4a)R%+?8wPz5 z(!GNpuSA;nnP!^Fet=NYX3;+n zNkfp&IPXUrp^`n$wuE#_1lkU0pw;jQ?!S>6_bKlaWyq0c$Zv{W5C?4me$Q|_q#T~7 zln8mnv@N)4{Y*M6^kq~Eq^A`;myk+Nw3$%2sjnbi8u83%X6a462-!!%Mh`Uop87(B z5KWtrGt~zyaPa&Jb5H2~QFcoE0dh679<(}00d&ut^Je-V6(H7=oiaXD@=q|oEk+vr z-xV=LAL&RoVCGHOVaExan6o10UCxQ;8{|SP>heKbia_59z1wi{3@`KY@uz>7Db38y;blRHpGN;2TyD zfHC&qA=IG7w-O{CQyu;Y-VL^tAWxRpZ`0_)P79z+K0h;Ft{+ZIxzNYTsPSy?3GPvw z<4^J)OY1vU;>$`c+#mTgBPrA?WRf*obYvB>sn^u3Z>svBhwoDz4d%uorHkU8p3 zb+61-_pAG5U)W5&DEq0G)f;j*^_F^DmckzDBUuLPr%iGXvTTy$$+AiAqqb-%Cy)h` zoI$ora;DDK*>V;vmHNv4^$vQVJODOIJIaG$i!?$WLRLt!88$~{vITZVm2v@Wi0WmV zZqVc9VS0+5D%+mG_c>Y~Nj5(6XtM5+$LLe^ zDe`z&_nak9fGy7zay41*$TMKMbAvpGEO+F2WV0jBCp#T^A=&B3%jv{8c?DUE$ls8i zh`fp{MC8?E8zQg4{{M;cTCxO@zx7V_PL;p&&hXBV*OT>!yaARSzn3?XO^3Y6gEfb| znd~^^Eo8wV|3Fq7@;0*9khen;Uq?T(GvuNGU)bxx2GYfBl}@DD4c|fkkGXS!ud2H8 z|2~g_iwF3t+fut=U8hkwbnY;Qnm2^t?#+_+?x;-XUb>(xu3hU?%L0@&pB(a zyN5Ded=ACo*s*MxJV@r&?kwtWPw|zC#%pMu1}3S!kr-4>?dp7TGuCg%aipf zb?fx0ai_S`1)rf$ojcR57yMcGIh8+KpBndhcb?$$^{I0gxW5;Cp}R%BZ_+1p-_obT z-KtMDHksw_Hg}h-I?Xb(63fg=_mDn5_L=3*>@$bTKJzKH{4;%qxu<2TS%aJG0fSb$`;Q28&G(i_Orh^eSDgH`E*I>apHTV7-~bdb7YY>&+ssL)z_P*>K8I zLhsT7rTcmN3$w^uagvsvo}+)-b|%tw^=Vsm}>>={S>VC zQ?TAorDm~NZ*Qhz>YW^(BKrxmiX0JsCj5*rr-f(8Msa=kSz*o!&lYUflI7t!iuza> zej)sVtH5$Hz;bdZmXpJ=oGiz3azuDxc%e$_Jy)vtT&do3rDjW6i7jOiULIbqHm?Y; z6yEGAYxMqKEsWV!7K#ddRlS=u{m6H>X(|mt>IST&2F!lcCik7#k$0g6f?5~d$|Bhxd0ovO044o z?BbHx#T8%?mohpiZ*9>**+7|>Ybtqb@>XHYwyncybSuX7R&NpZ8}uG*(7T~!3$a0O!3Mn-8}t_cUjK)xYnJFO z{*U~}1e-nj9H`qu?9mIbNAJWQy%T%%gZ=mY_hqwgR_SAcAZTy3=Tt5uU^~11SpB{Wu5p}z;U!RBl z`h4uy7hu1BB=+k|gWm_gS6#DWufd9a3|8!)2+fLpOjxc6yhnwVVWnH4IJ~uj>%uz0 z_2E8(&BlFX*sRFBE3kAQgQffQa7MUXmhPVnk8%59^?oE)@8ub*_Y=aCTwkb<=$cXd zJ}7<(6n}{*{%3_bD^z^d@N=U0eNgPGAP!i}M9p29DMUlMF||De!p=u^=BCD8po=zaow`U0qbAJo4DtNH@gfD+b# z6l*|n__gqBYRzoxOIQPzXbreY7_+l42yYhk@59zz^>V z?^a1$2?ADvK30Mftpwi}-qrwL@rZvQII_$Ck=BDg)`Jx5K?&=@64rx0EcH|26IvCP zuqu?WD)`|~wI1}b9+a>iEM`3jSr1aI2gQnUyj5kM3!m3q<*fNrtO|Xs2PxKrqr+Fj zSKUfhg~hB2eW9%i2V&)aG^;`(t3ny8LJBMYBCPxiSRsnSKZSo%FYku$sz;Im_ki-zT3?G0sT2Y3} z0^U3U*5C=yf+xTlJONq~`y}>}Rl4~DbmI@ufdsHhS6%ZZSc5M?OJZ?iu`uRQ(2Yky zk5qzi2Q7({5+?~`z6af`xO4D5ScC6DPvT73G9IeccfHy-KZF+i z5V{keOMFiDjpmK825*E<5xsgiJ_#-OBurtQZowy^Cvkq_eDz|U33Cz`B`(tVZRH-0 zm%n#9$KtKAU17uMjt(2_9kg*kXH zw6ONiNqjT$O}7pohB=8_6Sum3-~;9)ZcE&z9{)M<&uZEH8CvjX=*6F*1^!@8;`@p3 z>$>v28jNG;!?$67d>h8%+i(QF4g2ETkjA%RdBUQm?vHQ7RD2tT;oC3@--bo_HjKl! zVK%-EGx2SxO<2^_PvYCKKfVpq@NF1|Z^LMO8_Mx*sKB?O5#NR?d>a%wRk2f#!?$4s zz6}%bZD_@}VIomZ+VE|t!nZ+@QD++>%)_w5pHh{++GSFhC|@_#^b|q zIGkS!ABI`@FjOahk$l#j056!575x^qWBv?n@P#S-873*3Nw>H|S8{ym%aT|tnwaEQ znEQ zTdCa72G@f`LLZZ?nWRY4IwVS&(L_2W71>paWc4EXVAR6y(v0MIH`yAON%V*-F|bJg z))`So{ynhdz~5@qA`l=MW!4qV!pb1MH9I=fC`H;Ov!^q;ur%PgRwTpDyK#u!ERviM-$8k%E5cIU#vY9z>VcWJ2tQ~RRpyOI^1Vyn8GYnH zeE;8(#xRS^UVZlWf9F3I5&xZv|HC@@{r)YkV^4;o`)0PH_J;5mQwQmlbN zEc&WFduIP>mJ0TS+a1crOlVhKS%p~%>09monx=#rYDd~pJs)~nvwxz4cV=|SMj;~| zpD3m3+xu(wBo_6@=wuY}XPavLT0NNc@sHG&B7M-J#jKRAmg+@XWZru9;;S9go(%XC zR(hNP$h@D7*hV4yHO69Zsos!mksOr8?Ad>{@@RhD3@pom$ezkZ&nKeKqFyRtHoWgg zdR2`jvbL6qLkX5K(d$ZkC=^xUnom6?FF*b60qYdYzl^EwH z>Gur%mVcmTZk%RqoEt@%QIgt?i)z{k7>D&PG0 zO+8rzQf!LsITU2$w|Td9Uy<;r6VI~BTQt|)^}e$6Y1QK{i+?jN(oXBBk_KKjDS85J zz8aKca}Zr`TAa968uek81kuxFoXE5K1*I}83GrdZx5R%o4z;EyD*EGD5NP%7kM+y0 z&ECEI_s`})^TuB^Tc&-dmMqVB!ZW#p{qrS$e<^5^0q7`64d+X0xXs-e{61Xh6^4t# zRo*J;tmgWE@!xYHQc52wrG%70fh!FPgF;2bC<+=~h{UoKiDeRrWl9pu4p$I#2AyuG zPW`jjuz$^NjnQ9 z?L1#SULcugD4FNqyRzUyNj@u)e3l~lEJyNLf#kCyxGuQP`N%(qNd9@d+WD8@ZdVoD zBU$KBWT7?4LWdy>9gZw?1hP;MS?CC4p(bjQe;BgRB(l&Hvd}_gp+k{{79tBRKo(jk zS!lE5ej~#Pk_Wbit%4^?E?RwzKNp3p73wgbr)izZTTug@UAx)mdeVWOA8iF)=Cii9t_hu&d zW(d;cncRaiq{%apCJ#ZHJd-&c!ko@zPNy-a)0oXhq{*Y1!7SY~h>Gq^8vH1`Ip zB#KbtA@R(f(q>vL4@sqmjYq%hS; zVG>ATqIkm9NMUM_!bFjTJCMKZgZ!lh`AdN0WgjFjQDoWaNLywgTPa1VQkoYrxD=^M z6fw9OsmchXDz!*eMj%zGMXFMb^rRE%Nfa5l6zNF`(vwo8CnZQvs)-akj7YIlk)%`; zBQ{Np*g9gwril?-hlHgX35$np#Y3LrAw$^*8A>TKlu~3UrN~W6k(hW$OeP~SsX|ub zAuDM{RuUp5@sNyoM0;&RKBD(WX9r0>l6W_{NSdtqB7useXS{_dy79S2Pt7LFRxR@u zG|RwDoWH@y3GE*n6VdsbJe!S4(P+IK5b>stbqe^ z|E51>*Js?b#T(D8%JOs9N~%9Qjc%my##h)AWA^Tm2QgfP-Lt*=r~SwO2Y=0bIEICq zEA!73SEi4}5qMPpW%a0eOzT}!EKgy!=$GwBGIASuv4MAgkPiQs-iiE?*t0s={w`N$ z@7%Bc?`7_nLD_F^41?qH^Y;uk?lStQyxq}$)$E;!-j?Y7us5Nfj74wFz;jLdHSn>2 z=-f@&P}s?L=Vea5yWC;}X?2KBy_3v5X(!*6=AC?(AYM_DxJ0RbC*MV9-r1RH1xVrZ zPrD0|zsG0Zc|$W+7-ol74L4SeorMoi7TJAOV^vXuRYeW_SvB?)0hSaAEGdRzNs+{o zq99{EVLV(lmJwBOa@ANvgxEo(u!AVT4x$h{h%W3P(pW&Gv4H5p0%9%}5Oc7A=)wYG zE*217SU}9h0wV2OU$k-B>_WU;$By1w;iF z5c9BrNMiv}hy_F%3y3Z(AktVsbYTI}jRnL!EFc0bAj+_SD1&D$f?KVHPpySRt%Wx& zfh(=a7jJ8R)P%i%Q} zc8SF|48F4(zOx!Dg8(aoVep{USQ!k%vLL{Ypa!nA8ruOM+kpV9fnit;1Xv9W!)l-! ztAPae0>iKo2(S*Q#yTLtIv|O4z%Z->0;~Xr<;CKwM%zCOezzLk{xJ0U!_eVZqr*?+ z>FulGgR9ZThiKzd@Wj>V;RCepRcPJANZ+p4-FGQC=4!O-h49VQXxHbWS5Ko?uSBCh z7hU>Xbm?hy>2uMgr_rKUphZukMXyAQ-i;Q0F8cGiXwK)NIj=)=oWr zmRF)J??O*riJm--p1cAL`CK&QmFULjq8sl*D?S&kcp80p1^VzxG~wN7!n@FcccBBX zL?e|=?-`!}x=c4^CMEjja`(26NdoFtKG#c*;G~V54yyv3vu0+e7M$27+etRzZ z?Kx<+(`dFM3$!$v?Migo-RQKt&}Pp?o865by9+(`Tr}8eG}v>|UC%{#okn-vjqW;) z?z$VTbvOFzZZy?%(Nw3=R2QPDPNS*r?x&;vSDofL0loCT?1*NtBZ^M&>|p0Jo1IT9 zJD*7NJeECA3%i|8b~sTCy?xl>jAw__%noNVJDibdm~}R%B4X)m&SaaLf`)k-8s=tp zIMdnT%wmVL4?CRc>~I>~N;Cx0%Y` zW-@!5QS5C-qZuC0-ew$ooAK;z#<91V%&w-LUCm^6FO%85RHGkGvxlihKU{-;IL&^h zn*Gdl_A}$z&x~h3Gd`mewv#%?qYa+R-lm%UOf`F$YIMBQ*vV9D9lPFkFS6Lvx$9;h zFD}*mDl8iKSjAR~bY7c~6`4%^`Gr>I=&M_+j3iIi$rYO+92mY`8oI7N8VNX>WPwagkB z#i%vw=a989WED)X3hpizt)E#7CwLQN^BBdMjbh7MRM{q0yC&AT2G+I)R<#CJwI)`z z2G+AC*0Tmyuj#B?U94N(tXo~ITk~1Bnpm-#SgV>?pXTR9jGfNCe{qaVO1p7Cf1BD){G|BjA*rJV6|vqwP;|SXkwjcV1;O4 zh3IB&=w@wbVr}SRZD?R^=w@wbU{z>fRcK;W=wemqW)0|O4QOBuXn^`RK=+%V``ys} z2IzhhbiWIV-vGt$hT=Ct@w=e-4bb`~?3bFL^4(DO2B>)h)Vv95-T*akfSNZ!$D5$q z4N&bS=yg*+O8s!+VYdJY)=22}EGYFbq*e=%T1632_kn8f2h|>xXEn4h@~YuTsun=I zJCIQ|Lcz5hUou=Fgy`BT5?u1g8L#fN5$aPTUI;2o( z=yDxWs5I1h3{t38X!IncP_0nvNl@xBSoMs+o@WG9dni=93aVWP)vkqV*Fm*wq1t1R zNR5MbPvGpLDNyh+$fYJCmzs=RY9ex}h_a92?4l`9_UHto3MhLBWpBc^yMmoW4Hn)N z#5}EFS5d*PqJn6r6+}CY&M~TBCFo=&sADClVGM*=a)TWt3r8u#ciU|b47VY*`>9x{kHA6wYSzjtw9w00(X|EcjOf-O|*8; zcyoR1UDrofu$>=%f?8doXjcjO+nBz}bQ6(;#I!)>>uyn*EV7uTFG-hdRv_|d)XFsB zqdVHAgvn@Z4;pDktdB?=GH;iXdkLYn(4zXkW6j$&?Y^6xf6{eE(FIHo^?R+*HV;t^ zTR}hWpPjO(y+7-}>DK;Y{==EStn3O&fVhF(k1Lw5{`>Z9DbjclSlJ&pldCdn)$UpG7M$e_LI%J;g6cjxNiM%pL!4bo!Ax%KmK{@2fw( zY1X^R>xslcA^98YKhLwh6IS9w|NbVkq(1ZCAf7cF)c{%9hYn=VGObP1iA$y`OANj5 zinC!eV6_D+wua56FjnpjX`iix=`;Qytog{lW6@2O+Ps*)A-ab}+4vJ5J__{pTh#j> zh*F@)QhC(o!>fKo?w&pYM#G}3&1-OlJ2vlE2GljaBI;^Ss%A%;cg5S#|84SZ|8-8s zzH7aYjp_N=HU0+`?5=cy@eph*MUv{94U0vFd5P!g z*NQmtfP7V>`&6X(P7y^`VeG8T9>Lz0%xbgC-BecpKUsObqHo5IfoEIKHxxEwzXLtc zIkW0%V*k1Weg*bB^S1EL*f0J5m{cGu{kOWR&HJwF=`R@{(Dm+q^1f!SZICiHce7eLK1vk?p(gFVCPX$6_8Q@6N?7MzwdJs`rS_TaipeSM~Z)Ys{bx+SLr20aDk# z!=4OX+eoEmL1y+<@ko_tc#8yU<0#P8{Dg}3JpWP8$~&5cXk1o8e|Gon{fuCq5Z-`{ z%{r7a${jo%aP1MFZs$(sS+oycb60HcN!&G0Bh~48{Plk#K4jmLz3;oU#$D&ycggyg zh)hc#v)0EhZWampn9ZQwYrdKH&05>qkwz-5(*q>ss6)z8kH=FfvW~ibCwR}*ITisPPi07`D|R`}JCcW#;PDjM<`f|n zDM2bygjA#ismKtdA~i@wh9ecJK`JsFsmKsKo(hqTl;ZJJh=imR2}u$ONdXd);yjz3 z;yjz3AxKDuA|a_pLQ;!_WC#+HVMs_uAR!rsgk%J=?;%J?YLRKwA=4;f-bv zc~3L%HIn1@W+cLm@?G!3k}VY7UMSdn*K6@z??Rgz;=A6J(W#p6dKa2ii>`62V6%A( z@m=pi%Q^wc@&vT3S^2Vgt*4MO7ock`MAuq`u5}z<>s@%Qx8-@Qcj2`@4X^b!tm#6$ z)+gb$-i6otBy_U@Uh7?Wt#_fP4Ks3TI}a^|wzdv!?Krfx4d`iG@mG)J*E)wop6VUw zY0HpecOb>?K#JXp6uSc{b}Lfs4z#kJXk|N*Xpcc3I~lol6>{yd$hE7GYfnV3-HJZ8 z0qJ%t((P7su#=H-Pt22Xk3q&gCL`lEFZ5Y?c7wC>>;`A$*$vJ@H(QR~;H*5m!C85B zgR_u{w<8m8M?XoWKjcD-(kxceYz0`s5IOasiP@X5x$9g>JbJU-Vjh(Yw$yC-6n@LfahX zo%~jWwz&{(a{^!V;rOC=;fp>3U-T}t(1rM-cj1dZ9AEUVJYV!Ke9=R+(}nn=*W!!b zg{C^h7rhpJbs@g!!|_G$LU&z=FZwim(bMR$L-g1M_@Z~=i=NKYX@~ftccIx1@kMXL z7kxaw=+p2;@4^>-U$hi$87+mKI9G@EJH!_~m3QJ?3SaazzUW;>gNN++H(t$^MBN~woG$O5N zL^{xjwBnII8ofvrdXZN2B4g2|PezyCfk*mibR->kq&K1|=|HdEiN2&2kMu}u(t&op z43G2{G$+(6FQg zoJX3NDm3tu(Z_V4j~R>4`AB@u8_~_QqMND0=X?|znhtdGW%!&oqOEB~GvA5MrWKvd zSbWZ#(9ciC+q@AiP6zt=$#|QOMx)b#pLr8{omTWZ9q4sB(Cf6KrJsy;rxh*zWVG~? z@hxvgS3eow@y6PI6J%>P514z-T0ZBeHFp zw;rR&?k=Og3qX$6t2)bbgXmsCz@%Mh%6eT-KU;$<=IX;nxCS~Sj>7{?JLLpp?M-yMiQCa zJlb85OzaPFt~IsCe|Y=sap|~VHfC*%*kb_M*q)R&XD~OnL3bJ^#;uqdubgoVxN6 zb&3&t2uKHOdWG+*)h%}ZlKyAuXDPo#ZoewvpbUa?rOYa^#m%iFS(|v zQ!cc^BA%NECSxQwlEB!x9RtRg$=%IAwPCbjo8A<=JMwZA?Tb7HO#fmMyC(UDKQG## zsK@HvPEadyHO!^y$4yrEf@rA4Vt-e%bhFIL%DScH;|;R0KBv31J#!@%4Z*Hc{(M$e zIscjQ>V8&mMn)NpY&XNUQ<3enHP{^c0$vV7YOB%#qm^nvZKj5^M9S(g~>6i^ljzECK9kw7Z~~ z=h2%j8k3oEE4C-|99_MY{{Qc9&-5PARStd~5q9_UkbSrI^xAc2O&j;JzD9u}KAdM; zS_OMAjf2uTl}35=KcdolXGDP_8XBdRC!QW^lC>N$KRKSX%$>|>&P*E-{Z;5+k?wI! z0diNJq3phElXUDJoxl5C*>#SWbnK_D2QP*N@?3b|E%yGZ=#0xH|C;SKNb<#6Zbq4u5JGFIt}-CNVwjR z)ZiLYIGv}pV)8zIZ-d$!|mE*k96;8&)nvAXm8x%dD;oj@&fI9 z=X*)*Zx8ZHWH)}OSE=3Ur@Rr`g|73O6Q?E4^v2oV(wk_zN^g>OlIMDpwR=3@n_?E- z-c;K$deh97+ncUk;?>@a#Px|AyxA6G%$ut{-d$d|?b*Efwjc8rh>D+}Ia2&U?`H27 zdG}iM%R=uC?+%ynzN2`czD{huQxeC!G>-|*<4;uPNzG;`xRt$)6;D;>o%bg-9Zc zkwlgti7dfCq>#H(%3Uc#9$B8}A5zX8@^pvpRy+6j_o$tFeZ@BPzpHzeK zD9?BoScJU-x?8p0%=6x8Ce10MCLmThI6y)=5$miRU&)4&AOh-OnkH1u!cc7kk zAdRekA+q}RJX!sC-h}a3hZiBcUKCmc)m~)R9muYGkzIEpyIzd!x)<4X2eRwlJlS>c zF0$*+JlS<8vTGmNb#I>Rx)<4X2eRv4WY-7h$*vb8yY9vRDUw?EBDLW(}~bqYy!FOupGB-M+Er5#DCd-EjK z9+K(tjo1u67Gq|iM` zp%oQXaZ!7aLRTS$?m-H@A5!RgC~q~k`#ngZ=Rt+{hYI%~g`R?^R~lLL1nBY2wd$>3XEo)zI`dq|*zLPWM3B zry!kPfONVF>2y7`z76U07$|-Z(&>3fr>mg;^-%x)kWSaL225cMs75-ykd+{fjJk^T zpa&WCLS)nvSR2wvs(V-=s*zOJvrhD|PLv?8?m=E%kGy&z^6Glz)eDhVFGOB_P{LxO zFGOBlg}k~4d3C*3m+$DQyHl%6J@V>>$g9U7uU@2+BOY>#h@Rd{6ppF*Ff`!9Fd3h- zRy-MMh=n>Ae}<{}GmIq)$55hh)Z*1J4X=iM@M@Tq7lmUO9%*y%ZJ3I0!#JXF48_Bt z4mo)dQ8!c#5M1=Q#10uDwOP@ks-=!FmHMXx^}z5WRF z`XlgF7=dKC5uoxKSeE(tFTLvYH)l*>p0PJzM=_I5#k*Zrff!}C1X_1?>%h&(t z^B3j6D%_q*YHVMscz#M>wT+9VYSnZC@91lhQ_Ou$@#EU<^L}& znEjgVd@X`u=1+1V;@8F zyV34clGrWEH(A{CIr*RZ=g##X9o2WAcy5%qvQLL=!;{39ohc6Li{U?rgW4#b=_=!c z#Pi%7-V$yS|MDHvvxnc8CjF=49u#j~oWa{#`TwM~etROJU0|(RI!W>1Ek?el*3MLV zQFxKkFNR-Ks+L{C+E#j1c$K23esgq) z!n*|D9p0_--&c%z4~@R3v1sq8@yOB}ZYJVad>ffC8kiX2|0a0iX2 z|0a0K`|V65gd0C3y}a`JA}(Fg1-*(A`~=Y15yM} zJrZuZ5$lhUaMML_(*b;R5qxw4KDrT$k3ycg{P+cp@Xn1`dHC?o`{a3^rif@T8s51P zn~nl_=OpI~6u>(t;F`z4HK*X3v)-u|>0mTmb0fAJ1@Oy_SZy@JFPFkE*TOFkhhHv( zUv7q9E`?uihF`9QUv7q9u7zK&fnOd5zg!EyJRDBB8BVzdPPrLQxfD*h86LS79=Qx2 zxfve00UmiAJaRKU@^Er!!3owZHB|Gg}1GR ztF6wr!hn}d!$sD?MV7-q*1^elYTljl5#(-~org16INV z4uJ=(ga@pH2Ta5LrQ!SP;QONZYIX2^jo5(H!uK^|12PJ}uNJA= z8qE2^P||oU^Q4d_Wao?G8D5I@q-f2Al`c*rHSP8Lif}MAQK&b0oZi<~y`eL7CdZt_ zetIr1)syutJt4R0$+$i7ea%9lN)}44X6J`^yq7*FczC>vzH03!yq$O9tH$k0?TiRt zpF3GSt64XPu^NV~g9+BbBdzDP(P`hT8~Oo06@|Zuvi2MR-7a&P80zrvPKM9Yf`K=N!FT>wZ>zu@mXtag{z zW)&!66^NqVRIv&aL;s7Q{Ap-@ntNXf%^wQQkD}gGAtPym=2t@Pi=gvq=zKBsyox8L z5=veLC6A)p426bQLBoq<$@2k{bC~405{f+(id_Z8j-uN{6uS^wT?LgcLVD2zeU75o zR6(DMq0DJ0b1{^8D6)zsD03B*xdO^u1Z9pQ+6?769s)Hkf*Plx#!)PrDyVTWGKq*9 z7a@mef*Mysfs3KQX=v|osBRR+CW?L#MX_l@-p~XcZb0791T`*#4yU2RQ52gd-lZW> z<7#9K)pashts>+XIE!-*mlxKL}Sa0zKRwV z=zE@|^$E{Tiu7Dy=Wt4XA4q23;#w=;tyJV#e^3wx!;B?W;Xc zJ4#EXG4m4V8=N@bSDV3Cy|nfLN#EkQ2uq(OqUs56t^clQRgiosDSDiIBQ?gAq>f3Q zES-VxI-wg*XE&}@?UQvPV<-;xd{-qZaiPv5yjXjcwDv0hAluu23^&T6R%ffaeb}Xp zh8JzYetC>2!;NmNPEY)no1haD?{ibwnatJBBuRbCt%3LZbol2);MR(-OS;dBqbqWs(_7r+&Jiaz%3YCYNsMt{7HuEr zt`;ZO>aLNTa+a$} zCEX|fXSMsDxSh|qhxNXk<(}m2_$lwjQ+gLJaz7JK@+J2RJ^xp^=f!Vqaxd{zzoqB- ze)mV6Q|eb;^}q5B)vp_JdB3mc9UuP=yc4BOT&M4O`ktXNDzft5{Cnx3Z3gnJi2A*F z59a2>$K~xX-!gB1R}|M27nR>sepBJA`ffAG zKE+REp~AQLJ*jwF@ysk#_-+h+kS$mA2DoQc_xTuCFbL!if;&FOm1Uvmf9V-&FEqI5 zZGE>F?a=SF#itgpE6^a_6bs#YG#VyrQaXnH-eGsN5qtcrd8=ezm%( z`1Yc-LD8qEQT1B%ZMEM;?O8m(W{_?z>MD8-XhG59qNUjqMJuvU`AsF21Fxg#sBG?_ zGkJWRd!j)_>-5#!D2?X@=xm#z!9Ih{P|=mDe{InXN^jQpwxT=x)toKdeMJvOxZGS7 zJ>IWWUT;O4RpS}U&4acUy&TO3c%G8nm~;0x_ap+2bcUTM^L#{nJ>+Q+OJwrg?D6t`~acK-)6+_p>(2X&~n_^E%@!i>{r1+sY_t7k* zaXpcPBPe>yisN@CcaL&VNn1&0$#^SYvZ$oDWO)`Uelv#N0eY>Raxap{Sr z>x|Nro^7~1=sa>amR<>-(PvxI|9E`4yPA9cfF7jYBWmSw>cvl8>DJPhGuLa-YuQ#y z-!RCYy3)5}-1ZpSL9U*cvWo2UQWnp1`B~X=WzCe+vr#rSh9DSj6;&Rb-%r5UKUj$B2 z*()*hI#B;>v$>D1_njDuuGi^zk{Y>dyIj93!Q~*k(&6B8V=<@=oaJ@`^& z5_BxN8ddokL5zjx;M{WSL)WX1K@pua=o)Z_zuqA2f6iqWbgu1!yhXwBN>^plMS`yb zzK+~efR6_Lz*7H~Vrj8e-Dln8&JU5h`(U};5c_D%vmh1^wOu8&emR&eb- zq}S=}7n@s~jZKu7~1eqb1PH}~a4 z>VC^o_avA_VA?3z1AHa$*MV1ae^=A~Wx$t!|BI#W&%nc?cBr)&%>LedjpQ<5#-Q`Q zZBB+qDfrdEM^kHcRMM`+{{fiGtVe$X_)ECPOThdSxtB1Kzi?eYruRAE=lH|a?{xo3 zrH9(SU1UQqv)pu78LazZ z_^Txs@Z6*R=Y<(cYt#KIdbBZog?7F|`~L#o9v9CGC>glzg2%|7*z@YZ)LN>$bB-_- zVE&WxFIZjoWqSNFJ$~8yw91S&*!vzO$@RVr+(O!D<^AZ2T5ROrFKO*5%k?XO7gBPe z!S3V;rsVfX%SaFP6=_%VX)Vm7)@`KoB8*oo{J&DS6ik}(Y2XJanP&d$z>H)bZZp{3 zz?@s;6wg~g3(o;R2Rw^(g=~BEY=b}2Fn&l29+)!9%mkhcJkozcEni_6_fyg<7|(&^ zE;EdOC@FVet=+En4HAa@yKyU8&6?OdT@ zU4g!mR|Su_q|jNZRh^*ml7M+GncSI@*>lQIg(*FME|K|dzmjSpJ?K|*0^t*`QZlzn zMMZ8fIl<0Vq>>g0KAd!|teG>tNgOQeIm8o?I#Vu<%*bWpKBEN`CbM zLPupEApc4Cw4z+tXNzKBe4zgy=)Y3W_k8y%X_UW>Qg69;$xAExg?(E16nJI)N_&l7 zi(Q?~w9;oR)k$5J>a;1Px=!Kst_WU8S_wvUNO(O*O5X%83a2uX3@Uw@^v9&4g2Fsc zdMl~ux-f@n23xIPrRrCy+Ei-qWvlfoSa&)*=bG`cx~J{lTFrSl$ef#$a$n_n$Sa*} znVr}Azw~Wazklm*%Wm5IsB8T2ap+EHjj~h}KNHUM5W_>5=GtJFZ6qkj1(igfV z`YeWT^bZAJucwA31))-1?dyy-bn7fV4l()jO5Hky3f0lGq>n1U!-?( zvHLr{E$6#U?(?!Lxz~LIdy;>VJ;_%0UFjoVbU$-1i^F+Fy0drOFQq#h?_O7Amrk$V zo8c|>#(K-V<=#ARg?Ed$Kzg)0ysP9-vDv#`dbDS~A9!2*l=p~V=+E}vHv4YBMV8$s z%Om0x{|o+dY0&QRSILXvm;SXnId7!@Lq$gE2z;GzcVsYBC)QmM%upPZ%XMnqmBCko zwTgXmUvOG*fAD}JqC6Np99$7R5+;Ic6wzczuvJk^#s|OFIdPMMzbg9oDv>eCfxT=0 zSH7Y8b&~bwe~|-caFGo749R0R>U*}vc*9=!o;PTlfp>AH-z)cEZa#cmu^d>>lAhUJ zrNPmY?}^Ii$%OOXg>c&VW#bPUzi{@Yvo8gj7DLCxPzBH=l^ck&xmUrnw-rvj}PbPmu}f-Z=m z4KbuSQ_e@{UPrlyRQ8ogmngka-%UWb3%Yy!{YowOQNy)qCdNN8{wbx;>KoN~K89Ww z^rn@Y(Aj$Dgf?p#Xm||G-ZNF7)~*Ss zsi!0KJ$AwxrF~f(xr;3~4{FWkPPl2ptrNCcd$f5Lso`FXp*seFa=GWmxfjNe?yg2~ zdA4Qx$kn(eE|+Wh`WVMps6j6Hdo2Zefb?Ot{&WmI2J~bWH)Xt_ZIh3md?L`67aK`u92G;k_KuHnH^k71 zK-S)1BRC@}r!k+$n6DIcG0?g}aF%;UTyA3o?dFQkjz^Fi3lOz3z3paHxho$~m-&lu zcWNy6SzEOCAn9h|UXGzhV(1y5#|O#nkBiD}jmzzred)xIx`J9?i=j7SXnPF3orUsh zkUOy`zm^4F|;X$ZU?%1H#HuO%RLc8Q7doGzI2kKUqKUJiJ{kH z=pCT*SY}_J3X+*lrp>kc;3r{Ws9-kyzdxf-v;xEw@{DNa}ap5+=eB?;6Zs3e9eV`z8` zeRwWwioNHvFYPGkC>s=Ni*q|;Xtw(8u^JsGwx8W`26#bJ`eNwvJ%konxhZQ@H&+9k zwLGOaZe@84<@z`x#vPk&Wzeyl7MIKQaaN2ww?8!HLXGE=7?-Ir<(jDFDK{ziddmg6 z)gXS|5kvQWDD*&_`)~|BX3)$Y-GghVZ0TH`gQh&0k87Wi&7JZzknVm|W9s^LzrD;_ z5mYth#Ta@w3$>?rg{H*0Q(n#HPT3YiZvma!ujO2g53=Rrmi_h>F|Htn;!#EA4By^p zDNsucweq{&u1F;ovrq$;W}<;KMLsV7>aPG_RAdv*S>-p7i7z| zAFq~AY+u)YM*G?Eh|bGGc0by0wqHOO8`Qp0-z#I>Z9uvoxpFhxcEz>p+EnI-{BrHo zomw}wd1^Ry($r}NwQtWtQ)_mG+V3=6`)1XMb0Zve@5|O`e=vsP_SzrG;--$xLhX+m zM0ubAa?T?ULIc7nRe~6qVc8 zTHa)Jf%HEET@^z&#?W;!l&cZtY8-j3+)lY1&LD789~Jcc)K{jyKI=9?cTc^4>O(nP z9`sbU9JnW}#?&0{**Nz-9f{aH`_gG8QwA9ZZIfUu7+}N?xvMVaVrD+_~;tB zesjI$aMQ9aPfKQ@+;vQSC&tA!qH@zJl{4ICcUqgidWSPmXAF&sq46;k<*rfLUT_92 zkDS#9{(2N*5eh;B4$}LhWxf&79T29BUG{#V_kCqtM z8n-goSi0hJxjq)exW)aUj-|S`6)}z)9Vd3I%kV>2Mk`&%%^e15z05#b8wH)$FLyB9 z#gyAPNV(gDyVLsZ*sSks9dC5J-Ep6w2Rk0=csvi6%iS86Gu$)O$l+ej=5`hd+HNfy z)LD^*I(B5C&M=0e+?guZ49+0Y2&D#f$50JW-EPWFipx!lp{VXM)mRPApoKBCB!&(H zIwmf6cjx_`o4^@#RSZ28L#F~=s@#D%tFd-KIm6}3<)HP0v=ZU0#yN2-7sOC*EF0pw zgN^jMxJItG8)ICq#_cgK2SqiW&}=+Pu0c-$JuB#WgJwP{=#?0HJ%-+lp%2e}$I9)i zJ3oE+%+n&?Y}Ol{?`3e#aMP3emQ1e{PR~$OZeQK~2%6p?XcXo8rk^%_jkP!3pxzid zYY(CElv|{_xf&79+G~qj>5QRVAG2dzPu$92V_6=T%k^U;hG=ER8M7~)v2MCnf$5j)d(HIgmEM%ak$bk~ z=0QhgbEm&J{nhD=U;y-(^#P9F20*#oJK}Qp#?S*m5BF<1S3`4?-?IIhm5y=Ito0ui zBcNQ1r9d+*o&JHY!_Pv~-vZK{b{mxZ}Z{sJiRoa#7u9W^A2t-;CF0 zyfMR|+hS<*AkcZ>Zcw>gZiKVC7soX=#!#-kD`VWtF?21EwKv!ZZjQ=n%=ag4#b47Q?Bgl;fh+0u^kErg0lr!k@xJK^E2h?T$BHY^=%XVvv_VjK> zbZy_}7z$&k2B=6S2Ilt1Mdj+^a$4K=T}WMn#>UX37@8SF(_$!BBg$RUua#w#%i#=) zaK{K*zwbFp`$LBfz^(09ZZ)|%+^N~zSv&To?b14)qB^W9a!9dL8J^Y`K{|GZ)S5G#t>V z80w872h^Z)197Um?|TEvS$ny1IVd?uD-q6Wl*Fx6#!zl7!{fSxjdXlmBiCD7jLX%S z9piFPRO1L;{c>^*Iu>Y+pg#DQ2WCDz^ImWUT^~b_?ICm)<*rfPT#X24?VTI9a$yYR z`nV*7DKc$ zt94fUtQNx!fXZUrj6t9{cjgCit`Ahuuf4e3tg5&i?eQxe;~HZqHaQF2q zcPF_y+=FrMj@hBn;@K7ABEwlP$I$ivOKQ|_7Fw6ZmBWndp4T_ZPwTyHttYuT2K z+Ga+d>*MVh7uSf&%^s_q8htMXniNBIG1MGGQSLGNy%3y1OJZns3{8unnLyo22dl9x zE_YZAMXjvY?+xG#S{p;B#?U!H7bvBitkKs8vT9Z;t7g9~kX5rE1hQ%tMpn&AW&iH2 z-zi&C!Lo2yDri@ z;IC#Lu4ZPgw%p)hJgKf`Zm*8YQ1@yZgTIm|r=7XIg}J?jxxK}FCcIl{{}yKT7H0Jp zTDXN?Zs96!p|!t~-ol*Uf*;-KR??3=^iHBybGpThZ?VQO7&!pr6$}C_E z3j+CVcnc`Afb#e{dJAY_0au#uLpYI=6KQQCtxd!)aU<8Yky;zUZ{)f*($_|=Ze#F* z`r1gWnvJxx(R%ccpx=#lb^hg6*Pj!mR>q%WE&KS$3AT6bK>9k6u^mW{k+nDHCr8uPpdz00_k;ape7lh8(@IG~z=aE;}L<^`eD-b(iqd!zjZ-pxPK`)YcR zyct(B=GBZL>*Z)yy_zws<~fP{5?3?BM>E3_-ME2kzh>vBRQ?9qxq({Os8?ZZgzi?- z-`PC7-|;^F&Pux9S&zbKaL^=-f=2vcUJxlmV%!SrUOg|^V31C>Euqs zw{ru}&jxZgaPKzI;|Ato15fD&%5UI4ZlKK#)~2YZ^|gU#l`{S^E9oz@GD1NIrp&<^Sbk~3JVR>Nd$_GH?uy_7rB9eYs(fFq zoyY_B3hPU-$}5#Gno4S}+-BOx-%@zhtE&+B{~s2e^lpdm;?&chSx~@bkC}^Jsr=CN(d;c~Ke4XZ&WlQ}c3u zv;IDo>+eIYiz(R$d=c40dlsb8e%`c)Gq}y*S=+ORx#&Q%<#R` zs$y14$Snbm-p3MJ7(xprw6KD=eucgDeg${@SKRRx-0{dqcLn8F(Ao<6T0vhKpI)wU z1=pDM?A1(qk!SC(tXA+t%ME_WNPcbai#+0NKHs9pf1}4vdW^h_I~ix>37qjdrr%Eb z?c@pR;!3-?imd0b^*i10vClAXWpKSPPjeMN=Pi4hyY@6CudtE0D|la;4fg8{ud|J; z?%SC%_9WcF{oRN1cDkYGHrkWmes3)+wI^XCPr|n;ndTayEnY-bws9X74^QLV#(ZXc zl^I*)FCBR-FXMXgXZEw6%yxBU)GA{pBj5Eh=BkVqB7g5WfvvxDf+LjvIcQV*1gp=S z;8?@^TP&sg9L4yvk~6>?eVd~*v<%a3sg2YBJ4QRle_fa@Ss{S`(&)$lr>$3{DqC+91` zEml&y2E$*hbG^jV0!J%&w95Yzn3c4%k~vvvtp(Rccxz3&Cu?CP{jRi;`1Q={Tg>XJ zz-Dz7v$`rc)nLZCiuqhc%d42xRkU+Vl+xNUnOwWZRbcKWUB&#b^29UvDJ$=n8s0CZ z?rPHgsJkD1?MJQsn5F#~^L~`6p-c^31UiPULPz zb2X73nPJtn8CwcwDZQ`s?M*)vo`0pU_g&AP$u}e^02WQqDSLKbp5twLj=S@m^(c(J zN0(YVDr0Zca}iAYBP5+jm7)W73r$grgtdwb|`%v z%IqCV%ZEZm52fWOrbg7)p*9ab&y`>9Yy3)oL;4?+SQ9%HQ=;C}UQfMOJKqg)jc&5*atFDi+)3_i_eJ*=w@H5ckGh|`SKJ@< zn3a1Co}N;b_nh`p{Qrkc{Xnrenp~UC8}D^TyFNt#xWrxSzNH8N|HnO}xJz$~m8L?qqk4`$zXxcdPrJ;%NLrF#`TekuipNjoxH8(-qD;Vn3Z( zF@N6jMtAM}WlA4EaNZG(Zu>z8FKP6~_AXh_=pDA~;DZ{y4a-%=yMOtz0~@{9>8VPQ zLhKyXb~n#0bt~OE_XT&Iq7&S&lP#WAB=2{;Kxf)D+0KZ0NNO%dxv8$l9pa94r?_+7 zM)yzdHurt^xcd*qE%=icdPBWtZ%U?oN-=*&E9%00MOrw{ovH{3Us7z4e|8VJA1mU= zZxrJop~xL0ExH8l7r0@r#dWv^?i22K_ZfGdyVQNn-R^$io=`-D*WI5LvAx`t#T3#0n(-7X%E~x5LorTPxKFt=+~13rztMfi zJ>>pf5gUHz-t!8*;ocZq>nUHN6XVA#ZpR{bs9WRC)EOdID$c{5it(`7z2M$(?|Vhw z2t{%be@OXKSEtj0W-7YJVeSOC-d&^!LN~d)^pyTo@gRP$SSQ6^+8gK1$doU0^{&;; zQY?wXbxO%+-No)IMaH_@{i|Xiz2x3>fAvbdT5r6!uQ&6!9kVymRqdy*O0C%| z>2arjD%H1YZ=|bEJ~eg0st-#~`_SCo)?MBA=@U|y?v-@iDJQ3{TD=$2HK!f7Ds|o7 zNHrP9rEcCU>AEvdPTkhGH_}s9^`-9Yv-CdF2T30xeVlYN=`*BTNna*?jr0xDw@J5? z?$9t#D+u>SdWsq?DB3IOX{*;2RGhLG(o=2B!}msdx~N=1!(K^0y>3mxsMGgGdh)7M z3&x+mH`3GFrWCZDzBke{k3YSj^Yp!vo_c!0?9zFww2~VZIjVR|gOQJk!!j5tfw)G4hmuy17LvlB zyAt4H(gM;VQue$K$&C0NYhk2PU;HytOmU)y8%H{flwG4Z7sIp16<=j=vpDXfk}nRq zu5wZ39hG-f`TE>mwY9oIpYHgxy!w&qXRAM`si~P=v$*E4nhiB;YR*u4P0fqLT81qe zcI>dThFw1FjuG4Ime((=UsHc+{iV$}jI>>s^-w;5)Q-jYarq$`e8Nr#s`rxy{S;6OmvxCnE=LBB} z&JF%9I4?L~aj^bAxG=al_+qdj_=n(<;2(pH!Iu;R>oUd0xfJ zt_yw;{Od=Kdvwqej0wgD?g{PygI9uI1+NCb4qgj>6TBY$HrN*YE_fsO zeeh=Rhv2Q?kHOo)e+BOZe+u3W{v2!%{t~0>3sW@c? zVPRMl7KbHaX;>DPhZW(Fuu_rBs>159CL9(H4@ZRQur{m<>%)d{pRh4(3Y)``;izzQ z*bx7%Dbb|WV5;y3yvGWt(&^col>nx9N>U^3_ zI@#tQ6B`p>(n%h67S!cB+vy6O@bP6kqsC5J*E#EV>m1yB6W>kTm-t@dew|eFLE^88 z9f_Sum-Lc;GDwCxsJSyaBYAA{IGq@CLh{7qr<129_f7UB=O-5=_e(BJ?w>q3xioo* zPLeq(*_S*yxlX6ad_Va>@(0NWbr#o)$rlt|vN%)_36~w)Jds6MN0IwOKyag zj@O>PkW;D3wC6ljyZp7+@dn-gIYsfAs$3F3|~#zPn5^onl3rE%hf#$2HlX>mKyy`3v2@ z>*T5v-Oo9*>J9&N|8)0z|6KoE_on}x|GfKy|B_@Me+&wPCa*LY6|{OS!PH=uH(Brd zLT`p>*CAey-td*)e7%Vmc?T={-UHrJi@WEY8axs_<(+9~)p!@$Y3bfYIwAc`Z$tQn z@C)8Xowj(s_a&WD^Cjajx+`GX} zobqlAp9-JyzG)}ZcsJY0G~O*beY?QhlqgCRdEeHlGef-F64i+s?>lyCly_Gmok)9k zC+ZXR-aU3+ly|Srh#KSFr*mi~dJot+f8G!6L@4heJBP;mk)8kKJ**RG4)Fd}XHOsR zJ!0qTd5_zPP2LlU&m=zM{kxsXy$t~V?i>&GWCHY434}K!~cJc$iFqKLb_*IIk`6=mEg3Jo!72fN$`)mEv{Ihi5 zF7z*voyIl(_5Mx%t^OT46Y~N8VgE7zN&jhoi{$06`rG`s{CE8iv`Q5OWkFSt4jM(} zTeULH5CvZlEY^y&LNxk#twHOw-khzqpS;ZWZ-= zO_c6!QMDbSU`3)0}fnOjFCj@PML>k?<^SKF=c_foga z4RiOqk#3BeNL1$OZU$pPxm!T=6z)-Y5Vko^pf<-6JG0*c1wGvebSrKThe~%?dcuqfV4Cn zmfoL^Ovj`X)2ZonBDwX_)$C%cx+dBSu4RX5)pgN+aD8+D+z=fEH%5oRP3(`Z@Un-& z4~ST+`XNS>>K0UB)sKWoe7Y4bSoLGU+SF}A{9WBHSfaW^h;pkt1^Y^ONeX@SF| zZPh)f5vr9^2iz;!;6BL#_e(B#K!}lOQppRL4`xXLSWDnSO>HRz>qrrpE%m`1X#nO* zL$Izi0`sI8%$LSs0eXy@dMIsb3Z)rXB+bG4(gJKCUjrLT3D`(lg2mDbY|OsfYMRJN zU{h%WHj}ns2`sOgmT9t>$UJU$J?Ho%7W^D}BM|gxS~pi8xzoX2?&$Kg+G)^YSzB1?dOAC_e{ZlH0(U z@(b`4xgDG(zXWGXfACeJyD9VC9pD`K6*yP!1n0?J;C#HQ)GUyJ;6fP$E|R;!#Zn3` zk-^|nDFc_uJ>YV=7hEB~23N`uaFq-N&xCmmJrG5i9;oD`Yn7aIosyHTS8`%}Cnw#g zwVx3y&v4EzXx~e1K=n6 zAh=tpMct!+04sGQxL5xO?$d|B{W=Ofpbt~t6t5}zo{j-)=~%EfN<4i}$AQ^89?a1R zV6ILC>*}Lmo=yVubuw6>kAd}c3RtL9!6Kao*4M|u2Kofpkp0!^d-@bujCTWlPoD;x z-~&S6(`UhEcn#3<^iN=k&R~hQS~lUcqWDjA;M&FdXRwn#4}M=?058!O!Atce@CP~* zybSL$HQt|0%@sO}bzg7e+hVEC=8fBjwmq6?543762gmAbk8$=au$dSKzW-WY^ghobR>oxq7aa6T9B7 zzp63e`gNQb{S^&H#k3N-**jMjRFX2TP2*2@bgdVo9;h)Ds8N2e?Yq5Z72PYtWO6i8 zX2`PWIaw(y@lLHEUga{Pt#6N(hY0H{h*MiTdWZeAzaG7-=j-{=d+e`$DVp$&dULdn zUAFs0n~DB$SM*VcM7t+MpRLT4W=f;IM1`Cd?F+GX_lL-=2Z+X95FI4;c5!q#L}2~Y z$LnR2|8n~#P68EnrxX$mw3W1Vr@PbTWMVCMmQ!LEJ2^E@B%M?|Il$RM=W6DJ9CmQeN*iy3JT&TiwTQJGR&^ ztg!>`pgTk?0G|f`asK+}ROK)5Qxf&9zQRuSEW*(|GkvU;dx>oNvbOT^KJ}zfT8*+O zOI1lv=a(hN<*;VQ9m49rt@RN&U|EjBv(FYmq%tfW*KM-M-8 zv?&}>0-j4R;49G!j@+ZgyY(SGqk!97o#!WtiH21+}Q_ibo>4Nqj%z3 zwCmisHkcRJ0r6ppGI37zQQdG9$`R*tjD=i%uf9L8&Z!Y+S#dF#7dH-Rj=XE!G~8(h z=ElwaeV%cw=0C2gbAFr6{XACT4Jk$SH$@@$?d?>)=xrQjv9>Pc%U|!`CGP3pg*s5T zEA9mzsF8wxOA6nIH^NBOO5N-_DUnU1Uvli!9;0dA?O(4yyk3ts6mKe60zr zLDg0NZxnixIN#5R#uBas29xiSLDin8?X?qEGmJBH86_^RPC+~m+MCa{qWYSmj2AJR zyq~Fntr@_~F$kunlsTj92wO9R+2SZyk3(= zH)KR<%Bs92E4eyH2ez%Z8HhtId3mqfb#SAaKlTU4wPI4y$$p z*6b#%*blH?w_vqy#ai8lmAV7#bQf0XZmiKttk8W}p9fCBXs0!}_|#;XTBf$C1M`t% za!p;6M+AuiQ_mEdB2(WqfDLJ6icMqF#59E$@!Wlh`63qlH2Cfl^Wg0R3*Moc2frAu z?0C+E0&cv=SHO-}=>cENkB|6_CeR%AZj2cV&oj>4-#A51&rBsu1t%y6rnRMr1mM%Jhe)M@N z%l}SGI@XTH{~v2fSy;^58N7DFiT8mM?-=#R8Xge6{N>tKG$=X;#_${H2xpy8JGj<$ zb=_R|W4ghAQ!{7@kJ$PIszF^iXRJ(bV}}*Uw;8wLnWI{sXO8N4t2@f}Jad%idFCkJ z^UT^s#J#YG`(X_a!WRB#bQrHilHnU@@WZqC z%EkDzrTCoH!Y`~29*sG88P>(4FCVYFdU(ba;l0)X53@%2PBzAWv8gnZ=F$R>yb@_C zt?+C+3GcJEax!s<{zbkn|0<`-zeziRO%qr&;u67}35=P*lnD$O@rl~YcZg5aK|0F! zEf5*GgCECf%inTqix{dg&#- zrH|YoKb9NiCi#i_t^>;d4?}P3Cy*{81>InS< zy#F7Gku*vl*3l>cWAzaor{i@3TEL?^Nhj-LIt5i=nm(>i=#%;s`oPorj6SQ+@&8F? z5Mk+geL-K;m(UDe)>m|v&em78Twl{UI#=iEd~}3`x=0u65?zX-uv}N@N?oO|qb zoEa3u@}L;b35wzTpcpO)>fXX*;~|Vs8yLwQ?%%)S86pi#P!yOT)_tt}{K|d{vxOh= zbHa$9A4dEpVZ?75M*QYAN>&o(pxE{He^02Qe~Yv^v>R%k^@4-cNL&h+R|~$b4xC&L H&y4;71utqP literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/starwars_hol.ttf b/app/src/main/res/font/starwars_hol.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3c06b481b9d4a6190330392c18a7e90be8bc3ed0 GIT binary patch literal 69764 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 S$MIj~@#DJqeC${QD*p*Pfa}Eo literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/starwars_jedi.ttf b/app/src/main/res/font/starwars_jedi.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2ac5bb1bf042d673d07a9233fad599e60c782b87 GIT binary patch literal 46512 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ăESk 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 G(fmJpf?fdt literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml deleted file mode 100644 index 133bc853..00000000 --- a/app/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127d..af7268f4 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,7 @@ - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 + #FFFFE919 #FF000000 #FFFFFFFF + #FF8D99AE \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index e17a4f5d..74894c19 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,16 +1,22 @@ - - + + + + + \ No newline at end of file From 84dc0a13121f096b6f26c6b1368ac3b903b82a4b Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Thu, 23 Sep 2021 23:53:38 -0300 Subject: [PATCH 04/53] Small changes to the style files --- app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/themes.xml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index af7268f4..cc95286f 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,6 +2,6 @@ #FFFFE919 #FF000000 - #FFFFFFFF + #FFEDF2F4 #FF8D99AE \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 74894c19..d94edeff 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,5 +1,7 @@ + + - + + \ No newline at end of file From 70eab1ca277f23ba0dd73c35d9a8b2dee87cb51b Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 00:51:12 -0300 Subject: [PATCH 07/53] Change the gray color to onBackgroundColor --- app/src/main/res/drawable/circle.xml | 2 +- app/src/main/res/layout/rv_character_item.xml | 2 +- app/src/main/res/values/themes.xml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/drawable/circle.xml b/app/src/main/res/drawable/circle.xml index 7e65d196..7d8f0dfd 100644 --- a/app/src/main/res/drawable/circle.xml +++ b/app/src/main/res/drawable/circle.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/rv_character_item.xml b/app/src/main/res/layout/rv_character_item.xml index 2d325adf..f8c9c068 100644 --- a/app/src/main/res/layout/rv_character_item.xml +++ b/app/src/main/res/layout/rv_character_item.xml @@ -47,7 +47,7 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/small" android:fontFamily="@font/ubunto_mono" - android:textColor="@color/gray" + android:textColor="?attr/colorOnBackground" android:textSize="@dimen/title" app:layout_constraintBottom_toBottomOf="@+id/title" app:layout_constraintStart_toEndOf="@+id/dot" diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d94edeff..076f09e1 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -10,6 +10,8 @@ @color/white @color/white @color/black + + @color/gray From d931fbcb7cbcf5447dfc5cdf9ca61eed4fe49e48 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 00:55:19 -0300 Subject: [PATCH 08/53] Add TitleTextAppearance --- app/src/main/res/layout/rv_character_item.xml | 5 ++--- app/src/main/res/values/styles.xml | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/rv_character_item.xml b/app/src/main/res/layout/rv_character_item.xml index f8c9c068..456360ce 100644 --- a/app/src/main/res/layout/rv_character_item.xml +++ b/app/src/main/res/layout/rv_character_item.xml @@ -13,10 +13,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:fontFamily="@font/montserrat_semi_bold" - android:textSize="@dimen/title" + android:textAppearance="@style/TitleTextAppearance" android:textColor="?attr/colorPrimary" + app:layout_constraintTop_toTopOf="parent" tools:text="Luke Skywalker" /> @dimen/logo + + \ No newline at end of file From 615523da6745fa1033ed9bfe4a5d47cf07f623a0 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 01:19:02 -0300 Subject: [PATCH 09/53] Turn ViewBinding on --- app/build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index bb6808b9..786ac12a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,6 +22,11 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + + buildFeatures { + viewBinding true + } + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 From e108bb8513a7602f98aaff9264c6bce27e3ab833 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 02:44:44 -0300 Subject: [PATCH 10/53] Implement CharacterInfo custom ViewGroup --- .../ui/components/CharacterInfo.kt | 57 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 13 +++++ .../main/res/layout/character_info_layout.xml | 26 +++++++++ app/src/main/res/values/attrs.xml | 7 +++ 4 files changed, 103 insertions(+) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt create mode 100644 app/src/main/res/layout/character_info_layout.xml create mode 100644 app/src/main/res/values/attrs.xml diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt new file mode 100644 index 00000000..5e227571 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt @@ -0,0 +1,57 @@ +package com.arthurgonzaga.wikistarwars.ui.components + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import android.widget.TextView +import androidx.core.content.res.ResourcesCompat +import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.databinding.CharacterInfoLayoutBinding + + +class CharacterInfo @JvmOverloads constructor( + context: Context?, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + private lateinit var titleStr: String + private lateinit var subtitleStr: String + + lateinit var binding: CharacterInfoLayoutBinding + + + + init { + context?.let { + // Get the attribute values + it.theme.obtainStyledAttributes( + attrs, R.styleable.CharacterInfo, + 0, 0 + ).apply { + try { + titleStr = this.getString(R.styleable.CharacterInfo_title) ?: "" + subtitleStr = this.getString(R.styleable.CharacterInfo_subtitle) ?: "" + } finally { + recycle() + } + } + + binding = CharacterInfoLayoutBinding.inflate(LayoutInflater.from(it)) + + binding.title.text = titleStr.replaceFirstChar(Char::uppercase) + binding.subtitle.text = subtitleStr.replaceFirstChar(Char::uppercase) + addView(binding.root) + } + } + + fun setTitle(text: String){ + binding.title.text = text + } + + fun setSubtitle(text: String){ + binding.subtitle.text = text + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index def59e40..e49c3380 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,6 +7,7 @@ tools:context=".ui.MainActivity"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/character_info_layout.xml b/app/src/main/res/layout/character_info_layout.xml new file mode 100644 index 00000000..5c1f835f --- /dev/null +++ b/app/src/main/res/layout/character_info_layout.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 00000000..5f2ecde1 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file From 33b8e5e226af35c5bf4a5548a5cbe8a607dcbf48 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 11:51:42 -0300 Subject: [PATCH 11/53] Add initial dependencies --- app/build.gradle | 58 +++++++++++++++++++++++++++++++++++++++++++++++- build.gradle | 9 ++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 786ac12a..673cefb7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,8 @@ plugins { id 'com.android.application' id 'kotlin-android' + id 'kotlin-kapt' + id 'dagger.hilt.android.plugin' } android { @@ -42,7 +44,61 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' - testImplementation 'junit:junit:4.+' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + + + def retrofit_verion = "2.9.0" + def gson_version = "2.9.0" + def nav_version = "2.3.5" + def paging_version = "3.0.1" + def room_version = "2.3.0" + def mockito_version = "2.8.47" + def lifecycle_version = "2.3.1" + def arch_version = "2.1.0" + + // Retrofit + + implementation "com.squareup.retrofit2:retrofit:$retrofit_verion" + implementation "com.squareup.retrofit2:converter-gson:$gson_version" + + + // Navigation Component + + implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" + implementation "androidx.navigation:navigation-ui-ktx:$nav_version" + + + // Paging 3 + + implementation "androidx.paging:paging-runtime-ktx:$paging_version" + testImplementation "androidx.paging:paging-common-ktx:$paging_version" + + // Room + + implementation "androidx.room:room-runtime:$room_version" + kapt "androidx.room:room-compiler:$room_version" + implementation "androidx.room:room-ktx:$room_version" + testImplementation "androidx.room:room-testing:$room_version" + + // Hilt + + implementation "com.google.dagger:hilt-android:$hilt_version" + kapt "com.google.dagger:hilt-android-compiler:$hilt_version" + + // Mockito + + testImplementation "org.mockito:mockito-inline:$mockito_version" + + // Lifecycle + + implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" + + + // Core Testing + + testImplementation "androidx.arch.core:core-testing:$arch_version" + } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 5e71d738..428d4cd7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,10 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + + ext { + hilt_version = "2.37" + } + repositories { google() mavenCentral() @@ -8,6 +13,10 @@ buildscript { classpath "com.android.tools.build:gradle:7.0.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30" + // Hilt + + classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version" + // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } From 7cbf705db3c51c8932e05639b9390c7d2f5d69f8 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 11:52:02 -0300 Subject: [PATCH 12/53] Add background color --- app/src/main/res/values/themes.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 076f09e1..b22a1d08 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -12,6 +12,7 @@ @color/black @color/gray + @color/black From cc3d7e1768d57fc0db5f2ad79faf934866f4db04 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 12:20:30 -0300 Subject: [PATCH 13/53] Add HomeFragment --- app/build.gradle | 1 + .../wikistarwars/ui/fragments/HomeFragment.kt | 34 +++++++++++++++++++ .../main/res/drawable/divider_background.xml | 10 ++++++ app/src/main/res/layout/divider_layout.xml | 8 +++++ app/src/main/res/layout/fragment_home.xml | 33 ++++++++++++++++++ app/src/main/res/layout/rv_character_item.xml | 1 + app/src/main/res/values/strings.xml | 4 ++- 7 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt create mode 100644 app/src/main/res/drawable/divider_background.xml create mode 100644 app/src/main/res/layout/divider_layout.xml create mode 100644 app/src/main/res/layout/fragment_home.xml diff --git a/app/build.gradle b/app/build.gradle index 673cefb7..81c0bb60 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt new file mode 100644 index 00000000..ee67630b --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -0,0 +1,34 @@ +package com.arthurgonzaga.wikistarwars.ui.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding + + +/** + * + * This fragment is the initial fragment of the backstack. + * + * It will display a at the top header and a recyclerview containing + * some information about the characters + * + */ +class HomeFragment : Fragment() { + + private lateinit var binding: FragmentHomeBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + + binding = FragmentHomeBinding.inflate(inflater) + + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/divider_background.xml b/app/src/main/res/drawable/divider_background.xml new file mode 100644 index 00000000..d4150a74 --- /dev/null +++ b/app/src/main/res/drawable/divider_background.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/divider_layout.xml b/app/src/main/res/layout/divider_layout.xml new file mode 100644 index 00000000..1fee19b9 --- /dev/null +++ b/app/src/main/res/layout/divider_layout.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 00000000..482fc6a9 --- /dev/null +++ b/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/rv_character_item.xml b/app/src/main/res/layout/rv_character_item.xml index 456360ce..8f695e55 100644 --- a/app/src/main/res/layout/rv_character_item.xml +++ b/app/src/main/res/layout/rv_character_item.xml @@ -5,6 +5,7 @@ android:layout_height="wrap_content" android:paddingVertical="@dimen/normal" android:paddingHorizontal="@dimen/medium" + android:layout_marginBottom="@dimen/normal" xmlns:tools="http://schemas.android.com/tools" android:background="@drawable/rv_item_background"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a96d37c..029b7353 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,8 @@ WikiStarWars - the characters wiki + the characters wiki Star\nWars + + Hello blank fragment \ No newline at end of file From 427c3969b0281cd709bcc7b5b0cd15075d6819c4 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 14:36:55 -0300 Subject: [PATCH 14/53] Add the DetailFragment and update the CharacterInfo --- .../ui/components/CharacterInfo.kt | 46 +++++++- .../ui/fragments/DetailFragment.kt | 35 ++++++ .../main/res/layout-land/fragment_detail.xml | 102 +++++++++++++++++ app/src/main/res/layout/fragment_detail.xml | 105 ++++++++++++++++++ app/src/main/res/values/dimens.xml | 9 ++ app/src/main/res/values/strings.xml | 10 ++ app/src/main/res/values/styles.xml | 6 + 7 files changed, 311 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt create mode 100644 app/src/main/res/layout-land/fragment_detail.xml create mode 100644 app/src/main/res/layout/fragment_detail.xml diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt index 5e227571..fca40d42 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt @@ -1,8 +1,11 @@ package com.arthurgonzaga.wikistarwars.ui.components +import android.animation.Animator +import android.animation.AnimatorListenerAdapter import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import android.widget.RelativeLayout import android.widget.TextView import androidx.core.content.res.ResourcesCompat @@ -21,9 +24,12 @@ class CharacterInfo @JvmOverloads constructor( lateinit var binding: CharacterInfoLayoutBinding + private var shortAnimationDuration: Int = 0 init { + shortAnimationDuration = resources.getInteger(android.R.integer.config_mediumAnimTime) + context?.let { // Get the attribute values it.theme.obtainStyledAttributes( @@ -46,12 +52,48 @@ class CharacterInfo @JvmOverloads constructor( } } - fun setTitle(text: String){ + fun setTitle(text: String) { binding.title.text = text } - fun setSubtitle(text: String){ + fun setSubtitle(text: String) { binding.subtitle.text = text } + /** + * Show the view with a fading in animation + */ + fun show() { + binding.root.apply { + // Set the content view to 0% opacity but visible, so that it is visible + // (but fully transparent) during the animation. + alpha = 0f + visibility = View.VISIBLE + + // Animate the content view to 100% opacity, and clear any animation + // listener set on the view. + animate() + .alpha(1f) + .setDuration(shortAnimationDuration.toLong()) + .setListener(null) + } + } + + /** + * Hide the view with a fading out animation + */ + fun hide() { + binding.root.apply { + animate() + .alpha(0f) + .setDuration(shortAnimationDuration.toLong()) + .setListener( + object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + visibility = View.GONE + } + } + ) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt new file mode 100644 index 00000000..d1f1ffae --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -0,0 +1,35 @@ +package com.arthurgonzaga.wikistarwars.ui.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding +import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding + + +/** + * + * This fragment is the initial fragment of the backstack. + * + * It will display a at the top header and a recyclerview containing + * some information about the characters + * + */ +class DetailFragment : Fragment() { + + private lateinit var binding: FragmentDetailBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + + binding = FragmentDetailBinding.inflate(inflater) + + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_detail.xml b/app/src/main/res/layout-land/fragment_detail.xml new file mode 100644 index 00000000..29fd60bb --- /dev/null +++ b/app/src/main/res/layout-land/fragment_detail.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml new file mode 100644 index 00000000..8c2b3f3b --- /dev/null +++ b/app/src/main/res/layout/fragment_detail.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 506afb99..b2da49fa 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,8 +6,17 @@ 24dp 32dp 40dp + 52dp + + + 116dp + 60dp + 16sp 14sp + 32sp 44sp + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 029b7353..317f23af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,4 +5,14 @@ Star\nWars Hello blank fragment + Favorite + Height + Weight + Hair color + Birth year + Eye color + Skin color + Gender + Homeworld + Specie \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index fc14c69d..5bc7aa4b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,4 +13,10 @@ @dimen/title + + \ No newline at end of file From d39fb21af10b95af10026570857c0c8d0168077c Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 14:38:43 -0300 Subject: [PATCH 15/53] Update titles of CharacterInfos --- .../main/res/layout-land/fragment_detail.xml | 18 +++++++++--------- app/src/main/res/layout/fragment_detail.xml | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/src/main/res/layout-land/fragment_detail.xml b/app/src/main/res/layout-land/fragment_detail.xml index 29fd60bb..17609ab3 100644 --- a/app/src/main/res/layout-land/fragment_detail.xml +++ b/app/src/main/res/layout-land/fragment_detail.xml @@ -44,56 +44,56 @@ diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml index 8c2b3f3b..2f58616c 100644 --- a/app/src/main/res/layout/fragment_detail.xml +++ b/app/src/main/res/layout/fragment_detail.xml @@ -45,56 +45,56 @@ From 95d2202002250e410dde6e8e67e55bf1aff3480d Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 14:57:57 -0300 Subject: [PATCH 16/53] Improve GridLayout columns --- .../main/res/layout-land/fragment_detail.xml | 102 ------------------ app/src/main/res/layout/fragment_detail.xml | 4 +- app/src/main/res/values-land/dimens.xml | 4 + app/src/main/res/values-land/integers.xml | 4 + .../main/res/values-long-land/integers.xml | 4 + app/src/main/res/values/dimens.xml | 1 - app/src/main/res/values/integers.xml | 4 + 7 files changed, 17 insertions(+), 106 deletions(-) delete mode 100644 app/src/main/res/layout-land/fragment_detail.xml create mode 100644 app/src/main/res/values-land/dimens.xml create mode 100644 app/src/main/res/values-land/integers.xml create mode 100644 app/src/main/res/values-long-land/integers.xml create mode 100644 app/src/main/res/values/integers.xml diff --git a/app/src/main/res/layout-land/fragment_detail.xml b/app/src/main/res/layout-land/fragment_detail.xml deleted file mode 100644 index 17609ab3..00000000 --- a/app/src/main/res/layout-land/fragment_detail.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml index 2f58616c..6085c26b 100644 --- a/app/src/main/res/layout/fragment_detail.xml +++ b/app/src/main/res/layout/fragment_detail.xml @@ -34,7 +34,7 @@ android:id="@+id/grid_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:columnCount="2" + android:columnCount="@integer/grid_column_count" android:orientation="horizontal" android:useDefaultMargins="true" app:layout_constraintBottom_toBottomOf="parent" @@ -98,8 +98,6 @@ tools:subtitle="Human" /> - - \ No newline at end of file diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml new file mode 100644 index 00000000..7fe31292 --- /dev/null +++ b/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,4 @@ + + + 60dp + \ No newline at end of file diff --git a/app/src/main/res/values-land/integers.xml b/app/src/main/res/values-land/integers.xml new file mode 100644 index 00000000..aec7a050 --- /dev/null +++ b/app/src/main/res/values-land/integers.xml @@ -0,0 +1,4 @@ + + + 5 + \ No newline at end of file diff --git a/app/src/main/res/values-long-land/integers.xml b/app/src/main/res/values-long-land/integers.xml new file mode 100644 index 00000000..f90a1ea1 --- /dev/null +++ b/app/src/main/res/values-long-land/integers.xml @@ -0,0 +1,4 @@ + + + 6 + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b2da49fa..357dcc27 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -10,7 +10,6 @@ 116dp - 60dp 16sp diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml new file mode 100644 index 00000000..a8a46dd3 --- /dev/null +++ b/app/src/main/res/values/integers.xml @@ -0,0 +1,4 @@ + + + 2 + \ No newline at end of file From 01ab564bc9aa1ae96e1285762fb09deee389791a Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 15:19:20 -0300 Subject: [PATCH 17/53] Add the DFavoriteListFragment --- .../ui/fragments/DetailFragment.kt | 5 +- .../ui/fragments/FavoriteListFragment.kt | 32 +++++++++++++ .../res/layout/fragment_favorite_list.xml | 47 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 4 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt create mode 100644 app/src/main/res/layout/fragment_favorite_list.xml diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt index d1f1ffae..c7d99dba 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -12,10 +12,7 @@ import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding /** * - * This fragment is the initial fragment of the backstack. - * - * It will display a at the top header and a recyclerview containing - * some information about the characters + * This fragment will display full information about a character * */ class DetailFragment : Fragment() { diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt new file mode 100644 index 00000000..e01f93e6 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt @@ -0,0 +1,32 @@ +package com.arthurgonzaga.wikistarwars.ui.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding +import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding + + +/** + * + * This fragment will display the list of favorites characters + * + */ +class FavoriteListFragment : Fragment() { + + private lateinit var binding: FragmentDetailBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + + binding = FragmentDetailBinding.inflate(inflater) + + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_favorite_list.xml b/app/src/main/res/layout/fragment_favorite_list.xml new file mode 100644 index 00000000..2007eaeb --- /dev/null +++ b/app/src/main/res/layout/fragment_favorite_list.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 317f23af..32d008bb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,4 +15,6 @@ Gender Homeworld Specie + Favorites + You have not favorite\nany character yet \ No newline at end of file From 2f6b8f47998920902ec45e533a8234c320713cd3 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 15:36:34 -0300 Subject: [PATCH 18/53] Update border background --- .../drawable/{rv_item_background.xml => border_background.xml} | 1 + app/src/main/res/layout/rv_character_item.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename app/src/main/res/drawable/{rv_item_background.xml => border_background.xml} (82%) diff --git a/app/src/main/res/drawable/rv_item_background.xml b/app/src/main/res/drawable/border_background.xml similarity index 82% rename from app/src/main/res/drawable/rv_item_background.xml rename to app/src/main/res/drawable/border_background.xml index d5280f11..5bd8f2c3 100644 --- a/app/src/main/res/drawable/rv_item_background.xml +++ b/app/src/main/res/drawable/border_background.xml @@ -5,5 +5,6 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/rv_character_item.xml b/app/src/main/res/layout/rv_character_item.xml index 8f695e55..393984c0 100644 --- a/app/src/main/res/layout/rv_character_item.xml +++ b/app/src/main/res/layout/rv_character_item.xml @@ -7,7 +7,7 @@ android:paddingHorizontal="@dimen/medium" android:layout_marginBottom="@dimen/normal" xmlns:tools="http://schemas.android.com/tools" - android:background="@drawable/rv_item_background"> + android:background="@drawable/border_background"> Date: Fri, 24 Sep 2021 16:22:22 -0300 Subject: [PATCH 19/53] Add search bar and favorite button --- app/build.gradle | 2 +- .../main/res/color/icon_text_input_tint.xml | 6 +++ app/src/main/res/color/outline_color.xml | 7 +++ app/src/main/res/drawable/ic_list.xml | 11 +++++ app/src/main/res/drawable/ic_search.xml | 10 ++++ app/src/main/res/layout/activity_main.xml | 3 ++ app/src/main/res/layout/fragment_home.xml | 5 +- app/src/main/res/layout/home_row_layout.xml | 46 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 9 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/color/icon_text_input_tint.xml create mode 100644 app/src/main/res/color/outline_color.xml create mode 100644 app/src/main/res/drawable/ic_list.xml create mode 100644 app/src/main/res/drawable/ic_search.xml create mode 100644 app/src/main/res/layout/home_row_layout.xml diff --git a/app/build.gradle b/app/build.gradle index 81c0bb60..8f783df2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ dependencies { def paging_version = "3.0.1" def room_version = "2.3.0" def mockito_version = "2.8.47" - def lifecycle_version = "2.3.1" + def lifecycle_version = "2.2.0" def arch_version = "2.1.0" // Retrofit diff --git a/app/src/main/res/color/icon_text_input_tint.xml b/app/src/main/res/color/icon_text_input_tint.xml new file mode 100644 index 00000000..fce9e5b7 --- /dev/null +++ b/app/src/main/res/color/icon_text_input_tint.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/color/outline_color.xml b/app/src/main/res/color/outline_color.xml new file mode 100644 index 00000000..6626417f --- /dev/null +++ b/app/src/main/res/color/outline_color.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_list.xml b/app/src/main/res/drawable/ic_list.xml new file mode 100644 index 00000000..0d7db32c --- /dev/null +++ b/app/src/main/res/drawable/ic_list.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 00000000..57ee9496 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e49c3380..c8ee24b4 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -28,4 +28,7 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 482fc6a9..e744afe5 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -14,9 +14,8 @@ - - - + diff --git a/app/src/main/res/layout/home_row_layout.xml b/app/src/main/res/layout/home_row_layout.xml new file mode 100644 index 00000000..51d917bc --- /dev/null +++ b/app/src/main/res/layout/home_row_layout.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32d008bb..a6cc2452 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -17,4 +17,6 @@ Specie Favorites You have not favorite\nany character yet + Search + Favorite list \ No newline at end of file From 6d5663079053e970621fc88f200e0f89a18bf549 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Fri, 24 Sep 2021 16:36:58 -0300 Subject: [PATCH 20/53] Update FavoriteListFragment --- .../wikistarwars/ui/fragments/FavoriteListFragment.kt | 5 +++-- app/src/main/res/layout/fragment_favorite_list.xml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt index e01f93e6..4c4e58df 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt @@ -7,6 +7,7 @@ import android.view.View import android.view.ViewGroup import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding +import com.arthurgonzaga.wikistarwars.databinding.FragmentFavoriteListBinding import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding @@ -17,14 +18,14 @@ import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding */ class FavoriteListFragment : Fragment() { - private lateinit var binding: FragmentDetailBinding + private lateinit var binding: FragmentFavoriteListBinding override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = FragmentDetailBinding.inflate(inflater) + binding = FragmentFavoriteListBinding.inflate(inflater) return binding.root diff --git a/app/src/main/res/layout/fragment_favorite_list.xml b/app/src/main/res/layout/fragment_favorite_list.xml index 2007eaeb..11568144 100644 --- a/app/src/main/res/layout/fragment_favorite_list.xml +++ b/app/src/main/res/layout/fragment_favorite_list.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:paddingHorizontal="@dimen/large" - tools:context=".ui.fragments.HomeFragment"> + tools:context=".ui.fragments.FavoriteListFragment"> Date: Fri, 24 Sep 2021 19:28:13 -0300 Subject: [PATCH 21/53] Implement navigation to FavoriteListFragment and add tests --- app/build.gradle | 29 ++++++---- .../ui/fragments/FavoriteListFragmentTest.kt | 42 ++++++++++++++ .../ui/fragments/HomeFragmentTest.kt | 57 +++++++++++++++++++ .../ui/fragments/FavoriteListFragment.kt | 14 +++++ .../wikistarwars/ui/fragments/HomeFragment.kt | 13 ++++- app/src/main/res/layout/activity_main.xml | 29 +++------- app/src/main/res/layout/fragment_home.xml | 1 + app/src/main/res/navigation/nav_graph.xml | 30 ++++++++++ 8 files changed, 181 insertions(+), 34 deletions(-) create mode 100644 app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragmentTest.kt create mode 100644 app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragmentTest.kt create mode 100644 app/src/main/res/navigation/nav_graph.xml diff --git a/app/build.gradle b/app/build.gradle index 8f783df2..3df53146 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,9 +45,6 @@ dependencies { implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' def retrofit_verion = "2.9.0" @@ -55,9 +52,7 @@ dependencies { def nav_version = "2.3.5" def paging_version = "3.0.1" def room_version = "2.3.0" - def mockito_version = "2.8.47" def lifecycle_version = "2.2.0" - def arch_version = "2.1.0" // Retrofit @@ -74,32 +69,42 @@ dependencies { // Paging 3 implementation "androidx.paging:paging-runtime-ktx:$paging_version" - testImplementation "androidx.paging:paging-common-ktx:$paging_version" // Room implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" - testImplementation "androidx.room:room-testing:$room_version" // Hilt implementation "com.google.dagger:hilt-android:$hilt_version" kapt "com.google.dagger:hilt-android-compiler:$hilt_version" - // Mockito - - testImplementation "org.mockito:mockito-inline:$mockito_version" // Lifecycle implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" - implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1" + // Testing + + def mockito_version = "2.21.0" + def arch_version = "2.1.0" + def fragment_version = "1.4.0-alpha09" + def truth_version = "1.1.3" - // Core Testing + testImplementation 'junit:junit:4.13.2' + testImplementation "androidx.paging:paging-common-ktx:$paging_version" + testImplementation "androidx.room:room-testing:$room_version" + testImplementation "org.mockito:mockito-core:$mockito_version" testImplementation "androidx.arch.core:core-testing:$arch_version" + debugImplementation "androidx.fragment:fragment-testing:$fragment_version" + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" + androidTestImplementation "com.google.truth:truth:$truth_version" + androidTestImplementation "org.mockito:mockito-android:$mockito_version" } \ No newline at end of file diff --git a/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragmentTest.kt b/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragmentTest.kt new file mode 100644 index 00000000..1cab3234 --- /dev/null +++ b/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragmentTest.kt @@ -0,0 +1,42 @@ +package com.arthurgonzaga.wikistarwars.ui.fragments + +import androidx.fragment.app.testing.FragmentScenario +import androidx.fragment.app.testing.launchFragmentInContainer +import androidx.navigation.NavController +import androidx.navigation.Navigation +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.Espresso.pressBack +import com.arthurgonzaga.wikistarwars.R +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mockito.mock +import org.mockito.Mockito.verify +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class FavoriteListFragmentTest { + + lateinit var navController: NavController + lateinit var scenario: FragmentScenario + + @Before + fun setup() { + navController = mock(NavController::class.java) + scenario = launchFragmentInContainer( + themeResId = R.style.Theme_WikiStarWars_Yellow + ) + + scenario.onFragment{ + Navigation.setViewNavController(it.requireView(), navController) + } + } + + @Test + fun testPopupBackStack() { + + pressBack() + + verify(navController).popBackStack() + } +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragmentTest.kt b/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragmentTest.kt new file mode 100644 index 00000000..f3724783 --- /dev/null +++ b/app/src/androidTest/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragmentTest.kt @@ -0,0 +1,57 @@ +package com.arthurgonzaga.wikistarwars.ui.fragments + +import androidx.fragment.app.testing.FragmentScenario +import androidx.fragment.app.testing.launchFragmentInContainer +import androidx.navigation.NavController +import androidx.navigation.Navigation +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import com.arthurgonzaga.wikistarwars.R +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mockito.mock +import org.mockito.Mockito.verify +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class HomeFragmentTest { + + lateinit var navController: NavController + lateinit var scenario: FragmentScenario + + @Before + fun setup(){ + // Create a TestNavHostController + navController = mock(NavController::class.java) + + // Create a graphical FragmentScenario + scenario = launchFragmentInContainer( + themeResId = R.style.Theme_WikiStarWars_Yellow + ) + + scenario.onFragment { fragment -> + Navigation.setViewNavController(fragment.requireView(), navController) + } + } + + + @Test + fun isFavoriteButtonDisplayed() { + onView(withId(R.id.favorite_list_button)).check(matches(isDisplayed())) + } + + @Test + fun testNavigateToFavoriteListFragment() { + onView(withId(R.id.favorite_list_button)).perform(click()) + verify(navController).navigate(R.id.goToFavoritesListFragment) + } + + @Test + fun testNavigateToDetailFragment() { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt index 4c4e58df..16c4be1e 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt @@ -5,6 +5,8 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.activity.OnBackPressedCallback +import androidx.navigation.fragment.findNavController import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding import com.arthurgonzaga.wikistarwars.databinding.FragmentFavoriteListBinding @@ -30,4 +32,16 @@ class FavoriteListFragment : Fragment() { return binding.root } + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val backPressedCallback = object: OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + findNavController().popBackStack() + } + } + requireActivity().onBackPressedDispatcher.addCallback(backPressedCallback) + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index ee67630b..46fd14e9 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -5,6 +5,9 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.navigation.NavController +import androidx.navigation.findNavController +import androidx.navigation.fragment.findNavController import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding @@ -28,7 +31,15 @@ class HomeFragment : Fragment() { binding = FragmentHomeBinding.inflate(inflater) - return binding.root } + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.row.favoriteListButton.setOnClickListener { + findNavController().navigate(R.id.goToFavoritesListFragment) + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c8ee24b4..deaefc43 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,29 +6,16 @@ android:layout_height="match_parent" tools:context=".ui.MainActivity"> - - - - - - - + app:defaultNavHost="true" + app:navGraph="@navigation/nav_graph" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index e744afe5..cae7de37 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -15,6 +15,7 @@ diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 00000000..adb96369 --- /dev/null +++ b/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file From 1fcc203e9ef782b9ce3ee626d9eb3099b1143710 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 00:05:59 -0300 Subject: [PATCH 22/53] Add the responses models for the API --- app/build.gradle | 1 + .../api/responses/CharacterResponse.kt | 24 ++++++ .../api/responses/HomeWorldResponse.kt | 3 + .../api/responses/PageResponse.kt | 18 +++++ .../api/responses/SpecieResponse.kt | 3 + .../api/responses/PageResponseTest.kt | 79 +++++++++++++++++++ 6 files changed, 128 insertions(+) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/HomeWorldResponse.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/SpecieResponse.kt create mode 100644 app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt diff --git a/app/build.gradle b/app/build.gradle index 3df53146..021f5daf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,6 +100,7 @@ dependencies { testImplementation "androidx.room:room-testing:$room_version" testImplementation "org.mockito:mockito-core:$mockito_version" testImplementation "androidx.arch.core:core-testing:$arch_version" + testImplementation "com.google.truth:truth:$truth_version" debugImplementation "androidx.fragment:fragment-testing:$fragment_version" androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt new file mode 100644 index 00000000..ad681e98 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt @@ -0,0 +1,24 @@ +package com.arthurgonzaga.wikistarwars.api.responses + + +import com.google.gson.annotations.SerializedName + +data class CharacterResponse( + val name: String, + val height: String, + @SerializedName("mass") + val weight: String, + @SerializedName("hair_color") + val hairColor: String, + @SerializedName("skin_color") + val skinColor: String, + @SerializedName("eye_color") + val eyeColor: String, + @SerializedName("birth_year") + val birthYear: String, + val gender: String, + @SerializedName("homeworld") + val homeWorldUrl: String, + val species: List, + val url: String +) \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/HomeWorldResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/HomeWorldResponse.kt new file mode 100644 index 00000000..0fa3b253 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/HomeWorldResponse.kt @@ -0,0 +1,3 @@ +package com.arthurgonzaga.wikistarwars.api.responses + +data class HomeWorldResponse(val name: String) \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt new file mode 100644 index 00000000..5727d24b --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt @@ -0,0 +1,18 @@ +package com.arthurgonzaga.wikistarwars.api.responses + +data class PageResponse( + val count: Int, + private val next: String?, + private val previous: String?, + val result: List +){ + + fun getNextPageIndex(): Int? { + return next?.split("page=")?.get(1)?.toIntOrNull() + } + + fun getPreviousIndex(): Int? { + return previous?.split("page=")?.get(1)?.toIntOrNull() + } + +} diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/SpecieResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/SpecieResponse.kt new file mode 100644 index 00000000..70e4de58 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/SpecieResponse.kt @@ -0,0 +1,3 @@ +package com.arthurgonzaga.wikistarwars.api.responses + +data class SpecieResponse(val name: String) \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt new file mode 100644 index 00000000..b37aaa10 --- /dev/null +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt @@ -0,0 +1,79 @@ +package com.arthurgonzaga.wikistarwars.api.responses + +import com.google.common.truth.Truth.assertThat +import junit.framework.TestCase +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +@RunWith(JUnit4::class) +class PageResponseTest { + + @Test + fun `should return null when next page is null`() { + // Given + val pageResponse = PageResponse( + count = 87, + next = null, + previous = "https://swapi.dev/api/people/?page=8", + result = listOf() + ) + + // When + val nextPageIndex = pageResponse.getNextPageIndex() + + // Then + assertThat(nextPageIndex).isEqualTo(null) + } + + @Test + fun `should return next page index when it has a next Page`() { + // Given + val pageResponse = PageResponse( + count = 87, + next = "https://swapi.dev/api/people/?page=9", + previous = "https://swapi.dev/api/people/?page=7", + result = listOf() + ) + + // When + val nextPageIndex = pageResponse.getNextPageIndex() + + // Then + assertThat(nextPageIndex).isEqualTo(9) + } + + @Test + fun `should return null when previous page is null`() { + // Given + val pageResponse = PageResponse( + count = 87, + next = "https://swapi.dev/api/people/?page=2", + previous = null, + result = listOf() + ) + + // When + val previousPageIndex = pageResponse.getPreviousIndex() + + // Then + assertThat(previousPageIndex).isEqualTo(null) + } + + @Test + fun `should return previous page index when it has a previous Page`() { + // Given + val pageResponse = PageResponse( + count = 87, + next = "https://swapi.dev/api/people/?page=3", + previous = "https://swapi.dev/api/people/?page=1", + result = listOf() + ) + + // When + val previousPageIndex = pageResponse.getPreviousIndex() + + // Then + assertThat(previousPageIndex).isEqualTo(1) + } +} \ No newline at end of file From 6bcc7d3ca208a8fd8c72b6a63b18dc25f775940f Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 00:21:14 -0300 Subject: [PATCH 23/53] Improve CharacterResponse class --- .../api/responses/CharacterResponse.kt | 30 ++++++++------ .../api/responses/CharacterResponseTest.kt | 40 +++++++++++++++++++ 2 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt index ad681e98..9e3380ff 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt @@ -4,21 +4,27 @@ package com.arthurgonzaga.wikistarwars.api.responses import com.google.gson.annotations.SerializedName data class CharacterResponse( - val name: String, - val height: String, + val name: String = "", + val height: String = "", @SerializedName("mass") - val weight: String, + val weight: String = "", @SerializedName("hair_color") - val hairColor: String, + val hairColor: String = "", @SerializedName("skin_color") - val skinColor: String, + val skinColor: String = "", @SerializedName("eye_color") - val eyeColor: String, + val eyeColor: String = "", @SerializedName("birth_year") - val birthYear: String, - val gender: String, + val birthYear: String = "", + val gender: String = "", @SerializedName("homeworld") - val homeWorldUrl: String, - val species: List, - val url: String -) \ No newline at end of file + val homeWorldUrl: String = "", + private val speciesUrls: List, + val url: String = "" +) { + + + fun getSpecieUrl(): String? { + return speciesUrls.firstOrNull() + } +} \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt new file mode 100644 index 00000000..d7ccb733 --- /dev/null +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt @@ -0,0 +1,40 @@ +package com.arthurgonzaga.wikistarwars.api.responses + +import com.google.common.truth.Truth.assertThat +import com.google.gson.annotations.SerializedName +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +@RunWith(JUnit4::class) +class CharacterResponseTest { + + @Test + fun `shoud return null when the list is empty`() { + + // Given + val characterResponse = CharacterResponse(speciesUrls = listOf()) + + // When + val specie = characterResponse.getSpecieUrl() + + // Then + assertThat(specie).isEqualTo(null) + } + + @Test + fun `should return the first index when the list is not empty`() { + + val url1 = "https://swapi.dev/api/species/32/" + val url2 = "https://swapi.dev/api/species/33/" + + // Given + val characterResponse = CharacterResponse(speciesUrls = listOf(url1, url2)) + + // When + val specie = characterResponse.getSpecieUrl() + + // Then + assertThat(specie).isEqualTo(url1) + } +} \ No newline at end of file From 7552450ab0abc2931fb0d7b06b70b3c693613fe1 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 00:46:57 -0300 Subject: [PATCH 24/53] Update class and add more tests --- .../api/responses/CharacterResponse.kt | 13 ++++++--- .../api/responses/CharacterResponseTest.kt | 28 ++++++++++++++----- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt index 9e3380ff..657aa8dd 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt @@ -18,13 +18,18 @@ data class CharacterResponse( val birthYear: String = "", val gender: String = "", @SerializedName("homeworld") - val homeWorldUrl: String = "", - private val speciesUrls: List, + private val homeWorldUrl: String = "", + private val speciesUrls: List = listOf(), val url: String = "" ) { - fun getSpecieUrl(): String? { - return speciesUrls.firstOrNull() + fun getHomeWorldId(): Int? { + return homeWorldUrl.split("planets/")[1].replace("/","").toIntOrNull() + } + + + fun getSpecieId(): Int? { + return speciesUrls.firstOrNull()?.split("species/")?.get(1)?.replace("/","")?.toIntOrNull() } } \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt index d7ccb733..82ce2f03 100644 --- a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt @@ -10,31 +10,45 @@ import org.junit.runners.JUnit4 class CharacterResponseTest { @Test - fun `shoud return null when the list is empty`() { + fun `should return null when the list is empty`() { // Given val characterResponse = CharacterResponse(speciesUrls = listOf()) // When - val specie = characterResponse.getSpecieUrl() + val specieId = characterResponse.getSpecieId() // Then - assertThat(specie).isEqualTo(null) + assertThat(specieId).isEqualTo(null) } @Test - fun `should return the first index when the list is not empty`() { + fun `should return the id of the first index when the species list is not empty`() { - val url1 = "https://swapi.dev/api/species/32/" + val url1 = "https://swapi.dev/api/species/1/" val url2 = "https://swapi.dev/api/species/33/" // Given val characterResponse = CharacterResponse(speciesUrls = listOf(url1, url2)) // When - val specie = characterResponse.getSpecieUrl() + val specieId = characterResponse.getSpecieId() // Then - assertThat(specie).isEqualTo(url1) + assertThat(specieId).isEqualTo(1) + } + + + @Test + fun `should return the id of the planet`() { + // Given + val characterResponse = + CharacterResponse(homeWorldUrl = "https://swapi.dev/api/planets/10/") + + // When + val planetId = characterResponse.getHomeWorldId() + + // Then + assertThat(planetId).isEqualTo(10) } } \ No newline at end of file From 556ccefaf0200155c777213d7b78248c268dcc2b Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 00:53:51 -0300 Subject: [PATCH 25/53] Add all api services --- app/src/main/AndroidManifest.xml | 2 ++ .../wikistarwars/api/HomeWorldService.kt | 15 +++++++++++++++ .../wikistarwars/api/PeopleService.kt | 15 +++++++++++++++ .../wikistarwars/api/SpeciesService.kt | 17 +++++++++++++++++ .../wikistarwars/data/Constants.kt | 6 ++++++ .../wikistarwars/util/GetRetrofitInstance.kt | 14 ++++++++++++++ 6 files changed, 69 insertions(+) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/HomeWorldService.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f8d083e9..59cc34b9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt new file mode 100644 index 00000000..a1f2877c --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt @@ -0,0 +1,15 @@ +package com.arthurgonzaga.wikistarwars.api + +import com.arthurgonzaga.wikistarwars.api.responses.PageResponse +import retrofit2.Call +import retrofit2.http.GET +import retrofit2.http.Query + +interface PeopleService { + + @GET("/people/") + fun getPeoplePage( + @Query("page") page: Int + ): Call + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt new file mode 100644 index 00000000..26e37eae --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt @@ -0,0 +1,17 @@ +package com.arthurgonzaga.wikistarwars.api + +import com.arthurgonzaga.wikistarwars.api.responses.PageResponse +import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse +import retrofit2.Call +import retrofit2.http.GET +import retrofit2.http.Path +import retrofit2.http.Query + +interface SpeciesService { + + @GET("/species/{id}") + fun getSpecie( + @Path("id") id: Int + ): Call + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt new file mode 100644 index 00000000..ea25a98c --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt @@ -0,0 +1,6 @@ +package com.arthurgonzaga.wikistarwars.data + +object Constants { + + const val BASE_URL = "https://swapi.dev/api/" +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt new file mode 100644 index 00000000..884e8bd6 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt @@ -0,0 +1,14 @@ +package com.arthurgonzaga.wikistarwars.util + +import com.arthurgonzaga.wikistarwars.data.Constants +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +inline fun getRetrofitInstance(): T{ + val retrofit = Retrofit.Builder() + .baseUrl(Constants.BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + + return retrofit.create(T::class.java) +} \ No newline at end of file From 877c3e0c30c52509efa7a24c48d29f53cc1470d6 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 01:05:35 -0300 Subject: [PATCH 26/53] Add the forgotten FavoriteService --- .../wikistarwars/api/FavoriteService.kt | 14 ++++++++++++++ .../arthurgonzaga/wikistarwars/data/Constants.kt | 1 + .../wikistarwars/util/GetRetrofitInstance.kt | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt new file mode 100644 index 00000000..361fd059 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt @@ -0,0 +1,14 @@ +package com.arthurgonzaga.wikistarwars.api + +import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse +import retrofit2.Call +import retrofit2.http.POST +import retrofit2.http.Path + +interface FavoriteService { + + @POST("/favorite/{id}") + fun setFavorite( + @Path("id") id: Int + ): Call +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt index ea25a98c..f9343419 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt @@ -3,4 +3,5 @@ package com.arthurgonzaga.wikistarwars.data object Constants { const val BASE_URL = "https://swapi.dev/api/" + const val FAVORITE_API_BASE_URL = "http://private-782d3-starwarsfavorites.apiary-mock.com/" } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt index 884e8bd6..6a4eb817 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt @@ -4,9 +4,9 @@ import com.arthurgonzaga.wikistarwars.data.Constants import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory -inline fun getRetrofitInstance(): T{ +inline fun getRetrofitInstance(baseUrl: String = Constants.BASE_URL): T{ val retrofit = Retrofit.Builder() - .baseUrl(Constants.BASE_URL) + .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .build() From 010469a82c582fa01b1f5443eb6fa36ed78dc9f0 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 12:46:53 -0300 Subject: [PATCH 27/53] Implement Hilt --- .../wikistarwars/di/AppApplication.kt | 7 +++++ .../wikistarwars/di/ApplicationModule.kt | 25 +++++++++++++++++ .../wikistarwars/di/DetailModule.kt | 28 +++++++++++++++++++ .../repository/interfaces/DetailRepository.kt | 6 ++++ .../ui/fragments/DetailFragment.kt | 7 +++++ .../wikistarwars/viewmodel/DetailViewModel.kt | 13 +++++++++ 6 files changed, 86 insertions(+) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/di/AppApplication.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/AppApplication.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/AppApplication.kt new file mode 100644 index 00000000..76755a20 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/AppApplication.kt @@ -0,0 +1,7 @@ +package com.arthurgonzaga.wikistarwars.di + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class AppApplication: Application() \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt new file mode 100644 index 00000000..6698892f --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt @@ -0,0 +1,25 @@ +package com.arthurgonzaga.wikistarwars.di + +import com.arthurgonzaga.wikistarwars.api.FavoriteService +import com.arthurgonzaga.wikistarwars.api.PeopleService +import com.arthurgonzaga.wikistarwars.data.Constants +import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object ApplicationModule { + + @Provides + @Singleton + fun providePeopleService(): PeopleService = getRetrofitInstance() + + @Provides + @Singleton + fun provideFavoriteService(): FavoriteService = getRetrofitInstance(Constants.FAVORITE_API_BASE_URL) + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt new file mode 100644 index 00000000..8132f84c --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt @@ -0,0 +1,28 @@ +package com.arthurgonzaga.wikistarwars.di + +import com.arthurgonzaga.wikistarwars.api.HomeWorldService +import com.arthurgonzaga.wikistarwars.api.SpeciesService +import com.arthurgonzaga.wikistarwars.repository.interfaces.DetailRepository +import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent +import dagger.hilt.android.scopes.ViewModelScoped + +@Module +@InstallIn(ViewModelComponent::class) +object DetailModule { + + @Provides + @ViewModelScoped + fun provideSpeciesService(): SpeciesService = getRetrofitInstance() + + @Provides + @ViewModelScoped + fun provideHomeWorldService(): HomeWorldService = getRetrofitInstance() + + @Provides + @ViewModelScoped + fun provideDetailRepository(): DetailRepository = TODO() +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt new file mode 100644 index 00000000..7a5142e9 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt @@ -0,0 +1,6 @@ +package com.arthurgonzaga.wikistarwars.repository.interfaces + +interface DetailRepository { + + fun get +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt index c7d99dba..106937b3 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -5,9 +5,13 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.viewModels import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding +import com.arthurgonzaga.wikistarwars.viewmodel.DetailViewModel +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject /** @@ -15,10 +19,13 @@ import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding * This fragment will display full information about a character * */ +@AndroidEntryPoint class DetailFragment : Fragment() { private lateinit var binding: FragmentDetailBinding + private val vm: DetailViewModel by viewModels() + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt new file mode 100644 index 00000000..96961931 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt @@ -0,0 +1,13 @@ +package com.arthurgonzaga.wikistarwars.viewmodel + +import androidx.lifecycle.ViewModel +import com.arthurgonzaga.wikistarwars.repository.interfaces.DetailRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class DetailViewModel @Inject constructor( + //detailRepository: DetailRepository +): ViewModel() { + +} \ No newline at end of file From 49d795278c30d266738f7996095d18c5bcf5eead Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 13:13:02 -0300 Subject: [PATCH 28/53] Update CharacterResponse and add tests --- .../api/responses/CharacterResponse.kt | 14 +++---- .../api/responses/CharacterResponseTest.kt | 39 ++++++++++++++++--- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt index 657aa8dd..1f0f9a62 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt @@ -20,16 +20,16 @@ data class CharacterResponse( @SerializedName("homeworld") private val homeWorldUrl: String = "", private val speciesUrls: List = listOf(), - val url: String = "" + private val url: String = "" ) { + var id: Int = url.split("people/")[1].replace("/","").toInt() + private set - fun getHomeWorldId(): Int? { - return homeWorldUrl.split("planets/")[1].replace("/","").toIntOrNull() - } + var homeWorldId: Int? = homeWorldUrl.split("planets/")[1].replace("/","").toIntOrNull() + private set + var specieId: Int? = speciesUrls.firstOrNull()?.split("species/")?.get(1)?.replace("/","")?.toIntOrNull() + private set - fun getSpecieId(): Int? { - return speciesUrls.firstOrNull()?.split("species/")?.get(1)?.replace("/","")?.toIntOrNull() - } } \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt index 82ce2f03..9a54525e 100644 --- a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt @@ -13,10 +13,14 @@ class CharacterResponseTest { fun `should return null when the list is empty`() { // Given - val characterResponse = CharacterResponse(speciesUrls = listOf()) + val characterResponse = CharacterResponse( + speciesUrls = listOf(), + homeWorldUrl = "planets/1/", + url = "people/1/" + ) // When - val specieId = characterResponse.getSpecieId() + val specieId = characterResponse.specieId // Then assertThat(specieId).isEqualTo(null) @@ -29,10 +33,14 @@ class CharacterResponseTest { val url2 = "https://swapi.dev/api/species/33/" // Given - val characterResponse = CharacterResponse(speciesUrls = listOf(url1, url2)) + val characterResponse = CharacterResponse( + speciesUrls = listOf(url1, url2), + homeWorldUrl = "planets/1/", + url = "people/1/" + ) // When - val specieId = characterResponse.getSpecieId() + val specieId = characterResponse.specieId // Then assertThat(specieId).isEqualTo(1) @@ -43,12 +51,31 @@ class CharacterResponseTest { fun `should return the id of the planet`() { // Given val characterResponse = - CharacterResponse(homeWorldUrl = "https://swapi.dev/api/planets/10/") + CharacterResponse( + homeWorldUrl = "https://swapi.dev/api/planets/10/", + url = "people/1/" + ) // When - val planetId = characterResponse.getHomeWorldId() + val planetId = characterResponse.homeWorldId // Then assertThat(planetId).isEqualTo(10) } + + @Test + fun `should return the id of the character`() { + // Given + val characterResponse = + CharacterResponse( + homeWorldUrl = "planets/1/", + url = "https://swapi.dev/api/people/45/" + ) + + // When + val planetId = characterResponse.id + + // Then + assertThat(planetId).isEqualTo(45) + } } \ No newline at end of file From 2c2f0c8590e60496beb7f484c7ea7f08e0530e9e Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 13:51:16 -0300 Subject: [PATCH 29/53] Implement Room Database --- app/build.gradle | 8 +++++ .../wikistarwars/data/WikiStarWarsDB.kt | 16 ++++++++++ .../wikistarwars/data/dao/CharacterDAO.kt | 8 +++++ .../data/model/CharacterEntity.kt | 31 +++++++++++++++++++ .../wikistarwars/di/ApplicationModule.kt | 18 ++++++++++- 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt diff --git a/app/build.gradle b/app/build.gradle index 021f5daf..0c9b5609 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,6 +16,14 @@ android { versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + // Exporting room schema + + javaCompileOptions { + annotationProcessorOptions { + arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] + } + } } buildTypes { diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt new file mode 100644 index 00000000..cbc48eee --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt @@ -0,0 +1,16 @@ +package com.arthurgonzaga.wikistarwars.data + +import androidx.room.Database +import androidx.room.RoomDatabase +import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity + +@Database(entities = [CharacterEntity::class], version = 1) +abstract class WikiStarWarsDB: RoomDatabase() { + + abstract fun charactersDAO(): CharacterDAO + + companion object { + const val NAME = "wiki_starwars_db" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt new file mode 100644 index 00000000..64f9061a --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -0,0 +1,8 @@ +package com.arthurgonzaga.wikistarwars.data.dao + +import androidx.room.Dao + +@Dao +interface CharacterDAO { + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt new file mode 100644 index 00000000..6b43164f --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt @@ -0,0 +1,31 @@ +package com.arthurgonzaga.wikistarwars.data.model + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity +data class CharacterEntity( + @PrimaryKey + val id: Int, + val name: String = "", + val height: String = "", + val weight: String = "", + @ColumnInfo(name = "hair_color") + val hairColor: String = "", + @ColumnInfo(name = "skin_color") + val skinColor: String = "", + @ColumnInfo(name = "eye_color") + val eyeColor: String = "", + @ColumnInfo(name = "birth_year") + val birthYear: String = "", + val gender: String = "", + @ColumnInfo(name = "specie_name") + val specieName: String = "", + @ColumnInfo(name = "home_world_name") + val homeWoldName: String = "", + @ColumnInfo(name = "is_favorite") + val isFavorite: Boolean = false, + @ColumnInfo(name = "is_synchronized_with_backend") + val isSynchronizedWithBackend: Boolean = false, +) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt index 6698892f..d741e8b9 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt @@ -1,12 +1,17 @@ package com.arthurgonzaga.wikistarwars.di +import android.app.Application +import android.content.Context +import androidx.room.Room import com.arthurgonzaga.wikistarwars.api.FavoriteService import com.arthurgonzaga.wikistarwars.api.PeopleService import com.arthurgonzaga.wikistarwars.data.Constants +import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import javax.inject.Singleton @@ -20,6 +25,17 @@ object ApplicationModule { @Provides @Singleton - fun provideFavoriteService(): FavoriteService = getRetrofitInstance(Constants.FAVORITE_API_BASE_URL) + fun provideFavoriteService(): FavoriteService = + getRetrofitInstance(Constants.FAVORITE_API_BASE_URL) + + @Provides + @Singleton + fun provideRoomDatabase( + application: Application + ): WikiStarWarsDB = Room.databaseBuilder( + application, + WikiStarWarsDB::class.java, + WikiStarWarsDB.NAME + ).fallbackToDestructiveMigration().build() } \ No newline at end of file From 697d76464777d731bee4d367b69b425b20efaccb Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 18:18:53 -0300 Subject: [PATCH 30/53] Change package --- .../wikistarwars/api/responses/CharacterResponse.kt | 1 + .../wikistarwars/api/{ => services}/FavoriteService.kt | 2 +- .../wikistarwars/api/{ => services}/HomeWorldService.kt | 2 +- .../wikistarwars/api/{ => services}/PeopleService.kt | 2 +- .../wikistarwars/api/{ => services}/SpeciesService.kt | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) rename app/src/main/java/com/arthurgonzaga/wikistarwars/api/{ => services}/FavoriteService.kt (80%) rename app/src/main/java/com/arthurgonzaga/wikistarwars/api/{ => services}/HomeWorldService.kt (84%) rename app/src/main/java/com/arthurgonzaga/wikistarwars/api/{ => services}/PeopleService.kt (80%) rename app/src/main/java/com/arthurgonzaga/wikistarwars/api/{ => services}/SpeciesService.kt (84%) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt index 1f0f9a62..4415c429 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt @@ -1,6 +1,7 @@ package com.arthurgonzaga.wikistarwars.api.responses +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.google.gson.annotations.SerializedName data class CharacterResponse( diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt similarity index 80% rename from app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt rename to app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt index 361fd059..b4e4dcaa 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/FavoriteService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt @@ -1,4 +1,4 @@ -package com.arthurgonzaga.wikistarwars.api +package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse import retrofit2.Call diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/HomeWorldService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt similarity index 84% rename from app/src/main/java/com/arthurgonzaga/wikistarwars/api/HomeWorldService.kt rename to app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt index f050f5c4..fbbc79f3 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/HomeWorldService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt @@ -1,4 +1,4 @@ -package com.arthurgonzaga.wikistarwars.api +package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.HomeWorldResponse import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt similarity index 80% rename from app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt rename to app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt index a1f2877c..44ceaaad 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/PeopleService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt @@ -1,4 +1,4 @@ -package com.arthurgonzaga.wikistarwars.api +package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.PageResponse import retrofit2.Call diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt similarity index 84% rename from app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt rename to app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt index 26e37eae..a28c9c96 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/SpeciesService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt @@ -1,4 +1,4 @@ -package com.arthurgonzaga.wikistarwars.api +package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.PageResponse import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse From 51caef9dbf7e267eea6da721d0c9ce00880b329c Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 18:20:16 -0300 Subject: [PATCH 31/53] Add static factory method pattern --- .../data/model/CharacterEntity.kt | 4 +-- .../wikistarwars/util/CharacterMappers.kt | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt index 6b43164f..b621d0fe 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt @@ -21,9 +21,9 @@ data class CharacterEntity( val birthYear: String = "", val gender: String = "", @ColumnInfo(name = "specie_name") - val specieName: String = "", + val specieName: String? = null, @ColumnInfo(name = "home_world_name") - val homeWoldName: String = "", + val homeWoldName: String? = null, @ColumnInfo(name = "is_favorite") val isFavorite: Boolean = false, @ColumnInfo(name = "is_synchronized_with_backend") diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt new file mode 100644 index 00000000..0c6d2fc9 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt @@ -0,0 +1,33 @@ +package com.arthurgonzaga.wikistarwars.util + +import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity + +fun CharacterResponse.toEntity( + specieName: String, + homeWorldName: String, +) = CharacterEntity( + id = this.id, + height= this.height, + weight= this.weight, + hairColor= this.hairColor, + skinColor= this.skinColor, + eyeColor= this.eyeColor, + birthYear= this.birthYear, + gender= this.gender, + specieName = specieName, + homeWoldName = homeWorldName, +) + +fun CharacterResponse.toEntity() = CharacterEntity( + id = this.id, + height= this.height, + weight= this.weight, + hairColor= this.hairColor, + skinColor= this.skinColor, + eyeColor= this.eyeColor, + birthYear= this.birthYear, + gender= this.gender, + specieName = null, + homeWoldName = null, +) \ No newline at end of file From 839260817ccd67264e6c9a097f5248a28265ed8c Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sat, 25 Sep 2021 18:21:22 -0300 Subject: [PATCH 32/53] Add Paging RemoteMediator --- .../wikistarwars/data/WikiStarWarsDB.kt | 5 +- .../wikistarwars/data/dao/CharacterDAO.kt | 6 + .../wikistarwars/data/dao/RemoteKeysDAO.kt | 20 ++++ .../wikistarwars/data/model/RemoteKeys.kt | 12 ++ .../paging/CharacterRemoteMediator.kt | 113 ++++++++++++++++++ 5 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/RemoteKeys.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt index cbc48eee..4810ed36 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/WikiStarWarsDB.kt @@ -3,12 +3,15 @@ package com.arthurgonzaga.wikistarwars.data import androidx.room.Database import androidx.room.RoomDatabase import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO +import com.arthurgonzaga.wikistarwars.data.dao.RemoteKeysDAO import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys -@Database(entities = [CharacterEntity::class], version = 1) +@Database(entities = [CharacterEntity::class, RemoteKeys::class], version = 1) abstract class WikiStarWarsDB: RoomDatabase() { abstract fun charactersDAO(): CharacterDAO + abstract fun remoteKeysDAO(): RemoteKeysDAO companion object { const val NAME = "wiki_starwars_db" diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 64f9061a..b706e849 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -1,8 +1,14 @@ package com.arthurgonzaga.wikistarwars.data.dao import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity @Dao interface CharacterDAO { + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertAll(characterEntity: List) + } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt new file mode 100644 index 00000000..b2c0ca4d --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt @@ -0,0 +1,20 @@ +package com.arthurgonzaga.wikistarwars.data.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys + +@Dao +interface RemoteKeysDAO { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertAll(remoteKey: List) + + @Query("SELECT * FROM remote_keys WHERE characterId = :characterId") + suspend fun remoteKeysById(characterId: Int): RemoteKeys? + + @Query("DELETE FROM remote_keys") + suspend fun clearRemoteKeys() +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/RemoteKeys.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/RemoteKeys.kt new file mode 100644 index 00000000..16955cd8 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/RemoteKeys.kt @@ -0,0 +1,12 @@ +package com.arthurgonzaga.wikistarwars.data.model + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "remote_keys") +data class RemoteKeys( + @PrimaryKey + val characterId: Int, + val prevKey: Int?, + val nextKey: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt new file mode 100644 index 00000000..94f94dd6 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -0,0 +1,113 @@ +package com.arthurgonzaga.wikistarwars.repository.paging + +import androidx.paging.ExperimentalPagingApi +import androidx.paging.LoadType +import androidx.paging.PagingState +import androidx.paging.RemoteMediator +import androidx.room.withTransaction +import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse +import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys +import com.arthurgonzaga.wikistarwars.util.toEntity +import retrofit2.HttpException +import retrofit2.await +import java.io.IOException + + +@ExperimentalPagingApi +class CharacterRemoteMediator( + private val service: PeopleService, + private val database: WikiStarWarsDB +) : RemoteMediator() { + + // Set to refresh every time i + override suspend fun initialize(): InitializeAction { + return InitializeAction.LAUNCH_INITIAL_REFRESH + } + + override suspend fun load( + loadType: LoadType, + state: PagingState + ): MediatorResult { + + val page: Int = when (loadType) { + LoadType.REFRESH -> STARTING_PAGE_INDEX + + LoadType.PREPEND -> { + val remoteKeys = getRemoteKeyForFirstItem(state) + val prevKey = remoteKeys?.prevKey ?: return MediatorResult.Success( + endOfPaginationReached = remoteKeys != null + ) + + prevKey + } + + LoadType.APPEND -> { + val remoteKeys = getRemoteKeyForLastItem(state) + val nextKey = remoteKeys?.nextKey ?: return MediatorResult.Success( + endOfPaginationReached = remoteKeys != null + ) + nextKey + } + } + + return try { + + // Get the page result + val response = service.getPeoplePage(page).await() + + database.withTransaction { + + val keys = response.result.map { + RemoteKeys( + characterId = it.id, + nextKey = response.getNextPageIndex(), + prevKey = response.getPreviousIndex(), + ) + } + + val characters = response.result.map { + it.toEntity() + } + + database.remoteKeysDAO().insertAll(keys) + database.charactersDAO().insertAll(characters) + } + + MediatorResult.Success( + endOfPaginationReached = response.getNextPageIndex() == null + ) + } catch (e: IOException) { + MediatorResult.Error(e) + } catch (e: HttpException) { + MediatorResult.Error(e) + } + } + + + private suspend fun getRemoteKeyForFirstItem(state: PagingState): RemoteKeys? { + // Get the first page that was retrieved, that contained items. + // From that first page, get the first item + return state.pages.firstOrNull { it.data.isNotEmpty() }?.data?.firstOrNull() + ?.let { characterResponse -> + // Get the remote keys of the first items retrieved + database.remoteKeysDAO().remoteKeysById(characterResponse.id) + } + } + + private suspend fun getRemoteKeyForLastItem(state: PagingState): RemoteKeys? { + // Get the last page that was retrieved, that contained items. + // From that last page, get the last item + return state.pages.lastOrNull { it.data.isNotEmpty() }?.data?.lastOrNull() + ?.let { characterResponse -> + // Get the remote keys of the last item retrieved + database.remoteKeysDAO().remoteKeysById(characterResponse.id) + } + } + + + companion object { + private const val STARTING_PAGE_INDEX = 1 + } +} \ No newline at end of file From f38c6879d13ece3ede208ccafbe51d404ea1a238 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sun, 26 Sep 2021 01:53:14 -0300 Subject: [PATCH 33/53] Implement RemoteMediator, improve UI and update models --- .../1.json | 138 ++++++++++++++++++ app/src/main/AndroidManifest.xml | 1 + .../api/responses/CharacterResponse.kt | 9 +- .../api/responses/PageResponse.kt | 5 +- .../api/services/PeopleService.kt | 2 +- .../wikistarwars/data/dao/CharacterDAO.kt | 8 + .../wikistarwars/data/dao/RemoteKeysDAO.kt | 10 +- .../data/model/CharacterEntity.kt | 2 +- .../wikistarwars/di/ApplicationModule.kt | 6 +- .../wikistarwars/di/DetailModule.kt | 4 +- .../wikistarwars/di/HomeComponent.kt | 25 ++++ .../repository/HomeRepositoryImpl.kt | 29 ++++ .../repository/interfaces/DetailRepository.kt | 2 +- .../repository/interfaces/HomeRepository.kt | 11 ++ .../paging/CharacterRemoteMediator.kt | 125 ++++++++++------ .../wikistarwars/ui/MainActivity.kt | 8 + .../ui/adapters/CharacterAdapter.kt | 66 +++++++++ .../wikistarwars/ui/fragments/HomeFragment.kt | 27 +++- .../wikistarwars/util/CharacterMappers.kt | 31 ++-- .../wikistarwars/viewmodel/HomeViewModel.kt | 29 ++++ app/src/main/res/layout/divider_layout.xml | 1 - app/src/main/res/layout/fragment_home.xml | 55 +++++-- app/src/main/res/layout/home_row_layout.xml | 1 + app/src/main/res/layout/rv_character_item.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../api/responses/CharacterResponseTest.kt | 4 +- .../api/responses/PageResponseTest.kt | 8 +- 27 files changed, 517 insertions(+), 92 deletions(-) create mode 100644 app/schemas/com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB/1.json create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt diff --git a/app/schemas/com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB/1.json b/app/schemas/com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB/1.json new file mode 100644 index 00000000..ab1e09de --- /dev/null +++ b/app/schemas/com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB/1.json @@ -0,0 +1,138 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "606fe7d41fc767aace460ba4b8b7991a", + "entities": [ + { + "tableName": "characters", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `name` TEXT NOT NULL, `height` TEXT NOT NULL, `weight` TEXT NOT NULL, `hair_color` TEXT NOT NULL, `skin_color` TEXT NOT NULL, `eye_color` TEXT NOT NULL, `birth_year` TEXT NOT NULL, `gender` TEXT NOT NULL, `specie_name` TEXT, `home_world_name` TEXT, `is_favorite` INTEGER NOT NULL, `is_synchronized_with_backend` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "height", + "columnName": "height", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "weight", + "columnName": "weight", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hairColor", + "columnName": "hair_color", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "skinColor", + "columnName": "skin_color", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "eyeColor", + "columnName": "eye_color", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "birthYear", + "columnName": "birth_year", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "gender", + "columnName": "gender", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "specieName", + "columnName": "specie_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "homeWoldName", + "columnName": "home_world_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isFavorite", + "columnName": "is_favorite", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isSynchronizedWithBackend", + "columnName": "is_synchronized_with_backend", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "remote_keys", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`characterId` INTEGER NOT NULL, `prevKey` INTEGER, `nextKey` INTEGER, PRIMARY KEY(`characterId`))", + "fields": [ + { + "fieldPath": "characterId", + "columnName": "characterId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "prevKey", + "columnName": "prevKey", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "nextKey", + "columnName": "nextKey", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "characterId" + ], + "autoGenerate": false + }, + "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, '606fe7d41fc767aace460ba4b8b7991a')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 59cc34b9..6f3857e3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ = listOf(), - private val url: String = "" + private val url: String ) { - var id: Int = url.split("people/")[1].replace("/","").toInt() - private set + fun getId(): Int{ + return url.split("people/")[1].replace("/","").toInt() + } var homeWorldId: Int? = homeWorldUrl.split("planets/")[1].replace("/","").toIntOrNull() private set diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt index 5727d24b..a1ae9daf 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponse.kt @@ -4,7 +4,7 @@ data class PageResponse( val count: Int, private val next: String?, private val previous: String?, - val result: List + val results: List = listOf() ){ fun getNextPageIndex(): Int? { @@ -15,4 +15,7 @@ data class PageResponse( return previous?.split("page=")?.get(1)?.toIntOrNull() } + override fun toString(): String { + return "PageResponse(count=$count, next=${getNextPageIndex()}, previous=${getPreviousIndex()}, result=$results)" + } } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt index 44ceaaad..6ad1565c 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt @@ -7,7 +7,7 @@ import retrofit2.http.Query interface PeopleService { - @GET("/people/") + @GET("people") fun getPeoplePage( @Query("page") page: Int ): Call diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index b706e849..0197f4b6 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -1,8 +1,10 @@ package com.arthurgonzaga.wikistarwars.data.dao +import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy +import androidx.room.Query import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity @Dao @@ -11,4 +13,10 @@ interface CharacterDAO { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(characterEntity: List) + + @Query("SELECT * FROM characters") + fun getAllCharacters(): PagingSource + + @Query("DELETE FROM characters") + fun clearCharacters() } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt index b2c0ca4d..0da0fd44 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt @@ -12,9 +12,15 @@ interface RemoteKeysDAO { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertAll(remoteKey: List) - @Query("SELECT * FROM remote_keys WHERE characterId = :characterId") - suspend fun remoteKeysById(characterId: Int): RemoteKeys? + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insert(remoteKey: RemoteKeys) + + @Query("SELECT * FROM remote_keys WHERE characterId = :id") + suspend fun remoteKeysById(id: Int): RemoteKeys? @Query("DELETE FROM remote_keys") suspend fun clearRemoteKeys() + + @Query("SELECT * FROM remote_keys") + suspend fun getRemoteKeys(): List } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt index b621d0fe..9cd6a1d9 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt @@ -4,7 +4,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -@Entity +@Entity(tableName = "characters") data class CharacterEntity( @PrimaryKey val id: Int, diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt index d741e8b9..d0495b93 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt @@ -1,17 +1,15 @@ package com.arthurgonzaga.wikistarwars.di import android.app.Application -import android.content.Context import androidx.room.Room -import com.arthurgonzaga.wikistarwars.api.FavoriteService -import com.arthurgonzaga.wikistarwars.api.PeopleService +import com.arthurgonzaga.wikistarwars.api.services.FavoriteService +import com.arthurgonzaga.wikistarwars.api.services.PeopleService import com.arthurgonzaga.wikistarwars.data.Constants import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance import dagger.Module import dagger.Provides import dagger.hilt.InstallIn -import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import javax.inject.Singleton diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt index 8132f84c..62a8a7d1 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt @@ -1,7 +1,7 @@ package com.arthurgonzaga.wikistarwars.di -import com.arthurgonzaga.wikistarwars.api.HomeWorldService -import com.arthurgonzaga.wikistarwars.api.SpeciesService +import com.arthurgonzaga.wikistarwars.api.services.HomeWorldService +import com.arthurgonzaga.wikistarwars.api.services.SpeciesService import com.arthurgonzaga.wikistarwars.repository.interfaces.DetailRepository import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance import dagger.Module diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt new file mode 100644 index 00000000..1aecbc3e --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt @@ -0,0 +1,25 @@ +package com.arthurgonzaga.wikistarwars.di + +import androidx.paging.ExperimentalPagingApi +import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.repository.HomeRepositoryImpl +import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent +import dagger.hilt.android.scopes.ViewModelScoped + +@Module +@InstallIn(ViewModelComponent::class) +object HomeComponent { + + @ExperimentalPagingApi + @Provides + @ViewModelScoped + fun provideHomeRepository( + service: PeopleService, + db: WikiStarWarsDB + ): HomeRepository = HomeRepositoryImpl(service, db) +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt new file mode 100644 index 00000000..db8509b7 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -0,0 +1,29 @@ +package com.arthurgonzaga.wikistarwars.repository + +import androidx.lifecycle.LiveData +import androidx.paging.* +import androidx.room.RoomDatabase +import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import com.arthurgonzaga.wikistarwars.repository.paging.CharacterRemoteMediator +import javax.inject.Inject + + +@ExperimentalPagingApi +class HomeRepositoryImpl @Inject constructor( + private val service: PeopleService, + private val database: WikiStarWarsDB +): HomeRepository{ + + override fun getCharacters(): LiveData> { + val pagingSourceFactory = { database.charactersDAO().getAllCharacters() } + return Pager( + config = PagingConfig(pageSize = 10, enablePlaceholders = false), + pagingSourceFactory = pagingSourceFactory, + initialKey = 1, + remoteMediator = CharacterRemoteMediator(service, database) + ).liveData + } +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt index 7a5142e9..ddfb5796 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt @@ -2,5 +2,5 @@ package com.arthurgonzaga.wikistarwars.repository.interfaces interface DetailRepository { - fun get + //fun get } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt new file mode 100644 index 00000000..c6985f59 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt @@ -0,0 +1,11 @@ +package com.arthurgonzaga.wikistarwars.repository.interfaces + +import androidx.lifecycle.LiveData +import androidx.paging.PagingData +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import kotlinx.coroutines.flow.Flow + +interface HomeRepository { + + fun getCharacters(): LiveData> +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt index 94f94dd6..5e345d6e 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -1,5 +1,6 @@ package com.arthurgonzaga.wikistarwars.repository.paging +import android.util.Log import androidx.paging.ExperimentalPagingApi import androidx.paging.LoadType import androidx.paging.PagingState @@ -8,47 +9,39 @@ import androidx.room.withTransaction import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse import com.arthurgonzaga.wikistarwars.api.services.PeopleService import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys import com.arthurgonzaga.wikistarwars.util.toEntity import retrofit2.HttpException import retrofit2.await import java.io.IOException +import java.io.InvalidObjectException @ExperimentalPagingApi class CharacterRemoteMediator( private val service: PeopleService, private val database: WikiStarWarsDB -) : RemoteMediator() { +) : RemoteMediator() { // Set to refresh every time i override suspend fun initialize(): InitializeAction { + Log.i(TAG, "initializing") return InitializeAction.LAUNCH_INITIAL_REFRESH } override suspend fun load( loadType: LoadType, - state: PagingState + state: PagingState ): MediatorResult { - val page: Int = when (loadType) { - LoadType.REFRESH -> STARTING_PAGE_INDEX - - LoadType.PREPEND -> { - val remoteKeys = getRemoteKeyForFirstItem(state) - val prevKey = remoteKeys?.prevKey ?: return MediatorResult.Success( - endOfPaginationReached = remoteKeys != null - ) - - prevKey + val pageKeyData = getKeyPageData(loadType, state) + val page = when (pageKeyData) { + is MediatorResult.Success -> { + return pageKeyData } - - LoadType.APPEND -> { - val remoteKeys = getRemoteKeyForLastItem(state) - val nextKey = remoteKeys?.nextKey ?: return MediatorResult.Success( - endOfPaginationReached = remoteKeys != null - ) - nextKey + else -> { + pageKeyData as Int } } @@ -56,18 +49,23 @@ class CharacterRemoteMediator( // Get the page result val response = service.getPeoplePage(page).await() - + val isEndOfList = response.results.isEmpty() database.withTransaction { - val keys = response.result.map { - RemoteKeys( - characterId = it.id, - nextKey = response.getNextPageIndex(), - prevKey = response.getPreviousIndex(), - ) + // clear all tables in the database + if (loadType == LoadType.REFRESH) { + database.remoteKeysDAO().clearRemoteKeys() + database.charactersDAO().clearCharacters() } - val characters = response.result.map { + val prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1 + val nextKey = if (isEndOfList) null else page + 1 + + val keys = response.results.map { + RemoteKeys(characterId = it.getId(), prevKey = prevKey, nextKey = nextKey) + } + + val characters = response.results.map { it.toEntity() } @@ -79,35 +77,78 @@ class CharacterRemoteMediator( endOfPaginationReached = response.getNextPageIndex() == null ) } catch (e: IOException) { + Log.e(TAG, "load: ", e) MediatorResult.Error(e) } catch (e: HttpException) { + Log.e(TAG, "load: ", e) MediatorResult.Error(e) } } - - private suspend fun getRemoteKeyForFirstItem(state: PagingState): RemoteKeys? { - // Get the first page that was retrieved, that contained items. - // From that first page, get the first item - return state.pages.firstOrNull { it.data.isNotEmpty() }?.data?.firstOrNull() - ?.let { characterResponse -> - // Get the remote keys of the first items retrieved - database.remoteKeysDAO().remoteKeysById(characterResponse.id) + /** + * this returns the page key or the final end of list success result + */ + suspend fun getKeyPageData(loadType: LoadType, state: PagingState): Any? { + return when (loadType) { + LoadType.REFRESH -> { + Log.i(TAG, "LoadType.REFRESH") + val remoteKeys = getClosestRemoteKey(state) + remoteKeys?.nextKey?.minus(1) ?: STARTING_PAGE_INDEX } + LoadType.APPEND -> { + Log.i(TAG, "LoadType.REFRESH") + val remoteKeys = getLastRemoteKey(state) + ?: throw InvalidObjectException("Remote key should not be null for $loadType") + remoteKeys.nextKey + } + LoadType.PREPEND -> { + Log.i(TAG, "LoadType.PREPEND") + val remoteKeys = getFirstRemoteKey(state) + ?: throw InvalidObjectException("Invalid state, key should not be null") + //end of list condition reached + remoteKeys.prevKey ?: return MediatorResult.Success(endOfPaginationReached = true) + remoteKeys.prevKey + } + } + } + + + /** + * get the last remote key inserted which had the data + */ + private suspend fun getLastRemoteKey(state: PagingState): RemoteKeys? { + return state.pages + .lastOrNull { it.data.isNotEmpty() } + ?.data?.lastOrNull() + ?.let { character -> database.remoteKeysDAO().remoteKeysById(character.id) } + ?: RemoteKeys(0, null, 2) } - private suspend fun getRemoteKeyForLastItem(state: PagingState): RemoteKeys? { - // Get the last page that was retrieved, that contained items. - // From that last page, get the last item - return state.pages.lastOrNull { it.data.isNotEmpty() }?.data?.lastOrNull() - ?.let { characterResponse -> - // Get the remote keys of the last item retrieved - database.remoteKeysDAO().remoteKeysById(characterResponse.id) + /** + * get the first remote key inserted which had the data + */ + private suspend fun getFirstRemoteKey(state: PagingState): RemoteKeys? { + return state.pages + .firstOrNull() { it.data.isNotEmpty() } + ?.data?.firstOrNull() + ?.let { character -> database.remoteKeysDAO().remoteKeysById(character.id) } + ?: RemoteKeys(0, null, 2) + } + + /** + * get the closest remote key inserted which had the data + */ + private suspend fun getClosestRemoteKey(state: PagingState): RemoteKeys? { + return state.anchorPosition?.let { position -> + state.closestItemToPosition(position)?.id?.let { id -> + database.remoteKeysDAO().remoteKeysById(id) } + } } companion object { private const val STARTING_PAGE_INDEX = 1 + private const val TAG = "CharacterRemoteMediator" } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt index 53095193..66c5a7d7 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt @@ -3,10 +3,18 @@ package com.arthurgonzaga.wikistarwars.ui import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.arthurgonzaga.wikistarwars.R +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + + } + + override fun onBackPressed() { + super.onBackPressed() + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt new file mode 100644 index 00000000..5512317f --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt @@ -0,0 +1,66 @@ +package com.arthurgonzaga.wikistarwars.ui.adapters + +import android.app.Application +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.core.content.res.ResourcesCompat +import androidx.paging.PagingDataAdapter +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import com.arthurgonzaga.wikistarwars.databinding.RvCharacterItemBinding +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class CharacterAdapter @Inject constructor( + @ApplicationContext private val context: Context +) : PagingDataAdapter(DiffUtilCallback) { + + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val binding = RvCharacterItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return VH(binding) + } + + override fun onBindViewHolder(holder: VH, position: Int) { + val characterEntity = getItem(position) + + holder.title.text = characterEntity?.name + holder.gender.text = characterEntity?.gender + holder.subtitle.text = + context.getString(R.string.rv_subtitle, characterEntity?.height, characterEntity?.weight) + + if (characterEntity?.isFavorite == true) { + val drawable = ResourcesCompat.getDrawable( + context.resources, + R.drawable.ic_favorite, + context.theme + ) + holder.favoriteButton.setImageDrawable(drawable) + } + } + + class VH(binding: RvCharacterItemBinding) : RecyclerView.ViewHolder(binding.root){ + val title = binding.title + val gender = binding.gender + val subtitle = binding.subtitle + val favoriteButton = binding.favoriteButton + } + + + object DiffUtilCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: CharacterEntity, newItem: CharacterEntity): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame( + oldItem: CharacterEntity, + newItem: CharacterEntity + ): Boolean { + return oldItem == newItem + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index 46fd14e9..c0fae1f3 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -5,11 +5,22 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding +import com.arthurgonzaga.wikistarwars.ui.adapters.CharacterAdapter +import com.arthurgonzaga.wikistarwars.viewmodel.HomeViewModel +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch +import javax.inject.Inject +import androidx.recyclerview.widget.LinearLayoutManager + + + /** @@ -20,17 +31,22 @@ import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding * some information about the characters * */ +@AndroidEntryPoint class HomeFragment : Fragment() { private lateinit var binding: FragmentHomeBinding + private val vm: HomeViewModel by viewModels() + + @Inject lateinit var characterAdapter: CharacterAdapter override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = FragmentHomeBinding.inflate(inflater) - + binding.recyclerView.apply { + adapter = characterAdapter + } return binding.root } @@ -38,6 +54,13 @@ class HomeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + + vm.characters.observe(viewLifecycleOwner){ pagingData -> + viewLifecycleOwner.lifecycleScope.launch { + characterAdapter.submitData(pagingData) + } + } + binding.row.favoriteListButton.setOnClickListener { findNavController().navigate(R.id.goToFavoritesListFragment) } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt index 0c6d2fc9..50a06e08 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt @@ -1,5 +1,6 @@ package com.arthurgonzaga.wikistarwars.util +import android.util.Log import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity @@ -7,7 +8,7 @@ fun CharacterResponse.toEntity( specieName: String, homeWorldName: String, ) = CharacterEntity( - id = this.id, + id = this.getId(), height= this.height, weight= this.weight, hairColor= this.hairColor, @@ -19,15 +20,19 @@ fun CharacterResponse.toEntity( homeWoldName = homeWorldName, ) -fun CharacterResponse.toEntity() = CharacterEntity( - id = this.id, - height= this.height, - weight= this.weight, - hairColor= this.hairColor, - skinColor= this.skinColor, - eyeColor= this.eyeColor, - birthYear= this.birthYear, - gender= this.gender, - specieName = null, - homeWoldName = null, -) \ No newline at end of file +fun CharacterResponse.toEntity(): CharacterEntity{ + Log.d("Mappers", "toEntity: id: ${this.getId()}") + return CharacterEntity( + id = this.getId(), + name= this.name, + height= this.height, + weight= this.weight, + hairColor= this.hairColor, + skinColor= this.skinColor, + eyeColor= this.eyeColor, + birthYear= this.birthYear, + gender= this.gender, + specieName = null, + homeWoldName = null, + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt new file mode 100644 index 00000000..0f7098a9 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt @@ -0,0 +1,29 @@ +package com.arthurgonzaga.wikistarwars.viewmodel + +import android.util.Log +import androidx.lifecycle.* +import androidx.paging.PagingData +import androidx.paging.cachedIn +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class HomeViewModel @Inject constructor( + val repository: HomeRepository +) : ViewModel(), LifecycleObserver { + + val characters: LiveData> = getCharactersPagingData() + + + private fun getCharactersPagingData(): LiveData>{ + Log.i(TAG, "getting CharactersPagingData") + return repository.getCharacters().cachedIn(viewModelScope) + } + + + companion object { + const val TAG = "HomeViewModel" + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/divider_layout.xml b/app/src/main/res/layout/divider_layout.xml index 1fee19b9..cfdce6d3 100644 --- a/app/src/main/res/layout/divider_layout.xml +++ b/app/src/main/res/layout/divider_layout.xml @@ -3,6 +3,5 @@ android:layout_width="64dp" android:layout_height="2dp" android:layout_gravity="center_horizontal" - android:layout_marginVertical="@dimen/medium" android:alpha="0.5" android:background="@drawable/divider_background" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index cae7de37..86759800 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,33 +1,62 @@ - - + app:liftOnScroll="true" + + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/home_row_layout.xml b/app/src/main/res/layout/home_row_layout.xml index 51d917bc..fb1c2aa5 100644 --- a/app/src/main/res/layout/home_row_layout.xml +++ b/app/src/main/res/layout/home_row_layout.xml @@ -5,6 +5,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/small" + android:layout_marginBottom="@dimen/medium" android:orientation="horizontal"> You have not favorite\nany character yet Search Favorite list + %1$s cm - %2$s kg \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt index 9a54525e..be1097a1 100644 --- a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt @@ -69,11 +69,11 @@ class CharacterResponseTest { val characterResponse = CharacterResponse( homeWorldUrl = "planets/1/", - url = "https://swapi.dev/api/people/45/" + url = "https://swapi.dev/api/people/9/" ) // When - val planetId = characterResponse.id + val planetId = characterResponse.getId() // Then assertThat(planetId).isEqualTo(45) diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt index b37aaa10..2bfe42e2 100644 --- a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/PageResponseTest.kt @@ -16,7 +16,7 @@ class PageResponseTest { count = 87, next = null, previous = "https://swapi.dev/api/people/?page=8", - result = listOf() + results = listOf() ) // When @@ -33,7 +33,7 @@ class PageResponseTest { count = 87, next = "https://swapi.dev/api/people/?page=9", previous = "https://swapi.dev/api/people/?page=7", - result = listOf() + results = listOf() ) // When @@ -50,7 +50,7 @@ class PageResponseTest { count = 87, next = "https://swapi.dev/api/people/?page=2", previous = null, - result = listOf() + results = listOf() ) // When @@ -67,7 +67,7 @@ class PageResponseTest { count = 87, next = "https://swapi.dev/api/people/?page=3", previous = "https://swapi.dev/api/people/?page=1", - result = listOf() + results = listOf() ) // When From 56f4c940831d2d6e7ee18ab3419d737dce1a0d00 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sun, 26 Sep 2021 14:45:21 -0300 Subject: [PATCH 34/53] Fix bug of updating the favorite column --- .../wikistarwars/data/dao/CharacterDAO.kt | 70 ++++++++++++++++--- .../wikistarwars/data/dao/RemoteKeysDAO.kt | 27 ++++--- .../paging/CharacterRemoteMediator.kt | 18 +++-- 3 files changed, 91 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 0197f4b6..baae93f6 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -1,22 +1,76 @@ package com.arthurgonzaga.wikistarwars.data.dao import androidx.paging.PagingSource -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy -import androidx.room.Query import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import androidx.room.* + + @Dao -interface CharacterDAO { +interface CharacterDAO{ - @Insert(onConflict = OnConflictStrategy.REPLACE) - fun insertAll(characterEntity: List) + @Insert(onConflict = OnConflictStrategy.IGNORE) + fun insertAll(characterEntity: List): List + @Query("SELECT id FROM characters WHERE is_favorite = 1") + fun getAllFavoritesIds(): List @Query("SELECT * FROM characters") fun getAllCharacters(): PagingSource - @Query("DELETE FROM characters") + @Query("DELETE FROM characters WHERE is_favorite = 0") fun clearCharacters() + + @Query( + """ + UPDATE characters + SET name=:name, + height=:height, + weight=:weight, + hair_color=:hairColor, + skin_color=:skinColor, + eye_color=:eyeColor, + birth_year=:birthYear, + gender=:gender + WHERE id = :id + """ + ) + fun update( + id: Int, + name: String = "", + height: String = "", + weight: String = "", + hairColor: String = "", + skinColor: String = "", + eyeColor: String = "", + birthYear: String = "", + gender: String = "", + ) + + @Transaction + suspend fun upsert(obj: List) { + val favorites = getAllFavoritesIds() + clearCharacters() + + insertAll(obj); + + favorites.forEach { id -> + + val character = obj.find { it.id == id } + + character?.let { + update( + id = id, + name = character.name, + height = character.height, + weight = character.weight, + hairColor = character.hairColor, + skinColor = character.skinColor, + eyeColor = character.eyeColor, + birthYear = character.birthYear, + gender = character.gender, + ) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt index 0da0fd44..72bf99cf 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt @@ -1,19 +1,18 @@ package com.arthurgonzaga.wikistarwars.data.dao -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy -import androidx.room.Query +import androidx.room.* +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys @Dao interface RemoteKeysDAO { - @Insert(onConflict = OnConflictStrategy.REPLACE) - suspend fun insertAll(remoteKey: List) + @Insert(onConflict = OnConflictStrategy.IGNORE) + fun insertAll(remoteKey: List): List + + @Update(onConflict = OnConflictStrategy.IGNORE) + fun updateAll(remoteKey: List) - @Insert(onConflict = OnConflictStrategy.REPLACE) - suspend fun insert(remoteKey: RemoteKeys) @Query("SELECT * FROM remote_keys WHERE characterId = :id") suspend fun remoteKeysById(id: Int): RemoteKeys? @@ -21,6 +20,14 @@ interface RemoteKeysDAO { @Query("DELETE FROM remote_keys") suspend fun clearRemoteKeys() - @Query("SELECT * FROM remote_keys") - suspend fun getRemoteKeys(): List + + + @Transaction + fun upsert(remoteKey: List) { + val longs: List = insertAll(remoteKey) + + if (longs.contains(-1)) { + updateAll(remoteKey) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt index 5e345d6e..a18c7508 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -52,11 +52,8 @@ class CharacterRemoteMediator( val isEndOfList = response.results.isEmpty() database.withTransaction { - // clear all tables in the database - if (loadType == LoadType.REFRESH) { - database.remoteKeysDAO().clearRemoteKeys() - database.charactersDAO().clearCharacters() - } + + val prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1 val nextKey = if (isEndOfList) null else page + 1 @@ -69,6 +66,15 @@ class CharacterRemoteMediator( it.toEntity() } + if (loadType == LoadType.REFRESH) { + // clear all the rows in the database + database.remoteKeysDAO().clearRemoteKeys() + + // clear all the rows with isFavorite = false + // update all the rows with isFavorite = true + database.charactersDAO().upsert(characters) + } + database.remoteKeysDAO().insertAll(keys) database.charactersDAO().insertAll(characters) } @@ -96,7 +102,7 @@ class CharacterRemoteMediator( remoteKeys?.nextKey?.minus(1) ?: STARTING_PAGE_INDEX } LoadType.APPEND -> { - Log.i(TAG, "LoadType.REFRESH") + Log.i(TAG, "LoadType.APPEND") val remoteKeys = getLastRemoteKey(state) ?: throw InvalidObjectException("Remote key should not be null for $loadType") remoteKeys.nextKey From e5cfc1b2bedf644f06db8f70cc5b204da433a0a1 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sun, 26 Sep 2021 16:38:11 -0300 Subject: [PATCH 35/53] Implement favorite feature through the RecyclerView --- .../wikistarwars/data/dao/CharacterDAO.kt | 5 ++ .../repository/HomeRepositoryImpl.kt | 5 ++ .../repository/interfaces/HomeRepository.kt | 2 + .../ui/adapters/CharacterAdapter.kt | 49 ++++++++++++------- .../ui/fragments/FavoriteListFragment.kt | 7 --- .../wikistarwars/ui/fragments/HomeFragment.kt | 28 ++++++++--- .../wikistarwars/viewmodel/HomeViewModel.kt | 7 +++ 7 files changed, 71 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index baae93f6..f1248880 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -12,6 +12,7 @@ interface CharacterDAO{ @Insert(onConflict = OnConflictStrategy.IGNORE) fun insertAll(characterEntity: List): List + @Query("SELECT id FROM characters WHERE is_favorite = 1") fun getAllFavoritesIds(): List @@ -47,6 +48,10 @@ interface CharacterDAO{ gender: String = "", ) + + @Query("UPDATE characters SET is_favorite=:isFavorite WHERE id= :characterId") + suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) + @Transaction suspend fun upsert(obj: List) { val favorites = getAllFavoritesIds() diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt index db8509b7..f713a4f1 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -26,4 +26,9 @@ class HomeRepositoryImpl @Inject constructor( remoteMediator = CharacterRemoteMediator(service, database) ).liveData } + + + override suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) { + database.charactersDAO().favoriteCharacter(characterId, isFavorite) + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt index c6985f59..c44d7884 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt @@ -8,4 +8,6 @@ import kotlinx.coroutines.flow.Flow interface HomeRepository { fun getCharacters(): LiveData> + + suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt index 5512317f..6f6b8b46 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt @@ -4,6 +4,7 @@ import android.app.Application import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup +import android.widget.ImageButton import androidx.core.content.res.ResourcesCompat import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil @@ -14,40 +15,52 @@ import com.arthurgonzaga.wikistarwars.databinding.RvCharacterItemBinding import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject -class CharacterAdapter @Inject constructor( - @ApplicationContext private val context: Context +class CharacterAdapter( + private val context: Context, + private val navigateToDetail: (character: CharacterEntity) -> Unit, + private val favoriteCharacter: (characterId: Int, isFavorite: Boolean) -> Unit ) : PagingDataAdapter(DiffUtilCallback) { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { - val binding = RvCharacterItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) + val binding = + RvCharacterItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) return VH(binding) } override fun onBindViewHolder(holder: VH, position: Int) { - val characterEntity = getItem(position) - - holder.title.text = characterEntity?.name - holder.gender.text = characterEntity?.gender - holder.subtitle.text = - context.getString(R.string.rv_subtitle, characterEntity?.height, characterEntity?.weight) + val currentItem = getItem(position) - if (characterEntity?.isFavorite == true) { - val drawable = ResourcesCompat.getDrawable( - context.resources, - R.drawable.ic_favorite, - context.theme - ) - holder.favoriteButton.setImageDrawable(drawable) + currentItem?.let { character -> + holder.title.text = character.name + holder.gender.text = character.gender + holder.subtitle.text = + context.getString(R.string.rv_subtitle, character.height, character.weight) + holder.favoriteButton.setImage(character.isFavorite) + holder.root.setOnClickListener { _ -> + navigateToDetail(character) + } + holder.favoriteButton.setOnClickListener { _ -> + favoriteCharacter(character.id, !character.isFavorite) + } } } - class VH(binding: RvCharacterItemBinding) : RecyclerView.ViewHolder(binding.root){ + private fun ImageButton.setImage(isFavorite: Boolean) { + val drawable = ResourcesCompat.getDrawable( + context.resources, + if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border, + context.theme + ) + this.setImageDrawable(drawable) + } + + class VH(binding: RvCharacterItemBinding) : RecyclerView.ViewHolder(binding.root) { val title = binding.title val gender = binding.gender val subtitle = binding.subtitle val favoriteButton = binding.favoriteButton + val root = binding.root } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt index 16c4be1e..e8b6b969 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt @@ -36,12 +36,5 @@ class FavoriteListFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - - val backPressedCallback = object: OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - findNavController().popBackStack() - } - } - requireActivity().onBackPressedDispatcher.addCallback(backPressedCallback) } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index c0fae1f3..41457722 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -18,9 +18,7 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import javax.inject.Inject import androidx.recyclerview.widget.LinearLayoutManager - - - +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity /** @@ -37,32 +35,48 @@ class HomeFragment : Fragment() { private lateinit var binding: FragmentHomeBinding private val vm: HomeViewModel by viewModels() - @Inject lateinit var characterAdapter: CharacterAdapter + lateinit var characterAdapter: CharacterAdapter override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { binding = FragmentHomeBinding.inflate(inflater) + characterAdapter = + CharacterAdapter( + context = requireContext(), + navigateToDetail = ::navigateToDetailFragment, + favoriteCharacter = vm::favoriteCharacter + ) binding.recyclerView.apply { adapter = characterAdapter } return binding.root } + private fun navigateToFavoriteFragment() { + findNavController().navigate(R.id.goToFavoritesListFragment) + } + + private fun navigateToDetailFragment(characterEntity: CharacterEntity) { + findNavController().navigate(R.id.goToDetailFragment) + // TODO: Add the args + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - vm.characters.observe(viewLifecycleOwner){ pagingData -> + vm.characters.observe(viewLifecycleOwner) { pagingData -> viewLifecycleOwner.lifecycleScope.launch { characterAdapter.submitData(pagingData) } } - binding.row.favoriteListButton.setOnClickListener { - findNavController().navigate(R.id.goToFavoritesListFragment) + binding.row.favoriteListButton.setOnClickListener { _ -> + navigateToFavoriteFragment() } } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt index 0f7098a9..1ac3d23e 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt @@ -7,6 +7,7 @@ import androidx.paging.cachedIn import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel @@ -23,6 +24,12 @@ class HomeViewModel @Inject constructor( } + fun favoriteCharacter(characterId: Int, isFavorite: Boolean){ + viewModelScope.launch { + repository.favoriteCharacter(characterId, isFavorite) + } + } + companion object { const val TAG = "HomeViewModel" } From 47e721125bee007aa8f5078610948b902ec749af Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Sun, 26 Sep 2021 17:35:00 -0300 Subject: [PATCH 36/53] Improve UI touch effects --- .../ui/adapters/CharacterAdapter.kt | 28 +++++++++++++++++-- .../background_favorite_list_button.xml | 13 +++++++++ .../main/res/drawable/background_item_rv.xml | 13 +++++++++ .../main/res/drawable/border_background.xml | 10 ------- app/src/main/res/layout/fragment_detail.xml | 1 + .../res/layout/fragment_favorite_list.xml | 1 + app/src/main/res/layout/fragment_home.xml | 2 ++ app/src/main/res/layout/home_row_layout.xml | 6 ++-- app/src/main/res/layout/rv_character_item.xml | 19 +++++++------ app/src/main/res/values/integers.xml | 1 + app/src/main/res/values/themes.xml | 1 + 11 files changed, 70 insertions(+), 25 deletions(-) create mode 100644 app/src/main/res/drawable/background_favorite_list_button.xml create mode 100644 app/src/main/res/drawable/background_item_rv.xml delete mode 100644 app/src/main/res/drawable/border_background.xml diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt index 6f6b8b46..798feb86 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt @@ -3,6 +3,7 @@ package com.arthurgonzaga.wikistarwars.ui.adapters import android.app.Application import android.content.Context import android.view.LayoutInflater +import android.view.MotionEvent import android.view.ViewGroup import android.widget.ImageButton import androidx.core.content.res.ResourcesCompat @@ -36,12 +37,33 @@ class CharacterAdapter( holder.gender.text = character.gender holder.subtitle.text = context.getString(R.string.rv_subtitle, character.height, character.weight) - holder.favoriteButton.setImage(character.isFavorite) holder.root.setOnClickListener { _ -> navigateToDetail(character) } - holder.favoriteButton.setOnClickListener { _ -> - favoriteCharacter(character.id, !character.isFavorite) + + holder.favoriteButton.apply { + setImage(character.isFavorite) + setOnClickListener { _ -> + favoriteCharacter(character.id, !character.isFavorite) + } + + setOnTouchListener { view, motionEvent -> + when(motionEvent.action){ + // User touched + MotionEvent.ACTION_DOWN -> { + setImage(!character.isFavorite) + } + // User has canceled the touch + MotionEvent.ACTION_CANCEL -> { + setImage(character.isFavorite) + } + // User has canceled release the touch + MotionEvent.ACTION_UP -> { + performClick() // this calls setOnClickListener + } + } + true + } } } } diff --git a/app/src/main/res/drawable/background_favorite_list_button.xml b/app/src/main/res/drawable/background_favorite_list_button.xml new file mode 100644 index 00000000..b7136709 --- /dev/null +++ b/app/src/main/res/drawable/background_favorite_list_button.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/background_item_rv.xml b/app/src/main/res/drawable/background_item_rv.xml new file mode 100644 index 00000000..b701fd4f --- /dev/null +++ b/app/src/main/res/drawable/background_item_rv.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/border_background.xml b/app/src/main/res/drawable/border_background.xml deleted file mode 100644 index 5bd8f2c3..00000000 --- a/app/src/main/res/drawable/border_background.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml index 6085c26b..9fc3ee25 100644 --- a/app/src/main/res/layout/fragment_detail.xml +++ b/app/src/main/res/layout/fragment_detail.xml @@ -5,6 +5,7 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:paddingHorizontal="@dimen/xlarge" + android:background="?attr/backgroundColor" tools:context=".ui.fragments.DetailFragment"> diff --git a/app/src/main/res/layout/rv_character_item.xml b/app/src/main/res/layout/rv_character_item.xml index 3dfc5328..66235fc3 100644 --- a/app/src/main/res/layout/rv_character_item.xml +++ b/app/src/main/res/layout/rv_character_item.xml @@ -3,17 +3,17 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingVertical="@dimen/normal" - android:paddingHorizontal="@dimen/medium" android:layout_marginBottom="@dimen/normal" xmlns:tools="http://schemas.android.com/tools" - android:foreground="?attr/selectableItemBackground" - android:background="@drawable/border_background"> + android:background="@drawable/background_item_rv" + tools:ignore="RtlSymmetry"> @@ -57,8 +60,8 @@ 2 + 2 \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index b22a1d08..00fac3cd 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -5,6 +5,7 @@ From 73c03145c0491a4e32db6f35742677d1398534ca Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 00:01:52 -0300 Subject: [PATCH 42/53] Implement searching --- .../wikistarwars/api/services/PeopleService.kt | 3 ++- .../wikistarwars/data/dao/CharacterDAO.kt | 2 +- .../repository/HomeRepositoryImpl.kt | 7 +++---- .../repository/interfaces/HomeRepository.kt | 2 +- .../paging/CharacterRemoteMediator.kt | 10 ++++++---- .../wikistarwars/ui/fragments/HomeFragment.kt | 13 +++++++++++++ .../wikistarwars/viewmodel/HomeViewModel.kt | 17 +++++++++++------ 7 files changed, 37 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt index 6ad1565c..ec840e63 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt @@ -9,7 +9,8 @@ interface PeopleService { @GET("people") fun getPeoplePage( - @Query("page") page: Int + @Query("page") page: Int, + @Query("search") query: String = "" ): Call } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index f1248880..02d13056 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -14,7 +14,7 @@ interface CharacterDAO{ @Query("SELECT id FROM characters WHERE is_favorite = 1") - fun getAllFavoritesIds(): List + suspend fun getAllFavoritesIds(): List @Query("SELECT * FROM characters") fun getAllCharacters(): PagingSource diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt index f713a4f1..6b39a765 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -2,7 +2,6 @@ package com.arthurgonzaga.wikistarwars.repository import androidx.lifecycle.LiveData import androidx.paging.* -import androidx.room.RoomDatabase import com.arthurgonzaga.wikistarwars.api.services.PeopleService import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity @@ -15,15 +14,15 @@ import javax.inject.Inject class HomeRepositoryImpl @Inject constructor( private val service: PeopleService, private val database: WikiStarWarsDB -): HomeRepository{ +) : HomeRepository { - override fun getCharacters(): LiveData> { + override fun getCharacters(query: String): LiveData> { val pagingSourceFactory = { database.charactersDAO().getAllCharacters() } return Pager( config = PagingConfig(pageSize = 10, enablePlaceholders = false), pagingSourceFactory = pagingSourceFactory, initialKey = 1, - remoteMediator = CharacterRemoteMediator(service, database) + remoteMediator = CharacterRemoteMediator(service, database, query) ).liveData } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt index c44d7884..bd2c87e2 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt @@ -7,7 +7,7 @@ import kotlinx.coroutines.flow.Flow interface HomeRepository { - fun getCharacters(): LiveData> + fun getCharacters(query: String): LiveData> suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt index a18c7508..3d598a11 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -9,6 +9,8 @@ import androidx.room.withTransaction import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse import com.arthurgonzaga.wikistarwars.api.services.PeopleService import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO +import com.arthurgonzaga.wikistarwars.data.dao.RemoteKeysDAO import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys import com.arthurgonzaga.wikistarwars.util.toEntity @@ -21,7 +23,8 @@ import java.io.InvalidObjectException @ExperimentalPagingApi class CharacterRemoteMediator( private val service: PeopleService, - private val database: WikiStarWarsDB + private val database: WikiStarWarsDB, + private val query: String ) : RemoteMediator() { // Set to refresh every time i @@ -35,8 +38,7 @@ class CharacterRemoteMediator( state: PagingState ): MediatorResult { - val pageKeyData = getKeyPageData(loadType, state) - val page = when (pageKeyData) { + val page = when (val pageKeyData = getKeyPageData(loadType, state)) { is MediatorResult.Success -> { return pageKeyData } @@ -48,7 +50,7 @@ class CharacterRemoteMediator( return try { // Get the page result - val response = service.getPeoplePage(page).await() + val response = service.getPeoplePage(page, query).await() val isEndOfList = response.results.isEmpty() database.withTransaction { diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index fae6b853..7f59a659 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -1,10 +1,12 @@ package com.arthurgonzaga.wikistarwars.ui.fragments import android.os.Bundle +import android.view.KeyEvent import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.inputmethod.EditorInfo import android.widget.ImageButton import android.widget.TextView import androidx.core.os.bundleOf @@ -68,6 +70,17 @@ class HomeFragment : Fragment() { addItemDecoration(SpacingItemDecoration(spanCount = spanCount, spacing = space)) } + + binding.row.searchBar.setOnEditorActionListener { textView, action, _ -> + if(action == EditorInfo.IME_ACTION_SEARCH){ + + vm.search(textView.text.toString()) + textView.text = "" + + return@setOnEditorActionListener true + } + false + } return binding.root } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt index 1ac3d23e..66b7151e 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt @@ -2,9 +2,7 @@ package com.arthurgonzaga.wikistarwars.viewmodel import android.util.Log import androidx.lifecycle.* -import androidx.paging.PagingData import androidx.paging.cachedIn -import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -15,12 +13,15 @@ class HomeViewModel @Inject constructor( val repository: HomeRepository ) : ViewModel(), LifecycleObserver { - val characters: LiveData> = getCharactersPagingData() + private val _currentSearchText = MutableLiveData("") - private fun getCharactersPagingData(): LiveData>{ - Log.i(TAG, "getting CharactersPagingData") - return repository.getCharacters().cachedIn(viewModelScope) + val characters = _currentSearchText.switchMap { query -> + if(query.isBlank()){ + repository.getCharacters("").cachedIn(viewModelScope) + }else { + repository.getCharacters(query).cachedIn(viewModelScope) + } } @@ -30,6 +31,10 @@ class HomeViewModel @Inject constructor( } } + fun search(text: String) { + _currentSearchText.value = text + } + companion object { const val TAG = "HomeViewModel" } From 7e48cb2c40ad7320d9bea2842c30a435790735c6 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 02:33:52 -0300 Subject: [PATCH 43/53] Implement FavoriteList and refactored some code --- .../wikistarwars/data/dao/CharacterDAO.kt | 13 +++- .../wikistarwars/di/FavoritesComponent.kt | 26 +++++++ .../repository/FavoritesRepositoryImpl.kt | 29 +++++++ .../repository/HomeRepositoryImpl.kt | 6 +- .../interfaces/FavoritesRepository.kt | 13 ++++ .../ui/fragments/DetailFragment.kt | 2 +- .../ui/fragments/FavoriteListFragment.kt | 78 +++++++++++++++++-- .../wikistarwars/ui/fragments/HomeFragment.kt | 73 ++++++++--------- .../ui/util/navigateToDetailFragment.kt | 35 +++++++++ .../viewmodel/FavoritesViewModel.kt | 25 ++++++ app/src/main/res/anim/slide_in_left.xml | 2 +- app/src/main/res/anim/slide_in_right.xml | 2 +- app/src/main/res/anim/slide_out_left.xml | 2 +- app/src/main/res/anim/slide_out_right.xml | 2 +- .../res/layout/fragment_favorite_list.xml | 73 ++++++++--------- app/src/main/res/navigation/nav_graph.xml | 8 +- 16 files changed, 297 insertions(+), 92 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/di/FavoritesComponent.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/util/navigateToDetailFragment.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 02d13056..65e873f5 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -1,5 +1,6 @@ package com.arthurgonzaga.wikistarwars.data.dao +import androidx.paging.PagingData import androidx.paging.PagingSource import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity @@ -16,6 +17,15 @@ interface CharacterDAO{ @Query("SELECT id FROM characters WHERE is_favorite = 1") suspend fun getAllFavoritesIds(): List + @Query("SELECT * FROM CHARACTERS WHERE is_favorite = 1") + fun getAllFavoriteCharacters(): PagingSource + + @Query("UPDATE characters SET is_favorite = 1 WHERE id= :id") + suspend fun favorite(id: Int) + + @Query("UPDATE characters SET is_favorite = 0 WHERE id = :id") + suspend fun unFavorite(id: Int) + @Query("SELECT * FROM characters") fun getAllCharacters(): PagingSource @@ -49,9 +59,6 @@ interface CharacterDAO{ ) - @Query("UPDATE characters SET is_favorite=:isFavorite WHERE id= :characterId") - suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) - @Transaction suspend fun upsert(obj: List) { val favorites = getAllFavoritesIds() diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/FavoritesComponent.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/FavoritesComponent.kt new file mode 100644 index 00000000..1e7e6930 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/FavoritesComponent.kt @@ -0,0 +1,26 @@ +package com.arthurgonzaga.wikistarwars.di + +import androidx.paging.ExperimentalPagingApi +import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.repository.FavoritesRepositoryImpl +import com.arthurgonzaga.wikistarwars.repository.HomeRepositoryImpl +import com.arthurgonzaga.wikistarwars.repository.interfaces.FavoritesRepository +import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent +import dagger.hilt.android.scopes.ViewModelScoped + +@Module +@InstallIn(ViewModelComponent::class) +object FavoritesComponent { + + @ExperimentalPagingApi + @Provides + @ViewModelScoped + fun provideFavoritesRepository( + db: WikiStarWarsDB + ): FavoritesRepository = FavoritesRepositoryImpl(db) +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt new file mode 100644 index 00000000..e2e0099b --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt @@ -0,0 +1,29 @@ +package com.arthurgonzaga.wikistarwars.repository + +import androidx.lifecycle.LiveData +import androidx.paging.Pager +import androidx.paging.PagingConfig +import androidx.paging.PagingData +import androidx.paging.liveData +import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import com.arthurgonzaga.wikistarwars.repository.interfaces.FavoritesRepository +import javax.inject.Inject + +class FavoritesRepositoryImpl @Inject constructor( + val db: WikiStarWarsDB +) : FavoritesRepository{ + + override fun getFavoriteCharacters(): LiveData> { + return Pager( + config = PagingConfig(pageSize = 10, enablePlaceholders = false) + ){ + db.charactersDAO().getAllFavoriteCharacters() + }.liveData + } + + override suspend fun unFavorite(characterId: Int) { + db.charactersDAO().unFavorite(characterId) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt index 6b39a765..d633824b 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -28,6 +28,10 @@ class HomeRepositoryImpl @Inject constructor( override suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) { - database.charactersDAO().favoriteCharacter(characterId, isFavorite) + if(isFavorite){ + database.charactersDAO().favorite(characterId) + }else { + database.charactersDAO().unFavorite(characterId) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt new file mode 100644 index 00000000..100870f0 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt @@ -0,0 +1,13 @@ +package com.arthurgonzaga.wikistarwars.repository.interfaces + +import androidx.lifecycle.LiveData +import androidx.paging.PagingData +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity + +interface FavoritesRepository { + + fun getFavoriteCharacters(): LiveData> + + suspend fun unFavorite(characterId: Int) + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt index 66d5d46a..8b36aec4 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -58,7 +58,7 @@ class DetailFragment : Fragment() { } private suspend fun showInfosWithAnimation(){ - delay(150) + delay(260) binding.gridLayout.forEach { info -> // Only show the invisible ones because we are going // to load the homeWorldName and the specieName diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt index e8b6b969..b845fdba 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt @@ -1,16 +1,32 @@ package com.arthurgonzaga.wikistarwars.ui.fragments import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageButton +import android.widget.TextView import androidx.activity.OnBackPressedCallback +import androidx.core.os.bundleOf +import androidx.core.view.isEmpty +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.navigation.fragment.findNavController import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding import com.arthurgonzaga.wikistarwars.databinding.FragmentFavoriteListBinding import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding +import com.arthurgonzaga.wikistarwars.ui.adapters.CharacterAdapter +import com.arthurgonzaga.wikistarwars.ui.components.SpacingItemDecoration +import com.arthurgonzaga.wikistarwars.ui.util.navigateToDetailFragment +import com.arthurgonzaga.wikistarwars.viewmodel.FavoritesViewModel +import com.arthurgonzaga.wikistarwars.viewmodel.HomeViewModel +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch /** @@ -18,23 +34,75 @@ import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding * This fragment will display the list of favorites characters * */ +@AndroidEntryPoint class FavoriteListFragment : Fragment() { private lateinit var binding: FragmentFavoriteListBinding + private val vm: FavoritesViewModel by viewModels() + + private lateinit var characterAdapter: CharacterAdapter override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = FragmentFavoriteListBinding.inflate(inflater) + setupRecyclerView() + observeChanges() return binding.root } + private fun setupRecyclerView() { + characterAdapter = + CharacterAdapter( + context = requireContext(), + navigateToDetail = ::navigateToDetailFragment, + favoriteCharacter = { id, isFavorite -> + if (!isFavorite) vm.unFavorite(id) + + } + ) + + binding.recyclerView.apply { + adapter = characterAdapter + postponeEnterTransition() + viewTreeObserver.addOnPreDrawListener { + startPostponedEnterTransition() + true + } + + val space = requireContext().resources.getDimensionPixelSize(R.dimen.normal) + val spanCount = requireContext().resources.getInteger(R.integer.rv_column_count) + + addItemDecoration(SpacingItemDecoration(spanCount = spanCount, spacing = space)) + } + } + + private fun observeChanges() { + vm.favoritesCharacters.observe(viewLifecycleOwner) { pagingData -> + viewLifecycleOwner.lifecycleScope.launch { + characterAdapter.submitData(pagingData) + + } + } + } + + + private fun navigateToDetailFragment( + characterEntity: CharacterEntity, + textView: TextView, + imageButton: ImageButton, + viewGroup: ViewGroup + ) = navigateToDetailFragment( + characterEntity, + textView, + imageButton, + viewGroup, + R.id.goToDetailFragmentFromFavorites + ) - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) + companion object { + private const val TAG = "FavoriteListFragment" } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index 7f59a659..bb6d5e14 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -1,7 +1,6 @@ package com.arthurgonzaga.wikistarwars.ui.fragments import android.os.Bundle -import android.view.KeyEvent import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -9,24 +8,18 @@ import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.widget.ImageButton import android.widget.TextView -import androidx.core.os.bundleOf import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope -import androidx.navigation.NavController -import androidx.navigation.findNavController -import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.navigation.fragment.findNavController -import androidx.recyclerview.widget.GridLayoutManager import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding import com.arthurgonzaga.wikistarwars.ui.adapters.CharacterAdapter import com.arthurgonzaga.wikistarwars.viewmodel.HomeViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import javax.inject.Inject -import androidx.recyclerview.widget.LinearLayoutManager import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.ui.components.SpacingItemDecoration +import com.arthurgonzaga.wikistarwars.ui.util.navigateToDetailFragment /** @@ -50,6 +43,15 @@ class HomeFragment : Fragment() { savedInstanceState: Bundle? ): View { binding = FragmentHomeBinding.inflate(inflater) + + setupRecyclerView() + setupSearchBar() + observeChanges() + + return binding.root + } + + private fun setupRecyclerView(){ characterAdapter = CharacterAdapter( context = requireContext(), @@ -70,7 +72,9 @@ class HomeFragment : Fragment() { addItemDecoration(SpacingItemDecoration(spanCount = spanCount, spacing = space)) } + } + private fun setupSearchBar(){ binding.row.searchBar.setOnEditorActionListener { textView, action, _ -> if(action == EditorInfo.IME_ACTION_SEARCH){ @@ -81,40 +85,9 @@ class HomeFragment : Fragment() { } false } - return binding.root - } - - private fun navigateToFavoriteFragment() { - findNavController().navigate(R.id.goToFavoritesListFragment) - } - - private fun navigateToDetailFragment( - characterEntity: CharacterEntity, - textView: TextView, - imageButton: ImageButton, - viewGroup: ViewGroup - ) { - - val extras = FragmentNavigatorExtras( - textView to "heading_big", - imageButton to "favorite_btn_big", - viewGroup to "background" - ) - - val args = bundleOf("character" to characterEntity) - findNavController().navigate( - R.id.goToDetailFragment, - args, - null, - extras - ) } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - + private fun observeChanges(){ vm.characters.observe(viewLifecycleOwner) { pagingData -> viewLifecycleOwner.lifecycleScope.launch { characterAdapter.submitData(pagingData) @@ -122,7 +95,25 @@ class HomeFragment : Fragment() { } binding.row.favoriteListButton.setOnClickListener { _ -> - navigateToFavoriteFragment() + navigateToFavoritesFragment() } } + + private fun navigateToFavoritesFragment() { + findNavController().navigate(R.id.goToFavoritesListFragment) + } + + private fun navigateToDetailFragment( + characterEntity: CharacterEntity, + textView: TextView, + imageButton: ImageButton, + viewGroup: ViewGroup + ) = navigateToDetailFragment( + characterEntity, + textView, + imageButton, + viewGroup, + R.id.goToDetailFragmentFromHome + ) + } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/util/navigateToDetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/util/navigateToDetailFragment.kt new file mode 100644 index 00000000..33f38338 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/util/navigateToDetailFragment.kt @@ -0,0 +1,35 @@ +package com.arthurgonzaga.wikistarwars.ui.util + +import android.view.ViewGroup +import android.widget.ImageButton +import android.widget.TextView +import androidx.annotation.IdRes +import androidx.core.os.bundleOf +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.FragmentNavigatorExtras +import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import androidx.navigation.fragment.findNavController + +fun Fragment.navigateToDetailFragment( + characterEntity: CharacterEntity, + textView: TextView, + imageButton: ImageButton, + viewGroup: ViewGroup, + @IdRes actionId: Int +) { + + val extras = FragmentNavigatorExtras( + textView to "heading_big", + imageButton to "favorite_btn_big", + viewGroup to "background" + ) + + val args = bundleOf("character" to characterEntity) + findNavController().navigate( + actionId, + args, + null, + extras + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt new file mode 100644 index 00000000..41d2a284 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt @@ -0,0 +1,25 @@ +package com.arthurgonzaga.wikistarwars.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import androidx.paging.cachedIn +import com.arthurgonzaga.wikistarwars.repository.interfaces.FavoritesRepository +import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + + +@HiltViewModel +class FavoritesViewModel @Inject constructor( + val repository: FavoritesRepository +): ViewModel() { + + val favoritesCharacters = repository.getFavoriteCharacters().cachedIn(viewModelScope) + + fun unFavorite(id: Int){ + viewModelScope.launch { + repository.unFavorite(id) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml index 3247d517..f3729dbd 100644 --- a/app/src/main/res/anim/slide_in_left.xml +++ b/app/src/main/res/anim/slide_in_left.xml @@ -20,7 +20,7 @@ + android:duration="@android:integer/config_shortAnimTime"/> diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml index 9d86bc39..305df144 100644 --- a/app/src/main/res/anim/slide_in_right.xml +++ b/app/src/main/res/anim/slide_in_right.xml @@ -20,7 +20,7 @@ + android:duration="@android:integer/config_shortAnimTime"/> \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml index 8804997a..1ad55f86 100644 --- a/app/src/main/res/anim/slide_out_left.xml +++ b/app/src/main/res/anim/slide_out_left.xml @@ -20,7 +20,7 @@ + android:duration="@android:integer/config_shortAnimTime"/> diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml index 569f15fe..546ed705 100644 --- a/app/src/main/res/anim/slide_out_right.xml +++ b/app/src/main/res/anim/slide_out_right.xml @@ -20,7 +20,7 @@ + android:duration="@android:integer/config_shortAnimTime"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_favorite_list.xml b/app/src/main/res/layout/fragment_favorite_list.xml index 0ba0647f..e52ff4f3 100644 --- a/app/src/main/res/layout/fragment_favorite_list.xml +++ b/app/src/main/res/layout/fragment_favorite_list.xml @@ -1,5 +1,5 @@ - - - - + - + - - - + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 06d9b67b..0b6f43e2 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -18,7 +18,7 @@ app:popEnterAnim="@anim/slide_in_right" app:popExitAnim="@anim/slide_out_left" /> + tools:layout="@layout/fragment_favorite_list" > + + \ No newline at end of file From dde9ddbab543913429afeb88cdb60b9b5186adf4 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 07:31:25 -0300 Subject: [PATCH 44/53] Improve home list delay --- .../wikistarwars/data/dao/CharacterDAO.kt | 48 ++----------------- .../repository/HomeRepositoryImpl.kt | 2 + .../paging/CharacterRemoteMediator.kt | 14 +++--- 3 files changed, 13 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 65e873f5..29acac0f 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -29,60 +29,22 @@ interface CharacterDAO{ @Query("SELECT * FROM characters") fun getAllCharacters(): PagingSource - @Query("DELETE FROM characters WHERE is_favorite = 0") + @Query("DELETE FROM characters") fun clearCharacters() - @Query( - """ - UPDATE characters - SET name=:name, - height=:height, - weight=:weight, - hair_color=:hairColor, - skin_color=:skinColor, - eye_color=:eyeColor, - birth_year=:birthYear, - gender=:gender - WHERE id = :id - """ - ) + @Query("UPDATE characters SET is_favorite = 1 WHERE id IN (:ids)") fun update( - id: Int, - name: String = "", - height: String = "", - weight: String = "", - hairColor: String = "", - skinColor: String = "", - eyeColor: String = "", - birthYear: String = "", - gender: String = "", + ids: List ) @Transaction suspend fun upsert(obj: List) { - val favorites = getAllFavoritesIds() + val favoriteIds = getAllFavoritesIds() clearCharacters() insertAll(obj); - favorites.forEach { id -> - - val character = obj.find { it.id == id } - - character?.let { - update( - id = id, - name = character.name, - height = character.height, - weight = character.weight, - hairColor = character.hairColor, - skinColor = character.skinColor, - eyeColor = character.eyeColor, - birthYear = character.birthYear, - gender = character.gender, - ) - } - } + update(favoriteIds) } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt index d633824b..096c3b4e 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -7,6 +7,8 @@ import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository import com.arthurgonzaga.wikistarwars.repository.paging.CharacterRemoteMediator +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.map import javax.inject.Inject diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt index 3d598a11..29532cd5 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -54,18 +54,15 @@ class CharacterRemoteMediator( val isEndOfList = response.results.isEmpty() database.withTransaction { - - - val prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1 val nextKey = if (isEndOfList) null else page + 1 - val keys = response.results.map { - RemoteKeys(characterId = it.getId(), prevKey = prevKey, nextKey = nextKey) - } + val characters = mutableListOf() + val keys = mutableListOf() - val characters = response.results.map { - it.toEntity() + response.results.map { + characters.add(it.toEntity()) + keys.add(RemoteKeys(characterId = it.getId(), prevKey = prevKey, nextKey = nextKey)) } if (loadType == LoadType.REFRESH) { @@ -77,6 +74,7 @@ class CharacterRemoteMediator( database.charactersDAO().upsert(characters) } + database.remoteKeysDAO().insertAll(keys) database.charactersDAO().insertAll(characters) } From 4f589535f0be1dde1908fe7fbe28c87fd714fa84 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 18:41:36 -0300 Subject: [PATCH 45/53] Implement RxJava to make parallel api requests --- app/build.gradle | 9 +- .../api/responses/CharacterResponse.kt | 10 +- .../api/services/HomeWorldService.kt | 6 +- .../api/services/PeopleService.kt | 4 +- .../api/services/SpeciesService.kt | 6 +- .../wikistarwars/data/dao/CharacterDAO.kt | 7 +- .../wikistarwars/data/dao/RemoteKeysDAO.kt | 4 +- .../data/model/CharacterEntity.kt | 2 + .../wikistarwars/di/HomeComponent.kt | 8 +- .../repository/HomeRepositoryImpl.kt | 18 +- .../paging/CharacterRemoteMediator.kt | 195 +++++++++++------- .../wikistarwars/util/CharacterMappers.kt | 5 +- .../wikistarwars/util/GetRetrofitInstance.kt | 3 + 13 files changed, 175 insertions(+), 102 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1ec75fa0..88ca3bc0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,12 +62,13 @@ dependencies { def paging_version = "3.0.1" def room_version = "2.3.0" def lifecycle_version = "2.2.0" + def rxjava_version = "3.0.0" // Retrofit implementation "com.squareup.retrofit2:retrofit:$retrofit_verion" implementation "com.squareup.retrofit2:converter-gson:$gson_version" - + implementation "com.github.akarnokd:rxjava3-retrofit-adapter:$rxjava_version" // Navigation Component @@ -78,6 +79,7 @@ dependencies { // Paging 3 implementation "androidx.paging:paging-runtime-ktx:$paging_version" + implementation "androidx.paging:paging-rxjava3:$paging_version" // Room @@ -96,6 +98,11 @@ dependencies { implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1" + + //RxJava + implementation "io.reactivex.rxjava3:rxjava:$rxjava_version" + implementation "io.reactivex.rxjava3:rxandroid:$rxjava_version" + // Testing def mockito_version = "2.21.0" diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt index d087b1bb..39e00583 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponse.kt @@ -30,10 +30,12 @@ data class CharacterResponse( return url.split("people/")[1].replace("/","").toInt() } - var homeWorldId: Int? = homeWorldUrl.split("planets/")[1].replace("/","").toIntOrNull() - private set + fun getHomeWorldId(): Int{ + return homeWorldUrl.split("planets/")[1].replace("/","").toInt() + } - var specieId: Int? = speciesUrls.firstOrNull()?.split("species/")?.get(1)?.replace("/","")?.toIntOrNull() - private set + fun getSpecieId(): Int? { + return speciesUrls.firstOrNull()?.split("species/")?.get(1)?.replace("/","")?.toIntOrNull() + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt index fbbc79f3..03757b0f 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/HomeWorldService.kt @@ -2,14 +2,16 @@ package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.HomeWorldResponse import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single import retrofit2.Call import retrofit2.http.GET import retrofit2.http.Path interface HomeWorldService { - @GET("/planets/{id}") + @GET("planets/{id}") fun getHomeWorld( @Path("id") id: Int - ): Call + ): Single } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt index ec840e63..748010ad 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/PeopleService.kt @@ -1,6 +1,8 @@ package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.PageResponse +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single import retrofit2.Call import retrofit2.http.GET import retrofit2.http.Query @@ -11,6 +13,6 @@ interface PeopleService { fun getPeoplePage( @Query("page") page: Int, @Query("search") query: String = "" - ): Call + ): Single } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt index a28c9c96..01cfb1cb 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/SpeciesService.kt @@ -2,6 +2,8 @@ package com.arthurgonzaga.wikistarwars.api.services import com.arthurgonzaga.wikistarwars.api.responses.PageResponse import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single import retrofit2.Call import retrofit2.http.GET import retrofit2.http.Path @@ -9,9 +11,9 @@ import retrofit2.http.Query interface SpeciesService { - @GET("/species/{id}") + @GET("species/{id}") fun getSpecie( @Path("id") id: Int - ): Call + ): Single } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 29acac0f..7c7819da 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -17,6 +17,9 @@ interface CharacterDAO{ @Query("SELECT id FROM characters WHERE is_favorite = 1") suspend fun getAllFavoritesIds(): List + @Query("SELECT id FROM characters WHERE is_favorite = 1") + fun getAllFavoritesIdsUpsert(): List + @Query("SELECT * FROM CHARACTERS WHERE is_favorite = 1") fun getAllFavoriteCharacters(): PagingSource @@ -39,8 +42,8 @@ interface CharacterDAO{ @Transaction - suspend fun upsert(obj: List) { - val favoriteIds = getAllFavoritesIds() + fun upsert(obj: List) { + val favoriteIds = getAllFavoritesIdsUpsert() clearCharacters() insertAll(obj); diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt index 72bf99cf..980ad283 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/RemoteKeysDAO.kt @@ -15,10 +15,10 @@ interface RemoteKeysDAO { @Query("SELECT * FROM remote_keys WHERE characterId = :id") - suspend fun remoteKeysById(id: Int): RemoteKeys? + fun remoteKeysById(id: Int): RemoteKeys? @Query("DELETE FROM remote_keys") - suspend fun clearRemoteKeys() + fun clearRemoteKeys() diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt index 52d39748..678c44b6 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt @@ -3,6 +3,8 @@ package com.arthurgonzaga.wikistarwars.data.model import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +import com.arthurgonzaga.wikistarwars.util.toEntity +import io.reactivex.rxjava3.core.Observable import java.io.Serializable @Entity(tableName = "characters") diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt index 1aecbc3e..312f7d46 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/HomeComponent.kt @@ -1,7 +1,9 @@ package com.arthurgonzaga.wikistarwars.di import androidx.paging.ExperimentalPagingApi +import com.arthurgonzaga.wikistarwars.api.services.HomeWorldService import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.api.services.SpeciesService import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.repository.HomeRepositoryImpl import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository @@ -19,7 +21,9 @@ object HomeComponent { @Provides @ViewModelScoped fun provideHomeRepository( - service: PeopleService, + peopleService: PeopleService, + speciesService: SpeciesService, + homeWorldService: HomeWorldService, db: WikiStarWarsDB - ): HomeRepository = HomeRepositoryImpl(service, db) + ): HomeRepository = HomeRepositoryImpl(peopleService, speciesService, homeWorldService, db) } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt index 096c3b4e..58218101 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -2,7 +2,9 @@ package com.arthurgonzaga.wikistarwars.repository import androidx.lifecycle.LiveData import androidx.paging.* +import com.arthurgonzaga.wikistarwars.api.services.HomeWorldService import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.api.services.SpeciesService import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository @@ -14,7 +16,9 @@ import javax.inject.Inject @ExperimentalPagingApi class HomeRepositoryImpl @Inject constructor( - private val service: PeopleService, + private val peopleService: PeopleService, + private val speciesService: SpeciesService, + private val homeWorldService: HomeWorldService, private val database: WikiStarWarsDB ) : HomeRepository { @@ -24,15 +28,21 @@ class HomeRepositoryImpl @Inject constructor( config = PagingConfig(pageSize = 10, enablePlaceholders = false), pagingSourceFactory = pagingSourceFactory, initialKey = 1, - remoteMediator = CharacterRemoteMediator(service, database, query) + remoteMediator = CharacterRemoteMediator( + peopleService, + speciesService, + homeWorldService, + database, + query + ) ).liveData } override suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) { - if(isFavorite){ + if (isFavorite) { database.charactersDAO().favorite(characterId) - }else { + } else { database.charactersDAO().unFavorite(characterId) } } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt index 29532cd5..7b19f940 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -5,15 +5,29 @@ import androidx.paging.ExperimentalPagingApi import androidx.paging.LoadType import androidx.paging.PagingState import androidx.paging.RemoteMediator +import androidx.paging.rxjava3.RxRemoteMediator import androidx.room.withTransaction import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse +import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse +import com.arthurgonzaga.wikistarwars.api.services.HomeWorldService import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.api.services.SpeciesService import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO import com.arthurgonzaga.wikistarwars.data.dao.RemoteKeysDAO import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.data.model.RemoteKeys import com.arthurgonzaga.wikistarwars.util.toEntity +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.Completable +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext +import org.reactivestreams.Subscriber +import org.reactivestreams.Subscription import retrofit2.HttpException import retrofit2.await import java.io.IOException @@ -22,107 +36,127 @@ import java.io.InvalidObjectException @ExperimentalPagingApi class CharacterRemoteMediator( - private val service: PeopleService, + private val peopleService: PeopleService, + private val speciesService: SpeciesService, + private val homeWorldService: HomeWorldService, private val database: WikiStarWarsDB, - private val query: String -) : RemoteMediator() { + private val query: String, +) : RxRemoteMediator() { - // Set to refresh every time i - override suspend fun initialize(): InitializeAction { - Log.i(TAG, "initializing") - return InitializeAction.LAUNCH_INITIAL_REFRESH + override fun initializeSingle(): Single { + return Single.just(InitializeAction.LAUNCH_INITIAL_REFRESH) } - override suspend fun load( + override fun loadSingle( loadType: LoadType, state: PagingState - ): MediatorResult { - - val page = when (val pageKeyData = getKeyPageData(loadType, state)) { - is MediatorResult.Success -> { - return pageKeyData - } - else -> { - pageKeyData as Int - } - } - - return try { - - // Get the page result - val response = service.getPeoplePage(page, query).await() - val isEndOfList = response.results.isEmpty() - database.withTransaction { - - val prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1 - val nextKey = if (isEndOfList) null else page + 1 - - val characters = mutableListOf() - val keys = mutableListOf() - - response.results.map { - characters.add(it.toEntity()) - keys.add(RemoteKeys(characterId = it.getId(), prevKey = prevKey, nextKey = nextKey)) + ): Single { + return Single.just(loadType) + .subscribeOn(Schedulers.io()) + .map { + when (it) { + LoadType.REFRESH -> { + Log.i(TAG, "LoadType.REFRESH") + val remoteKeys = getClosestRemoteKey(state) + remoteKeys?.nextKey?.minus(1) ?: STARTING_PAGE_INDEX + } + LoadType.APPEND -> { + Log.i(TAG, "LoadType.APPEND") + val remoteKeys = getLastRemoteKey(state) + ?: throw InvalidObjectException("Remote key should not be null for $it") + remoteKeys.nextKey ?: INVALID_PAGE + } + LoadType.PREPEND -> { + Log.i(TAG, "LoadType.PREPEND") + val remoteKeys = getFirstRemoteKey(state) + ?: throw InvalidObjectException("Invalid state, key should not be null") + //end of list condition reached + remoteKeys.prevKey ?: INVALID_PAGE + } } + }.flatMap { page -> + if (page == INVALID_PAGE) { + Single.just(MediatorResult.Success(endOfPaginationReached = true)) + } else { + getCharactersPage(page).map { insertOnDB(page, loadType, it) } + .map { MediatorResult.Success(endOfPaginationReached = it.isEmpty()) } + .onErrorReturn { MediatorResult.Error(it) } + } + }.onErrorReturn { MediatorResult.Error(it) } + } - if (loadType == LoadType.REFRESH) { - // clear all the rows in the database - database.remoteKeysDAO().clearRemoteKeys() - // clear all the rows with isFavorite = false - // update all the rows with isFavorite = true - database.charactersDAO().upsert(characters) - } + @Suppress("DEPRECATION") + fun insertOnDB( + page: Int, + loadType: LoadType, + characters: List, + ) : List{ + database.beginTransaction() + + try { + if (loadType == LoadType.REFRESH) { + // clear all the rows in the database + database.remoteKeysDAO().clearRemoteKeys() + + // clear all the rows with isFavorite = false + // update all the rows with isFavorite = true + database.charactersDAO().upsert(characters) + } + + val prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1 + var nextKey = if (characters.isEmpty()) null else page + 1 - database.remoteKeysDAO().insertAll(keys) - database.charactersDAO().insertAll(characters) + val keys = characters.map { + RemoteKeys(characterId = it.id, prevKey = prevKey, nextKey = nextKey) } - MediatorResult.Success( - endOfPaginationReached = response.getNextPageIndex() == null - ) - } catch (e: IOException) { - Log.e(TAG, "load: ", e) - MediatorResult.Error(e) - } catch (e: HttpException) { - Log.e(TAG, "load: ", e) - MediatorResult.Error(e) + + database.remoteKeysDAO().insertAll(keys) + database.charactersDAO().insertAll(characters) + database.setTransactionSuccessful() + }finally { + database.endTransaction() } + + return characters } - /** - * this returns the page key or the final end of list success result - */ - suspend fun getKeyPageData(loadType: LoadType, state: PagingState): Any? { - return when (loadType) { - LoadType.REFRESH -> { - Log.i(TAG, "LoadType.REFRESH") - val remoteKeys = getClosestRemoteKey(state) - remoteKeys?.nextKey?.minus(1) ?: STARTING_PAGE_INDEX - } - LoadType.APPEND -> { - Log.i(TAG, "LoadType.APPEND") - val remoteKeys = getLastRemoteKey(state) - ?: throw InvalidObjectException("Remote key should not be null for $loadType") - remoteKeys.nextKey + fun getCharactersPage(page: Int): Single> { + return peopleService.getPeoplePage(page, query).map { it.results } + .flattenAsObservable { list -> + list } - LoadType.PREPEND -> { - Log.i(TAG, "LoadType.PREPEND") - val remoteKeys = getFirstRemoteKey(state) - ?: throw InvalidObjectException("Invalid state, key should not be null") - //end of list condition reached - remoteKeys.prevKey ?: return MediatorResult.Success(endOfPaginationReached = true) - remoteKeys.prevKey + .flatMap { characterResponse -> + + val homeWorld = + homeWorldService.getHomeWorld(characterResponse.getHomeWorldId()) + val specie = + characterResponse.getSpecieId()?.let { speciesService.getSpecie(it) } + ?.subscribeOn(Schedulers.newThread()) ?: Single.just( + SpecieResponse( + "Human" + ) + ) + + Observable.zip( + homeWorld.toObservable(), + specie.toObservable() + ) { homeWorldResponse, specieResponse -> + characterResponse.toEntity( + homeWorldName = homeWorldResponse.name, + specieName = specieResponse.name + ) + } } - } + .toList() } - /** * get the last remote key inserted which had the data */ - private suspend fun getLastRemoteKey(state: PagingState): RemoteKeys? { + private fun getLastRemoteKey(state: PagingState): RemoteKeys? { return state.pages .lastOrNull { it.data.isNotEmpty() } ?.data?.lastOrNull() @@ -133,7 +167,7 @@ class CharacterRemoteMediator( /** * get the first remote key inserted which had the data */ - private suspend fun getFirstRemoteKey(state: PagingState): RemoteKeys? { + private fun getFirstRemoteKey(state: PagingState): RemoteKeys? { return state.pages .firstOrNull() { it.data.isNotEmpty() } ?.data?.firstOrNull() @@ -144,7 +178,7 @@ class CharacterRemoteMediator( /** * get the closest remote key inserted which had the data */ - private suspend fun getClosestRemoteKey(state: PagingState): RemoteKeys? { + private fun getClosestRemoteKey(state: PagingState): RemoteKeys? { return state.anchorPosition?.let { position -> state.closestItemToPosition(position)?.id?.let { id -> database.remoteKeysDAO().remoteKeysById(id) @@ -156,5 +190,6 @@ class CharacterRemoteMediator( companion object { private const val STARTING_PAGE_INDEX = 1 private const val TAG = "CharacterRemoteMediator" + private const val INVALID_PAGE = -1 } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt index 50a06e08..3c6c3834 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/CharacterMappers.kt @@ -5,10 +5,11 @@ import com.arthurgonzaga.wikistarwars.api.responses.CharacterResponse import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity fun CharacterResponse.toEntity( - specieName: String, homeWorldName: String, + specieName: String?, ) = CharacterEntity( id = this.getId(), + name= this.name, height= this.height, weight= this.weight, hairColor= this.hairColor, @@ -16,7 +17,7 @@ fun CharacterResponse.toEntity( eyeColor= this.eyeColor, birthYear= this.birthYear, gender= this.gender, - specieName = specieName, + specieName = specieName ?: "Human", homeWoldName = homeWorldName, ) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt index 6a4eb817..76038a27 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/GetRetrofitInstance.kt @@ -1,6 +1,8 @@ package com.arthurgonzaga.wikistarwars.util import com.arthurgonzaga.wikistarwars.data.Constants +import hu.akarnokd.rxjava3.retrofit.RxJava3CallAdapterFactory +import io.reactivex.rxjava3.schedulers.Schedulers import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory @@ -8,6 +10,7 @@ inline fun getRetrofitInstance(baseUrl: String = Constants.BASE_URL) val retrofit = Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava3CallAdapterFactory.createWithScheduler(Schedulers.io())) .build() return retrofit.create(T::class.java) From fbdff9d7ce437116f99d93314066dc9672909eba Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 18:45:44 -0300 Subject: [PATCH 46/53] Showing full detail on DetailFragment --- .../ui/components/CharacterInfo.kt | 18 ++---------------- .../ui/fragments/DetailFragment.kt | 10 +++------- app/src/main/res/layout/fragment_detail.xml | 4 ++-- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt index 7c5db9ef..89beaaf4 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/CharacterInfo.kt @@ -67,7 +67,7 @@ class CharacterInfo @JvmOverloads constructor( * Show the view with a fading in animation */ fun show() { - Log.i(TAG, "showing $TAG") + Log.i(TAG, "showing $titleStr") this.apply { // Set the content view to 0% opacity but visible, so that it is visible // (but fully transparent) during the animation. @@ -79,21 +79,7 @@ class CharacterInfo @JvmOverloads constructor( animate() .alpha(1f) .setDuration(shortAnimationDuration.toLong()) - .setListener(object : Animator.AnimatorListener{ - override fun onAnimationStart(p0: Animator?) { - } - - override fun onAnimationEnd(p0: Animator?) { - Log.d(TAG, "animation ended: ") - } - - override fun onAnimationCancel(p0: Animator?) { - } - - override fun onAnimationRepeat(p0: Animator?) { - } - - }) + .setListener(null) } } diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt index 8b36aec4..118c6074 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -60,13 +60,9 @@ class DetailFragment : Fragment() { private suspend fun showInfosWithAnimation(){ delay(260) binding.gridLayout.forEach { info -> - // Only show the invisible ones because we are going - // to load the homeWorldName and the specieName - if(info.visibility == View.INVISIBLE){ - (info as CharacterInfo) - info.show() - delay(25) - } + (info as CharacterInfo) + info.show() + delay(25) } } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml index aae35fe8..8d0a04e9 100644 --- a/app/src/main/res/layout/fragment_detail.xml +++ b/app/src/main/res/layout/fragment_detail.xml @@ -130,7 +130,7 @@ android:id="@+id/home_world_info" android:layout_marginEnd="@dimen/column_spacing" android:layout_marginBottom="@dimen/large" - android:visibility="gone" + android:visibility="invisible" app:subtitle='@{character.homeWoldName ?? ""}' app:title="@string/homeworld" tools:subtitle="Tatooine" @@ -140,7 +140,7 @@ android:id="@+id/specie_info" android:layout_marginEnd="@dimen/column_spacing" android:layout_marginBottom="@dimen/large" - android:visibility="gone" + android:visibility="invisible" app:subtitle='@{character.specieName ?? ""}' app:title="@string/specie" tools:subtitle="Human" From 76ce8c2ebf7f00867171b3ff2b9201551b15e3eb Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 22:47:52 -0300 Subject: [PATCH 47/53] Implement FavoriteApi --- .../api/services/FavoriteService.kt | 8 +++- .../wikistarwars/data/Constants.kt | 2 +- .../wikistarwars/data/dao/CharacterDAO.kt | 8 ++-- .../data/model/CharacterEntity.kt | 2 +- .../wikistarwars/di/ApplicationModule.kt | 31 ++++++++++++++++ .../wikistarwars/di/DetailModule.kt | 28 -------------- .../repository/FavoritesRepositoryImpl.kt | 4 -- .../repository/HomeRepositoryImpl.kt | 9 ----- .../repository/MainRepositoryImpl.kt | 37 +++++++++++++++++++ .../repository/interfaces/DetailRepository.kt | 6 --- .../interfaces/FavoritesRepository.kt | 3 -- .../repository/interfaces/HomeRepository.kt | 1 - .../repository/interfaces/MainRepository.kt | 10 +++++ .../paging/CharacterRemoteMediator.kt | 4 +- .../ui/adapters/CharacterAdapter.kt | 9 +---- .../ui/fragments/DetailFragment.kt | 26 +++++++++++-- .../ui/fragments/FavoriteListFragment.kt | 3 +- .../wikistarwars/ui/fragments/HomeFragment.kt | 22 +++++++++-- .../wikistarwars/util/SetImage.kt | 14 +++++++ .../wikistarwars/viewmodel/DetailViewModel.kt | 18 ++++++++- .../viewmodel/FavoritesViewModel.kt | 10 +++-- .../wikistarwars/viewmodel/HomeViewModel.kt | 17 +++++++-- app/src/main/res/values/strings.xml | 2 + 23 files changed, 189 insertions(+), 85 deletions(-) delete mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt delete mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/MainRepository.kt create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/util/SetImage.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt index b4e4dcaa..7bf14627 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/api/services/FavoriteService.kt @@ -1,13 +1,17 @@ package com.arthurgonzaga.wikistarwars.api.services -import com.arthurgonzaga.wikistarwars.api.responses.SpecieResponse import retrofit2.Call +import retrofit2.http.Headers import retrofit2.http.POST import retrofit2.http.Path interface FavoriteService { - @POST("/favorite/{id}") + @POST("favorite/{id}") + @Headers( + "Prefer: status=200", + "Content-Type:application/json" + ) fun setFavorite( @Path("id") id: Int ): Call diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt index f9343419..6d602de5 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/Constants.kt @@ -3,5 +3,5 @@ package com.arthurgonzaga.wikistarwars.data object Constants { const val BASE_URL = "https://swapi.dev/api/" - const val FAVORITE_API_BASE_URL = "http://private-782d3-starwarsfavorites.apiary-mock.com/" + const val FAVORITE_API_BASE_URL = "https://private-782d3-starwarsfavorites.apiary-mock.com" } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 7c7819da..642cc7d6 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -8,7 +8,7 @@ import androidx.room.* @Dao -interface CharacterDAO{ +interface CharacterDAO { @Insert(onConflict = OnConflictStrategy.IGNORE) fun insertAll(characterEntity: List): List @@ -23,8 +23,8 @@ interface CharacterDAO{ @Query("SELECT * FROM CHARACTERS WHERE is_favorite = 1") fun getAllFavoriteCharacters(): PagingSource - @Query("UPDATE characters SET is_favorite = 1 WHERE id= :id") - suspend fun favorite(id: Int) + @Query("UPDATE characters SET is_favorite = 1, is_synchronized_with_backend = :isSynchronized WHERE id= :id") + suspend fun favorite(id: Int, isSynchronized: Boolean = false) @Query("UPDATE characters SET is_favorite = 0 WHERE id = :id") suspend fun unFavorite(id: Int) @@ -32,7 +32,7 @@ interface CharacterDAO{ @Query("SELECT * FROM characters") fun getAllCharacters(): PagingSource - @Query("DELETE FROM characters") + @Query("DELETE FROM characters WHERE is_favorite = 0") fun clearCharacters() @Query("UPDATE characters SET is_favorite = 1 WHERE id IN (:ids)") diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt index 678c44b6..e1daf1a2 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/model/CharacterEntity.kt @@ -28,7 +28,7 @@ data class CharacterEntity( @ColumnInfo(name = "home_world_name") val homeWoldName: String? = null, @ColumnInfo(name = "is_favorite") - val isFavorite: Boolean = false, + var isFavorite: Boolean = false, @ColumnInfo(name = "is_synchronized_with_backend") val isSynchronizedWithBackend: Boolean = false, ): Serializable diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt index d0495b93..d290be31 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/ApplicationModule.kt @@ -1,15 +1,24 @@ package com.arthurgonzaga.wikistarwars.di import android.app.Application +import androidx.paging.ExperimentalPagingApi import androidx.room.Room import com.arthurgonzaga.wikistarwars.api.services.FavoriteService +import com.arthurgonzaga.wikistarwars.api.services.HomeWorldService import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.api.services.SpeciesService import com.arthurgonzaga.wikistarwars.data.Constants import com.arthurgonzaga.wikistarwars.data.WikiStarWarsDB +import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO +import com.arthurgonzaga.wikistarwars.repository.HomeRepositoryImpl +import com.arthurgonzaga.wikistarwars.repository.MainRepositoryImpl +import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.scopes.ViewModelScoped import dagger.hilt.components.SingletonComponent import javax.inject.Singleton @@ -26,6 +35,14 @@ object ApplicationModule { fun provideFavoriteService(): FavoriteService = getRetrofitInstance(Constants.FAVORITE_API_BASE_URL) + @Provides + @Singleton + fun provideSpeciesService(): SpeciesService = getRetrofitInstance() + + @Provides + @Singleton + fun provideHomeWorldService(): HomeWorldService = getRetrofitInstance() + @Provides @Singleton fun provideRoomDatabase( @@ -36,4 +53,18 @@ object ApplicationModule { WikiStarWarsDB.NAME ).fallbackToDestructiveMigration().build() + @Provides + @Singleton + fun provideCharacterDAO( + database: WikiStarWarsDB + ): CharacterDAO = database.charactersDAO() + + + @Provides + @Singleton + fun provideMainRepository( + favoriteService: FavoriteService, + dao: CharacterDAO + ): MainRepository = MainRepositoryImpl(favoriteService, dao) + } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt deleted file mode 100644 index 62a8a7d1..00000000 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/di/DetailModule.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.arthurgonzaga.wikistarwars.di - -import com.arthurgonzaga.wikistarwars.api.services.HomeWorldService -import com.arthurgonzaga.wikistarwars.api.services.SpeciesService -import com.arthurgonzaga.wikistarwars.repository.interfaces.DetailRepository -import com.arthurgonzaga.wikistarwars.util.getRetrofitInstance -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.android.components.ViewModelComponent -import dagger.hilt.android.scopes.ViewModelScoped - -@Module -@InstallIn(ViewModelComponent::class) -object DetailModule { - - @Provides - @ViewModelScoped - fun provideSpeciesService(): SpeciesService = getRetrofitInstance() - - @Provides - @ViewModelScoped - fun provideHomeWorldService(): HomeWorldService = getRetrofitInstance() - - @Provides - @ViewModelScoped - fun provideDetailRepository(): DetailRepository = TODO() -} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt index e2e0099b..a9353a98 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/FavoritesRepositoryImpl.kt @@ -22,8 +22,4 @@ class FavoritesRepositoryImpl @Inject constructor( db.charactersDAO().getAllFavoriteCharacters() }.liveData } - - override suspend fun unFavorite(characterId: Int) { - db.charactersDAO().unFavorite(characterId) - } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt index 58218101..5f31531b 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/HomeRepositoryImpl.kt @@ -37,13 +37,4 @@ class HomeRepositoryImpl @Inject constructor( ) ).liveData } - - - override suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) { - if (isFavorite) { - database.charactersDAO().favorite(characterId) - } else { - database.charactersDAO().unFavorite(characterId) - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt new file mode 100644 index 00000000..0fdbbf75 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt @@ -0,0 +1,37 @@ +package com.arthurgonzaga.wikistarwars.repository + +import android.util.Log +import com.arthurgonzaga.wikistarwars.api.services.FavoriteService +import com.arthurgonzaga.wikistarwars.api.services.PeopleService +import com.arthurgonzaga.wikistarwars.data.dao.CharacterDAO +import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository +import com.arthurgonzaga.wikistarwars.viewmodel.HomeViewModel +import retrofit2.HttpException +import retrofit2.await +import retrofit2.awaitResponse +import javax.inject.Inject + +class MainRepositoryImpl @Inject constructor( + private val favoriteService: FavoriteService, + private val dao: CharacterDAO +): MainRepository { + + override suspend fun favoriteCharacter(characterId: Int): Boolean { + return try { + val isSuccessful = favoriteService.setFavorite(characterId).awaitResponse().isSuccessful + dao.favorite(characterId, isSuccessful) + isSuccessful + }catch (e: HttpException){ + false + } + } + + override suspend fun unFavoriteCharacter(characterId: Int) { + dao.unFavorite(characterId) + } + + override suspend fun synchronizeFavoriteCharacters(): Boolean { + TODO("Not yet implemented") + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt deleted file mode 100644 index ddfb5796..00000000 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/DetailRepository.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.arthurgonzaga.wikistarwars.repository.interfaces - -interface DetailRepository { - - //fun get -} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt index 100870f0..2bf2e0f4 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/FavoritesRepository.kt @@ -7,7 +7,4 @@ import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity interface FavoritesRepository { fun getFavoriteCharacters(): LiveData> - - suspend fun unFavorite(characterId: Int) - } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt index bd2c87e2..8540c438 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/HomeRepository.kt @@ -9,5 +9,4 @@ interface HomeRepository { fun getCharacters(query: String): LiveData> - suspend fun favoriteCharacter(characterId: Int, isFavorite: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/MainRepository.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/MainRepository.kt new file mode 100644 index 00000000..f57b2844 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/interfaces/MainRepository.kt @@ -0,0 +1,10 @@ +package com.arthurgonzaga.wikistarwars.repository.interfaces + +interface MainRepository { + + suspend fun favoriteCharacter(characterId: Int): Boolean + + suspend fun unFavoriteCharacter(characterId: Int) + + suspend fun synchronizeFavoriteCharacters(): Boolean +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt index 7b19f940..add3ca3a 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/paging/CharacterRemoteMediator.kt @@ -103,10 +103,12 @@ class CharacterRemoteMediator( // clear all the rows with isFavorite = false // update all the rows with isFavorite = true database.charactersDAO().upsert(characters) + // FIXME: 9/28/2021 (need to separate the favorites from the CharacterEntity model) + // BUG: it shows the search and the favorites, even if they has anything to do with the query } val prevKey = if (page == STARTING_PAGE_INDEX) null else page - 1 - var nextKey = if (characters.isEmpty()) null else page + 1 + val nextKey = if (characters.isEmpty()) null else page + 1 val keys = characters.map { RemoteKeys(characterId = it.id, prevKey = prevKey, nextKey = nextKey) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt index 6f92479f..3ad06517 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/adapters/CharacterAdapter.kt @@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.databinding.RvCharacterItemBinding +import com.arthurgonzaga.wikistarwars.util.setImage import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -82,14 +83,6 @@ class CharacterAdapter( } } - private fun ImageButton.setImage(isFavorite: Boolean) { - val drawable = ResourcesCompat.getDrawable( - context.resources, - if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border, - context.theme - ) - this.setImageDrawable(drawable) - } class VH(val binding: RvCharacterItemBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt index 118c6074..9fcde7e6 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -6,6 +6,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.os.trace import androidx.core.view.forEach import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope @@ -16,6 +17,7 @@ import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.databinding.FragmentDetailBinding import com.arthurgonzaga.wikistarwars.databinding.FragmentHomeBinding import com.arthurgonzaga.wikistarwars.ui.components.CharacterInfo +import com.arthurgonzaga.wikistarwars.util.setImage import com.arthurgonzaga.wikistarwars.viewmodel.DetailViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.delay @@ -44,6 +46,26 @@ class DetailFragment : Fragment() { binding.character = args.character + val characterId = args.character.id + binding.favoriteButton.setOnClickListener { + if (args.character.isFavorite) { + vm.unFavoriteCharacter(characterId) + binding.favoriteButton.setImage(false) + args.character.isFavorite = false + } else { + vm.favoriteCharacter(characterId) + binding.favoriteButton.setImage(true) + args.character.isFavorite = true + } + } + + setupAnimations() + + return binding.root + } + + + fun setupAnimations() { val animation = TransitionInflater.from(requireContext()).inflateTransition( android.R.transition.move ) @@ -53,11 +75,9 @@ class DetailFragment : Fragment() { lifecycleScope.launch { showInfosWithAnimation() } - - return binding.root } - private suspend fun showInfosWithAnimation(){ + private suspend fun showInfosWithAnimation() { delay(260) binding.gridLayout.forEach { info -> (info as CharacterInfo) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt index b845fdba..ccffce07 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/FavoriteListFragment.kt @@ -59,8 +59,7 @@ class FavoriteListFragment : Fragment() { context = requireContext(), navigateToDetail = ::navigateToDetailFragment, favoriteCharacter = { id, isFavorite -> - if (!isFavorite) vm.unFavorite(id) - + if (!isFavorite) vm.unFavoriteCharacter(id) } ) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index bb6d5e14..9e2737d5 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -1,6 +1,7 @@ package com.arthurgonzaga.wikistarwars.ui.fragments import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -8,6 +9,7 @@ import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.widget.ImageButton import android.widget.TextView +import android.widget.Toast import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -46,11 +48,15 @@ class HomeFragment : Fragment() { setupRecyclerView() setupSearchBar() - observeChanges() return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + observeChanges() + } + private fun setupRecyclerView(){ characterAdapter = CharacterAdapter( @@ -85,6 +91,9 @@ class HomeFragment : Fragment() { } false } + binding.row.favoriteListButton.setOnClickListener { _ -> + navigateToFavoritesFragment() + } } private fun observeChanges(){ @@ -94,8 +103,11 @@ class HomeFragment : Fragment() { } } - binding.row.favoriteListButton.setOnClickListener { _ -> - navigateToFavoritesFragment() + vm.newFavorite.observe(viewLifecycleOwner){ isSuccessful -> + Log.d(TAG, "isSuccessful: $isSuccessful") + if(isSuccessful == true){ + Toast.makeText(requireContext(), R.string.favorite_success, Toast.LENGTH_SHORT).show() + } } } @@ -116,4 +128,8 @@ class HomeFragment : Fragment() { R.id.goToDetailFragmentFromHome ) + + companion object { + private const val TAG = "HomeFragment" + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/util/SetImage.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/SetImage.kt new file mode 100644 index 00000000..bfdd04f7 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/util/SetImage.kt @@ -0,0 +1,14 @@ +package com.arthurgonzaga.wikistarwars.util + +import android.widget.ImageButton +import androidx.core.content.res.ResourcesCompat +import com.arthurgonzaga.wikistarwars.R + +fun ImageButton.setImage(isFavorite: Boolean) { + val drawable = ResourcesCompat.getDrawable( + context.resources, + if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border, + context.theme + ) + this.setImageDrawable(drawable) +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt index 96961931..f6fbdde9 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt @@ -1,13 +1,27 @@ package com.arthurgonzaga.wikistarwars.viewmodel import androidx.lifecycle.ViewModel -import com.arthurgonzaga.wikistarwars.repository.interfaces.DetailRepository +import androidx.lifecycle.viewModelScope +import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel class DetailViewModel @Inject constructor( - //detailRepository: DetailRepository + val mainRepository: MainRepository ): ViewModel() { + + fun unFavoriteCharacter(id: Int){ + viewModelScope.launch { + mainRepository.unFavoriteCharacter(id) + } + } + + fun favoriteCharacter(id: Int){ + viewModelScope.launch { + mainRepository.favoriteCharacter(id) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt index 41d2a284..3deeee28 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/FavoritesViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.viewModelScope import androidx.paging.cachedIn import com.arthurgonzaga.wikistarwars.repository.interfaces.FavoritesRepository import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject @@ -12,14 +13,15 @@ import javax.inject.Inject @HiltViewModel class FavoritesViewModel @Inject constructor( - val repository: FavoritesRepository + favoritesRepository: FavoritesRepository, + private val mainRepository: MainRepository ): ViewModel() { - val favoritesCharacters = repository.getFavoriteCharacters().cachedIn(viewModelScope) + val favoritesCharacters = favoritesRepository.getFavoriteCharacters().cachedIn(viewModelScope) - fun unFavorite(id: Int){ + fun unFavoriteCharacter(id: Int){ viewModelScope.launch { - repository.unFavorite(id) + mainRepository.unFavoriteCharacter(id) } } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt index 66b7151e..d225842f 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/HomeViewModel.kt @@ -4,13 +4,16 @@ import android.util.Log import androidx.lifecycle.* import androidx.paging.cachedIn import com.arthurgonzaga.wikistarwars.repository.interfaces.HomeRepository +import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch +import retrofit2.HttpException import javax.inject.Inject @HiltViewModel class HomeViewModel @Inject constructor( - val repository: HomeRepository + val repository: HomeRepository, + val mainRepository: MainRepository ) : ViewModel(), LifecycleObserver { @@ -24,10 +27,18 @@ class HomeViewModel @Inject constructor( } } + private val _newFavorite = MutableLiveData() + val newFavorite: LiveData = _newFavorite - fun favoriteCharacter(characterId: Int, isFavorite: Boolean){ + + fun favoriteCharacter(characterId: Int, favorite: Boolean){ viewModelScope.launch { - repository.favoriteCharacter(characterId, isFavorite) + if(favorite){ + _newFavorite.value = mainRepository.favoriteCharacter(characterId) + _newFavorite.value = null + }else { + mainRepository.unFavoriteCharacter(characterId) + } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d2b9535f..718cc288 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,4 +20,6 @@ Search Favorite list %1$s cm - %2$s kg + + Character was favorited successfully \ No newline at end of file From a48e6549abb50a87f807e1d214024f0993fddb73 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Tue, 28 Sep 2021 22:58:06 -0300 Subject: [PATCH 48/53] Improve DetailFragment UI --- README.md | 44 +++++++++---------- .../ui/fragments/DetailFragment.kt | 14 ++++++ .../wikistarwars/viewmodel/DetailViewModel.kt | 9 +++- app/src/main/res/layout/fragment_detail.xml | 4 +- app/src/main/res/values/strings.xml | 2 + 5 files changed, 48 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index c0193b60..f7e29715 100644 --- a/README.md +++ b/README.md @@ -12,36 +12,36 @@ http://docs.starwarsfavorites.apiary.io/# ### Lista de Personagens -Para obter os personagens, sua aplicação deverá utilizar o recurso `people` da Swapi (documentação disponível no topo do documento). A aplicação deve exibir todos os 87 personagens e permitir pesquisar o personagem pelo nome. Sugerimos exibir as primeiras páginas enquanto carrega as outras, em um formato de scroll infinito. +Para obter os personagens, sua aplicação deverá utilizar o recurso `people` da Swapi (documentação disponível no topo do documento). A aplicação deve exibir todos os 87 personagens e permitir pesquisar o personagem pelo nome. Sugerimos exibir as primeiras páginas enquanto carrega as outras, em um formato de scroll infinito. ✅ A lista de itens deve exibir as seguintes informações: -+ Nome [name] -+ Altura [height] -+ Genero [gender] -+ Peso [mass] ++ Nome [name] ✅ ++ Altura [height] ✅ ++ Genero [gender] ✅ ++ Peso [mass] ✅ -Os dados devem ser salvos em banco de dados local para acesso offline e atualizados sempre que a tela for aberta. +Os dados devem ser salvos em banco de dados local para acesso offline e atualizados sempre que a tela for aberta. ✅ ### Detalhes do Personagem Ao clicar em um item da lista o seu app deve mostrar as informações abaixo: -+ name -+ height -+ mass -+ hair_color -+ skin_color -+ eye_color -+ birth_year -+ gender -+ Nome do Planeta Natal -+ Nome da Espécie ++ name ✅ ++ height ✅ ++ mass ✅ ++ hair_color ✅ ++ skin_color ✅ ++ eye_color ✅ ++ birth_year ✅ ++ gender ✅ ++ Nome do Planeta Natal ✅ ++ Nome da Espécie ✅ -A busca pelo nome do planeta e da espécie deve ser feita em paralelo. +A busca pelo nome do planeta e da espécie deve ser feita em paralelo. ✅ ### Favoritos -Na lista e nos detalhes deve ser possível adicionar e remover um personagem a sua lista de favoritos. Tambem deve ser possível filtrar quais personagens foram favoritados na lista principal. +Na lista e nos detalhes deve ser possível adicionar e remover um personagem a sua lista de favoritos. ✅ Tambem deve ser possível filtrar quais personagens foram favoritados na lista principal. ✅ ##### Adição e Remoção de Favoritos @@ -49,14 +49,14 @@ URL BASE: http://private-782d3-starwarsfavorites.apiary-mock.com/ Ao adicionar um favorito a aplicação deve fazer um request para a api starwarsfavorites (documentação disponível no topo do documento). A aplicação deve: -+ Exibir a mensagem de retorno da API em caso de sucesso ou erro. ++ Exibir a mensagem de retorno da API em caso de sucesso ou erro.✅ + Reenviar a requisição da próxima vez que o app for aberto em caso de erro. -+ Salvar no banco de dados local quais personagens foram favoritados. -+ Tratar a remoção de favoritos apenas no banco de dados local. ++ Salvar no banco de dados local quais personagens foram favoritados.✅ ++ Tratar a remoção de favoritos apenas no banco de dados local.✅ Em metade das requisições enviadas para a api starwarsfavorites a aplicação deve adicionar o header `Prefer` com o valor `status=400`. -P.S.: O candidato deve escolher o ID. +P.S.: O candidato deve escolher o ID.✅ --- #### LICENSE diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt index 9fcde7e6..51632d70 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/DetailFragment.kt @@ -6,6 +6,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.core.os.trace import androidx.core.view.forEach import androidx.fragment.app.viewModels @@ -85,4 +86,17 @@ class DetailFragment : Fragment() { delay(25) } } + + fun observeChanges(){ + vm.newFavorite.observe(viewLifecycleOwner){ isSuccessful -> + Log.d(TAG, "isSuccessful: $isSuccessful") + if(isSuccessful == true){ + Toast.makeText(requireContext(), R.string.favorite_success, Toast.LENGTH_SHORT).show() + } + } + } + + companion object { + private const val TAG = "DetailFragment" + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt index f6fbdde9..84a6b930 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/DetailViewModel.kt @@ -1,5 +1,7 @@ package com.arthurgonzaga.wikistarwars.viewmodel +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository @@ -13,6 +15,10 @@ class DetailViewModel @Inject constructor( ): ViewModel() { + private val _newFavorite = MutableLiveData() + val newFavorite: LiveData = _newFavorite + + fun unFavoriteCharacter(id: Int){ viewModelScope.launch { mainRepository.unFavoriteCharacter(id) @@ -21,7 +27,8 @@ class DetailViewModel @Inject constructor( fun favoriteCharacter(id: Int){ viewModelScope.launch { - mainRepository.favoriteCharacter(id) + _newFavorite.value = mainRepository.favoriteCharacter(id) + _newFavorite.value = null } } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml index 8d0a04e9..3b1f2988 100644 --- a/app/src/main/res/layout/fragment_detail.xml +++ b/app/src/main/res/layout/fragment_detail.xml @@ -62,7 +62,7 @@ android:layout_marginEnd="@dimen/column_spacing" android:layout_marginBottom="@dimen/large" android:visibility="invisible" - app:subtitle="@{character.height}" + app:subtitle="@{@string/height_subtitle(character.height)}" app:title="@string/height" tools:subtitle="172 cm" tools:visibility="visible" /> @@ -80,7 +80,7 @@ android:id="@+id/weight_info" android:layout_marginEnd="@dimen/column_spacing" android:visibility="invisible" - app:subtitle="@{character.weight}" + app:subtitle="@{@string/weight_subtitle(character.weight)}" app:title="@string/weight" tools:subtitle="77 kg" tools:visibility="visible" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 718cc288..415298fe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,8 @@ Search Favorite list %1$s cm - %2$s kg + %1$s cm + %1$s kg Character was favorited successfully \ No newline at end of file From d6842233cf4949448c470f4c1699aaf0ed077e34 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Wed, 29 Sep 2021 12:07:47 -0300 Subject: [PATCH 49/53] Implement theme Changer --- README.md | 4 +-- .../wikistarwars/ui/MainActivity.kt | 15 ++++++++++ .../wikistarwars/ui/components/MyThemes.kt | 7 +++++ .../wikistarwars/ui/fragments/HomeFragment.kt | 22 +++++++++++++++ .../ic_baseline_remove_red_eye_24.xml | 10 +++++++ app/src/main/res/drawable/ic_close.xml | 10 +++++++ app/src/main/res/layout/fragment_home.xml | 4 ++- .../main/res/layout/home_header_layout.xml | 28 ++++++++++++++++++- app/src/main/res/values/colors.xml | 3 ++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/themes.xml | 19 ++++++++++++- 11 files changed, 118 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/MyThemes.kt create mode 100644 app/src/main/res/drawable/ic_baseline_remove_red_eye_24.xml create mode 100644 app/src/main/res/drawable/ic_close.xml diff --git a/README.md b/README.md index f7e29715..a5f5c8d8 100644 --- a/README.md +++ b/README.md @@ -50,11 +50,11 @@ URL BASE: http://private-782d3-starwarsfavorites.apiary-mock.com/ Ao adicionar um favorito a aplicação deve fazer um request para a api starwarsfavorites (documentação disponível no topo do documento). A aplicação deve: + Exibir a mensagem de retorno da API em caso de sucesso ou erro.✅ -+ Reenviar a requisição da próxima vez que o app for aberto em caso de erro. ++ Reenviar a requisição da próxima vez que o app for aberto em caso de erro. ✅ + Salvar no banco de dados local quais personagens foram favoritados.✅ + Tratar a remoção de favoritos apenas no banco de dados local.✅ -Em metade das requisições enviadas para a api starwarsfavorites a aplicação deve adicionar o header `Prefer` com o valor `status=400`. +Em metade das requisições enviadas para a api starwarsfavorites a aplicação deve adicionar o header `Prefer` com o valor `status=400`. ✅ P.S.: O candidato deve escolher o ID.✅ diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt index 66c5a7d7..27af0452 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt @@ -1,14 +1,18 @@ package com.arthurgonzaga.wikistarwars.ui +import android.content.Context import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import androidx.annotation.IdRes import com.arthurgonzaga.wikistarwars.R +import com.arthurgonzaga.wikistarwars.ui.components.MyThemes import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setTheme(getMyTheme()) setContentView(R.layout.activity_main) } @@ -17,4 +21,15 @@ class MainActivity : AppCompatActivity() { super.onBackPressed() } + + private fun getMyTheme(): Int{ + val sharedPref = this.getSharedPreferences(getString(R.string.theme_key), Context.MODE_PRIVATE) + + return when(sharedPref.getInt("theme", MyThemes.YELLOW.ordinal)){ + MyThemes.YELLOW.ordinal -> R.style.Theme_WikiStarWars_Yellow + MyThemes.BLUE.ordinal -> R.style.Theme_WikiStarWars_Blue + MyThemes.RED.ordinal -> R.style.Theme_WikiStarWars_Red + else -> R.style.Theme_WikiStarWars_Yellow + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/MyThemes.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/MyThemes.kt new file mode 100644 index 00000000..259d38a9 --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/components/MyThemes.kt @@ -0,0 +1,7 @@ +package com.arthurgonzaga.wikistarwars.ui.components + +enum class MyThemes { + YELLOW, + BLUE, + RED +} \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index 9e2737d5..fc127c10 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -1,5 +1,6 @@ package com.arthurgonzaga.wikistarwars.ui.fragments +import android.content.Context import android.os.Bundle import android.util.Log import androidx.fragment.app.Fragment @@ -20,6 +21,7 @@ import com.arthurgonzaga.wikistarwars.viewmodel.HomeViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity +import com.arthurgonzaga.wikistarwars.ui.components.MyThemes import com.arthurgonzaga.wikistarwars.ui.components.SpacingItemDecoration import com.arthurgonzaga.wikistarwars.ui.util.navigateToDetailFragment @@ -48,6 +50,7 @@ class HomeFragment : Fragment() { setupRecyclerView() setupSearchBar() + setupThemeChanger() return binding.root } @@ -96,6 +99,25 @@ class HomeFragment : Fragment() { } } + private fun setupThemeChanger(){ + val sharedPref = requireContext().getSharedPreferences(getString(R.string.theme_key), Context.MODE_PRIVATE) + + val nextTheme = when(binding.header.changeColor.backgroundTintList?.defaultColor){ + requireContext().getColor(R.color.yellow) -> MyThemes.YELLOW + requireContext().getColor(R.color.blue) -> MyThemes.BLUE + requireContext().getColor(R.color.red) -> MyThemes.RED + else -> MyThemes.YELLOW + } + + binding.header.changeColor.setOnClickListener { _ -> + with(sharedPref.edit()){ + putInt("theme", nextTheme.ordinal) + commit() + } + requireActivity().recreate() + } + } + private fun observeChanges(){ vm.characters.observe(viewLifecycleOwner) { pagingData -> viewLifecycleOwner.lifecycleScope.launch { diff --git a/app/src/main/res/drawable/ic_baseline_remove_red_eye_24.xml b/app/src/main/res/drawable/ic_baseline_remove_red_eye_24.xml new file mode 100644 index 00000000..af4fdc3d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_remove_red_eye_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 00000000..87296030 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 4e0d4fa1..9e3b7bad 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -27,7 +27,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/home_header_layout.xml b/app/src/main/res/layout/home_header_layout.xml index 598a2fd3..f4bda05a 100644 --- a/app/src/main/res/layout/home_header_layout.xml +++ b/app/src/main/res/layout/home_header_layout.xml @@ -1,6 +1,7 @@ @@ -8,8 +9,8 @@ android:id="@+id/star" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/starwars" android:lineSpacingMultiplier="0.8" + android:text="@string/starwars" android:textAlignment="center" android:textAppearance="@style/LogoTextAppearance" app:layout_constraintEnd_toEndOf="parent" @@ -31,4 +32,29 @@ app:layout_constraintTop_toTopOf="@+id/star" app:layout_constraintVertical_bias="0.53" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index cc95286f..f9673d7d 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,7 +1,10 @@ #FFFFE919 + #FF4EADFF + #FFEF233C #FF000000 + #80000000 #FFEDF2F4 #FF8D99AE \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 415298fe..3e025cd6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,4 +24,5 @@ %1$s kg Character was favorited successfully + theme_key \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 6ad52971..092ae1cc 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -23,7 +23,24 @@ @color/yellow @color/yellow - @color/black + @color/blue + @color/white + + + + + \ No newline at end of file From dd3dadc3277d781bfa121b5ee62578cef337a4f9 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Wed, 29 Sep 2021 12:14:47 -0300 Subject: [PATCH 50/53] Improve home header UI/UX --- .../wikistarwars/ui/fragments/HomeFragment.kt | 7 ++++++- app/src/main/res/layout/home_header_layout.xml | 6 +++--- app/src/main/res/layout/home_row_layout.xml | 4 ++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index fc127c10..c1b3dbcf 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -88,12 +88,17 @@ class HomeFragment : Fragment() { if(action == EditorInfo.IME_ACTION_SEARCH){ vm.search(textView.text.toString()) - textView.text = "" return@setOnEditorActionListener true } false } + + binding.row.searchBarLayout.setEndIconOnClickListener { _ -> + binding.row.searchBar.setText("") + vm.search("") + } + binding.row.favoriteListButton.setOnClickListener { _ -> navigateToFavoritesFragment() } diff --git a/app/src/main/res/layout/home_header_layout.xml b/app/src/main/res/layout/home_header_layout.xml index f4bda05a..078feadd 100644 --- a/app/src/main/res/layout/home_header_layout.xml +++ b/app/src/main/res/layout/home_header_layout.xml @@ -36,12 +36,12 @@ android:id="@+id/changeColor" android:layout_width="@dimen/medium" android:layout_height="@dimen/medium" - android:background="@drawable/circle" android:layout_marginEnd="@dimen/large" + android:background="@drawable/circle" android:backgroundTint="?colorSecondaryVariant" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toBottomOf="@+id/app_description" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="@+id/app_description"> From 53575a1b64442d08bdc41defc48019240e42b002 Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Wed, 29 Sep 2021 12:25:00 -0300 Subject: [PATCH 51/53] Implement recyclerview animators --- app/build.gradle | 5 +++++ .../arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt | 2 ++ 2 files changed, 7 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 88ca3bc0..805d3866 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -63,6 +63,7 @@ dependencies { def room_version = "2.3.0" def lifecycle_version = "2.2.0" def rxjava_version = "3.0.0" + def rv_animators_version = "4.0.2" // Retrofit @@ -103,6 +104,10 @@ dependencies { implementation "io.reactivex.rxjava3:rxjava:$rxjava_version" implementation "io.reactivex.rxjava3:rxandroid:$rxjava_version" + // RecyclerView Animators + + implementation "jp.wasabeef:recyclerview-animators:$rv_animators_version" + // Testing def mockito_version = "2.21.0" diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt index c1b3dbcf..60d3fc40 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/fragments/HomeFragment.kt @@ -24,6 +24,7 @@ import com.arthurgonzaga.wikistarwars.data.model.CharacterEntity import com.arthurgonzaga.wikistarwars.ui.components.MyThemes import com.arthurgonzaga.wikistarwars.ui.components.SpacingItemDecoration import com.arthurgonzaga.wikistarwars.ui.util.navigateToDetailFragment +import jp.wasabeef.recyclerview.animators.ScaleInAnimator /** @@ -75,6 +76,7 @@ class HomeFragment : Fragment() { startPostponedEnterTransition() true } + itemAnimator = ScaleInAnimator() val space = requireContext().resources.getDimensionPixelSize(R.dimen.normal) val spanCount = requireContext().resources.getInteger(R.integer.rv_column_count) From b1c6ff5370228dd65e30e713be07286e5a3d41dd Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Wed, 29 Sep 2021 12:39:02 -0300 Subject: [PATCH 52/53] Update README --- README.md | 63 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index a5f5c8d8..082174ac 100644 --- a/README.md +++ b/README.md @@ -15,33 +15,33 @@ http://docs.starwarsfavorites.apiary.io/# Para obter os personagens, sua aplicação deverá utilizar o recurso `people` da Swapi (documentação disponível no topo do documento). A aplicação deve exibir todos os 87 personagens e permitir pesquisar o personagem pelo nome. Sugerimos exibir as primeiras páginas enquanto carrega as outras, em um formato de scroll infinito. ✅ A lista de itens deve exibir as seguintes informações: -+ Nome [name] ✅ -+ Altura [height] ✅ -+ Genero [gender] ✅ -+ Peso [mass] ✅ ++ Nome [name] ✔ ++ Altura [height] ✔ ++ Genero [gender] ✔ ++ Peso [mass] ✔ -Os dados devem ser salvos em banco de dados local para acesso offline e atualizados sempre que a tela for aberta. ✅ +Os dados devem ser salvos em banco de dados local para acesso offline e atualizados sempre que a tela for aberta. ✔ ### Detalhes do Personagem Ao clicar em um item da lista o seu app deve mostrar as informações abaixo: -+ name ✅ -+ height ✅ -+ mass ✅ -+ hair_color ✅ -+ skin_color ✅ -+ eye_color ✅ -+ birth_year ✅ -+ gender ✅ -+ Nome do Planeta Natal ✅ -+ Nome da Espécie ✅ ++ name ✔ ++ height ✔ ++ mass ✔ ++ hair_color ✔ ++ skin_color ✔ ++ eye_color ✔ ++ birth_year ✔ ++ gender ✔ ++ Nome do Planeta Natal ✔ ++ Nome da Espécie ✔ -A busca pelo nome do planeta e da espécie deve ser feita em paralelo. ✅ +A busca pelo nome do planeta e da espécie deve ser feita em paralelo. ✔ ### Favoritos -Na lista e nos detalhes deve ser possível adicionar e remover um personagem a sua lista de favoritos. ✅ Tambem deve ser possível filtrar quais personagens foram favoritados na lista principal. ✅ +Na lista e nos detalhes deve ser possível adicionar e remover um personagem a sua lista de favoritos. ✔ Tambem deve ser possível filtrar quais personagens foram favoritados na lista principal. ✔ ##### Adição e Remoção de Favoritos @@ -49,14 +49,31 @@ URL BASE: http://private-782d3-starwarsfavorites.apiary-mock.com/ Ao adicionar um favorito a aplicação deve fazer um request para a api starwarsfavorites (documentação disponível no topo do documento). A aplicação deve: -+ Exibir a mensagem de retorno da API em caso de sucesso ou erro.✅ -+ Reenviar a requisição da próxima vez que o app for aberto em caso de erro. ✅ -+ Salvar no banco de dados local quais personagens foram favoritados.✅ -+ Tratar a remoção de favoritos apenas no banco de dados local.✅ ++ Exibir a mensagem de retorno da API em caso de sucesso ou erro. ✔ ++ Reenviar a requisição da próxima vez que o app for aberto em caso de erro. ✔ ++ Salvar no banco de dados local quais personagens foram favoritados. ✔ ++ Tratar a remoção de favoritos apenas no banco de dados local. ✔ -Em metade das requisições enviadas para a api starwarsfavorites a aplicação deve adicionar o header `Prefer` com o valor `status=400`. ✅ +Em metade das requisições enviadas para a api starwarsfavorites a aplicação deve adicionar o header `Prefer` com o valor `status=400`. ✔ -P.S.: O candidato deve escolher o ID.✅ +P.S.: O candidato deve escolher o ID. ✔ + +# Implementações diferenciadas 🚀 + ++ O aplicativo também fica bonito quando está na horizontal. ✅ ++ O aplicativo pode mudar de tema, podendo implementar mais temas de cores diferentes facilmente. ✅ ++ O aplicativo tem animações de views compartilhadas. ✅ ++ O aplicativo tem animações na recyclerview. ✅ ++ O aplicativo tem animações na tela de detalhes. ✅ + +##### Bugs na implementação 👀 + ++ Mostra os itens favoritados quando é feito uma pesquisa, mesmo se o item não tiver nada haver com a pesquisa. + +###### Possiveis soluções + ++ Ao invés de usar o RemoteMediator para pesquisar e ver todos os itens, pode-se separar e usar um PageSource e verificar se há algum favorito na lista ++ Usar tabelas diferentes --- #### LICENSE From d95f5de9a4f2e21a9057eebf095de864fa6843bf Mon Sep 17 00:00:00 2001 From: arthurgonzaga Date: Wed, 29 Sep 2021 13:55:54 -0300 Subject: [PATCH 53/53] Implement Syncronization with backend --- .../wikistarwars/data/dao/CharacterDAO.kt | 7 +++++ .../repository/MainRepositoryImpl.kt | 14 +++++++-- .../wikistarwars/ui/MainActivity.kt | 16 ++++++---- .../wikistarwars/viewmodel/MainViewModel.kt | 30 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + .../api/responses/CharacterResponseTest.kt | 6 ++-- 6 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/MainViewModel.kt diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt index 642cc7d6..fbe7cad0 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/data/dao/CharacterDAO.kt @@ -17,6 +17,13 @@ interface CharacterDAO { @Query("SELECT id FROM characters WHERE is_favorite = 1") suspend fun getAllFavoritesIds(): List + @Query("SELECT id FROM characters WHERE is_favorite = 1 AND is_synchronized_with_backend = 0") + suspend fun getAllFavoritesIdsNotInSync(): List + + @Query("UPDATE characters SET is_synchronized_with_backend = 1 WHERE id= :id") + suspend fun setInSync(id: Int) + + @Query("SELECT id FROM characters WHERE is_favorite = 1") fun getAllFavoritesIdsUpsert(): List diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt index 0fdbbf75..fc2f619f 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/repository/MainRepositoryImpl.kt @@ -18,10 +18,12 @@ class MainRepositoryImpl @Inject constructor( override suspend fun favoriteCharacter(characterId: Int): Boolean { return try { + dao.favorite(characterId, false) val isSuccessful = favoriteService.setFavorite(characterId).awaitResponse().isSuccessful dao.favorite(characterId, isSuccessful) + isSuccessful - }catch (e: HttpException){ + }catch (e: Exception){ false } } @@ -31,7 +33,15 @@ class MainRepositoryImpl @Inject constructor( } override suspend fun synchronizeFavoriteCharacters(): Boolean { - TODO("Not yet implemented") + val ids = dao.getAllFavoritesIdsNotInSync() + + val syncResults = mutableListOf() + ids.map { + val isSuccessful = favoriteService.setFavorite(it).awaitResponse().isSuccessful + dao.setInSync(it) + syncResults.add(isSuccessful) + } + return !syncResults.contains(false) } } \ No newline at end of file diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt index 27af0452..3c4d8389 100644 --- a/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/ui/MainActivity.kt @@ -3,23 +3,29 @@ package com.arthurgonzaga.wikistarwars.ui import android.content.Context import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.Toast +import androidx.activity.viewModels import androidx.annotation.IdRes import com.arthurgonzaga.wikistarwars.R import com.arthurgonzaga.wikistarwars.ui.components.MyThemes +import com.arthurgonzaga.wikistarwars.viewmodel.MainViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : AppCompatActivity() { + + private val vm : MainViewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setTheme(getMyTheme()) setContentView(R.layout.activity_main) - } - - override fun onBackPressed() { - super.onBackPressed() - + vm.inSync.observe(this){ + if(it == true){ + Toast.makeText(this, R.string.sync_success, Toast.LENGTH_SHORT).show() + } + } } private fun getMyTheme(): Int{ diff --git a/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/MainViewModel.kt b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/MainViewModel.kt new file mode 100644 index 00000000..71fc67ae --- /dev/null +++ b/app/src/main/java/com/arthurgonzaga/wikistarwars/viewmodel/MainViewModel.kt @@ -0,0 +1,30 @@ +package com.arthurgonzaga.wikistarwars.viewmodel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.arthurgonzaga.wikistarwars.repository.interfaces.MainRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + + +@HiltViewModel +class MainViewModel @Inject constructor( + private val mainRepository: MainRepository +): ViewModel() { + + private val _inSync = MutableLiveData() + val inSync: LiveData = _inSync + + init { + viewModelScope.launch { + synchronizeWithBackend() + } + } + + private suspend fun synchronizeWithBackend(){ + _inSync.value = mainRepository.synchronizeFavoriteCharacters() + } +} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3e025cd6..af8929cf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,5 +24,6 @@ %1$s kg Character was favorited successfully + Favorite characters was synchronized successfully theme_key \ No newline at end of file diff --git a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt index be1097a1..54b77796 100644 --- a/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt +++ b/app/src/test/java/com/arthurgonzaga/wikistarwars/api/responses/CharacterResponseTest.kt @@ -20,7 +20,7 @@ class CharacterResponseTest { ) // When - val specieId = characterResponse.specieId + val specieId = characterResponse.getSpecieId() // Then assertThat(specieId).isEqualTo(null) @@ -40,7 +40,7 @@ class CharacterResponseTest { ) // When - val specieId = characterResponse.specieId + val specieId = characterResponse.getSpecieId() // Then assertThat(specieId).isEqualTo(1) @@ -57,7 +57,7 @@ class CharacterResponseTest { ) // When - val planetId = characterResponse.homeWorldId + val planetId = characterResponse.getHomeWorldId() // Then assertThat(planetId).isEqualTo(10)