From 955bfda4606bfcd1b3a461e8bf331af33b3779cd Mon Sep 17 00:00:00 2001 From: gavine99 Date: Wed, 22 Jan 2025 16:26:04 +1100 Subject: [PATCH] added feature to render and play audio/* mime type mms attachments --- .../QKSMS/extensions/MmsPartExtensions.kt | 2 + .../com/moez/QKSMS/common/QkMediaPlayer.kt | 45 ++++ .../QKSMS/feature/compose/ComposeActivity.kt | 9 + .../QKSMS/feature/compose/part/AudioBinder.kt | 209 ++++++++++++++++++ .../part/{MediaBinder.kt => ImageBinder.kt} | 6 +- .../feature/compose/part/PartsAdapter.kt | 5 +- .../res/drawable/audio_preview_foreground.png | Bin 0 -> 54307 bytes .../main/res/layout/message_list_item_in.xml | 2 +- .../main/res/layout/message_list_item_out.xml | 2 +- .../layout/mms_audio_preview_list_item.xml | 98 ++++++++ ...em.xml => mms_image_preview_list_item.xml} | 0 11 files changed, 371 insertions(+), 7 deletions(-) create mode 100644 presentation/src/main/java/com/moez/QKSMS/common/QkMediaPlayer.kt create mode 100644 presentation/src/main/java/com/moez/QKSMS/feature/compose/part/AudioBinder.kt rename presentation/src/main/java/com/moez/QKSMS/feature/compose/part/{MediaBinder.kt => ImageBinder.kt} (92%) create mode 100644 presentation/src/main/res/drawable/audio_preview_foreground.png create mode 100644 presentation/src/main/res/layout/mms_audio_preview_list_item.xml rename presentation/src/main/res/layout/{mms_preview_list_item.xml => mms_image_preview_list_item.xml} (100%) diff --git a/data/src/main/java/com/moez/QKSMS/extensions/MmsPartExtensions.kt b/data/src/main/java/com/moez/QKSMS/extensions/MmsPartExtensions.kt index 56b0809f..e9c9ebac 100644 --- a/data/src/main/java/com/moez/QKSMS/extensions/MmsPartExtensions.kt +++ b/data/src/main/java/com/moez/QKSMS/extensions/MmsPartExtensions.kt @@ -27,6 +27,8 @@ fun MmsPart.isImage() = ContentType.isImageType(type) fun MmsPart.isVideo() = ContentType.isVideoType(type) +fun MmsPart.isAudio() = ContentType.isAudioType(type) + fun MmsPart.isText() = ContentType.TEXT_PLAIN == type fun MmsPart.isVCard() = ContentType.TEXT_VCARD == type diff --git a/presentation/src/main/java/com/moez/QKSMS/common/QkMediaPlayer.kt b/presentation/src/main/java/com/moez/QKSMS/common/QkMediaPlayer.kt new file mode 100644 index 00000000..a28d98e6 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/common/QkMediaPlayer.kt @@ -0,0 +1,45 @@ +package com.moez.QKSMS.common + +import android.media.MediaPlayer + +// singleton class for a media player that can be re-used throughout the app +// because we probably don't ever want to play multiple media files at the +// same time +object QkMediaPlayer : MediaPlayer() { + private var onCompletionListener: OnCompletionListener? = null + + enum class PlayingState { + Stopped, + Playing, + Paused + } + private var playingState = PlayingState.Stopped + + override fun start() { + playingState = PlayingState.Playing + super.start() + } + + override fun pause() { + playingState = PlayingState.Paused + super.pause() + } + + override fun reset() { + if (playingState != PlayingState.Stopped) + stop() + onCompletionListener = null + super.reset() + } + + override fun stop() { + playingState = PlayingState.Stopped + super.stop() + onCompletionListener?.onCompletion(this) // and manually call on completion handler + } + + override fun setOnCompletionListener(listener: OnCompletionListener?) { + onCompletionListener = listener + super.setOnCompletionListener(listener) + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt index f5f908cb..98a9aa1d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt @@ -50,6 +50,7 @@ import com.google.android.flexbox.FlexboxLayoutManager import com.google.android.material.snackbar.Snackbar import com.jakewharton.rxbinding2.view.clicks import com.jakewharton.rxbinding2.widget.textChanges +import com.moez.QKSMS.common.QkMediaPlayer import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable import dagger.android.AndroidInjection @@ -231,6 +232,14 @@ class ComposeActivity : QkThemedActivity(), ComposeView { activityVisibleIntent.onNext(false) } + override fun onDestroy() { + super.onDestroy() + + // stop any playing audio + QkMediaPlayer.reset() + } + + override fun render(state: ComposeState) { if (state.hasError) { finish() diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/AudioBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/AudioBinder.kt new file mode 100644 index 00000000..c956deeb --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/AudioBinder.kt @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +package dev.octoshrimpy.quik.feature.compose.part + +import android.content.Context +import android.content.res.ColorStateList +import android.media.AudioAttributes +import android.media.MediaMetadataRetriever +import android.view.View +import android.widget.SeekBar +import com.moez.QKSMS.common.QkMediaPlayer +import dev.octoshrimpy.quik.R +import dev.octoshrimpy.quik.common.base.QkViewHolder +import dev.octoshrimpy.quik.common.util.Colors +import dev.octoshrimpy.quik.common.util.extensions.resolveThemeColor +import dev.octoshrimpy.quik.common.util.extensions.setBackgroundTint +import dev.octoshrimpy.quik.common.util.extensions.setTint +import dev.octoshrimpy.quik.common.widget.BubbleImageView +import dev.octoshrimpy.quik.extensions.isAudio +import dev.octoshrimpy.quik.model.Message +import dev.octoshrimpy.quik.model.MmsPart +import dev.octoshrimpy.quik.util.GlideApp +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers +import kotlinx.android.synthetic.main.mms_audio_preview_list_item.* +import kotlinx.android.synthetic.main.mms_audio_preview_list_item.view.playPause +import kotlinx.android.synthetic.main.mms_audio_preview_list_item.view.seekBar +import kotlinx.android.synthetic.main.mms_image_preview_list_item.thumbnail +import java.util.concurrent.TimeUnit +import javax.inject.Inject + + +class AudioBinder @Inject constructor(colors: Colors, private val context: Context) : + PartBinder() { + + override val partLayout = R.layout.mms_audio_preview_list_item + override var theme = colors.theme() + private var thisPlayingState = QkMediaPlayer.PlayingState.Stopped + + override fun canBindPart(part: MmsPart) = part.isAudio() + + override fun bindPart( + holder: QkViewHolder, + part: MmsPart, + message: Message, + canGroupWithPrevious: Boolean, + canGroupWithNext: Boolean + ) { + // play/pause button click handling + holder.playPause.setOnClickListener { view -> + var seekBarUpdater: Disposable? = null + + when (thisPlayingState) { + QkMediaPlayer.PlayingState.Stopped -> { + QkMediaPlayer.apply { + reset() // make sure reset before trying to (re-)use + + setAudioAttributes( + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) // music, maybe?? could be voice. don't want to use CONTENT_TYPE_UNKNOWN though + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + ) + + setDataSource(context, part.getUri()) + + setOnPreparedListener { + // start timer to update seek bar + seekBarUpdater = Observable.interval(500, TimeUnit.MILLISECONDS) + .subscribeOn(Schedulers.single()) + .observeOn(AndroidSchedulers.mainThread()) + .map { System.nanoTime() } + .doOnNext { holder.seekBar.progress = QkMediaPlayer.currentPosition } + .subscribe() + + // set seek bar max value + holder.seekBar.max = QkMediaPlayer.duration + + start() + + thisPlayingState = QkMediaPlayer.PlayingState.Playing + view.playPause.setImageResource(R.drawable.exo_icon_pause) + holder.containerView.seekBar.isEnabled = true + holder.metadataTitle.isSelected = true + } + + setOnCompletionListener { // also called on error because we don't have an onerrorlistener + seekBarUpdater?.dispose() // stop timer + + thisPlayingState = QkMediaPlayer.PlayingState.Stopped + holder.containerView.seekBar.seekBar.isEnabled = false + holder.containerView.seekBar.seekBar.progress = 0 + view.playPause.setImageResource(R.drawable.exo_icon_play) + holder.metadataTitle.isSelected = false + } + + // prepare to play + prepareAsync() + } + } + QkMediaPlayer.PlayingState.Playing -> { + QkMediaPlayer.pause() + view.playPause.setImageResource(R.drawable.exo_icon_play) + thisPlayingState = QkMediaPlayer.PlayingState.Paused + } + QkMediaPlayer.PlayingState.Paused -> { + QkMediaPlayer.start() + view.playPause.setImageResource(R.drawable.exo_icon_pause) + thisPlayingState = QkMediaPlayer.PlayingState.Playing + } + } + } + + holder.thumbnail.bubbleStyle = when { + !canGroupWithPrevious && canGroupWithNext -> + if (message.isMe()) BubbleImageView.Style.OUT_FIRST else BubbleImageView.Style.IN_FIRST + canGroupWithPrevious && canGroupWithNext -> + if (message.isMe()) BubbleImageView.Style.OUT_MIDDLE else BubbleImageView.Style.IN_MIDDLE + canGroupWithPrevious && !canGroupWithNext -> + if (message.isMe()) BubbleImageView.Style.OUT_LAST else BubbleImageView.Style.IN_LAST + else -> BubbleImageView.Style.ONLY + } + + // tint colours + val secondaryColor = + if (!message.isMe()) + theme.theme + else + holder.containerView.context.resolveThemeColor(R.attr.bubbleColor) + val primaryColor = + if (!message.isMe()) + theme.textPrimary + else + holder.containerView.context.resolveThemeColor(android.R.attr.textColorPrimary) + + val metaDataRetriever = MediaMetadataRetriever() + metaDataRetriever.setDataSource(context, part.getUri()) + + // sound wave + holder.soundWave.setTint(primaryColor) + + // seek bar + holder.seekBar.apply { + setTint(secondaryColor) + thumbTintList = ColorStateList.valueOf(secondaryColor) + max = 0 + isEnabled = false + setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(p0: SeekBar?, progress: Int, fromUser: Boolean) { + if ((thisPlayingState != QkMediaPlayer.PlayingState.Stopped) && fromUser) + QkMediaPlayer.seekTo(progress) + } + override fun onStartTrackingTouch(p0: SeekBar?) { /* nothing */ } + override fun onStopTrackingTouch(p0: SeekBar?) { /* nothing */ } + }) + } + + // playPause button + holder.playPause. apply { + setTint(secondaryColor) + setBackgroundTint(primaryColor) + } + + holder.metadataTitle.apply { + // metadata title + text = metaDataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE) ?: "" + + if (text == "") + visibility = View.GONE + else { + setTextColor(primaryColor) + setBackgroundTint(0xccffffff.toInt() and secondaryColor) // hex value is alpha + } + } + + // embedded image + val embeddedPicture = metaDataRetriever.embeddedPicture + if (embeddedPicture == null) { + holder.thumbnail.setTint(secondaryColor) + holder.frame.layoutParams.height /= 2 + holder.thumbnail.requestLayout() + } else { + GlideApp.with(context) + .asBitmap() + .load(embeddedPicture) + .into(holder.thumbnail) + } + + metaDataRetriever.close() + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/ImageBinder.kt similarity index 92% rename from presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt rename to presentation/src/main/java/com/moez/QKSMS/feature/compose/part/ImageBinder.kt index 000ff18b..48f7f75d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/ImageBinder.kt @@ -29,12 +29,12 @@ import dev.octoshrimpy.quik.extensions.isVideo import dev.octoshrimpy.quik.model.Message import dev.octoshrimpy.quik.model.MmsPart import dev.octoshrimpy.quik.util.GlideApp -import kotlinx.android.synthetic.main.mms_preview_list_item.* +import kotlinx.android.synthetic.main.mms_image_preview_list_item.* import javax.inject.Inject -class MediaBinder @Inject constructor(colors: Colors, private val context: Context) : PartBinder() { +class ImageBinder @Inject constructor(colors: Colors, private val context: Context) : PartBinder() { - override val partLayout = R.layout.mms_preview_list_item + override val partLayout = R.layout.mms_image_preview_list_item override var theme = colors.theme() override fun canBindPart(part: MmsPart) = part.isImage() || part.isVideo() diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt index 7059ba67..68d26a1c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt @@ -37,11 +37,12 @@ import javax.inject.Inject class PartsAdapter @Inject constructor( colors: Colors, fileBinder: FileBinder, - mediaBinder: MediaBinder, + imageBinder: ImageBinder, + audioBinder: AudioBinder, vCardBinder: VCardBinder ) : QkAdapter() { - private val partBinders = listOf(mediaBinder, vCardBinder, fileBinder) + private val partBinders = listOf(audioBinder, imageBinder, vCardBinder, fileBinder) var theme: Colors.Theme = colors.theme() set(value) { diff --git a/presentation/src/main/res/drawable/audio_preview_foreground.png b/presentation/src/main/res/drawable/audio_preview_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..bf87f59e47c86776bd99261e2ed3870398f0c361 GIT binary patch literal 54307 zcmYhic|6o#^gsTZ8S5At%rJvwXDk^zSz?CCo}Cb57qXWv-eVd2o;~}%FG(S4?E8`= zN}{Y0LaC&_e&5gU^LTv!y^s64uXE2m=bm$(=Xn#13~w+(IiLUlFzRS)ng9Tp1OOm9 zI+}}-nPDvk0N??1G&RhE-|h9@X_Q#H$NlvF)Bt+_=Wy|;x8JP#QVz^YJ9(6}q1jfX zh$TV{VN`Ur#It=R^RSlQg=a71684%ubUeTR zcK_Y&=bk}dn^#<#44OKIM#CP`pK^HKz0)N3u_Z|F{`=?u&zuicb_C6%wqRpT0!ZB{ z8JV$s-UT83-_QSNt?osarm31`{{d@Y6lqx z(0tf+_f7}d+JI9-2OtRWy^!O7h02Wv2?K1*87ACuN+Y&Qv~Yz=R#HJmhSypuX!-U5 zwa=?P3y1%iU!3PD+A6~3&K0n6)aMMe(|cZrJ~-o|fX)i95rSxeptsqimk*w?{EwjD zHE)~N>oK5bfCwUv(i*`DC^{NQD*q{-aH8@5|0bV)FkSv1oqYHnvwe>apE?A-q8avT z4D@7y3G^7cZ$P8&q;V<)1(u~q&v(b0FGD*2M@cu?h?tQl?0%qNEV%E6-vF)1e}xUCuw81;zB}gm zRJcxEXwHK7rf!n={R`z7fJx0^U0r)&AI_CS{(ljZAQVifYVK{ORk)!jp_%>TBgV$N z8ZRe2!>W>Zr&l9dTQs>}|C2VpRmrOMpO@(*rZ?w*&pZXfo2vuXcVH;VN*ZXzle+SN zJhatjVsEeX@I6}K`eLpUEl`;G5Ze*``zlxO|7?-{(+~vXlL6> z%Jphwqh5&n%2jpWgJuxdkCKEGuOY*JXqG~)V)30WRPL$2&MyPYx7ke)PL~4ZEqMBD zIR88ldHC!x1L*plw^_^OX3abu#0w+1bhz}~j0I3rcwV{1nRLBcv#1%TfCZ+67v~up zMhqKFjFS&SxcgoHuPuZm4pHH6cNV^oYP5r@JB$Eox87zQ4j~3I_nloX7SnsR%SQoH zi3^eqbOPB8dV<}F@I$Sm-;U;#Az=1{Iq0ByqPKS7mzCD5DD^GKczMQMEz@hhK8!2G zZ=jE9!e2S+Ny?Hy&)kaD#Toa`d>;)V^xYon&E4R7@fINJxA>ug;&&#?>?;V(dnn3> zdsS~&Bkw0xCDLK+vz2+An4B1CHnr;Q{b% z-inp}aD0h<-xkvH@T#dwZQa=L(5dgGl@`EP#D1Rgj-5aI4j4@t!n7c3e#>k2-~*YTzZSq;>or(JL)q7a|cd)4**6=wmf z$>rWFRKsq%)1S>~D*veMbl$G`)X>{pPv;B+VTWVwJg(pRomz&d!gSwKHs!Rq`75>V zR}>f6@I~&?pGvN*SGsBa`A)qR!a26-e#yCh>USH#?k?{y-O*gA#t=O4A3$%XbLG_TIZw}YjKYJ?s*ae7V`c;L9Jbb~zkWE8!(>e7n zwxq{oji25jN+B~sqb6--PtJ?G3VS$AB1CJW|E4(|7-;iuu`<3r`^7O(d2@m6eLjKt zJ!KuX5_4j33Y>-y#hj*~jn%GK^`xOG+8Ubvso#siz(w3J%!oum^6Vo2*pp2MvU}UU zfBIIB|B;EGcz%n*ZiKa5+4YeCCo z!}imbCW-gZR{ueoa9y1rJq`C;nM>%)8!J3X45xhUKQ$bHBwkwI#^_y_#U?kUz?PTS zDKR%gXbbOH>j!`Ik7Cl3)DuF)xsHNL{C!v!bN{daA3{(Ry|#8}m{^94Y89RHI3?;+ z;*7mGtl5Aufh`%9j@)v60tx%338rAw$Hq^%C=;^MrZ!Ht8{!`@yu`^}&P>i3AQc0y zBc@1Z_B_%g5#mAOIB_x`WN7qY!sU@<2y*;)?}Ii+aX#ruyFiv(ug$tndzfaXWQO|YX3;@>(oBGT&X}o#=&AOQ4f=yXD7oL1z zAv4}djl7)K|HbYeouW{h#c(@$Z`s{53h=F0xs=Ip6ABcvEU4bh4OAY+tJP%mh*$Y@ zM=P>Ds04tK7?NlH0xdQpi5(xaA~^hIga1GxYbKQ}U!O4Zw{jhL>{SDys2Ed%I64(9 zox^qSZC{-9L}eQF9dgG)GTqRTT7JOj(@k4OsWj{NDQ%w7O!g5P@Vv1n%bl3i@N1xa{{t?+?6aq4Fe`<6;cXI#P{LsjS3 zDI+E#b9zHkaf5DiEC{xPo?m-+>#=2}Y4x%)!tv7g$E=Uhre{C_z1zlPeu!(7icq3T zL7SU#x7V3j4>m-i7(wH!yZle(_S{!W(AjcM+qgoC$Yh`wZD5cOu2Fm2PU41(E?p;j z?G;bwCu|WKAmxH$aQdcfKkc}CipJELN?j|nqB1mq;K(+EgN>x3Dp|gPAvgeQz45cF z>r;#hGb>Ky3Jhc{^2x|!+IQ8?_RN4;o5x<{;oZMJI6$??sE`zjci|q(=X@Wmka6{O zoWql(>I40vbU$=JOA;NxbtWD?xlg&pb?x&G6(657YfWm@ncb-ya%hd~IlCz|Zx|6- znR~MQkrVhCe%Rmg*Z`;I*e>cQ#6eQ-yAYMZ7ejDmh;YBT-Z5MT128nCT0 zrh}6%;}gApBjIeFy_b}Mx)xmP8^r_5x;@KpRR1|vrNpbhS8EWJ{EfnKC_W+|#oaE6 zBt`y-iVGA4=9z42iIp66?*7tweOp>iKVyI#6`p`0y12oQ3e|2_wa}kBqP2a;q|mA@ zGo=sZ$jHIu7LD7Z-NLJXe3@25=5ERJPRFMlx;3Cc>n#4#vl_i3tY+i!qIZ5aV=7>~ zpi)0(nnO`MrT(w*5BVz&kC;(I>*~%N&kJlLnN~+*p0fXJEbC|bd)d_k-%gV32VC(4 zks@DIvu^2CC_sCoAY~Mp)cXvr_;ZJf#&=)=gssYC+2h(VYt-UITz{ zA7(!Hkr4)sP^$@Z3|N}N?am?9JQcImapcS%8JHEc&NaA*`%&KJlH5gF3u}Q;aDMwZ z8V$&uvhU(mCBkle>b>;KGWQB|69BFkxwmH0)xOVUVGi!2c~|}Wd%wqY)Y5pFmTfmU ze`+r|T{iSPik<%Af+d-PR?THd_(~&go;$Im?jObZwth^+qj0v`38O_*D9@zeOFfO^ z-+9I6rW|-z$lj7w-`o0U!=ZXFpm~>q*+QDL_9gg;Qv8IkD$>lmiX~}OBpr$vqZFv@ zKum~h`c%~&By1wKM;sQ-T5kLfk_FMgZ(Y&j{{C=|gJx+mrm({B5i5sJLMRWyL=yZ` z0ReWs9AHN?tE)m)I9q&4@PiwO^Z>2Jvtef8vo10q)VlSzXqRNz8!w}hupZyzCVlAb zR8Ok0Fu1Ants4sD83g}mqvp4WO;RT~aI#mu@c_!dR;(}pSowx~y6FGhuX?f>H>%>R zzuQAg&&@!Z71r3%pUpq;y_t#e8C=J`rZCs02Zq~0;dF`#A>R(W&{FIn>Xa#}p$d$+ zH&qkz{yKj?$%=`ns!<2~QKfPN{|-}kIX8oLkDq?hD#%LJ4P`({UuV8~-5e;Lso)rp z@399FsSoU9xHz6Q=l5S7f@UZ8133^Ny=b})faCwPi4vLENBDT@KP36fWy`$=Ru>Em}gIg@aB|XbgD|^rS5UAe`PasFRnj2Y?NxPO-Y%U?lR=q zR=`isE_Q{Oo?Xw*6)C(%LyH@N)vEtw_nHeym&bV^mL7s<5%AI~W{q3-T-={_|2z8^^MLB4s-%x4Exn8Q4 zt?U(@35De`cHH0DOFA}d2OxQ`d#z=5WDmo0`+oQ20>pY?)v8#uMMGOSE0L8wpmdz{ zViDD-z6GivX?;(A-8)GW6j=TIt>$9?gd=cFUm{iYug0hG3Ph6p*v$z)S@Bx8lzlz# zQ=*i-4#cyJF#AiJ_GQHx?fzFOQm#=}J()D}G%}&1buC<)Wd_9c`Z4BY`Ii>3IzKqB zd$nfio0XGmEU>DLRTi}5y%fBj_r7e3e0hBL(S>U!@+F6RUwdULo7n$_&Uy9p!Hd#@ zm>DD;ta-vex){dVmV%8gZKh@N1 z7QLvLV04%{8{h`D8jW3S0Yw+wYz;F7h@xwJ>3l$e|I)P6l>h@JTGPBa>D8aQ>YJI& zhVhpvd=LKOy>jDM^iIlCDf2o!TSZQ)ve2tnT7|W!VD@x?p@G>&Hsn>jwb&CENODNz zJ>jjciVuFmcMf-wqHql*H)oHOWjI$xUe)Dno*P`;>@mEFx}-G!PS8^Qem$0C{nxNe zgz)cQ6&NUqS0g!d8NGCYl&0GBJ3}aqT(i_Li|Ta|r{6F`pSH($#gO2nE*bz?(d{Qv z8ssR)vRF$6*>3L>T@6r-kfJdX;G+Jf{>KEwvmR-fz>&pFYTEb~3*DX6z8%BVdAW7X zS~&7k=E-|28egv$JkeTTRZ{MHW>KLi8h|@Nw4zR@>LI5d&Cx+msUeyc@&17_kIEQ8 zTA$H^Pn8sj(uR+!Ka=L#@52`}2A|QL2*`J!~xtc z#i4-^r3IPPmXD+-{z5STHKgtXT3`|k7_w2y!e47I@Ky6?zC(}> zl%m1PBI}q{J($64-v|HvGHS>~?HHxbVsuC%?&r@bFNTIcSB;;>03K}pS0{g`+VWRy z2PzTN{3gfAmgfx z!Ow1~r;2I~M*&!tdQMZN;^f11lyPM9@TZ(oAkRD{Gz1uUW3upR|wSnL-QE%uK3>KexUqy)pvi`RQra?g9RjB zfGJ`)y?2JTa9?1xa&XUHI&*anN^mTdU{pLP_%Pw}2li=72|8*T)LtFPaJn%JAr1`J zj;LS9x{`)-P8xVuDKsPUy-ZkA!ALsh(Xg(WDGy$~I%loeKDdQ#Uy7GnZZ&dnk?tei zHP(!Ivb2*DDHb+68+jQDa$}LabE(%}1eOBKij+3TH_C`D@jcm^t&hfk8l#-q#efR? ztqY%x)mES2+Oyk%1~*YNVOZCKW1&aDdfH}>Z1>UDIM-*6pTSEQemMX_CBTMK#CIO<`gK$Bc{ zZ#otsuHvIMcen+*$ex*qe4i85J$BNfk|Ot|!T~1MKY&^oE?1k^pY#1R~#bv z5m>0XQeMq0>wgsC86Ew}?KWxUHGCRrcNLua)MClz)!+908^SFqqd2Bg7k#?Uyw+T& zzVZxj52LNyVAES1A%)g5n_e~vTMM-4r*%L&%9F8>>;>C$t7g9ckO38!sOI$Xqqd^k z_3Hm#X8_pzU;++SDk6Q2THib3x;+26iaEu}`bHLOt-Be4%jB~yQYH!{3!&j<6PlC1 z@AP2oy~ZrdIB1aD+I3Lq@f^lku~9i|@G^wt)bPC5$mVd}6x|FqbhhnOM1dE6@KU(e zS1Yk}7|34H!oAxQAednETRg1PKb^tFphi*0N#)0Q zf8V{f;*(Mumsp^y6)Sf`gg4!Swbr$F5x|Pw(HAT!$)va_Wqu&Wi9d|6vuA5X$F9eI zCyJf(!AoXR5A1)P$_`uU_HC1PW^I2ky9LC*VQ4aFy;O>`4dyH3YJIyywdw%=Av3ti zL7k3ZzD+utcAG!oE%|p5h1r-qOR^!D)#o#QpN=Bn!#hY}Om8v{`8w@{+3}1D_WPh)tDU99&16Uej$EUIh7$~g{ z%*_dY1O{FMwR#Y4rMMEAoh@sQ&YPUAFETXV`tO`C(1nUr=86%q2#=O+{e&* zts(pF$Xh4kI6bH79Alxxb?C%U9C+fKb%-AeNnXs8XV}noVLLJ!*;FreQ>(rQoceIq zg9#22w4{__Ahzc_qBt8wM~_4mri%7&Cx^5gYz$_n=+kEI7;i0P1f*Wy(&4#B zDTR*N#V0ho*es`GD7-X)81xxipq-4Pgp%wd>S=p}&~Bh&ug_fQ16a*~E$*nT=1F9q z*+Z${vWqlAMjEQIph@8#8^RqO{A&rE!5BW&9`U2#IW}+hKq<@<++BoUSNibCQ@{J+ zknSsEyk(VQ121Q>VY<}a;SiQScd6BUYPysMEC5Uedsng>%xR{o#Kt6k#TnJW`f!xD@a{%nK#R#> zWxEDHm7-Mj2Lz|L0VS|sQM*hjBX;a6~TM=mh>B7if(z9O@=#> zhc->9d8TN{sXP?Bez36*6KpnsDt}4rpSrrv$Y5GKQ^$mzJj~v&E3`Z zHJ9rtg~HtbYC1CeXQbJkfjAtcY|Ngca{$M2*CU(PRYl0u+So}nqdQJOJ$IPEC|Ir_ zl4ATyN)pfc!BjLE*Mf?UsiWo2a<;ztaC3Si@DU=tb*nr z2l~%Vag?fLz4^>oztzZq7q>KoEkR3t9QTAY7@tsZr1gTXCN)v zQsVV7D6am@vG{LZ037^@x8^-(T$WX@i62K2Wo8$!$(ws|wmHe!3#Dm?kqWI|V4@4n zGM;5lCo?KC34*{9RLP;0nGpx-O_m!*^OeQGm+DDICZ(*O-k8W8>-Na3w^o`c4PHtK zCbaj|P`8XArF`%ZNT3_?&z{ zAduQCrg>@C;ger&qY8OO{n8U*IKYCQAA;SuIxwW9MU@wmsT;7N`qQl{S| zUH&+uT)$wi_|!tJ1eV{CT~G}g9fZEBlQX{@XuAp-R4C27rqU$y^9+Z4v`p7+Y~>;0 zK|)rK0@h%=SlBm?dt8cdkvkjGL^^}jWik+<#bk(Q621vuJC%tHVRNeto2_GcJG-a$t1H>j#{~ac$eS zGlSWNn?uJcLtH>WS#Hcw-b7LWG}*7ID;hdcFJUsbK zCR39z=td|&VEHC*6yp2oFcu{6d0F>aIw(manA@ev=*TvE@-EtcXgiGBh6+Y|Ix>Ev z*+*+qT?%01)Y6DSQL=Ck9+dv-?TBrlmI~rUFR$BJdnzf+q<@nF{SxInuotnr$E@hp zbb>##&JF>u2!!?AQ}1%Z^=3r)$Qq+qjq_MsqfB2h#KqD~w`&-F;HZN9x?46p33GlT zG+npNOH9!k^q4KXML{>+#6DmjdtK0vGTbRcd34?urOBD$m1f6H*E05a*8SmbUrO+2 z;@IeV6#o#Z2N^@QS|zSrfVL6ZSpHR`IVD}BFfZ@ZMm~RDLCA;q_?gtM>+JmMMgI+> zo9)$yeT&}HDb5SsoM)i}O~_v!xW0RhZ$>Mo4l4C&5^&A<`0B#(jSK6KYs@??*I}N< zJQ7renBQ@a6w@5;%4`H>(pjy4$MP4A!sY3dR{r!VE$tSLMwfnb!9QXGC}lk|Kd?@K z(ZumfTcF?oB&>nz-QgJ01mXzseKbkYcp@~4>GZ|1(1!}v4yQ>h9i^^TpF zlF2O@h|(Z zh7bT#I$Xu-;;s5TdZXlT+iIoDjrk{ry4M*%Tj|A%{c;4marhz`Jo@uRR7{5AnFxmgERVb9+b{ z>8Ma~c~LR04s-IQ@Qz33k0Oa2CNL{ZF#$y(_*G_(o=Lyw0+Z0>iJr%(*B*R=ZnS;3 zIYcUn1O~j8P7Fv>tAx78hUud_asY$UDb6t-Mo}Wa-RwG=CJ!Dv<4sfY$_)4!z47`F zK)>rEjnM5kB=(f!!aIEZs(`kRet>OG5?lwNX)rqpty094aZ#+0*okn1Qu+WO;HTF# zd9vz#VRx=P{z!^_JSiEd&ySadRID0}%s@`P0t+)CR+rLg^I6vDRq^h8u@ zO}%1T^=v+tC>&YTO_0`Uy-Q|Ff|-9-9If#%y-xj3IPC;oB&S5g6?@pnbs za>aTLV@WLZRZABD6(MGF&Ow(?w%v77%zE2kuNaXsvoTS{S-gym3rx3mgiAv^1QYuV z5r@V=>1y;~S&9l305W59j{nu3e6qFc&xz_$C`(+@Hy#z@DXas>ep415dgutmvtIE) zPj|!{1W~qbXl20A4}x+OSK3SsH@bu> zXCdiGoX1X=(ac-F@pHFMH0CN$p#c8MoQ;4Xve!KQLBNLlK(cMA3`vA1cvRi1|6ge` zKD*Ba7`2EL0pBobg`$L~DiN-ptE%!dJC|?JHNBz8@@_XHmFl*)s#y54fV1}^0W}?5 z>P^s2I?ZdHWa!N@ok~vd(}H$3M{M|W&eJWE6I<1(h$*eg%kGfqUr*cBJ7-G1+m3;} z2&8LNBvY#`ct|>nA+bn#@P6(pR~A$%<}Ce2dHfyq)St`9#9mSNaHUWD{67|%u=ln= zNn_eH@DaNO0jIjC_pMHv=+{nVTSN2by#2W$ql`Z3+N6Z zE&lh^HESYP_eHf_-a}k%-{)03|CAH4_lmqr+Am+V+)ZJL&UQAPnxso&VHO1_}b1hM6>O>pQ}4(qb#M|o#%VEfHX@BvUSZIYuI-N8s8a>0D!DMeVEwiV ziMOT(1X-C2WlLPXGfZ2w#8>*f^O?QjR!@1rV4VGfoJ%O7HyRJ~v zW-a8;A_Edis#L)UaXNQ=m|6@Z(Z^v1odv|71KH z`>O_nSHS|6?sIgtpa1Ica$LFPpts8p@*RT_xk1f~(?jrRl;b+~%62TY6 z$KqLgq(-%&=YC<|HDaoja3r^Xy~)nzcV57DAgD?JU;BBN?zkVQFi95KB{&0JEtSK+ z1ZWC5si>ReBj z(GTXKhuR39h0NT-?jTX5%S5R}c0`C$8hP&B@j4Wxg8*t%_UCZ73LZ0dENLSJ?JgO8 zwfd?g`zm_iumeo`b#Vh5Fw(Ud(Ft@)+SSUjM9t#*k2_SOO++S#;0=}o?J?C|2r9M) z?f7aVTyaX^`-VYOlkL-AchGGcFTzw=%G@0d2|Na4^*rBs{6Qh0^>8St(z6ojMewL|+bf zlkikfh{_YWqM0~0b-~Et#rbv-U|nk_!LAw1$&c`cTYEKin;-Lu?N}ZkTJbtR0WykcRbXxLjOK4k;T+OL*g6ZCV0}}QDcX0)orU=9=lLSTLhUau;AW!) zf$u!F*I>OXU`HX)n}3h*X~Z|~Kvk?`BVTnKYb;*r?$3RtF+6UPDNR~8@>Uy^f1I(2 z6KeT*AU(s7LYSR0qRT6XbZqx_U0i-0jyMjuL5O@h)v;N9Y*+35+#1Eo-FSPI>f#b zrj{INb8q$9lk#VR8uzJ?wb|b7%huh${*xW-6Jb>4c${EQfcZPWOTy@+@%dsvI)jJ&R%*35Stz@; zh=K8ncJ_7-O%$rcUFnygL#BzJ`V;^`IemZfsbJRYeiLK9x!2Wa&U3?P4;YU;zT^Va zr(aSEF}(!@3Y^RpKF>^{B2kNQvjUQ}SwD(arz17mfiJ#&?1y2D=nSQ{3hy(JN8SOF@DpJUzNFPOEt-6qdqW!bh+)w@UurF{PG6!QoJnO-m zBgM8}n7obw!q+0bZ_b}5zkDR}n~tWj(_@KPQbz*R;#+W1{M&=2JSFt{qAZ*DE0zh6 zc)W!87~l!OYyK-;)5$)?xY#U}qzmuQAfvaEvs?%lO-$ky#`4@X^yqbkSDSEK!of!o z!fe!ofIb_E&@`zg-q0$5Zd#HR{Em*L)w%=TtEDA&PA?qGl}f{<;j`RIEaO$uqQsZ_ zNxc6Xy69h9S*xYW7e4ZzJww9xs-p;%c15Syx0V~aFBxIGa*Z&_s`qr=nZ8#jqAUw< z)XfjfC?u6QbmLUERpg13%10?gXr5AqM<45C{2M&EeM|mnj(3IIzgu}N&n_h? z^RFuLyIj>A;uxZH2$&;u(?69Xzsv|1!Ss}Vf6-9+KEMY8+@`zrh}l}?ak|bktr#K6 zmH21;I0|~tIR2V~=B*hdhgwZKniEVzr{7>X?m*XTuTlIkCpxj%hvD?XdY-aar+=g0 z_^-_NYUO*28&16E$`Wgh4nFdC|GeUYJrMk$qQb=bhL|jqnL8P7fp63yK;QiP$MvH^ z=-};a(382#U&)WNMR(!XqhQyJ+9E8Zl=QzhC~At3&@n6Yyfh{*S$KUEi0W4ko*^>I35^PR5@@1E)Z z*7Bg1B5?$m!Ao^D51cqX63j&98@T)=uQlO$R};CS81qWYv&WU>=-XbF!>{i3%xCzz z65J$fyQ5al{z$C6@wy{eVqsF|b{Aa?TAd-pO=p!@3V0~-t;C01P$K9m z0E&eslh(R^H}VA?AQkit4m*YAiI%0~3`1fuub!ewFH9VOZzKtXe5(*7s6#hJ;|lfU#T|EAa=z_vOii6rl;5>Gr@bz2ev3>Q8d%x{C?VP%bD z5obFZ7gDl#cqus=m-R+lwL(F7|@CT4!M^Cfw^OM8+pr&90y;H%EF z*@|-CS6nMLPEAlnc3ACFtJ`Y&Q>t32x3bjg3npeUjBw?nyn%Ev6z9CTA<#I1;iM2(8rJ%u3U>v&`9{S>g^v6d6@77(NR#y zq{jO5f>>h4>2a0`i@EoZZk3@5nQ$W3Ew*!WQv(=P+DC(y5iY|mH&}u}#eHZnDX%6j zz@SU?#+hnHM2&Z~t10<|Lu8(^)?@$ww$wBPK@{@)NsHgT=WK(7{m3=%1bPXrmZzBb zHv{rm)I*;gia5e3Zju>HL8}bln5mro+)A@@pn&rXO+cpTmy{U0IUIMIj4mH88MfNr zHXt-B@$q_q*aviB4scPX1gGvbF*w-lZ1I&l!OMq?L%v09f_}fC;wdwTQYRYIq9_*; zi+plM7fbmBM%Y}|cE7s1QV5h@53_JEPoKi!^P~OhF?;d&o;wWJ$Rtbk3K~ zLQ#mgdW}NgXsjoG`Csuu1cVc1LR}U2j*7+0NMIy z9vx(K(!Ta)g?t%Rn19Y(k$CLUm=cM5d-{U@cdVwv8Y` zF|9=Wal;Yvg{xKpnS|7~y!C_(Km~CZlf(H%jzWxbcaB zNwrV(=#cjcjGh+?$d>*M*g}jqRw?U%v!P&Vl|Z@h>YUGt$0ch>eID_IF8xP1up?8( z-2%OrAE=~BO@RS`jg?qMOkiW+`>fUx@h3DGtZ3|_S;~$VayS_jz!>Xp=!qUz#!!Ar zR=$U-Lz3jA%jP7U*S0nb%L}dQ6BiJ-TqbQMxBt`#JS6;n?F}#7T>pt0O6Yf|BwNw) zpBLL9(E~>Q%3?!i{Y|$uPo%sFCsFdQ_c#P)_e`asnIED|pdO9`%+7CsC(@287dCwD zbExdPkq!^CoLV?L#lWDO>7F@bXbA85;NL_p3HnN-d8$HA$ND^w2VLuArOhkbD5k!0 zZo_~&NLe2vU8%1lwbBBrNIDU}EGjNn{GZtQj!F5V8ck9NkET8C;(9P+9*-zzoh zPSW&(9)v)dbGkkSx()_bBUD%0I~*7~EKs8sZzADX;mGR2FB_3Paq|)?3hD+Tv{mU5 zAD;=euBkPK2)$oQDSE)I*t$Y0G>*{26GpFaUt-I6Q>z1iNP64XWyJTPx?b-Hg)MxS z$zng}DoOkx$}&ey-si+(Q~Cjay_hK6Y~i8DD)(0)9y~9#H6cQRCONQG!mxzS={}#HGq}j4O8vXZj>?`PgH5Ixp;k$UY z(Ut0)Nji9WvBtStbV*CXSFbE>SbMZY(@VjptRS8(E}I>N^cLjp@lwT#C-mNN#)?at zIoV;t3s7x63}58=AKjf9iT!ma4L7n$!r?mf(HO~ zz2>sZE=#zd6ViZ}qsI9|o2@R;u0G#u5G1nX=AzVB%t zCUw26k=vPjPvr%v?HNTx6+qE z)Ft7%r%+&#;Lzopne_5hT?+QI*c0HmC{{nuFXEgFVC3XZzgC4n86(Y~2M46RVxa#7EOP z{r^H8$MhD3cau>T>Br8oMh#a$q;Q(GUvQvN#QHH@)gFGYHeJ64Ve+1z5_cPnbxW;r zE{(kLVN{945k0L+rN9jJlu*_{N^x78eo4;T()Dws)~3cMXVU-~8FiHxk8ftTY-Slc zZ-nu*%cPS97a@i9QR`G+uU*c>c^Da<-PU`V|1WVJ_3=5?;nbTWa6l}Xi&^X( zV}h)VU_h@7l;xZz6Gcmw zFl&Yo#SyhC*%+A}LrC|`I?bY@-m0p3d3-V^)>V$P|BCx5+nj{=rzc1O@ARLTY_sgC z&{!O0FT^eIO4>Fi0W>cf3pZDwDuiABT~OzXKxVo@PdB zlyR+sO&Hm-Sjz5=+@SHL3G>cQ7n0rz0N<+ubHyxr1&YEKB}TjI=mG!F`#H&Lg%pL@ zfGuAiOq$JKcm5UMKiRY$GJrO!PCGtDlk{1PLB_GX=MT~Ql?mu3HE>k8zoDZ`Eu{=L zPD~~>y}iV^P0oZ_@P#rFsb@Y$HP>rN`Z8l5bg+Oo?`!0TZK9WGxIgA*%EY>P5JC}n zvK%N&_f=O%V3NF*f;79Feov@YJ&^L1jP9tA^T01KR&PJy~^99BbBoon{ zD|_mJg}!um97m#}%BkLoyLz!TYt_Y!=0}-$nh3%^ifYc7{O)>yRx;QY-^$8lXYFs;*Z48wAT5m-^n{86`R##YrbB?oBTYV1FVd z2$G|MFt(Bvf0YZC4b&lm9Htbn=)?;a4OI7DkPINKK0kAbDsM}FN`TZ$+sw_foJJL-<~5=pCs~~3>M(XKk;w#C#+ecEHf&Pzn6V)Pv_9TF7vjs7b-@2h zcn;ejUvWayK(aNnd&hIcmOMB&HXMbcw%$eQTL$xl4%obSmN8NweIlj+n? zcr~3+cF}H9@>co$yjnZn$b&JCBtt~Xw8||WJfV+a&RF{V)U1kyUK6mg_GA~Z3Gkit z2d7!>_!K^ndX#4>3MFJfN5*rUZCqP7%ObMqn|uhU!GC8a-CgIgKNgJ42z00%UBsA3 z42TVs;FWY{qANDX;hDsjYe&QFr){qjhtZC`Qp%(QrYRR{DH-X{t`rf4*s2XW@3OZ!Ool7i(`{WNB+`U8EUu!d)mIb5=3Sx){m?cqX0Y* ztLRs4tG)82lh(pndwtWZA>q?$l8Vek90#_VI~aL*hWUyS%}{Fmm<;PR_Sb;#2_>#+ zR`+vubZy^$BQ+CnWxbpa82u$lW&tk+FV3nF76UT(%`ynapYj7o9@3Bfj0_ZeNlkKr ztWkUW%xk}lYBK9Fc3v~dy!F*img1?qR*P}YXAz5{*6Iord*92uTysdf`B#pLjUCEq z8|k2|1YaK$6_?xtQvSSp#hYx_07;$VyUozKo}yq|4Zts1wJ<9<9STQuV3Od>>7?};fp zs+84Lp0K$#8kelEuU|!$(;g=UWHyCRiq{d;6!i3-`{C&PAo8;r0^Rq+oedR~n%XgU z+0sh)x+U}X?(Dyn5>H*qH5b!g%|nHoGOuNjB0lodRteouC(+?yZ$%w`GXdg=CkaWp zb2JP_53^6)Hl(u?K5TfJ?9qp;$M!dHdGzV73zC~Nm66|_67v8oiShwQP* z`uyigBQz98!L$+8eD&f;_-AE)ehgJLHD$!a;iL4Z9FD({yu`_26RUdqvo#0trHJ)s zN9C&07A@_4;jBj)V^2qxqNX#<`=4ACW#};n5Vs)5bF>nkd=mHgER22O-Gw-Lc_q(j zkBa7$7v_pyTI>GjymZeo96Br96!=Kqp4Lr>JfmIp=u*Mh=lVZny*0`Y9Iz7)?B~tm`Cf)X}pn(*%rK%pJ^A(A`Gl%&%d!&-g_c*QJ0I1zrY?pqgHz0`7TLL zYFY{LH{|hCo~!_iR0P`MwHmd6B8Y&t zBfQoioBUMxe_&D38;g1_Mo%!i0#6NPj;}Y*a+@!fdOJaF6)p>Sq{gAHx6a2C9T|(L zcTs^X*sdc zOJxRN3!w(BX1Et{aS#oFYa`BQuBG_tAF8MBWlKJ`APH>0v?4+_{u;2hHROA!{LNX+ zi;BFq!j=53E)g_lXzVyG-LQCKaC?uFV#HGH*2`%XUf+8m+Rc}JLT*dpj8DMKj$-DS z{~rIs08nT)K*-4LO~(9!4fZL6Qb%Kpa5#`_g>8dnFVkV+V%xQJ375oD!xC-QWct9z zI3cz;#eXT6Ds@nuFPiXWfTQ5W`cpg226#qHqOty0Kp2}z4vKVWtUEi)k_0Wnu=xfAni%#8t}@% zaPwzRA!QF<*Q)3Y1Uco^48yrn$NJzd(}V7<1GI0HIdFq9)xXes#`s9qkei00E2 z>I$_W@_oqYJ>L69hW?>DL+Fe6;RMof&qDPl`ZT|wKLR?-)-^EFTNTywi|i0*Ie_pYz@)zLJirJZWy7PY)NRl z3smeul`1k4`NWU{zONdw_g;I2*%_dH@lgt9eH!Bc88AKtV&fxu1i|ZHedu{;H9-wb z&wGGW+m?!n+nCwGG{JxLD&UiuF(3|EdQ+y>gcczc;VF!HVVgVFTd7wPkSPrjF#Y|3 zlp6AUHW}th7EKKEb&}>Yre6AQnxz+pdh+u*J;-(471gV=HC=UlR`}1TeInxLOgAMt zd;Jap+y%X`iXYhDiDYAz@9Ca2@YhHuLg)&Xk&y6yMDjSr*+asV>6wWLbbN3DJ z-{sJ~W|V4|9Ny5Em{7wwcA7mi=1K4a_#>Xt;K$SKMYHKg^!7v_>0?F((|gCe*1m^6 zV4oMV2n$!Ty!&N@geY-2U| z#P6;BClPy+wA*1oh*@T{u~DWv^ataB@mqoicQEX9o_x1t^T5Md$^b9>aD9LT7t5Kg zEoHl_mO_hnff$nfFk{jxQpqaP-x?aEN{J~)Qo9gXY3shF+lM~&U++U^`;x^3Yio}QN0{6CPa{68ibWUK1vaC)@YLm-uf3Jr4}bOtvRWQY}cBLe$Jx zBga)vH)LklYEKdq3>+>0;Lb{Fjh2_JS_N1dFMd>7A%Oe7X$)|>DvImeyQ}1S`av&X zTpwiD*mQQfKns%fA>T0CkAGEk4I>3?*)yfNdkspmF;;EB_*bstKKP2PMSq(A3=o%{ zy)WZvnv0Hg{fkO@JiYq1gY%>!+#))GR=O=OlKfpMiAAe_cKCzmq^z*h1qh4YKo{cU ztJCWTH_PELil^+diDJaRCg_dKj5xAY4D|wEC4~vDaC{bY`RYqo*LC6;tq|GpC)hnm ze$}LJNQyKM=2_$aku&v957-zGc@cB=-RBvK`}7e}Y=BllQ`Fke2lzh1P`!N=RM6yT zg4l_P*M)oK!dfpHxE#Bt4wx5=IUtmL!zN?hpWUucd6~Zn-OP3vIziTr6MuRmSDpxv z(suB~d8aRZH0Q1PZpa|Oq4>yg%ZTxeLwZl?4S-6JuN>IboO$#d%r#}&+c8;YnHos| zqv*tpuE+`m|32^Uj?0DjTO|xPY$-YXn@_y(+?eFM?;HjRAG?Rr?HSOVTntWia{)qh zoF#k~WgUx|8dWg8-G#{$yCLhC;M=D3JGRS@o++Hp`@u9vX}_bS5}7t*s9KfOkLDCh zoW8-HQf**a9RWWj9M($s0u-1DHOdas&VUeJ<2$wde~74x2ZdSNA2vUG_ewnNdoiAG z_e!^i`(X*SCy3*|0+b)Z?`NBj6z2httlAmarURXxWZu3a88IitJ}g_(z8{gX0JiQU z@80?iyJJ^K#I2;#&MT4>fzp6Fc@Onkw=@_x@{rb=!!Een#?aR~Y; zDPzq`Ba@_(ZH(EJXa=b}lr1&<`+VlJ zDM92yh&q5w?oS`){F$M>>EMi0UUeae84~Gt*kj5sQhzZj1M^N{{;hi*Do*p*)WA?w z2vvcfGOrc|T+_?JOWLT;0l?crDGjw+xo&mONE2Pv#>dDnJhTc%#56C*(Ix?vl(pw9 z%mm~vk800g_65@v)b!3sFHW^o3qzA%J%+tLV!iWTlXhI(sMNGo0CZ^A0?;8#pW}_6 zShALZw_7sQ#mc(ZtgUJlB`Ue?ff^1IE4A@@8QJxeByLM$ky`n+XSU9wnw@6fOYa>L8(1P#8HM7Qg9>j0Hi23 zU+{?qslI1wCJx=%9B#Uw-NZU((G(U>YFhddZa6hYk3(hZ51)0G`a~v!6xhY)RT^!G zGB-1j^242UnSk^v;$K$-FA3k?7vP3j>p*)|0?e@fQl`Rdu z{p}_f*+O)NWn+e_=j)OsQXK8OVc6zWjWA_vDLM{-CJlQTQx+g|ry1*$`M6@3NZq&TB7R;CNETF6(tfPXX3~nWfnz|@05aFNZBu}yX!~?L9BHeI$ zazqAVARee~J0z!9HftaOeEr-fExXQ+$xUykENUt{JB7k(egcOnO$1m^gcEL)T%CFWCLc$J zbGtoDV%uH;}BfnVE=@2 zgv&e<(ZKoPL3YlR`H2HhW)A{00 z%4;cRqJyeU!SGCdYsl_AHVx-RN z%{5G%yoB`yn=BIHAI0QyqKRAZ0aSKL5<&d7+WCY6!IUmZCU0*1#%^&!Kx87aV(w+I zCpz5~CbsgBjiS;@*CZqrqx4w3>{c-wb|HS3DamW{t0J@nFYm5oe5lOLBc<-if1*tJq19$w@X?7hV(T-C>8+JbB4oB6|5=t>I4` znY~@o^QkV4{4Dc1TJ2To!nzyB_yiIAxp77G@M5CDSW-N>$YDHMyj;fr;7Ln7@~!;0 zn|UnrU-*VkNtH1KwHsLc`Vb~yI68Kvpn@XDzRmmk-c*D~@SuHic* zbLC|FS~_}Ks|l}g#F7MNlF?jI13kSe$7lj-rP&hvz(gc#8LC1cY!j{VkEyrB0GZTE z525jPs-AF@b}1-q-LHt%a@E{z|LtzxUaQqpE3kXZ2W6 zuBSrQPM>Mu;p;7>1I5U8P-JqT9ZP304>t;-1_J~D#>tZ1gMs8jz~KdHbGqtB9`OHM zRusz`1*FRu9Rc|w63N^v%F(9nZC|D9-o`c>_~^PxP%G33T9tluM@fZ;RRh)E4l{d2 zUM)=*#HG`HuP>Z(*Z_=6M*n*-&Dqq)%hS*JdAxta<*B&Dz}>wZIQ~3`&ZGtIGXpP~ z1Wd914h1>oSSXc<9BOdJ z9#_0zhW=8Kvd5BIq^R3_g+6vUTy;wUP=lbAt5&q&mDnZ-Ah3b@ucqna*w8QWXVms- z&+=1tZyXF)?sMyO5fFOcv;97YJ3PJjJH1#=D&XRtpd&u@0GuN)0KQNH zK*`f!TSnmf`b1P*i_3V*iebK+&#o$Fnp&wpi0&JlO0!f4uCVh?EEas3lztjjxvE_2 z9_BMUKpfcohne~c$o1xImCiQkCL%1+TQ%Tw6hZk;j4NHghfdFjBw2foP7XOEe|?hw zxB+MRQ|c!G<54{|iN;ct1B%F}=q6Z6Z{3-Y=uuH_rX}y$r<`~?`5P`A@zlVlfr$@B zvRq0PbwOpm8Ob!2K4YYm&%{Uo{Ab;}nYPlNWJH1l#|eR?L+Qa>yJ&yp4o8tA)!H>*d@}qftd*wf&a=Xi*g`UOI3}Yq zJ}QHvW&Q4;Je>~zMa~=*YX1Qfr#~UIoU}uG&byO;^-;k3T^8wnR>nig=^E>y9rxWz z#x3T@_@eV8{oCDa+w{ae4@sa(hV>5%W6cGW#8*tYE|p^v(LTp)((-A1x5+*E#jrZ= zlS~ISa$sht=h1d)%f(0_1hA6^T<3^JV%FCv=?QBy-3=Dg^MwSA{4%!02`Vn)pesNK z(f09aSM0zg|1>)z9B|Ap&&%<6g80|tQnXhH>0YN%NHmXk?cp1|0VH21I?({jf79H%XYvVF~ zw*qIf5L{g)&Ac`_S} z{1H@o?(L$i)nlSgJf5n3DrpbawQrZ`#Rvh!h`3K=1n+nN)m4@mukiuph0Im;?!{^(j3J_xhti#un)i8_86Nl zU;U)gYr(K=(^m~I$h||Id!^D*mQ`{2Ug&$%Uu;+(ynIKV=%;H-1N@3rNgeK*}6KBt$K)9M{j#1oGAFy0zaA|3vtw#$F z0U#grMHBEZa@49m_y#H2GZ;3y-PnI;f%eRPF76@vQgZFfxc z{s?3d+IYHLjB3*?>c#Wyb5CPG-r1y{rJ6g9^PShP2$yg@WKWTr5>YFxB3!acg)rH! z(iHOgT4VO)l@z-pV49&9&&*>XfaNi_SM++D1blE;o+grlnJ7DSgFZWw(v&j*b=xqvlcgC|JKMebQXUGo8 za5IZiPbf4!^3NeZv9yjD{8zd5)z>E?N-a;G*$CgyJfxR&mr>N5FoG2X*Pa$*8j|3| z7+KQjt!D@q2xuhom`S*v4U5r6a6A_tvbE&^)t(i>*eZMy1HrS4>d`%E&nAL+}8C)9rN)X+F@dGf#ApJ--T4UyQ*yjEq%F0q7 zpmTKmTia9n-{=S&v^ALZ`a4xg;=`>ecS3F2t1PQ&;#xOy@$vEIfKzH5nI($8!`4Yd8rEkzEhHEEE#-!h)ksgtorO20-;ddrJ;w>^JGJa?1Bz)| z93LGg5C6D+H5CeC<@|y66r#$u*U;1mi<&)!bK?a-1Xgs1)je(HF@_x>XIoUyqO_1{ z5d3mZ6hn+X20kc@|2L#gL!HYIWeU-({G)Fh?lJwc=LzM|B4o{9a0@+?-5J_i1AvM; ziF_ys7BB^qk0xK$onUwtOxrlVEIDYp=fP|#=upc4*^_-`dc z@47r9#$RMw7*QiNhpNsDNcpXBjKm43xj>U^A3rMSKhv%MmI3{DI`YiS9LMrORZ?#m z1h;AXSOjZ_CVkWmwde<9R_8_~g+JNAGO0BW$xl*rWj9zDXzIDBa{pQB_zyQ@wDJi| zi%N~~Qw%qggy9Rlf48M1+LbG8Dd0enkk08)jr;k0jCp*#OAm|=A$1oi z66HYqXt?bAD24T4(Ix=Lke~seypmWRXD5bQnQ7sfJ98-X+7RQuu%;Q0ma-g7D^YMJ;_mdSe+ZnT zXFgZ)&Hw&UO7C+p!eqbb|wsM3KCuRPhJe9N1kqCVMq$H*h4=Z+AqY0x z9K|gnQr4sPtdKCVlP>YZ(;w|KZ`@>~r8Y@nc)5@ohgs_4llrhRX~V(X2kvtxl^r-| zzOB8N1i3^?cn)zcCh2Kyz_0gz!I~5u!-X=!+>z$uLldKBi=(5Hv?&EvQkei}I^D&B zXeYlPaTJP3tc|NVT@mhia;d*XL=QAQVd!!pG0z*hBy&Sbm9k!xSrSi8p_l>6Vk@IB z3=l~BFP7kzIePy86j{Up-~X17qNe1Lp6xYfTknj!uRMjhIlZH$mp$1I^TRK89CJjL z+Z&SdC_HQOi2%DmbS%m68bY7u!eTT_kfhh2BVTul=rf1FQ{NCCq*9aS zArQxaW1!MjEHs<`h|k4HuE0|q2j6`owiV|P;B60Ry6O`F5!};kqOCm*H*PI#%Oz-7 z={CbHNPwKkhAKOV-bq;9ha@7Jd`M%aIC%Zab}1s%_zfB9)v2Ez$!nf{`}mQ6`Fb?w zzojKf=AKm34yL{!rQ4=DU}166v#kf#a4-Z4aTlbyBa*YQJI*O8qTJ%T{)59T z%&GoJVHmpBx#}Xaeah>J8kg@GL;ADsmD7j%^5(#DIV94grvQaLXrhre2tGVh%iIlT zpiHD_#?7=Vhgx2!q321CBz;SSoT60H9_anC(KtH^sP&{WdX=)XuFP{w8lZ`gClRN+6-R$JvsG4NYhQ6pM}77YX`;H3 z9?n93*8~KZQNutb*xN_4^pdWV>*grWrdx#yhNA zR6wY|(-6%?>C5q}=P4LQQeC2B{YF5x^Xc^+Vz*ByxL0)1e6{+)X5YFqE-l8;u80<8LT6vH%k1Rfw(QaB|U~8a*wxGiRw3013!0E-ihHt$c_4 z@Tt0tOAdm={?WV+PP(+3F&P`-tRqnid{P%c+JlbdiBhuY=)P4Gfi3Fiq$NCOllS>= zEEuFE1gxOx|C#&1n^<8O&9yCj6!{9)Zp@p3Q6SacqcGxVFKo+o%ZPhqgZ-wUEb2==82#%AKZl-3mI zG-^Dm_~S(pjdom*7k(uo?t&|h3%QTbE#j$R=jMAAuXD_X$?sCyj~l|>Ju2>qho7o8 z4=vHx$c8ET{7~@+UGJ3Il;1r&dC16plF)RKG9oiHSaQtyud!6}jayZymWFl9>|Jf# z%@dG~3ck3HcKd(!xv1zXo))2x6OFAp{_nO~h$p^oidEmsC%DR`LoO1a*?`k?YW%GV zonhled_3JRBmuR8g(=JB`SHWwr_t|hs4aI{5?dI+-w|snLQ7X4mivj<80Lyi*xeH4 zeMVM?sjETjPl>0h@h}gQBn4&{UDjRa0U{!2K8^*V0X;vee)BABhs+a4dXhdGc!K$O z7ow5Bc#gz6_?d50o^XC}`@>TGObdRKtazhM`l&CNmFB8iu}6iMTbxeLxfd%&U)$^O zL22Jg0Wb>xNvoG`OdLS4??eJ(JJ> z>`U3v`7|cR!Zd-hAY&0tLzsr=x}QyRmpoamY6X~zQLWG%61vHJBCAue0|=s2MX^tJ zm@DLP5-d3J)Cc1qe4Rxae$ChMpY~89d{U@}Had3cT z=7sml&lh;Pc%}@Cv+Z0u7)(wjukpA2E4a-dm4RYI2zUNNZxm$QozYhZ9!H@J?c9fq zHSQ=BwzAd41Sk(~Iuhzvz&=cK`SSgz9#8ybzUcI5|0e}R6#?HJ50zQMPe>Fblu|jO z*Gs1JHfr7F5)DlJ|)2XlW}1n9#*Dn+MyJL&uk)3Fnqa)Eqs`*cM}^2m(V zF8L`Lip8Wn+?wR|rTPUC`#QBI;|=V{(k1i~lhTJ_8kH)awOE6m8zOyJjdQtEc0wN_ zBwuQ0e&O<*(SV+(AnJoY9{pA;N{QsY2vkV{=^n8d#T4zhswyk3|F}udDK<;HRW@3e zg@ze}bck2cefcY?ZqJNWUB7MnW|mfZAndPxgLmeLYs&@_c<9aqb~zkp-v%|SFdEs* zS28d*iIy&n(XWl{x4Jy^eb+CqEfN=^WO&ko7AEoN3&V!FsT4D3?vyRnAz63Uv`>sQ zC)cO^*a64_?v;wV9YVHg7&m59u7UF%p+0>c9Q_YHCX;nRL^!!s1y77F7EyV8Vhv=K z*tYIO7hvH3Sp=IjPmIP+R%a=4J|vefo=+#Stc^MfWd?)P6z(Pes2g1AnZSMk`@aZR zZ7vHY$fesKYmc!I_3Oov{vn=|<8c61xDd9pwd(@LR4YnJSy+m`dxa59xymLSvI?7n2*xS;hgCIQcv!mhI9A>2+J=XTfl(rI zHAVa4mM%6G;aGWrEF8@(7Pq@fQ`6&IbsIdp*aOAgg}3kg*bnz{xvfe5#a>7D=Z`Fu z>1J+r5eGl&4Yp~Xy-UYp*Y01@B@G=wg;q9Qgx@cmlNQ|b zcd|IEM1`Xb)7=1^Jsj$JY?oKQyEWF0@!jf)_T9JYV=6*fMBbSvbz)$)6sXfghkP96 z4LfGAPVW5Z zp6+d<3-JzIIDt}hkM{VK)sWm>c^`gAx-v#X!wzuz_P5&$`1WLg(g|u_3*;0-0J|+$a9fxtoNz zn{ZEev$IYc`ZOGV{$S5prbO{JPb8Ws6ZYK>6-6dNp19BI^YYn4jp<`%~4h$|Rr28 z@eIdNENl;x?%hfK=?FJ`0%<4nZis2PAo#Otvd3hUw^Q$q>VCLn-HkKSxC^p{9Lcd> zi(zm!(m!tO*Bfm7F@e~#&yw3&NRANq;=BKp~Hx=->~?yDo27BOD$ zi*1sX%(Sq${riuAVsAG9;f{KK*C>QIJh|h1;Bc25e!=Y5@o}ijzc#ernOA#|NwqP- z?k6SI&ncO0tT)K4nf=1XPj?f6SF#p?ZaIQ(e5#ffLP)c_ib@SBHD=O(mQ5hy=_e~v zKW>h@p$n2Ra2o7OS}Sd8JY#Q_E#T(K69FrcDb2BKUTp*j;X-<#MIJZfe787pMId=7 ze@y?KauhGK>o`bvS>%hk+5;w6adJYsyzJR_r zGctV=zD_;ClE;Ma@498MVc5w8qjPXc6ptTXyWdq;jVrId6D!#6akodmB7Hr3@N3%| zF}OXa#c9Gs3;i|Q3YKs=7{wAE(jvROS~;vb;9|&O_)PV6xMA~z<3DV2?y6lIEnkRq zmOGtw_%^3Lu|6fsR0{xrR&QljA<7HzvMnnOHe^`got*bkep4Lftn&Nrt{l69Bc0qM zxnV!oC2)c5!e9W~PS-rbqt~7)CC`~Ar9pS$Zfk~dlyKgoh-4UtcPBeqvVe0Lnq_Bh)o0+x&Zb<~@YFVT0$89T9fd4Fy zN8eQgDYXrq;5FgOKJJEcc=eM=MN^;~cmfc9F#)&gYpkYctBA!zomAJy6i~sTIQANa zzyQnUs(>Jv{PWj-D50O)N1CQ-6CvyL6Q3!=iehovE8oU6Rxfw5;K9u=su%?FJABHae;a_)W7f3V%`BlePLngiQ}?m1&t4p7q%YVS)~P!!`4{x zuxG(F+L^olc(`uDSU5s`m~|j{jU)g)3u!?;3uJ;%;Q@v{gkX+ka0SAyns$`b=!5*} z#ay`y0=k-{&4YmKz^#1Ddw2aFodVo{NCo~Q|25N3Cg@kW010^?SAwGjruC=Gi1T6S zLuOHBU+l5p^(q#OS@Ya?{~$PoPUrcT;Cc#LaK3&3{4lrdqilq{&#k$kB1ny7$!jX& zkZL3{^Z|K;9@qFMSglT};-aiM;z&H?z3Y zP42pv7dIhcYxZx)h9v+Myd|f^X3O+1bnSsBewf)+OAR8|rDul>x<?If*qOWunghkWu|>um_}e#g6~ zpJ69qtmK`zYVr1h0^J^_EsKR%@eD76;qTh=m;6d&p_ebqnX^6GgN+4ddaB?b=oZSO zz+{~u^xb#gcdOhm@*Li9yo-b6r7^lctIK)lti4Dr z0mocva+f!2_r`~c1_hnGE4%scj_z3GPSnz3r_SS$S*E`tFLv;cAS{;$YtKA?pvmFm z9iA6-1TMLOT%mY(G!zqa44Q?&e5`?UrK9D~;dO6{_h-RJ(T9MNn1ccK`;PHV z^q1pOCl5FyFb_aS-Cn!?Ns=}^!0U3grr_<9F<(JzQ>BmO@MSA+;ngy~&{9B!hoC6A z^&0F|r0r?CpYJ^d1`~ttz`gVUy)s0^^T)cq;+Das>YIJ4s%dT_;E!r;_gXaS{Hqm)XdYG5dalI9?tzCNFSs@8 z48I~<_{Us$)6U({!wN_ivB;SNsDxy&#|;E>v$+Qkk?drfI9Zs_0i3QLF8dTSJ1&o# zm2p~VeI!un7m3Egt-B<8^hovLtKpV`)_Pip%0Q_4_%9b<9Rs}4&mS&Cz_nUH6Mt^j zE)WlY!cam{hc>>B;WDNgbRZm*=8y0T9J&pKtTTj~{F}eSU97r}c=JACl*)~({C1Qd z{5q;MmFfnED>}Y6`v3E4HUG%MJ1MTg)<-UviXi2=;IBFjEnh#g?1V&Lef|?RHss1v zeYbx&LD9Z~Z{Hs5qVH4^E*gqyzJ0saL2aNNzclo^#5;vNhAjPr&wtAdpdC0z%&uq` zX^5O>;*~z#I)Z1y`u}?x(?;m`_Zc;k>Nq4ULfR8pvOFUtr{9AC9_`_=TvhA^-*aBS zK>6AXFlSP?cML~Kb*eqqXJ(U z!FF)*gfs-c?UZh)`zBm@i%Gk9Re0`=$ee|d!h`C~AUAj7eX|bGpZehi z`?s`L4HbJGx=Bn;My=i-|L|1)aWxYTVuT!^9)zIQ;-P=mt{iPx2X!yy7A9Of9-0)+ z_Ci8qd^s2IW*WD}XK;U-ZhN==de}R0BB>p&r|77v@$PL92HCCjo(b1di(un34g@8^4jw;UYy2FDcQP6^GA3a5*e_2D;T>DV4J&+xr*8SIxeIQWe zv#!yGf9CMR&_d{l0i9jEW2*SfU|Md{-{(q(vKd6Vl$&pkxo|q)vb_0K5Z6rck}CS) z7*&mm316xNc%77Ug}%?j)O?W@41jD+W;)rdC}bNOSnO0RK){&vMtyDQE8t;km`$8{ z@dVKW8$rm~jP3*OH9G&UKgsLg5kbf&e7h~HG) z(9IVYKySyIKI;H{+ApQPkO(~5&1P;n<5+#)XhN0zXu2Ei1o;KMNOGM=(YyLce40BD z2&zWg6~MGt4Wf?mtgz149M9dPyl&O@ABy}Cdxhm?V^V$(_+~*LT+dWm9g{ixn-n-M zJ(hj!xu7ZjNE0V{yL~`(4CySm3vaBz6y{oMj5g+k?FU~@q|Er|?kanSUfkdDBzKq{ z+=?1I+nL+LDObjk6d<5~P&l+_PybmMD&otZllWJ-Pk4QXGU)Qdigb77My5b= zPQQ#$e*gY3Ptygq8R=eV3H$2pE#S<)bQ3zVjQkfKDN0!ZKgE>q$=}J&f0vgFq3+() zwI9@Zwe7?8Cy3ATliO_ubu&kFst?~YK@!~U%gfK&X@Pw~JBUZ%t8Pa8<4DiVlXS3FOU4DwY7V`>^k+LW#J#Y9fc)Z+}D zpGCAk`?+xh#iq|K!XHxWm?}T=x>Fg3o;G57W_o&cFbz8Y*|)pV3$1IQARd!i)T>W* zwKf2!!MLz%v|%Bs_hT%N+a+<&Mq2)1#onE;Q5|_Mp7IiAMjBlXGwBb$1pJ-IzEc*V z#6>3Z%Va5~s@^C;veI0&2(}ymJI4hw9;2gWR8LcLMpp4J^Ib(gJFEC=TsK4pH?wAZ zW74^$$n3o&sUGS1o_!~l!AgGfw$;ov1nFg<(!UcHv6fDXe@s(-g^zzs7P2OwTLOWL zLDIy63SDycFfvecWy6aCl3;b-!}mInKe+97Wl>1$e5XMh5A81l?A4o7@Ayh3)6BPb z&h5=Sd^-wNYh?4W7~4o3Au0Id`c@N`q#GNKJPqK*+8ClXY3Lstl&sq3eYcRC9Ps*z z6ljfg9jcMx#73%KhZ7aw23{*y1IPaeV~wB{Qf=n16W{?mRX__uAUT-Lr;C6eav$i3np8(q9}uUWKw zms}NE)iyG>?7DhBD1VWmlT(}qtqG6*_2p0~LG&?caCdQ6 z9?AOJq05uLnX?rEOPPRoGpo!|hX>#e#JQW{7M0~Z-ok1Mx8G;YG!*zK|FKYyD=bBdWbPMO33u_;|i&IO!1a zr2umG>!$#hwE8hh5fQT7a;SqR0gSa5@!x=s_7}+f6mkbK&!g!=wd=2- zlVoyVi=Y6NncI^l8a5U!R~0gt`Fr1aiZH`48ipH2-p7zo44(XB-_N|{$hle*Mie}%*^2I>+D%w8AqlfKp4HygtqQT;mnPq5ImkfPO5BCD-EPI zB$+Vr?Ac=mc;^<{X^)*H6-@(*iJ9j1ul*VsxA^Q({+TcP;2qZ1MllnW`RFi;dum}W zd4n|s6&WfP6<)f|-9z=CU)C<^%j3;VJFvaX)g2$P@!;FBS1KV;L3&Bu+rl*aw4!H;om>RrQAeSfn8yxusj{V zw{UV;Iu>z<`$&&eqy~DcTT%4<)`$|T$zGQ5#VZaYLfPelJ}+NJ`VFTMuYZWBllmG2 zoc%9$4~=*5J^|E%s-;pP3jlH|_Biqxkb?MYb zOrs>N&S#j>q(LTSU#1ZrYaNhwcHX;`qyk=-dX6Zz=w{5*;D0P&VNTJh^Y}<*p{(AgnncC7V3A_Yzmotn}e^)L=9r zPfgByutaV?3SG#EpSu6C-p3Yn$-?~|K_B<|t$-F-{S&C0`k5ZR@0Z>N24`@c7JXMPo@3;!W?=|DOHb1bwSZ`>B}L z{ux$q>tv&y??@Y}jbD!V>XrRxM zlzd@>xAnE|b>wpj%ui~s^%GDf-@f3OFITLkdTInP4ngINOb(3*$C1hX61lQR{z6We9RYYBS5ZhE^j(N53wRQQy2eDw$m(3gAxwyir-6ZVG%n z{iO61J2FH><7A^@8t=9hUC(2)+w$NLkEcHJRH3a6Kd1LC@f+>S4iPKP-tCP7htHi% z_|%alIbdf;)uU+Wqo7ZirK&Kw&!pVS=~mVUH*@KCX> zv$pk8NwqObi+BjUyw3Ib!et1CCteDwAFkkTEOhic11TDNNvs&D@_v%N7SO$-D0KC! zZBw)~U`Jun_W_cArzH{}@kDFIp~lKn+}po0dePqoi@TrwRa)${D~-U=IRC`|<~;lp z!|=R6_DMFhI3zOZEP7VQ3j7u?4aoCkbywC?%Fyl9LiVvJMAZHHw;Fm$`?u6P{dt3! z6ty-acOY+~oM0zi!V2-%Q7HNZ^mmD&^d^5*KmqG`T6~>$1PPa&W%^g^!K0qXs`a*= zQL!?|xxhYq=%t`PM3Ax|4v>7&M6#2>8)Uq6yzm+u0elwG6o5DV8CoWBZ&)C-GEbAs zemzs_$ZJXYdI5!ubs;UD;?>*#=K`ec<&m-YipEM_RNgWT_5AF z^##wQmpNyVgvUNjVBP{SwA#&jEgNr0Ds>PTrU!bhVDxoFyq2Q?*((5UD%j(w#pfkT zgmmsy!mYqb51?N=)S9`oydk}J)qB|*$Lwf?M4p?qN{qgP7!5KRKTE1Ik`6-0D;q)$ z%v!XSFo`tsBE(J1uz>IjnR5K2wT%JdGMppQsm#>zcp;@-BX3o{1=&DfB&t2p?(tzP zy#&rqluWRG=Gf~{S(*dRQ5;8o9KK2-cJbjJiYqZNq9CgkY*Q|d6*`MAHBinjEDOPs zD7TcIy&oP{&Bh%7w<1N?{>aIS{BJo zI~kZr1{$OGk3eKUQ$559j375P+$eGiV33jcqN;ZXsr5)?k;mAykg7PtX5lds4>m9A zohfybBd-Mkya@u>+p=B|Pksob0CMMKK2hR<0v1*vZlEl;ls_?isk`jdA{bacl^{a;{xcZvmK4An1a_I2T_zG|R2DLj;l5JP_lZg&OaxWD_l(ph zBZ9zd;wIL)(f)6VT<26|B70Jkvdt-OrJ_9n5wAfZ4pR`09qMPWwGCX`P+5k7vd)AV z8_uo}Y&N8#j9{}`aO!GM{Q!S{CS^DKgo^fYO~mp6en$-f20GYG90ssEn3c)4_XerY z5me0l-y_@?rZ$7kn-`nOM~&orKU11HKlh5VY+0PSg2IYq=nDn^#q(O|Xu0xdhg%-b4yGQlQO# zxdk;91KdPDg=g~CHg5vMeKb-D$b}TpN65T%HlJts0c>QJVIV z6o!h7UxG-vvw8E+EM+@6S5yFdiYiY~2las*BzK&e%^O(;TaLTAf)T$_dX9<51@7S{ zQh7HjK~QzRcebpDJ5^QH!?k(z%9rVV1#prlB3loTa?fK}o`m9x4w0P`rW_kuUrGVw z^lfQw-G#~~%$7Bn*ql*nlv5`tV7BE7Y7LU^1WMf_?CEBO0N$vEsReRS3wv<}5`lqk z2W0U~WhQ4*^lDOT^LlFN_l#iMAA~(>NYx8qXKQ%Ry#E>?Y7g*yvs%`|?@JVr8D)U5 z%kqv?y(_HE8?3e3ejNfn!n@*9j;ko|X@Mv_QtB9mf&`*W3q-Yn=URd9W#ZDnZ|fjn z%t7)Ao>vX~h)YB+@NUku&#pkiE)bNRNVOheZQqEPL=l9YZ9bIwLLxw*Yq3_iqijL6 zc~j{X-Y*i`h63^$*1%}t%1br2np z{T5OTAB6ngQGHIJXI2YUjk_KnVSW@7Kz6L3ZCxrhW$q zLK-68d;oWXG$axOB*7IC(@5*12SxqK=7s3bXNFGcSEHc7AZQxNI3WS(g#y@8?M+1~ z4m=MSPtxfrQhu^|jcu^yEUpG>ht8C$Pox|rQ1xy?y&h>Ve+0wM$KH*U;xm!%!Fm}J z>y(|(O{l0$8gGIu_JwN|0n93R9;{oD>Y0NYY)(K0yrDgE1~nnlUb(;;i=Z0dNGWW# z>qsrDAT?-^-bV$nhWF4?T@d!KB6Hhpc&ZuHUSGa8?OST!Pm#-^{9 zgoO^?1vaDL=}Rrx9c)PHAO(7Xrit2?2LW{OzMjBu{tWkXg0+mwP7OYiXU+BCbFtp? z3O1w#`+fpanMqkadgkqz0JExp6hk0stPHkn@H8QqyPq?06tLEeP{E6U{p08;H9JDfP@JL zBy-&h)*?nSMEQSFQRrzQqjR`I&5Vi^2b+&ico2?Y5K{7$REv%_Z%2l#r3ErTdV!B& z>d6se$6UnC03<1ZLqKQ$1^)XxAh^wxDo1C@bHp$mz+~~Gkigdzz-Y?>z+BH~RaJE< zr9^3Ll=nN+!<|QPFxX&&GZoL2s>D)*x{xles2*e_0@!7xAf=Sk6Qg);MyW17i}QJn zRaI4|l!7gXeJ3IY21@BbP9xE}ZRy=Uic}_+MsR0vPs9zC4^9bQC@8DI!SnpAC;N5$ zN}p0{$dMue{6RRIE09P2+-D+KRaKmx=Q|=AXQ37vseYx;4PvigCglkTUbVR;XGXs1ZD}DL`7crECue!U1e4c>V z!W)!wM9KiLz;mSx<7eU^iPr5CyoW}JJw_z{W@guWn|I3fwmgcgB9e&dAtVsjg3@A8 zUxXVjlCkfot_e3Aeojx(KNp#gLcRE&qIy1>=|+-#A{A_~c{7VqRETnar03UTR7J$F zwfX$14oF&}joI0Jpk=iAk$NXc7qvjXTQZI}FdSD`~h#IEcaZoXK68}Xg zfL!N?WfUehH5*KI_;@S!E~dj0kk#*O*&TZ!1@a0`C<@Zb^>PUeAJ=U?5Lr#&oH-rJ zs*Tb2KZVe!Zjg>Xp`M5DNGp6nzuQbtl%-1@^=Dr1oYf z(p6QJQc6hZFO+I-VXurpym;=Oky58dpP&Mgo#lhgo7gfT`<@)yjmT*a!AA$RO|8uv zJurYm^3{UP;wCJdh!8+=>TEtHg)>$?`J?=N^0lWa$m~F&LkD^i%4PojpUvz#tt+gN zuj%=>kXC;ZHC-nloOmJ?DyKMc;6m%JCGwnz_QvMTifRCR z3)uz~ho0=~NS`NCF-H=)cy4mC<@ltI%7Je86qR5>x!JtEoM#?ki!~Z)Y+}H4A)cOa z1CcDtp&Ay!RB)qdq_XDls-YF=)vam^GwvK@c`*3p^jYW z-;N>*N9jA-vV*cIIR6OBMho|jwLB)?Q8p$&0HG==fY=3G)3pXQR~3~i;B)PTT8l>< zb+$YXD-x+oHXrlD_lKme5(Kanw&_tlVXX(mU63LrL{J*}i_|3YhLO9AXx2w)I@&fV!)Zedib)lj)a z5XzE)z3Sl^_CS0uMA$J9#qR6D=JWJACdUYJ?gHvLo^I2@ny4U?){q*>pLv4&?1-SFI-BeGFttCB-7;94$>uek z7yt*6YHo-?cebpTztQL3DBBQdAK@4p9`1jo_1J=nJVNl5vxborK;$F?1Vs-v@9xK$ zei4Xe9$EB1fvrk5Z(?bvJfOCDXMaumqM-n$xd#apiAhgU4i8i{c;Pi&8*N_XnQUI1 zh{kxN=niMyd^WTHO3t0zqk^Y?twT5e+Pys=M#V4s; zNf8>!=$I|f7d^v!ZNSkdkxn-v_^6U_(X+w5B~lAGTEtqo=M*!fdzs7yTb|Cs^`C)$ z_sN!LKqH|YY;-}nzI+mSs+5y+wyGAe)@fiz}-<0!)s9054IFw@>&iQ;Nbkavzh&`^!pmJ%Sh-O zdZt)*g3mOV9^um1{2ccLP8o@2J&~xJEr&NJTh;(xY<_%O4fd#|)c@7=Q0NYR3pdjR zVUv1rcnv6-_`9%nY!nLMWg=Mb=s7)7#^Oe6ZlLVRg$P6s1QQ8hCYC*{F`RZ#!85=; z$4c+X=5>NbDR=an34U)!&#)7|GyuVO8J;FY)rWd;e>}O_h54ZJQut#RI~#r zfo98wDD*uYyaUW!)Fi~Tu>U$+)^+#f4=WO6Zm@n6DYPxAmOOTe)z6D9>sZfIIfL2! zM3^htB%JGuDfY9?Yi3)@dS34-t$C(JuE+tVg)qv&8n_!dsjJPq$8H5h1&#F=P-hy! z1{cs91T8_MVza|$4B+_GFsYnXy|)Vu#nVYeIFJ|-^fAWfz~x_ z>PY1K3Mr&WksUVqwD7JYJ?AS#TLY1yo}!SE{`V}@k%k;B){ex2vKT}eK@_Rvo@$jY zMC!2dq!mgUIwy?OYa)L*M+$?EA1Go*BiB$`n``A7TCam3Q%OY9tN>!Y;Yh>~)nqIk zz!b~~BUPd;J6!SK=jM)gRHwxXU?RmgD<-437CZfw0+@f7YTz)N&sJ+i>eL{p;}eIh z5NsITE6++D#I=FQ{ZLT8xzid8w{hId9i`A3N?F%7ABSV46d}3oNReX&5FKS8wY7)) zxe^J_pN~OS2kH_#?3QdwFH*obqjdms*wJSj?HzQos5D|qd4P4oggQIkKM4YKwO>zB z>1fT>wwxK4Z4svImGBUN1me++J^TiA-1o44QMtwOBWL)t-j>rQDpHR-o7Vud0+>KJ zcos@hN?EPPX1f~%00Zpln=NPR1zXl&M%d>VjN-oT=$+R@+P+^=3$L^{8X&ig>Dqf# z16hf^*?gcmrqLT(zbD8TCMrJ|Y~FdD$s-^07$68r^gC`gZ|EAqj<#U;Q31T&(}TKA zU(``#jdCg<*~JRjNGVS296Q73;_Rkqx?um`$x&gKETcLLpLbVn6J+;jnGd5Ke5lIdroorNR#MgE!*9LN2-1Uy@zoYg0X!9lutgCAZ zq^>oyI;B)qRh6bcYe>z&`(v_LQ@S`(%^5eB+>Cde| z0DB-sXgjf}{!GtcpbSd>zB?iU6_rS|W_HQX+U9lRHQ78IYlNh{5%wtWfm~-8DCLT( z?w@Qvgu1ciP~i&xEK(g4wAYjB7olk@8~JOKa&l<+57~dx{w0K2`3!{HXRUY3>U((U5tKJ1PbYXdkzT+PsRZ1(fPaT)BnGOf>nKVX zsBVgnYKjzXj}ZCrkxiH;!Aan#Ty%xV9ba@!^?g01N^4Ri(HXY3>|(t_L>_G3B^M|v zs$mgwiY#vqOuyfY^d=UAx6=l`QLS1pqQfW@z(-rwgkrZO8p9`%E{-C~N~9R@wNa?M zs7?nU$~{Ft{9Y1~juzhS)qb7lm+RqpR7y=7@qacw4&`R^uD)RN0_Om=duGe?n_DU& zFd#OOj5N=EG?mf?VjW0X|P)`d4<6xYzl(%fXfnDohMoQoe6M5;=fI64QYnNg{)S z_W#c|uj@Y1n(l}|W8HN}d#NI#jLkN!$ZA}{R^ni8RGo4|6O&jx))G^W6+JU-yv+A~ zA+Z7#z!SVz76Nd8JP`5eDCId)y8UMJVclcSKv0PZ2HX)yRhrcAmde+%?f$Q{w(@tr z192yc6fk!-qi?JypU_SBh|M-Nl=9qcIZYvgdfS4+pB1|retUp-5~wWV41W41M6Np` z`=|h3sEp!SfxoJ`Zn79SR+h7;Q54j+|o!2 zO%0ANfkTW`PWCV2<_eNC^FK})yk{&Gc!S(fM^ZM;>3exkKt3YaYA`*plnH`yDd1jYNV}8G z&wcFe>)Cmz0HTzO#k^-x6Ei^Mb%ljpQv?yG2NfZ$7>T{&a7C`W;qU9nDPO662902C z^EpI3SQQs*ZSyl6dm?uYY=Q(%#(?QJlybnMeXvl!viUihNa`*WF)~@iZm}!X{$T?` zON1=Y_YEZZM?nD3q9!U*q++n1ZUx2VN>1}p7^IORR1-C4SSXI8CK4DfRsctvkM==T zj~#RpDd6X>>1kjp*5dFP+cnkW7!mkZ)U(vI7Dgf{JbNv`DI_BqtP9sm!H`!T&}=pz zK5O({73?7%83uIh6rHG>0KC+(sGK?=Jm@=V$Wo^I-8#+g#jQA>g_07)YH1_OgBP|BvNpix+Y~m zn%NVmg#*=(arWwwo_ilO64(!}3q^mxHIsaNB$g@! zDy?DP-NNr5rnN9o4Iqjmy(qKb*{(g6$8hj*fwfRmIYLMK8yi?V@&TRAhlba%{%bm- zvY~7y3sY!Ea2{qy&+TUVbRSHqca(xgBHq|?`apM23%;X#eLu;w{SJ`$jX z#rh7?maSmdgDvOfJ=uJ;NkcDn6wcGgkVRWIWw2CUi_~UEWNW0)%>|s*^el`vAs%B@ zk<;!(RE~wu35YA6Ai)aYjTFBC&!HhBA8gsJi-v?}mnCve+#$?l;{t=B+Z6>c2$dNB zR}Hak3d$m%@oMxeuT)Rbz_V)2><&_xi5xt3_MYw6u|X!3CNye1Dkjg+GpYwMdbjv2 zunDWTdHp1QPyV|T{TVA@`8j<7N6*7&1Etq5Q`*ExJ!C^~q|l)O9jIO?pUFK?3Jnc7 zHf?-I&$}f8iRt%9X<=*@;FB)`D9d;P%1FPzRM*Gk|FV+S9q75%6gV+iJW*i7_UdL| zM?lnty1qfAq#O9ZiX3JquAP-0OnXG7mTzP`xlXF00IVfj&=LvbS#LGjg-jg2r+41d z+6xp!^K9GB<~6^O(rKK|k3@*^+3|iy;xkeT_<=qbmCl-o;S&Y=J=yd~!3~pCBsEbe zYfYgBFxj%vEc1ZxX^mZk5QFvSJrUeUWGX`a;4q~;@2RwBu=yO}M4uPTEKX#xrwm3S z1(*ZS%I3A$53mkzaPR2zo<%Q8{bQpM`udwKo2)Pk$V1$(wjAJ%^{YI?58oA*(Dk%G zu-t33dG|49Kb}*-IHu%D)W%_23uV>|efbD!#0xy|OcqfIittc7VEuT!SDpx-eF2OB7= z&wJz%Y5+S*vtO*-1j0()O{j&9AkK;E-}rNr&Clo_P1grUQU`J;Zb#`f^=?>6PeQ%y zNl7wsZDsS*aylXwfk@(L^WpacsW43;!%>Tre}D`WE2}&gHBeB{6PX-fFSA0;3R14U z{0?kUAiIZSQ*LAjPr^1}_T@%415aIPNaanK3Z2Lk2L6%MAXIWA2^qc3PurUDx>-WYp13l z9RCf^2W&9_hE#9<{7MAoSGu=k%k#`}AT*|Ixh9eQU=7#xB2$1t3a8tj2_Ozge6nR{ zCf0#qW5-nx08D*eNG5McCdVItrk7ZQk&Luq2N4Ccs)tHaL+ShLq zfE!y5MJ>%v!)r4E>K=qP&I2@D$$5E=pYDpO9T+-vWwYArP%>Sv!a|zb6X5A{k6|@<~&$Np;~lpaS?rK_aJ(xEZY{ zXN~IJ$>t3Zt<4)5LV=Jz6Ltsy6j{80a~gz#&&pjx0Z$M6F$o1Qm~Q$ovYXA6E+3|S z5lKb8x8+Pz9`DoHvbL5<9or#(Cb*xugZXLDJOQf`}*?fj4*AQQ* zlqOO(65lJ<(LGWIsT0|;94z!AfPS*&8SOO@z#e>iHw6+%&MsnqB3TT?d2pgZMdb|W z+gq3jkSMzpR0=o%lYA7pbF=yJT9JqkDfu7YGV6XE*~4B5Xa1rVOmjg*x@3LrsvuFb9S z0}$Xq#wFTvKx{_~5skb$8m=!WGiNC958{7OH94=SF@r5nmS6|cQd*pA(u`7j*j2^K zp@|eU)|Tb9)(bTz5dpZ_eEt~Lwe>b1xE&}3j4CCjMXvNt@ZVjCkZ}zsAC9inKit#Y zT*3}M3KeA(j+K?>D1t#u;q;_}MB$jx@D1>uE>!y!VL!biwJoj?-+`Xhnp((8RoGAf z&$c`P2J4yGu=mruih|5%!&xi<03ZNKL_t)Kq^Na7>IU)bqAiC>V*sxRU@ue&BXtiu z^YL`21Vjgm`CF>r!a(j$JXfqiyq}bqFn!ja@*15!zory05>@qnP$|3@r4PI}X5z;5 zoqR&Y0BeuC@+)|cl`W?iM7Y;Her2TK1%t^P2;9-{WwOZi)B^=YJ(03N|K321Kn1WB z3SeW)#;YNd^{Gw~{m~UZ-{5!g9>cVE0(G<}J2w(BM4y1o5uFG+_^fN3|93|LMJod3 zC<26J%ds;^0QvMTv-!F3m;!#XWkXa)fmBoAI?n_!+I*Bo6iz5nEdjRJo6QGYvQfrK z)m&R+lrq42o`E)QpasDS;8^;hlwPW*D6J;-3RQ#z#4XyqL(^<|z%n;iV06k|SUk9z zyVY>C3m++iT~#<1rlKe?Kcm~EXku!ao$yGckQKnNk^&wC5yZ&oym2kc*=OO5JCXLq zg7yKN0?s^aiSU0X2p|s+Rs;}JBm*fvtu04asI)9P!$v4zH@JUvm}tOnHm_r46?PCR zc1bP7Ko($DHbPmc3&gM!1d!9ZH=&N? z_ja;*@ji~9_?~_nrj{=@ZvZ@zl7otK9(u1vD>bw?xcf7i?yg6l^F5K`D9R3cQLd2a zx#0Q2gCN(z=Jm=(zA2E(AE!0MqinJ;GTL$wdqV-;Sjeuisvm?%z(?C5QR;|jC0o{d zo6To0a%Ki?BogRGhzA{%cNhr(od`hlvpW+%=tSv6q)ZMffEQ3nd2X^IfUQuU)qw`J z&6}x$2v7!*0yg>`sIqpGY97J%1vBfJ0Orm3PN+F}O(!Bpt_4B@*iaM@3uKY!?M0h+ zOZMX5_Yi>vQTu`_B0jKpwj6HFL#A7*SxLf4bd+{MB8F}FjfnCiMa)caC!f>POh ziaw`g5-B@98LME+p{7?-3x`6AZ6Jpeg%iei(h-To_rybmTU(xi$t4N@X3LX6Or%lH zRvrU`V+KsD4=hIJ@QRsfqq3O9-G=)|={;eK#TmXQ);w8m-*AerReY~BPiLYYAe>X%+9pBdOc(Y&m#3*>a4QN&yd~92=?ItN=E)9L%1?wHOqt@jzIM zKT=kwq2~~Y^kFcClO#ABlSKg}i?i|^sJUy!KILprW%D_9*p!0yts~!!>#;7R)lKZz ztFRw=4gNqvK}{;^K=*O6)RM{&v2)Dt>oEu0&``m@ zEgx_9Xur-jd{&j=2+4s|vNI7P?ubR39;pl_71Yxxp8re@Cg<7-a>zE5gYVKTNj}S* z{pcXoIEiuqE~Wb3<~6AU2?(nEfV;}AAW#{Q z)=H_ZzzH(J$6&oZQCg`NGVLhRr!8!fP>3*ZLMiN5(q%PlZtRd#GBqEj-iovl&t)2k z0FFYI9z|*uhtehy4XR^S22wKdccI+NV_!y6`EtEaO9}|ye?7Cjz`aE>-bO)- zf#HgjG8}Dw-ZW2Y=OgG$1V<*)`Yn*fj`kWKxrh;?6%?WsGpzF^u23MAU5smt4OPLl+H$_r#0Q6 zqzGUq((vlqAj)@CBhS_5BVGR&DYZb-m)*-XzJ z74jtZV_#4`uZ2{&+5FhYfdnb+{0&0sZUi^!M1}=3nw>2VtKfzp?yN;J+X=;Pv}Nhg zNP-csQ|??h!5cUwjin?#yc719v(GxgOS+k^(c;KF!G`6zGDsG&iKCqqs-ci#=!F`B zH5Ob0$mav2vEc#2BSkQcEr%i|dXadVfJzsjqi#sS#BSV?ej6J9NVN&IF#46KH$le{ zD56DW2|I*&-rqoraUf^gm_Gi_Y&n7?k#p@yHO57L5{fGa7?GS#T}b&oJIv{Mb`+g) zZ3-Lv+0jt2VKBYQdx9McrWqPro@L5M-VH*E=NXVlY@<*Bx&DP!U9K}^XU>fSwNSTN z$x^CUBT_@dMp~DTpW_rV2TwCq0tRlE0)n1`BqNok0-|8F#-&mR*M`Egz;u`akycG0 z&%brLj%&D#f)`weu|O!5Vm_>-;rZWp;_s9Kh@}=oA?Qct79I1`3IXgzYHn@TB9?mG z?ANoyRdCl6Q5eZ)M-kWtdL~i)y&@W;P?1?t8%>wgBr1_;Z8?~~DLCD&>B?W9xm0e@97i@WINKctaJ{bkSA2WH}IKcrp zlHE=aKpr^F$El)SR?UAbZt(oXB+5p3*ga+pdO?V}goM}Ua}8i7J4!N5B1QMybO8pE zqtPp=1*(JA$U#1L60j4G~Q?2&x9KL;#cNQ5blQQDoQ%gB>ZA&gcHN zM8a+bB7rGlRfyaaoXBAFqHGM<23w9bhy~~Qj`nyh45HC*8im@$^V0ZxZX3?q=pG{3 z47Qn=iV3CC1+Wpg*097Pzvs&4BP47?0p$H|B5T4MZ<*6$Dd%+T%hbkfcN~JQ1v*astB7>0K0LQG0#^#+4(MX!D`5NKTW8 z?pq-r=SX&>2!rcvaD(8$W=^FJq_*5BEyk+bKv5^Eh0%1^T%hOK+OodSMAXJJAg`#Vwe*|0p{TLtpxY$sFZf(fK0*+GTTSHMXgmj| z1qKR=klel#cF1=kB= znk)}y<=WD=KmdaXIwS#{2$-rDjADJVjYwjR@;l~1(AoIsZci%^)sfay3(r7};xSte zQI8^E{!Tor4%QSafZ2zPKm>C4Yqvt`T9KN&6^IV+xsC!26X{Q7_n4?6X&VcH$+Iv3 zJ`7800{oq-sY|A70JCkm6B!!}N|gdw6FKD?z+RAZ4Ain3_)gp}H_`A&Bojob0r7_4 zfl>g~uy;KD1J~&t`NT+KR7HNZ7k;jXYdM3FY}q-iQp}y{8GXvvab^?uj5=VUx8+f9 zN&z&XGDdoKtN`}J!CHeFz)}2AquF4%!57p1=~`9`XLUAJRV9+`anWB%=2bE^&l5xW zbP!QksUvt%+zE9goL^^$j*hykstSh>bDE(Pkt3+Y=JUT(fdDE}*Axh`ngbXL1h6h#+Z0G5k44F6q@HZqnYg9^ zb_KGiM(Feu_!_Aw{EWE^wJ#`uEd}w82H>0CKqkKGTjAz_FkJ za<-roK}tiP6@{wD>3U89qff+u8P&w+zyN$;2cpp^#ID|!owbTUa+yz*qR8wd zk;doe$QjDUmL+p)pL90W0A@AhYP#c+9sMX+_ab1nWoP9YaM3qpJc8*lFull&b2n=~ zJ}Z*Cz-kV51(}HMxJHJRpN7bYflAj-YRn)a@<{awOaQp)1PfD3>EcnO&D8*21I45w zT3c`=H95`ablzl4XKQ_GsNk_G zL97|vcfH6y1QBpXdfuGEn$-Xn$fhDuMnt4uA%I3HuGVx7U@dHfA~_M9P+L$Y`@-H( z_X0WN_ljv6E< zImFNZe6rC?k?^!&;|$}Bc2 zMNv+GM6MERU?2z75$PD{cbbTJjZzRDsT52$@%;w6_Af-FgD_Z3yh^odcyCu*c2M*A z({Uw5VYZy-XSN*BZbHcov~R7Du4eMgr?Ql40LOv?7z=hyDbl4Bu$sjeX{G5~Gok94P&4lf_xt?Z zp`2nALC>?lqBC)gd`{^U8r6M_9lVL&-J-5?8e2CA<#8aghy?PU#DW3R`d$8S9-$)c zr59xfgSZwmKlnVjK0e>)tx!tP!F?GBH_V5)frN?aa|y#eM8?g^f-zDhGU=%{)WSsy zxNzhYA0j>$h!3W8E1|XwB4uqNUCgPgk?-->a>1FC>qUB3DS$Y%lAA7+)+3t8l5)^7-XrTYJ#&pC^JKcMm<=5c z;@wIC<4mzyq={4wAV&>+u>3Qjz@eh1=N48X6@(pGJlMA>D1dkv^c9$PslzhThTy_g zRZkH~1uCV0nc!gETfd^*;z0Ej+tUsKNsn?I2Vho|%_K z)T{^~cLB3v$z5^358xEIG2a@pH*D0^2Rj!_5^ zd2PpucvW;QXQ9Tbs(NZ-iXtcprc0D?zAKZ$oYuxMFo8%|2Wp@qPdGTcp+DpOh}kzh zx^@&9uLRfE(>yXi@GitfheMqTD&||*n%yOVza8MS{Rekksg$4G3bw3^%4_9L7^RyaR>_v# zy2+L)eN<4@*qTn<(;y;LRMb@T&S?ccIuX0Rx4M9NYCrCUK;&?f08(eRszZw#s$L+X z#?Nak7%(1Ky`}&%k>=wO$AZ05a{$L31aK<_913aARuRBLn)8{U0kKL2C#cAF+Nl7l zxs6pJ7+5$F`aMb+YE~2`R_p2&GExa!G_EMZCY&**R71hG^rlY=k%ZK~cIVrMPpnIy z3!SsIE$d&mK6`{9!ASH__Ysf)Qsd)H`6fklb}bCDw}Q_Kq-2{dYXn*0QuU>y$nZt7 zJIenhkx4{5ug-T?V_?+xa{c#MAb`o1gP@h7i}!tlEM#8__~-|7wDt7^6AizUs8(Yry!zPewC4HLfN<%?mZVHMPH;kC+lT8L9|E0CW*D(Ps70UNC z%aOZp2V0*5SQiulwH`XtU9qL{5vpTV)eB#U2H)Ss{RxSi7pm z@wTCibznQyDIrHvz)_JkYT{7p;Ik@Dd%4B5rY)O5nt}p%TY08T7S{+MJ54^~aZSO* zjLTr<8oAPJ$~6V>-nPr9%yjdKT4RyKjx8dJDq-5VHrev9gspoXcU~I=5v!~`x@nEn zsn0_4&q^8w@%*{ZHIk4zZ3@@b5Ns{Tlg&$YTDn)&=*dlZBM`$*WE}at_^=XuV@75a zFm}u z18E}i+LN|vY*~0cBU_+OaYGF&7u*C=N&#atRBiKua3)Ha=IcleRCCv2Ns5PORZ;*W z5m!YxanJCYtVOyfnm!={_sdQESye~_wuN<*NWn&>Yt7#DE9pn&s6s(aZVL{N&-zRo zN=s|yl&@+6>BVzs=$fz+5S%FW*B1zd71BOQd~QhrozhJ6)E_vrsbd=?-d6@>2%Edp4Yc(F$6wp2o;j;@lrl_rq2 zcf!=}A(-s4;Cz3g?sN+1dHLMWN(U#>@ zQSb%K1o8&gMOYuHHcw zqcC_`sr{j_mQ*QAJU{?Tj#rTrH8edI0)k|ENOYq6DW!mW5j5Ef0gMpPE)=jrN|9@l zx&o!O2uDH1PXkN8aaR9Fwemh;!P2w>^6xP+>7VuX<&9tukM9&(v>+;68#J)kH z=|sP~GCg~fQ{Q2S;-5AMxvCxPQ2~sT6YprwlQLdd$5PrP)kLU%C@46Lo6S?evmv%s zRfUO+bb?rLqXy6XD@E7n_$uKDqEG;_UNQ*7$MsOb3hA}1TtS`1X!9xh9i(AYDn~Yf zP+dkKWhvRd6!2Pv7{t0*Qvi`Hj;4>^DiOeXg#eajg)L@UP3ccQ3ho4?t|E1e2_SZ0 zKX1-yU1ECf9j-IsG*uG_p2osyQ67iHDqkzeQmFw&b?a@_0IC_D!-}%h+4d-@y^el1 z%WX$?g1dl65hcf!l$&jkC8I3CxS^tyRIjF#(t*G)+o)VR5`_A-M#>hSUAQ(-H|yH9 z#r+M>q2w3VPMc9fliL+Vs!u7MrhD9@46{8~HRWnQ#vMclgR(to+OV;{3OmG$Xu@(3M9B9f@sc zoRq*vg`r9pM9PAX>RPMo<3YLurGnzhhQ-C(iWCPg@V@Zi#p9|*)1zIg0&y%7z=Gm3 z*s}Ar^iH}B;}?mL=4V%02eF{`Dx*3aPypACB2ECvzpjP`l0^|qb1Qw8@&(31ihVBZH3v@UGUG;}ynYHnEh zeM}m#QN$BWU_Ib~9TYK;0f$!f-d`7WW`T|i*w!f}#uzelFW*aqt)A!!&cnWwtNa~JW`%(g! zpJf1_n<(HP3g3nPSdEN9^|=?ye6-~l8CAd9Zv=#;6TD0Wa_UIHfr3wUOkw`+NT(<< zFY9c_x#b1>xHze%s;YDn(aD|{+Z_rmD5dHGpfX-Y8TKoQ2ntF)As5Z9%at)yV9r0US06 zQb|Ert2-{8y_yvPm2%0SbrY$uk}Xsv32R-zYG`y@QUK}RU!(wTeD>P4dond9)Vs99 z868nBy94%Nx8EwLA^i$T8+P0W2Q+){wO_f<4iy@kr)<+J5WsZ6*B=c!l#eR;$E|() z{NF%ZXnh_40287~L_t)FP$_2nIEbJ|-3vd1Kx?F?->Xu$Vrl+=6^h`==KwQ7I$R7Y6*QU@cGws@f|9KX(|SEXy+v5VWJJ+e;L{ zEtTOVHYFUq@1yF}SWsa2UibLK0UGo6s)gV0c^*Vq_oRTsf%o)}NC7|B;FC{VBQW^x zgCK1kJ(sm3D0!wJiUOH@eP_C}evJUCy|PB?)Fg;V!6V!7QVLk@jqojd^HhlBUTd-K zN&yRJ(ifu5SlA%Xsv8ZQyo%2+72?*WX9g;#T~a!D^v7^uv#F`yd!nm7Mst9J*|*Xr z?F$U*5e2Y5pf=1D7oOO@;$&L7o@c75PH<%)8(TJBlr|tXKh>?RDA-Jm29+1CuwWDki+LJP(^GnSGJGk9AvhR=LH-+$oy z2fXhu_qq2z&%Lj6?(&>-&$;)!9`CVn%1wvW$BX>96N)@;d0xO^toU?5XN><1UI&v^ zJ-bXfUh2FiKQGlOs^asfZ53P&y=gM??!g*ziO^xK!zE#Ld|+tV!%5E>ylbkwC9j3; zK({?t#!`x05>8Ik0$@x>L)NS@AUxAeu2@F0V@ZGOF$N!5olbXagfw;yuMh&008ef1 zt+}9v=S#`9t=E%H%j4mGXLjMC(bszDO~|XlAGyaypM)u5ojIfKqCXQJ92)tD(>-fx zEufacz`B=~J;+$WZENmC*y3UE!&!OEO%samD4dr z9Hq*8pThGHD%488pKI)08d$huub;#Ait94`3;lj4YSHQ0#*{8X^l;x)JzA4-U=M0h zI4y30ip4I(`0w0X}E5zo@3;fAJx=j4!@~Ow>qgTVG_}T$Gy4lz^!Fs<4ds>M^W2s z(crnO9n*!0TC8?wvnL|?ZP|G)qX6qAu|k|ll=#`?6{GJ*c<5m<_sD={Y7`WHA}Z;; z=<(VVa_{Gg{!oYMjw9;$*J#@)W_+n_jazf$u#=7UR>2SvFvR_HR6d#49X%K~JR>_& zX-W;UycYMMCR7wMDj^lEiKmU3j`&TqO25l4d|Lu||IuvTV1iKEX^vXw23kH|Dif|c zFkpn(nqkcHM#5?YS1qm}i0E0QpEF;Q_WqZw#wxiNg{6Gr800qj2_S5{QOrPOU!!_~ z`AeqFxfMNp|FyTWIU*V!2gMh>EB(%jqb*Mnprl-j;WoZ?pE}NEW8je1eVbl6o zaqrpl>1<(cO|=GSGx$0MUeV$&PgB=aE_rjC%$TEYz6Og`<=IYl;-UuKHN|VlLH>aP|IMA85e~k; zg$$MmxXAZm(umiHVp=DrAkmq~Va@jgw#>CHKM_-&H*$fpXBFhl*QClVj*3w=03XG( z#`n5hmbNmifztl2myvqCaTwfD`a%^b!mGXm0-Uuq3g^}G!&vOZbJjS&S+^9u76+){ z6R{KQZg?Z*%~zCH=@@Z=!$ll2-lrIFH_Gs)!|^k&Mt~jD@9^lU0eFU5Bm7pcqNt0% z;wAp4GkXQ)z`nX?l@atwzi>V6A6ZkMOT`c5d8vX=+@xFHsY1^gpKVW1FT=&(veHfF zmQlH1ZurvW*lm~k5*6BT&gRDwE3G>991w~v2c^RO@j0IrHbVOpN{lXj7n7a2pLfb7 zKxfbIXYk$T>5m1+?VnCL<)^3c0V@53+hxD!onh?ZLol z-zwuvX+7V^l8$<20W%&ycjisd0g)2a@l&Uoezx|YNK(mp>^t#W zNJwbSxAWH&awV_0{lP9NWWH;Fq=JhxK|Ym(m6SBSfBFneZ^C4wW%HH*N8UtjxvAvyyQctVPZQ4skZ1%zwiEYt(UR z3|i*uqW}KX!APMqCf^$k3`e-ncBX)K=aY8QMV%*pyIbn)V^4UAKGLfi+g%_sQCVn$3zn7=%U^f!S=w?9vdcWq9)mN>Rc|-60S% zqmVW_DYhAZoj4h$tVzLAW=Yb$1;ZJzs~)Z6ohD=3nVXtr!vhoPUL%}@mQQ7r;oT6A zzE1V4Dq$Tsl49RMxOHK#!^=jiwWfQ0!?!iKzCyTVq*)|-lEO5hQ_Gk%8~2dRygk(g z!_TJRcJS*lMAwT^&oSGcC?*Q=&` zxzb4Z0!LT)JZ{gV3E_Pdw#}5HOmuCRM6M`gmTF77rcPQ%(x-d+T6g-!Rla>^pOAw7 zk=no+c!aC$JVr%h56<j0%?k{Y_yTk`DRgc`xk43k*gi1HelX`<85v2f9p$ zw+nZ3Fz?-s?if2=nva~rbp~JO$$+5qCN*ZZ;(GzxhTTtGUA19F*vN$yyLR?GL z9?Y^i9%8>(xI)q3i+u!m?*qIaOQr9gcUQpL#km}D+H|&(SvdBI&pOL3b@7e0dh9{N zLcwv=M^zPU{h|P_4Cb?`7k;@EU6&tKYxotGU*y_;Ft~oS&m6WamCq85bBf%IUX7Bb z9^Uqy^*mu(WDu&DS!_L_{x-Z^C;fsf7Pd`a`y~TCvLS8U?`8?0Gy>-c^24RGzOX{W z{r-_%-@b2r()?oCXoXTeh(*_Y#MrV}`NHhzi`E(i94t!WPWX)J8xyIUt4{4XM{T>R zjxeZ&x+PfY(>v=kT>E@Ib6HfmJjdW7j$kw+;-61yiHHkII`dC6%COU<7DH%&M;%br zq4=0Xb`2wKl%OE+LN+396?5xx)Dm@*;sTtx!;yRA3Y0N9g!;UP-fD#Wx|4o5-@o{K zai=sC+#5$|8h@!S#jR^jtW?@aseIi4I%VDUp3Es|2{}iy8K)}UA-bkvO7rRTw!@oH+JnF zC~mD^AGmNSYim!7h`tWU5K4YI7m>c@G`%h3w@;2S7D$3fD@)rat@s`8efW~I$|4FF z5Y?_7COUe-K=CIz`RfV(%|0A>u}{fm&rF}dEvFx%WKVR@1eA;mz1peuk*&GZ(w>en z52Kx5BGEusG#ES1JLBJ)u+tovX!J?OH!+7qL_G_tAxg747yO#job4S<<5$pg?kVJz zk2N5v2^-`dV`2nyT!q}}9|m@C*8+C`gm33BUer@bC>A*qu&P+RE}o2nP*KYvnj5V_ zbtoRY20miI*OlpsfYHS@pPr%8=pPLNF4|1Ht2jS)qs-CJt^LZ}%V zrVzqMB+SNiB)X0qh1?{R0@8aHtNnj#i$Gx(eH>w1phtA$hS4;hf- zBqw6v4f;R72b54I`))z$9cAO|p9l-Xm_T;GVVJS68&RiRk|cF{dXYe|21w#!{Wm(B zdAw?KU}Jf86iz2vlMvZkY_&P#q{i#IxBCCQ1WgHw>V<=Sd<4i3`oLp=6hzY;=K8`=Ecyp2(5* zPIrNcx;U`WRU=X7*bX+S;Kb6!2jrS#6Zr-bxadb}9X&DnQ5^-nJVm{8yBu?>sh>+v z7$hQ2Ry)t${#dufMco|F82D^T4vE9Y5X)HhBmPzmyIy8}O1YAVw&O4R;m+ z-<*$IAvU*+v#}!@5JX2Qo{9bQ?*Bu~=E4C_(BkDyFQP8y&VNT^lfkb1H~W_b|E_}n e|3+9B+CRMU(S+-xl7KpZoy?4_uj7r} + tools:listitem="@layout/mms_image_preview_list_item" /> + tools:listitem="@layout/mms_image_preview_list_item" /> + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/mms_preview_list_item.xml b/presentation/src/main/res/layout/mms_image_preview_list_item.xml similarity index 100% rename from presentation/src/main/res/layout/mms_preview_list_item.xml rename to presentation/src/main/res/layout/mms_image_preview_list_item.xml