From 3a9f66390665e3a158ed0a84c258ed048c3cc1bc Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 03:46:07 +0900 Subject: [PATCH 01/33] =?UTF-8?q?[UI/#216]=20=ED=95=84=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20=EC=8B=9C=EC=9E=91=20=ED=99=94=EB=A9=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...teringScreen.kt => StartFilteringRoute.kt} | 51 ++++++++++++------- .../startfiltering/StartFilteringState.kt | 5 ++ .../startfiltering/StartFilteringViewModel.kt | 18 +++++++ .../navigation/StartFilteringNavigation.kt | 4 +- .../signup/navigation/SignUpNavigation.kt | 3 +- 5 files changed, 61 insertions(+), 20 deletions(-) rename feature/src/main/java/com/terning/feature/filtering/startfiltering/{StartFilteringScreen.kt => StartFilteringRoute.kt} (71%) create mode 100644 feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringState.kt create mode 100644 feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringViewModel.kt diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringScreen.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt similarity index 71% rename from feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringScreen.kt rename to feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt index e8e1128b2..0efc87a2d 100644 --- a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt @@ -2,6 +2,7 @@ package com.terning.feature.filtering.startfiltering import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -13,40 +14,53 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton -import com.terning.core.designsystem.component.image.TerningImage import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.feature.R import kotlinx.coroutines.delay @Composable -fun StartFilteringScreen( - modifier: Modifier = Modifier, - onNextClick: () -> Unit +fun StartFilteringRoute( + onNextClick: () -> Unit, + viewModel: StartFilteringViewModel = hiltViewModel() ) { - var isVisible by remember { mutableStateOf(false) } + val state by viewModel.state.collectAsStateWithLifecycle() val configuration = LocalConfiguration.current val screenHeight = 780f / configuration.screenHeightDp LaunchedEffect(key1 = true) { delay(DELAY) - isVisible = true + viewModel.updateButtonState() } + StartFilteringScreen( + onNextClick = onNextClick, + buttonState = state.isButtonVisible, + screenHeight = screenHeight + ) + +} + +@Composable +fun StartFilteringScreen( + onNextClick: () -> Unit, + buttonState: Boolean, + screenHeight: Float +) { Box( - modifier = modifier.fillMaxSize() + modifier = Modifier.fillMaxSize() ) { Column( modifier = Modifier.fillMaxSize(), @@ -59,11 +73,12 @@ fun StartFilteringScreen( modifier = Modifier.padding(bottom = 35.dp), textAlign = TextAlign.Center ) - TerningImage( - painter = R.drawable.ic_terning_onboarding, + Image( + painter = painterResource(id = R.drawable.ic_terning_onboarding), modifier = Modifier .fillMaxWidth() - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), + contentDescription = "terning image" ) Spacer(modifier = Modifier.weight(2f)) } @@ -73,14 +88,14 @@ fun StartFilteringScreen( .padding(bottom = 12.dp) ) { AnimatedVisibility( - visible = isVisible, + visible = buttonState, enter = fadeIn(initialAlpha = 0.3f), ) { RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, text = R.string.start_filtering_button, - onButtonClick = { onNextClick() }, + onButtonClick = onNextClick, ) } } @@ -94,7 +109,9 @@ private const val DELAY: Long = 1000 fun StartFilteringScreenPreview() { TerningPointTheme { StartFilteringScreen( - onNextClick = {} + onNextClick = {}, + buttonState = true, + screenHeight = 1f ) } -} +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringState.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringState.kt new file mode 100644 index 000000000..005cb40f8 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringState.kt @@ -0,0 +1,5 @@ +package com.terning.feature.filtering.startfiltering + +data class StartFilteringState( + val isButtonVisible: Boolean = false +) \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringViewModel.kt new file mode 100644 index 000000000..3cfc06193 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringViewModel.kt @@ -0,0 +1,18 @@ +package com.terning.feature.filtering.startfiltering + +import androidx.lifecycle.ViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow + +class StartFilteringViewModel : ViewModel() { + + private val _state: MutableStateFlow = + MutableStateFlow(StartFilteringState()) + val state: StateFlow get() = _state.asStateFlow() + + fun updateButtonState() { + _state.value = _state.value.copy(isButtonVisible = true) + } + +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt index e70d98afa..f217cf39e 100644 --- a/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt @@ -8,7 +8,7 @@ import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route import com.terning.feature.filtering.filtering.navigation.navigateFilteringOne -import com.terning.feature.filtering.startfiltering.StartFilteringScreen +import com.terning.feature.filtering.startfiltering.StartFilteringRoute import kotlinx.serialization.Serializable fun NavController.navigateStartFiltering( @@ -26,7 +26,7 @@ fun NavGraphBuilder.startFilteringNavGraph( ) { composable { val args = it.toRoute() - StartFilteringScreen( + StartFilteringRoute( onNextClick = { navHostController.navigateFilteringOne(args.name) } diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt index 479e02eda..95932966e 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt @@ -8,6 +8,7 @@ import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route import com.terning.feature.filtering.filtering.navigation.navigateFilteringOne +import com.terning.feature.filtering.startfiltering.navigation.navigateStartFiltering import com.terning.feature.onboarding.signup.SignUpRoute import kotlinx.serialization.Serializable @@ -28,7 +29,7 @@ fun NavGraphBuilder.signUpNavGraph( val args = it.toRoute() SignUpRoute( authId = args.authId, - navigateToStartFiltering = { name -> navHostController.navigateFilteringOne(name) } + navigateToStartFiltering = { name -> navHostController.navigateStartFiltering(name) } ) } From b65f7732d118bfda58d12f327be1fdd6a05e05a4 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 03:54:18 +0900 Subject: [PATCH 02/33] =?UTF-8?q?[UI/#216]=20=ED=99=88=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=20=ED=99=94=EB=A9=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{StartHomeScreen.kt => StartHomeRoute.kt} | 50 +++++++++++-------- .../filtering/starthome/StartHomeState.kt | 5 ++ .../filtering/starthome/StartHomeViewModel.kt | 16 ++++++ .../navigation/StartHomeNavigation.kt | 4 +- 4 files changed, 51 insertions(+), 24 deletions(-) rename feature/src/main/java/com/terning/feature/filtering/starthome/{StartHomeScreen.kt => StartHomeRoute.kt} (79%) create mode 100644 feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeState.kt create mode 100644 feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeViewModel.kt diff --git a/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeScreen.kt b/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeRoute.kt similarity index 79% rename from feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeScreen.kt rename to feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeRoute.kt index 63b92593f..19dfda750 100644 --- a/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeRoute.kt @@ -14,9 +14,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalConfiguration @@ -24,9 +21,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.NavOptions -import androidx.navigation.compose.rememberNavController +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.LottieConstants @@ -35,29 +31,39 @@ import com.terning.core.designsystem.component.button.RectangleButton import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.feature.R -import com.terning.feature.home.home.navigation.navigateHome -import com.terning.feature.main.MainNavigator -import com.terning.feature.main.rememberMainNavigator -import com.terning.feature.onboarding.signin.navigation.SignIn import kotlinx.coroutines.delay @Composable -fun StartHomeScreen( - modifier: Modifier = Modifier, - navigateToHome: () -> Unit +fun StartHomeRoute( + navigateToHome: () -> Unit, + viewModel: StartHomeViewModel = hiltViewModel() ) { - var isVisible by remember { mutableStateOf(false) } + val state by viewModel.state.collectAsStateWithLifecycle() val configuration = LocalConfiguration.current val screenHeight = 780f / configuration.screenHeightDp LaunchedEffect(key1 = true) { delay(DELAY) - isVisible = true + viewModel.updateButtonState() } + StartHomeScreen( + navigateToHome = navigateToHome, + buttonState = state.isButtonVisible, + screenHeight = screenHeight + ) +} + +@Composable +fun StartHomeScreen( + navigateToHome: () -> Unit, + buttonState: Boolean, + screenHeight: Float +) { + Box( - modifier = modifier.fillMaxSize() + modifier = Modifier.fillMaxSize() ) { Column( modifier = Modifier.fillMaxSize(), @@ -79,23 +85,21 @@ fun StartHomeScreen( contentAlignment = Alignment.BottomCenter ) { AnimatedVisibility( - visible = isVisible, + visible = buttonState, enter = fadeIn(initialAlpha = 0.3f), ) { RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, text = R.string.start_home_next_button, - onButtonClick = { - navigateToHome() - }, + onButtonClick = navigateToHome, ) } } } } -private const val DELAY : Long = 1000 +private const val DELAY: Long = 1000 @Composable fun StartHomeLottieAnimation( @@ -122,7 +126,9 @@ fun StartHomeLottieAnimation( fun StartHomeScreenPreview() { TerningPointTheme { StartHomeScreen( - navigateToHome = {} + navigateToHome = {}, + buttonState = true, + screenHeight = 1f ) } } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeState.kt b/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeState.kt new file mode 100644 index 000000000..d847568bc --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeState.kt @@ -0,0 +1,5 @@ +package com.terning.feature.filtering.starthome + +data class StartHomeState( + val isButtonVisible: Boolean = false +) \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeViewModel.kt new file mode 100644 index 000000000..e0e038372 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/starthome/StartHomeViewModel.kt @@ -0,0 +1,16 @@ +package com.terning.feature.filtering.starthome + +import androidx.lifecycle.ViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow + +class StartHomeViewModel : ViewModel() { + private val _state: MutableStateFlow = + MutableStateFlow(StartHomeState()) + val state: StateFlow get() = _state.asStateFlow() + + fun updateButtonState() { + _state.value = _state.value.copy(isButtonVisible = true) + } +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/starthome/navigation/StartHomeNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/starthome/navigation/StartHomeNavigation.kt index ed29bcf97..fb3369a51 100644 --- a/feature/src/main/java/com/terning/feature/filtering/starthome/navigation/StartHomeNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/starthome/navigation/StartHomeNavigation.kt @@ -8,7 +8,7 @@ import androidx.navigation.NavHostController import androidx.navigation.NavOptions import androidx.navigation.compose.composable import com.terning.core.navigation.Route -import com.terning.feature.filtering.starthome.StartHomeScreen +import com.terning.feature.filtering.starthome.StartHomeRoute import com.terning.feature.home.home.navigation.navigateHome import com.terning.feature.onboarding.signin.navigation.SignIn import kotlinx.serialization.Serializable @@ -37,7 +37,7 @@ fun NavGraphBuilder.startHomeNavGraph( ExitTransition.None } ) { - StartHomeScreen(navigateToHome = { + StartHomeRoute(navigateToHome = { navHostController.navigateHome( navOptions = NavOptions.Builder().setPopUpTo( route = SignIn, From 34542d3d2c091504f40f4a57c38323d28a401863 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 04:15:27 +0900 Subject: [PATCH 03/33] =?UTF-8?q?[UI/#216]=20=ED=95=84=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20=EB=B2=84=ED=8A=BC=20UI=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/button/FilteringButton.kt | 30 +++++++--------- .../terning/core/designsystem/theme/Color.kt | 1 + .../filtering/filtering/FilteringOneScreen.kt | 34 +++++++++---------- .../component/StatusOneRadioGroup.kt | 2 +- feature/src/main/res/values/strings.xml | 2 +- 5 files changed, 32 insertions(+), 37 deletions(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt b/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt index 69560b6dc..f0c50d820 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt @@ -23,13 +23,11 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.terning.core.R -import com.terning.core.designsystem.theme.Grey400 +import com.terning.core.designsystem.theme.Grey150 +import com.terning.core.designsystem.theme.Grey200 +import com.terning.core.designsystem.theme.Grey375 import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningPointTheme -import com.terning.core.designsystem.theme.TerningSub1 -import com.terning.core.designsystem.theme.TerningSub3 -import com.terning.core.designsystem.theme.TerningSub4 -import com.terning.core.designsystem.theme.TerningSub5 import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.designsystem.theme.White import com.terning.core.util.NoRippleTheme @@ -58,19 +56,15 @@ fun FilteringButton( ) { val interactionSource = remember { MutableInteractionSource() } val isPressed by interactionSource.collectIsPressedAsState() - val backgroundColor = when { - !isSelected && !isPressed -> White - !isSelected && isPressed -> TerningSub5 - isSelected && !isPressed -> TerningSub4 - else -> TerningSub3 - } + val backgroundColor = White val textColor = when { - !isSelected -> Grey400 - else -> TerningMain + isSelected -> TerningMain + else -> Grey375 } val borderColor = when { - !isSelected -> TerningMain - else -> TerningSub1 + !isSelected && !isPressed -> Grey150 + isPressed -> Grey200 + else -> TerningMain } CompositionLocalProvider(LocalRippleTheme provides NoRippleTheme) { @@ -87,7 +81,7 @@ fun FilteringButton( color = borderColor ), shape = RoundedCornerShape(cornerRadius), - onClick = { onButtonClick() } + onClick = onButtonClick ) { Text( text = stringResource(id = text), @@ -104,14 +98,14 @@ fun FilteringButtonPreview() { TerningPointTheme { Column { FilteringButton( - isSelected = true, + isSelected = false, text = R.string.button_preview, cornerRadius = 15.dp, paddingVertical = 10.dp, onButtonClick = {} ) FilteringButton( - isSelected = false, + isSelected = true, text = R.string.button_preview, cornerRadius = 15.dp, paddingVertical = 10.dp, diff --git a/core/src/main/java/com/terning/core/designsystem/theme/Color.kt b/core/src/main/java/com/terning/core/designsystem/theme/Color.kt index bea5eb805..807bc9813 100644 --- a/core/src/main/java/com/terning/core/designsystem/theme/Color.kt +++ b/core/src/main/java/com/terning/core/designsystem/theme/Color.kt @@ -9,6 +9,7 @@ val Grey150 = Color(0xFFE9E9E9) val Grey200 = Color(0xFFDDDDDD) val Grey300 = Color(0xFFBCBCBC) val Grey350 = Color(0xFFADADAD) +val Grey375 = Color(0xFF898989) val Grey400 = Color(0xFF666666) val Grey500 = Color(0xFF373737) val Black = Color(0xFF171717) diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt index 3f4a28c8c..a8065f029 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt @@ -1,5 +1,6 @@ package com.terning.feature.filtering.filtering +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -12,11 +13,11 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.terning.core.designsystem.component.button.RectangleButton -import com.terning.core.designsystem.component.image.TerningImage import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme @@ -29,15 +30,13 @@ fun FilteringOneScreen( name: String, onNextClick: (Int) -> Unit, navigateUp: () -> Unit, - modifier: Modifier = Modifier, onButtonClick: (Int) -> Unit = {}, ) { val isButtonValid = remember { mutableStateOf(false) } - var grade by remember { mutableIntStateOf(-1) } Column( - modifier = modifier + modifier = Modifier ) { BackButtonTopAppBar( onBackButtonClick = { navigateUp() } @@ -45,12 +44,13 @@ fun FilteringOneScreen( Column( modifier = Modifier.fillMaxSize() ) { - TerningImage( - painter = R.drawable.ic_filtering_status1, - modifier = modifier.padding( - top = 20.dp, + Image( + painter = painterResource(id = R.drawable.ic_filtering_status1), + modifier = Modifier.padding( + top = 28.dp, start = 24.dp - ) + ), + contentDescription = "filtering one status" ) Text( text = stringResource( @@ -58,8 +58,8 @@ fun FilteringOneScreen( name ), style = TerningTheme.typography.title3, - modifier = modifier.padding( - top = 19.dp, + modifier = Modifier.padding( + top = 20.dp, start = 24.dp ) ) @@ -70,10 +70,10 @@ fun FilteringOneScreen( ), style = TerningTheme.typography.body5, color = Grey300, - modifier = modifier.padding( - top = 3.dp, + modifier = Modifier.padding( + top = 4.dp, start = 24.dp, - bottom = 25.dp + bottom = 24.dp ) ) StatusOneRadioGroup( @@ -86,18 +86,18 @@ fun FilteringOneScreen( Text( text = stringResource(id = R.string.filtering_status1_warning), style = TerningTheme.typography.detail3, - modifier = modifier.padding( + modifier = Modifier.padding( start = 24.dp, top = 9.dp ) ) - Spacer(modifier = modifier.weight(1f)) + Spacer(modifier = Modifier.weight(1f)) RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, text = R.string.filtering_button, onButtonClick = { onNextClick(grade) }, - modifier = modifier.padding(bottom = 12.dp), + modifier = Modifier.padding(bottom = 12.dp), isEnabled = isButtonValid.value ) } diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt index 9aa695c6a..d37dc6471 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt @@ -55,7 +55,7 @@ fun StatusOneRadioGroup( onButtonClick(index) }, cornerRadius = 15.dp, - paddingVertical = 15.dp + paddingVertical = 14.dp ) } } diff --git a/feature/src/main/res/values/strings.xml b/feature/src/main/res/values/strings.xml index 187a825d0..f900df251 100644 --- a/feature/src/main/res/values/strings.xml +++ b/feature/src/main/res/values/strings.xml @@ -100,7 +100,7 @@ 대학생 인턴, 누구보다 빠르게 시작해 보세요! 인턴이라는 좋은 기회로 단숨에 스펙업하세요! 지금까지 준비한 역량을 인턴으로 발휘해 보세요! - 사회초년생으로 도약하기 위한 마지막 단계를 경험하세요! + 사회초년생으로 도약하는 마지막 단계를 경험하세요! 희망하는 인턴 근무 기간을 선택해 주세요 선택한 기간 동안 근무할 수 있는 인턴 공고를 찾아드릴게요 1개월 ~ 3개월 From 6211928481e2a503e24687912b45e8f90c8f11db Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 04:22:29 +0900 Subject: [PATCH 04/33] =?UTF-8?q?[UI/#216]=20=ED=95=84=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20=EB=B2=84=ED=8A=BC=20UI=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filtering/FilteringThreeRoute.kt | 39 ++++++++++--------- ...eEffect.kt => FilteringThreeSideEffect.kt} | 6 +-- .../filtering/filtering/FilteringTwoScreen.kt | 32 +++++++-------- .../filtering/filtering/FilteringViewModel.kt | 8 ++-- 4 files changed, 43 insertions(+), 42 deletions(-) rename feature/src/main/java/com/terning/feature/filtering/filtering/{FilteringSideEffect.kt => FilteringThreeSideEffect.kt} (55%) diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt index b51640a80..c6b5d9c79 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt @@ -1,5 +1,6 @@ package com.terning.feature.filtering.filtering +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -13,6 +14,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -21,7 +23,6 @@ import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.flowWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton import com.terning.core.designsystem.component.datepicker.DatePickerUI -import com.terning.core.designsystem.component.image.TerningImage import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme @@ -61,8 +62,8 @@ fun FilteringThreeRoute( viewModel.sideEffects.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) .collect { sideEffect -> when (sideEffect) { - is FilteringSideEffect.NavigateToStartHome -> navigateToStartHome() - is FilteringSideEffect.ShowToast -> context.toast(sideEffect.message) + is FilteringThreeSideEffect.NavigateToStartHome -> navigateToStartHome() + is FilteringThreeSideEffect.ShowToast -> context.toast(sideEffect.message) } } } @@ -79,7 +80,6 @@ fun FilteringThreeRoute( @Composable fun FilteringThreeScreen( - modifier: Modifier = Modifier, navigateUp: () -> Unit, chosenYear: Int, chosenMonth: Int, @@ -88,7 +88,7 @@ fun FilteringThreeScreen( onNextClick: () -> Unit, ) { Column( - modifier = modifier, + modifier = Modifier, ) { BackButtonTopAppBar( onBackButtonClick = { navigateUp() } @@ -96,18 +96,19 @@ fun FilteringThreeScreen( Column( modifier = Modifier.fillMaxSize() ) { - TerningImage( - painter = R.drawable.ic_filtering_status3, - modifier = modifier.padding( - top = 20.dp, + Image( + painter = painterResource(id = R.drawable.ic_filtering_status3), + modifier = Modifier.padding( + top = 28.dp, start = 24.dp - ) + ), + contentDescription = "filtering three status" ) Text( text = stringResource(id = R.string.filtering_status3_title), style = TerningTheme.typography.title3, - modifier = modifier.padding( - top = 19.dp, + modifier = Modifier.padding( + top = 20.dp, start = 24.dp ) ) @@ -115,26 +116,26 @@ fun FilteringThreeScreen( text = stringResource(id = R.string.filtering_status3_sub), style = TerningTheme.typography.body5, color = Grey300, - modifier = modifier.padding( - top = 3.dp, + modifier = Modifier.padding( + top = 4.dp, start = 24.dp, - bottom = 25.dp + bottom = 24.dp ) ) - Spacer(modifier = modifier.weight(1f)) + Spacer(modifier = Modifier.weight(1f)) DatePickerUI( chosenYear = chosenYear, chosenMonth = chosenMonth, onYearChosen = { onYearChosen(it) }, onMonthChosen = { onMonthChosen(it) }, ) - Spacer(modifier = modifier.weight(3f)) + Spacer(modifier = Modifier.weight(3f)) RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, text = R.string.filtering_button, - onButtonClick = { onNextClick() }, - modifier = modifier.padding(bottom = 12.dp), + onButtonClick = onNextClick, + modifier = Modifier.padding(bottom = 12.dp), ) } } diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringSideEffect.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeSideEffect.kt similarity index 55% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringSideEffect.kt rename to feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeSideEffect.kt index 52c9b3a68..da8d3dfa8 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringSideEffect.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeSideEffect.kt @@ -2,7 +2,7 @@ package com.terning.feature.filtering.filtering import androidx.annotation.StringRes -sealed class FilteringSideEffect { - data object NavigateToStartHome : FilteringSideEffect() - data class ShowToast(@StringRes val message: Int) : FilteringSideEffect() +sealed class FilteringThreeSideEffect { + data object NavigateToStartHome : FilteringThreeSideEffect() + data class ShowToast(@StringRes val message: Int) : FilteringThreeSideEffect() } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt index e66df12e8..2f1e8c643 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt @@ -1,5 +1,6 @@ package com.terning.feature.filtering.filtering +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -12,11 +13,11 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.terning.core.designsystem.component.button.RectangleButton -import com.terning.core.designsystem.component.image.TerningImage import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme @@ -29,15 +30,13 @@ fun FilteringTwoScreen( grade: Int, onNextClick: (Int, Int) -> Unit, navigateUp: () -> Unit, - modifier: Modifier = Modifier, onButtonClick: (Int) -> Unit = {}, ) { val isButtonValid = remember { mutableStateOf(false) } - var workingPeriod by remember { mutableIntStateOf(-1) } Column( - modifier = modifier + modifier = Modifier ) { BackButtonTopAppBar( onBackButtonClick = { navigateUp() } @@ -45,18 +44,19 @@ fun FilteringTwoScreen( Column( modifier = Modifier.fillMaxSize() ) { - TerningImage( - painter = R.drawable.ic_filtering_status2, - modifier = modifier.padding( - top = 20.dp, + Image( + painter = painterResource(id = R.drawable.ic_filtering_status2), + modifier = Modifier.padding( + top = 28.dp, start = 24.dp - ) + ), + contentDescription = "filtering two status" ) Text( text = stringResource(id = R.string.filtering_status2_title), style = TerningTheme.typography.title3, - modifier = modifier.padding( - top = 19.dp, + modifier = Modifier.padding( + top = 20.dp, start = 24.dp ) ) @@ -64,10 +64,10 @@ fun FilteringTwoScreen( text = stringResource(id = R.string.filtering_status2_sub), style = TerningTheme.typography.body5, color = Grey300, - modifier = modifier.padding( - top = 3.dp, + modifier = Modifier.padding( + top = 4.dp, start = 24.dp, - bottom = 25.dp + bottom = 24.dp ) ) StatusTwoRadioGroup( @@ -77,13 +77,13 @@ fun FilteringTwoScreen( workingPeriod = index } ) - Spacer(modifier = modifier.weight(1f)) + Spacer(modifier = Modifier.weight(1f)) RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, text = R.string.filtering_button, onButtonClick = { onNextClick(grade, workingPeriod) }, - modifier = modifier.padding(bottom = 12.dp), + modifier = Modifier.padding(bottom = 12.dp), isEnabled = isButtonValid.value ) } diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt index 692117fab..b4b85b1a5 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt @@ -25,8 +25,8 @@ class FilteringViewModel @Inject constructor( private val _state = MutableStateFlow(FilteringState()) val state: StateFlow get() = _state.asStateFlow() - private val _sideEffects = MutableSharedFlow() - val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() + private val _sideEffects = MutableSharedFlow() + val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() fun fetchGrade(grade: Int) { _state.value = _state.value.copy(grade = grade) @@ -57,9 +57,9 @@ class FilteringViewModel @Inject constructor( ) } ).onSuccess { - _sideEffects.emit(FilteringSideEffect.NavigateToStartHome) + _sideEffects.emit(FilteringThreeSideEffect.NavigateToStartHome) }.onFailure { - _sideEffects.emit(FilteringSideEffect.ShowToast(R.string.server_failure)) + _sideEffects.emit(FilteringThreeSideEffect.ShowToast(R.string.server_failure)) } } } From df3752641887484aa06e31606fa58dda418c9e17 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 05:59:25 +0900 Subject: [PATCH 05/33] =?UTF-8?q?[UI/#218]=20YearMonthPicker=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/build.gradle.kts | 3 +- .../filtering/FilteringThreeRoute.kt | 19 +- .../filtering/component/YearMonthPicker.kt | 162 ++++++++++++++++++ gradle/libs.versions.toml | 6 +- 4 files changed, 179 insertions(+), 11 deletions(-) create mode 100644 feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt diff --git a/feature/build.gradle.kts b/feature/build.gradle.kts index 6b56a6904..00c9bc09d 100644 --- a/feature/build.gradle.kts +++ b/feature/build.gradle.kts @@ -70,6 +70,7 @@ dependencies { implementation(libs.hilt.compiler) implementation(libs.androidx.lifecycle.runtime.compose.android) implementation(libs.androidx.compose.saveable) + implementation(libs.androidx.compose.material) // KspDependencies ksp(libs.hilt.android.compiler) @@ -94,11 +95,11 @@ dependencies { implementation(libs.accompanist.systemuicontroller) implementation (libs.androidx.core.splashscreen) implementation (libs.androidx.browser) + implementation(libs.compose.date.time.picker) // Compose Preview implementation(libs.compose.ui.tooling) // KakaoDependencies implementation(libs.kakao.user) - } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt index c6b5d9c79..387dc519a 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt @@ -22,13 +22,13 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.flowWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton -import com.terning.core.designsystem.component.datepicker.DatePickerUI import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.extension.toast import com.terning.feature.R +import com.terning.feature.filtering.filtering.component.YearMonthPicker import java.util.Calendar @Composable @@ -119,17 +119,20 @@ fun FilteringThreeScreen( modifier = Modifier.padding( top = 4.dp, start = 24.dp, - bottom = 24.dp ) ) Spacer(modifier = Modifier.weight(1f)) - DatePickerUI( - chosenYear = chosenYear, - chosenMonth = chosenMonth, - onYearChosen = { onYearChosen(it) }, - onMonthChosen = { onMonthChosen(it) }, + YearMonthPicker( + years = (2010..2030).map { it.toString() }, + months = (1..12).map { it.toString() }, ) - Spacer(modifier = Modifier.weight(3f)) +// DatePickerUI( +// chosenYear = chosenYear, +// chosenMonth = chosenMonth, +// onYearChosen = { onYearChosen(it) }, +// onMonthChosen = { onMonthChosen(it) }, +// ) + Spacer(modifier = Modifier.weight(6f)) RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt b/feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt new file mode 100644 index 000000000..12e46a0b6 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt @@ -0,0 +1,162 @@ +package com.terning.feature.filtering.filtering.component + +import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.dp +import com.kez.picker.PickerState +import com.kez.picker.rememberPickerState +import com.terning.core.designsystem.theme.Grey300 +import com.terning.core.designsystem.theme.Grey500 +import com.terning.core.designsystem.theme.TerningMain +import com.terning.core.designsystem.theme.TerningTheme +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map + +@Composable +fun YearMonthPicker( + years: List, + months: List, + modifier: Modifier = Modifier, + yearPickerState: PickerState = rememberPickerState(), + monthPickerState: PickerState = rememberPickerState(), + startYearIndex: Int = 5, + startMonthIndex: Int = 2, +) { + Row( + modifier = modifier + .fillMaxWidth() + .padding(95.dp), + horizontalArrangement = Arrangement.SpaceBetween + ) { + DatePicker( + modifier = Modifier.weight(1f), + pickerState = yearPickerState, + items = years, + startIndex = startYearIndex, + ) + Spacer(modifier = Modifier.width(25.dp)) + DatePicker( + modifier = Modifier.weight(1f), + pickerState = monthPickerState, + items = months, + startIndex = startMonthIndex, + ) + } +} + +@Composable +fun DatePicker( + items: List, + modifier: Modifier = Modifier, + pickerState: PickerState = rememberPickerState(), + startIndex: Int = 0, + visibleItemCount: Int = 3, +) { + var itemHeightPixel by remember { mutableIntStateOf(0) } + val itemHeightDp = with(LocalDensity.current) { itemHeightPixel.toDp() } + + val visibleItemsMiddle = visibleItemCount / 2 + val scrollState = rememberLazyListState(initialFirstVisibleItemIndex = startIndex) + val flingBehavior = rememberSnapFlingBehavior(lazyListState = scrollState) + + LaunchedEffect(itemHeightPixel) { + if (itemHeightPixel > 0) scrollState.scrollToItem(startIndex) + } + + LaunchedEffect(scrollState) { + snapshotFlow { scrollState.firstVisibleItemIndex } + .map { index -> items.getOrNull(index) } + .distinctUntilChanged() + .collect { item -> + if (item != null) { + pickerState.selectedItem = item + } + } + } + + Box( + modifier = modifier + ) { + LazyColumn( + modifier = Modifier + .fillMaxWidth() + .height(itemHeightDp * visibleItemCount), + flingBehavior = flingBehavior, + state = scrollState, + horizontalAlignment = Alignment.CenterHorizontally + ) { + items(visibleItemsMiddle) { + Spacer(modifier = Modifier.height(itemHeightDp)) + } + items(items.size) { index -> + DatePickerContent( + modifier = Modifier + .onSizeChanged { intSize: IntSize -> itemHeightPixel = intSize.height }, + text = items[index], + color = if (pickerState.selectedItem == items[index]) Grey500 else Grey300 + ) + } + items(visibleItemsMiddle) { + Spacer(modifier = Modifier.height(itemHeightDp)) + } + } + HorizontalDivider( + modifier = Modifier + .offset(y = itemHeightDp * visibleItemsMiddle) + .padding(horizontal = 7.dp), + color = TerningMain, + thickness = 1.dp + ) + HorizontalDivider( + modifier = Modifier + .offset(y = itemHeightDp * (visibleItemsMiddle + 1)) + .padding(horizontal = 7.dp), + color = TerningMain, + thickness = 1.dp + ) + } +} + +@Composable +fun DatePickerContent( + color: Color, + text: String, + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier.padding(vertical = 11.dp) + ) { + Text( + text = text, + textAlign = TextAlign.Center, + style = TerningTheme.typography.title3, + color = color, + ) + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 33b6c185d..27a38941f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,11 +23,10 @@ ksp = "1.9.0-1.0.12" ## Compose androidxComposeBom = "2024.04.01" -androidxComposeCompiler = "1.5.14" androidxComposeMaterial3 = "1.2.1" composeNavigation = "2.8.0-beta04" composeSavable = "1.4.3" -composeFlowRow = "0.30.0" +composeDateTimePicker = "0.0.2" ## Hilt hilt = "2.48.1" @@ -92,11 +91,13 @@ browser = "1.4.0" ## dokka dokka = "1.9.0" +composeMaterial = "1.3.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" } +compose-date-time-picker = { module = "io.github.kez-lab:compose-date-time-picker", version.ref = "composeDateTimePicker" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } @@ -171,6 +172,7 @@ kakao-user = {group = "com.kakao.sdk", name = "v2-user", version.ref = "kakaoVer process-phoenix = {group = "com.jakewharton", name = "process-phoenix", version.ref = "processPhoenix"} accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanistSystemuicontroller" } +androidx-compose-material = { group = "androidx.wear.compose", name = "compose-material", version.ref = "composeMaterial" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From 90f1c9e2c2bf98806bedb1ea9b09a60e78ccb419 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 06:09:45 +0900 Subject: [PATCH 06/33] =?UTF-8?q?[MOVE/#218]=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/build.gradle.kts | 1 - .../FilteringOneScreen.kt | 4 ++-- .../component/StatusOneRadioGroup.kt | 2 +- .../navigation/FilteringOneNavigation.kt | 5 +++-- .../FilteringState.kt | 2 +- .../FilteringThreeRoute.kt | 4 ++-- .../FilteringThreeSideEffect.kt | 2 +- .../FilteringViewModel.kt | 2 +- .../component/YearMonthPicker.kt | 14 +++++++++++--- .../navigation/FilteringThreeNavigation.kt | 4 ++-- .../FilteringTwoScreen.kt | 4 ++-- .../component/StatusTwoRadioGroup.kt | 2 +- .../navigation/FilteringTwoNavigation.kt | 5 +++-- .../navigation/StartFilteringNavigation.kt | 2 +- .../java/com/terning/feature/main/MainScreen.kt | 6 +++--- .../signup/navigation/SignUpNavigation.kt | 1 - gradle/libs.versions.toml | 2 -- 17 files changed, 34 insertions(+), 28 deletions(-) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringone}/FilteringOneScreen.kt (96%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringone}/component/StatusOneRadioGroup.kt (97%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringone}/navigation/FilteringOneNavigation.kt (82%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringthree}/FilteringState.kt (73%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringthree}/FilteringThreeRoute.kt (97%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringthree}/FilteringThreeSideEffect.kt (81%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringthree}/FilteringViewModel.kt (97%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringthree}/component/YearMonthPicker.kt (95%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringthree}/navigation/FilteringThreeNavigation.kt (89%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringtwo}/FilteringTwoScreen.kt (96%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringtwo}/component/StatusTwoRadioGroup.kt (97%) rename feature/src/main/java/com/terning/feature/filtering/{filtering => filteringtwo}/navigation/FilteringTwoNavigation.kt (83%) diff --git a/feature/build.gradle.kts b/feature/build.gradle.kts index 00c9bc09d..e157e7816 100644 --- a/feature/build.gradle.kts +++ b/feature/build.gradle.kts @@ -95,7 +95,6 @@ dependencies { implementation(libs.accompanist.systemuicontroller) implementation (libs.androidx.core.splashscreen) implementation (libs.androidx.browser) - implementation(libs.compose.date.time.picker) // Compose Preview implementation(libs.compose.ui.tooling) diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneScreen.kt similarity index 96% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneScreen.kt index a8065f029..8d0d3afcc 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringOneScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneScreen.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering +package com.terning.feature.filtering.filteringone import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column @@ -23,7 +23,7 @@ import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.feature.R -import com.terning.feature.filtering.filtering.component.StatusOneRadioGroup +import com.terning.feature.filtering.filteringone.component.StatusOneRadioGroup @Composable fun FilteringOneScreen( diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/component/StatusOneRadioGroup.kt similarity index 97% rename from feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringone/component/StatusOneRadioGroup.kt index d37dc6471..80608aa73 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusOneRadioGroup.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/component/StatusOneRadioGroup.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering.component +package com.terning.feature.filtering.filteringone.component import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.fillMaxWidth diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringOneNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt similarity index 82% rename from feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringOneNavigation.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt index 266137688..e5f25807e 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringOneNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering.navigation +package com.terning.feature.filtering.filteringone.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder @@ -7,7 +7,8 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filtering.FilteringOneScreen +import com.terning.feature.filtering.filteringone.FilteringOneScreen +import com.terning.feature.filtering.filteringtwo.navigation.navigateFilteringTwo import kotlinx.serialization.Serializable fun NavController.navigateFilteringOne( diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringState.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringState.kt similarity index 73% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringState.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringState.kt index b35e6fbd2..7f75fc847 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringState.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringState.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering +package com.terning.feature.filtering.filteringthree data class FilteringState( val grade: Int = -1, diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt similarity index 97% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index 387dc519a..faeb3e310 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering +package com.terning.feature.filtering.filteringthree import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column @@ -28,7 +28,7 @@ import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.extension.toast import com.terning.feature.R -import com.terning.feature.filtering.filtering.component.YearMonthPicker +import com.terning.feature.filtering.filteringthree.component.YearMonthPicker import java.util.Calendar @Composable diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeSideEffect.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt similarity index 81% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeSideEffect.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt index da8d3dfa8..42cb61d6f 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringThreeSideEffect.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering +package com.terning.feature.filtering.filteringthree import androidx.annotation.StringRes diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt similarity index 97% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt index b4b85b1a5..7b5a64cf2 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringViewModel.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering +package com.terning.feature.filtering.filteringthree import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt similarity index 95% rename from feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt index 12e46a0b6..87e8dd41a 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/component/YearMonthPicker.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering.component +package com.terning.feature.filtering.filteringthree.component import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior import androidx.compose.foundation.layout.Arrangement @@ -29,14 +29,22 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp -import com.kez.picker.PickerState -import com.kez.picker.rememberPickerState import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.Grey500 import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningTheme import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map +import androidx.compose.runtime.mutableStateOf + +class PickerState { + var selectedItem by mutableStateOf("") +} + +@Composable +fun rememberPickerState() = remember { + PickerState() +} @Composable fun YearMonthPicker( diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringThreeNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt similarity index 89% rename from feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringThreeNavigation.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt index 759c65c4d..57580223c 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringThreeNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering.navigation +package com.terning.feature.filtering.filteringthree.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder @@ -7,7 +7,7 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filtering.FilteringThreeRoute +import com.terning.feature.filtering.filteringthree.FilteringThreeRoute import com.terning.feature.filtering.starthome.navigation.navigateStartHome import kotlinx.serialization.Serializable diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoScreen.kt similarity index 96% rename from feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoScreen.kt index 2f1e8c643..7f2849ce2 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/FilteringTwoScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoScreen.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering +package com.terning.feature.filtering.filteringtwo import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column @@ -23,7 +23,7 @@ import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.feature.R -import com.terning.feature.filtering.filtering.component.StatusTwoRadioGroup +import com.terning.feature.filtering.filteringtwo.component.StatusTwoRadioGroup @Composable fun FilteringTwoScreen( diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusTwoRadioGroup.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/component/StatusTwoRadioGroup.kt similarity index 97% rename from feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusTwoRadioGroup.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringtwo/component/StatusTwoRadioGroup.kt index 6d42ee42a..ed06f467b 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/component/StatusTwoRadioGroup.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/component/StatusTwoRadioGroup.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering.component +package com.terning.feature.filtering.filteringtwo.component import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.fillMaxWidth diff --git a/feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringTwoNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt similarity index 83% rename from feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringTwoNavigation.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt index 0bde2ac5e..ab417cdab 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filtering/navigation/FilteringTwoNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt @@ -1,4 +1,4 @@ -package com.terning.feature.filtering.filtering.navigation +package com.terning.feature.filtering.filteringtwo.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder @@ -7,7 +7,8 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filtering.FilteringTwoScreen +import com.terning.feature.filtering.filteringtwo.FilteringTwoScreen +import com.terning.feature.filtering.filteringthree.navigation.navigateFilteringThree import kotlinx.serialization.Serializable fun NavController.navigateFilteringTwo( diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt index f217cf39e..12b8a4cdc 100644 --- a/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/navigation/StartFilteringNavigation.kt @@ -7,7 +7,7 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filtering.navigation.navigateFilteringOne +import com.terning.feature.filtering.filteringone.navigation.navigateFilteringOne import com.terning.feature.filtering.startfiltering.StartFilteringRoute import kotlinx.serialization.Serializable diff --git a/feature/src/main/java/com/terning/feature/main/MainScreen.kt b/feature/src/main/java/com/terning/feature/main/MainScreen.kt index e5fbb5d02..f4df34f39 100644 --- a/feature/src/main/java/com/terning/feature/main/MainScreen.kt +++ b/feature/src/main/java/com/terning/feature/main/MainScreen.kt @@ -25,9 +25,9 @@ import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.White import com.terning.core.util.NoRippleInteractionSource import com.terning.feature.calendar.calendar.navigation.calendarNavGraph -import com.terning.feature.filtering.filtering.navigation.filteringOneNavGraph -import com.terning.feature.filtering.filtering.navigation.filteringThreeNavGraph -import com.terning.feature.filtering.filtering.navigation.filteringTwoNavGraph +import com.terning.feature.filtering.filteringone.navigation.filteringOneNavGraph +import com.terning.feature.filtering.filteringthree.navigation.filteringThreeNavGraph +import com.terning.feature.filtering.filteringtwo.navigation.filteringTwoNavGraph import com.terning.feature.filtering.startfiltering.navigation.startFilteringNavGraph import com.terning.feature.filtering.starthome.navigation.startHomeNavGraph import com.terning.feature.home.changefilter.navigation.changeFilterNavGraph diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt index 95932966e..ff8c1978e 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/navigation/SignUpNavigation.kt @@ -7,7 +7,6 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filtering.navigation.navigateFilteringOne import com.terning.feature.filtering.startfiltering.navigation.navigateStartFiltering import com.terning.feature.onboarding.signup.SignUpRoute import kotlinx.serialization.Serializable diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 27a38941f..df2ce469f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -26,7 +26,6 @@ androidxComposeBom = "2024.04.01" androidxComposeMaterial3 = "1.2.1" composeNavigation = "2.8.0-beta04" composeSavable = "1.4.3" -composeDateTimePicker = "0.0.2" ## Hilt hilt = "2.48.1" @@ -97,7 +96,6 @@ composeMaterial = "1.3.1" androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" } -compose-date-time-picker = { module = "io.github.kez-lab:compose-date-time-picker", version.ref = "composeDateTimePicker" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } From 8b6571514953f5797f5ddd9fdce7745b394638d9 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 06:15:48 +0900 Subject: [PATCH 07/33] =?UTF-8?q?[DEL/#218]=20=EC=95=88=20=EC=93=B0?= =?UTF-8?q?=EB=8A=94=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/build.gradle.kts | 1 - .../filtering/filteringthree/component/YearMonthPicker.kt | 4 +--- gradle/libs.versions.toml | 2 -- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/feature/build.gradle.kts b/feature/build.gradle.kts index e157e7816..781cf168f 100644 --- a/feature/build.gradle.kts +++ b/feature/build.gradle.kts @@ -70,7 +70,6 @@ dependencies { implementation(libs.hilt.compiler) implementation(libs.androidx.lifecycle.runtime.compose.android) implementation(libs.androidx.compose.saveable) - implementation(libs.androidx.compose.material) // KspDependencies ksp(libs.hilt.android.compiler) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt index 87e8dd41a..fcf0bf129 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt @@ -42,9 +42,7 @@ class PickerState { } @Composable -fun rememberPickerState() = remember { - PickerState() -} +fun rememberPickerState() = remember { PickerState() } @Composable fun YearMonthPicker( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index df2ce469f..2d60e8d41 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -90,7 +90,6 @@ browser = "1.4.0" ## dokka dokka = "1.9.0" -composeMaterial = "1.3.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" } @@ -170,7 +169,6 @@ kakao-user = {group = "com.kakao.sdk", name = "v2-user", version.ref = "kakaoVer process-phoenix = {group = "com.jakewharton", name = "process-phoenix", version.ref = "processPhoenix"} accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanistSystemuicontroller" } -androidx-compose-material = { group = "androidx.wear.compose", name = "compose-material", version.ref = "composeMaterial" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From 9b9c7d2620ceae7c1b561e3c47ed4bfb1d266506 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 06:48:50 +0900 Subject: [PATCH 08/33] =?UTF-8?q?[FEAT/#218]=20=EB=8D=B0=EC=9D=B4=ED=8A=B8?= =?UTF-8?q?=ED=94=BC=EC=BB=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filteringthree/FilteringThreeRoute.kt | 16 ++--- .../component/YearMonthPicker.kt | 58 ++++++++++++++----- 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index faeb3e310..e8e505b7f 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -43,7 +43,7 @@ fun FilteringThreeRoute( val lifecycleOwner = LocalLifecycleOwner.current val currentYear = Calendar.getInstance().get(Calendar.YEAR) - val currentMonth = Calendar.getInstance().get(Calendar.MONTH) + val currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1 var chosenYear by remember { mutableIntStateOf(currentYear) } var chosenMonth by remember { mutableIntStateOf(currentMonth) } @@ -123,16 +123,12 @@ fun FilteringThreeScreen( ) Spacer(modifier = Modifier.weight(1f)) YearMonthPicker( - years = (2010..2030).map { it.toString() }, - months = (1..12).map { it.toString() }, + chosenYear = chosenYear, + chosenMonth = chosenMonth, + onYearChosen = { onYearChosen(it) }, + onMonthChosen = { onMonthChosen(it) }, ) -// DatePickerUI( -// chosenYear = chosenYear, -// chosenMonth = chosenMonth, -// onYearChosen = { onYearChosen(it) }, -// onMonthChosen = { onMonthChosen(it) }, -// ) - Spacer(modifier = Modifier.weight(6f)) + Spacer(modifier = Modifier.weight(7f)) RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt index fcf0bf129..4b790121a 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt @@ -18,6 +18,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow @@ -35,7 +36,18 @@ import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningTheme import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map -import androidx.compose.runtime.mutableStateOf +import okhttp3.internal.toImmutableList + +private const val START_YEAR = 2010 +private const val END_YEAR = 2030 +private const val START_MONTH = 1 +private const val END_MONTH = 12 + +private val years = + (START_YEAR..END_YEAR).map { "${it}년" }.toImmutableList() + +private val months = + (START_MONTH..END_MONTH).map { "${it}월" }.toImmutableList() class PickerState { var selectedItem by mutableStateOf("") @@ -46,32 +58,50 @@ fun rememberPickerState() = remember { PickerState() } @Composable fun YearMonthPicker( - years: List, - months: List, modifier: Modifier = Modifier, - yearPickerState: PickerState = rememberPickerState(), - monthPickerState: PickerState = rememberPickerState(), - startYearIndex: Int = 5, - startMonthIndex: Int = 2, + chosenYear: Int, + chosenMonth: Int, + onYearChosen: (Int) -> Unit, + onMonthChosen: (Int) -> Unit, ) { + val yearPickerState = rememberPickerState() + val monthPickerState = rememberPickerState() + + val startYearIndex = years.indexOf("${chosenYear}년").takeIf { it >= 0 } ?: 0 + val startMonthIndex = months.indexOf("${chosenMonth}월").takeIf { it >= 0 } ?: 0 + + LaunchedEffect(chosenYear) { + yearPickerState.selectedItem = "${chosenYear}년" + } + + LaunchedEffect(chosenMonth) { + monthPickerState.selectedItem = "${chosenMonth}월" + } + Row( modifier = modifier .fillMaxWidth() - .padding(95.dp), - horizontalArrangement = Arrangement.SpaceBetween + .padding(horizontal = 95.dp), + horizontalArrangement = Arrangement.Center ) { DatePicker( modifier = Modifier.weight(1f), pickerState = yearPickerState, items = years, startIndex = startYearIndex, + onItemSelected = { year -> + onYearChosen(year.dropLast(1).toInt()) + } ) - Spacer(modifier = Modifier.width(25.dp)) + Spacer(modifier = Modifier.width(18.dp)) DatePicker( modifier = Modifier.weight(1f), pickerState = monthPickerState, items = months, startIndex = startMonthIndex, + onItemSelected = { month -> + onMonthChosen(month.dropLast(1).toInt()) + } ) } } @@ -83,6 +113,7 @@ fun DatePicker( pickerState: PickerState = rememberPickerState(), startIndex: Int = 0, visibleItemCount: Int = 3, + onItemSelected: (String) -> Unit ) { var itemHeightPixel by remember { mutableIntStateOf(0) } val itemHeightDp = with(LocalDensity.current) { itemHeightPixel.toDp() } @@ -100,8 +131,9 @@ fun DatePicker( .map { index -> items.getOrNull(index) } .distinctUntilChanged() .collect { item -> - if (item != null) { - pickerState.selectedItem = item + item?.let { + pickerState.selectedItem = it + onItemSelected(it) } } } @@ -165,4 +197,4 @@ fun DatePickerContent( color = color, ) } -} \ No newline at end of file +} From 0a643bf64f2f3f5272e2071e337e29185bc8a2c2 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 06:56:25 +0900 Subject: [PATCH 09/33] =?UTF-8?q?[FEAT/#218]=20=EC=BA=98=EB=A6=B0=EB=8D=94?= =?UTF-8?q?=20=ED=99=95=EC=9E=A5=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/terning/core/extension/CalendarExt.kt | 7 +++++++ .../main/java/com/terning/core/util/CalendarDefaults.kt | 8 ++++++++ .../filteringthree/component/YearMonthPicker.kt | 9 ++++----- 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 core/src/main/java/com/terning/core/extension/CalendarExt.kt create mode 100644 core/src/main/java/com/terning/core/util/CalendarDefaults.kt diff --git a/core/src/main/java/com/terning/core/extension/CalendarExt.kt b/core/src/main/java/com/terning/core/extension/CalendarExt.kt new file mode 100644 index 000000000..1bbc06b8a --- /dev/null +++ b/core/src/main/java/com/terning/core/extension/CalendarExt.kt @@ -0,0 +1,7 @@ +package com.terning.core.extension + +import java.util.Calendar + +val Calendar.currentYear: Int get() = get(Calendar.YEAR) + +val Calendar.currentMonth: Int get() = get(Calendar.MONTH) + 1 \ No newline at end of file diff --git a/core/src/main/java/com/terning/core/util/CalendarDefaults.kt b/core/src/main/java/com/terning/core/util/CalendarDefaults.kt new file mode 100644 index 000000000..2d0cb8355 --- /dev/null +++ b/core/src/main/java/com/terning/core/util/CalendarDefaults.kt @@ -0,0 +1,8 @@ +package com.terning.core.util + +object CalendarDefaults { + const val START_YEAR = 2010 + const val END_YEAR = 2030 + const val START_MONTH = 1 + const val END_MONTH = 12 +} diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt index 4b790121a..d61c06c98 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/component/YearMonthPicker.kt @@ -34,15 +34,14 @@ import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.Grey500 import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningTheme +import com.terning.core.util.CalendarDefaults.END_MONTH +import com.terning.core.util.CalendarDefaults.END_YEAR +import com.terning.core.util.CalendarDefaults.START_MONTH +import com.terning.core.util.CalendarDefaults.START_YEAR import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import okhttp3.internal.toImmutableList -private const val START_YEAR = 2010 -private const val END_YEAR = 2030 -private const val START_MONTH = 1 -private const val END_MONTH = 12 - private val years = (START_YEAR..END_YEAR).map { "${it}년" }.toImmutableList() From a3c673a81649580058bfba8e5e8ca195443cc479 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 07:01:34 +0900 Subject: [PATCH 10/33] =?UTF-8?q?[FEAT/#218]=20=EC=BA=98=EB=A6=B0=EB=8D=94?= =?UTF-8?q?=20=ED=99=95=EC=9E=A5=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/filtering/filteringthree/FilteringThreeRoute.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index e8e505b7f..969475c00 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -26,6 +26,8 @@ import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme +import com.terning.core.extension.currentMonth +import com.terning.core.extension.currentYear import com.terning.core.extension.toast import com.terning.feature.R import com.terning.feature.filtering.filteringthree.component.YearMonthPicker @@ -42,8 +44,8 @@ fun FilteringThreeRoute( val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current - val currentYear = Calendar.getInstance().get(Calendar.YEAR) - val currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1 + val currentYear = Calendar.getInstance().currentYear + val currentMonth = Calendar.getInstance().currentMonth var chosenYear by remember { mutableIntStateOf(currentYear) } var chosenMonth by remember { mutableIntStateOf(currentMonth) } From de564894a21f2ffdedbb78052088c877b7f7cc84 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 07:12:56 +0900 Subject: [PATCH 11/33] =?UTF-8?q?[FEAT/#218]=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filteringthree/FilteringThreeRoute.kt | 39 ++++++++++--------- .../FilteringThreeSideEffect.kt | 1 + .../filteringthree/FilteringViewModel.kt | 10 +++-- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index 969475c00..54eeafa9b 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -9,9 +9,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource @@ -20,6 +17,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner +import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar @@ -41,23 +39,25 @@ fun FilteringThreeRoute( navigateToStartHome: () -> Unit, viewModel: FilteringViewModel = hiltViewModel(), ) { + val state by viewModel.state.collectAsStateWithLifecycle() + val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current - val currentYear = Calendar.getInstance().currentYear - val currentMonth = Calendar.getInstance().currentMonth - - var chosenYear by remember { mutableIntStateOf(currentYear) } - var chosenMonth by remember { mutableIntStateOf(currentMonth) } - LaunchedEffect(key1 = true) { - viewModel.fetchGrade(grade = grade) - viewModel.fetchWorkingPeriod(workingPeriod = workingPeriod) + with(viewModel) { + updateGrade(grade = grade) + updateWorkingPeriod(workingPeriod = workingPeriod) + updateStartYear(startYear = Calendar.getInstance().currentYear) + updateStartMonth(startMonth = Calendar.getInstance().currentMonth) + } } - LaunchedEffect(key1 = chosenYear, key2 = chosenMonth) { - viewModel.fetchStartYear(chosenYear) - viewModel.fetchStartMonth(chosenMonth) + LaunchedEffect(key1 = state.startYear, key2 = state.startMonth) { + with(viewModel) { + updateStartYear(state.startYear) + updateStartMonth(state.startMonth) + } } LaunchedEffect(viewModel.sideEffects, lifecycleOwner) { @@ -66,17 +66,18 @@ fun FilteringThreeRoute( when (sideEffect) { is FilteringThreeSideEffect.NavigateToStartHome -> navigateToStartHome() is FilteringThreeSideEffect.ShowToast -> context.toast(sideEffect.message) + is FilteringThreeSideEffect.NavigateUp -> navigateUp() } } } FilteringThreeScreen( - navigateUp = { navigateUp() }, - chosenYear = chosenYear, - chosenMonth = chosenMonth, + navigateUp = { viewModel.navigateUp() }, + chosenYear = state.startYear, + chosenMonth = state.startMonth, onNextClick = { viewModel.postFilteringWithServer() }, - onYearChosen = { chosenYear = it }, - onMonthChosen = { chosenMonth = it } + onYearChosen = { viewModel.updateStartYear(it) }, + onMonthChosen = { viewModel.updateStartMonth(it) } ) } diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt index 42cb61d6f..3b035dc7c 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeSideEffect.kt @@ -5,4 +5,5 @@ import androidx.annotation.StringRes sealed class FilteringThreeSideEffect { data object NavigateToStartHome : FilteringThreeSideEffect() data class ShowToast(@StringRes val message: Int) : FilteringThreeSideEffect() + data object NavigateUp : FilteringThreeSideEffect() } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt index 7b5a64cf2..d5d5f9b58 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt @@ -28,19 +28,19 @@ class FilteringViewModel @Inject constructor( private val _sideEffects = MutableSharedFlow() val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() - fun fetchGrade(grade: Int) { + fun updateGrade(grade: Int) { _state.value = _state.value.copy(grade = grade) } - fun fetchWorkingPeriod(workingPeriod: Int) { + fun updateWorkingPeriod(workingPeriod: Int) { _state.value = _state.value.copy(workingPeriod = workingPeriod) } - fun fetchStartYear(startYear: Int) { + fun updateStartYear(startYear: Int) { _state.value = _state.value.copy(startYear = startYear) } - fun fetchStartMonth(startMonth: Int) { + fun updateStartMonth(startMonth: Int) { _state.value = _state.value.copy(startMonth = startMonth) } @@ -64,4 +64,6 @@ class FilteringViewModel @Inject constructor( } } + fun navigateUp() = viewModelScope.launch { _sideEffects.emit(FilteringThreeSideEffect.NavigateUp) } + } \ No newline at end of file From aa2531f4186d47b2a5fde4e555fb11b4e762577e Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 07:15:34 +0900 Subject: [PATCH 12/33] =?UTF-8?q?[FEAT/#218]=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/filtering/filteringthree/FilteringThreeRoute.kt | 6 +++--- .../filteringthree/navigation/FilteringThreeNavigation.kt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index 54eeafa9b..2a872fe94 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -72,10 +72,10 @@ fun FilteringThreeRoute( } FilteringThreeScreen( - navigateUp = { viewModel.navigateUp() }, + navigateUp = viewModel::navigateUp, chosenYear = state.startYear, chosenMonth = state.startMonth, - onNextClick = { viewModel.postFilteringWithServer() }, + onNextClick = viewModel::postFilteringWithServer, onYearChosen = { viewModel.updateStartYear(it) }, onMonthChosen = { viewModel.updateStartMonth(it) } ) @@ -94,7 +94,7 @@ fun FilteringThreeScreen( modifier = Modifier, ) { BackButtonTopAppBar( - onBackButtonClick = { navigateUp() } + onBackButtonClick = navigateUp ) Column( modifier = Modifier.fillMaxSize() diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt index 57580223c..2a0257744 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/navigation/FilteringThreeNavigation.kt @@ -30,8 +30,8 @@ fun NavGraphBuilder.filteringThreeNavGraph( FilteringThreeRoute( grade = args.grade, workingPeriod = args.workingPeriod, - navigateUp = { navHostController.navigateUp() }, - navigateToStartHome = { navHostController.navigateStartHome() } + navigateUp = navHostController::navigateUp, + navigateToStartHome = navHostController::navigateStartHome ) } } From b7d263ca0d188d6d03c839dafbcf1b86e2f53969 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 07:26:33 +0900 Subject: [PATCH 13/33] =?UTF-8?q?[FEAT/#218]=20=EC=BA=98=EB=A6=B0=EB=8D=94?= =?UTF-8?q?=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filtering/filteringthree/FilteringThreeRoute.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index 2a872fe94..6e19a291a 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -48,8 +49,6 @@ fun FilteringThreeRoute( with(viewModel) { updateGrade(grade = grade) updateWorkingPeriod(workingPeriod = workingPeriod) - updateStartYear(startYear = Calendar.getInstance().currentYear) - updateStartMonth(startMonth = Calendar.getInstance().currentMonth) } } @@ -73,8 +72,8 @@ fun FilteringThreeRoute( FilteringThreeScreen( navigateUp = viewModel::navigateUp, - chosenYear = state.startYear, - chosenMonth = state.startMonth, + chosenYear = Calendar.getInstance().currentYear, + chosenMonth = Calendar.getInstance().currentMonth, onNextClick = viewModel::postFilteringWithServer, onYearChosen = { viewModel.updateStartYear(it) }, onMonthChosen = { viewModel.updateStartMonth(it) } @@ -124,14 +123,14 @@ fun FilteringThreeScreen( start = 24.dp, ) ) - Spacer(modifier = Modifier.weight(1f)) + Spacer(modifier = Modifier.height(61.dp)) YearMonthPicker( chosenYear = chosenYear, chosenMonth = chosenMonth, onYearChosen = { onYearChosen(it) }, onMonthChosen = { onMonthChosen(it) }, ) - Spacer(modifier = Modifier.weight(7f)) + Spacer(modifier = Modifier.weight(1f)) RectangleButton( style = TerningTheme.typography.button0, paddingVertical = 20.dp, From 990a776328f1c33cfae0bcb4021c63c653687db3 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 07:32:11 +0900 Subject: [PATCH 14/33] =?UTF-8?q?[FEAT/#218]=20=ED=95=84=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20=EB=B2=84=ED=8A=BC=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/designsystem/component/button/FilteringButton.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt b/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt index f0c50d820..bc0ca38db 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/button/FilteringButton.kt @@ -58,8 +58,9 @@ fun FilteringButton( val isPressed by interactionSource.collectIsPressedAsState() val backgroundColor = White val textColor = when { - isSelected -> TerningMain - else -> Grey375 + !isSelected -> Grey375 + isPressed -> Grey375 + else -> TerningMain } val borderColor = when { !isSelected && !isPressed -> Grey150 From 93ca5c68cad214af64f9fb41386813bb31cc3f9d Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 07:54:35 +0900 Subject: [PATCH 15/33] =?UTF-8?q?[FEAT/#218]=20=ED=95=84=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20=EC=9B=90=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...eringOneScreen.kt => FilteringOneRoute.kt} | 61 ++++++++++++++----- .../filteringone/FilteringOneSideEffect.kt | 5 ++ .../filteringone/FilteringOneState.kt | 6 ++ .../filteringone/FilteringOneViewModel.kt | 31 ++++++++++ .../navigation/FilteringOneNavigation.kt | 4 +- .../filteringthree/FilteringThreeRoute.kt | 2 +- ...lteringState.kt => FilteringThreeState.kt} | 2 +- ...iewModel.kt => FilteringThreeViewModel.kt} | 6 +- 8 files changed, 96 insertions(+), 21 deletions(-) rename feature/src/main/java/com/terning/feature/filtering/filteringone/{FilteringOneScreen.kt => FilteringOneRoute.kt} (69%) create mode 100644 feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneSideEffect.kt create mode 100644 feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneState.kt create mode 100644 feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt rename feature/src/main/java/com/terning/feature/filtering/filteringthree/{FilteringState.kt => FilteringThreeState.kt} (84%) rename feature/src/main/java/com/terning/feature/filtering/filteringthree/{FilteringViewModel.kt => FilteringThreeViewModel.kt} (92%) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneScreen.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt similarity index 69% rename from feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneScreen.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt index 8d0d3afcc..93166b9c8 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt @@ -7,16 +7,17 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.LocalLifecycleOwner +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.lifecycle.flowWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 @@ -26,20 +27,52 @@ import com.terning.feature.R import com.terning.feature.filtering.filteringone.component.StatusOneRadioGroup @Composable -fun FilteringOneScreen( +fun FilteringOneRoute( name: String, onNextClick: (Int) -> Unit, navigateUp: () -> Unit, - onButtonClick: (Int) -> Unit = {}, + viewModel: FilteringOneViewModel = hiltViewModel() ) { - val isButtonValid = remember { mutableStateOf(false) } - var grade by remember { mutableIntStateOf(-1) } + val state by viewModel.state.collectAsStateWithLifecycle() + + val lifecycleOwner = LocalLifecycleOwner.current + + LaunchedEffect(viewModel.sideEffects, lifecycleOwner) { + viewModel.sideEffects.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) + .collect { sideEffect -> + when (sideEffect) { + is FilteringOneSideEffect.NavigateUp -> navigateUp() + } + } + } + + FilteringOneScreen( + name = name, + onButtonClick = { index -> + viewModel.updateGrade(index) + viewModel.updateButtonValidation() + }, + onNextClick = onNextClick, + navigateUp = viewModel::navigateUp, + buttonState = state.isButtonValid, + gradeState = state.grade + ) +} +@Composable +fun FilteringOneScreen( + name: String, + onNextClick: (Int) -> Unit, + navigateUp: () -> Unit, + onButtonClick: (Int) -> Unit, + buttonState: Boolean, + gradeState: Int +) { Column( modifier = Modifier ) { BackButtonTopAppBar( - onBackButtonClick = { navigateUp() } + onBackButtonClick = navigateUp ) Column( modifier = Modifier.fillMaxSize() @@ -79,8 +112,6 @@ fun FilteringOneScreen( StatusOneRadioGroup( onButtonClick = { index -> onButtonClick(index) - isButtonValid.value = true - grade = index } ) Text( @@ -96,9 +127,9 @@ fun FilteringOneScreen( style = TerningTheme.typography.button0, paddingVertical = 20.dp, text = R.string.filtering_button, - onButtonClick = { onNextClick(grade) }, + onButtonClick = { onNextClick(gradeState) }, modifier = Modifier.padding(bottom = 12.dp), - isEnabled = isButtonValid.value + isEnabled = buttonState ) } } @@ -112,7 +143,9 @@ fun FilteringOneScreenPreview() { name = "터닝이", onButtonClick = {}, onNextClick = {}, - navigateUp = {} + navigateUp = {}, + buttonState = true, + gradeState = 1 ) } } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneSideEffect.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneSideEffect.kt new file mode 100644 index 000000000..5fdbaaaa6 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneSideEffect.kt @@ -0,0 +1,5 @@ +package com.terning.feature.filtering.filteringone + +sealed class FilteringOneSideEffect { + data object NavigateUp : FilteringOneSideEffect() +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneState.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneState.kt new file mode 100644 index 000000000..06c28b481 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneState.kt @@ -0,0 +1,6 @@ +package com.terning.feature.filtering.filteringone + +data class FilteringOneState( + val isButtonValid: Boolean = false, + val grade: Int = -1 +) \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt new file mode 100644 index 000000000..214b0447d --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt @@ -0,0 +1,31 @@ +package com.terning.feature.filtering.filteringone + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +class FilteringOneViewModel : ViewModel() { + + private val _state: MutableStateFlow = MutableStateFlow(FilteringOneState()) + val state: StateFlow get() = _state.asStateFlow() + + private val _sideEffects = MutableSharedFlow() + val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() + + fun updateButtonValidation() { + _state.value = _state.value.copy(isButtonValid = true) + } + + fun updateGrade(grade: Int) { + _state.value = _state.value.copy(grade = grade) + } + + fun navigateUp() = + viewModelScope.launch { _sideEffects.emit(FilteringOneSideEffect.NavigateUp) } +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt index e5f25807e..c260aaec1 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt @@ -7,7 +7,7 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filteringone.FilteringOneScreen +import com.terning.feature.filtering.filteringone.FilteringOneRoute import com.terning.feature.filtering.filteringtwo.navigation.navigateFilteringTwo import kotlinx.serialization.Serializable @@ -26,7 +26,7 @@ fun NavGraphBuilder.filteringOneNavGraph( ) { composable { val args = it.toRoute() - FilteringOneScreen( + FilteringOneRoute( name = args.name, onNextClick = { grade -> navHostController.navigateFilteringTwo(grade) }, navigateUp = { navHostController.navigateUp() } diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index 6e19a291a..ff3a10a0e 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -38,7 +38,7 @@ fun FilteringThreeRoute( workingPeriod: Int, navigateUp: () -> Unit, navigateToStartHome: () -> Unit, - viewModel: FilteringViewModel = hiltViewModel(), + viewModel: FilteringThreeViewModel = hiltViewModel(), ) { val state by viewModel.state.collectAsStateWithLifecycle() diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringState.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeState.kt similarity index 84% rename from feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringState.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeState.kt index 7f75fc847..d907353f9 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringState.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeState.kt @@ -1,6 +1,6 @@ package com.terning.feature.filtering.filteringthree -data class FilteringState( +data class FilteringThreeState( val grade: Int = -1, val workingPeriod: Int = -1, val startYear: Int = -1, diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeViewModel.kt similarity index 92% rename from feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeViewModel.kt index d5d5f9b58..9c31c3c86 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringViewModel.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeViewModel.kt @@ -17,13 +17,13 @@ import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel -class FilteringViewModel @Inject constructor( +class FilteringThreeViewModel @Inject constructor( private val filteringRepository: FilteringRepository, private val tokenRepository: TokenRepository ) : ViewModel() { - private val _state = MutableStateFlow(FilteringState()) - val state: StateFlow get() = _state.asStateFlow() + private val _state = MutableStateFlow(FilteringThreeState()) + val state: StateFlow get() = _state.asStateFlow() private val _sideEffects = MutableSharedFlow() val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() From 016fc7c7eee49728884e66fd3b46a93615618187 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 4 Sep 2024 08:04:47 +0900 Subject: [PATCH 16/33] =?UTF-8?q?[FEAT/#218]=20=ED=95=84=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20=ED=88=AC=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...eringTwoScreen.kt => FilteringTwoRoute.kt} | 58 +++++++++++++++---- .../filteringtwo/FilteringTwoSideEffect.kt | 5 ++ .../filteringtwo/FilteringTwoState.kt | 6 ++ .../filteringtwo/FilteringTwoViewModel.kt | 33 +++++++++++ .../navigation/FilteringTwoNavigation.kt | 6 +- 5 files changed, 93 insertions(+), 15 deletions(-) rename feature/src/main/java/com/terning/feature/filtering/filteringtwo/{FilteringTwoScreen.kt => FilteringTwoRoute.kt} (67%) create mode 100644 feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoSideEffect.kt create mode 100644 feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoState.kt create mode 100644 feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoScreen.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt similarity index 67% rename from feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoScreen.kt rename to feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt index 7f2849ce2..8c1a5b7b7 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoScreen.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt @@ -7,16 +7,17 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.LocalLifecycleOwner +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.lifecycle.flowWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.Grey300 @@ -26,15 +27,47 @@ import com.terning.feature.R import com.terning.feature.filtering.filteringtwo.component.StatusTwoRadioGroup @Composable -fun FilteringTwoScreen( +fun FilteringTwoRoute( grade: Int, onNextClick: (Int, Int) -> Unit, navigateUp: () -> Unit, - onButtonClick: (Int) -> Unit = {}, + viewModel: FilteringTwoViewModel = hiltViewModel() ) { - val isButtonValid = remember { mutableStateOf(false) } - var workingPeriod by remember { mutableIntStateOf(-1) } + val state by viewModel.state.collectAsStateWithLifecycle() + + val lifecycleOwner = LocalLifecycleOwner.current + + LaunchedEffect(viewModel.sideEffects, lifecycleOwner) { + viewModel.sideEffects.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) + .collect { sideEffect -> + when (sideEffect) { + is FilteringTwoSideEffect.NavigateUp -> navigateUp() + } + } + } + + FilteringTwoScreen( + grade = grade, + onNextClick = onNextClick, + navigateUp = viewModel::navigateUp, + onButtonClick = { index -> + viewModel.updateWorkingPeriod(index) + viewModel.updateButtonValidation() + }, + buttonState = state.isButtonValid, + workingPeriod = state.workingPeriod + ) +} +@Composable +fun FilteringTwoScreen( + grade: Int, + onNextClick: (Int, Int) -> Unit, + navigateUp: () -> Unit, + onButtonClick: (Int) -> Unit, + buttonState: Boolean, + workingPeriod: Int +) { Column( modifier = Modifier ) { @@ -73,8 +106,6 @@ fun FilteringTwoScreen( StatusTwoRadioGroup( onButtonClick = { index -> onButtonClick(index) - isButtonValid.value = true - workingPeriod = index } ) Spacer(modifier = Modifier.weight(1f)) @@ -84,7 +115,7 @@ fun FilteringTwoScreen( text = R.string.filtering_button, onButtonClick = { onNextClick(grade, workingPeriod) }, modifier = Modifier.padding(bottom = 12.dp), - isEnabled = isButtonValid.value + isEnabled = buttonState ) } } @@ -97,7 +128,10 @@ fun FilteringTwoScreenPreview() { FilteringTwoScreen( grade = 1, onNextClick = { _, _ -> }, - navigateUp = { } + navigateUp = { }, + onButtonClick = { }, + buttonState = true, + workingPeriod = 1 ) } } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoSideEffect.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoSideEffect.kt new file mode 100644 index 000000000..a858577c1 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoSideEffect.kt @@ -0,0 +1,5 @@ +package com.terning.feature.filtering.filteringtwo + +sealed class FilteringTwoSideEffect { + data object NavigateUp : FilteringTwoSideEffect() +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoState.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoState.kt new file mode 100644 index 000000000..383049e07 --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoState.kt @@ -0,0 +1,6 @@ +package com.terning.feature.filtering.filteringtwo + +data class FilteringTwoState( + val isButtonValid: Boolean = false, + val workingPeriod: Int = -1 +) \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt new file mode 100644 index 000000000..3dc4c8afd --- /dev/null +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt @@ -0,0 +1,33 @@ +package com.terning.feature.filtering.filteringtwo + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.terning.feature.filtering.filteringone.FilteringOneSideEffect +import com.terning.feature.filtering.filteringone.FilteringOneState +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +class FilteringTwoViewModel : ViewModel(){ + + private val _state: MutableStateFlow = MutableStateFlow(FilteringTwoState()) + val state: StateFlow get() = _state.asStateFlow() + + private val _sideEffects = MutableSharedFlow() + val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() + + fun updateButtonValidation() { + _state.value = _state.value.copy(isButtonValid = true) + } + + fun updateWorkingPeriod(workingPeriod: Int) { + _state.value = _state.value.copy(workingPeriod = workingPeriod) + } + + fun navigateUp() = + viewModelScope.launch { _sideEffects.emit(FilteringTwoSideEffect.NavigateUp) } +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt index ab417cdab..a05a89835 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/navigation/FilteringTwoNavigation.kt @@ -7,8 +7,8 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.toRoute import com.terning.core.navigation.Route -import com.terning.feature.filtering.filteringtwo.FilteringTwoScreen import com.terning.feature.filtering.filteringthree.navigation.navigateFilteringThree +import com.terning.feature.filtering.filteringtwo.FilteringTwoRoute import kotlinx.serialization.Serializable fun NavController.navigateFilteringTwo( @@ -26,7 +26,7 @@ fun NavGraphBuilder.filteringTwoNavGraph( ) { composable { val args = it.toRoute() - FilteringTwoScreen( + FilteringTwoRoute( grade = args.grade, onNextClick = { _, workingPeriod -> navHostController.navigateFilteringThree( @@ -34,7 +34,7 @@ fun NavGraphBuilder.filteringTwoNavGraph( workingPeriod = workingPeriod ) }, - navigateUp = { navHostController.navigateUp() } + navigateUp = navHostController::navigateUp ) } } From e410bb5f69b6d8c7da1e1341ab4e6a4303ca4aa0 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Thu, 5 Sep 2024 04:09:27 +0900 Subject: [PATCH 17/33] =?UTF-8?q?[FEAT/#218]=20=ED=8C=A8=EB=94=A9=EA=B0=92?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/terning/feature/onboarding/signup/SignUpRoute.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt index 9a963fe57..4be2f12c7 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt @@ -123,7 +123,6 @@ fun SignUpScreen( Column( modifier = Modifier.align(Alignment.CenterHorizontally) ) { - Spacer(modifier = Modifier.height(48.dp)) ProfileWithPlusButton( modifier = Modifier.noRippleClickable { onProfileEditClick(true) From 32686a49c1f99fb6c31e95fd25ee980be122f4b1 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 10:04:47 +0900 Subject: [PATCH 18/33] =?UTF-8?q?[FEAT/#221]=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=8A=A4=ED=83=9D=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/terning/feature/main/MainNavigator.kt | 9 ++++-- .../com/terning/feature/main/MainScreen.kt | 28 +++++++++++++++++++ .../feature/mypage/mypage/MyPageRoute.kt | 12 ++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/main/MainNavigator.kt b/feature/src/main/java/com/terning/feature/main/MainNavigator.kt index f0598bf1f..8455eb2a6 100644 --- a/feature/src/main/java/com/terning/feature/main/MainNavigator.kt +++ b/feature/src/main/java/com/terning/feature/main/MainNavigator.kt @@ -31,9 +31,12 @@ class MainNavigator( fun navigate(tab: MainTab) { val navOptions = navOptions { - popUpTo(navController.graph.findStartDestination().id) { - saveState = true - } + navController.currentDestination?.route?.let { + popUpTo(it){ + inclusive = true + saveState = true + } + } launchSingleTop = true restoreState = true } diff --git a/feature/src/main/java/com/terning/feature/main/MainScreen.kt b/feature/src/main/java/com/terning/feature/main/MainScreen.kt index d78934eba..f294cf9e1 100644 --- a/feature/src/main/java/com/terning/feature/main/MainScreen.kt +++ b/feature/src/main/java/com/terning/feature/main/MainScreen.kt @@ -1,5 +1,9 @@ package com.terning.feature.main +import android.app.Activity +import android.content.Intent +import android.widget.Toast +import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.EnterTransition import androidx.compose.animation.ExitTransition @@ -15,11 +19,18 @@ import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.sp +import androidx.core.content.ContextCompat.startActivity import androidx.navigation.compose.NavHost import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningMain @@ -33,6 +44,7 @@ import com.terning.feature.filtering.startfiltering.navigation.startFilteringNav import com.terning.feature.filtering.starthome.navigation.startHomeNavGraph import com.terning.feature.home.changefilter.navigation.changeFilterNavGraph import com.terning.feature.home.home.navigation.homeNavGraph +import com.terning.feature.home.home.navigation.navigateHome import com.terning.feature.intern.navigation.internNavGraph import com.terning.feature.mypage.mypage.navigation.myPageNavGraph import com.terning.feature.mypage.profileedit.navigation.profileEditNavGraph @@ -41,11 +53,27 @@ import com.terning.feature.onboarding.signup.navigation.signUpNavGraph import com.terning.feature.onboarding.splash.navigation.splashNavGraph import com.terning.feature.search.search.navigation.searchNavGraph import com.terning.feature.search.searchprocess.navigation.searchProcessNavGraph +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch @Composable fun MainScreen( navigator: MainNavigator = rememberMainNavigator(), ) { + val context = LocalContext.current + var backPressedState by remember { mutableStateOf(true) } + var backPressedTime = 0L + + BackHandler(enabled = backPressedState) { + if(System.currentTimeMillis() - backPressedTime <= 3000) { + (context as Activity).finish() + } else { + backPressedState = true + Toast.makeText(context, "한 번 더 누르시면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show() + } + backPressedTime = System.currentTimeMillis() + } + Scaffold( bottomBar = { MainBottomBar( diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt index e520d3504..b31050de1 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt @@ -15,11 +15,15 @@ import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -63,6 +67,14 @@ fun MyPageRoute( ) } + DisposableEffect(lifecycleOwner) { + onDispose { + systemUiController.setStatusBarColor( + color = White + ) + } + } + LaunchedEffect(viewModel.sideEffects, lifecycleOwner) { viewModel.sideEffects.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) .collect { sideEffect -> From 278d274ec671d8d6075fadca3f58f0fa7e609f75 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 10:15:01 +0900 Subject: [PATCH 19/33] =?UTF-8?q?[FEAT/#218]=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=ED=95=A9=EC=B9=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filtering/filteringone/FilteringOneRoute.kt | 3 +-- .../filteringone/FilteringOneViewModel.kt | 11 +++++------ .../filtering/filteringtwo/FilteringTwoRoute.kt | 3 +-- .../filteringtwo/FilteringTwoViewModel.kt | 15 ++++++--------- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt index 1d3dd595f..930e81fb7 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneRoute.kt @@ -53,8 +53,7 @@ fun FilteringOneRoute( FilteringOneScreen( name = name, onButtonClick = { index -> - viewModel.updateGrade(index) - viewModel.updateButtonValidation() + viewModel.updateGradeAndButton(index) }, onNextClick = onNextClick, navigateUp = viewModel::navigateUp, diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt index 214b0447d..93829d006 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/FilteringOneViewModel.kt @@ -18,12 +18,11 @@ class FilteringOneViewModel : ViewModel() { private val _sideEffects = MutableSharedFlow() val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() - fun updateButtonValidation() { - _state.value = _state.value.copy(isButtonValid = true) - } - - fun updateGrade(grade: Int) { - _state.value = _state.value.copy(grade = grade) + fun updateGradeAndButton(grade: Int) { + _state.value = _state.value.copy( + grade = grade, + isButtonValid = true + ) } fun navigateUp() = diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt index 3b00778d0..21361bdb5 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoRoute.kt @@ -55,8 +55,7 @@ fun FilteringTwoRoute( onNextClick = onNextClick, navigateUp = viewModel::navigateUp, onButtonClick = { index -> - viewModel.updateWorkingPeriod(index) - viewModel.updateButtonValidation() + viewModel.updateWorkingPeriodAndButton(index) }, buttonState = state.isButtonValid, workingPeriod = state.workingPeriod, diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt index 3dc4c8afd..2076a5221 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringtwo/FilteringTwoViewModel.kt @@ -2,8 +2,6 @@ package com.terning.feature.filtering.filteringtwo import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.terning.feature.filtering.filteringone.FilteringOneSideEffect -import com.terning.feature.filtering.filteringone.FilteringOneState import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow @@ -12,7 +10,7 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch -class FilteringTwoViewModel : ViewModel(){ +class FilteringTwoViewModel : ViewModel() { private val _state: MutableStateFlow = MutableStateFlow(FilteringTwoState()) val state: StateFlow get() = _state.asStateFlow() @@ -20,12 +18,11 @@ class FilteringTwoViewModel : ViewModel(){ private val _sideEffects = MutableSharedFlow() val sideEffects: SharedFlow get() = _sideEffects.asSharedFlow() - fun updateButtonValidation() { - _state.value = _state.value.copy(isButtonValid = true) - } - - fun updateWorkingPeriod(workingPeriod: Int) { - _state.value = _state.value.copy(workingPeriod = workingPeriod) + fun updateWorkingPeriodAndButton(workingPeriod: Int) { + _state.value = _state.value.copy( + workingPeriod = workingPeriod, + isButtonValid = true + ) } fun navigateUp() = From fc8c1f3b72230e780c183cc293a4d817cb689d43 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 10:22:14 +0900 Subject: [PATCH 20/33] =?UTF-8?q?[FEAT/#218]=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filteringone/navigation/FilteringOneNavigation.kt | 4 ++-- .../feature/filtering/filteringthree/FilteringThreeRoute.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt b/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt index e80b3fbeb..d771d018f 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringone/navigation/FilteringOneNavigation.kt @@ -30,8 +30,8 @@ fun NavGraphBuilder.filteringOneNavGraph( FilteringOneRoute( paddingValues = paddingValues, name = args.name, - onNextClick = { grade -> navHostController.navigateFilteringTwo(grade) }, - navigateUp = { navHostController.navigateUp() } + onNextClick = navHostController::navigateFilteringTwo, + navigateUp = navHostController::navigateUp ) } } diff --git a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt index 8bdc9d4e0..09ef94e01 100644 --- a/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/filteringthree/FilteringThreeRoute.kt @@ -80,8 +80,8 @@ fun FilteringThreeRoute( chosenYear = Calendar.getInstance().currentYear, chosenMonth = Calendar.getInstance().currentMonth, onNextClick = viewModel::postFilteringWithServer, - onYearChosen = { viewModel.updateStartYear(it) }, - onMonthChosen = { viewModel.updateStartMonth(it) } + onYearChosen = viewModel::updateStartYear, + onMonthChosen = viewModel::updateStartMonth ) } From a854109b13c7e5a4c662b729ae3a8688fd465f0e Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 11:50:42 +0900 Subject: [PATCH 21/33] =?UTF-8?q?[FEAT/#221]=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bottomsheet/ProfileBottomSheet.kt | 41 ++-- .../component/item/ProfileWithPlusButton.kt | 16 +- .../com/terning/core/type/ProfileImage.kt | 31 +++ .../res/drawable/ic_terning_profile_00.xml | 179 +++++----------- .../res/drawable/ic_terning_profile_01.xml | 200 +++++++----------- .../ic_terning_profile_01_selected.png | Bin 6221 -> 0 bytes .../res/drawable/ic_terning_profile_02.xml | 161 ++++++-------- .../res/drawable/ic_terning_profile_03.xml | 195 ++++++----------- .../res/drawable/ic_terning_profile_04.xml | 180 +++++----------- .../res/drawable/ic_terning_profile_05.xml | 172 ++++++--------- .../data/dto/request/SignUpRequestDto.kt | 2 +- .../data/dto/response/MyPageResponseDto.kt | 2 + .../data/mapper/mypage/MyPageMapper.kt | 7 +- .../entity/mypage/MyPageProfileModel.kt | 1 + .../domain/entity/onboarding/SignUpRequest.kt | 2 +- .../feature/mypage/mypage/MyPageRoute.kt | 27 +-- .../feature/mypage/mypage/MyPageState.kt | 2 +- .../feature/mypage/mypage/MyPageViewModel.kt | 1 + .../mypage/mypage/component/MyPageProfile.kt | 25 +-- .../mypage/navigation/MyPageNavigation.kt | 4 +- .../mypage/profileedit/ProfileEditRoute.kt | 15 +- .../mypage/profileedit/ProfileEditState.kt | 2 +- .../profileedit/ProfileEditViewModel.kt | 14 +- .../navigation/ProfileEditNavigation.kt | 8 +- .../feature/onboarding/signup/SignUpRoute.kt | 8 +- .../feature/onboarding/signup/SignUpState.kt | 2 +- .../onboarding/signup/SignUpViewModel.kt | 2 +- 27 files changed, 504 insertions(+), 795 deletions(-) create mode 100644 core/src/main/java/com/terning/core/type/ProfileImage.kt delete mode 100644 core/src/main/res/drawable/ic_terning_profile_01_selected.png diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt index 9382ceb7a..640952599 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt @@ -30,6 +30,7 @@ import com.terning.core.R import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.extension.noRippleClickable +import com.terning.core.type.ProfileImage import kotlinx.coroutines.launch /** @@ -45,8 +46,8 @@ import kotlinx.coroutines.launch fun ProfileBottomSheet( modifier: Modifier = Modifier, onDismiss: () -> Unit, - onSaveClick: (Int) -> Unit, - initialSelectedOption: Int + onSaveClick: (ProfileImage) -> Unit, + initialSelectedOption: String ) { val scope = rememberCoroutineScope() val sheetState = rememberModalBottomSheetState() @@ -64,11 +65,11 @@ fun ProfileBottomSheet( ), ) RadioButtonGroup( - onOptionSelected = { index -> + onOptionSelected = { selectedProfile -> scope.launch { sheetState.hide() } .invokeOnCompletion { if (!sheetState.isVisible) { - onSaveClick(index) + onSaveClick(selectedProfile) } } }, @@ -82,6 +83,7 @@ fun ProfileBottomSheet( ) } + /** * 6개의 프로필 이미지 중, 하나의 이미지만 선택할 수 있는 라디오 버튼입니다. * @@ -91,20 +93,17 @@ fun ProfileBottomSheet( */ @Composable fun RadioButtonGroup( - onOptionSelected: (Int) -> Unit, - initialSelectedOption: Int, + onOptionSelected: (ProfileImage) -> Unit, + initialSelectedOption: String, modifier: Modifier = Modifier, ) { - val options = listOf( - R.drawable.ic_terning_profile_00, - R.drawable.ic_terning_profile_01, - R.drawable.ic_terning_profile_02, - R.drawable.ic_terning_profile_03, - R.drawable.ic_terning_profile_04, - R.drawable.ic_terning_profile_05 - ) + // 모든 ProfileImage 옵션을 가져옵니다. + val options = ProfileImage.entries - var selectedOption by rememberSaveable { mutableIntStateOf(options[initialSelectedOption]) } + // 초기 선택된 옵션을 ProfileImage로 변환하여 인덱스를 저장합니다. + var selectedOptionIndex by rememberSaveable { + mutableIntStateOf(ProfileImage.toIndex(ProfileImage.fromString(initialSelectedOption))) + } LazyVerticalGrid( columns = GridCells.Fixed(3), @@ -113,7 +112,7 @@ fun RadioButtonGroup( modifier = modifier.padding(horizontal = 34.dp) ) { itemsIndexed(options) { index, option -> - val imageModifier = if (selectedOption == options[index]) { + val imageModifier = if (selectedOptionIndex == index) { Modifier .border( color = TerningMain, @@ -126,14 +125,12 @@ fun RadioButtonGroup( } Image( - painter = painterResource( - id = option - ), + painter = painterResource(id = option.drawableResId), contentDescription = "profile image", modifier = imageModifier .noRippleClickable { - onOptionSelected(index) - selectedOption = option + onOptionSelected(option) + selectedOptionIndex = index } .clip(shape = CircleShape) .size(76.dp) @@ -141,4 +138,4 @@ fun RadioButtonGroup( ) } } -} \ No newline at end of file +} diff --git a/core/src/main/java/com/terning/core/designsystem/component/item/ProfileWithPlusButton.kt b/core/src/main/java/com/terning/core/designsystem/component/item/ProfileWithPlusButton.kt index 659f27b03..a8bccb6da 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/item/ProfileWithPlusButton.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/item/ProfileWithPlusButton.kt @@ -14,26 +14,20 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.terning.core.R +import com.terning.core.type.ProfileImage @Composable fun ProfileWithPlusButton( - index: Int, + profileImage: String, modifier: Modifier = Modifier, ) { - val grade = when (index) { - 0 -> R.drawable.ic_terning_profile_00 - 1 -> R.drawable.ic_terning_profile_01 - 2 -> R.drawable.ic_terning_profile_02 - 3 -> R.drawable.ic_terning_profile_03 - 4 -> R.drawable.ic_terning_profile_04 - else -> R.drawable.ic_terning_profile_05 - } + val userProfile = ProfileImage.fromString(profileImage) Box( modifier = modifier.wrapContentWidth() ) { Image( - painterResource(id = grade), + painterResource(id = userProfile.drawableResId), contentDescription = "profile image", modifier = modifier .clip(shape = CircleShape) @@ -51,5 +45,5 @@ fun ProfileWithPlusButton( @Preview(showBackground = true) @Composable fun ProfileWithPlusButtonPreview() { - ProfileWithPlusButton(index = 1) + ProfileWithPlusButton(profileImage = "basic") } \ No newline at end of file diff --git a/core/src/main/java/com/terning/core/type/ProfileImage.kt b/core/src/main/java/com/terning/core/type/ProfileImage.kt new file mode 100644 index 000000000..79fd6a1a4 --- /dev/null +++ b/core/src/main/java/com/terning/core/type/ProfileImage.kt @@ -0,0 +1,31 @@ +package com.terning.core.type + +import com.terning.core.R + +enum class ProfileImage( + val drawableResId: Int, + val stringValue: String +) { + + BASIC(drawableResId = R.drawable.ic_terning_profile_00, stringValue = "basic"), + LUCKY(drawableResId = R.drawable.ic_terning_profile_01, stringValue = "lucky"), + SMART(drawableResId = R.drawable.ic_terning_profile_02, stringValue = "smart"), + GLASS(drawableResId = R.drawable.ic_terning_profile_03, stringValue = "glass"), + CALENDAR(drawableResId = R.drawable.ic_terning_profile_04, stringValue = "calendar"), + PASSION(drawableResId = R.drawable.ic_terning_profile_05, stringValue = "passion"); + + companion object { + fun fromString(value: String): ProfileImage = when (value) { + "basic" -> BASIC + "lucky" -> LUCKY + "smart" -> SMART + "glass" -> GLASS + "calendar" -> CALENDAR + else -> PASSION + } + + fun toIndex(profileImage: ProfileImage): Int { + return entries.indexOf(profileImage) + } + } +} diff --git a/core/src/main/res/drawable/ic_terning_profile_00.xml b/core/src/main/res/drawable/ic_terning_profile_00.xml index f34f8769c..99edfdf96 100644 --- a/core/src/main/res/drawable/ic_terning_profile_00.xml +++ b/core/src/main/res/drawable/ic_terning_profile_00.xml @@ -1,137 +1,60 @@ - - - - - - - + android:width="76dp" + android:height="76dp" + android:viewportWidth="76" + android:viewportHeight="76"> + android:pathData="M38,0L38,0A38,38 0,0 1,76 38L76,38A38,38 0,0 1,38 76L38,76A38,38 0,0 1,0 38L0,38A38,38 0,0 1,38 0z"/> - - - - - - - - - - - - - - - - + android:pathData="M76,0H0V76H76V0Z" + android:fillColor="#FBF8CB"/> - - - - + android:pathData="M57.95,77.966L67.64,49.542C68.314,47.472 67.574,45.192 65.807,43.909L41.971,26.59C40.204,25.308 37.819,25.308 36.053,26.59L12.217,43.909C10.45,45.192 9.718,47.462 10.384,49.542L19.494,77.567C20.169,79.638 22.097,81.045 24.282,81.045H53.751" + android:fillColor="#ffffff"/> - - - - - - + android:pathData="M57.95,77.966L67.64,49.542C68.314,47.472 67.574,45.192 65.807,43.909L41.971,26.59C40.204,25.308 37.819,25.308 36.053,26.59L12.217,43.909C10.45,45.192 9.718,47.462 10.384,49.542L19.494,77.567C20.169,79.638 22.097,81.045 24.282,81.045H53.751" + android:strokeWidth="1.425" + android:fillColor="#00000000" + android:strokeColor="#171717" + android:strokeLineCap="round"/> + + + + + + + + + android:pathData="M35.444,53.884C35.444,53.884 36.243,55.613 38.114,55.613C39.986,55.613 40.565,53.884 40.565,53.884" + android:strokeWidth="1.425" + android:fillColor="#00000000" + android:strokeColor="#171717" + android:strokeLineCap="round"/> - diff --git a/core/src/main/res/drawable/ic_terning_profile_01.xml b/core/src/main/res/drawable/ic_terning_profile_01.xml index 557c169b6..0bfcc7b29 100644 --- a/core/src/main/res/drawable/ic_terning_profile_01.xml +++ b/core/src/main/res/drawable/ic_terning_profile_01.xml @@ -1,132 +1,80 @@ - - - - - - + android:width="76dp" + android:height="76dp" + android:viewportWidth="76" + android:viewportHeight="76"> + android:pathData="M38,0L38,0A38,38 0,0 1,76 38L76,38A38,38 0,0 1,38 76L38,76A38,38 0,0 1,0 38L0,38A38,38 0,0 1,38 0z"/> + android:pathData="M76,0H0V76H76V0Z" + android:fillColor="#ECF9CA"/> + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - diff --git a/core/src/main/res/drawable/ic_terning_profile_01_selected.png b/core/src/main/res/drawable/ic_terning_profile_01_selected.png deleted file mode 100644 index f85119d4b6130d20396c478ade2f721f58868ddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6221 zcmV-T7_#SyP)J8_)EiIdpbaN(bTg9=xmcUiZ(wxUHi4WZ?9QtV3Ts%s@2Rl45kD&bJ+ zs$RJxxvJOWu8keUfm-0=oMA%ui@9Xp8~|788U|MT7ZelxS4UGJ`U zXV(VQN7>AHc6NTAdB5j--}n0&flnA}I$LWhE8*27yb!1nf|h9@CHzv*Md^>^wqM5f}S3 zx89YG%;QqlxG~-2f@l(O-9`k|&~KZ}uf0gRXc^F<`FR%pNVjEv*ZKn$9QLu()AoR2h zdTFtXtgW3$sKMgGPoEz8?72~t`;mIB5RX^{>q2%6?&#WsBB3b6rdlai5^j&|uoKGG z>4uw0_u*pzS6*?%_t~vDArbVT&7FE9F}b}M)>|;K$`2LdAPg(@Yr1Un+kD86o6t1q zp--FLf>Y$7DB4>Pu~eMsV$>5?HN9}l7RySxGAc*-QL>bFd@|7mn?$hnN?m(GO3A); z!P4NESUah@6nh4D?(eX^dtc79Xb_!CprM6=yovapTSQftwW0C3Z<6;Qxr7x&t|MX_ zo^NG6ZRHAz$lE=zV}BQK{}fnhT2Mv0H;D2*maC?uL5faZCkx&?u(NA7@e;7!gH2D<3PoHL+G&JeDI83@rA+zWjcwm299>;=~&(2)@(~< zxw@3ixuhf)yb5;yOFTjqb9?PyD5-iljNrg9kvg7{Oy15PL1c*q2%Dj7w{&Y*xyg&N zx|Pt%OHl|?$+dY4fk;$tT_}iHkl4oO+K$s+O>|@3{X6z==WPX5R76zh(iQp)L&oBX z&65)oICbI#2KxKacmBNkI~tBqB1*y~G?bQ?qq3?Bb!+O-xN#$Hy!mF-uV0@;c$9*E zCb)u{Agb4|MS0^o2v0$B;fJk4+xUDN84`T-=^1#SvpL%jvl5%oRgS2P%F53!RT)C8 zIbP%m8H-`&Y(Jt@%a|W;c<|Q0Ib}TO$V60rZ5`Wg*j4yoYi;7GOlarGuDJen4 zvT9Ube+}GK6(|7y5X!c)D@J--L!QEM6`?Jlw;72wC7_SjrI4hnM*i{x8G6EzpGp6B22r7WSucg~x=_-XRT46~TU3HNjH8kdXOc>;NUI}K$r7hO_$Wc@+eeS$N00rW zD5NqbNH(6{zaIyF{tL{`8t164u2$Znhi#EqtoUDGkyROLg!QYK8KtR<@r! z%nmrvRrX0kgTrdQ_wBdw>{Cw_c!Sx&6<_C*|Do1d7D`J?5hHDn&xR1bGy&uWW*`x|G?e6tMi;2L}wLl+w{)L3zT3}K`7l%<8+&Nio60uz4Np1xoYqct@6Ef(7!z6Y1@)cF= zFAfgkjn`ktQi3bAV{g4RZ+nCS5)>vyzFe#}iC8Kmt;U+@v9`G!rT`^X7?!{KzpuQS zx2`tSuffA#Z$bU)Rd9+|e*GK7TwM{4J^~oH_VImoH=F%6t+d zBL#aTJ~R4ctL;)tP3+=cKGqHiV&hR_oO6%V#FF9(ID+M~o<4aJ;ZSJ7{Y$7d@`vC3 z4jz861wZZh9#*X|uJO7}8}a9NG{FhDlzedN)V%HS*r^Ly!>dLg=HQjVQoZt_-F30;1yq$hdRY zi~ZU}C8oh>(KR~xDJWvSMu#;nd%cznP^HxZhhS~xgbSl?&6)*MevDCa#o}>2?RV=| zuZB~MjgF?>t}557g~>r2E+fok&bV_Q$${k^C}MRDhKLD~=!vHlAOn&TE^G~4ag~yT zzII)G#(irj1Emr1QA&8fed=`DeYV`NIpO5ryX|hQuFXB65{X1Ie>YZGC1!SwG9aX~ zS`7x5idd-|eyWtZ(uzKci77yER%0;CCKb!oxuq%dp=v3fzx(!E)%ua6@1)&l8Knf- z^TS(MA=!e8F^Wekms;!IyZ{{6AP$EFSI(jNPx3xim~}0%3t8rx%2qm!@Ed2Tx$P`n8fMn%#~DGeI3fZ>){ks zvUlGkDpXFT@%c7oNt07@g;@Wq)+U#xS|NLh*sc5p5xdv!PUL+us=OwSpF*6XoK=&< zxNcdw+CDUX6^}oA5Jyj+!^@pN!O1fp;jQ;hVr1ONA$+y@b10+CKa=w(4I6Otwbvx9 zFztEF_Amxpf0)jvsf<=hVxQr#L|-s7vF<8r#@TWm3P2Y%-KahX)QsgPi`__R#Z7LH zK#i_05);;*!Y;}VAjoGEE;qR$aa>c)QIjDFYin2F@o#?+L1(Hqxy%x#QG+qnhkB*_XIr^3fy;NK~lye-}vtCAl>hs%5f|di_Q!dLFcWyp+0`i^`MkoY~ zqNk(Aoft=@!xp0G-a>nLx+sd`ur@@eu1@{Za?Gb95J7|VZ{K%6hNIJIkM*6u+KIr$ zF^E9e*ii0?AoRS-6`Cej$ZRg^Q zH)T1XxSpN&6)RTE`})k4@dDfRlJV;Q9mR_j+D?{MBkn1)UB<$CtUGTOw*^*)aY{9M z$V|Lg$pZtjXzkRcb*mJ?+~p_r2FGSXxKLnD)Tjt0B2?t-8ye8|t-nUo?YFCQu{Yq( zv2(Jd$j;H}ZANIhscv$+H1b0H=5|||6veSvf>!E*hbl3?!J3-+#r|mj5W-Hag-Hzu z)q|U&Ji*r<`UY0l)g=Ofa5#+e^75Px<+LM*W|smp7aN!%i&agyX7-!MI`J2xh{Q6= zH`FT&s;xC-!HyuM?p{69PZpQwjd74MK}oq1qsRv%#_w5AEuWS9%ch<$6Szge2?XMb zD^6yan|gU}1S8Q+$pc|5CElvbkbD8Hy-UElp)h z%@%E?LMwITYRwJfPjuLjJ?ePsKeJgu)8;y7(2w3l5#g>ZN9mfCYJGKv#=#kCsePmG z61v|#hgZphKe$9q=hIZVO;A&HfIhP`hQ%_W<;hLul>SUx8gjnA3{CIZK#%%}wN6rZ zo4L*4lK)ekX^oVZ*QT@GC^E{-F#(m-hLw$kS<=SKlQS5bq#_>)8@UB0lv0qWri!Ve zDk)0SNgDL36>tiT!f%g*?3N30#S!;@hf&%C)`*&fvXgi#_Vt)y(v%hN5k+*n)XAur zR&3g!)>#rtvlKrU5!X;vW{}Ai%7iW_@;u2hA}J4WF6=^B7`GCO#gH#b*E(um_ups^ z(Wlh2&$yU53!bYorP1j?ia9xmL+nG5QL=JHB4}8amNjA zv*At%X2-8S6dCL@PM-LXvPvNpa&isc*w~0`ue~-A*UO6^QH_+P8xU1s1G8~l)C_lv z6WLr@GU`UiIOTT*csxj=yfx8q9Okn0if8KoyH0XP+b@B#Ok0C9tC&}hKuh<%W zr%SnqYPb&GMv`zC1x`J}gDYmv_Nk>E-1C|(jeT2=&e#`SzkWTcs;UzE$k{2(j0|IV zbPOXDVNpz;7=_3|KrU&)Y~b^jtXe_7cD>5RWdpgPM{W`oK3?bX8bTAD-1T)}XQ$7; z-@LLWh)}A)e5TdzHO-r?)(3}(j9$fThT%XQ*R!Rv^>R2mPOY*0si>$>g!4@^fkAVK zks8iM$Kmk>h4`&@@bSVUB4+yr zGvyAtENwNWmoi2dS>rYANI%X?8Y5=xT3e3tj(q*v;Dt*F_Fu|r-)wDCnV=WBoytOZ zXhg}DO!kTWFzXu?5J;n^kc`Q+)0(6u)^4@b*s9E(^9MR)8*)T&;BsC=f4KOcKYu=F zKa|}o-k)V+F%TV}z|_gJs^grAJt>}mR}F{FFpX5koSJYEi9FOsh<2+p?Ma0vN;i#~Td$~Dc$`?JL^<|s#Q2b(`q8Rr(F_|oZL+UyDl?*1IYU(h*YcRVJ@&jSJvjm1T~HOqo>Yy@H$I?Rbla@7};hL z&1xPOc69AECBa)=t#$G?Go{#!G~}}2&z$k+JwS~ukBPEeu3W&9kx0M_bdCUhw%>KvU4H)CoWZF@jfi*2?F;>WL1Nk5HQhLnCPhc%f43=pxlUB| zQUua$k;{|igoj4q1Xh>&T&>U2R=0a``kP2&>gwiu?zuy> zx?6f#PPY)77O^vIc9o91>|-a>P8bAXuTHKF1;9SnDy8zeqfvdgHC@u1Z@%fJ z3-5q6O>-6u4-c#K;ktF}lG25lz~L_^XX@(e9A~)LN-2ZZVG*icd{K>qiRrNO)YMcI zBvMLqL9Q6TiiG@Jo~qBBQ$|U{-FM&3;om0Mnu*iFX;|veVvm?wny^w1*_Ty|(v5#tXZ3ifuhHQ^QOS(S=x2EC*3PZ*ot|w zane{HY3yzF_4PURx8jGu4eaoqwY33~m|pUMdnwb^Yw4yP z{IFv>cFiLcvctbfuculxVlD8bwwYd}6OE&%*smh7ph`{*Ep*=dQ(qvon1m+IgC&AF zi)AaF@qTkQ4+F*v&Uz8YA)UMnr>})lZ$pZzxn0TP=^PN=#Fwn0aBz2#d5~4{aeVIkBlwmdsP9Na3T4@n(3N+`=$kxYkQ$y@$J{`v2Ho?Y9uvqIrQBYRr-8 r-gNu%kRKP1_;IPw*}v2lxe)#zJgI!#R9VSd00000NkvXXu0mjfQ0_LN diff --git a/core/src/main/res/drawable/ic_terning_profile_02.xml b/core/src/main/res/drawable/ic_terning_profile_02.xml index 1ad3e5dd8..8ba5ffc15 100644 --- a/core/src/main/res/drawable/ic_terning_profile_02.xml +++ b/core/src/main/res/drawable/ic_terning_profile_02.xml @@ -1,98 +1,75 @@ - - - - - - + android:width="76dp" + android:height="76dp" + android:viewportWidth="76" + android:viewportHeight="76"> + android:pathData="M38,0L38,0A38,38 0,0 1,76 38L76,38A38,38 0,0 1,38 76L38,76A38,38 0,0 1,0 38L0,38A38,38 0,0 1,38 0z"/> + android:pathData="M76,0H0V76H76V0Z" + android:fillColor="#D4F9DE"/> + + + + + + + + + + + + + - - - - - - - - - - - - - - diff --git a/core/src/main/res/drawable/ic_terning_profile_03.xml b/core/src/main/res/drawable/ic_terning_profile_03.xml index fc45cad6a..25e878efb 100644 --- a/core/src/main/res/drawable/ic_terning_profile_03.xml +++ b/core/src/main/res/drawable/ic_terning_profile_03.xml @@ -1,131 +1,76 @@ - - - - - + android:width="76dp" + android:height="76dp" + android:viewportWidth="76" + android:viewportHeight="76"> + android:pathData="M38,0L38,0A38,38 0,0 1,76 38L76,38A38,38 0,0 1,38 76L38,76A38,38 0,0 1,0 38L0,38A38,38 0,0 1,38 0z"/> + android:pathData="M76.209,0H0.209V76H76.209V0Z" + android:fillColor="#C5DEF2"/> + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - diff --git a/core/src/main/res/drawable/ic_terning_profile_04.xml b/core/src/main/res/drawable/ic_terning_profile_04.xml index 228909ea8..8b27c5c6c 100644 --- a/core/src/main/res/drawable/ic_terning_profile_04.xml +++ b/core/src/main/res/drawable/ic_terning_profile_04.xml @@ -1,150 +1,74 @@ + android:width="76dp" + android:height="76dp" + android:viewportWidth="76" + android:viewportHeight="76"> + android:pathData="M76,0H0V76H76V0Z" + android:fillColor="#E9F1E4"/> - - - - - - - - - - - - - - - - - - - - - - + android:pathData="M64.676,32.956H11.324V85.035H64.676V32.956Z" + android:strokeLineJoin="round" + android:strokeWidth="1.425" + android:fillColor="#ffffff" + android:strokeColor="#171717" + android:strokeLineCap="round"/> + android:pathData="M31.663,53.447C31.663,53.779 31.616,54.131 31.502,54.416C31.388,54.701 31.036,54.872 30.808,55.1C30.58,55.328 30.409,55.623 30.105,55.746C29.801,55.869 29.488,55.841 29.155,55.841C28.823,55.841 28.509,55.822 28.224,55.699C27.939,55.575 27.654,55.395 27.426,55.167C27.198,54.938 26.999,54.682 26.875,54.378C26.752,54.074 26.638,53.761 26.638,53.438C26.638,53.114 26.837,52.811 26.961,52.526C27.084,52.241 27.274,52.003 27.502,51.775C27.73,51.547 27.939,51.319 28.234,51.195C28.528,51.072 28.832,51.072 29.165,51.072C29.497,51.072 29.801,51.082 30.086,51.205C30.371,51.328 30.647,51.509 30.875,51.728C31.103,51.946 31.293,52.212 31.416,52.507C31.54,52.801 31.682,53.105 31.682,53.438L31.663,53.447Z" + android:fillColor="#F9DBDE"/> + android:pathData="M31.663,53.447C31.663,53.779 31.616,54.131 31.502,54.416C31.388,54.701 31.036,54.872 30.808,55.1C30.58,55.328 30.409,55.623 30.105,55.746C29.801,55.869 29.488,55.841 29.155,55.841C28.823,55.841 28.509,55.822 28.224,55.699C27.939,55.575 27.654,55.395 27.426,55.167C27.198,54.938 26.999,54.682 26.875,54.378C26.752,54.074 26.638,53.761 26.638,53.438C26.638,53.114 26.837,52.811 26.961,52.526C27.084,52.241 27.274,52.003 27.502,51.775C27.73,51.547 27.939,51.319 28.234,51.195C28.528,51.072 28.832,51.072 29.165,51.072C29.497,51.072 29.801,51.082 30.086,51.205C30.371,51.328 30.647,51.509 30.875,51.728C31.103,51.946 31.293,52.212 31.416,52.507C31.54,52.801 31.682,53.105 31.682,53.438L31.663,53.447Z" + android:strokeWidth="0.7315" + android:fillColor="#00000000" + android:strokeColor="#F9DBDE"/> + android:pathData="M49.343,53.267C49.343,53.599 49.267,53.932 49.143,54.226C49.02,54.521 48.839,54.825 48.611,55.043C48.383,55.262 48.079,55.433 47.785,55.556C47.49,55.68 47.167,55.651 46.835,55.651C46.502,55.651 46.217,55.585 45.923,55.461C45.628,55.338 45.267,55.281 45.049,55.053C44.83,54.825 44.669,54.511 44.545,54.217C44.422,53.922 44.422,53.599 44.422,53.267C44.422,52.934 44.45,52.611 44.564,52.326C44.678,52.041 44.897,51.775 45.125,51.557C45.353,51.338 45.638,51.215 45.932,51.091C46.227,50.968 46.502,50.92 46.835,50.92C47.167,50.92 47.49,50.863 47.785,50.987C48.079,51.11 48.355,51.3 48.583,51.528C48.811,51.756 49.01,52.022 49.134,52.326C49.257,52.63 49.343,52.944 49.343,53.276V53.267Z" + android:fillColor="#F9DBDE"/> + android:strokeColor="#F9DBDE"/> + android:pathData="M37.506,63.441H38.598C38.988,63.441 39.32,63.707 39.396,64.077L41.762,75.8C41.828,76.199 41.705,76.608 41.42,76.902L39.016,79.372C38.503,79.895 37.648,79.914 37.126,79.401L34.618,76.978C34.314,76.684 34.171,76.256 34.247,75.838L36.717,64.077C36.793,63.707 37.126,63.441 37.515,63.441H37.506Z" + android:strokeWidth="1.425" + android:fillColor="#A6B7FF" + android:strokeColor="#171717"/> + android:pathData="M39.168,63.907H36.955C36.518,63.907 36.147,63.603 36.053,63.185L35.54,60.952C35.407,60.373 35.853,59.812 36.442,59.812H39.701C40.299,59.812 40.745,60.373 40.603,60.952L40.071,63.185C39.976,63.603 39.596,63.897 39.168,63.897V63.907Z" + android:strokeWidth="1.425" + android:fillColor="#A6B7FF" + android:strokeColor="#171717"/> + android:pathData="M34.818,52.497C35.384,52.497 35.843,51.791 35.843,50.92C35.843,50.049 35.384,49.343 34.818,49.343C34.251,49.343 33.792,50.049 33.792,50.92C33.792,51.791 34.251,52.497 34.818,52.497Z" + android:fillColor="#171717"/> + android:pathData="M41.182,52.497C41.749,52.497 42.208,51.791 42.208,50.92C42.208,50.049 41.749,49.343 41.182,49.343C40.616,49.343 40.157,50.049 40.157,50.92C40.157,51.791 40.616,52.497 41.182,52.497Z" + android:fillColor="#171717"/> + diff --git a/core/src/main/res/drawable/ic_terning_profile_05.xml b/core/src/main/res/drawable/ic_terning_profile_05.xml index 2d21f7990..9a32c789e 100644 --- a/core/src/main/res/drawable/ic_terning_profile_05.xml +++ b/core/src/main/res/drawable/ic_terning_profile_05.xml @@ -1,111 +1,73 @@ - - - - + android:width="76dp" + android:height="76dp" + android:viewportWidth="76" + android:viewportHeight="76"> + android:pathData="M38,0L38,0A38,38 0,0 1,76 38L76,38A38,38 0,0 1,38 76L38,76A38,38 0,0 1,0 38L0,38A38,38 0,0 1,38 0z"/> + android:pathData="M76,0H0V76H76V0Z" + android:fillColor="#E6FFF6"/> + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - diff --git a/data/src/main/java/com/terning/data/dto/request/SignUpRequestDto.kt b/data/src/main/java/com/terning/data/dto/request/SignUpRequestDto.kt index fbfc3d0bf..9cea3722d 100644 --- a/data/src/main/java/com/terning/data/dto/request/SignUpRequestDto.kt +++ b/data/src/main/java/com/terning/data/dto/request/SignUpRequestDto.kt @@ -8,7 +8,7 @@ data class SignUpRequestDto( @SerialName("name") val name: String, @SerialName("profileImage") - val profileImage: Int, + val profileImage: String, @SerialName("authType") val authType: String ) \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/dto/response/MyPageResponseDto.kt b/data/src/main/java/com/terning/data/dto/response/MyPageResponseDto.kt index 035919f84..3afedf5b3 100644 --- a/data/src/main/java/com/terning/data/dto/response/MyPageResponseDto.kt +++ b/data/src/main/java/com/terning/data/dto/response/MyPageResponseDto.kt @@ -7,6 +7,8 @@ import kotlinx.serialization.Serializable data class MyPageResponseDto( @SerialName("name") val name: String, + @SerialName("profileImage") + val profileImage: String, @SerialName("authType") val authType: String ) \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt b/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt index 2ae84fa1b..cfc5c65ba 100644 --- a/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt +++ b/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt @@ -3,4 +3,9 @@ package com.terning.data.mapper.mypage import com.terning.data.dto.response.MyPageResponseDto import com.terning.domain.entity.mypage.MyPageProfileModel -fun MyPageResponseDto.toMyPageProfile() = MyPageProfileModel(name = name, authType = authType) +fun MyPageResponseDto.toMyPageProfile() = + MyPageProfileModel( + name = name, + profileImage = profileImage, + authType = authType + ) diff --git a/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt b/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt index 9576d68dc..b9a617564 100644 --- a/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt +++ b/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt @@ -2,5 +2,6 @@ package com.terning.domain.entity.mypage data class MyPageProfileModel( val name: String, + val profileImage: String, val authType: String ) \ No newline at end of file diff --git a/domain/src/main/java/com/terning/domain/entity/onboarding/SignUpRequest.kt b/domain/src/main/java/com/terning/domain/entity/onboarding/SignUpRequest.kt index 7b24e160e..dc74f8bdb 100644 --- a/domain/src/main/java/com/terning/domain/entity/onboarding/SignUpRequest.kt +++ b/domain/src/main/java/com/terning/domain/entity/onboarding/SignUpRequest.kt @@ -2,6 +2,6 @@ package com.terning.domain.entity.onboarding data class SignUpRequest ( val name : String, - val profileImage : Int, + val profileImage : String, val authType : String ) \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt index b31050de1..8dec567d4 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt @@ -1,5 +1,6 @@ package com.terning.feature.mypage.mypage +import android.util.Log import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,15 +16,12 @@ import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect -import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -52,7 +50,7 @@ import com.terning.feature.mypage.mypage.component.MyPageItem @Composable fun MyPageRoute( paddingValues: PaddingValues, - navigateToProfileEdit: (String, Int) -> Unit, + navigateToProfileEdit: (String, String) -> Unit, viewModel: MyPageViewModel = hiltViewModel(), ) { val state by viewModel.state.collectAsStateWithLifecycle() @@ -81,7 +79,7 @@ fun MyPageRoute( when (sideEffect) { is MyPageSideEffect.NavigateToProfileEdit -> navigateToProfileEdit( state.name, - state.profile + state.profileImage ) } } @@ -127,13 +125,18 @@ fun MyPageRoute( onServiceClick = {}, onPersonalClick = {}, name = state.name, - profile = state.profile + profileImage = state.profileImage ) } - is UiState.Loading -> {} + is UiState.Loading -> { + Log.d("LYB", "로딩중") + } is UiState.Empty -> {} - is UiState.Failure -> {} + is UiState.Failure -> { + Log.d("LYB", "실패") + + } } if (state.showNotice) { @@ -158,7 +161,7 @@ fun MyPageScreen( onPersonalClick: () -> Unit, paddingValues: PaddingValues = PaddingValues(), name: String = "", - profile: Int = 0 + profileImage: String = "" ) { Column( modifier = Modifier @@ -168,7 +171,7 @@ fun MyPageScreen( ) { UserProfile( name = name, - profile = profile, + profileImage = profileImage, onEditClick = onEditClick ) TerningCommunity( @@ -221,7 +224,7 @@ fun UserProfile( name: String, onEditClick: () -> Unit, modifier: Modifier = Modifier, - profile: Int = 0, + profileImage: String = "", ) { Row( modifier = modifier.padding( @@ -230,7 +233,7 @@ fun UserProfile( bottom = 32.dp ) ) { - MyPageProfile(profile = profile) + MyPageProfile(profileImage = profileImage) Column { Text( text = name, diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageState.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageState.kt index bf072cb13..24f76c1ae 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageState.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageState.kt @@ -6,7 +6,7 @@ data class MyPageState( val isLogoutAndQuitSuccess: UiState = UiState.Loading, val isGetSuccess: UiState = UiState.Loading, val name: String = "", - val profile: Int = 0, + val profileImage: String = "", val authType : String ="", val showNotice: Boolean = false, val showOpinion: Boolean = false, diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt index b4f39bb61..b079d413b 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt @@ -104,6 +104,7 @@ class MyPageViewModel @Inject constructor( _state.value = _state.value.copy( isGetSuccess = UiState.Success(true), name = response.name, + profileImage = response.profileImage, authType = response.authType ) }.onFailure { diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/component/MyPageProfile.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/component/MyPageProfile.kt index cd12d2623..a0d985004 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/component/MyPageProfile.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/component/MyPageProfile.kt @@ -10,36 +10,21 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.terning.core.R +import com.terning.core.type.ProfileImage @Composable fun MyPageProfile( modifier: Modifier = Modifier, - profile: Int + profileImage: String ) { - val options = listOf( - R.drawable.ic_terning_profile_00, - R.drawable.ic_terning_profile_01, - R.drawable.ic_terning_profile_02, - R.drawable.ic_terning_profile_03, - R.drawable.ic_terning_profile_04, - R.drawable.ic_terning_profile_05 - ) - - val option = when (profile) { - 0 -> options[0] - 1 -> options[1] - 2 -> options[2] - 3 -> options[3] - 4 -> options[4] - else -> options[5] - } + val userProfile = ProfileImage.fromString(profileImage) Image( - painter = painterResource(id = option), + painter = painterResource(id = userProfile.drawableResId), modifier = modifier .size(72.dp) .clip(shape = CircleShape) .aspectRatio(1f), contentDescription = "profile image" ) -} +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/navigation/MyPageNavigation.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/navigation/MyPageNavigation.kt index 7248c8a2a..e2543a085 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/navigation/MyPageNavigation.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/navigation/MyPageNavigation.kt @@ -25,10 +25,10 @@ fun NavGraphBuilder.myPageNavGraph( composable { MyPageRoute( paddingValues = paddingValues, - navigateToProfileEdit = { name, profile -> + navigateToProfileEdit = { name, profileImage -> navHostController.navigateProfileEdit( name, - profile + profileImage ) } ) diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt index 577c5689b..24a81239a 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt @@ -35,13 +35,14 @@ import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.designsystem.theme.White import com.terning.core.extension.addFocusCleaner import com.terning.core.extension.noRippleClickable +import com.terning.core.type.ProfileImage import com.terning.feature.R @Composable fun ProfileEditRoute( navigateUp: () -> Unit, initialName: String, - initialProfile: Int, + initialProfile: String, viewModel: ProfileEditViewModel = hiltViewModel(), ) { val state by viewModel.state.collectAsStateWithLifecycle() @@ -57,7 +58,10 @@ fun ProfileEditRoute( } LaunchedEffect(key1 = true) { - viewModel.updateInitialInfo(initialName = initialName, initialProfile = initialProfile) + viewModel.updateInitialInfo( + initialName = initialName, + initialProfile = initialProfile + ) } LaunchedEffect(viewModel.sideEffects, lifecycleOwner) { @@ -72,14 +76,15 @@ fun ProfileEditRoute( if (state.showBottomSheet) { ProfileBottomSheet( onDismiss = { viewModel.updateBottomSheet(false) }, - onSaveClick = { index -> + onSaveClick = { profileImage -> viewModel.updateBottomSheet(false) - viewModel.updateProfile(index) + viewModel.updateProfile(profileImage.stringValue) }, initialSelectedOption = state.profile ) } + ProfileEditScreen( profileEditState = state, onProfileEditClick = { isVisible -> @@ -137,7 +142,7 @@ fun ProfileEditScreen( onProfileEditClick(true) } .align(Alignment.CenterHorizontally), - index = profileEditState.profile + profileImage = profileEditState.profile ) Spacer(modifier = Modifier.height(48.dp)) Text( diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditState.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditState.kt index eb34b9548..a8f1d2b96 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditState.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditState.kt @@ -3,7 +3,7 @@ package com.terning.feature.mypage.profileedit data class ProfileEditState( val name: String = "", val initialName: String = "", - val profile: Int = 0, + val profile: String = "", val initialView: Boolean = true, val isButtonValid: Boolean = false, val authType: String = "", diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt index 58bf6349f..ecc575a98 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt @@ -27,7 +27,7 @@ class ProfileEditViewModel @Inject constructor() : ViewModel() { _state.value = _state.value.copy(showBottomSheet = isVisible) } - fun updateInitialInfo(initialName: String, initialProfile: Int) { + fun updateInitialInfo(initialName: String, initialProfile: String) { _state.value = _state.value.copy( name = initialName, initialName = initialName, @@ -36,11 +36,17 @@ class ProfileEditViewModel @Inject constructor() : ViewModel() { } fun updateName(name: String) { - _state.value = _state.value.copy(name = name, initialView = false) + _state.value = _state.value.copy( + name = name, + initialView = false + ) } - fun updateProfile(profile: Int) { - _state.value = _state.value.copy(profile = profile, initialView = false) + fun updateProfile(profile: String) { + _state.value = _state.value.copy( + profile = profile, + initialView = false + ) } fun updateButtonValidation(isValid: Boolean) { diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/navigation/ProfileEditNavigation.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/navigation/ProfileEditNavigation.kt index 71ef7f910..61b250f75 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/navigation/ProfileEditNavigation.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/navigation/ProfileEditNavigation.kt @@ -16,11 +16,11 @@ import kotlinx.serialization.Serializable fun NavController.navigateProfileEdit( name: String, - profile: Int, + profileImage: String, navOptions: NavOptions? = null ) { navigate( - route = ProfileEdit(name = name, profile = profile), + route = ProfileEdit(name = name, profileImage = profileImage), navOptions = navOptions ) } @@ -45,7 +45,7 @@ fun NavGraphBuilder.profileEditNavGraph( val args = it.toRoute() ProfileEditRoute( initialName = args.name, - initialProfile = args.profile, + initialProfile = args.profileImage, navigateUp = { navHostController.navigateUp() } ) } @@ -54,5 +54,5 @@ fun NavGraphBuilder.profileEditNavGraph( @Serializable data class ProfileEdit( val name: String, - val profile: Int + val profileImage: String ) : Route \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt index 4be2f12c7..ba7e5c715 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpRoute.kt @@ -63,9 +63,9 @@ fun SignUpRoute( if (state.showBottomSheet) { ProfileBottomSheet( onDismiss = { viewModel.updateBottomSheet(false) }, - onSaveClick = { index -> + onSaveClick = { profileImage -> viewModel.updateBottomSheet(false) - viewModel.updateProfileImage(index) + viewModel.updateProfileImage(profileImage.stringValue) }, initialSelectedOption = state.profileImage ) @@ -127,7 +127,7 @@ fun SignUpScreen( modifier = Modifier.noRippleClickable { onProfileEditClick(true) }, - index = state.profileImage + profileImage = state.profileImage ) } Column( @@ -167,7 +167,7 @@ fun SignUpScreenPreview() { onSignUpClick = {}, onInputChange = {}, onProfileEditClick = {}, - onValidationChanged = {} + onValidationChanged = {}, ) } } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt index 5a3f8b253..02c6c1796 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt @@ -2,7 +2,7 @@ package com.terning.feature.onboarding.signup data class SignUpState( val name: String = "", - val profileImage: Int = 0, + val profileImage: String = "", val isButtonValid: Boolean = false, val authId: String = "", val showBottomSheet: Boolean = false diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt index 504bf3ada..6493c627b 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt @@ -36,7 +36,7 @@ class SignUpViewModel @Inject constructor( _state.value = _state.value.copy(name = name) } - fun updateProfileImage(profileImage: Int) { + fun updateProfileImage(profileImage: String) { _state.value = _state.value.copy(profileImage = profileImage) } From e34d4d99e2015eca54e1a6eb229794c40d89185c Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 12:12:14 +0900 Subject: [PATCH 22/33] =?UTF-8?q?[FEAT/#221]=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=8B=A4=ED=8C=A8=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bottomsheet/ProfileBottomSheet.kt | 4 +- .../com/terning/core/type/ProfileImage.kt | 6 +- .../drawable/ic_terning_profile_default.xml | 9 +++ .../feature/mypage/mypage/MyPageRoute.kt | 28 ++++--- .../feature/mypage/mypage/MyPageSideEffect.kt | 3 + .../feature/mypage/mypage/MyPageViewModel.kt | 2 + .../mypage/profileedit/ProfileEditRoute.kt | 1 - .../res/drawable/ic_terning_profile_00.xml | 60 -------------- .../res/drawable/ic_terning_profile_01.xml | 80 ------------------- .../res/drawable/ic_terning_profile_02.xml | 75 ----------------- .../res/drawable/ic_terning_profile_03.xml | 76 ------------------ .../res/drawable/ic_terning_profile_04.xml | 74 ----------------- .../res/drawable/ic_terning_profile_05.xml | 73 ----------------- 13 files changed, 34 insertions(+), 457 deletions(-) create mode 100644 core/src/main/res/drawable/ic_terning_profile_default.xml delete mode 100644 feature/src/main/res/drawable/ic_terning_profile_00.xml delete mode 100644 feature/src/main/res/drawable/ic_terning_profile_01.xml delete mode 100644 feature/src/main/res/drawable/ic_terning_profile_02.xml delete mode 100644 feature/src/main/res/drawable/ic_terning_profile_03.xml delete mode 100644 feature/src/main/res/drawable/ic_terning_profile_04.xml delete mode 100644 feature/src/main/res/drawable/ic_terning_profile_05.xml diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt index 640952599..9ed4fbe71 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt @@ -97,10 +97,8 @@ fun RadioButtonGroup( initialSelectedOption: String, modifier: Modifier = Modifier, ) { - // 모든 ProfileImage 옵션을 가져옵니다. val options = ProfileImage.entries - // 초기 선택된 옵션을 ProfileImage로 변환하여 인덱스를 저장합니다. var selectedOptionIndex by rememberSaveable { mutableIntStateOf(ProfileImage.toIndex(ProfileImage.fromString(initialSelectedOption))) } @@ -111,7 +109,7 @@ fun RadioButtonGroup( horizontalArrangement = Arrangement.spacedBy(20.dp), modifier = modifier.padding(horizontal = 34.dp) ) { - itemsIndexed(options) { index, option -> + itemsIndexed(options.take(6)) { index, option -> val imageModifier = if (selectedOptionIndex == index) { Modifier .border( diff --git a/core/src/main/java/com/terning/core/type/ProfileImage.kt b/core/src/main/java/com/terning/core/type/ProfileImage.kt index 79fd6a1a4..eac0fda9d 100644 --- a/core/src/main/java/com/terning/core/type/ProfileImage.kt +++ b/core/src/main/java/com/terning/core/type/ProfileImage.kt @@ -12,7 +12,8 @@ enum class ProfileImage( SMART(drawableResId = R.drawable.ic_terning_profile_02, stringValue = "smart"), GLASS(drawableResId = R.drawable.ic_terning_profile_03, stringValue = "glass"), CALENDAR(drawableResId = R.drawable.ic_terning_profile_04, stringValue = "calendar"), - PASSION(drawableResId = R.drawable.ic_terning_profile_05, stringValue = "passion"); + PASSION(drawableResId = R.drawable.ic_terning_profile_05, stringValue = "passion"), + DEFAULT(drawableResId = R.drawable.ic_terning_profile_default, stringValue = "default"); companion object { fun fromString(value: String): ProfileImage = when (value) { @@ -21,7 +22,8 @@ enum class ProfileImage( "smart" -> SMART "glass" -> GLASS "calendar" -> CALENDAR - else -> PASSION + "passion" -> PASSION + else -> DEFAULT } fun toIndex(profileImage: ProfileImage): Int { diff --git a/core/src/main/res/drawable/ic_terning_profile_default.xml b/core/src/main/res/drawable/ic_terning_profile_default.xml new file mode 100644 index 000000000..e3a32368c --- /dev/null +++ b/core/src/main/res/drawable/ic_terning_profile_default.xml @@ -0,0 +1,9 @@ + + + diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt index 8dec567d4..4ec22dbcc 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageRoute.kt @@ -1,6 +1,5 @@ package com.terning.feature.mypage.mypage -import android.util.Log import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -42,6 +41,7 @@ import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.designsystem.theme.White import com.terning.core.extension.noRippleClickable +import com.terning.core.extension.toast import com.terning.core.state.UiState import com.terning.feature.R import com.terning.feature.mypage.component.MyPageProfile @@ -81,6 +81,8 @@ fun MyPageRoute( state.name, state.profileImage ) + + is MyPageSideEffect.ShowToast -> context.toast(sideEffect.message) } } } @@ -129,13 +131,13 @@ fun MyPageRoute( ) } - is UiState.Loading -> { - Log.d("LYB", "로딩중") - } + is UiState.Loading -> {} is UiState.Empty -> {} is UiState.Failure -> { - Log.d("LYB", "실패") - + MyPageScreen( + paddingValues = paddingValues, + profileImage = state.profileImage, + ) } } @@ -152,13 +154,13 @@ fun MyPageRoute( @Composable fun MyPageScreen( - onEditClick: () -> Unit, - onLogoutClick: () -> Unit, - onQuitClick: () -> Unit, - onNoticeClick: () -> Unit, - onOpinionClick: () -> Unit, - onServiceClick: () -> Unit, - onPersonalClick: () -> Unit, + onEditClick: () -> Unit = {}, + onLogoutClick: () -> Unit = {}, + onQuitClick: () -> Unit = {}, + onNoticeClick: () -> Unit = {}, + onOpinionClick: () -> Unit = {}, + onServiceClick: () -> Unit = {}, + onPersonalClick: () -> Unit = {}, paddingValues: PaddingValues = PaddingValues(), name: String = "", profileImage: String = "" diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageSideEffect.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageSideEffect.kt index 26d1e5856..edeb627ea 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageSideEffect.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageSideEffect.kt @@ -1,5 +1,8 @@ package com.terning.feature.mypage.mypage +import androidx.annotation.StringRes + sealed class MyPageSideEffect { data object NavigateToProfileEdit : MyPageSideEffect() + data class ShowToast(@StringRes val message: Int) : MyPageSideEffect() } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt index b079d413b..535cf4b6d 100644 --- a/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt +++ b/feature/src/main/java/com/terning/feature/mypage/mypage/MyPageViewModel.kt @@ -13,6 +13,7 @@ import com.kakao.sdk.user.UserApiClient import com.terning.core.state.UiState import com.terning.domain.repository.MyPageRepository import com.terning.domain.repository.TokenRepository +import com.terning.feature.R import com.terning.feature.main.MainActivity import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow @@ -108,6 +109,7 @@ class MyPageViewModel @Inject constructor( authType = response.authType ) }.onFailure { + _sideEffects.emit(MyPageSideEffect.ShowToast(R.string.server_failure)) _state.value = _state.value.copy(isGetSuccess = UiState.Failure(it.toString())) } } diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt index 24a81239a..4e33d719f 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt @@ -84,7 +84,6 @@ fun ProfileEditRoute( ) } - ProfileEditScreen( profileEditState = state, onProfileEditClick = { isVisible -> diff --git a/feature/src/main/res/drawable/ic_terning_profile_00.xml b/feature/src/main/res/drawable/ic_terning_profile_00.xml deleted file mode 100644 index 99edfdf96..000000000 --- a/feature/src/main/res/drawable/ic_terning_profile_00.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/feature/src/main/res/drawable/ic_terning_profile_01.xml b/feature/src/main/res/drawable/ic_terning_profile_01.xml deleted file mode 100644 index 0bfcc7b29..000000000 --- a/feature/src/main/res/drawable/ic_terning_profile_01.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/feature/src/main/res/drawable/ic_terning_profile_02.xml b/feature/src/main/res/drawable/ic_terning_profile_02.xml deleted file mode 100644 index 8ba5ffc15..000000000 --- a/feature/src/main/res/drawable/ic_terning_profile_02.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/feature/src/main/res/drawable/ic_terning_profile_03.xml b/feature/src/main/res/drawable/ic_terning_profile_03.xml deleted file mode 100644 index 25e878efb..000000000 --- a/feature/src/main/res/drawable/ic_terning_profile_03.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/feature/src/main/res/drawable/ic_terning_profile_04.xml b/feature/src/main/res/drawable/ic_terning_profile_04.xml deleted file mode 100644 index 8b27c5c6c..000000000 --- a/feature/src/main/res/drawable/ic_terning_profile_04.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/feature/src/main/res/drawable/ic_terning_profile_05.xml b/feature/src/main/res/drawable/ic_terning_profile_05.xml deleted file mode 100644 index 9a32c789e..000000000 --- a/feature/src/main/res/drawable/ic_terning_profile_05.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - From f116f312cf41f29a6e77e0a5cc2fd35ccf49d4c6 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 12:15:48 +0900 Subject: [PATCH 23/33] =?UTF-8?q?[FEAT/#221]=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/bottomsheet/ProfileBottomSheet.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt index 9ed4fbe71..8067b2af7 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt @@ -39,7 +39,7 @@ import kotlinx.coroutines.launch * @param modifier 바텀시트에 적용할 Modifier입니다. * @param onDismiss 바텀시트가 닫힐 때 호출되는 콜백 함수입니다. * @param onSaveClick 저장하기 버튼 클릭 시, 호출되는 콜백 함수입니다. - * @param initialSelectedOption 초기에 선택된 이미지를 나타내는 인덱스 값입니다. + * @param initialSelectedOption 초기에 선택된 이미지의 이름을 string 값입니다. */ @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -87,8 +87,8 @@ fun ProfileBottomSheet( /** * 6개의 프로필 이미지 중, 하나의 이미지만 선택할 수 있는 라디오 버튼입니다. * - * @param onOptionSelected 선택된 이미지의 인덱스 값을 나타내는 콜백 함수입니다. - * @param initialSelectedOption 초기에 선택된 이미지를 나타내는 인덱스 값입니다. + * @param onOptionSelected 선택된 이미지의 이름을 나타내는 콜백 함수입니다. + * @param initialSelectedOption 초기에 선택된 이미지의 이름을 나타내는 string 값입니다. * @param modifier 라디오 버튼에 적용할 Modifier입니다. */ @Composable From e3643d33f911f1090fbef214f229cbc2374c1eb8 Mon Sep 17 00:00:00 2001 From: boiledegg Date: Sat, 7 Sep 2024 16:09:11 +0900 Subject: [PATCH 24/33] =?UTF-8?q?[ADD/#223]=20=EA=B7=B8=EB=9E=98=ED=94=BD?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/src/main/assets/terning_onboarding_start.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 feature/src/main/assets/terning_onboarding_start.json diff --git a/feature/src/main/assets/terning_onboarding_start.json b/feature/src/main/assets/terning_onboarding_start.json new file mode 100644 index 000000000..b233f8331 --- /dev/null +++ b/feature/src/main/assets/terning_onboarding_start.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.5.10","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":66.0000026882351,"w":3120,"h":3720,"nm":"aos_onboarding","ddd":0,"assets":[{"id":"image_0","w":512,"h":420,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_1","w":512,"h":421,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_2","w":308,"h":366,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_3","w":340,"h":389,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_4","w":510,"h":353,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_5","w":317,"h":498,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_6","w":417,"h":369,"u":"/images/","p":"data:image/png;base64,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","e":0},{"id":"image_7","w":2672,"h":1966,"u":"/images/","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACnAAAAeuCAYAAADJ3O8eAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzd73UcZbru4aequqtbstRyR2BnYGeAM0AnAjQRjHYEo4lgiwi2iOBoIhg7AkwGOIKiWzpW/6t6z4eR2MbYBmNLb7V0XWuxYAELfl/gQ+n280YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkFmROwAAAAAA4K+6vLx8nlJ6/P6f39/ff5khBwAAAADgTzPgBAAAAAB6o2max4PB4HlERNd1zyPicVEUTyPi6fXf8jwiDj7zH/sqIiKl9LIoip/Lsny9t7f3+usUAwAAAAD8NQacAAAAAMCteXeQGRHRdd2Lmz8uy/JxSunmrz2NiCd3WxevrkedryeTyfkd/7sBAAAAgAfOgBMAAAAA+MtunjDvuu7Fe4PMb7KG/TWvUkrnVVW9dKETAAAAALhtBpwAAAAAwJ/SNM3jqqpeFEXx4nqouY0jzT/rTVEU5xFxvr+//zJ3DAAAAABw/xhwAgAAAAAfdXl5+bxt28OiKA4j4lnunkxmEXEeEedt276cTqe/5A4CAAAAALafAScAAAAA8BtN0zwuy/KoKIqjeLijzU95lVI677rufDqd/pw7BgAAAADYTgacAAAAAEBERFxcXLxIKR1FxHe5W7bIm5TSqTEnAAAAAPC5DDgBAAAA4IG7Hm6eRMQ3uVu23KuIOJ1MJue5QwAAAACA/jPgBAAAAIAHynDz1ryJiJO2bc+n0+kvuWMAAAAAgH4y4AQAAACAB8Zw887Mrp9XPzXkBAAAAADeZ8AJAAAAAA+E4WY2hpwAAAAAwO8YcAIAAADAPdc0zdOqqk4i4rvcLQ/cm4g4mUwmZ7lDAAAAAID8DDgBAAAA4J4y3OwtQ04AAAAAwIATAAAAAO4bw82t8aooipP9/f2XuUMAAAAAgLtnwAkAAAAA94Th5tYy5AQAAACAB8iAEwAAAAC2XNM0jweDwUlK6e+5W/ginlYHAAAAgAfEgBMAAAAAtthsNjspiuI4Ig5yt/DVGHICAAAAwANgwAkAAAAAW+ji4uJFSuksIp7kbuHWvEkpnXZddzadTn/JHQMAAAAAfF0GnAAAAACwRZqmeVxV1VlEfJu7hTszux5ynhpyAgAAAMD9YcAJAAAAAFtiNpsdF0VxEp5Lf6hmKaXTg4ODk9whAAAAAMCXM+AEAAAAgJ5rmubp9dXNb3K30AtvIuJkMpmc5Q4BAAAAAP46A04AAAAA6DFXN3+vLMsoiv/9tFlV1W/+etu2ERGRUoqu6+607Y79VBTF8f7+/svcIQAAAADA5zPgBAAAAIAeaprmcVVV5/GArm4WRRFlWUbE/44yy7L83Z/7XG3b/ua3lNLXCe6PH9q2PZ5Op7/kDgEAAAAA/jwDTgAAAADomfl8fhgRZ7HlVzffvZT57vhyMBj8+sfvjjbvStu2sdlsYrPZ3KcLnbOIOPasOgAAAABsDwNOAAAAAOiJ66ubpxHxXe6Wz1GWZVRV9Zvfv/vEeZ91XfebQec98Kpt20PXOAEAAACg/7bjKyoAAAAA3HOXl5fPu647j4gnuVv+jLIsYzgcxmAwuPMLmrclpfSbMecWP7U+i4ijyWRynjsEAAAAAPg4A04AAAAAyGw2mx0XRfHfuTv+jOFwGMPh8DdPot9XXdfFer3e2qfWi6L4frPZnLjGCQAAAAD9ZMAJAAAAAJlcP5l+FhHf5m75I8PhMOq6vjfXNj/XzZhzvV5v22XOn8qyPNrb23udOwQAAAAA+C0DTgAAAADIYFueTH/ow833pZRitVpt3ZAzpfRfBwcHp7k7AAAAAID/ZcAJAAAAAHdsPp8fRcRpRBxkTvmoqqpiPB4bbn7Elg45X7VtezSdTn/OHQIAAAAAGHACAAAAwJ2az+dnEfFd7o6PqaoqRqNRVFWVO2UrbOGQcxYRx5PJ5Cx3CAAAAAA8dAacAAAAAHAHmqZ5XFXVeUR8k7vlQww3v8wWDjn/dX2N85fcIQAAAADwUBlwAgAAAMAtu7y8fN513XlEPMnd8j7Dza+r67pfh5xbYBYRR5PJ5Dx3CAAAAAA8RAacAAAAAHCL5vP5UUScRsRB5pTfMNy8Xds05CyK4vvNZnPiGicAAAAA3C0DTgAAAAC4JfP5/Cwivsvd8a6yLGM0GsVgMMid8iBs0ZDzp7Isj/b29l7nDgEAAACAh8KAEwAAAAC+sqZpnlZVdR4Rz3K33CiKIuq6jrquc6c8SF3XxXq9jvV6HSml3DkflVL6r4ODg9PcHQAAAADwEBhwAgAAAMBX1Mcn04fDYYxGoygKnwNzSyn9epGzx0POV23bHnpSHQAAAABuly+2AAAAAPAVNE3zuKqq0+jRk+llWcZ4PI6qqnKn8J4tGHLOIuJoMpmc5w4BAAAAgPvKgBMAAAAAvtDFxcWLlNJZRDzJ3XKjrusYjUa5M/gDfR9yFkXx/WazOXGNEwAAAAC+PgNOAAAAAPiLmqZ5en1189vcLTfKsoydnZ0oyzJ3Cp+h50PON2VZHu7t7b3OHQIAAAAA94kBJwAAAAB8psvLy+dd1x1Hj55Lj3B18z5IKcVyuYz1ep075XdSSv/suu7UNU4AAAAA+DoMOAEAAADgT7p+Kv0kIr7J3fKusixjPB5HVVW5U/hK2raNxWIRXdflTnnfm6Iojvb391/mDgEAAACAbWfACQAAAAB/oK/DzYiIwWAQ4/E4isKnvvtouVzGarXKnfE7RVF8v9lsTlzjBAAAAIC/zlddAAAAAPiIpmmeVlV1Fj0cbhZFEaPRKIbDYe4UblnbtnF1dRUppdwp73ONEwAAAAC+gAEnAAAAALynaZrHZVkeF0Xxj9wtH1KWZezs7ERZlrlTuCMppVgsFrHZbHKn/I5rnAAAAADw1xhwAgAAAMA7rp9LP4uIJ7lbPmQ4HMZoNPJk+gO1Wq1itVr18hpnWZaHe3t7r3OHAAAAAMC28Ev0AQAAAODabDY7SSn9O3o63hyPxzEej403H7C6rmN3d7eP11efdF3342w2O8kdAgAAAADbwpdeAAAAAB68pmmeVlV1HhHPcrd8SFEUfR3tkdFyuYzVapU740NetW17NJ1Of84dAgAAAAB9ZsAJAAAAwIM2n88PI+IsIg4yp3xQWZaxu7vr6iYf1HVdXF1dRdd1uVPeN4uIo8lkcp47BAAAAAD6yldfAAAAAB6kpmkeV1V1GhHf5W75mOFwGKPRyHiTT0opxWq16uU1zqIovt9sNifT6fSX3C0AAAAA0De+/AIAAADw4FxeXj7vuu4sevpkekTEaDSKuq5zZ7BF2raNq6urSCnlTnnfm7IsD/f29l7nDgEAAACAPilzBwAAAADAXZrNZsdd172Mno43i6KIR48eGW/y2aqqikePHsVgMMid8r4nXdf9OJvNTnKHAAAAAECfuMAJAAAAwINw/WT6WUR8m7vlY6qqip2dHU+m88XW63Usl8s+XuP8qSzLI9c4AQAAAMCAEwAAAIAH4OLi4kVK6SwinuRu+Zi6rmM0GuXO4B7pui6urq6i67rcKb+TUvrnwcHBSe4OAAAAAMjJgBMAAACAe202m50URfGP3B0fU5Zl7OzsRFmWuVO4p5bLZaxWq9wZH+IaJwAAAAAPmgEnAAAAAPfS9ZPp5xHxTe6WjxkMBjEejz2Zzq1r2zaurq76+KS6a5wAAAAAPFi+DAMAAABw78zn88OIOIuIg8wpH1QURYzH4xgMBrlTeEBSSrFYLGKz2eRO+ZCf2rY9nE6nP+cOAQAAAIC7YsAJAAAAwL1ycXFxmlL6e+6Oj6nrOuq6dnWTbNbrdSyXyz5e45xFxPFkMjnLHQIAAAAAd8FXYgAAAADuhcvLy+dd151FxLPcLR9SVVWMx+MoyzJ3CkTXdbFYLKJt29wpH/Kvtm2PptPpL7lDAAAAAOA2GXACAAAAsPXm8/lRRJxGD59Mr6oqRqNRVFWVOwV+p8fXON+UZXm4t7f3OncIAAAAANwWA04AAAAAtlpfn0wfDAZR17XhJr2XUorFYhGbzSZ3yu+klP7r4ODgNHcHAAAAANwGA04AAAAAtlLTNI+rqjqPiG9yt7xrOBxGXdeeSmfrbDabWCwWfbzG6Ul1AAAAAO4lA04AAAAAts71ePNlRDzL3XKjqqoYj8eGm2y1Hl/j/KksyyNPqgMAAABwnxhwAgAAALBV+jbeLIoi6rqOuq5zp8BXs16vY7lc9u0a56woisP9/f2XuUMAAAAA4Gsw4AQAAABga/RtvOnqJvdZ13VxdXUVXdflTnnf3yaTyVnuCAAAAAD4UgacAAAAAGyFvo0367qO0WiUOwNu3XK5jNVqlTvjN1JK/zw4ODjJ3QEAAAAAX8KAEwAAAICtMJ/PX0bEN7k7yrKM8XgcVVXlToE707ZtLBaLvl3j/GEymRzljgAAAACAv8qAEwAAAIDem8/nZxHxXe6OwWAQ4/E4isJnNR6elFIsFovYbDa5U971qm3bw+l0+kvuEAAAAAD4XL40AwAAANBrfRhvFkURdV1HXdc5M6AXNptNLBaLSCnlTrnxpizLw729vde5QwAAAADgcxhwAgAAANBbfRhvlmUZOzs7UZZlzgzola7rYrFYRNu2uVNuzCLieDKZnOUOAQAAAIA/y4ATAAAAgN5pmuZxVVXnEfFNzo7hcBij0ciT6fARq9UqVqtVn65x/tC27bEn1QEAAADYBr48AwAAANArl5eXz7uuO4+IJ7kaiqKI8Xgcg8EgVwJsjR5e4/ypLMsjT6oDAAAA0HfefQIAAACgN2az2UnXdT9GxvFmWZaxu7trvAl/0s1/Mz26Vvus67ofZ7PZce4QAAAAAPiUXnxNAwAAAOBh68uT6XVdx2g0ypkAW62H1zj/1bbtkSfVAQAAAOgjA04AAAAAsrq4uHiRUjqPiINcDUVRxM7OTlRVlSsB7pXVahXL5TJ3xo03RVEc7e/vv8wdAgAAAADv8oQ6AAAAANnMZrOTlNK/I+N4czAYxKNHj4w34Suq6zoePXoUZdmLT9BPUkr/ns1mJ7lDAAAAAOBdLnACAAAAcOeun0w/i4hvc3aMRqOo6zpnAtxrKaVYLpexXq9zp9x41bbtoSfVAQAAAOgDA04AAAAA7tTl5eXzruvOIuJZrgZPpsPdWq/XsVwuI6WUOyUiYlYUxaEn1QEAAADIrRfv1wAAAADwMMzn86Ou615GxvFmWZaxu7trvAl3aDgcxu7ubl+eVD/wpDoAAAAAfeACJwAAAAB34uLi4jSl9PecDTfjzaLwWQxySCnFYrGIzWaTO+WGJ9UBAAAAyMaXagAAAABuVdM0j6uqOo+Ib3J2FEXRpwuA8KAtl8tYrVa5M254Uh0AAACALHytBgAAAODWXFxcvKiq6ucw3gTeMRqNYjwe5864cZBS+vfFxcVp7hAAAAAAHhYXOAEAAAC4FbPZ7KQoin/k7oiIGI/HMRwOc2cA79lsNrFYLCKllDvlxk/XT6r/nDsEAAAAgPvPgBMAAACAr6ppmqfXT6Y/y90SYbwJfdd1Xbx9+7ZPI85ZRBxPJpOz3CEAAAAA3G8GnAAAAAB8NfP5/DAiziLiIHNKRBhvwrZIKcXbt2+j67rcKe/6V9u2R9Pp9JfcIQAAAADcTwacAAAAAHyxpmkeV1V1FhHf5m6JiCiKIkajkfEmbJGUUiyXy1iv17lT3vWmKIqj/f39l7lDAAAAALh/DDgBAAAA+CJ9u7pZFEXs7u5GWZa5U4C/YLVaxXK5zJ3xG0VRfL/ZbE5c4wQAAADgazLgBAAAAOAv6dvVzYiIsixjZ2fHeBO2XNd1cXV11bcn1X8qy/Job2/vde4QAAAAAO4HX7IBAAAA+Gyz2ey4qqqfo0fjzeFw6PIm3BNlWcbu7m4MBoPcKe961nXdj7PZ7CR3CAAAAAD3gwucAAAAAPxpl5eXz7uuO42Ib3K33CiKIkajUQyHw9wpwC1YrVaxWq0ipZQ75V2ucQIAAADwxZwjAAAAAOBPmc1mJ13X/Rg9Gm/eXOkz3oT7q67rPl7XdY0TAAAAgC/mAicAAAAAn3R9dfMsIp7lbnlXXdcxGo1yZwB3JKUUy+Uy1ut17pT3vWrb9mg6nf6cOwQAAACA7WLACQAAAMBHzWazk6Io/pG7411FUcR4PI7BYJA7Bchgs9nEYrHo25Pqs4g4mkwm57lDAAAAANgeBpwAAAAA/E7TNE+rqjqLHj2XHvGfJ9N3dnb69pQycMe6rourq6voui53yvt+aNv2eDqd/pI7BAAAAID+M+AEAAAA4Dfm8/lhRJxFxEHmlN8YDocxGo2iKHzSAv5juVzGarXKnfG+n8qyPNrb23udOwQAAACAfvO1GwAAAICIiGia5nFVVacR8V3ulveNRqOo6zp3BtBDPX5S/XgymZzlDgEAAACgvww4AQAAAIjLy8vnXdedRcSz3C3vKooidnZ2oqqq3ClAj/X5SfXJZHKUOwIAAACAfjLgBAAAAHjgZrPZcVEU/527431lWcbu7q4n04E/radPqr9q2/ZwOp3+kjsEAAAAgH7x9RsAAADggbp+Mv0sIr7N3fK+uq5jNBrlzgC2UNu2cXV11bcn1X9q2/aFEScAAAAA7zLgBAAAAHiALi4uXqSUziPiIHfLu4qiiPF4HIPBIHcKsMVSSnF1dRVt2+ZOeZcRJwAAAAC/UeYOAAAAAOBuXVxcnKaU/h09G29WVRW7u7vGm8AXK4oidnd3o67r3CnvelZV1cumaR7nDgEAAACgH1zgBAAAAHggmqZ5WlXVeUQ8y93yPk+mA7el67q4urqKrutyp9xwiRMAAACAiDDgBAAAAHgQ5vP5UUScRs+ubpZlGePxOKqqyp0C3GMppVgul7Fer3On3DDiBAAAAMCAEwAAAOA+a5rmcVVVpxHxXe6W99V1HXVdR1H4RAXcjc1mE4vFIlJKuVMi/jPiPJxOpz/nDgEAAAAgD1/HAQAAAO6py8vL513XnUfEk9wt7yrLMkajUQwGg9wpwAOUUorFYhGbzSZ3SkTErCzLF3t7e69zhwAAAABw98rcAQAAAAB8fbPZ7KTruh+jZ+PNuq5jd3fXeBPIpiiK2NnZidFo1IcLwAdd1/04n8+PcocAAAAAcPeyf50CAAAA4OtpmuZpVVVnEfFN7pZ3lWUZ4/E4qqrKnQLwq67rYrFYRNu2uVMiIn5o2/Z4Op3+kjsEAAAAgLthwAkAAABwT8zn88OIOIuIg8wpvyqKIobDYYxGo9wpAB+1Wq1itVpFSil3ypuiKI729/df5g4BAAAA4PYZcAIAAABsub5e3ayqKsbjcZRlmTsF4A91XRdXV1fRdV3ulCiK4vvNZnPiGicAAADA/WbACQAAALClmqZ5XJblcVEU/8jd8q6iKKKu66jrOncKwGdbLpexWq1yZ0REzCLieDKZnOUOAQAAAOB2GHACAAAAbKHZbHZSFMVx9Oi59IiIsixjZ2fH1U1gq7VtG4vFohfXOCPiTUrprOu6Uxc5AQAAAO4XA04AAACALTKfz48i4iQinuQt+b26rmM0GuXOAPgqUkqxWCxis9nkTrkxSymdGnICAAAA3B8GnAAAAABb4PLy8nnXdacR8U3ulveVZRnj8TiqqsqdAvDVrVarWC6XuTPeNUspnR4cHJzkDgEAAADgyxhwAgAAAPTc9XPp/8jd8SGDwSDG43EUhc9MwP3VdV28ffs2Ukq5U971piiKo/39/Ze5QwAAAAD4a3xZBwAAAOip66ubZxHxLHfL+4qiiLquo67r3CkAd6Lruri6uoqu63KnvO9fbdseeVYdAAAAYPuUuQMAAAAA+L3ZbHbSdd2P0cPxZlmWsbu7a7wJPCg3/+8ry959Vv+2qqqf5/P5Ye4QAAAAAD6PC5wAAAAAPdI0zdOqqs4i4pvcLR9yc3XTk+nAQ5VSirdv3/bxEmdExA9t2x67xgkAAACwHXxpBwAAAOiJ6+tpZxFxkDnld4qiiPF4HIPBIHcKQHY9H3H+VJbl0d7e3uvcIQAAAAB8Wu/eegEAAAB4aJqmeXxxcXEaEf83ejjerKoqHj16ZLwJcK0oir4+px4R8azrupfz+fwodwgAAAAAn+YCJwAAAEBGl5eXz7uuO4uIZ7lbPqSu6xiNRrkzAHqp55c4IyL+NplMznJHAAAAAPBhvfzlwQAAAAAPwWw2O+667sfo4XizLMt49OiR8SbAJ9xc4qyqKnfKx/zPbDY7zh0BAAAAwIe5wAkAAABwx5qmeVpV1VlEfJO75UOGw2GMRqMoCp+OAP6sxWIR6/U6d8bHuMQJAAAA0EO+wgMAAADcofl8fhgRZxFxkDnld4qiiNFoFMPhMHcKwFZar9exWCxyZ3yMEScAAABAzxhwAgAAANyBpmkeX1/d/DZ3y4eUZRk7OztRlmXuFICt1nVdXF1dRdd1uVM+5P9MJpPz3BEAAAAA/IcBJwAAAMAtu7i4eJFSOouIJ7lbPqSu6xiNRrkzAO6NlFIsFovYbDa5U943a9v2+XQ6/Tl3CAAAAAARTioAAAAA3KLZbHaSUvp39HC8WZZl7O7uGm8CfGVFUcTOzk7s7OxEUfTqjsJBVVUucAIAAAD0RK++HAEAAADcF03TPL0eyTzL3fIhdV1HXdd9GxYB3Dt9vMZZFMX3+/v7x7k7AAAAAB46X+gBAAAAvrL5fH4YEWcRcZA55XeqqorxeBxl6WEWgLu02WxiuVxG13W5U278bTKZnOWOAAAAAHjIDDgBAAAAvpKmaR5XVXUaEd/lbnlfWZYxGo1iMBjkTgF40JbLZazX60gp5U6JMOIEAAAAyMqAEwAAAOAruB5vvoyePZleFMWvz6UD0A8ppVitVn0ZchpxAgAAAGRiwAkAAADwhS4vL593XfcyevZk+s1wsyh8AgLoo5RSrNfrWK/XuZ9W/6Ft2+PpdPpLzggAAACAh8bXewAAAIAv0MfxZlVVMR6PoyzL3CkA/Enr9TqWy2XOi5xviqI42t/ff5krAAAAAOChMeAEAAAA+Iv6Nt70XDrAdrt5Wn21WuXMeBURp5PJ5DxnBAAAAMBDYMAJAAAA8Bf0bbxZlmXs7Oy4uglwD7RtG4vFIvez6rOIOI+Il23bnnteHQAAAODrM+AEAAAA+Ex9G2/WdR2j0Sh3BgBfUUopFotFbDab3Ck3/hURZy5zAgAAAHw9BpwAAAAAn6FpmsdVVb2OiCe5W8qyjPF4HFVV5U4B4JYsl8vcT6q/701EnEwmk7PcIQAAAADbzoATAAAA4E+6Hm++jIhnuVsGg0GMx+MoCp93AO679Xodi8Uid8b7DDkBAAAAvlCZOwAAAABgW1RVdRqZx5tFUcRoNIqdnR3jTYAHYjgcRl3XuTPe9yQi/mc+n7+8vLx8njsGAAAAYBsZcAIAAAD8CfP5/CwivsvZUJZl7O7u9nHEA8AtG41GUVVV7owP+abruh9ns9lJ7hAAAACAbeNMAwAAAMAnXD+bfhqZx5t1XcdoNMqZAEBmKaX4f//v/0VKKXfKx7xq2/ZoOp3+nDsEAAAAYBsYcAIAAAB8xOXl5fOu684i47PpZVnGeDzu69U1AO5Y27bx9u3b3BmfMouIo8lkcp47BAAAAKDvPKEOAAAA8AHz+fyo67qXkXG8ORwOY3d313gTgF9VVRXj8Th3xqccRMT/vbi4OM0dAgAAANB3LnACAAAAvOP6yfSziPg2V0NRFDEej2MwGORKAKDnFotFrNfr3Bl/5FXbtofT6fSX3CEAAAAAfWTACQAAAHBtPp8fRcRp/Od6WBY3l9XK0sMpAHzalow435Rlebi3t/c6dwgAAABA3xhwAgAAAA/excXFi5TSSUR8k7OjrusYjUY5EwDYMlsy4pwVRXG4v7//MncIAAAAQJ8YcAIAAAAPVl+Gm0VRxM7OTlRVlTMDgC21XC5jtVrlzvgz/jaZTM5yRwAAAAD0hQEnAAAA8OBcXl4+77ruNDIPNyMiyrKM3d3dKAqfaQD469brdSwWi9wZfyil9M+Dg4OT3B0AAAAAfeAnAwAAAMCD0TTN48FgcJJS+nvuloiI4XAY4/E4dwYA90TXdXF1dRVd1+VO+SM/TCaTo9wRAAAAALkZcAIAAAAPwnw+P4qI04g4yJwSEcabANyOlFIsFovYbDa5U/7Iq7ZtD6fT6S+5QwAAAAByMeAEAAAA7rWmaZ5WVXUWPXgu/YZn0wG4bZvNJhaLRaSUcqd8ypuyLA/39vZe5w4BAAAAyKHMHQAAAABwW+bz+WFVVa+jR+PNoiiMNwG4dYPBIB49ehTD4TB3yqc86brux9lsdpw7BAAAACAHPykAAAAA7p2maR5XVXUaEd/lbnnXzXizLP2aWgDuTtd1sVqtYr1e5075lH+1bXvkSXUAAADgITHgBAAAAO6Vy8vL513XnUXEs9dgi2MAACAASURBVNwt79vd3Y2qqnJnAPBA3Qw5N5tNX59W96Q6AAAA8KAYcAIAAAD3xnw+P4qI04g4yJzyO+PxuO/P2ALwQKSUYrPZ/PpbD/1tMpmc5Y4AAAAAuG0GnAAAAMC9MJvNjoui+O/cHR9ivAlAX6WUom3bX8ecfbnMWRTF9/v7+8e5OwAAAABukwEnAAAAsPXm8/lZRHyXu+N9RVHE7u5ulGWZOwUA/lBKKVarVaxWq9wpN36YTCZHuSMAAAAAbosBJwAAALDV+jreLMsydnZ2jDcB2Dpd18XV1VV0XZc7JcKIEwAAALjHDDgBAACArdXX8WZVVbGzsxNF4dMLANtruVz25RqnEScAAABwL/kpAgAAALCVLi4uTlNKf8/d8b66rmM0GuXOAICvom3buLq6ipRS7hQjTgAAAODeMeAEAAAAts58Pj+KiP/J3fEuT6YDcF/16En1v00mk7PcEQAAAABfiwEnAAAAsFX6ON6s6zrquvZkOgD3VkoplstlrNfr3Cn/ZzKZnOeOAAAAAPga/FQBAAAA2Bp9G2+WZRnj8TiqqsqdAgB3Yrlcxmq1ypkwK8vyxd7e3uucEQAAAABfgwEnAAAAsBX6NN4siiKGw2GMRqPcKQBw59brdSwWi5wJRpwAAADAvVDmDgAAAAD4IxcXF6fRk/HmcDiM3d1d400AHqzhcBg7OztRFNluRBx0XfdyPp8f5goAAAAA+Bpc4AQAAAB6q2map1VVnUfEs9wtw+Ew6rqOsvTrYQEgIqLrunj79m2klLI1pJT+eXBwcJItAAAAAOALGHACAAAAvXR9VessIg5ydlRVFePx2HATAD4gpRRv376NrutyZrxq2/ZoOp3+nDMCAAAA4HMZcAIAAAC90jTN46qqTiPiu5wdZVnGeDyOqqpyZgBA76WUYrlcxnq9zpkxi4jjyWRyljMCAAAA4HMYcAIAAAC9cXFx8SKldBYRT3J21HUdo9EoZwIAbJ31eh3L5TLrk+rhGicAAACwRQw4AQAAgF6YzWYnRVH8I2eDq5sA8GW6rourq6vcT6pHSumfXdedTqfTX7KGAAAAAHyCAScAAACQ1eXl5fOu684i4lnOjsFgEOPxOIrC5xIA+BI9eVI9ImKWUjo9ODg4yR0CAAAA8CF+IgEAAABk04ermxERo9Eo6rrOnQEA98p6vY7FYpE7IyLiTUScTCaTs9whAAAAAO8y4AQAAADuXF+ubkZEjMfjGA6HuTMA4F5q2zaurq4ipZQ7JSLiVVmWx3t7e69zhwAAAABERJS5AwAAAICHZTabnXRd92MYbwLAvVdVVezu7ubOuPFN13U/XlxcnDZN8zh3DAAAAIALnAAAAMCdaJrmaVVVZxHxTe6WCONNALhLPXpO/caboiiO9vf3X+YOAQAAAB4uFzgBAACAWzefzw+rqnodPRlv1nVtvAkAd2g4HEZd17kz3vUkpfTvi4uL09whAAAAwMPlAicAAABwa5qmeVxV1WlEfJe75cZwOIzxeJw7AwAepMViEev1OnfG+35q2/ZwOp3+nDsEAAAAeFhc4AQAAABuxcXFxYvrq5vGmwBARESMx+Ooqip3xvueVVX1ej6fH+UOAQAAAB4WFzgBAACAr6ppmseDweAkpfT33C3vMt4EgH5IKcXbt2+j67rcKR/yr7Ztj6bT6S+5QwAAAID7z4ATAAAA+Cqun0s/jIjTiDjI3fOuuq5jNBrlzgAArqWU4urqKtq2zZ3yIbOiKA739/df5g4BAAAA7jcDTgAAAOCLNE3zuCzL46IojqNnw82I/zzVOhwOc2cAAB+wWCxivV7nzvigoii+32w2J65xAgAAALfFgBMAAAD4S5qmeVpV1UlEfJe75UOKooidnZ2oqip3CgDwCcvlMlarVe6Mj3lTFMWRa5wAAADAbTDgBAAAAD5L0zSPB4PBSUrp77lbPqYsy9jZ2YmyLHOnAAB/wmazicViESml3Ckf5BonAAAAcBsMOAEAAIA/bTabHRdFcRI9fCr9Rl3XMRqNcmcAAJ+p67q4urqKrutyp3yMa5wAAADAV2XACQAAAPyhy8vL513XnUXEs9wtH1OWZYzHY0+mA8CW6/mT6pFS+ufBwcFJ7g4AAABg+xlwAgAAAJ80m81OiqL4R+6OTxkMBjEej6MofOoAgPugbdtYLBZ9vsb5U1mWR3t7e69zhwAAAADby081AAAAgA9qmuZpVVXn0eOrm0VRxHg8jsFgkDsFAPjKUkqxWq36fI1zllI6OTg4OM0dAgAAAGwnA04AAADgd+bz+VFEnEbEQeaUj6qqKsbjcZRlmTsFALhFXdfFYrGItm1zp3zMv9q2PZpOp7/kDgEAAAC2iwEnAAAA8KumaR5XVXUWEd/mbvmYoiiiruuo6zp3CgBwh9brdaxWq74+qz6LiKPJZHKeOwQAAADYHgacAAAAQEREzOfzw4g4C1c3AYAeu3lWPaWUO+VD/tW27fF0Ov05dwgAAADQfwacAAAA8MA1TfO0qqrTcHUTANgSKaVYrVaxXq/7OuT8oSzL0729vde5QwAAAID+MuAEAACAB2w2m50URXEcPb66WZZl7OzsuLoJAPxO13WxXC5js9nkTvmYVxFxNplMznKHAAAAAP1jwAkAAAAP0MXFxYuU0llEPMnd8il1XcdoNMqdAQD03GazicVi0ddrnBERbyLixJATAAAAeJcBJwAAADwgTdM8vn4u/bvcLZ9SlmWMx+Ooqip3CgCwJVJKcXV1FW3b5k75FENOAAAA4FcGnAAAAPBAzOfzw4g4ix4/lx4RMRgMYjweR1H4bAEAfL7VahXL5TJ3xh/5qSiK4/39/Ze5QwAAAIB8/CQEAAAA7rnrq5tnEfFt7pZPKYoiRqNRDIfD3CkAwJbrui6urq6i67rcKZ9UFMX3m83mZDqd/pK7BQAAALh7BpwAAABwj11cXLxIKZ1FxJPcLZ8yGAxiNBpFWZa5UwCAeyKlFKvVKlarVe6UP/KmLMvDvb2917lDAAAAgLvlpyL8f/bu7rqNK13X6LeqgAJAkSARgZ2BdCKwMrAyMDuC5o6g2RFsOoJNR3DkCFqOoOUM7AhKADmE36o6FxZ9tNWSLMsUV4Gccwxf87k0XK/XBwAAwD01n8/Pu677V/R4vFkURUwmk5hMJsabAMCtunndezKZREq9fs/iq7Zt/z2fz89zhwAAAAB3q9f/xQIAAAD4896cTH8eEd/kbvmQlFIMh8MYjUa5UwCAB6DrulitVrHb7XKn/JGfmqZ55qQ6AAAAPAwGnAAAAHCPXF9fP2nb9kVEHOdueZ+b4WZVVX1/CQsAuId2u12sVqvoui53ysc4qQ4AAAAPhC8lAAAAcE8sFovTiPif3B3vUxRFVFUVw+EwdwoA8MDtyWuc84g4nU6nz3OHAAAAAF+OAScAAADcA/P5/Dyl9I/cHe8y3AQA+mpPXuP823Q6vcwdAQAAAHwZBpwAAACw5xaLxWVEfJe7420ppaiqKqqqyp0CAPBBXdfFcrmMpmlyp3yMEScAAADcUwacAAAAsMf6ON4syzLG43EURZE7BQDgk2w2m1iv17kzPsaIEwAAAO4hA04AAADYU30cb1ZVFaPRKHcGAMCf1rZtLJfLaNs2d8qHGHECAADAPWPACQAAAHuob+PNoihiMpl4dRMA2Gtd18Vms4nNZpM75UOMOAEAAOAeMeAEAACAPdO38WZVVVFVVaTkPzMAAPfDbreL1WoVXdflTnkfI04AAAC4J3xZAQAAgD1R1/VJWZaXEfFt7paI317dHI/HUZZl7hQAgFvX89c4jTgBAADgHjDgBAAAgD1Q1/XXZVk+j4jHuVsivLoJADwcbdvGarWKpmlyp/wvXdf98/j4+Dx3BwAAAPD5fGUBAACAnlssFs8i4jIijjOnRFmWMR6PoyiK3CkAAHeqaZpYr9d9G3L+1DTNs9ls9ip3CAAAAPDnGXACAABAT9V1fTIYDM67rvt77paUUoxGoxgOh7lTAACyapomNptN7Ha73Ck35imlZ0dHRy9yhwAAAAB/jgEnAAAA9ND19fWTtm0vowcn04fDYYxGI+fSAQDe0rZtbLfb2G630XVd7pxIKX2/2+3OvcYJAAAA+8OXFwAAAOiRuq5PiqI4Syn9I3dLURQxHo+jLMvcKQAAvdV1XWw2m74MOX9NKZ16jRMAAAD2gwEnAAAA9MRisTiNiPOI+CpviVc3AQD+rLZtY71e9+W0+o9N05zNZrNfcocAAAAAH+YrDAAAAGR2dXX1tOu6i+jBufSUUozH4xgMBrlTAAD20na7jfV63YfXOJ1VBwAAgJ4z4AQAAIBMrq+vn7RtexER3+RuifjtZPpkMomiKHKnAADstbZtY7lcRtu2uVMiIuZd1120bXthyAkAAAD9YsAJAAAAd6yu65OyLC8i4rvcLTeGw2GMx+PcGQAA90bXdbFer2O73eZOufFrRJxNp9PnuUMAAACA3xhwAgAAwB2az+dnKaXziDjO3XJjPB7HcDjMnQEAcC+t1+vYbDa5M972U9M0p7PZ7JfcIQAAAPDQGXACAADAHajr+uuyLC+jJ+fSbxhvAgB8edvtNlarVe6Mt827rjs/Pj6+yB0CAAAAD5kBJwAAAHxhi8XiNCIuokevbkYYbwIA3KUevsQZ8dtrnM9ms9mr3CEAAADwEBlwAgAAwBdS1/XJm1c3v83d8i7jTQCAu7darWK73ebOeNc8Ik6n0+nz3CEAAADw0BhwAgAAwBdwfX39pG3b5xHxVe6WdxlvAgDk09MRZ6SUvj86OjrL3QEAAAAPiQEnAAAA3LI3J9P/J3fHu1JKMZlMoizL3CkAAA9aX0ecEfFz0zRPnVQHAACAu1HkDgAAAID7ZLFYXEZPx5sHBwfGmwAAPTAej6OqqtwZ7/O4LMuX19fXT3KHAAAAwEPgBU4AAAC4BXVdn5RleRkR3+ZueVdRFDGZTKIo/H+cAAB9st1uY7Va5c54n3lRFE8PDw9f5g4BAACA+8yAEwAAAP6iN+PNFxHxOHfLu8qyjMlkEin5TwAAAH3UNE0sl8voui53yrvmEXE2nU4vc4cAAADAfeXrDQAAAPwFfR5vVlUVo9EodwYAAH+gbdtYLpfRtm3ulPf5mxEnAAAAfBkGnAAAAPCZ+jreTCnFZDKJsixzpwAA8Im6rovNZhObzSZ3yn8oiuL/OKcOAAAAt8+AEwAAAD5DX8ebg8EgxuOxk+kAAHtqt9vFarXq20n1eVEUT404AQAA4Hb5mgMAAAB/Uh/HmymlqKoqqqrKnQIAwF/UdV2sVqvY7Xa5U95mxAkAAAC3zIATAAAA/oQ+jjfLsozxeBxFUeROAQDgFvXwNU4jTgAAALhFBpwAAADwia6vr5+0bXsZPRlvFkURo9EoBoNB7hQAAL6QrutivV7HdrvNnXLDiBMAAABuiQEnAAAAfILFYvEsIi4j4jhzSqSUYjgcRlVVkZKf9gAAD0HTNLFer6NpmtwpN/42nU4vc0cAAADAPvOVBwAAAP7A1dXVRdd1f8/dERG/DzedSwcAeJh2u12s1+to2zZ3SkTED03TnM1ms1e5QwAAAGAfGXACAADAB/TpZPpgMIjRaGS4CQBARERst9tYr9fRdV3ulF9TSqdHR0cvcocAAADAvjHgBAAAgPeYz+dnKaXzyHwyvSiKGI/HUZZlzgwAAHqo67rYbDax2Wxyp0RK6fvdbnfuNU4AAAD4dAacAAAA8Ja6rk/KsryMiG9zt1RVFaPRKHcGAAA917ZtLJfLPpxV/zUizqbT6fPcIQAAALAPDDgBAADgjaurq6dd111GxFc5O4qiiMlk4lw6AAB/ynq97sVrnBHxU0rp3Fl1AAAA+DgDTgAAAIiI+Xx+nlL6R+6O4XAYo9EoUvKTHQCAP69pmlgul9F1Xe6UiIifmqY5nc1mv+QOAQAAgD7yNQgAAIAHra7rr8uyfB4Rj3O3jMfjGA6HuTMAANhzXdfF69ev+3BS/cYPTdOczWazV7lDAAAAoE/cYgMAAODBWiwWp2VZvozM482UUjx69Mh4EwCAW9HDf7/8rizLX+bz+VnuEAAAAOgTL3ACAADw4NR1fVKW5WVEfJu7JaUUBwcHURT+H0sAAG7farWK7XabO+NtPxdFcXp4ePgydwgAAADk5usQAAAAD8r19fWTN69uGm8CAHDvjcfjPr3EGRHxuG3bf8/n8/PcIQAAAJCbFzgBAAB4MObz+XlK6R+5OyKMNwEAuFuvX7+OpmlyZ7zrp6ZpTmez2S+5QwAAACAHA04AAADuvTcn059HxDe5WyKMNwEAuHtd18Xr16+jbdvcKe+aR8TpdDp9njsEAAAA7povRQAAANxri8XiWVmWv4TxJgAAD1iP/z30OCL+79XV1UVd1ye5YwAAAOAueYETAACAe6mu66/LsryIiG9zt9zo8UdzAAAeiB6/xBkR8XNRFKeHh4cvc4cAAADAXTDgBAAA4F55M9w8j4jvcre8rSiKODg4iJT8FAcAIK+u62K1WsVut8ud8j7zruvOj4+PL3KHAAAAwJfmqxEAAAD3wmKxeBYRp9GjFzdvDAaDGI/HxpsAAPTKarWK7XabO+NDfmya5nQ2m73KHQIAAABfii9HAAAA7LXFYnEaEecR8VXekverqipGo1HuDAAAeK/tdhur1Sp3xof8mlI6PTo6epE7BAAAAL4EA04AAAD2Ut+HmymlmEwmUZZl7hQAAPiotm1juVxG27a5U96r67p/Hh8fn+fuAAAAgNtmwAkAAMBeubq6etp13WX0dLgZ4WQ6AAD7p+u6WK1Wsdvtcqd8yE9vTqr/kjsEAAAAbosvSQAAAOyFuq5PyrK8jIhvc7d8zGg0iqqqcmcAAMBn2e12sVqtouu63CnvM4+I0+l0+jx3CAAAANwGA04AAAB6b7FYPIuIy4g4zpzyQUVRxGQyiaIocqcAAMBf0rZtrFaraJomd8p7pZS+3+1257PZ7FXuFgAAAPgrDDgBAADorTevbl5ExHe5Wz5mOBzGaDRyMh0AgHul569x/lwUxenh4eHL3CEAAADwuXxZAgAAoJeur6+ftG17GRGPc7d8SEopxuNxDAaD3CkAAPBFdF0Xm80mNptN7pT3mXddd358fHyROwQAAAA+hwEnAAAAvbNYLE4j4iJ6fDK9LMsYj8dOpgMA8CC0bRubzSa2223ulPf5sWmaUyfVAQAA2DcGnAAAAPTK1dXVRdd1f8/d8TFVVcVoNMqdAQAAd65pmliv19E0Te6Ud/1aFMUzJ9UBAADYJwacAAAA9EJd1ydlWV5GxLe5Wz6kKIqYTCZe3QQA4MFrmiZWq1W0bZs75W3ziDibTqeXuUMAAADgUxhwAgAAkN2b8eaLiHicu+VDhsNhjEajSMlPaQAAuLFer2O73UbXdblTfpdS+v7o6OgsdwcAAAD8EV+dAAAAyKqu66/LsnwePR1vppRiNBrFcDjMnQIAAL3Utm0sl8u+vcb5Y9M0p7PZ7FXuEAAAAPgQA04AAACyub6+ftK27YuIOM7d8j5OpgMAwKdbr9ex2WxyZ7zt56ZpnhpxAgAA0FcGnAAAAGTR9/FmVVUxGo1yZwAAwF5pmiZWq1WfXuP8uSiK08PDw5e5QwAAAOBdBpwAAADcuT6PN4uiiPF4HGVZ5k4BAIC91HVdrFar2O12uVNuzIuieGrECQAAQN+4AQcAAMCdWiwWp23b/jt6ON6sqioODg6MNwEA4C9IKcVkMonRaBQp9eItkeO2bV8sFovT3CEAAADwtl78agYAAOBhWCwWlxHxXe6Od5VlGePxOIrC/+cIAAC3qW3bWC6XvTmpnlL6/ujo6Cx3BwAAAEQYcAIAAHAH6rr+uizL5xHxOHfL24qiiNFoFIPBIHcKAADcW13XxWazic1mkzvlxk9N0zybzWavcocAAADwsBlwAgAA8EW9OVN4ET06mV6WZQyHwxgOh7lTAADgwdjtdrFaraLrutwpERHzlNKzo6OjF7lDAAAAeLgMOAEAAPgi6ro+KcvyMiK+zd0SEZFSisFgEFVVOZUOAACZtG0bq9UqmqbJnRIRTqoDAACQlwEnAAAAt26xWDyLiMvowaubKaUYDodRVVWk5GcwAAD0wXq97tNJ9Z/fnFT/JXcIAAAAD4svVwAAANyavr26WVWV4SYAAPRU0zSxWq2ibdvcKRER84g4m06nl7lDAAAAeDh8wQIAAOBWzOfzs5TSefTg1c2iKGI8HkdZlrlTAACAj+i6LlarVex2u9wpN35smuZ0Npu9yh0CAADA/WfACQAAwF9ydXX1tOu6i4h4nLslImIwGMR4PPbqJgAA7JHNZhObzSa6rsudEhHxa1EUzw4PD1/mDgEAAOB+K3IHAAAAsJ/quj65urq66LruX9GT8eZoNIrJZGK8CQAAe6aqqjg4OIii6MWnq6/atv33fD4/zx0CAADA/eaLFgAAAH/am1c3LyPiq9wtEREppZhMJk6mAwDAnuu6LtbrdWy329wpN356c1L9l9whAAAA3D8GnAAAAHyyuq5PBoPBedd1f8/dcqMoiphMJn15qQcAALgF2+02VqtV7owb84g4nU6nz3OHAAAAcL8YcAIAAPBJ+vbqZsRv482DgwMn0wEA4B5q2zZev34dXdflTrnxQ9M0Z7PZ7FXuEAAAAO4Hz5MAAADwh+bz+XnXdf8K400AAOCO3Pw7f49e2/+uLMsX19fXT3KHAAAAcD/4ygUAAMAH1XV9Upbl84j4JnfL24w3AQDg4ei6Ll6/fh1t2+ZO+V3Xdf91fHx8kbsDAACA/eZLFwAAAO/15mT684g4zt3ytuFwGOPxOHcGAABwh7qui9VqFbvdLnfK235smubUSXUAAAA+V29uTgAAANAf8/n87M3J9F6NN6uqMt4EAIAHKKUUk8kkhsNh7pS3fVuW5S+LxeJZ7hAAAAD2kxc4AQAA+N2bk+kXEfFd7pZ3jcfjvn2sBQAAMthut7FarXJnvMtrnAAAAPxpBpwAAABExO/jzRcR8Th3y9tSSnFwcBBF4YgEAADwm6ZpYrlcRtd1uVPeNu+67qJt2wtDTgAAAD6FAScAAABxfX39pG3by+jZeLMsy5hMJpGSn68AAMD/1rZtLJfLaNs2d8q7fo2I8+l0epk7BAAAgH7zBQwAAOCBezPefBERx7lb3jYajaKqqtwZAABAz63X69hsNrkz3seQEwAAgI8y4AQAAHjA+jjeLIoiJpOJk+kAAMAn6+lJ9Rs/FUVxdnh4+DJ3CAAAAP1iwAkAAPBALRaL04i4iB6NN6uqiqqqnEwHAAD+tK7rYrlcRtM0uVPeK6X0/W63O5/NZq9ytwAAANAPvogBAAA8QPP5/Cyl9N+5O24URRHj8TjKssydAgAA7LnNZhPr9Tp3xof8mlI6PTo6epE7BAAAgPwMOAEAAB6Quq5PyrK8iIjvcrfc8OomAABw29q2jeVyGW3b5k55L69xAgAAEGHACQAA8GBcX18/adv2MiIe526J8OomAADwZXVdF+v1Orbbbe6UD/m5KIrTw8PDl7lDAAAAyMOAEwAA4AHo08n0lNLvr24CAAB8abvdLlarVXRdlzvlfeZd150fHx9f5A4BAADg7hlwAgAA3GNvTqZfRsS3uVsiIgaDQYxGoyiKIncKAADwgPT9pHpE/NQ0zelsNvsldwgAAAB3x4ATAADgnqrr+uuyLJ9HD06mp5RiPB7HYDDInQIAADxg6/U6NptN7owP8RonAADAA2PACQAAcA9dX18/adv2RUQc524ZDAYxHo8jJT9BAQCA/JqmidVq5TVOAAAAsvP1DAAA4J7py3jTq5sAAEBfdV0Xq9Uqdrtd7pQP6rrun23bXsxms1e5WwAAAPgyDDgBAADukb6MN4uiiMlkEkVR5MwAAAD4qM1mE5vNJrquy53yIb9GxNl0On2eOwQAAIDbZ8AJAABwT/RlvFlVVYxGo5wJAAAAn6xt21gul30+qR4R8eObs+pe4wQAALhHDDgBAADugT6MN51MBwAA9lXXdb+/xtlj84g49RonAADA/WHACQAAsOfquj4py/JFRDzO1eBkOgAAcB80TROr1cprnAAAANwJA04AAIA9t1gsXkbm8ebBwUGk5CcmAACw//blNc6U0rOjo6MXuUMAAAD4fJ5GAQAA2GOLxeIyjDcBAABuTUopRqNRHBwc9PnKwHHXdf+6urq6yB0CAADA5/OFDQAAYA+9OZt+GRHf5moYDocxGo2MNwEAgHttu93Ger2Orutyp3zIz03TPJvNZr/kDgEAAODP8ZUNAABgz9R1/XVZls8j48ubw+EwxuNxrj8PAABwp27Oqm+3274OOecRcTqdTp/nDgEAAODTGXACAADskcVi8SwiLiPiOFfDaDSKqqpy/XkAAIBsboacm80md8p7dV33z+Pj4/PcHQAAAHwaA04AAIA90IeT6SmlGI/HMRgMciUAAAD0Qtu2sV6vY7fb5U55nx+bpjmdzWavcocAAADwcQacAAAAPVbX9ddFUZymlM4i46ubRVHEZDKJoihyJQAAAPTObreL1WrVx7PqPzdN89SIEwAAoN8MOAEAAHrmzWjzWUrpWUR8k7tnMBjEeDyOlPyEBAAAeFfXdbFarfr4Gue8KIqnh4eHL3OHAAAA8H6+vgEAAPTEYrE4jYjT6MFoM+K3k+lVVUVVVblTAAAAem+z2cR6vc6d8a55SunZ0dHRi9whAAAA/CcDTgAAgIzquj4piuIspXQaEV/l7rnhZDoAAMCf17ZtLJfLaNs2d8q7/jadTi9zRwAAAPC/GXACAABkMp/Pz1NKZxFxnLvlbWVZxmQycTIdAADgM63X69hsNrkz/peU0vdHR0dnuTsAAAD4/3yNAwAAuGNXV1dPu667jB69uHljOBzGeDzOnQEAALD3mqaJ1WrVt9c4f2qa5tlsyCk1rAAAIABJREFUNnuVOwQAAAADTgAAgDtT1/XJYDA477ru77lb3mcwGMRkMsmdAQAAcK/08DXOX1NKp0dHRy9yhwAAADx0BpwAAAB34Pr6+knbts+jh69uRkQURREHBwfOpgMAAHwBbdvGarWKpmlyp/yu67p/Hh8fn+fuAAAAeMh8mQMAAPjC5vP5eUrpH7k7PiSlFI8ePTLeBAAA+MJ2u12s1+s+nVV3Uh0AACAjX+cAAAC+kLquT8qyfB4R3+Ru+ZCUUhwcHERRFLlTAAAAHoSu62Kz2fTprPo8Ik6n0+nz3CEAAAAPjS90AAAAX8BisXhWluUvYbwJAADAW1JKMRqN+vR77Dgi/u/V1dVF7hAAAICHxgucAAAAt6iu65PBYHDedd3fc7d8jPEmAABAfj18jfPnNyfVf8kdAgAA8BAYcAIAANyS6+vrJ23bXkbE49wtH2O8CQAA0C+73S5Wq1V0XZc7JeK3k+pn0+n0MncIAADAfWfACQAAcAvm8/lZSum/c3f8kaIoYjKZGG8CAAD0TNd1sVwuo2ma3Ck3fmia5mw2m73KHQIAAHBfGXACAAD8BXVdn5RleRkR3+Zu+SNlWcZkMomU/BQEAADoq/V63auT6kVRnB4eHr7MHQIAAHAf+WoHAADwma6urp52Xfc8Io5zt/yRqqpiNBrlzgAAAOATNE0Ty+XSSXUAAIB7zoATAADgM1xdXV10Xff33B1/pCiKGI/HUZZl7hQAAAD+hLZtY7lcRtu2uVNu/Ng0zamT6gAAALfHgBMAAOBPuL6+ftK27WVEPM7d8keGw2GMRiMn0wEAAPZU13Xx+vXrPo04fy2K4pmT6gAAALejyB0AAACwLxaLxWnbti+i5+PNoiji4OAgxuOx8SYAAMAeSynFo0ePYjgc5k658VXbtv+ez+fnuUMAAADuA1/yAAAA/kBd1ydlWV5GxLe5Wz6mKIqoqqpPH/YAAAC4Jev1OjabTe6Mt/3UNM0zJ9UBAAA+nwEnAADAR+zDyXTDTQAAgIdhu93GarXKnfG2eVEUT51UBwAA+DwGnAAAAB/wZrz5IiKOc7e8K6UUg8EgqqqKoihy5wAAAHBHmqaJ5XIZXdflTnnb36bT6WXuCAAAgH1jwAkAAPAefRxv3ow2b/4BAADgYWrbNpbLZbRtmzvld13X/fP4+Pg8dwcAAMA+MeAEAAB4R9/GmymlqKoqqqrKnQIAAECPrFar2G63uTPe9sN0Oj3NHQEAALAvDDgBAADe0rfx5mAwiPF4HCn5+QYAAMB/2u12sVqt+nRS3YgTAADgE/kCCAAA8EZd1ydlWb6MiK9yt6SUYjQaxXA4zJ0CAABAz/XtpLpz6gAAAJ/GgBMAAOCNxWLxIiK+yd1RFEVMJpMoiiJ3CgAAAHtkvV7HZrPJnXHjb9Pp9DJ3BAAAQJ8ZcAIAAETEfD4/Tyn9I3dHVVUxGo1yZwAAALCnmqaJ5XLZi5PqRVH8n8PDw5e5OwAAAPrKgBMAAHjwrq+vn7Rt+++cDSmlmEwmUZZlzgwAAADuga7rYrlcRtM0uVPmTdM8mc1mv+QOAQAA6CP3+AAAgAetruuTtm0vczYMBoN49OiR8SYAAAC3IqUUBwcHUVVV7pTjsiyf13V9kjsEAACgjww4AQCAB60sy4uIeJzjb6eUYjQaxWQyiZQcSAAAAOB2jUajePToURRF1k+Cj8uyfGHECQAA8J98IQQAAB6sxWJxGRHf5fjbRVHEZDLJ/RENAACAB6DrulitVrHb7XJmzIuieHp4ePgyZwQAAECfGHACAAAPTl3XJ29e3swy3qyqKkajUY4/DQAAwAO22WxivV5nbei67r+Oj48vskYAAAD0hAEnAADwoFxfXz9p2/YyMpxNTynFeDyOwWBw138aAAAAIiKibdtYLpfRtm3OjJ+apjmdzWa/5IwAAADIzYATAAB4MObz+VlK6b9z/O2yLGMymURKfoYBAACQV9d1sV6vY7vd5k75oSiKC2fVAQCAh8qXQwAA4N6r6/rrsiwvI+KbHH9/NBpFVVU5/jQAAAB80Ha7jfV6HV3X5U6ZR8TziHjRNM3z2Wz2KncQAADAXTDgBAAA7rU3r26eR8TxXf/toihiMplEURR3/acBAADgk/TkpPq7foyIy+l0+jx3CAAAwJdkwAkAANxLuV/ddDIdAACAfbJarfpwUv1dv0bE+XQ6vcwdAgAA8CX4kggAANw7OV/djIgYDocxHo9z/GkAAAD4bNvtNlarVe6M9zHkBAAA7iUDTgAA4N64vr5+0rbtZUQ8ztVQFEU8evQo158HAACAv6THI86IiJ+Lojg9PDx8mTsEAADgNhS5AwAAAG7DfD4/b9v235FxvJlSislkkuvPAwAAwF/W86sSj9u2/fd8Pj/PHQIAAHAbvMAJAADstbquvy7L8nlkHG7eGI1GUVVV7gwAAAD4y1arVWy329wZH/Nz0zTPZrPZL7lDAAAAPpcXOAEAgL01n8/PyrJ8GT0Yb5ZlabwJAADAvTEej6Msy9wZH/O4LMuXi8XiWe4QAACAz+UFTgAAYO/UdX1SluVlRHybuyUioiiKODg4iJT8xAIAAOD+6LouXr9+HW3b5k75qJTS90dHR2e5OwAAAP4sXxcBAIC9cnV19bTruucRcZy7JSIipRQHBwdRFA4cAAAAcP/sy4gznFQHAAD2kC+MAADA3ri6urrouu5f0ZPxZkTEaDQy3gQAAODeSinFZDLZh6sTTqoDAAB7p/e/tAAAAK6vr5+0bXsZEY9zt7xtPB7HcDjMnQEAAABf3B69xOmkOgAAsDcMOAEAgF6bz+fnKaV/5O54l/EmAAAAD80+jTgj4qc3J9Vf5Q4BAAD4EANOAACgl66urp52XXcZEV/lbnlbSinG43EMBoPcKQAAAJDFarWK7XabO+NTzIuieHp4ePgydwgAAMD7GHACAAC9Utf1SVmWlxHxbe6WdxVFEZPJJIqiyJ0CAAAAWW2321itVrkzPknXdf91fHx8kbsDAADgXQacAABAb8zn87OU0nlEHOdueddgMIjxeBwp+RkFAAAAERFt28ZyudyXk+o/Nk1z6qQ6AADQJ748AgAA2dV1/fWbVze/yd3yrpRSVFUVVVXlTgEAAIDe6bouNptNbDab3Cmf4teiKJ45qQ4AAPSFu38AAEBW8/n8rCzLl9HD8WZRFHFwcGC8CQAAAB+QUorRaBSPHj2Ksixz5/yRr9q2/fd8Pj/PHQIAABDhBU4AACCTuq5PyrJ8Hj0cbkZEVFUVo9EodwYAAADslaZpYr1eR9M0uVP+yE9N0zxzUh0AAMjJgBMAALhzi8XiWURcRsRx5pT/UBRFTCaTKAoHCwAAAOBzNU0Tm80mdrtd7pSPmaeUnh0dHb3IHQIAADxMBpwAAMCdqev6ZDAYnHdd9/fcLe/j1U0AAAC4XW3bxm63i91u19tXObuu+6/j4+OL3B0AAMDDY8AJAADcievr6ydt215GxOPcLe/y6iYAAAB8eV3XRdM0vw86u67LnfS2H6bT6WnuCAAA4GEx4AQAAL64vp5MTynFcDj06iYAAADcsa7rYrPZxHa77dOQ86emaZ7NZrNXuUMAAICHwYATAAD4oq6uri76eDK9LMsYj8de3QQAAICM2raN1WrVp/PqPzdN89SIEwAAuAsGnAAAwBdR1/VJWZbPI+Kb3C3vGo1GUVVV7gwAAADgjfV6HZvNJnfGDSNOAADgThhwAgAAt+76+vpJ27aXEfE4d8vbiqKIyWTi1U0AAADooaZpYrlc9uWkuhEnAADwxRlwAgAAt+rNePNFRBznbnlbVVVRVVWk5GcQAAAA9FXXdbFcLvtyUv3XoiieHR4evswdAgAA3E++XAIAALdmsVicRsT/5O54W0opxuNxDAaD3CkAAADAJ+rRSfV5URRPjTgBAIAvwd1AAADgVszn8/Po2XizLMt49OiR8SYAAADsmdFoFAcHB324pHHctu2LN//TKgAAwK3K/osHAADYb3Vdn5RleRkR3+ZuuZFS+v1kOgAAALC/2raN5XIZbdvmTomU0vdHR0dnuTsAAID7w4ATAAD4bNfX10/atr2MiMe5W26UZRnj8TiKwsEBAAAAuC9Wq1Vst9vcGRERPzdN82w2m/2SOwQAANh/BpwAAMBneXM67CIijjOnRMRvr26ORqMYDoe5UwAAAIAvYLvdxnq9jq7rcqfMI+J0Op0+zx0CAADsNwNOAADgT+njyfThcBij0ShS8hMHAAAA7rM+nVSPiB+apjmbzWavcocAAAD7yddNAADgk/Xt1c2iKGI8HkdZlrlTAAAAgDvSdV2s1+venFQviuL08PDwZe4QAABg/xhwAgAAH/Xmxc1nEXEWEY9z99yoqipGo1HuDAAAACATJ9UBAIB9Z8AJAAC812KxeBYRN//04sXNiN9e3ZxMJlEURe4UAAAAILM+nVRPKX1/dHR0lrsDAADYHwacAADA7+q6/rooitOU0ln0aLR5w6ubAAAAwPus1+vYbDa5MyIifmqa5tlsNnuVOwQAAOg/A04AACDquv66LMvziPgud8v7pJRiMplEWZa5UwAAAICe6tFJ9V+Lonh2eHj4MncIAADQbwacAADwgNV1fVIUxVlK6R+5Wz5kMBjEeDyOlPx8AQAAAD6ubdt4/fp1H0ac84g4m06nl7lDAACA/vIFFAAAHqjFYvEsIi6jh6fSb4xGo6iqKncGAAAAsEfato3lchlt2+ZOiYj4oWmaMyfVAQCA9zHgBACAB6au65OyLC8j4tvcLR/iZDoAAADwV3RdF69fv+7LiPPnoihOnVQHAADeZcAJAAAPyNXV1dOu655Hj1/dLIoiJpNJFEWROwUAAADYYz0bcTqpDgAA/AdfRAEA4IGYz+fnXdf9K3o83hwMBnFwcGC8CQAAAPxlKaU+/XeG44j4n8VicVnX9UnuGAAAoB+8wAkAAPfcPpxMj4gYDocxHo9zZwAAAAD3TNd1sVwuo2ma3Ck3nFQHAAAiwoATAADutbquvy7L8nlEPM7d8jGj0SiqqsqdAQAAANxjq9Uqtttt7owbTqoDAAAGnAAAcF9dX18/adv2RfT4ZHpKKcbjcQwGg9wpAAAAwAOw2WxivV7nznjbD9Pp9DR3BAAAkIcBJwAA3EP7MN4siiImk0kURZE7BQAAAHhAmqaJ5XIZXdflTrnxc9M0T2ez2avcIQAAwN3ypRQAAO6ZfRhvDgaDODg4MN4EAAAA7lxZlvHo0aMoyzJ3yo3HZVm+uL6+fpI7BAAAuFte4AQAgHtkH8abo9EoqqrKnQEAAAAQ6/U6NptN7owb86Ionh4eHr7MHQIAANwNA04AALgn+j7edDIdAAAA6KO2bWO5XEbbtrlTIiLmEXE6nU6f5w4BAAC+PANOAAC4B/o+3hwOhzEajSIlP0EAAACA/um6LlarVex2u9wpN/42nU4vc0cAAABflqdvAABgz11dXT3t63izKIo4ODiI8XhsvAkAAAD0VkopJpNJjEaj3Ck3/mc+n5/njgAAAL4sX1ABAGCPzefzs5TSf+fueFdKKYbDYVRVZbgJAAAA7JWmaWK5XEbXdblTIiJ+bJrmdDabvcodAgAA3D5fUgEAYA/VdX1SluVFRHyXu+VdN8PNovDgPwAAALCf2raN5XIZbdvmTomI+LkoitPDw8OXuUMAAIDbZcAJAAB75vr6+knbts8j4qvcLTduXtwcDoeGmwAAAMC90HVdrNfr2G63uVMiIuZd150fHx9f5A4BAABujwEnAADsibquT4qiOEsp/SN3y43BYBDD4TAGg0HuFAAAAIAvYrvdxmq1yp1xw0l1AAC4Rww4AQBgDywWi9OIOI8evLpZFEVUVRWDwSBS8pMCAAAAuP96dlJ9HhFn0+n0MncIAADw1/jaCgAAPfXmxc3TlNJZ9GS4ORqNvLYJAAAAPEhd18VqtYrdbpc75cZPKaXzo6OjF7lDAACAz2PACQAAPVPX9ddlWZ5HxLOIOM6cExERVVVFVVVe3AQAAAAevM1mE+v1OnfG236NiHMvcgIAwP7x9RUAAHrireHmd7lbbqSUYjwee3UTAAAA4C09O6l+Y9513UXbthez2exV7hgAAOCPGXACAEBmdV2flGV5ET0abkb8djJ9MplEURS5UwAAAAB6p4cn1W/Mu647Pz4+vsgdAgAAfJwBJwAAZDSfz89SSufRk1PpN8qyjMlk4mQ6AAAAwB/o4Un1G7+mlE6Pjo5e5A4BAADez9dYAADI4M259MuI+CZ3y7uGw2GMx+PcGQAAAAB7o23beP36dXRdlzvlfX5smubUWXUAAOgfA04AALhji8XiNCIuomevbkYYbwIAAAB8rq7r4vXr19G2be6U95lHxOl0On2eOwQAAPj/DDgBAOCO1HV9UpblRUR8l7vlfYw3AQAAAP6arutitVrFbrfLnfIhPzRNc+Y1TgAA6AcDTgAAuANvTqY/j4jHuVvepyiKODg4iJT8RAAAAAD4q1arVWy329wZH/JzURSnh4eHL3OHAADAQ+frLAAAfGHX19dP2rZ9ET08mR7x28ubo9HIeBMAAADgFq3X69hsNrkzPmQeEWfT6fQydwgAADxkRe4AAAC4z/ZhvDkej403AQAAAG7ZaDSK8XicO+NDjiPif+bz+XnuEAAAeMh8pQUAgC+k7+PNqqpiNBrlzgAAAAC415qmieVyGV3X5U75kB+m0+lp7ggAAHiIDDgBAOAL6PN4M6UUo9EohsNh7hQAAACAB6Ft21gul9G2be6UD/mpaZpns9nsVe4QAAB4SAw4AQDgltV1fVKW5S/Rw/FmURQxmUyiKIrcKQAAAAAPStd1sV6vY7vd5k75kJ+bpnlqxAkAAHfHV1sAALhlZVm+iB6ONweDQRwcHBhvAgAAAGSQUorxeByj0Sh3yoc8LsvyRV3XJ7lDAADgofDlFgAAbtF8Pj+PiMe5O95283FgMplESh7hBwAAAMipqqp49OhRX/8n28dlWV7kjgAAgIfC11sAALglV1dXT7uu+1fujreVZRnj8bivHwQAAAAAHqyu62Kz2cRms8md8j4/TKfT09wRAABw3xlwAgDALajr+qQsy1+iJ6fTU0oxGo1iOBzmTgEAAADgI5qmidVqFW3b5k551w9N05zNZrNXuUMA+H/s3U+MZfWVJ/hz74s/mUnky3xVNdMzIrNgZpdORrAqumDhbI2RkpZGZrBk3DULsha2e2PMyDazGFcP0+VejO3WYLyoslmQtFTdxpJp2BRItFTBgnThUkmJRJrdKKnIFI0xRMSN/BMR7917Z0EkBgxJEvF+79773uezQ8A5ByKJDO773nMAmFYCnAAAMAZFUZyNFpxOz7Is5ufnY2Fhwbl0AAAAgA7Z2tqK4XAYdV03PcoHvVqW5QkhTgAASMMnugAAsAc7mzeXo+HwpuAmAAAAQPdVVRXb29sxHA6bHuWD1vM8P7G0tHS26UEAAGDa+GQXAAB26dKlS3dUVXU6Ggxv5nke8/PzMT8/L7gJAAAAMCXaGOSs6/p/P3To0GNNzwEAANPEJ7wAALALRVGciojHIuJQE/17vV4sLCzE3NxcE+0BAAAAmIC6rt8PcrbktPpLZVne56Q6AACMhwAnAAB8Bjsn009HxBeb6J/neezbty96vV4T7QEAAABoQMuCnOtZlt138ODB5aYHAQCArhPgBACAG7RzMv3ZiLilif4LCwuxuLjYRGsAAAAAWuBakHN7e7vpUZxUBwCAMRDgBACAG7BzMv3JJnrneR779++PPM+baA8AAABAy5RlGZubm1FVVdOjPFeW5Skn1QEAYHcEOAEA4Dp2TqY/FhEPNtG/1+vF/v37I8v86A4AAADA79R1HZubmzEajZoe5dU8z08tLS2dbXoQAADoGp8CAwDAJ1hdXb211+s9GxG3N9F/fn4+9u3b10RrAAAAADpie3s7tra2mh5jPcuy+w4ePLjc9CAAANAlbjACAMDH2NjYONHr9c5GQ+HNPM+FNwEAAAD4VAsLC3HgwIGmL7gcquv674qiONXkEAAA0DUCnAAA8BFFUZyq6/rvIuJQE/2zLIv9+/c30RoAAACADur1em0IcUZEPLmxsfFY00MAAEBXCHACAMAH7DxgfrLJGfbt2xd57kd1AAAAAG5cnuetCHHWdf3NoihONzoEAAB0ROOvYAEAQFvsPFh+sMkZ5ufnnU4HAAAAYNeqqoorV65EXddNj/JSWZb3DQaDtaYHAQCAthLgBABg5q2urh7u9XrLEXF7k3O0ZUsCAAAAAN3WohDnq2VZnhDiBACAj+cuIwAAM60t4c0sy4Q3AQAAABiLFr0ofHuv11teXV093PQgAADQRgKcAADMLOFNAAAAAKaVECcAALRf4z+tAwBAE9oW3sxz71YBAAAAMH5VVcXVq1ejqqqmR3FOHQAAPkKAEwCAmSO8CQAAAMAsqes6rly5IsQJAAAtI8AJAMBMaUt4M8/z2L9/v/AmAAAAABOzubkZw+Gw6TGEOAEAYIcAJwAAM6Mt4c25ubnYt29fZJkfxwEAAACYrOFwGFtbW1HXdZNjCHECAEAIcAIAMCPaEt5cXFyMhYWFJkcAAAAAYMZVVRVXr15t+qS6ECcAADNPgBMAgKnXhvCmk+kAAAAAtM3W1lZsb283OYIQJwAAM02AEwCAqdaG8Ob8/HwsLi46mQ4AAABA64xGo9jc3GzypLoQJwAAM8snyAAATK2mw5tZlsXi4mLMz8830R4AAAAAbkgLTqq/2u/372iqOQAANMX9RgAAplLT4c08z+PAgQPCmwAAAAC03rVnWXNzc02NcHtRFKebag4AAE2xgRMAgKnTdHiz1+vF/v37nUwHAAAAoHO2trZie3u7qfZP9fv9U001BwCASfOJMgAAU6Xp8ObCwkIsLi420RoAAAAAxmI4HMbm5mZT7YU4AQCYGU6oAwAwVXq93rPRUHhz3759wpsAAAAAdN78/HwcOHCgqQszDxZFcaqJxgAAMGkCnAAATI2iKE5HxOcn3TfLsjhw4EDMz89PujUAAAAAJNHr9ZoMcT5ZFMV9TTQGAIBJEuAEAGAqrK+vPxwRD06677XwZq/Xm3RrAAAAAEgqz/MmQ5ynL126dEcTjQEAYFIa+UkbAADGaWNj40Rd13836b7Xwpt57r0oAAAAAKZXVVVx5cqVqOt60q1fLcvyxGAwWJt0YwAAmASfNAMA0Gmrq6uH67p+dtJ9hTcBAAAAmBUNbuK8vdfrPTbppgAAMCk+bQYAoNN6vd6zEXFokj2FNwEAAACYNQ2GOB8siuK+STcFAIBJ8IkzAACdtb6+/nBEfH6SPYU3AQAAAJhVDYY4T6+urh6edFMAAEjNp84AAHTS6urqrVmWPTrJnsKbAAAAAMy6hkKch3q93ulJNgQAgEnwyTMAAJ2088B2YqfThTcBAAAA4D0NhTi/6JQ6AADTZuK77QEAYK+KojgVEU9Oqp/wJgAAAAD8vqqq4sqVK1HX9aRarpdleetgMFibVEMAAEjJJ9AAAHTK6urq4Yh4bFL9hDcBAAAA4OM1sInzUK/Xm9izQQAASM2n0AAAdMokT6dfewAtvAkAAAAAH6+BEOeDGxsbJybVDAAAUnJCHQCAztjY2DhR1/XfTaJXlmVx0003TfLBMwAAAAB01oTPqb/R7/dvnUQjAABIySohAAA6o67r05Poc+1suvAmAAAAANyYPM9j//79k2p3y/r6+qOTagYAAKkIcAIA0Ak7D2RvSd3nWnjT2XQAAAAA+Gx6vV7s27dvIr2yLHt4dXX11ok0AwCARHwqDQBA662urt6aZdnDqfsIbwIAAADA3szPz8fCwsIkWh3q9XqPTaIRAACk4pNpAABab+dB7KHUfRYXF4U3AQAAAGCPFhcXY25ubhKtvrixsXFiEo0AACAFn04DANBqOw9gv5i6z8LCQszPz6duAwAAAAAzYd++fRN5Wbqua1s4AQDoLAFOAABara7rR1P3yPM8FhcXU7cBAAAAgJmRZVns27dvEq1uL4ri1CQaAQDAuAlwAgDQWjsPXj+fus/+/ftTtwAAAACAmdPr9WJhYWESrR6dRBMAABg3AU4AANrs0dQNFhYWJnLKCQAAAABm0YSev92yvr7+aOomAAAwbj6pBgCglXa2b96SsofT6QAAAACQ1qROqWdZ9vDq6urh5I0AAGCMBDgBAGirR1M3mMSDYwAAAACYdb1eL+bn51O3OZTn+anUTQAAYJwEOAEAaJ1JbN9cWFiIXq+XsgUAAAAAsGNxcTGyLEvaI8uyh5M2AACAMRPgBACgjZI+aM2yLBYWFlK2AAAAAAA+IMuyWFxcTN3mlp2XwwEAoBMEOAEAaJWNjY0TEXF7yh6TeNsfAAAAAPiw+fn5SVzFeTR1AwAAGBcBTgAAWqWu61Mp6/d6vZifn0/ZAgAAAAD4BPv27Uvd4padl8QBAKD1BDgBAGiN1dXVwxHxYMoeEzjTBAAAAAB8gjzPk79gnfolcQAAGBcBTgAAWqPX692Xsv6ETjQBAAAAANexuLgYWZalbPHgzsviAADQagKcAAC0ycMpiy8sLKQsDwAAAADcgCzLkm/hTP2yOAAAjIMAJwAArbDzRvztqeovLCxEnvvxFwAAAADaYGFhIfUWzqQviwMAwDj4BBsAgFZI+UZ8lmW2bwIAAABAi0xgC+ftq6urt6ZsAAAAeyXACQBAW5xIVXh+fj712/wAAAAAwGeUegtnr9c7kaw4AACMgQAnAABtcSJV4cRv8gMAAAAAuzCBLZzJrv4AAMA4CHACANC4nVNGt6SoPT8/H3nux14AAAAAaKOFhYWU5b+YsjgAAOyVT7IBAGhcylNGiR8AAwAAAAB7kHoLZ1EUtnACANBaApwAADQuy7I7UtTN89z2TQAAAABouZQBzizLTiQrDgAAe+S5LKWpAAAgAElEQVTTbAAAGlfXdZIA59zcXIqyAAAAAMAY9Xq9ZC9i13V9IklhAAAYAwFOAADa4PMpivZ6vRRlAQAAAIAxS/gy9u2rq6uHUxUHAIC9EOAEAKBRq6urt6aqLcAJAAAAAN2Q8ppOr9c7kaw4AADsgQAnAACNmpubuzVF3TzPI8uyFKUBAAAAgDHr9XrJnudlWXYiSWEAANgjAU4AABpVVdWJFHXz3I+6AAAAANAlqS7q1HV9R5LCAACwRz7VBgCgUVmW3ZqirgAnAAAAAHRLqgBnRHw+VWEAANgLn2oDANC0W1MUTfiwFwAAAABIYG5uLlntjY2NE8mKAwDALglwAgDQtCTni2zgBAAAAIBuyfM8sixLUruqKmfUAQBoHZ9qAwDQmNXV1Vsj4lCK2gKcAAAAANA9qS7rZFl2IklhAADYA59qAwDQmF6vl+Std+fTAQAAAKCbEj7bs4ETAIDWEeAEAKAxdV07nw4AAAAAvC9hgPOWnYtAAADQGj7ZBgCgManOFmVZlqIsAAAAAJBYyus6qS4CAQDAbglwAgDQpM+nKDo3N5eiLAAAAAAwAalCnKkuAgEAwG4JcAIA0IiU54qcUAcAAACA7koV4Ex1EQgAAHbLJ9sAADRibm7u1hR18zx3Qh0AAAAAOizhGfVbUxUGAIDdEOAEAKARVVWdSFHX9k0AAAAA6LaEAc5bUhUGAIDd8Ok2AACNyPP8cKK6KcoCAAAAABOSZVmy53yXLl26I0lhAADYBZ9uAwDQiLqukzwonZubS1EWAAAAAJigLMuS1K3rOsmL5QAAsBsCnAAATJVUD3YBAAAAgMlJdUZdgBMAgDYR4AQAoCm3pijqhDoAAAAA8ElSXQYCAIDd8Ok2AABNuWXcBYU3AQAAAGA6zM3NNT0CAAAk5xNuAACmhvPpAAAAAAAAAHSFACcAAAAAAAAAAADAhAlwAgAwcaurq4ebngEAAAAAmD1Zlp1oegYAALhGgBMAgImbm5u7I0VdJ9QBAAAAYDr0er2mRwAAgOQEOAEAmBp57sdbAAAAAAAAALrBJ9wAAAAAAAAAAAAAEybACQAAAAAAAAAAADBhApwAAAAAAAAAAAAAEybACQAAAAAAAAAAADBhApwAAAAAAAAAAAAAEybACQAAAAAAAAAAADBhApwAAExcXdeHm54BAAAAAGi3PE/ycfYdKYoCAMBuCHACADBxdV0neUja6/VSlAUAAAAAGpBlWYqyh1IUBQCA3RDgBABgaiR6oAsAAAAAAAAAYyfACQAAAAAAAAAAADBhApwAAAAAAAAAAAAAEybACQDAxOV5frjpGQAAAACAdqvruukRAAAgKQFOAAAmrq7rO1LUzbIsRVkAAAAAoAFVVaUo+0aKogAAsBsCnAAATI089+MtAAAAAHBd55seAAAArvEJNwAAAAAAAACt4nw6AACzQIATAAAAAAAAgFZJdD4dAABaRYATAAAAAAAAgFZJtYGzruvlJIUBAGAXBDgBAAAAAAAAaJWyLJseAQAAkhPgBAAAAAAAAKBVUm3gzLLsbJLCAACwCwKcAAAAAAAAALRKVVVJ6mZZtpakMAAA7IIAJwAAAAAAAACtkirAORqNbOAEAKA1BDgBAAAAAAAAaJVUJ9QHg4ENnAAAtIYAJwAAAAAAAACtUZZlqtIvpSoMAAC7IcAJAMDUSPVWPgAAAAAwOQmf89m+CQBAqwhwAgDQhCQPSquqSlEWAAAAAJigVBs467o+m6QwAADskgAnAAAT50EpAAAAAPBJUm3gzLLsfJLCAACwSwKcAABMjdFo1PQIAAAAAMAepbq0I8AJAEDbCHACADBxHpQCAAAAAJ8k1QbO0WjkMhAAAK0iwAkAwMSlCnCWZZmiLAAAAAAwQak2cA4Gg7UkhQEAYJcEOAEAmLjRaHQ+Rd1UD3YBAAAAgMlI+IzvpVSFAQBgtwQ4AQCYuMFgcD5F3bquk51XAgAAAADS83wPAIBZIsAJAEBTXk1R1BZOAAAAAOiuVAHOuq6XkxQGAIA9EOAEAKAp51MUHY1GKcoCAAAAABNQlmXTIwAAwMQIcAIA0Ii6rs+mqGsDJwAAAADwUXmeLzc9AwAAfJQAJwAAjciyLEmA0xv6AAAAANBdnu8BADBLBDgBAGhEWZZJApx1XdvCCQAAAAAdVdd1krqj0SjJ80gAANgLAU4AABoxGAzOR8R6itre0gcAAACAbkr1cvZgMFhLUhgAAPZAgBMAgCY5ow4AAAAARES68GZEvJGqMAAA7IUAJwAAjanrejlFXQFOAAAAAOieVOfTI+J8qsIAALAXApwAADQmy7IkGzirqkr5tj4AAAAAkMBoNEpV+nyqwgAAsBcCnAAANKYsy+VUtRM+7AUAAAAAEkj1UnZd1+eTFAYAgD0S4AQAoDGDwWAtIt5IUVuAEwAAAAC6pSzLJHXzPF9OUhgAAPZIgBMAgKYtpyhalmXUdZ2iNAAAAAAwZlVVJXueNxqNzicpDAAAeyTACQBA055NVdgWTgAAAADohoTP8tYHg8H5VMUBAGAvBDgBAGhUWZbLqWoLcAIAAABANwyHw1Slz6YqDAAAeyXACQBAowaDwVpEvJqitgAnAAAAALRfVVVRVVWS2nVdLycpDAAAYyDACQBA47IsW05VW4gTAAAAANot5TO8LMts4AQAoLUEOAEAaFyWZadT1RbgBAAAAIB2K8syZe3lZMUBAGCPBDgBAGjc0tLS2YhYT1E75cNfAAAAAGDvEj7De3UwGKylKg4AAHslwAkAQFs8m6JoVVVRVVWK0gAAAADAHlVVFXVdJ6ld1/XpJIUBAGBMBDgBAGiLJAHOCFs4AQAAAKCtRqNRstq9Xm85WXEAABiDrOkBAADgmqIo1iLi0Ljrzs/Px759+8ZdFgAAAADYo83NzRgOhylKv9Hv929NURgAAMbFBk4AANpkOUVRGzgBAAAAoJ2qqkpSN8uyZBd/AABgXAQ4AQBokyQPVVM9BAYAAAAA9ibVy9d1XS8nKQwAAGMkwAkAQGuUZbmcsHaq0gAAAADALqR88brf79vACQBA6wlwAgDQGoPB4HxEvJqitgAnAAAAALRLXdepSid5xggAAOMmwAkAQNucTVHUGXUAAAAAaJeEL10necYIAADjJsAJAECr1HWd5OGqDZwAAAAA0C6pNnDWdX0+SWEAABgzAU4AAFolz/NkGzht4QQAAACA9kj10nWe58tJCgMAwJgJcAIA0CoHDx5cTlV7NBqlKg0AAAAAfEapApxZlq0lKQwAAGMmwAkAQBu9lKKoM+oAAAAA0A4pX7ZeWlpKcuUHAADGTYATAIDWybIsyQPW0WgUdV2nKA0AAAAAfAYJX7Z+NVVhAAAYNwFOAABap67r5VS1nVEHAAAAgOYlfE5n+yYAAJ0hwAkAQOuUZbmcsHaq0gAAAADADaiqKqqqSlK7rmsBTgAAOkOAEwCA1hkMBmuR6NSRDZwAAAAA0KzhcJisdq/XW05WHAAAxkyAEwCAVsqybDlF3bqubeEEAAAAgAYlDHCuLy0t2cAJAEBnCHACANBKdV0vp6ptCycAAAAANGM4HEZd16nKL6cqDAAAKQhwAgDQSv1+/9mIWE9RW4ATAAAAAJqxvb2dsvyzKYsDAMC4CXACANBmSR64VlWV8i1/AAAAAOBjDIfDqKoqWf2yLJeTFQcAgAQEOAEAaLNkb8ynfFAMAAAAAHxYXdextbWVssWrg8HgfMoGAAAwbgKcAAC0Vso35p1RBwAAAIDJ2draSnoVp67r08mKAwBAIgKcAAC01mAwWIuI51LULssyRVkAAAAA4CPKsozhcJi0R1VVya75AABAKgKcAAC0Wl3Xy4nqpigLAAAAAHxE4tPpEREvOZ8OAEAXCXACANBqvV5vOUXdqqqEOAEAAAAgsbIsJ3EN53TqBgAAkELW9AAAAPBpiqJYi4hD46574MCB6PV64y4LAAAAAOy4cuVK6gDner/fP5yyAQAApGIDJwAAXXA2RdEJvPkPAAAAADNrEts367p+LGkDAABISIATAIDWq+t6OUXdqqpSlAUAAAAAImJ7ezt5j6qqBDgBAOgsAU4AAFovy7LzKerawAkAAAAAaVRVFaPRKGmPLMt+NBgM1pI2AQCAhAQ4AQBovTzPk5xQr6rKFk4AAAAASGA4HKZusT4ajR5N3QQAAFKaa3oAAAD4NEtLS2eLokhSezQaxcLCQpLaAAAwLkWxHi8+/3y8cubleOXMy3HxwoUP/fmD/X4cO35b/PO77o577r03jh2/raFJAQDek3r7Zl3Xj9m+CQBA12VNDwAAADeiKIrliPj8uOvmeR433XTTuMsCADPk9XOvRbG+HhdWVqIo1uNzO8G5O++6u+HJmAYXVlbi8R9+P575+dOf6e87dvx4nPrq1+NLD3wl0WQAAJ+sqqq4fPlyyhZv9Pv9W1M2AACASRDgBACgEzY2Nh6r6/qbKWovLS1FlvnRGAC4cb94+mfx4gt/G//lhReu+9cdO3487n/gK3HPyX8ZR44endB0TIOiWI/TP/1pPP7vf7CnOseOH4/v/+jHNnICABO1tbUV29vbyepnWfYvDh48uJysAQAATIhPqQEA6ISiKO6LiP+covbi4qIz6gDADXn8hz+IJ5/4SWwUxWf+e+//8gPx0LcfEeTkU71+7rV45JvfiNfPnRtbzYe+9Z146NvfGVs9AIDruXz5clRVlar8c/1+/75UxQEAYJIEOAEA6ITV1dXDvV5vNUVtZ9QBgE/zypmX45FvfiMuXriwpzoH+/34869+XZCOT/SLp38W3/s3391VSPjTfOHkyfj+j34c/f6hsdcGALgm9fn0siz/h8FgcD5ZAwAAmCABTgAAOqMoirMRcXuK2jfddFPkeZ6iNADQcY//8Ad7PmP9UX/yp3fFX59+SpCOD/nF0z+L/+Phh5L2OHb8ePzNM8/6tQcAJLO9vR1bW1upyj/V7/dPpSoOAACT5hNqAAA6I8uy5VS1t7e3U5UGADrskW9+Y+zhzYiIX/3yTPwv//O/iNfPvTb22nTTJMKbERGvnzsX/9v990VRrCfvBQDMptFolKx2nuePJSsOAAANEOAEAKAzsiw7nar2cDiMqqpSlQcAOuiRb34jnvn508nqX7xwIf7s/vuEOInXz702kfDm7/qdi+/9xXcn1g8AmC1lWaYq/erS0tLZVMUBAKAJApwAAHTGzgPaN1LV39zcTFUaAOiY1OHNazaKIv7MNsSZVhTr8Wf33zfxvs/8/Ol48omfTLwvADDdUr4gXdf16WTFAQCgIQKcAAB0zXKqwmVZptwQAAB0xOM//MFEwpvXbBSFk9Yz7F+fejA2iqKR3v/u3/yFDbAAwFilPJ9eVdWzyYoDAEBDBDgBAOiapA9qbeEEgNn2ypmX4/F//4OJ93XSejY9+cRP4le/PNPoDI988xuN9gcApkvCDZyvDgaD86mKAwBAUwQ4AQDolH6//2wkPKNeVVUMh8NU5QGAFiuK9fjXf/5gY/2f+fnT8eILzzfWn8kqivV4/IeTDwt/1OvnzrViDgBgOqQKcNZ1bfsmAABTSYATAIDOybIs6QPbra2tqOs6ZQsAoIW+9xffbeyU9TWPfPMbTqnPiMd/+IPGf71d8+QTP/HrDgAYi7Isk9TN83w5SWEAAGiYACcAAJ0zGo0eS1m/rmtbOAFgxrxy5uV45udPNz1GbBSFbYgz4MLKSpx+4qdNj/G+jaKI7/3Fd5seAwDouJQvRB88eHA5WXEAAGiQACcAAJ0zGAzOR8RzKXsIcALAbPlRi0KTp5/4aVxYWWl6DBJ6/Iffb3qE3/PMz5/26w4A2JNU59Mj4tVUhQEAoGkCnAAAdFKWZUm3cFZVJcQJADPiF0//LH71yzNNj/EhbQz4MR5Fsd6Kba8f55mnf9b0CABAhyUMcJ5NVRgAAJomwAkAQCftnE16KWUPAU4AmA2nn/hJ0yP8HtsQp9fpn7bndPpHPdnC/xYAgO5IFeCs6/p8ksIAANACApwAAHRWlmWPpqxflmXKzQEAQAu8cubleP3cuabH+Fi2cE6nXzz9n5oe4RNtFEX8whZOAGCXyrJMUjfLMhs4AQCYWgKcAAB0li2cAMBetTms9szPn46iWG96DMboxReej4sXLjQ9xnW9+MLfNj0CANBRCQOca0kKAwBACwhwAgDQaXmeP5yy/mg0SlkeAGhQUazHMz9/uukxruvF559vegTG6MXn2x+O/C8vvCA4DAB8Zimfoe28xA0AAFNJgBMAgE5bWlo6GxFPpapfVZUz6gAwpdq8ffOa00/8pOkRGKMXX+hGIFdwGAD4rFJt34yIN1IVBgCANhDgBACg88qyfDgikq0JckYdAKZTF0Jqr587FxdWVpoegzF4/dxrsVEUTY9xQ5xRBwA+q4QbOM+mKgwAAG0gwAkAQOcNBoO1uq4fS1XfGXUAmD5FsR6/+uWZpse4IcJ006ELgeFrXjnTjf82AIB2SHnBpq5rAU4AAKaaACcAAFOhqqrHItEWzqqqoq7rFKUBgIZ0K0z3ctMjMAZ/36Gv40ZRxOvnXmt6DACgI1Jer8nzfDlZcQAAaAEBTgAApsJgMFjLsux0qvplWaYqDQA0oEuhSNsQp0PXApFdCpwCAM1Keb3m4MGDy8mKAwBACwhwAgAwNUajUbIz6gKcADBduhSmsw2x+y6srMRGUTQ9xmfy+mt+zQEAny7l+fSIeC5VYQAAaIu5pgcAAIBxGQwG54uieDUibh93bQFOANqi3tqOuqoihqOoR9c/VZjNzUfMz0W+uBCRe4/3mqJYj9fPnWt6jM/k78+8HMeO39b0GOxSFwO4F1ZWmh4BAOiAlNs367peTlYcAABaQoATAICpUtf16SzL/t9x1xXgBGDS6uEo6qubUY+GUV3d3Als7uHD0TyPbHEh8v37Itu/P/L9+8Y3bMd0cbNgF2fmd7r49fvVL880PQIA0AHD4fVfKtuLqqqeTVYcAABaQoATAICp0uv1llOdbaqqKnLbywBIpB6Oorp8JeqrV98LbI7797OqivrqZpRXNyNiLSLPI9+/L/Kbbop86cBMbej8tW2ITNiFlX9qeoRdKYr16PcPNT0GANBSic+nvzoYDM6nKg4AAG0hwAkAwFRZWlo6WxTFGxFxy7hr13U97pIAzLh6azuqjY2oLl3Z23bN3aiqqC5fierylYjf5pHfdCDy/sGZ2Mx5sYNhSNsQu62rAdzXX3st7rzr7qbHaFS9s/24vnr1ve+bW9vv/Ym9bkX+iGxuLmJ+7kN/nM3PReS9yBYXfvfHANAiic+nn05WHAAAWsQTHwAAptFyRDw47qJlWUav1xt3WQBmTD0cvRfaLC5NPrT5Saoqqo1LUW1cimxuLvLDh6LXX5rarZy/7uA5a2BCqiqqS1eiuno16qubE/s+XY9GER/o9bGvjuV5ZIsLke/fF9n+/TMRuAeg3VIGOJ1PBwBgVghwAgAwdeq6Pp9lWYq6Y68JwOyoLl+Jcm096qubTY9yXfVoFOVv34ny3dXIbzoQvT8Y2PrWEq+ceXnmtyF2VVc3qP763Oxs4KwuX4mq2HhvK3FbVVXUVzejvLoZEWsR+c725KWbIr/pQNPTATBj6rqOsixTlXc+HQCAmeHpOwAAUyfP8+W6rv+vpucAgIiIqrgU5bur7dm2eaM+uJVz/77oHT40NQGhrobpYNI21oumR0irqqJcW2/XRuTP4qPbk/tLkR88KHQPwEQkPp9u+yYAADPDkxwAALhBCbcKADCFqstXonz7nW6Ggj6ivroZo6ub7weEeocPTe15dWD61Vvb7wU3Ny41PcrY1KNRlO+uRfnuWuQH3/s+nS0uND0WAFMsZYCz1+sJcAIAMDMEOAEAmDqj0ehsr9dregwAZlS9tR2j377T+lPpu/F+QGitiF5/KfJDh2x6m6BXzpyZmXPWkEJVXIpyY2Mqvz9/0Ie2J//BIPL9+5oeCYApU9d1ygDnG0tLS2dTFQcAgLbxhB0AgKkzGAzWimL85x5t4ATg05Tvrkb57lrTY6RXVVGuFVEWl6J3uG8jJ9BeVRXVpStRvrs6FRuRP4v66maMLr4pyAnA2KXcvpllme2bAADMFAFOAACm1XpEHBp30aqqIhdQAeAj6q3tGP3m7ai3tpseZbKq6ncbOf9gEL3D/aYnAnhf+e5qlGtFRFU1PUqjPhjknPujP3RaHYA9S/mSc5Zlp5MVBwCAFvLJMwAA0yrJqaWUGwYA6KZyrYjhysXZC29+UFVF+dt3/HsAWqEqLsXw/Mp7G5FnPLz5QfXVzRiuXIzRW2/79wLAnjifDgAA4yPACQDAtDqfoqgz6gC8r6pi9OZbUf72naYnaY16azuGKxejfHe16VGAGVRvbcfw4pvvbUT24tUnqjYuxfb5laiKS02PAkAHjUajqOs6VfnlVIUBAKCtnFAHAGAq1XV9Psuysde99pA6RW0AuqMejmL0X9+ybfITlO+uRXX5Ssz9d/8ssnmPn6CrDh7qNz3CDSvfXX1v4yY3pqpi9Ju3I9vYiLn/9r/xvRqAG5b4Os2zKYsDAEAb2cAJAMBUyvN8OVVtZ9QBZtu1LZPCm9d37d9TdflK06NMjS6F6fiwY8ePNz3Crnzu+G1Nj/Cpfrf5V3hzN66dVfe9GoAblfC52Hq/3xfgBABg5ghwAgAwlUaj0dlUtYfDYarSALRcVVyK4crFiKpqepRuuHZm3kn1sehCmI6Pd7B/qOkRplJVXIrhxTcF6vdq53v16K23m54EgJZLfD5deBMAgJkkwAkAwFQaDAZrEfFqitplWUYluAMwc6riUox+I9yyG+W7azF6863WBF9vPnKk6RGYMUeOHm16hF05dlt7Q8Plb99573tyS76vTINqw0sKAFyf8+kAADB+ApwAAEytLMuWU9Xe3rblB2CWlGuF8OYeVZevxPDim60IBt189I+bHmFXujo3EUc6+rXrt3Rz6Oitt6NcK5oeYyrVW9sx/KeLtpoC8Hvquk4a4HQ+HQCAWSXACQDA1KrrejlV7eFwGGVZpioPQIuM3no7yt++0/QYU6He2m7FueP+oX6j/Xerq1scafcmy0/yJ396V9MjfKzRW29HtXGp6TGmWj0ateJ7NQDtkvh8+nOpCgMAQNsJcAIAMLV23txfT1V/c3MzVWkAWkJQaPzaEOL83PH/qbHeu+Xse7d1MXzbxpl9T56gqmr8ezUA7ZL4Go3tmwAAzCwBTgAApl2yB8BVVcXW1laq8gA0TFAooYaDQV3chuh8ercdO969X3Nt+++kXCt8T540IU4AdpRlGVVVpawvwAkAwMwS4AQAYNolfQC8vb2d9AE2AM2oikuCQqk1GAxq42bBT/PP77q76RHYo7aeJP8kn2tR6LTe2o7yt+80PcZsEuIEICL1C8zPDQaDtZQNAACgzQQ4AQCYaqnPqEc4pQ4wbarLV2L0m7ebHmM27ASDqquT/b3UNkSa0LUQ7p0tmtf35IZVVYzefCvCi2sAM2k4HEZZlilb2L4JAMBME+AEAGAWJH0QXJZljEajlC0AmJB6aztGbwkKTVRVxejim1EVk9142rVtiHfe1a15+X1d+hp+4eTJpkd4X/nuqu2PLVCPRjG8+KYQJ8AM2t5O+/uw8+kAAMw6AU4AAKZenuePpe6R+JQUAJNQVe9teRNOacToN29P9ERyl7YhHjt+PPr9Q02PwR7dedfdcbDfb3qMG9Ka7ZtVFeVa0fQU7Ki3tmP0tlP2ALNkOBxGlfb/j5xPBwBg5glwAgAw9ZaWls5GxEspe1RVFcPhMGULABKz5a155VoxsTO999x7b/Ie49KaMB17ds/Jbvy6u+fkv2x6hIiIKNfWhepbptq4FOW7q02PAcCEpN6+GRGnUzcAAIC2E+AEAGAmZFn2aOoeE3ioDUAi1dVNW95aorp8JYYX34x6OEra59jx22xDZOLuubcdwcjrOXb8eBw5erTpMWzfbLHy3bWorm42PQYAiZVlmXr75hv9ft/5dAAAZp4AJwAAM+HgwYPLMYEtnGVZpmwBQApVFeVbbzc9BR9Qb23HcOVi8o2oXdiGeLDf78Sc3Jh7Tt7b+uDwqa9+vekRIiKiLC7Zvtlik9qWDEBzUr+oXNf16aQNAACgIwQ4AQCYGZPYwumMOkD3lGvrUY/SbntkF6rqvU2cCUOcX3rgK8lqj4vw5vRp86+7g/1+3HNvO37NVWvrTY/A9VRVDN98q+kpAEikqqoYJf5/pKqqHkvaAAAAOkKAEwCAmbGzhfO5lD2Gw2HUdZ2yBQBjVA9HUb671vQYfJKdEGdVXEpS/s677o6bjxxJUntc2hz2Y3fasuHy49xz8t7o9w81PUZUVzcF6zugvrrpzD3AlEod3oyIpwaDgf8RAwCAEOAEAGDGlGX5cEQkXeczgYfcAIxJ+e5q0yPwaaoqRr95O6rLV5KU/9ID/ypJ3XG4+ciRuPOuu5segzE7cvRo3P/lB5oe42M99O1Hmh4hIiKqYqPpEbhB5burUQ/9/w/AtEl9YaYsy0eTNgAAgA4R4AQAYKYMBoPzdV0/mrKHACdAN1RXN6PaSLPZkfEbvfV2knPqp772tbHXHJe2hOkYvzZ+be//8gNx5OjRpseIiEgW2CaBnZA9ANOjqqqoqipli6cGg8H5lA0AAKBLBDgBAJg5hw4deiwiXkpVfzQaOaMO0AG2b3bMzjn1cW966/cPtXIb4sF+3/n0KdbGLZxtCZVWl69EpA2NMGb11U2hW4ApYvsmAABMlgAnAAAzqSzLUynr28IJ0G711nbUVzebHoPPqqpi9F/fGnu4qy3BtQ966NvfaXoEEnvo24/EwX6/6TEiIuLUV7/Wnu2bly43PQK7UL79TtMjADAmiZ9p2b4JAAAfIcAJAMBM2jml/n+nql+WZarSAIxBubbe9AjsUkIMXFkAACAASURBVL21PfbtqUeOHo2HvtWewOTNR47En3/1602PQWJHjh5txdf55iNHWhUYtsmxm+rRyGZrgCmQ+ny67ZsAAPD7BDgBAJhZVVWdTlXbBk6A9qqHo6g2LjU9BntQrhVRjXmD6qmvfa012xC/+5f/rukRmJCHvv2dOHb8eKMzfP9HP45+/1CjM1zjfHq3lWuFrx9Ax9m+CQAAkyfACQDAzNp5aPxcitp1XQtxArRUtW775jQo33p7rPX6/UPx/R/9eKw1d+MLJ0/GPSfvbXoMJuivnvwPjYWHT331a3HnXXc30vvj1FevNj0Ce1FVNlwDdNxwOExWO8/zx5IVBwCADhPgBABg1p1OVViAE6CFqirKwvbNaVCPRlGN+Wt5z8l74wsnT4615mdxsN9vRYiUyTpy9GgjX/djx4/Hd//t9ybe93qqS86nd50tnADdVdd1yvPpbywtLZ1NVRwAALpMgBMAgJnW7/efjYgka2IEOAHap7rkPO80Kd9dHXvN7//ox3HzkSNjr3sj/vrJp1pzyprJuufkvfH/PPb4xPodO348/uaZZyfW70bUW9tR+/m5+7woAdBZKZ9j1XVt+yYAAHwCAU4AAIhI8um1M+oA7ZMi8EdzUmzh7PcPxV+fnvxJ6//z3/5lq05ZM3lfeuAr8dC3vpO8z7XwZtvCwk5vT4/K1xKgk8qyTFa7qqp2vTkCAAAtIsAJAACJApwRtnACtEl1ddN2tylUXb489prHjt8W/3GC2wnv//ID8edf/frE+tFeD337O0k3cbY1vBlVFdVl59OnRT0a+XoCdFDCAOerg8HgfKriAADQdQKcAADMvJ0z6kkIcAK0h41g06m6fCXq4fh/vz12/Lb4qyefSr6J8/4vPxDf/9GPk/agW770wFeS/Nq7/8sPtDO8GRHVpSsRVdX0GIxRVWw0PQIAn0FVVVEl+r24rmvbNwEA4DoEOAEA4D3PpSjqjDpAS9juNtVSfW3vOXlv/Mdnnk0W4nzoW98R3uRj3XPy3njpH/4xvnDy5J5rHez346+efCq+/6MftzK8GRFRrgvYT5vqslAuQJekPJ/e6/UEOAEA4DoEOAEA4D22cAJMsbK41PQIJJTijPo1x47fFi/9wz/Gn/zpXWOreS1Q99C3vzO2mkyffv9Q/PWT/yH+5hf/eVe//g72+/HQt74TL/3DP8Y9J+9NMOF41MNR1FvbTY9BAn7vBeiOhAHON5aWls6mKg4AANMga3oAAABog9XV1cO9Xm81Re0sy2JpaSlFaQBu0HDlooDQlFv4H2+JyNO+q/zkEz+Jx3/4g9goil3XuP/LD8R3//J7rd2ESHtdWFmJ00/8JH792mvxq1+e+di/5uYjR+LOu+6OO++6O770wFcmPOHulGtFlL99p+kxSCBbXIj5ozc3PQYAN+Dy5cupTqg/1e/3T6UoDAAA00KAEwAAdhRF8WxEfDFF7QMHDkSv10tRGoBPUQ9HMXxjpekxSGzuv/9nkd90IHmfoliP0z/9afzi6f8UFy9cuOG/7/4vPxAPffuROHL0aMLpmCUXVlbi4so/vf/Hd951d4PT7J6A/XSbv+VoZPNzTY8BwHVUVRWX0220/1/7/b4T6gAAcB0CnAAAsKMoilMR8WSK2gsLC7G4uJiiNACfoiouxeg3bzc9Bon1Dvej90d/ONGer597LV58/vn4+zMvR0S8vxXx5iNH4uajfxyfu+22nW2Id9m4CR+nqmL7/3uj6SlIqPdHfxi9w/2mxwDgOobDYWxubiapXZblYDAYrCUpDgAAU0KAEwAAdqQ8o57nedx0000pSgPwKUZvvhXV5StNj0FiTvVC9wjYTz/fmwHab3NzM4bDYYrSr/b7/TtSFAYAgGnidgkAAOwYDAZrRVE8FwnOqFdVFVVVRZ7n4y4NwKeorqbZJkO7OMGc3uvnXotifT0iIm4++sfOwbNn9fZW0yOQWL21HVFVEf4/CKC1RqNRqtJnUxUGAIBpIsAJAAAf9mwkCHBGvHeSyhl1gMl6PzjCTKiubka+f1/TY0yFCysr8eILfxuvnHk5Xn/ttbh44cLH/nU3HzkSx3ZOxX/u+G0f+nPHbrvtY0/HX1hZiYsr//T+H//63GuxsV783l938FD/92r+7u9fueF/lg/WubCyEq+ceTkurKzE6+dei43iw30P9vtx7Pht8bmdf6Z7Tt57w3347ATsZ0N16Urk/aWmxwDgY1RVFXVdpyq/nKowAABMEyfUAQD4/9m7/1g77/pO8J/n3Htt3+t7H/skNlliO0klUOI4WoaoIk6MdnZ264RUqpomZALtH4SJoN0/IKAC/WMoUDb7D213AvwxS1EHM9J0yezAOqpU0g1Sb/5IAtXM1JZwkkqVapPQ0Sih9j2Of91znufZP+KkJMT2te/5nu8553m9pApK4vfz6XVzLZ77Pp8PP8cZdYDp4jxvu8y+Y7uS0Dp997HvxHcf+0789bPP5B5lLCyVZez/wN3x0Y//dux+mzIp67P6d3+fewRGoLO0GLPXbM89BgBv49y5c7G6mmaTfVVVv9Ttdo8mCQcAgCmiwAkAAG/R6/WSbeHcvHmzM+oAI1S98rOoTvziZj+m08xVW2Pmqm7uMSbSk098Px75/X99wU2bRLzv9jvi4c98Nm67Y1/uUaZCfeZsDH7633KPwQgUs7Mxd8Ou3GMA8DZOnToVdZqLBcfKsrwhRTAAAEwbPzkGAIBfdDBVcL/fTxUNwNuoz6XZJsN4co758r304ovxm/feE//bRz+ivHkJf/3sM/Fb9/1GfO7hT0Svt5J7nMnXH+SegBFpBoOINOUgANahrutU5c0I59MBAGDNFDgBAOAtqqpaTpU9GPhBNcAoNQqccEE/eubp+LVf+RfOpV+m7/3Hx+LX/td/Ec8f+XHuUSZaM/DBpjZRsAcYP4nfUSX7cDQAAEwbBU4AAHiLbrd7NCIOp8hOvN0AgJ9X1zZ+tUyjILRm333sO/Fb9/1GnOz1co8ykX760kvxm/feE9997Du5R5lYCvbt0pw7l3sEAN4iZYEz5YejAQBg2ihwAgDA22ia5kCq7KqqUkUD8HOcT4e3993HvhO/96lP5h5j4p3s9eL3PvXJ+NEzT+ceZSI1CvatorALMH4Svp96qtvtnkgVDgAA00aBEwAA3kZd18lOPTmjDgDpNH1/zl7M80d+HI984fO5x5gqv/PRjzinfiX8s9oqjf8OBDBWUn64uGka59MBAOAyKHACAMDbSHlG3QZOgNFozpzJPQIZKAld3Oce/oSz6UN2steLzz38idxjTBz/rLaLDZwA4yXlh4tTfigaAACmkQInAABcQKoz6k3TKHECACP33ce+E88fOZJ7jKn0/JEj8a1vfiP3GDDe6jr3BACcV6f7nnz4/IeiAQCANVLgBACAC3BGHQCYJl/7o6/kHmGqfe2P/jD3CJNDka+Vals4AcZGqgJnURTLSYIBAGCKKXACAMAFnN8YcCxFtg2cAOk1fWV5eN2TT3w/fvrSS7nHmGone7347mPfyT3GRFDkA4C8EhY4DyQJBgCAKabACQAAF1EURZItnAqcAOk1th23UnPmTO4RxtKT3/+L3CO0wpNP+DrDBflgBcBYaJomVfTK4uLioVThAAAwrRQ4AQDgIpqmWU6V7Yw6ADAqTz7x/dwjtMIPnngi9wgwtppBP/cIAES67ZsRobwJAABXQIETAAAuoizLJBs4I2zhBABG4/kjP46TvV7uMVrjR888nXsEAICRK4pCgRMAAK6AAicAAFzaUylCbeAEAEaht7KSe4RWee7Ij3OPAAAwcnVdn8g9AwAATCIFTgAAuIRUZ9Truk55tgoAICIiXnrxxdwjtMrJFdtOAQAAAIC1UeAEAIBL6HQ6y6mybeEEAAAAYFS8iwIAgPGiwAkAAJewtLS0HBFJbo/2+/0UsQDQWsXGjblHGDs7d+3KPQJARGcm9wQAJFQUxaHcMwAAwCRS4AQAgLVZThHqjDpAOs2Zs7lHIIeO113ktbSlzD3C2GvOnMk9AhkUGzfkHgGAiGiaJkluURQnkgQDAMCU80YbAADW5mCqYKerAICUdt9yS+4RWuXmPb7eAMD4qqoq9wgAAMDPUeAEAIA1qKpqOVW2M+oAw9f0lePhdWW5JXbs3Jl7jNZQmAUAxlXKSzBLS0vLSYIBAGDKKXACAMAadLvdoxFxOEW2M+oAw9fYbtxanflNuUcYS/vv/tXcI7TC7j17oiy35B5j7NVnzuYegQx8fwbIzxUYAAAYPwqcAACwRkVRLKfKtoUTAEjpvgc+lHuEVrjX1xkAGGMJz6c/lSoYAACmnQInAACsUVEUB1Jl24AAMFzNudXcI5BBYbvbBe3ec0u87/Y7co8x9RRl4e0VGzfkHgGg9ZqmSfb+qSiKQ0mCAQCgBRQ4AQBgjRYXFw9FxLEU2XVd28IJMEx1ss0yjLGi41XXxTz8mc/mHmGq3fsvH3A+fa3qOvcEjJrvzwDZpfzwcNM0CpwAAHCFvDUBAIDLUBTFwVTZq6u2xQHAetjwdnG33bHPFs5ElsoyPvmZz+UeY2LYktw+HRuSAbJL+cHhqqqWk4UDAMCUU+AEAIDLkPKMel3XUVU2xgHAlSo2bsw9wtj7yle/HktlmXuMqfPRj/127Ny1K/cYMLZ8fwbIK/E7p2PdbvdoqnAAAJh2CpwAAHAZUp5Rj4g4d+5cqmiAdnGet5WK2dncI4y9nbt2xVe++vXcY0yVHTt3xiedp4eLKjbYkAyQU8rz6Smv1QAAQBsocAIAwGVK+WK6qipbOAGGoHaet306HSfU12j/B+6OX/nAB3KPMTX23/2ruUeA8dbpRDGnYA+QU8rz6RGhwAkAAOvgrQkAAFymoigONE3zcKr81dXVmJ+fTxUPAFNJefPyPPyZz8UPnngi6wyf/N1/2lp52x13/MJff+7Ij+PkSu9tf+3uW26J8vwp+G998xtZ/2/Z/4G7sz0bJkFnflPuEQBara7rqNNdKFhZWlpaThUOAABtoMAJAACXaXFx8VCv1zscEe9JkT8YDKKu6+h0LMwHuFKdjRuiOnM29xiMkILQ5dm955bYsXNn/PSll7LNsGPXrrjvgQ9d8K/fdse+NeU88oXPD2uky7ZUlmueE9qq8OE0gKxWV5NeJ7B9EwAA1slPhAEA4Mo8mjI88WkrgOmnBN86CkKX774HPpz1+U8+8RfrznjpxRfj+SNHhjDNlblYAZULKxSuW0XBHiCvwWCQMl6BEwAA1slPMwAA4ApUVXUwIlZS5Sd+uQ4A06XTURC6AvdmLh/+4Ikn4qUXX1xXxo+eeXpI01wZBU64hE4nio0bck8B0Fr9fj+apkkVf6wsSwVOAABYJwVOAAC4At1u90TTNMm2cNZ1rcQJsA7Fxo25R2CElDevzM5du+JXPvCBrDMc+OY31vXrh7HF80rt3rMndu+5JdvzJ1lHoa81OpsXco8A0Gop3y0VRaG8CQAAQ6DACQAAV6iu6wMp8xU4AdbBCfVW6WzenHuEifXRj/121ud/97HvrGsL54+eeWaI01yeBzN/7Sba7FzuCRiRzqLvzwC5NE2TusB5IFk4AAC0iJ9mAADAFep2u0cj4tup8hU4Aa6cjYzt0lm04e1K3XbHvti9Z0+255/s9eKRL/zrK/q1333sO3Gy1xvyRGuzVJbOp6+D79Et0enYwAmQUb/fTxl/bHFx8VDKBwAAQFsocAIAwDpUVfWlVNmpNyUATLtCQagVOpsXbFxdp9ybJH/wxBPx5BPfv6xf0+utxCNf+HyiiS5NeXN9io0b/HPbAsqbAHmlLHA2TfNosnAAAGgZb8kAAGAdbOEEGF/OareD3+f1u++BD8VSWWad4XMPfyJ6vZU1//1f+6M/zLZ9M0KBcxiU+6af8+kA+dR1HXVdp8w/mCwcAABaRoETAADWqdPpJNs6oMAJcOWUg1qg04lOuZh7iqmQu5B4steL33nwI2v6e3/0zNNx4Jt/kniiC9uxc2fs3nNLtudPC+W+6VbMzvpzGCCjxO+THj//gWYAAGAIFDgBAGCdFhcXD0XE4RTZzqgDXLlibva1M71MrRnlzaHJfUY9IuKvn30mvvZHf3jRv6fXW4nf+ejaip6p3HbHvqzPnxadzQtRzM7mHoNElOsB8kp5Pj0ibN8EAIAhUuAEAIDhsIUTYAzNbNmSewQS6vj9HZqdu3bF7j17co8RX/vjP4wnn/j+Bf/67zz4kayn0yMUOIdJyW96zWz1/Rkgl8Tn01fKsjyQKhwAANpIgRMAAIagqqpk2wcUOAGuXKdctOFtSnWWFqOY83s7TOOwhTMi4nMPfyKeP/LjX/jPv/XNb8RfP/tMhonebP/dd+ceYWrMbN0S0fGKetp0lhb9vgJklPg9ku2bAAAwZN6iAADAEHS73RMR8XiKbGfUAdZn5qpu7hFIwO/r8O2/++5YKsvcY8TJXi9+89573lTi/NEzT8f/8YXfzzjVa3bv2RNlabPg0HQ6MbM1///PMVy+PwPklfJ8eqfTSXaBBgAA2kqBEwAAhscWToAxZAvn9LF9M42y3BL7PzAe2yVfL3F+65vfiCef+H78zkc/knukiIi494EP5R5h6sxc1fU9eop0Ni/4/gyQUeLz6ccWFxcPpQoHAIC2KnIPAAAA0+L48eNbZ2ZmjqfILooiFhcXU0QDtEJ95mwMfvrfco/BkMxdv0tBKJHnj/w4fu1X/pfcY4yt5b/+L7Fz167cY0wd36Onx+yOd0ZnflPuMQBaa3V1Nc6dO5ckuyiKry4tLX0qSTgAALSYDZwAADAkzqgDjK/O/KbobF7IPQZDMHPVVuXNhHbvuSXed/sduccYS++7/Q7lzUQ685ucUp8Cxfwm5U2AzFKeTy+K4kCycAAAaDEFTgAAGC5n1AHG1My2qyM6XoVMsmJ2Nma2bsk9xtR7+DOfzT3CWLrP+fSkZq7qRrFxQ+4xWIfZd2zPPQJAqzmfDgAAk8lPLQAAYIiqqlLgBBhTxdxszG67OvcYrMPMdiXcUbjtjn22cL7Fjp07FThT63ReKwD6Z3widZYWbUcGyCzle6OiKJK97wIAgLbzNgwAAIYo9Rn1qqpSRAO0RqdcdEp9QnU2L/i9GyFbON/svgc+nHuEVig2bojZa2xxnDidTsxu9wEJgNycTwcAgMmkwAkAAMNnCyfAGJu9ZnsUs7aETZJidlapa8Rs4fwnS2UZD37847nHaI3O5gWnuCfMzNbS5lSAzJxPBwCAyeWtCgAADJkz6gBjrtOJ2Xdeo2wyQWaucVY5h9//3x/JPcJY+PyXH4my3JJ7jFbplIvRWVrMPQZrUGzcEDNXdXOPAdB6ibdvOp8OAAAJefMNAABDlvKMeuKNCgCtUWzcELPbnHudBDNXbY3O/KbcY7TS7j23xIMfa/fmyd179sR9D3wo9xitNHvNdiXOCTDjz1KAsZDyA7/OpwMAQFoKnAAAkEay7QQptyoAtEmnXHzt7Ctjq7N5wWa3zD75mc/Gjp07c4+Rzee/bAtpTkqc421ma6lgDzAGnE8HAIDJpsAJAAAJOKMOMBlmtl2tHDSmio0bYvaa7bnHaL2y3BJf+erXc4+RxYMf+3jcdse+3GO0nhLneHI6HWB8OJ8OAACTTYETAAAScEYdYHLMXrM9ChvExkunE7Pv2B7R8epqHNx2x77WnVLfsXNnfPIzn809BucpcY4Z36MBxorz6QAAMNm8YQEAgHScUQeYEHPvvCaKjRtyj8F5czve6fdjzHz+y4/E7j17co8xMl/56tejLLfkHoOfo8Q5Pma3Xe17NMCYcD4dAAAmnwInAAAkUlXVcqpsZ9QBhqzTURocE7Pv2O73YUz922/9+1gqy9xjJOd0+viavWb7a5sfyaaztBidUpEWYFyk/IBv0zQHkoUDAABvUOAEAIBEut3u0Yg4nCLbGXWABJQ4s5t9x3bFoDG2c9eu+MpXv557jKR279kTn//yI7nH4CI65aISZybFxg0xe42vPcA4SfkB37quDyQLBwAA3qDACQAACaXcVmALJ0ACSpzZKG9Ohv0fuDse/NjHc4+RxFJZxr/91r/PPQZroMQ5esXGDTG34525xwDg5yT+cO/h8x9MBgAAElPgBACAhOq6Ppgqu6qqVNEA7abEOXIzW0vlzQny+S8/Eu+7/Y7cYwzd57/8SOzctSv3GKyREucIdTox+z9cE9Hx4wSAceJ8OgAATAdvXAAAIKHUZ9QBSESJc2Rmtl0dM9uuzj0Gl+n/OvDt2L1nT+4xhubBj3087nvgQ7nH4DIpcY7A638ezs3mngSAt0h8Pj3ZB5IBAIA3U+AEAIDEUm0tUOAESEyJM61OJ2bfsT1mtpa5J+EKlOWW+MpXvx5L5eT//u3esyc+/+VHco/BFeqUizG74522QyZQzM76cxBgTDmfDgAA08NbLQAASMwZdYAJdr7E2Vly3nuYXi8FOZs+2XbvuSX+7HsHJ7rEuXvPnvgP37NgatJ15jcpGg5ZsXFDzF23w9cUYEw5nw4AANOjyD0AAAC0Qa/XOxoR1w87d9OmTTE3NzfsWADeRnWiF9UrP8s9xsSb2VrGzFVd2/KmyPNHfhy/ee89cbLXyz3KZVkqy/jzH/xV7Ny1K/coDEtdx+C/vxz1qdO5J5lonc0LMXvNdt+nAcbYqVOnkm3grKrql2zgBACA0fEGBgAARqAoiiSrnZxRBxidma1lzO3aEcXsbO5RJlIxOxuzO94ZM9uuVgqaMpO4iXOpLOPPvndQeXPadDox+85rfJ9Zh5mrtsbsO6/x9QMYY1VVOZ8OAABTxFsYAAAYgaZplnPPAMD6vX5Sdmbr5BTVsut0Ymbb1TF3w67ozG/KPQ2JTFKJc/eePfFn3zsYu/fcknsUEnmjcO97ztp1Oq+V7K/q5p4EgEtwPh0AAKaLE+oAADACJ0+e/J+bpvmrYefOzc3Fpk1+MA2QQ33mbFT//eVoBoPco4ylYnY2Olu3xEy5aJNbi/R6K/Fb994Tzx85knuUt7V7z574D987GGW5JfcojEh1ohfVPx6PsLn+gpxMB5gcTdPEqVOnommaJPnOpwMAwOh5IwMAACMwGAyOpsh1Qh0gn878ppi7YZdTvW9RzG+K2Xdsf+1rs7X0tWmZstwSf/6Dv4oHP/bx3KP8ggc/9vH48x/8lfJmy8xsLWPDDbuis7SYe5SxU8zOxuw7r3EyHWCCDAaDZOXNcD4dAACysIETAABGpNfrDf0N+8zMTCwsLAw7FoDLVddRnViJ6kSvlVveitnZ6CwuRGfLlijmZnOPw5j40TNPx+ce/kT89KWXss6xY+fO+MpXvx633bEv6xzk15xbjcErP4vmzNnco2Q3s7V87Vy64ibARDl16lSyD/M2TfPpLVu2PJokHAAAuCAFTgAAGBEFToDp1/QHUf3j8ahPvpp7lPQ6nehsXohOuRSd+U25p2GMfe2P/jC+9c1vxMleb+TPfvBjH49Pfuaztm7yJvWZs1H94/FWFjlf35KsbA8weeq6jlOnTiXLdz4dAADyUOAEAIARUeAEaJEp3shZzG+KmaWl6JTOEbN2vd5KHPiTPxlZkfPef/lAfPIzn4udu3YlfxaTqz5zNuoTK1GfOp17lOSK+U0xc1VX4R5ggp09ezb6/X6q+MNlWf6zVOEAAMCFKXACAMCIpChwRkQsLS2liAVgGOo66ldPv7bpbTDIPc2VO79tc+aqrq1trNt3H/tOPPnEX8QPnnhiqLm79+yJex/4UNz3wIds3OSyNP1B1CsrUfVenc7SveImwFR49dVXo2mSvFqKiPhoWZYHUoUDAAAXpsAJAAAj0uv1jkbE9cPO3bx5c3Q6nWHHAjBk9anTUfdOTtamt04nZraWMbN1S4Q/axiyXm8lnvz+9+NHzzwdzx/5cTx/5Mhl/fodO3fG7ltuidvu2Bf7P/Crtm2yfq+X7ldWojm3mnuadeksLUanXFLcBJgS/X4/zp49myy/qqput9s9kewBAADABSlwAgDAiPR6veWI+OfDzt24cWNs2LBh2LEAJDIRm94UN8nkR888ff5fn3nbv37bHXec/9d9I5uJdmrOrUb1+nn1cf1e/VadTsyUi9HZssW2ZIApc+bMmRik2+j/eFmW96QKBwAALk6BEwAARqTX6x2IiI8MO3d2djbm5+eHHQvACNS9V6M+dWpstnIWs7OvndotF3OPAjAeJmArZ2fzQnQ2b47O4oLSPcAUapomXn311ZSP+I2yLA+mfAAAAHBhPoYLAAAj0jTN0aIY/meoBoNBNE0TKbIBSKtTLkanXHxtK+ep01GfPJmlIFTMb4qZpSXFTYC36nTG5nv1m2aa36S0CdASCTdvRkQcU94EAIC8FDgBAGBEOp3OctM0X0yRPRgMYm5uLkU0ACNQzM2eP1leRnNuNeozZ9MXhF4/tbu0FMXGDemeAzAl3vS9uj+I5szZ17Yonzmb9Mx6sXFDFLOzUczPR7FxQ3TmNyV7FgDjJ2WBs2maA8nCAQCANbGiBwAARuT48eNbZ2ZmjqfI7nQ6sXnz5hTRAOR0/nRvfeZMNKur6y50vl78KTZvVgACGKKmPzj/ffpcNOdWo6nriP4gmkuUborZ2Yi51/YsFJ3OG4X6Yn4+IsL3aoCWS30+vaqqX+p2u0eTPQAAALgkBU4AABihXq93KCLekyJ78+bN0XE+EWDq1WfOni8F9V8rDF2kHNTZuCGi04lifv6Nfw8AAEyGfr8fZ8+eTRX/eFmW96QKBwAA1sYJdQAAGKGiKJabpklS4FxdXY1Nm2zoAZh2nflNEfO5pwAAAFJbXV3fBv5LOJAyHAAAWBtrFwAAYISapllOld3v96OqqlTxAAAAAIxIXddR13Wq+JWyLA+mCgcAANZOgRMAAEbo/MvxlVT5586dSxUNAAAAwIgk3r6pvAkADORebAAAIABJREFUAGNCgRMAAEYv2Uvyqqqi3++nigcAAAAgsbquU7/fUeAEAIAxocAJAACjl/QleeINDQAAAAAkdPbs2ZTxx5xPBwCA8aHACQAAI5b6jHpd106pAwAAAEyg1dXVqKoqWX5RFMqbAAAwRhQ4AQAgg6IoDqTM7/f70TRNykcAAAAAMER1XSe/rNI0zXLSBwAAAJelyD0AAAC00fHjx2+YmZn5+5TP2LRpU8zNzaV8BAAAAABDcvr06aTbNyNipSzLrSkfAAAAXB4bOAEAIINut3s0Ih5P+YzUGxsAAAAAGI7BYJC6vJn8IgwAAHD5FDgBACCToigeTZlf13UMBoOUjwAAAABgCM6dO5f8GYPBIOm7KAAA4PIpcAIAQCZLS0vLEfFUymf0+/2U8QAAAACsU7/fj7quUz/mqfMXYQAAgDGiwAkAABkVRfGllPmDwSCapkn5CAAAAADWYXV1NfkzUr+DAgAArowCJwAAZHR+C+fjKZ9hCycAAADAeBrV9s3z76AAAIAxo8AJAACZVVX1qZT5g8EgZTwAAAAAV8j2TQAAaDcFTgAAyKzb7R5tmuYPUuVXVeWMOgAAAMCYqeva9k0AAGg5BU4AABgDdV0/GhErqfJt4QQAAAAYL6PYvllV1YPJHwIAAFwxBU4AABgD3W73RNM0j6bKV+AEAAAAGC+p39c0TfMH3W73aNKHAAAA61LkHgAAAHjN8ePHt87MzByNiC0p8hcXF6Mo/FcAAAAAgNwGg0GcOXMm5SMOl2X5z1I+AAAAWD8bOAEAYEx0u90TEXEwVb4tnAAAAADjoaqqpPmdTufBpA8AAACGQoETAADGiwInAAAAwJRL+Z6maZo/WFxcPJTsAQAAwNC4nwgAAGOm1+sdjYjrU2Q7ow4AAACQV13XcerUqVTxK1VV3XD+0gsAADDmbOAEAIDxs5wq2BZOAAAAgLzquk6W3TTNo8qbAAAwORQ4AQBg/DijDgAAADClqqpKll3X9YFk4QAAwNApcAIAwJgpy/JgRKykyB4MBtE0TYpoAAAAANYgYYHzqW63ezRVOAAAMHwKnAAAMJ6SbeFMueUBAAAAgItL9eHapmmSvU8CAADSUOAEAIDx5Iw6AAAAwBSq6zpVrgInAABMmCL3AAAAwNvr9XonImLLsHOLoojFxcVhxwIAAACwBidPnkwRe6wsyxtSBAMAAOnYwAkAAOMrydaEpmls4QQAAADIoKqqVNFHUwUDAADpKHACAMD4ckYdAAAAgEtqmmY59wwAAMDlU+AEAIAxVZblwYhYSZGtwAkAAAAAAACQlwInAACMN2fUAQAAAAAAAKaQAicAAIw3Z9QBAAAAAAAAppACJwAAjLGqqpZTZStwAgAAAAAAAOSjwAkAAGOs2+2eiIjHU2Q7ow4AAAAwWk3T5B4BAAAYIwqcAAAw/pKdUa+qKlU0AAAAAG/hXQwAAPDzFDgBAGDMVVWVrMBpAycAAADA6KQqcBZFcShJMAAAkJQCJwAAjLmUZ9Truo66rlNEAwAAAPBzmqZJWeA8kSQYAABISoETAAAmgy2cAAAAABMs5TuYwWBgAycAAEwgBU4AAJgAKc+op9r8AAAAAMA/SVjgXDl/wQUAAJgwCpwAADABUp5RV+AEAAAASKuu65QFTts3AQBgQilwAgDA5EiyhbNpmqjrOkU0AAAAABGxurqaLLtpmuVk4QAAQFIKnAAAMCGqqlpOmJ0qGgAAAKDV6rqOfr+fLL/T6SwnCwcAAJJS4AQAgAnR7XaPRsThFNk2cAIAAACkcebMmZTxK0tLS8spHwAAAKSjwAkAABOkKIrlFLk2cAIAAAAM37lz51J/cPZgynAAACAtBU4AAJggTdMsp8i1gRMAAABguKqqitXV1dSPUeAEAIAJVuQeAAAAWLvjx49vnZmZOZ4ie/PmzdHp+IwXAAAAwHo1TROnT59O/aHZlbIst6Z8AAAAkJafzgIAwATpdrsnIuJYimxn1AEAAACGY3V1dRQXT2zfBACACafACQAAk+dQilAFTgAAAID1q+t6FKfTo9PpPJr8IQAAQFIKnAAAMGGapklS4BwMBiliAQAAAFplFOXNiHhqcXExyTsiAABgdBQ4AQBgwnQ6neUUuU3TjOK0FwAAAMDUqus6+v3+KB51YBQPAQAA0lLgBACACTMYDJJtVxjRDxgAAAAAptKItm8eLsvywCgeBAAApKXACQAAE6bb7Z6IiMMpsp1RBwAAALgyTdOM5MOxRVF8KvlDAACAkVDgBACACVQUxXKK3LqunVEHAAAAuAIjumzy1NLS0vIoHgQAAKSnwAkAABOoaZrlVNnOqAMAAABcvhG8U1mpqurB1A8BAABGR4ETAAAmUFVVy6mynVEHAAAAuDyjuGrSNM2Xut3u0aQPAQAARkqBEwAAJlC32z0REU+lyHZGHQAAAODyjOADsU9t2bLl0dQPAQAARkuBEwAAJlTTNAdTZTujDgAAALB2id+lrFRVdU/KBwAAAHkocAIAwISq6zpZgdMZdQAAAIC1aZom9TWTB89fYwEAAKaMAicAAEyobrd7NCIOp8h2Rh0AAABgbRJ/EPapsiyTfYgXAADIS4ETAAAmWNM0B1JlO6MOAAAAcGlVVaWMfzRlOAAAkJcCJwAATDBn1AEAAADySljgPGb7JgAATDcFTgAAmGCpz6grcQIAAABcWNM0Udd1kuyiKJQ3AQBgyilwAgDAhEt5Rl2BEwAAAODCUpU3IyKKojiQLBwAABgLCpwAADDhnFEHAAAAyCPhu5Nji4uLh1KFAwAA40GBEwAAJlzKM+pN0yhxAgAAAFxA0zSpopdTBQMAAONDgRMAAKaAM+oAAAAAo5fwhPpyqmAAAGB8KHACAMAUcEYdAAAAYPSqqkqVu5wkGAAAGCsKnAAAMAXOn1F/KkW2M+oAAAAAo3X+XQ8AADDlFDgBAGB6HEgVrMAJAAAA8Gaptm9Gog/pAgAA40eBEwAApkRVVc6oAwAAAIxIXdepok+kCgYAAMaLAicAAEyJbrd7IiIeT5HtjDoAAADAm6UqcDZNcyhJMAAAMHYUOAEAYLok28KZ8CwYAAAAwMRJ9WHXoiiOJgkGAADGjgInAABMEWfUAQAAANKr6zrZBk4FTgAAaA8FTgAAmCIpz6in/MEEAAAAwCRJealkaWlpOVk4AAAwVhQ4AQBg+tjCCQAAAJBQwnckh1MFAwAA40eBEwAApkzKM+opt0sAAAAATIKmaVIWOA+lCgYAAMaPAicAAEyZ1GfUAQAAANos8YWS5ZThAADAeJnNPQAAAJDEwYj49WGH1nUddV1Hp+OzYADA5ev1T8dzJ37yxv9+ZOXF6K2evvSvWfmnX/PiqVfip6d/lmzGn7d3+42/8J/tXNgWOxe2vfbvN2+LXQtXRzm3EDdvvW4kMwEA+aW8UFJV1XKycAAAYOwUuQcAAACG7/jx4zfMzMz8fYrshYWFmJmZSRENAEyJl06/EkdO/CSeO/FiPLfyk3jx1Cvx/MqLuccaiddLn3u33RTlhoXYs2VX7Nz8T6VPAGDyvfrqq9E0TYroY2VZ3pAiGAAAGE8KnAAAMKV6vd6hiHjPsHM3bNgQGzduHHYsADChXt+q+ezLfxs/fOWFOHLiJ3Gyfyb3WGNp95ZdsWfrdbFzYVvcvv3G2Lv9ptwjAQCXqaqqOH364hvEr1RRFF9dWlr6VJJwAABgLDmhDgAAU6ooiuWmaYZe4Ey0YQIAmBCvb9f84ct/G8++/EJrNmsOw/MrL77x9Xr0+df+s91bdsXt22+KvdtvjLuuvTXjdADAWgwGg2TZTdMsJwsHAADGkg2cAAAwpXq93j0R8f8OO3dmZiYWFhaGHQsAjKnnTvwknn3lb89v2Xwhfnr6Z7lHmlpLc/Nx//Xvj4fevd/JdQAYU6dPn46qqlJEr5RluTVFMAAAML4UOAEAYEodP378hpmZmb9Pkb20tJQiFgDIrNc/Hc++/EL88OW/jedWXtuyyegtzc3Hp2++Jx561/7cowAAb3Hy5MlU0d8uy/LBVOEAAMB4UuAEAIAp1uv1ktw737x5c3Q6nRTRAMCIPXfiJ/GX//A38cNXXlDYHDMfvH5f/PEvP5R7DADgvKqq4vTp06nif6Msy4OpwgEAgPE0m3sAAAAgqaci4p8PO7SqKgVOAJhQr2/Z/P/+4W/iL//hv8bJ/pncI3EB/+nY0xERSpwAMCYGg0Gy7KqqlpOFAwAAY0uBEwAAptvRSFTgnJubG3YsAJDIS6dfeW3L5vniJpPjPx17Ou689r1x17W35h4FAFqvrutU0Y93u90TqcIBAIDxpcAJAABTrGmao0VRDD23qqqhZwIAw/XDl1+Iv/yHv4lnX34hnl95Mfc4rMPv/uc/jdvvvinKuYXcowBAq6V6H9I0zXKSYAAAYOwpcAIAwBTrdDrLTdN8cdi5dV1HXdfOqAPAmHnp9Cvxb557/I3T20yHk/0z8f8cezoeetf+3KMAQGvVdR1N0yTJnpmZWU4SDAAAjL3hr+IBAADGxvHjx7fOzMwcT5G9YcOG2LhxY4poAOAK/MHh/zv+3d89mXsMEtm9ZVc88St/kHsMAGit1dXVOHfuXJLssiz9zBYAAFrKuhwAAJhi3W73REQcTpE9GAxSxAIAV+B3//OfKm9OuedXXsw9AgC0Wqrz6RHxVKpgAABg/ClwAgDA9DuUIvT1M+oAQF5/+ndPOpneEj98+YXcIwBAa6UqcDZNs5wkGAAAmAgKnAAAMP2WUwXbwgkAefX6p+PfPHcw9xgAAFNtMBhE0zRJsouiSPLBWwAAYDIocAIAwJSrqipZq6Pf76eKBgDW4NmXX4iT/TO5xwAAmGopP8BaVdVysnAAAGDsKXACAMCU63a7JyLicIpsZ9QBIK/nTryYewRGaO/2m3KPAACtlOp8ekQcPv/eBgAAaCkFTgAAaIGmaQ6kynZGHQDy+eErL+QegRG589r35h4BAFop5YdXi6JYThIMAABMDAVOAABogbquk51RV+AEAEjvzmtvzT0CALRSv99Plt00zXKycAAAYCIocAIAQAt0u92jEXEsRXZVVdE0TYpoAOASbt5yXe4RGJG7bOAEgCxSfnC1LMtkH7gFAAAmgwInAAC0RFEUtnACwJTZuXlb7hEYgb3bb4xybiH3GADQOinPp0fE46mCAQCAyaHACQAALVEUxYFU2QqcAJDH7dtuzD0CI/DB69+fewQAaKWqqlLG274JAAAocAIAQFssLi4eikRn1AeDgTPqAJDBzVuvix0LV+ceg8ScTweAPFIWOKuqUuAEAAAUOAEAoE1SnlFPvJUCALiAh959Z+4RSOiD1+9zPh0AMkn4ruNwt9s9kSocAACYHAqcAADQIs6oA8D0uf/6fbE0N597DBK5//p9uUcAgFZqmibquk6VfSBJMAAAMHEUOAEAoEVSn1EHAEavnFuIh95lC+c02rFwdezdflPuMQCglVKVN89nO58OAABEhAInAAC00XKK0KZplDgBIJOH3r3fFs4p9Omb78k9AgC0VsJ3HMe63e7RVOEAAMBkUeAEAID2SbblQYETAPKwhXP6LM3NO58OABk1TZMktygK2zcBAIA3KHACAEDLlGV5MCJWUmQrcAJAPrZwTpf7r39/7hEAoNVSnVBvmuZQkmAAAGAiKXACAEA7Jdn24Iw6AORjC+d0eejd+3OPAACtVlVVqtzlJMEAAMBEUuAEAIB2SnauK9UPOACAS7OFczrs3X5j7FzYlnsMAGitVNs3IyK63e7RZOEAAMDEUeAEAIAWSrntod/vp4oGAC7BFs7p8EHn0wEgq4QfTn0qVTAAADCZFDgBAKCFut3uiYh4PEW2M+oAkNf9N+zLPQLrsDQ3H3dd+97cYwBAqyUscB5NFQwAAEwmBU4AAGivZGfUFTgBIJ+dC9vig9crcU6qu669Ncq5hdxjAECrpSpwNk1zNEkwAAAwsRQ4AQCgpaqqSlbg7Pf7Udd1qngA4BIeetf+3CNwhe60fRMAsqrrOtk7jU6ns5wkGAAAmFgKnAAA0FIpz6hHRKyurqaKBgAu4eat18Xe7TfmHoPL9Nr59FtzjwEArdbv95NlDwaDQ8nCAQCAiaTACQAA7WYLJwBMqX9lC+fEUd4EgPwGg0Gq6MPnP0wLAADwBgVOAABosZRn1CMizp07lzIeALiIu669NXYsXJ17DC7D3u035R4BAFot5fn0iLB9EwAA+AUKnAAA0GLnNz88lSp/MBhEVVWp4gGAS/j0zffkHoHLcNe17809AgC0WsLtmxERyynDAQCAyaTACQAAHEgZbgsnAORz//X7bOGcEHu33xjl3ELuMQCg1fr9frLs1FdQAACAyaTACQAALZf6BwhVVdnCCQAZ3X/9+3OPwBrs3eZ8OgDklPh8+uHzV1AAAADeRIETAABa7vwPEL6d8hm2cAJAPg+9e38szc3nHoNLuH37jblHAIBWS7l9s2maA8nCAQCAiabACQAARFEUB1Lm28IJAPmUcwvx0LvuzD0Gl3Dz1utyjwAArTYYDJJl13XtfDoAAPC2FDgBAIBYWlpajoinUj4j5SYLAODibOEcbzsWro5ybiH3GADQWoPBIOX59GPdbvdoqnAAAGCyKXACAACvezRleL/fT/nDEADgIsq5hbj/+vfnHoML2GP7JgBklfJDp0VR2L4JAABckAInAAAQERFlWR6MiGMpn5HyHBkAcHEPvXt/7hG4gJu3KHACQC5N0yR9X1EUxYFk4QAAwMRT4AQAAN5QFMWDKfOdUQeAfHYubIs7r31v7jF4Gzs3b8s9AgC0VuJ3FccWFxcPpXwAAAAw2RQ4AQCANywtLS1HxFOp8uu6dkYdADK689pbc4/A29izZVfuEQCgtVIWOJumeTRZOAAAMBUUOAEAgDfpdDqfSplvCycA5HOXDZxj6eatTqgDQA6pP2ha1/XBZOEAAMBUUOAEAADe5Pxpr2+nyh8MBqmiAYBLKOcWYrdtj2PF7wcA5JP4Q6aHu93u0ZQPAAAAJp8CJwAA8AuqqvpSqmxn1AEgr9u335R7BH6O3w8AyCfxh0ydTwcAAC5JgRMAAPgF5zdEJNvCWVVVqmgA4BKc6x4ve7ffmHsEAGilqqpSfsB0paoq59MBAIBLUuAEAADeVqfTSbYpQoETAPK5XWFwrNjACQB5JD6ffrDb7Z5I+QAAAGA6KHACAABva3Fx8VBEHEuRrcAJAPnsXNgWS3PzuccgInZv2RXl3ELuMQCglVKeTy+K4kCycAAAYKoocAIAABfUNE2SLZwJT5QBAGtg6+N4uP+G9+ceAQBaqaqqaJomVfyxpaWl5VThAADAdFHgBAAALmhmZmY5VbYSJwDks1eBcyzcde17c48AAK2U8nx6qg/DAgAA00mBEwAAuKCUZ9QTbroAAC5BcTC/HQtXx86FbbnHAIBWSnk+va7rg8nCAQCAqaPACQAAXMpyitCqqlLEAgBrsHNhW+zdfmPuMVrtrmtvzT0CALRSv99P+aHSw91u92iqcAAAYPoocAIAABfVNM2hRLkpYgGANfrg9e/PPUKr3X/9vtwjAEArpTyfHhHOpwMAAJdFgRMAALioTqeTpMAJAOR1//X7YmluPvcYrbRj4eq4eet1uccAgNYZDAZJL4JUVeV8OgAAcFkUOAEAAACgpR561525R2gl59MBYPSapolz586lfMTj3W73RMoHAAAA00eBEwAAAABa6qF377eFMwPn0wFg9FZXV6Ou65SPsH0TAAC4bAqcAAAAANBS5dyCLZwjtjQ373w6AIxYXdexurqa9BlVVS0nfQAAADCVFDgBAAAAoMVs4Rwt59MBYPTOnj2b+hFPdbvdo6kfAgAATB8FTgAA4KIGg8HRFLlVVaWIBQAuUzm3EF98z2/mHqM17rz2vblHAIBWqapqFO8gDqR+AAAAMJ0UOAEAgItKtUGirusUsQDAFbj/+n2xe8uu3GO0wu3bb8o9AgC0ygi2b66UZXkg9UMAAIDppMAJAABk0TSNEicAjJH/85cfyj3C1Nu7/cYo5xZyjwEArTEYDJK/eyiK4kDSBwAAAFNNgRMAAFiLwylCB4NBilgA4ArcvPW6+NTuX889xlS789pbc48AAK2yurqa/BmDweDR5A8BAACmlgInAACwFkdThPb7/RSxAMAV+vTNvx57t9+Ye4ypdfs2X1sAGJW6rqOqqtSP+Xa32z2a+iEAAMD0UuAEAAAuqWmaQyly67p2Rh0Axsw3b/9ELM3N5x5j6izNzcfNW6/LPQYAtMYotm9WVfWl5A8BAACmmgInAABwSUVRJClwRtjCCQDjppxbiP/4P/1e7jGmzl3OpwPAyDRNE4PBIOkziqL4qu2bAADAeilwAgAAl1RV1XKq7NQ/UAEALt/NW6+LL7znw7nHmCp7t9+UewQAaI3BYBBN06R8xMpgMPhSygcAAADtoMAJAABcUrfbPRERh1Nk13WtxAkAY+ihd+2PvdtvzD3G1Ljr2vfmHgEAWmME7xk+df5dCQAAwLoocAIAAGtSFMVyquzV1dVU0QDAOvzxLz8US3PzuceYeLu37IpybiH3GADQCiM4n/5UWZYHUj4AAABoDwVOAABgTYqiOJAqu6qqqKoqVTwAcIV2LmyLT998T+4xJt7tzqcDwMik3r5ZVdWDSR8AAAC0igInAACwJouLi4ci4liq/HPnzqWKBgDW4aF37Y8dC1fnHmOiOZ8OAKOT+AOi3+52u0dTPgAAAGgXBU4AAGDNiqI4mCrbFk4AGF9ffM+Hc48w0fbawAkAI5NyA2dVVV9KFg4AALSSAicAALBmKc+oR9jCCQDj6q5rb42922/MPcZEutP2TQAYmbquo2maVPGP274JAAAMmwInAACwZufPqB9OlW8LJwCMr0/v/vXcI0ykO6+9NfcIANAaKbdvRsSBlOEAAEA7KXACAACX69GU4f1+P2U8AHCF9m6/Kf7Vu/bnHmOi7N1+Y9x//b7cYwBAayT8UOhKWZYHU4UDAADtNZt7AAAAYLJUVXVwZmbm0YjYkiK/3+/Hhg0botPxeTMAGDdffM+H47mVn8QPX/7bdWft3X5j7FzY9tr/bN4WuxaujnJuIW7eet0v/L29/ul47sRP4sjKi/HDl1+IZ19+IU72z6x7hpSW5ubji//jh3OPAQCtkrDAqbwJAAAkUeQeAAAAmDy9/5+9+4mR8z7vBP+8Xd3sZrO7qYKtix1LPiSwLR/kGD7YYyCZwU5i5BQPEM8ie7Ewwu5pBvDEs8htIx+DmYy02D3NbiPMZQOEBIY8zZDCYNsDcdgHgX8GcJMCBYRNUn3pFtjdlKrJqnrfdw5SO5LMP/2nfvV7q+rzOTk29fy+sHVIqb71PLu7ZyLip6nmnzhxImZnZ1ONBwCO6efvLse59csH/vPff/Eb8crpl+KVF16Kb5/+2hNLmoe1tn03rmy9F2fvvBM3d+4de96g/Ycf/Mv4kfPpADA0VVXFxx9/nGr8P7OBEwAASEGBEwAAOLQHDx58vdVq/X2q+VNTU3Hq1KlU4wGAAVjdvBXL77/9G9swvzr/pfj2Cy/F91/8Zvzgy98YSFnzeXZ7nbi4cS1WN2/FxY2rWbdzLs6cjL/63uvKmwAwZL1eLx49epRkdlmW7Xa7vZ1kOAAAMNEUOAEAgCNJvYXz1KlTzqgDAEeyf279/sdbsbZzN3Z7nYiIgZx+f5Zvnf5a/PvvvT6U0ioA8HmPHz+ObrebYvQvl5aW/nGKwQAAAAqcAADAkaTewjkzMxNzc3OpxgMAE2xt+5NS56927sVutxOrW7dip9s58in2xZmT8a9f+XG8/tt/MOCkAMBBdTqdKMty4HPruv7F6dOn3xj4YAAAgFDgBAAAjiHlFs6iKGJhYSHFaACAp7rf2Yr7H2/Flc33PvnXna341fbd3zjLvjhzMn7w4jfjD7/y3fjJyz/MlBYA2PfRRx9FXdcDn1sUxT9ZXFxcGfhgAACAUOAEAACOIfUWTmfUAYAmWd28FRER33/xm5mTAACfVVVVfPzxx0lml2XZbrfb20mGAwAAE0+BEwAAOJaUWzhPnDgRs7OzKUYDAAAAY6LX68WjR49SjF5fWlr6eorBAAAAERHTuQMAAACjrSiKM3VdJylw9vt9BU4AmAD7Z8s/y5ZLAOCgyrJMNfp6qsEAAAARCpwAAMAxLS4uruzu7t6IiFcHPbuqqqiqyhl1ABgz9ztbsXz77biyeStu7tx76p9bnDkZ337hpfj+l78ZP3jxG0qdAMATpSpw1nWtwAkAACTlhDoAAHBsOzs7PyuK4s0Us51RB4DxsbZ9N37x3/82VjffO9JfvzhzMn70le/GH37ld+NHX/nugNMBAKOoqqr4+OOPk8wuiuKfLC4uriQZDgAAEAqcAADAADx48ODrrVbr71PMnpqailOnTqUYDQAM0ZtrF+KtmxcGOvMPv/K78crpl2znBIAJ9vjx4+h2u0lml2XZbrfb20mGAwAAhAInAAAwILu7u+cj4o9TzD516pQz6gAwwn7+7nKcW7+c/J1vnf5afPuFl+K35r8cP3jxG/HKCy/F0sx88ncBgHw+/vjjqKoqxej1paWlr6cYDAAAsG86dwAAAGA81HW9UhRFkgJnv9+PEydOpBgNACQ2rPJmRMTNnXtxc+deRES8dfOTf29x5mR8+4WX4vtf/qZSJwCMmaqqUpU3IyJWUg0GAADYZwMnAAAwEM6oAwBflOJs+iB86/TX4gcvfjN+8vIP45UXXsodBwA4om63G48fP041/p8tLS2dTzUcAAAgQoETAAAYoN3d3esR8WqK2QsLC1EUPsIAwKhY274bf/Rf3sgd47m+Ov+l+NFXvhuv/84fxG/Nfzl3HADgEBKeT4+yLNvtdns7yXAAAIBP+fYTAAAYmJ2dnZ8VRfFmitlzc3Nmhtd2AAAgAElEQVQxMzOTYjQAkMD//F//MlY338sd41D+5OUfxuu//Qe2cgLACKiqKj7++ONU428sLS19J9VwAACAfVO5AwAAAOOjqqpkp8X6/X6q0QDAgK1u3hq58mZExLn1y/FH/+WN+Pm7y7Hb6+SOAwA8Q6/XSza7ruszyYYDAAB8hgInAAAwMO12+05E3EgxW4ETAEbH8vtv545wLOfWL8c/+k//e1zcuJo7CgDwFCn/OUHKH6gCAAB8lgInAAAwUEVRrKSarcQJAM232+vEpY1ruWMc28PeXvxvV/7veHPtQu4oAMAX9Pv9qKoq1fgbn/5AFQAAIDkFTgAAYKCKojiTarYCJwA038UxKG9+1ls3L8TP313OHQMA+IyU/3wg5Q9TAQAAvkiBEwAAGKiFhYXrEbGeYrYCJwA03/LtS7kjDNy59ctKnADQEHVdR6/XSzY/5Q9TAQAAvkiBEwAASGElxdC6rpU4AaDB1rbvxs2de7ljJHFu/XKcXb+cOwYATLzE/1zgxqc/TAUAABgKBU4AACCF86kGK3ACQHMtv/927ghJ/Zt3l+PixtXcMQBgonW73WSz67o+k2w4AADAEyhwAgAAA7e0tHQ+InZSzC7LMsVYAOCYdnudODcBGyp//u5y3O9s5Y4BABOpqqqoqirl/GQ/SAUAAHgSBU4AACCVlRRDU39ZAwAczfLt8d6+ue9hby9+/u5y7hgAMJF6vV7K8Tfa7fadlA8AAAB8kQInAACQSrKtFYm/sAEADmm314nl9y/ljjE0q5vvjf25eABoon6/n3L8WymHAwAAPIkCJwAAkERZlskKnIm/sAEADmn59tvxsLeXO8ZQvbl2PnZ7ndwxAGBipL7IkfKfYwAAADyNAicAAJBEu93ejogLKWY7ow4AzTFp2zf3Peztxdn1y7ljAMDESHyN428+/ecYAAAAQ6XACQAApOSMOgCMuUncvrnv0sbV3BEAYGIkvsZh+yYAAJCFAicAAJCMM+oAMN4mdfvmvtXN95xRB4AhSHyJY31paUmBEwAAyEKBEwAASObT82O/TDHbGXUAyG+St2/uu7hxLXcEABh7Ka9wFEWhvAkAAGSjwAkAACRV17UtnAAwhiZ9++a+1c1buSMAwNhL+fm/KIozyYYDAAA8hwInAACQVFVVyQqcKTdwAADPdnb98sRv34yIuKLACQBJlWWZ8gLHjYWFheuphgMAADyPAicAAJBUu92+ExE3Usx2Rh0A8lm+bftmRMQHnQ/jfmcrdwwAGFspf7xZ1/WZZMMBAAAOQIETAABILuUXIs6oA8DwnV2/HB90PswdozGubL6XOwIAjKW6rpMWOFNeDQEAADgIBU4AACC5lF+IlGWZajQA8BS2b37e2vbd3BEAYCx1u92U4298ejUEAAAgGwVOAAAguZRn1Pv9ftR1nWI0APAEq5u34ubOvdwxGmVtR4ETAAYt9fZN59MBAIAmUOAEAACGoiiKlVSznVEHgOE5u345d4TGWXVCHQAGrtvtJv3BpvPpAABAEyhwAgAAQ1EUxZlUsxU4AWA4dnudOKfA+UTOqAPA4FRV5Xw6AAAwERQ4AQCAoVhYWLgeEespZjujDgDDcXHjWu4IjfUrZ+UBYGASlzedTwcAABpDgRMAABiaoiiSnScryzLVaADgU5c2ruaO0Firm7dyRwCAsVBVVfR6vdRvnEn6AAAAwAEpcAIAAMOUrMDpjDoApHfJBs6nuqLACQADkbq8GREX2u32dupHAAAADkKBEwAAGJrFxcWViNhJMVuBEwDSsmHy2T7ofBj3O1u5YwDASKvrOnmBsyiKt5I+AAAAcAgKnAAAwLAl2cJZ17USJwAk9Kude7kjNN6VzfdyRwCAkdbv96Ou65RPrH/641IAAIBGUOAEAACGzRl1ABhBu91O7giNZ0spABxPt9tN/cQbqR8AAAA4DAVOAABgqJaWls5HwjPqiTd1AMDEWtu5mztC413cuJo7AgCMrKqqoqqqlE+sLy0tnUn5AAAAwGEpcAIAADk4ow4AI2a3ZwPn8zzs7cXatqIrABxFr9dL/cQbqR8AAAA4LAVOAAAgB2fUAYCxdHHjWu4IADCSEn+et30TAABoJAVOAABg6MqyXEk1u9/vpz65BgATaadrA+dBOKMOAIc3hPPpP0s5HAAA4KgUOAEAgKFrt9vbEXEh1fwhnF0DgIlzc+de7ggj4ebOvbjf2codAwBGSuLP8b9cWlpKdgkEAADgOBQ4AQCAXJxRB4ARsduzffMwnFEHgMNJ/Dn+TMrhAAAAx6HACQAAZFGWZbICZ1VVtnACwACtbd/NHWGknL3zTu4IADAy6rpOeT59fWlp6Uyq4QAAAMelwAkAAGTx6Rn1v0k1X4ETAAbHRsnDcUYdAA6uLMtks+u6PpNsOAAAwAAocAIAADkl28JZlmXKDR4AMFGubN7KHWHkLN9+O3cEABgJKQucVVWdSTYcAABgABQ4AQCAbJaWls5HxE6q+bZwAsDx3e9sxc2de7ljjJyz686oA8BBJCxw3mi323dSDQcAABgEBU4AACC3ZFs4+/1+qtEAMDHO3rmcO8JIetjbi7Pr/rsDgOep6zrV3DNJBgMAAAyQAicAAJDV1NTUW6lmV1XljDoAHJNNkkd3aeNq7ggA0HipPre3Wq2VJIMBAAAGSIETAADIamFh4XpE3Eg1v9vtphoNAGPv7Prl+KDzYe4YI+vSxrW439nKHQMAGivhjy53Pv3nDQAAAI2mwAkAADRBsi2czqgDwNGds33z2C5uXMsdAQAaK9X59IhYSTUYAABgkBQ4AQCA7MqyPB8ROylm13WtxAkAR7C6eStWN9/LHWPknb2jBAsAw1bXte2bAADASFDgBAAAsmu329tFUZxJNV+BEwAO78/eXc4dYSzc3LnnjDoAAAAA8EQKnAAAQCMocAJAc7y5diE+6HyYO8bYcEYdAAAAAHgSBU4AAKARFhYWrkfEjRSz67qOqqpSjAaAsbO2fTfeunkhd4yx4ow6ADyZH1wCAACTToETAABojLquz6Sa3ev1Uo0GgLGx2+vEP/+vf5k7xti5uXMvdnud3DEAYGIURXE9dwYAAICDUOAEAAAao6qqM6lm2+oBAM+22+vEP//lX8bD3l7uKGPJGXUAGJ6iKLZzZwAAADgIBU4AAKAx2u32dkQkudlaVZUz6gDwFPvlzZs793JHGVurm7dyRwCAxvFjSwAAYNIpcAIAAE1zPtVgZ9QB4Mn+1yv/l/JmYhc3ruaOAACNUtd1sh9a9vv9O0kGAwAADJgCJwAA0ChlWSYrcNrsAQC/6efvLsfq5nu5Y4y9h729WNu+mzsGADRGWZbJZrfb7TvJhgMAAAyQAicAANAozqgDwPBc3Lga59Yv544xMa5sKcoCwL6EP7K8kWowAADAoClwAgAAjVPX9Uqq2c6oA8Andnud+Pm7y7ljTJTVzVu5IwBAI9R1nfLz+fVUgwEAAAZNgRMAAGicqqqcUQeAxH5x42/jYW8vd4yJckWBEwAiIu1n87quFTgBAICRocAJAAA0TrvdvhOJTp45ow4AEfc7W06nZ/Cwtxf3O1u5YwBAdt1uN9nsVqu1kmw4AADAgClwAgAAjVTX9ZlUs23hBGDSvbl2IXeEifWr7bu5IwBAVo8fP075w8qdhYUFGzgBAICRocAJAAA0Usoz6r1eL9VoAGg82zfzWt18L3cEAMimqqqk2zcjItk/SwAAAEhBgRMAAGgkZ9QBII2zd5Q3c1rbsYETgMlU13Xs7e2lfmYl9QMAAACDpMAJAAA0ljPqADB4y+9fyh1hotnACcCk6na7yX9MWZalDZwAAMBIUeAEAAAaq9VqraSarcAJwCQ6u345HvaSb77iOda2beEEYLKUZZn6dHpExIV2u72d+hEAAIBBUuAEAAAaa2Fh4XpErKeYXZZl1HWdYjQANNa59XdyRyAirmzZwgnAZHn06NEwnjkzjEcAAAAGSYETAABotKIokp0/s4UTgElyv7PlfHdDrG7eyh0BAIZmGKfTI2J9aWnJ+XQAAGDkKHACAACNVhTFmVSzFTgBmCTLt9/OHYFPXVHgBGBC1HU9jNPpUdf1meSPAAAAJKDACQAANFrKM+r9ft8ZdQAmxsWNq7kj8KmHvb1Y276bOwYAJNftdofxuXunqqq3Uj8CAACQggInAADQeCnPqJdlmWo0ADTGxY2r8UHnw9wx+IwrW87ZAzD+er1e8jfqun6r3W5vJ38IAAAgAQVOAACg8ZxRB4DjubRxLXcEvuCSjagAjLler2f7JgAAwHMocAIAAI336Rn1nRSzbeAEYNzt9jpxbv1y7hh8werme7Hb6+SOAQDJDGP7ZkT8zPZNAABglClwAgAAoyLJGfWqqqKqqhSjAaARLtq+2Vj+twFgXFVVNYwfTP5yaWnpTOpHAAAAUlLgBAAARkWSAmdEKHACMNbOrb+TOwJP4Yw6AOOq3++nfmKnLMvXUj8CAACQmgInAAAwEpaWls6HM+oAcCj3O1uxuvle7hg8xaWNa86oAzCWUp9Pr+v6jXa7fSfpIwAAAEOgwAkAAIySJFs4FTgBGFfLt9/OHYHncEYdgHFTVVXqSxcXTp8+/VbKBwAAAIZFgRMAABglKymG1nWdYiwAZHfW+fTGW759KXcEABioxOfTnU4HAADGigInAAAwMsqyXEkxN/FmEADI4uz65XjY28sdg+e4uXMvVjdv5Y4BAAOTuMD5s3a7vZ3yAQAAgGFS4AQAAEZGu92+ExHrKWYrcQIwbs7Zvjkyzq5fzh0BAAairusoyzLV+J2lpaUzqYYDAADkoMAJAACMmjsphjqjDsA4ud/ZitXN93LH4IDOrV+O+52t3DEA4NhSbt8siuJMsuEAAACZKHACAAAjpa7rlRRzE24IAYChe3PtQu4IHJL/zQAYBwqcAAAAh6PACQAAEDZwAjA+dnuduLhxNXcMDskWTgDGQcIfR64vLCxcTzUcAAAgFwVOAABgpExNTa2kmJtySwgADNPFjWvxsLeXOwZHsHz77dwRAODIyrJM9uPIoijOJxkMAACQmQInAAAwUoqi2E4xt6oqWzgBGAvLty/ljsARnV1/J3cEADgy59MBAAAOT4ETAAAYKSlPpiU89QYAQ7G2fTdu7tzLHYMjetjbi7Prl3PHAIAjSVjg3HE+HQAAGFcKnAAAwCi6kWKoM+oAjLrl953gHnWXNq7mjgAAh1ZVVVRVlWq88+kAAMDYUuAEAABGUZLNGwqcAIy6i8p/I+/SxrXY7XVyxwCAQ0l80UKBEwAAGFsKnAAAwMip6zpJgbOuayVOAEbWxY2r8bC3lzsGA3Bx41ruCABwKCk/Sy8tLSlwAgAAY0uBEwAAGDmtVmsl1exut5tqNAAkdW79cu4IDMjq5q3cEQDgUBIWOC+kGgwAANAECpwAAMDIWVhYuB4ROylml2VpCycAI2e314lLtjaOjYsbV3NHAIADS/kZuq7rlWTDAQAAGkCBEwAAGFXJTqg9evQoqqpKNR4ABs7J7fHysLdnCycAIyNlgbOqKufTAQCAsabACQAAjKqVVIPruo69vb2o6zrVEwAwUJdsbBw7SrkAjIqEBc71drt9J9VwAACAJlDgBAAARlJZlkm3cFRVFXt7eymfAICBcD59PF2xgROAEdDv95P9+LEoCts3AQCAsafACQAAjKR2u70dERdSvlGWZTx+/DjlEwBwbGfXL+eOQAI3d+7F/c5W7hgA8ExlWSabXdf1SrLhAAAADaHACQAAjLLk2zi63W7SL6QA4LjO3nkndwQScUYdgKZLeD59Z2lpyQZOAABg7ClwAgAAIyv1GfV9jx49SnYSDgCOY237btzcuZc7Boko5wLQZFVVRVVVqcavpBoMAADQJAqcAADAyPr0jPrfpH6nqqrodrupnwGAQ1t+/+3cEUjo5s692O11cscAgCfq9Xopx9u+CQAATAQFTgAAYKSVZfnGMN7pdrspN4sAwKHt9jpxceNq7hgk5ow6AE2V8Hz60C5uAAAA5KbACQAAjLR2u30nhrCFMyJs4QSgUc6uX46Hvb3cMUjskpIuAA2U+Hz6hU8vbgAAAIw9BU4AAGDkDWsLZ6/Xs4UTgMZYvn0pdwSG4NLGNWfUAWgc59MBAAAGQ4ETAAAYee12+05d178Yxlu2cALQBKubt+KDzoe5YzAkzqgD0DTOpwMAAAyGAicAADAWqqp6KyLWU7/T7/ejruvUzwDAM71580LuCAyRM+oANEni8+l7qQYDAAA0kQInAAAwFtrt9nZRFK+lfqeu66SbRgDgeVY3b8Xq5nu5YzBEzqgD0CSJz6efbLVaKw8ePHgh5SMAAABNocAJAACMjcXFxZVhnFJX4AQgJ9s3J9OVzVu5IwBARBzvM/EBL1q8qsQJAABMCgVOAABgrJw+ffqNiEjabFHgBCAX2zcn16WNa7kjAMChzqfXdf3rP1+WZZRl+et/fYAZSpwAAMBEUOAEAADGTlmWr0XEjZRvKHECkIPtm5PLBk4AmuCg59P3i5t1XT9x6+Z+ufM59kucXz90UAAAgBGhwAkAAIyddru9XZbljyNiJ9UbCpwADJvtm5Ptg86HsbZ9N3cMACbcQT4L7xc3n+cQ59Svf/TRR985yB8GAAAYNQqcAADAWGq323eKovhxqvllWaYaDQBP9GfvLueOQGYXnVEHIKODnk8/YDHzMH/2dFVVK0qcAADAOFLgBAAAxtbi4uJKRPwyxeyDfnEFAIOw/P7b8UHnw9wxyOzixtXcEQCYYAfdvnkYh/jzSpwAAMBYUuAEAADG3ZlUg51RB2AYdnudeHPtfO4YNMDNnXux2+vkjgHAhOr1es/9M4fZvnmEv0aJEwAAGDsKnAAAwFgry/J8ROykmK3ACcAwLN9+Ox729nLHoCGcUQcgh4NcoTjqlYpD/nVKnAAAwFhR4AQAAMZau93ejoiVFLPLskwxFgB+7X5nK966eSF3DBrkkjPqAGRwkB8wHmX75j4lTgAAYFIpcAIAAJMg2d1ZJU4AUnpzTXmTz7uyeSt3BAAm0PPOpx91++a+uq4PWwA9XVXVyu7u7o+P9TAAAEBmCpwAAMDY+/SMeqrZqUYDMOF2e504t345dwwa5mFvLy7awgnAED3vfHpVVcfavnnQd57gdET8x93d3deO/TgAAEAmCpwAAMDY+/SM+o0UsxU4AUhl+fbbuSPQUJc2ruWOAMAEedb59CNsznymuq6jLMvDlkL/WokTAAAYVQqcAADARKjrOskWzuOeiQOAJ9ntdWL5/Uu5Y9BQNnACMExPO59e13Wyz8T7sw9R5lTiBAAARpICJwAAMBGmpqZWUsw9wok3AHiuixvX4mFvL3cMGsoZdQCG5WmfeVOWN5/21gGKnEqcAADAyFHgBAAAJsLi4uJKqtnOqAMwaMu3bd/k2ZxRB2AYnnQ+fZjlzSe9q8QJAACMEwVOAABgkvwyxdAnfaEFAEe1tn03bu7cyx2DhrOBE4Bh+OL59Fzlzc86wPtKnAAAwMhQ4AQAACZGURTXU8y1gROAQTq7fjl3BEbAw95erG3fzR0DgDH2xfPpTShv7jtgifPMEKIAAAAciwInAAAwMeq6Xkk0V4kTgIGxWZGDUvYFIKXPXptoUnkz4pM8zzmlHhHxUyVOAACg6RQ4AQCAiVGW5Uqq2c6oAzAI9ztb8UHnw9wxGBHKvgCk9Nnz6U0qb+47QIEzQokTAABoOAVOAABgYrTb7e2IuJFitgInAINwZfO93BEYIR90Poz7na3cMQAYQ589n97E8mbEgQucEUqcAABAgylwAgAAE6UoipUUcz/75RYAHNX9j5XxOJyLG9dyRwBgDO1v36yq6jBFyaFT4gQAAEadAicAADBR6rpeSTX7s+flAOAo1nbu5o7AiLnkjDoACfT7/ajrutHlzYhDFTgjlDgBAIAGUuAEAAAmSlmWK6lmO6MOwHHt9jq5IzBiVjff8/cNAANVVVWUZTkSVyaOUDD96e7u7pkHDx68kCIPAADAYSlwAgAAE6Xdbm9HxIUUs0fhyy0Amm2nq4jH4V3ZvJU7AgBj5NGjRyP1+fYIWX/aarVWlDgBAIAmUOAEAAAmTsoz6mVZphoNwAS4uXMvdwRG0Nq2v28AGIxHjx5Ft9vNHeNQjnjq/VUlTgAAoAkUOAEAgIlTVdX5VLOdUQcAhm11ywZOAI6v0+nEo0ePcsc4kqqqlDgBAICRpMAJAABMnHa7fScibqSYfYQvjAAgIiLWtu/mjsCI2ul2ckcAYMR1Op2R27z5RVVVHeWcuhInAACQlQInAAAwkeq6TrKF8whfFgFARETc62zljsCIurnjhDoARzeKZ9Ofpq7rKMvysBs5lTgBAIBsFDgBAICJ1Gq1khQ4y7JMMRaACbC2rYQHAAxXv98f2bPpz1LXdVRVdZgypxInAACQhQInAAAwkRYWFq7nzgAAn3Vx42ruCADAhNnb28sdIbn9MucBvNpqtVY++uij76TOBAAAsE+BEwAAmGS/TDHUGXUADut+Z8sZbI7s+y9+I3cEAEZQt9udqCsSBy1xVlWlxAkAAAyNAicAADDJtlMMPcBpNgD4nIsb13JHAAAmTLfbzR1hqA7xWf20EicAADAsCpwAAMDEquvaGXUAGuHsnXdyR2CEvXL6pdwRABgxdV1Hv9/PHaPJlDgBAIChUOAEAAAAgIxWN285n86xLM3M544AwIiZpNPpx6DECQAAJKfACQAAMGC2mABwGGfXL+eOwIj7wYvfyB0BAMaVEicAAJCUAicAADCxiqJIckK9rusUYwEYQ/c7W3FOgRMAGLJWq5U7wtAVRXHUv1SJEwAASEaBEwAAmFhFUWynmOsUHQAH9ebahdwRAIAJVBRFTE9P544xNEVRxNTUsb4WPV1V1cru7u5rA4oEAAAQEQqcAADABOv3+3dSzK2qKqqqSjEagDFi+yYAkNPc3FzuCMlNTU1Fq9U6bnlz3+mI+GslTgAAYJAUOAEAgInVbrfvpJrd7/dTjQZgTNi+yaDs9Dq5IwAwgqanpwdVbGyc2dnZmJ6ePs7Z9GdR4gQAAAZmPD+VAQAAHNwvUwxV4ATgWVY3b9m+ycCsbd/LHQGAETWOWzjn5+fj5MmTMT8/n6rAGaHECQAADIgCJwAAMNGKorieYm5ZllHXdYrRAIyBN278be4IjJG1nbu5IwAwomZmZnJHGKiTJ0/GiRMnIuKT8+lKnAAAQNMpcAIAABOtruskBc4IWzgBeLI31y7EzR0bExmcK5u3ckcAYEQVRRGtVit3jIGYmpqK2dnZ3/j3lDgBAIAmU+AEAAAmWlmWK6lmK3AC8EVr23fjrZsXcsdgzDzs7cXati2cABxNwnLjUD3tHPwwSpw7Ozs/SzUcAAAYbwqcAADARGu323ciYj3F7LIsU4wFYIT92bvLuSMwpi5uXMsdAYARVdd17gjHVhTFr0+nP0nqEmdRFG/u7u6eSTIcAAAYawqcAADAxCuK4nyKuXVd28IJwK85nU5KFzeu5o4AwIgahx8fHuQM/H6Jc2oq2dejP1XiBAAADkuBEwAAmHhFUZxJNXscvggD4Pjud7Zi+f1LuWMwxm7u3Iv7na3cMQAYMVVV5Y4wENPT0wf6c0qcAABA0yhwAgAAE29hYeF6ROykmG0DJwARn2zffNjbyx2DMXf2zuXcEQAYMeNS4DyMoiiUOAEAgMZQ4AQAAPhEkjPqVVVN5BdiAPyD+52tOLeuWEd6Z9ffyR0BgBEzqT86VOIEAACaQoETAADgE0kKnBHOqANMujfXLuSOwIT4oPNhrG7eyh0DgBEyLp9XD3pC/bOUOAEAgCZQ4AQAAIiIpaWl85HojPq4fCEGwOHZvsmwLb//du4IAIyQcbkY0Wq1jvTXDanEef7BgwcvpHoAAAAYbQqcAAAA/2AlxVAFToDJtXxbmY7hurRxLe53tnLHAGAE1HU9FgXOEydORFEUR/7rh1Di/ONWq7WixAkAADyJAicAAMA/SHJGvaqqsfhSDIDD2e114uz6O7ljMIHeXLuQOwIAI6Df7+eOMBCzs7PHnrFf4pyZmRlAoid6VYkTAAB4EgVOAACAT5VluZJq9rh8MQbAwZ1dvxwPe3u5YzCBLm5cjd1eJ3cMABquLMuo6zp3jGOZnZ098vn0LyqKIubm5pQ4AQCAoVLgBAAA+FS73b4TEespZjujDjB5lm9fyh2BCfWwtxdn1y/njgFAw/V6vdwRjqXVasXc3NzA5ypxAgAAw6TACQAA8HkrKYb2+/2R32wCwMGdXb8cH3Q+zB2DCaZADMCzjPr2zf2T50VRJJmvxAkAAAyLAicAAMDnraQabAsnwOR4c+187ghMuA86H8bq5q3cMQBoqH6/nzvCkRVFEQsLCwM7nf40SpwAAMAwKHACAAB8RlmWK6lmj/IXZAAcnO2bNIUz6gA8zaheiWi1WrG4uJi8vLlvCCXO6x999NF3Uj0AAAA0nwInAADAZ7Tb7TsRcSPFbAVOgPG32+vYvkljXNy4mjsCAA1UVVVUVZU7xqG1Wq1YWFiIqanhfr2ZuMT5clVVK0qcAAAwuRQ4AQAAvqAoipUUc+u6VuIEGHPLt9+2fZPGeNjbU+IE4Dfsfy4dpQ2c++XNoiiyvD83Nxdzc3Opxp9W4gQAgMmlwAkAAPCbkq1OU+AEGF9r23fjrZsXcseAz1ndfC93BAAapizLkSpvFkWRtby5b2ZmRokTAAAYOAVOAACAL1hcXFyJiJ0UsxU4AcbXL/773+aOAL/BBk4Avqjf749UgXN+fj57eXOfEicAADBoCpwAAABPlmQLpzPqAOPp7Pplmw5ppA86H8b9zlbuGAA0xKh9Hp2eno6ZmZncMT5HiRMAABgkBU4AAIAnW0k1eNS+MAPg2XZ7nfjFjf8vdwx4qivKxQB8av/z6Khs4NDKtYgAACAASURBVJyfn88d4YmUOAEAgEFR4AQAAHiCsiyTbOCMUOAEGDfLt9+Oh7293DHgqVY3b+WOAEBDjNL59BMnTsTUVHO/yhxCifPa7u7ua6keAAAAmqG5n3oAAAAyarfb2xFxIcVsZ9QBxsdurxPL71/KHQOe6YoCJwARUZZl1HU9UgXOppuZmYmTJ09GURSpnvhrJU4AABhvCpwAAABPZwsnAM9k+yaj4IPOh7Hb6+SOAUBmo/Q5dGpqKqanp3PHOJDp6emYn59X4gQAAI5EgRMAAOApnFEH4Fls32SUrG3fzR0BgMxG6XPozMxM7giHMjU1pcQJAAAciQInAADAUzijDsCznF2/bPsmI+NXO/dyRwAgo7Iso6qqiIiROKE+OzubO8KhKXECAABHocAJAADwbMm2cJZlmWo0AEOwfNv2TUbHbtcJdYBJ1uv1ImI0ypvT09MxNTWaX2EqcQIAAIc1mp9+AAAAhsQZdQCe5OLG1fig82HuGHBgq1u3ckcAIJOqqkaqwDk3N5c7wrEMo8S5s7PzRqrhAADAcClwAgAAPEPKM+pVVf36hB0Ao+Xc+uXcEeBQdmzgBJhYjx49iohPyptNL3BOT0/H9PR07hjHlrrEWRTFX+zu7p5JMhwAABgqBU4AAIDnS7aFc38LCgCj435nKy5tXMsdAw7l5s693BEAyODx48dRlmXUdd34HxAWRRHz8/O5YwzMfokz4Tn4nypxAgDA6FPgBAAAeA5n1AH4rIvKm4yo+52t3BEAGKJerxfdbjciovHlzYhPTqcnLDtmocQJAAA8z3h9CgIAAEjAGXUAPuvsnXdyR4Aj+dX23dwRABiSqqri8ePHv/7XTXfixImYnZ3NHSOJ/c2iSpwAAMCTKHACAAAcjDPqAMT9zpZT1IystW1/7wJMir29vV+fTa/rOnecZzpx4sRYnU5/EiVOAADgaRQ4AQAADsAZdQAinE9ntK1u3codAYAhePz48a+3bja9vHny5MmxL2/uU+IEAACeRIETAADgAJxRByAiYnVTAY7Rtbr5Xu4IACRWVVV0u92IaHZ5c7/MOK5n059mSCXOlQcPHryQ6gEAAGCwFDgBAAAOqK7rlVSz979gA6DZLtnAyYhTQgYYb48ePcod4UDm5+fjxIkTuWNkMYQS5++3Wi0lTgAAGBEKnAAAAAdUVVXSM+pN3o4CgOIb4+GKLZwAY6ssyyjL8tf/d1M/Y548eTJmZmZyx8iqKIo4depUyv8eXlXiBACA0aDACQAAcEDtdvtORNxIMbuua1s4ARpO8Y1xcHHjau4IACTy+PHj3BGea3p6euLOpj/L3NycEicAAEw4BU4AAIBDqOv6TKrZ3W43er1eqvEAHNPqlg2cjL6bO/fifmcrdwwABqyqqs9t32yqkydP5o7QOEqcAAAw2RQ4AQAADiHlGfWITzamVFWV8gkAjmjVBk7GhG2yAONnFC46zM7ORqvVyh2jkZQ4AQBgcilwAgAAHELKM+oRn5xS39vbi7quUz0BwBE4O804ueTvZ4CxUtd19Pv93DGeqSiKmJubyx2j0ZQ4AQBgMilwAgAAHFLKM+oRn5y+e/ToUconADikSxvXckeAgbm0cc0ZdYAx0u/3n/gjwKIoMqR5stnZ2UblaaohlDjvfPTRR99J9QAAAHB4CpwAAACHlPqMesQnX8CNwgk8gElhAyfj5uydy7kjADAgo7B9c3Z2NneMkTE3NxcnTpxINf50VVUrSpwAANAcCpwAAACH9OkZ9V+mfqfb7TqlDtAAFzeuxsPeXu4YMFBn19/JHQGAAXjW+fSmbLy0ffPwZmdnU56cV+IEAIAGUeAEAAA4mjOpH6jrOh4/fpz6GQCew/l0xtEHnQ/j7LotnACjrizL3BGeyfbNo5uZmVHiBACACaDACQAAcARLS0tnImI99Tu9Xq/xX8gBjLPdXifOKbkxpt5cO587AgDH1PTz6XNzc7ZvHoMSJwAAjD8FTgAAgKN7YxiP2MIJkM9F2zcZY7ZwAoy+Jhc4p6ambN8cACVOAAAYbwqcAAAARzSsLZxlWUZVVamfAeAJVjdv5Y4ASS3fvpQ7AgBH1O/3o67rp/7nz/rPhmF+fj7r++NkGCXOhw8f/uNUDwAAAE+nwAkAAHAMRVG8Nox3ut3uMJ4B4At+tX03dwRI6ubOPUVlgBHV5O2bMzMzMT09nTvGWEld4qzr+v/f3d19LdUDAADAkylwAgAAHMPi4uJKRFxI/U6v18u+PQVgEt3cuZc7AiT35s3k/68MAAmUZfnM/zzXZ8iiKGzfTGRmZiZOnjwZRVGkeuKvlTgBAGC4FDgBAACOqSzL1yJiJ/U7Td6uAjCOdnud3BFgKFY334v7na3cMQA4hKqqoqqq3DGeaG5uLmXBcOJNT0/H/Py8EicAAIwJBU4AAIBjarfb20VR/Dj1OwqcAMO15nw6E2T59tu5IwBwCL1eL3eEJ2q1WjE7O5s7xtibmppS4gQAgDGhwAkAADAAi4uLK3Vd/yLlG/1+3xl1ACCJs+vv5I4AwCEc5Ad+ObZgnjx5cuhvTiolTgAAGA8KnAAAAANy+vTpNyLiQso3yrJMOR6Az/itU1/OHQGG5mFvLy5uXM0dA4ADaOr59JmZmZiens4dY6IocQIAwOhT4AQAABigsixfi4gbCeenGg3AF/zWvAInk+XSxrXcEQA4gIN+LhzmBs6iKGzfzGQYJc6dnZ03Ug0HAIBJp8AJAAAwQO12e7soip+lmn+QM3kADM7ijCICk+PixtXY7XVyxwDgOZr4uXB2djampnztmEvqEmdRFH+xu7t7JslwAACYcD5JAQAADNji4uJKRPwyxewmnskDGGfffuGl3BFgaD45o24LJ0CT1XV9qALnMLZwTk1NxdzcXPJ3eLapqak4depUyiLtT5U4AQBg8BQ4AQAA0ngr1WAlToDh+f6Xv5k7AgzVufV3ckcA4BkOu32zrutESf7B/Px88jc4mKIoYn5+XokTAABGiAInAABAAktLS+cjYifF7GF8AQfAJ370ld/NHQGGanXzvdwRAHiGpp1Pn5mZienp6dwx+AwlTgAAGC0KnAAAAOmspBjatC/sAMbZKy+8FF+d/1LuGDBUq5u3ckcA4CnKsjzwnx3Gj/9OnjyZ/A0OT4kTAABGhwInAABAInVdr+TOAMDxvf47f5g7AgzVr3bu5Y4AwBP0+/1GXWSYmZlJWRDkmJQ4AQBgNPhUBQAAkMjU1NT13BkAOL6fvPzDWJyxXYrJsdvt5I4AwBMURXGoMl7qsufMzEzS+RzfkEqc1x88ePBCqgcAAGDcKXACAAAAwDMszczH679tCycAkFer1YpTp07FqVOnYnZ29pmlvLqukxc4p6enk85nMPZLnK1WK9UTr7ZarRUlTgAAOBoFTgAAAAB4jn/9yh/HV+e/lDsGAEBMTU3FiRMnnlnmTF3enJqacj59hOyXOBNuTVXiBACAI/LJCgAAAAAO4P/9wb/KHQEA4HOeVOa0fZOnmZubU+IEAICGUeAEAAAAgAN45YWX4v949U9zx4Dklk7M544AwBFMTU1FVVVRVVXytxKWAElMiRMAAJpFgRMAAAAADuj13/6D+JOXf5g7BiT17dNfyx0BgCMoyzIePXqU/J2pqSkFzhGnxAkAAM2hwAkAAAAAh/BX33tdiZOx9soLL+WOAMARPH78eCjvzM3NDeUd0hpSifPrqR4AAIBxocAJAAAAAIf0V9973Tl1xtJX578USzNOqAOMmrquo9vtJn9neno6Tpw4kfwdhmMIJc7rH3300XdSPQAAAONAgRMAAGDE9Pv93BEAiE/Oqf+7770eizMnc0eBgfnRV76bOwIAR1CW5VDesX1z/MzNzaUs5Z6uqmpFiRMAAJ5OgRMAACCRfr9/PcXcqqqirusUowE4pJ+8/MP4u9/7cyVOxsb3X/xG7ggAHMEwCpzT09MxPT2d/B2Gb3Z2NmU5V4kTAACeQYETAAAgkXa7vZ1qti2cAM3xygsvxX/7o38b3zr9tdxR4FgWZ07awAkwoobxIz+n08fbzMyMEicAAGSgwAkAAJDWjRRDe71eirEAHNHSzHz853/6i/gXv/0HuaPAkSlvAvAsMzMzuSOQmBInAAAMnwInAABAWknOqJdlGVVVpRgNwDH8xat/Gv/hB//SSXVG0k9e/mHuCAA0VKvViqIocsdgCJQ4AQBguBQ4AQAAEqrrOkmBMyLi0aNHqUYDcAw/+sp34z//0184qc5I+er8l+L7L34zdwwAGqrVauWOwBANo8S5u7v741QPAADAKFHgBAAASKjVaq2kml2WZTx+/DjVeACO4bfmv+ykOiPl9d/5w9wRADiG1Nsxp6enk86neVKXOCPiP+7u7r6W6gEAABgVCpwAAAAJLSwsXI+InVTzu91u9Hq9VOMBOKa/ePVP499973Un1Wm0xZmTzqcDjLiUGzKLooiZmZlk82mumZmZmJ+fT1kQ/mslTgAAJp0CJwAAQHrnUw5//PhxVFWV8gkAjuEnL/8w/u73/lyJk8b6i1f/l1iamc8dA4BjSFngnJmZSb7hk+ZqtVpKnAAAkJACJwAAQHpJC5x1Xcfe3l7UdZ3yGQCO4ZUXXor/9kf/Nr51+mu5o8DnfP/Fb9i+CTAGUpXriqKIkyf9CGXSTU1NKXECAEAiCpwAAACJLS0tnY+EZ9QjIqqqim63m/IJAI5paWY+/u73/zz+RFmOhlicORn/zw/+Ve4YADTY3Nyc7ZtEhBInAACkosAJAAAwHEm3cEZEdLvdKMsy9TMAHMPSzHz81fdeV+Iku8WZk/F3v/fnTqcD8FTT09MxOzubOwYNosQJAACD5ydzAAAAQ/DgwYOvt1qtv0/9ztTUVJw6dSr1MwAMwNn1y/Fv3l3OHYMJ9K3TX4t//73X45UXXsodBYAB6ff78dFHHw1sXlEUsbi4GFNTdsHwm6qqik6nE3VdJ5lfFMX/ubi4+LMkwwEAoGEUOAEAAIZkd3d3JSJ+P/U7J06csCUFYEQocTJsf/LyD+Ovvvd67hgADFiv14uPP/54ILOKooiFhYVotVoDmcd4qqoq9vb2oqqqVE/8zdLS0muphgMAQFP42RwAAMCQFEXxxjDe6fV6ybZgADBYP3n5h/Gf/qc3YnHmZO4oTADlTYDxVZblQOYob3JQ++fUE25p/en/YO9+YuNIzzxBv19kkiIpMknC9qXsKnEAN9ylS8lGAWt3ARYXa7cxp6oB7AV8ctmava0B1e5i67auuu1g2t1u9G3Hva6+zGCqB1j5tJ6dQ7MW291zaMxKh+2ZxQ4wUvfMXHoGKZESxT+ZEXsopcxSi3+SEZGRmfE8gFCUmPF+r7KSGSLjF++3u7v7UV3FAQBgWghwAgAATMja2tpORHxS9zpFUcTx8XHdywBQkesbr8XH33xfiJNaCW8CzLfBYFC6hvAm40opCXECAEBJApwAAAATNBwO353EOgKcALPl+sZr8atvfRivr7/adCvMod9+5avCmwBzrooJnMvLy8KbjE2IEwAAyhHgBAAAmKDNzc37RVF8WPc6eZ5XMoEFgMn50srn4+Ob7wtxUqnX118V3gSYc8PhMIqiKFXjypUrsbi4WFFHtI0QJwAAXJ4AJwAAwIStr69/EBH36l5HgBNg9vQWVuLjm+/H17/wlaZbYQ6sLSzH7755K3oLK023AkCNyn7v1+l0Ynl5uaJuaKtJhTj7/f5GXQsAAEATBDgBAAAakGXZuxHxqM41BDgBZlNvYSX+6Tffj+9ee6vpVphx711/J65vvNZ0GwDUrOz3fsKbVGUSIc5Op7MjxAkAwDwR4AQAAGjA6urq3Yh4t841iqIQ4gSYYT9985YQJ5f29S98JW59+dtNtwHABJT5vu/KlSvR7XYr7Ia2G4U4a3xdvSHECQDAPBHgBAAAaEiv17tTFMWHda4hwAkw23765q34nTdvNd0GM2ZtYTl+6nUD0Ap5nkdRFJc6ttPpxNLSUsUdwachzuXl5VhYWKhrCSFOAADmhgAnAABAg9bX1z+IiF/WVX84HNZVGoAJ+d61t+J33rwVawu2N+VifvrmrfjSyuebbgOACbjs93wppbh69WqklCruCH5taWlJiBMAAM4hwAkAANCw4XD4bkQ8qqN2nueR53kdpQGYoO9deys+/ub7Qpyc67vX3orvvPK1ptsAYEIuE+BMKcXq6mpkmcuE1E+IEwAAzuY7MwAAgIZtbm4+LIriZ3XVN4UTYD5c33gtfvWtD+P19VebboUp9fr6q7ZOB2iZy3y/t7KyEp1Op4Zu4OWEOAEA4HQCnAAAAFMgz/PaApwmcALMjy+tfD4+vvl+/PYrX226FabMF1c+Fx/ffL/pNgCYsKIoxnr88vJynUE6ONUkQpyPHz++UdcCAABQFwFOAACAKbC5ufkwIn5ZR20TOAHmS29hJf7RN34ct19/u+lWmBJrC8vx82/8OHoLK023AsAUW1hYiCtXrjTdBi1Wd4gzz3MhTgAAZo4AJwAAwPS4U0dREzgB5tN719+O//2/+iC+uPK5pluhQWsLy/HxN9+P6xuvNd0KAFMspRQrK4L+NG9paanOIPG6ECcAALNGgBMAAGBKDIfDnTrqjrulHgCz4/rGa/Grb30YP/ryt5tuhQYIbwJwUUtLS5FSaroNiIiIxcXFWFpaqqu8ECcAADPFd2oAAABTZHd3935EXKu67tWrVyPL3MMHMM/+8uFfxX/3F38Y//rRXzfdChPwxZXPxc+/8WPhTYCWe/z4cQwGgzMf0+12Y3V1dUIdwcUdHx/HwcFBXeUfZVm2vbq6ereuBQAAoAoCnAAAAFNkd3f3TkS8XXXdlZWV6HQ6VZcFYAr93l/+Mv7w3/4fsXf8tOlWqMmPvvzteO/629FbsBUuQNsdHBycGYBLKcXa2pob+phaQpwAALSdACcAAMAUefTo0QcppZ9UXVeAE6BdTOOcT1//wlfivdffjq9/4TebbgWAKXF4eBhPn55+08bKykosLi5OsCMYnxAnAABtJsAJAAAwReoKcC4tLcXCwkLVZQGYch/e+yfxv/7bf9F0G5SwtrAc33nla/He9bfjSyufb7odAKbMYDCIx48fv/RzV65cieXl5Ql3BJdTd4gzIm73er2P6loAAAAuq9t0AwAAAPxaSul+HXXzPK+jLABT7idvfD+ub7wWH977x7ZUn0G3X387bv3Gt22VDsDYut2u8CYzZXTTaU0hzvWI+MXu7m4IcQIAMG1M4AQAAJgie3t720VR/EnVdRcXF+PKlStVlwVgRvzlw7+K//r//AdCnDPi9fVX4+e/9WMTNwE41/HxcTx58uQzf5ZSil6vFym5DMjsyfM89vf3oyiKupb4oRAnAADTJGu6AQAAAOo3HA6bbgGABl3feC3+7O/+w3h9/dWmW+Ec3732VvzqWx8KbwJwIS/7Xu/q1avCm8ysLMtiZWWlztfwL3Z3d9+tqzgAAIxLgBMAAGCKpJQe1lHXFuoA9BZW4uOb7wtxTrHvXnsrfvrmrabbAGCGvPi93uLiYnS73Ya6gWoIcQIA0CYCnAAAAFNkdXX1bh11i6IQ4gRAiHOKCW8CcBmDweD5xymlWF5ebrAbqI4QJwAAbSHACQAAMH0e1FH0+Pi4jrIAzBghzukjvAnAZRwdHX3mRr2lpSVbpzNXhDgBAGgDAU4AAIDpc7+OoicnswDQbr2Flfj5b/041hZM6Wra6+uvxk/e+H7TbQAwgw4ODj7z+8XFxYY6gfpMKMT5UV3FAQDgPAKcAAAAU6Yoip066uZ5bht1AJ770srn4+ff+HHTbbTe7755K3oLK023AcCMefr06We+v+t0OqZvMrdGIc4sq+3S9g+EOAEAaIoAJwAAwJRJKd2tq7YpnACc9PUv/Gb86MvfbrqN1rr9+ttxfeO1ptsAYMYcHx/H4eHhZ/5MeJN5J8QJAMC8EuAEAACYMsPhcKeu2sfHx3WVBmBGvXf97fjiyueabqN11haW49ZvCM8CML6nT5823QI0IqUkxAkAwNwR4AQAAJgym5ubDyPiXh21baMOwIt6Cyvxu2/earqN1vnOK1+zdToAlel2u023ABMhxAkAwLwR4AQAAJhCRVHcqau2bdQBeJGt1CfvlucbgEtaXV0V2KTVhDgBAJgnApwAAABTqNPpCHACMFHvXX87Xl9/tek2WuGLK5+L6xuvNd0GADMqy7JYXV2NXq8XS0tLsbCwEAsLC023BRM1oRDnnX6/v1HXAgAAECHACQAAMJVWV1fvRsSDOmoPh8MoiqKO0gDMsN7CSvz8t34cawvLTbcy9279xm833QIAcyDLslhaWoqrV69Gp9Npuh2YuAmEON/udDo7QpwAANRJgBMAAGBKpZRM4QRgor608vn4+JvvC3HW7DuvfLXpFgAA5sIoxFnjFNo3hDgBAKiTACcAAMCUSil9VFdtAU4ATnN94zUhzhp999pb8aWVzzfdBgDA3EgpxdLSkhAnAAAzSYATAABgStW5jfpgMLCNOgCnEuKsz3vX3266BQCAuSTECQDALBLgBAAAmGK2UQegKaMQ5+vrrzbdyty4/frbpm8CANRIiBMAgFkjwAkAADDFbKMOQJOub7wWH98U4qzC6+uvmr4JADABQpwAAMwSAU4AAIApZht1AJrWW1iJX33rw/jutbeabmVmrS0sx8c332+6DQCA1phAiPPu48ePb9S1AAAA7SHACQAAMP126io8HA7rKg3AnPnpm7fif3rj+023MXPWFpbj42++H72FlaZbAQBolZpDnNfyPN8R4gQAoCwBTgAAgOl3p67CtlEHYBy3vvzt+Kff/B9jbWG56VZmwii8eX3jtaZbAQBopaWlpVhaWqqr/LoQJwAAZaWmGwAAAOB8u7u7DyNiveq6KaVYXV2tuiwAc+7f7/+n+Pt/9gfxrx/9ddOtTC3hTQCA6XF8fBwHBwd1lX+UZdn26urq3boWAABgfpnACQAAMBtqmcJZFIUpnACM7Usrn49ffevD+O61t5puZSq9vv6q8CYAwBRZWFgwiRMAgKlkAicAAMAM2N3dfSci/rc6atd8EQOAOffHD/40Prz3j2Pv+GnTrUyF337lq/HTN29Fb2Gl6VYAAHiBSZwAAEwbAU4AAIAZYRt1AKbVXz78q/j7f/4H8R/2/3PTrTTmiyufi5+88f34zitfa7oVAADOIMQJAMA0EeAEAACYEbu7ux9FxA/qqH3lypVYXFysozQALbF7vB//zZ//QfzLv/l/m25l4m6//nbc+o1vm7oJADAjag5xRkT8sNfrfVTnAgAAzAcBTgAAgBlR5zbqKaW4evVqpOTbRADK+e//4g/jnz3406bbmIjX11+N333zVlzfeK3pVgAAGNPx8XEcHh5GURR1LSHECQDAuVyZAwAAmBH9fn+j0+n066rf7XZjeXm5rvIAtMgfP/jT+B/+4g+bbqNW3732Vvzkje+bugkAMMPyPI/9/X0hTgAAGpM13QAAAAAXs7m5+TAifllX/cFgEIPBoK7yALTI9669Ff/LN/7bWFuYzxsDvnvtrfjpm7eENwEAZlyWZbGyslLnjiS/2N3dfbeu4gAAzD4BTgAAgNlyp87iBwcHked5nUsA0BLfeeVr8fE335+7EOfvvHkrfvrmrabbAACgIkKcAAA0SYATAABghgyHw1oDnEVRxMHBQZ1LANAi1zdei4+/+X58ceVzTbdSiR99+dvxvWtvNd0GAAAVE+IEAKApApwAAAAz5Nk26n9U5xrD4TCOjo7qXAKAFrm+8Vr86lsfxuvrrzbdSinfvfZW/OSN7zfdBgAANZlEiPPRo0e36yoOAMBsEuAEAACYMSmlj+pe4/Dw0FbqAFSmt7ASH9+c3Umcr6+/att0AIAWqDvEmVL6vd3d3Y9qKQ4AwEwS4AQAAJgxa2trOxHxoO51nj59WvcSALRIb2Elfv6NH8fawnLTrYxlbWE5Pr75ftNtAAAwIaMQZ5bVdin9B0KcAACMCHACAADMpg/qXiDP8zg8PKx7GQBa5PrGa/HxN2crDPnTN29Fb2Gl6TYAAJggIU4AACZFgBMAAGAG9Xq9j2ICUziPjo5spQ5Apa5vvBa/MyPbkX/9C1+J77zytabbAACgASklIU4AAGonwAkAADC7PpjEIrZSB6Bq37v2Vvzoy99uuo1zvff62023AABAg4Q4AQComwAnAADAjHo2hfNe3evkeR5HR0d1LwNAy/zkje/H17/wlabbONXXv/CV+PoXfrPpNgAAaJgQJwAAdRLgBAAAmGEppduTWOfo6CiKopjEUgC0yD/6xo/j9fVXm27jpUzfBABgZEIhzjv9fn+jrgUAAJhOApwAAAAzbG1tbSci/qjudYqiiMPDw7qXAaBlegsr8fHN96cuxGn6JgAAL5pAiPPtTqezI8QJANAuApwAAAAzbjgc3o6IR3Wvc3x8HHme170MAC0zCnGuLSw33cpzpm8CAPAyKaW4evVqLCws1LXEG0KcAADtIsAJAAAw4zY3Nx9GxLuTWOv4+HgSywDQMr2Flfizv/sPp2IS54++/G3TNwEAONPS0pIQJwAAlRDgBAAAmAO9Xu9OTGAr9ePj4yiKou5lAGihadhO/fX1V+O966ZvAgBwPiFOAACqIMAJAAAwJ55tpX6vzjWKoojBYFDnEgC0WJMhzrWF5fj5b/04egsrE18bAIDZJMQJAEBZApwAAABzYnNz82GWZe/WvY5t1AGo0yjE+d1rb01szbWF5fj4m+/Hl1Y+P7E1AQCYD0KcAACUkZpuAAAAgGo9evTodkrp9+pc4+rVq5Fl7gkEoF7//D/+q/jw3j+J/7D/n2tb44srn4uff+PHcX3jtdrWAABg/h0cHNR50+ujLMu2V1dX79a1AAAAzRDgBAAAmEO7u7t3IuLtuupfuXIlFhcX6yoPis3OGAAAIABJREFUAM/tHu/HH/5//yL++MH/VWmQ84srn4v3rr8T35vgpE8AAObb4eFhHB0d1VVeiBMAYA4JcAIAAMyhfr+/0el07kfEeh31u91uLC8v11EaAE71z//jv4p/9uBP48//5t/E3vHTsY9fW1iO77zytfjtV74a33nlazV0CABA2x0fH8fBwUFd5YU4AQDmjAAnAADAnNrd3X03In5RV/3V1dVIybeVADTjX/7Nv4n/59Ffx79/8p/iLx/91amPu77+Wnzp6ufjG5//im3SAQCYCCFOAAAuypU2AACAOba7u7sTETfrqL28vBzdbreO0gAAAAAzTYgTAICLyJpuAAAAgFr9rK7Cg8GgrtIAAAAAM21hYSGWlpbqKr+e5/nO48ePb9S1AAAAk2ECJwAAwJzb3d29HxHXqq6bZVlcvXq16rIAAAAAc6PuSZwppXfW1tZ26loAAIB6mcAJAAAw51JKd+qom+d55HleR2kAAACAuVD3JM6iKP5kd3f33boWAACgXgKcAAAA86+WAGfEp1MkAAAAADjdwsJCLC8vR0q1bZD5CyFOAIDZZAt1AACAFtjd3X0YEetV17WNOgAAAMDF5Hke+/v7URRFXUv8sNfrfVRXcQAAqmcCJwAAQDvUto36YDCoozQAAADAXMmyLFZWVkziBADgOQFOAACAdtipq/Dh4WFdpQEAAADmihAnAAAnCXACAAC0wHA4rGUCZ8SnUzgPDg7qKg8AAAAwV4Q4AQAYEeAEAABogc3NzYcRca+u+sfHx0KcAAAAABc0iRDno0ePPqirOAAA1RDgBAAAaImiKD6qs74QJwAAAMDF1R3iTCn9ZHd396NaigMAUAkBTgAAgJbI87y2bdRHhDgBAAAALm4U4syy2i7d/0CIEwBgetU2jx0AAIDps7u7ezci3qh7nU6nE8vLy3VuAwYAAAAwN4qiiP39/cjzvK4l/qjX671bV3EAAC7HBE4AAIAWqXsb9ZHhcFj3RQcAAACAuZFSqn0S597e3s/qKg4AwOUYhQIAANAi/X5/o9Pp3I+I9Umsl1KK5eXl6HQ6k1gOAAAAYKZNYBLnD3u93kd1FQcAYDwmcAIAALTI5ubmw4i4M6n1Rhcdjo6OJrUkAAAAwMyawCTOnz1+/PhGXcUBABiPCZwAAAAt0+/3tzqdzr+b9LoLCwtx5cqVSMm3ogAAAABnqXkS571eryfECQAwBUzgBAAAaJnNzc37EfFHk173+Pg49vf3oyiKSS8NAAAAMFNGkzg7nU4d5d949OjRB3UUBgBgPMaeAAAAtFC/39/odDr3I2J90mtPYCswAAAAgLlxcHAQx8fHldcdDod/59mNvgAANMTVMgAAgBba3Nx8WBTFB02sXRRFPHnypJYLDwAAAADzZmlpKRYWFiqv2+l0Pqi8KAAAYzGBEwAAoMV2d3fvRMTbTa2/uLgYV65caWp5AAAAgJlRxyROUzgBAJplAicAAECLDYfDdyPiQVPrHx0dxcHBQRRF0VQLAAAAADOhjkmcpnACADTLBE4AAICWe/z48Y08z3ciYr2pHrIsi+Xl5cgy9xkCAAAAnKXqSZzD4XBzc3PzYWUFAQC4MFfGAAAAWm51dfVuSumdJnvI8zz29/fj6OioyTYAAAAApl7VkzizLHu3smIAAIxFgBMAAIBYW1vbiYgfNtlDURRxeHgY+/v7ked5k60AAAAATLUqQ5wppXcrKQQAwNhsoQ4AAMBzu7u770bEL5ruI6UUi4uLsbi42HQrAAAAAFPryZMnldwIaxt1AIBmmMAJAADAc71e76NoeBJnhGmcAAAAABexvLxcSZ1Op7NdSSEAAMYiwAkAAMBnPAtx/r2IeNRwKzEcDuPJkydxeHgYRVE03Q4AAADAVMmyrJKt1IuiuFFBOwAAjEmAEwAAgL+l1+vdybJsO6YgxBkRcXR0FPv7+zEYDJpuBQAAAGCqLC4ulq6RUtou3wkAAOMS4AQAAOClVldX7z4Lcd5ruJWIiMjzPJ4+fWpbdQAAAIATsiyLLCt96X+rglYAABiTACcAAACnWl1dvTscDrcj4pOmexmxrToAAADAZ3W73bIlrlXRBwAA4xHgBAAA4Eybm5sPe73edkrp95vu5STbqgMAAAB8qoIAJwAADRDgBAAA4ELW1tZuR8QPI+JR072M2FYdAAAAAACAWSXACQAAwIX1er2PsizbjogHDbfyGbZVBwAAANospVS6xt7e3nb5TgAAGEf5f8UBAADQOv1+f6PT6dyJiJtN9/KiLMticXExFhYWmm4FAAAAYCKGw2Hs7++XqtHr9eQHAAAmzAROAAAAxra5ufmw1+ttp5R+v+leXpTneRwcHMT+/n4Mh8Om2wEAAAAAAICXEuAEAADg0tbW1m5HxA+b7uNlRpMnnj59GnmeN90OAAAAQG3cxAoAMJsEOAEAACil1+t9FBF/LyIeNdzKSw0Gg3jy5EkcHBwIcgIAAABzqYIA54Mq+gAAYDwCnAAAAJTW6/XuZFm2HRH3Gm7lVMfHx/HkyZN4+vRpDAaDptsBAAAAqERRFFX8rON+Ba0AADAmAU4AAAAqsbq6enc4HG5HxC+b7uUsg8Egnj59Gk+ePInDw0NTOQEAAICZVsWNqimluxW0AgDAmAQ4AQAAqMzm5ubDXq/3TlEU7zXdy3nyPI+jo6N48uRJ7O3txf7+fhweHsbx8XEMh8MoiqLpFgEAAADOdXR0VLpGURQCnAAADUhNNwAAAMB8evz48Y08zz+KiDea7qWMLMsipRSdTiciIrrdbqSUIsvcEwkAAAA06/DwsJIA53A4/Dubm5v3y3cEAMA4BDgBAACo1aNHjz5IKf2k6T7qkGXZ81/dbvd5yBMAAACgbnmex5MnT6ooda/X692oohAAAOMR4AQAAKB28zKN8yJOhjm73W7T7QC0Wp7nURRFDAaDz/z+LKPJy91u9/nHk+gzz/MYDocXPqbT6TzvzQ0EAADtk+d57O/vn/vv24tIKf3+2tra7QraAgBgTAKcAAAATMw8T+M8zSjIOQoCzbOiKJ4HkEYfjy4knReaeln46MU/OxlWOosgExcJwU0qmNd2J7/2U0q1vg+O3ncGg0EMh8OxwpBnqSOYPxwOK+8z4tfvf2XfBy/T0+hrajSZus734tHzVhTF815P6/nk6250Hul0Os4Vc+7ka+Qiwe2TTr5mRq+XF/8cAJpWZXgzwvbpAABN8lNqAAAAJqrf7291Op2PIuJm071M2ijQMvo16yGAUVBqFNrM87zplj7jxS3upyWwdzJIMgqXjD4+aRQ6eZkX/y6jcMnJv/M0/F3rMHqtjX4VRXHmczWucUNdJx9/MugzC+Gw016L53nxtVplUPJlr+uL9FPla+AsKaVYWFiIhYWFsd/D8zyPo6OjGAwGlV1on3ZVhV/zPI/j4+Pn55yq1HmTxbihwdF7Wlkn34fqPheM/o7j9j56LVTZ3ygQXfVr5DJO/r1Goc/R/5d5Pj8DMDmDwSAODg6q/DflJ71eb7uqYgAAjMdPCgAAAGjE7u7uOxHxs4i41nQvTTl5Qf+8x50MllQRDDsZdnpZ8OKsQNakglJ1KBvWORlUORlcOfm5aXFyEt4oLPLia+kiqgoVjevF8NO4YahpcDK4c/J5v8jX/Ys1LuvFybijAOysPZfTaBTkPO//5fHxcRwfH1c6aXNWjd5/u93uuSG2ukKbpxmFTccJ547eH09+XU3j/+dRcPDkjSTjOhmOrPK8MHqPe7HH84ye91Fwc5be007+nSMud26ehZsEAKjecDiMw8PDOv698cNer/dR1UUBALgYAU4AAAAa0+/3N7Isu922bdWrNO4FfMGtX3sxQHGak0FNzx3T4CIT3KYtUDzPRsG/0ccnQ91tmrY5rpOv49H78CiMMA3vt2edG+bh6+tkuPxl7ycnz3tN/V1f1ts8PPeT1Ol0YmVlpek2ALik0XlvMBjUeVPLg16vt1VHYQAALkaAEwAAgMa1eVt15s9oS++RlJLtUgGAiTsvwFkURezv7wvFArSb6ZsAAA1z9QAAAICpYVt1Ztl5E+NGQc62hTlffF4uMj0SACjvvADnwcFBHB8fT7AjAKbMJ71eb7vpJgAA2i5rugEAAAAY6fV6d4bD4Y2iKD5suhe4qDzPYzgcnrvd7zRvwz7q7cVfZXqd5r8vALSd8CYAWZbdbroHAABM4AQAAGBK2VadaTcKKF5GSimybLz7akdByBcDkaNpluNOtRxt9X6RgOW4UzPPem5M4ASAyThtAufx8XEcHBw00BEA06Ioig/X19c/aLoPAAAEOAEAAJhytlVn2owTfDzPWWHGk2uMs9bJei/Wvky9k7UuEjo9L9ja6XTGXhsAGN/LApzCmwCErdMBAKaKACcAAABTr9/vb2RZdjul9JOme6GdqgxtnmYUtpz2LcdPC3Je5Dm6zORRAOByXgxw5nke+/v7U/9vDQBq9WA4HN7Y3Nx82HQjAAB8SoATAACAmfFsW/UPIuIHTfdCe5TZKn3ejRs6FeAEgMk5GeAU3gQgIh5lWba9urp6t+lGAAD4NQFOAAAAZs7e3t52URQfRMTNpnth/uV5LuxQkbO2jAcAqjUKcBZFEfv7+25IAWg34U0AgCll5AEAAAAzZ21tbafX622nlP7LiPik6X6Yb8Kb1RHeBIDJEt4EIIQ3AQCmmgAnAAAAM0uQE2aH8CYATN7h4aHwJkC73RsOhzeENwEAppefnAMAADA3+v3+VqfT+SAi3omI9YbbYU4Mh8OmW5gLKaXIMvcSAwAATMgfDYfD25ubmw+bbgQAgNMJcAIAADB3+v3+RqfTeScibkfEG033w2wT4KxGlmWmcAIAANTvQUTc7vV6d5puBACA8/mpOQAAAHOt3+9vZVn2TkppOyLebrofZktRFLYdrUin02m6BQAAgHn2qCiKn+V5/jNTNwEAZocAJwAAAK2yt7e3nef5dkrpRkTciIhrTffE9BLgrIbt0wEAAGojuAkAMMMEOAEAAGi9vb297aIotoqi2EopbUXE6JdwZ8vleR5FUTTdxswT4AQAAKjcLyPiznA4vCO4CQAwuwQ4AQAA4Az9fn+r2+1u5Xl+IyI2nm3FfiMi1pvtjEkQ4KxGlmWRkh9DAQAAlPBJSuluURQ7w+FwR2gTAGA++Mk5AAAAXEK/39/qdDrbEbEdEe+EQOdcsoV6NTqdTtMtAEAb3Usp3W66CQDKGQwGd4U1AQDmlwAnAAAAVGBvb287It4pimI7It5otpupdS8iXnbRaSumeLv64XDYdAszT4CThj2KiJ2iKO5mWbYzGAzub25u3n/xQSeC+bejuffxTyLio5TS/bMelOf5dkRESulGRGzElL+PTtCDiLh/4vdb4Xmh3T7p9XrbTTcBAAAAnE6AEwAAACr2wnTO7WhfeOReSmkUlrq7urp6d9wCjx8/vlEUxcbo90VRbBVFsXXWMVmWbRRFcSMq3uLeNurlpJQiy7JJLPUoIkavtYdFUZz6ukspbcWnwa4XVfraaZGTz/3fUhTFTsRnwoYvU9Vz/yAi7j/bWvLS70F7e3vbRVHcjoi3K+jpPI8i4s5wOPzgZcHScb34/nkZp4VcT/Ps+dqKTydST+I5G7lXFMVHnU5n56z/z8+ek3eLongn2ndObrtfRsSdi74X9Pv9jW63eyPib//bI6W0fYH1NmK6buQR4AQAAIApJ8AJAAAANXsW6LxRFMWNEwGmm033VdLzwNazcNbDLMvurq2t7TTZ1Mjjx49vDIfDd1JK70TJIIVt1MupOMD5mdddSul+Sul+U1sKngzK5Xl+IyI2Zuxr/F5E3B+FXVNKd1NK5z6P44b7LqPf7291u92tiz6+rtdAv9/fyrLs3ZTSu1F98O+X8Wlw8868bYm5u7v7Tnwa5nwnqg9Ff1IUxZ08z+9c5nVY5fnhMk67IaCqGwVSSi/9uC6jvi/a/wT6exARO/Hp19ZOk19bjx8/vpHn+daJf/9txeRfcwKcAAAAMOUEOAEAAKBB54WUTk5/OjFhcuSyAbFPRh+klO7mef4wngUwR38+iYDWpPT7/Y1Op7P9LECxHZfYUtc26pd3gQDnP0gp/epln2gqmFmll32Nj7a/Ps9LvuYjxnv93ouIhxG//lofhTSnJWw9S56FOd959j5yI8YPdH7ybDLoTtPBskl6FmK7kVK68ez1vBUXf+4+iWcTdbMs26njPWFvb287z/PtE5N5L9rf8+3aR1NmsyzbKYrif46I/+K0gyY91XkUknzxv+M62fO4oc2znNbXJfq8NxwOt2fh6+qsKZ8XccYU6Zc99u7a2trtMVsEAAAAJkiAEwAAAGilUbCuKIo/Oe+xtlG/vPMCnFmWffUyW1zDNNjb29uOiCiK4sWw7fNQ/DwF4qv2soDzrIeLHz16dDul9HunfX7azidnBSWnoc9Op3PRhz7q9XobdfYCAAAAUAcBTgAAAKC1nm1v/+/Oe5xt1C/vvABnr9fz8ylgbjybOPp/n/b5aQtwTrssyy48jdMNAQAAAMAsOnP/KgAAAIB5dtb29SdddstZzvVJ0w0AVOlZgPBB033Mi3HCrsPhcLu+TgAAAADqIcAJAAAAtFae59tN99BmKSWT0oB5tNN0A/NinABnSmm7vk4AAAAA6iHACQAAALRWSmmr6R7m3VnTS4uiEOAE5tFO0w3MkzFCnNs1tgEAAABQCwFOAAAAoM22LvKgcSaAcXFZlglwAnNnOBzeabqHllrv9/tbTTcBAAAAMA4BTgAAAKDNbjbdQJutrq4KcAJzZ3Nz82FE3HvZ586aSszLjXMTRafT2a6vEwAAAIDqCXACAAAArTTOlK48z2vsZL6dEVb6ZJJ9AExSSmnnlD+fcCezb8wp2Ns1tQEAAABQCwFOAAAAoJW63e7WRR5n+/R6pJRM3wTm2anbqAtxjm+Mc/F2jW0AAAAAVE6AEwAAAGilPM+3L/I4Ac7LOyukVBSFACcwt9bW1nZO+5wA5/jGOBdf6/f7G3X2AgAAAFAlAU4AAACglVJKW+c9pigKAc6apJTuN90DQM1++bI/FOAc3zjn406ns11vNwAAAADVEeAEAAAA2mrrvAcIb5ZzVkjprOl0APOgKIqd0z6XZX40P66LnpNTStv1dgIAAABQHT8lAgAAANrq5nkPEOCszb2mGwCoW6fT2Tntc6Zwju+iUziLotiuvxsAAACAaghwAgAAAK3T7/c3znuM8GZ5ZwSU7k6yD4AmrK6u3o2IR6d93hTO8eV5fpGHvVF3HwAAAABV8RMiAAAAoHW63e6N8x5zVoAzpRSdTie63W4sLi5Gt9t9/stUtU+d9TwURXF/cp0ANOrOaZ9wvrici4Q49/b2tuvvBAAAAKC8btMNAAAAAExanuc3zgvOpJQ+E6558fGrq6tnhm8Gg0EURRHD4fD5f0962Z+dJ8uyyLLseVC00+lERES32/1b9Ubrjnq57Jp1yLJsp+keACZkJyJ+cNonU0omPo9ptJX6WefgPM+349PnHgAAAGCqCXACAAAArZNl2dZ5gZmzgiEvhjtfptv99McuCwsL4zf4zCh42el0zl0vpfR8zZPrnybP8xgOhzEYDGIwGEw02DkYDGyhDrTCcDjcGYXtXybLsqkI1lfh5I0Fp8nz/KLboJ/pvABnSmm79CIAAAAAEyDACQAAALROURTnbqF+lizLqmrlTOeFMMsYTfMcBUzzPI/j4+M4OjqqJEx0RrDm0ebm5sPSCwDMgM3Nzfu7u7sPIuLaaY8ZdwrnaUHJF8P+pz1uMBjE8fFxZcHRxcXFWFhYKHXDwknD4TCePn0aeZ5/5nk57eNTlDrPAwAAAEyKACcAAADQRqWCHedNGJtFWZbFlStX4sqVK5Hn+fPJnKOPK2T6JtA2O3HJbdRHgczl5eXodDqVnH+63W4sLS3FcDiMw8PDODo6ulSdxcXFWFpaqvymhk6nEwsLC3F0dHTu9OkzrD9+/PjG6uqqcw4AAAAw1QQ4AQAAgDZaL3NwiUDJTMiyLBYXF2NxcfH5n42CnE+fPr3QpLjTnqOiKHaq6hNgRuzEOQHOFydnnvzvSNU3D3Q6nVhZWYmlpaU4ODi4cJCz2+3GyspKrdOoq/i7DofD7XDTAAAAADDlBDgBAACAVtnb29seZ6val5nHCZznybIsut3u88BOURTPf40jpXS/hvYAptZwONw577xxXhiyqu3OT1t7ZWUllpeXn0/kzPP8M49JKcXCwkItEzdfporzbErJNuoAAADA1BPgBAAAAFqlKIqtsjXmfQLnaU4Gek5OjHsxzHnW85NlmWloQKtsbm7e393dfRAR1y5bo84A50hKKZaWlmJpaSnyPH/+np9SmviNCymlyLLsbwVJx7RdUTsAAAAAtan/VlkAAACAKVJFgHMS08em0WkBolHQptPpRKfTOfP5WV1dFeAE2minzMFFUZQNM45lNHW52+02NnW6gnWv9fv9jSp6AQAAAKhLO682AAAAAK1VdkvVNm6fPlJBeOheFX0AzKCdsgUGg0EFbcyOKs63nU5nu3wnAAAAAPUR4AQAAADaZqvMwW3dPj2ikgDn/QraAJg5w+Fwp4IaFXQyO6oIcKaUtst3AgAAAFAfAU4AAACgbd4oc3Bbt0+PKB/gLIrC9ulAK21ubt6PiAdlarQtwJllWembJoqiKDV1GwAAAKBu7b3iAAAAALROv9/fKlujrVuoVzB9M1JKApxAm+2UObgoikrei2dJBTdN3KyiDwAAAIC6CHACAAAArdHtdrfK1mjrFupVhIayLLtfvhOAmbVTtkDbpnBWcdPE3t7edvlOAAAAAOohwAkAAAC0Rp7n22VrtHUCZxWhodXVVRM4gdYaDoc7FdSooJPZ0e12S9fI89w26gAAAMDUEuAEAAAAWiPLso2Sx1fVysypYALnvSr6AJhVm5ub9yPiQZkabQtwVnHTREppu3wnAAAAAPVo71UHAAAAoHWKoig1haut26dHVBLgvF9BGwCzbqfMwXmeV/F+PFMquHnCBE4AAABgaglwAgAAAG2yVebgtm6fHlE+wFkUhe3TAUoGOCMqCdTPlAq2Ub/W7/e3KmgFAAAAoHICnAAAAECbXCtzcFsncFYRFkopCXACrZdlWen3wrZto17BBM7odDqmcAIAAABTSYATAAAAaIW9vb3tsjXaOoGzigBnlmX3y3cCMNtWV1fvRsSjMjUGg0FF3cyGKs69KaXt8p0AAAAAVE+AEwAAAGiFoig2ytZo6wTOKqa9PQstAVByG/U8z6MoiopamX5ZlpU+/xZFYQInAAAAMJUEOAEAAIBWqCK8UcU2rrOogqDQvSr6AJgHRVHslK1RxWTkWVLBFM6bVfQBAAAAULV2XnUAAAAAWieltFXm+LaGNyMqCQo9rKIPgHmQZVnpicRt20a9inPw3t7edvlOAAAAAKrV3isPAAAAQNtslTm4rdunR5TfQr2KaXMA82JtbW2nbI2y78uzptvtlq6R57lt1AEAAICpI8AJAAAAtEWp4EYF27fOpAq2T4+U0v3ynQDMlU/KHGwL9fGllAQ4AQAAgKkjwAkAAAC0xXqZg9s6gbOKkJAAJ8BnlZ1MXBRF60KcFWyjvl1BGwAAAACVEuAEAAAA5t7e3t522RptncBZxTa9VWwXDDBPUkp3y9Zo2zbqFZyHr/X7/Y0qegEAAACoigAnAAAAMPeKoigd2Khg8tdMqmAL9UdV9AEwT4bD4U4FNSroZHZUcSNFt9u1jToAAAAwVdp55QEAAABolaIoSgc22rqFegUBodJT5gDmzebm5sOIeFCmhgDn+PI83y7fCQAAAEB1BDgBAACAuZdS2ipzfFu3T4+oZALn/QraAJhHO2UOzvO8ivfomZFlWembKVJK29V0AwAAAFANAU4AAACgDbbKHNzW6ZsRnwaEyiiK4n41nQDMnZ2yBcq+R8+aLCt9ScMW6gAAAMBUEeAEAAAA2qBUYKOCwMhMqiIYlGXZTvlOAOZPlmV3y9YYDAZVtDIzKpiIvd7v97cqaAUAAACgEu28+gAAAAC0zXqZg9s6gbOKrXlTSg8raAVg7qyurpYOcA6HwypamRkVBDij0+lsl+8EAAAAoBoCnAAAAMBc29vb2y5bo4rAyCyqYrJbFQElgDn2SZmD27aFehXn45SSbdQBAACAqSHACQAAAMy1oig2ytZo6wTOCjxougGAaVYUxU7J41sV4kwpRZaVu6xRFIUAJwAAADA1BDgBAACAuVZFUKNsWGRWVbA17/0K2gCYWykl26iPqYJz8s0q+gAAAACoQjuvPgAAAACtkWVZqQmcbQ1vRnw62a2MKoJJAPNsOBzulK3RpgmcEdWclx8/fmwKJwAAADAV2nsFAgAAAGiFshM427x9etlQUJ7nDytqBWAubW5uPoyIB2VqtG0CZ7fbLV1jOBxul+8EAAAAoDwBTgAAAGDebZU5uNPpVNTGbKlioluWZTvlOwGYe6WmFbctwFnFeTmlZAInAAAAMBUEOAEAAIB5d63pBmZR2e3TIyJSSiZwApyjKIpSAc4I26hfggAnAAAAMBUEOAEAAIC51e/3t8rWqGKr1llUxUS31dXV0qEkgHlXxbRiUzjH9kYVfQAAAACUJcAJAAAAzK1ut7tVtkZKqYJOZk8FEzgfVNEHwLxbW1vbKVujbQHOCiZwxt7e3nb5TgAAAADKEeAEAAAA5lae56W3SK0iJDKLKggD3a+gDYC2uFfm4LYFOKuYjl3FvxEAAAAAymrnFQgAAACgLTbKHNzW8GZF7jfdAMAMuVvm4DzPq+pjJlRxfk4pCXACAAAAjXMVAgAAAJhbZcMZbd0+PaL8NLeiKO5X0wnA/CuKolSAM6J9Uzg7nU7ZEtsVtAEAAABQigAnAAAAMM9M4LyEoihK10gplQ4jAbRFlmUCnGOqIMBDuRDzAAAgAElEQVR5rd/vl/p3AgAAAEBZ7bwKAQAAALTFzTIHt3UCZxVb8aaUHlbQCkArrK2t7ZStYRv18XW7XduoAwAAAI0S4AQAAAA4hQmcl1dFGAmgZe6VOdgEzvHleb5dvhMAAACAy2vnVQgAAABg7u3t7W2XrdHWAGfbQkAA0yCltFPmeBM4x5dSMoETAAAAaFQ7r0IAAAAAXEBbA5wV+KTpBgBmTVEUd8vWaFsAv4IpnAKcAAAAQKNchQAAAADmUhXboqaUKuhk9rQtAAQwDbIsE+AcUwUBzmv9fn+jil4AAAAALkOAEwAAAOAl2jx9syiKssfvVNMJQHusrq6WDnCWff+eNVWcq7vdrimcAAAAQGPaeyUCAAAAmGsppe2Sx1fUyezJ87zpFgDa6l6Zg03gHF8VE7sBAAAALkuAEwAAAOAlqgiFzKIqprdlWbZTvhOAVio1hbNtAc4qJnCmlEzgBAAAABojwAkAAADMq5tNNzCLTN8EaE5RFKW3UW/b+3gFN1wIcAIAAACNEeAEAAAAeAkTOC9vbW1tp3wnAO2TZVnpAGfbpnBWcL6+1u/3N6roBQAAAGBcApwAAADA3Nnb29suWyOlVEEns6dtwR+AaVJFAL5tEzir2Ea92+2awgkAAAA0QoATAAAA4CWqCIS01CdNNwAw4+6VObhtQfwqJmbneb5dvhMAAACA8bkSAQAAAMydKoIYJnAC0JD7ZQ42gXN8KaWt0kUAAAAALkGAEwAAAOAFpm9eXlEUO033ADDLiqK4W/L41oU4K5jCaQt1AAAAoBGuRgAAAABzJ6VUKojR1umbESZwAjQty7KdsjWKoqigk9lRQYDzjSr6AAAAABiXACcAAAAwjzbKHGwC5+VVETwCaLPBYFBqAuezGlW0MjOqOG/v7e1tl+8EAAAAYDyuRgAAAADzyATOSzB9E6B5m5ubDyPiUZkatlAfX57ntlEHAAAAJk6AEwAAAJhH62UONoHz8qqYHAdAlHovbVuAs4rzdkpJgBMAAACYOFcjAAAAgLny+PHj0gGMtgY4q5jA+WxyHAAlFEWxU+b4tgU4IyqZwrlVQRsAAAAAY2nn1QgAAABgbhVFsVG2Rlu3UC+KomyJB1X0AdB2KaX7ZWtUEcqfJRXcfHGzij4AAAAAxiHACQAAAMyVoii2ytZo6wTOCgKc9ytoA6D1siwrtYV6RPumcFZx7q5iijcAAADAONp5NQIAAACYW2UDnG2dvhlRSdjH9ukAFVhdXRXgHFMFW6hHnucCnAAAAMBECXACAAAAcyXLslJbqLd1+mZE+QmcRVGUDhwB8Ny9Mge3bQv1KgKcVUzxBgAAABhHe69IAAAAAHOpKArTsy7JBE6AqVIqFN+2CZwR5W/CSCltV9MJAAAAwMUIcAIAAACcUMUEr7bKsswEToCKFEVxv+TxpScrz5oKpmi7CQQAAACYKAFOAAAAYN7cbLqBWdS2rXYBpl2WZTtla7RtCmcFAc71fr+/VUErAAAAABciwAkAAABwQrfbbbqFmTUYDEzgBKjIYDC4X7ZG28L5VZzDu93uVvlOAAAAAC5GgBMAAACYG48fP7b16SVVMaVtc3PzYQWtABARm5ub98vWsIX6+PI83y7fCQAAAMDFCHACAAAAc6Moio2yNaoIf8yiCgKcD6roA4DP+KTMwW2bwJlSipRS2RpuBgEAAAAmpp1XJAAAAIC5VBTFVtkaZYMfLXa/6QYA5k1K6W6Z46uYrjxrKrgRY6uCNgAAAAAuRIATAAAAmBtlA5xtDm+2bUobwCzI8/x+meOLomjdNuqdTqdsiTeq6AMAAADgIgQ4AQAAgLmRZVmpLdTbun16FYqi2Gm6B4B5k2VZqQmcEe2bwlnFuXxvb2+7fCcAAADw/7N3P7Fx3mee4J/fWxWZiuRRUUocs6U0qV17084gFjvYSXZzWBHpU2YPNrsvC3QDMdDY02AmC+xhLgukD3tpYAcJejCnnUbn0I09JVQOnZw2S+8hmXiBhHIw8QR2VtRajGzZFqmRHDFR1fvbA0WK//SP70u+VfV+PoA7ZJHvy0eJm1Wq9/t+H3g8VyUAAACAsZFznm16hlHVtoAPwCjo9/uVA5xta1iuoYGzcqM3AAAAwJMS4AQAAAC4r47Qx6iqumI3pVQ5ZATATpOTk2sRcavKOdq2Qr2OBs6UkhtCAAAAgCMhwAkAAACME4GLA6gj3JNSWqthFAD2qhSQb1sDZ0T1EKdGbwAAAOCoCHACAAAA4+RUlYPb2sBZx/p0AU6Aw1G14biO3/GjpobncwFOAAAA4EgIcAIAAABjYXV1dabqOVJKNUzSTidPnrRCHeAQlGW5XOX4nHPr1qjX8Hx+anV1tVfHLAAAAACPIsAJAAAAjIVutztT9RxtDXC2cb0uwKgoiqJyQL5tLZzdbreOc2jhBAAAAA6dACcAAADAfUXRzrdKamhmu1zHHADs1e/3Kwc42xbUr+P5vCzLueqTAAAAADxaO69KAAAAAGNH0KJRa00PADCuJicnK/+ObeMK9aqt2imlmVqGAQAAAHgEAU4AAACAaG/7ZkT7mtkARtDrVQ5u4+/5Gp7XZ2oYAwAAAOCR2ntlAgAAABgrVZuyqjZ1tVnOebHpGQDG3HKVg9vWwBkR0el0qp7iYh1zAAAAADyKACcAAAAwLmaqHNzmAGcbgz0AoyTnvFzl+LIsa5pkdNTRrL26ujpTfRIAAACAhxPgBAAAAIh2r1CvIdizVsccAOyvKIrFqudo2xr1Op7XO53ObA2jAAAAADxUe69MAAAAAONGyKIhRVEsNT0DwDhLKVUOyretbbmGFeqRc/baAgAAADhUApwAAADAuDhV5eA6gh6jqI1rdQFGzcmTJysH5dvWwBlRvYUzpSTACQAAABwqAU4AAABg5K2urvaqniOlVMcoI6eORrZ+v6+BE+DwXa5ycNsaOCNqeW6fqWEMAAAAgIcS4AQAAABGXrfbrdyQ1dYAZx0mJycrr/YF4LEq/a5tY+NyDe3aF+qYAwAAAOBhBDgBAAAAovqa1VHVxpW6AKMo57xY5fg2/r6v47n9zp071qgDAAAAh6adVyYAAACAsZJznml6hlFVw0rdSit9AXgyKaXlqudo2xr1OgKcZVnOVJ8EAAAAYH8CnAAAAMDIqxrgbGv7Zk2sTwc4AnUEONu2Rr2GFeqRc9bACQAAABwaVycAAACA1kspNT1CY9q4UhdgFPX7/aWq52hbgDOi+k0aKSUBTgAAAODQCHACAAAAI0+4ojk558WmZwBog8nJycqNx20McNZwk8ZMDWMAAAAA7EuAEwAAABgHvSoH17FiFQCOwOtVDm5jgLOG5/gLdcwBAAAAsB8BTgAAAIAWs0IdYKQsVzk451zTGKOj6gr1iIjV1dWZ6pMAAAAA7CXACQAAAIyDi00P0FZFUSw2PQNAW+Scl6sc38bQfh0Bzm63O1N9EgAAAIC9BDgBAACA1ut2u02PAACPlVJaqnqOtrVw1rBCPcqynKs+CQAAAMBeApwAAAAALVWWZdMjAPAUUkprVc/Rxt/9VVs4U0oztQwCAAAAsIsAJwAAADDSbt++Pdf0DKOqjha2Z599drH6JAA8iTp+57YxwJlSqnqKmRrGAAAAANhDgBMAAABovTrWqwLAEblV5eA2BjhreJ6/WMccAAAAALsJcAIAAAC01GAwaHoEAJ7eUpWD2xjgrLpCPSJidXW1V8MoAAAAADsIcAIAAAAjrSzLuSrH17BWdWTVsEL9ch1zAPBU1qocXMPv/pFTR4Cz2+3O1jAKAAAAwA4CnAAAAECr1RHqaLFKISIAnl7OuVIDZxvbl+t4ri/LUoATAAAAqJ0rFAAAAAAAMCJSSstNzzBqUkp1NG5boQ4AAADUToATAAAAGGkppbmmZxhVNbSwLdcwBgBPoY4ApxbOp+f1BgAAAHAYBDgBAACAVut0Ok2PMLJyzstNzwDQNv1+v9IK9YiInHMdo4yUGtaoz9QwBgAAAMAOApwAAAAAADAiJicn16qeo40NnDWsUJ+uYw4AAACA7QQ4AQAAgFE32/QAo6qNAR6AMXG56QFGTbfbrXyOO3fueM0BAAAA1EqAEwAAABh1p6ocbIX6wRVFsdj0DAAtVamFs40B/hoaOCPn3KthFAAAAIAtApwAAABAq9UR6ACAo5RzXqx4fE2TjI6iqH45pCzLueqTAAAAADwgwAkAAACMrNXVVU1YB1SWZdMjANCQtj4HVA1xppRmahkEAAAA4D4BTgAAAGBkdbvd2arnaGsDZx3ta/1+f7n6JAA8raIoFqueo40hzhqe82dqGAMAAABgiwAnAAAA0Gp1rFRtq8nJyeWmZwDgYNq4Rr3T6VQ9ReUbRwAAAAC2c4UCAAAAAABGyLPPPrtY9RwaOA/kVB1zAAAAAGwS4AQAAABGVlmWmrAOaDAYND0CANXcqnJwGwOcNTRwxu3bt+eqTwIAAACwQYATAAAAGGW9KgfXEeQYVTWszn29jjkAOLClKge3cYV6DQ2ckXOu9NoDAAAAYDsBTgAAAAAAaJk2NnAWRfVLIjln7d8AAABAbQQ4AQAAAABgxOScFyseX9Mko6VqiLMoCg2cAAAAQG0EOAEAAICRlVKaq3h8TZOMnjY2rwGMmbUqB7f1eaDqc78GTgAAAKBOApwAAABAa9WxSnVUVW1eq9r8BkA1RVEsVT1HG1s4O51O1VPM1DAGAAAAQEQIcAIAAAAAQCu1sYWzhvbt6TrmAAAAAIgQ4AQAAAAAgJHz7LPPLlY9hwbOg7lz54416gAAAEAtBDgBAACAUXaxysFtXqHextY1AHYaDAZNj3DkamjgjJxzr4ZRAAAAAAQ4AQAAgPZqc4CzautaURSL9UwCQAWvNz3AqKnjub8sSw2cAAAAQC3ae5UCAAAAAABarI0NnBG1hDg1cAIAAAC1EOAEAAAAAIARlFJaanqGUVR1jXpKaa6eSQAAAIC2E+AEAAAARtKdO3cqry+tGuAYVWVZNj0CADUoy3KtyvFtbeDsdDpNjwAAAAAQEQKcAAAAwIjKOVdeX1rDCtWRlHOufI5+v6/1DaBhGjgbc7HpAQAAAIDx0M6rFAAAAABUMjk5Wan1DYDqUkqVfxe3sZVZAycAAAAwLAQ4AQAAAABgBPX7/eWq56ijlXnUpJQqn+P27dtz1ScBAAAA2k6AEwAAABhJdaxQB4BRNjk5uVz1HBo4D8brEAAAAKAOApwAAADASMo5z1Y5vija+7ZIv9+veopbdcwBQC0q/U5uY4CzDlVfhwAAAABECHACAAAALVXH+tQWW2p6AAC2+J18AHW0cAIAAABUJcAJAAAAAAAtNRgMmh5hJKWU5pqeAQAAABh9ApwAAAAAADCics6LTc8wijRwAgAAAMNAgBMAAAAAAFqqLMumRxhVF5seAAAAABh9ApwAAADASKq6urQo2vu2SA3rcpdrGAOAGqSUlqocn3Oua5SR0u12mx4BAAAAQIATAAAAaKeUUtMjjKyc83LTMwCwIaW0VvUcWjgP5vbt23NNzwAAAACMNgFOAAAAAAAYUXUEONvYwtnmJm4AAABgeHiHAgAAAAAARtTJkycrrVBvqzqauMuynK1hFAAAAKDFBDgBAAAAAKDF+v1+0yM0ooYWzl4dcwAAAADtJcAJAAAAjCqhiQMaDAaVjk8pLdczCQA1eb3pAUZR1RbOlNJMLYMAAAAArSXACQAAAIyqC1UO7nQ6dc3ROgKcAOMl59z0CI2ooYFzpoYxAAAAgBYT4AQAAABaqWrrFgAMkeUqB5dlWdMYo6WG1wLawAEAAIBKBDgBAAAAAGCE5ZyXm55hFNUQ4KzUBg4AAAAgwAkAAAAAAC02GAyaHqERnU6n6REAAACAlhPgBAAAAGiRnHPTIwBQs6IoFpueoa1u37491/QMAAAAwOgS4AQAAABokbIsK5+j3+8v1TAKAEOkjueHUaOBEwAAAGiaACcAAAAAT2VycnKt6RkAeCClVPn3sobmgynLcrbpGQAAAIDRJcAJAAAAjJzV1dWZqudIKdUwCQA07+TJk5qRD6goKl8m6dUxBwAAANBOApwAAADAyOl2uzNVz1FDYAMAxsZgMGh6hEZUvaGjKAoBTgAAAODAXKkAAAAAAIDRd7nKwW1doV41wJlztkIdAAAAODABTgAAAAAAGH1rTQ8wijRyAwAAAE3yzgQAAABAi/T7/aqnuFrHHAAMl7auUK/BTNMDAAAAAKNLgBMAAACAp7Hc9AAA7JVzXmx6hlHU6XSqnmK6jjkAAACAdhLgBAAAAACAlss5Nz1CI1JKTY8AAAAAtJgAJwAAAAAAjL61KgeXZVnXHK1z+/btuaZnAAAAAEaTACcAAAAAAIy4oiiWmp5hFNWwQh0AAADgwAQ4AQAAAACA1q5Rryrn3Gt6BgAAAGA0CXACAAAAAMCISylVWqEe0d416imlSsfnnGdrGgUAAABoGQFOAAAAgBYZDAZVT7FcwxgA1OzkyZNWqB9QUbhUAgAAADTDuxIAAAAAPLGc83LTMwBwOKxQP5iiKKxQBwAAAA5EgBMAAAAYOWVZVlpVqmkLgDF1q8rBNbQ0j6SqrwusUAcAAAAOytUKAAAAYBRVarpKKdU1BwAME2vUD8DrAgAAAKApApwAAAAAAAAHZ4U6AAAAcCACnAAAAAAAMB7WqhxshfqBXahjDgAAAKB9BDgBAAAAAGAM5JytUD+AGgKcAAAAAAfiXQkAAAAAAAAAAACAIybACQAAANAiOeemRwDg8FihfgAppcrnuH379lz1SQAAAIC2EeAEAAAAaJGyLCsdXxTFYj2TAFC3oiisUD8AK9QBAACApnhXAgAAAAAAAAAAAOCICXACAAAAAAARUb2pua1yzr2mZwAAAABGjwAnAAAAAACMgWeffXax6jlyzjVMMnqqrlHPOc/WNAoAAADQIgKcAAAAAABAq6WUmh4BAAAAaCEBTgAAAAAAICLa28AJAAAA0AQBTgAAAGDkpJSWqxxflmVNkwDA0Lla5eDBYFDXHK2SUpppegYAAABg9AhwAgAAACOnaoBTuxgAY2y56QFGUafTqXqKmRrGAAAAAFpGgBMAAAAAAAAAAADgiAlwAgAAAAAAERFRlmXTIwAAAAC0hgAnAAAAQEtYHQ8w/nLOixWPr2kSAAAAAB6n2/QAAAAAAByNOlrVnn322cXqkxythRvXZiPl3oFPkNNM5DRT1zxRxGyRK8zzhHJKM5Fj+rB/DkcgxdWU8/Jh/5gyiuWo9eekpSgGawc+PKe1+efOLdU3DzxcUVTuu7hYxxwAAABAuwhwAgAAAPDEFj54d27Pg2WnF5Fnn/gkKfeKiCf//o2DejniwtMds01OBz5048dXO3yHHJFrPeHDfw5jIsd0jnToYdwU+WK9/2rmiFwtFHfpxsqBjksRlyPyU4VHy4ilyOkpjnmKgGq3vzQ/ef7gYVYOXQ0BTgAAAICnJsAJAAAAwBNLufi/9nnwac8iWwgcqo3A99OlUVPEUwZYnyKgeu/YE4ZR060U5WNbR8uU1qKMfb/v+qD/3/xB9xNPNtc+BoPBgY8FAAAA4OkIcAIAAAAAwFDIp3Kkx67iTjkiUryy39feL+/FH8TBA5wAAAAAHB0BTgAAAGBo7Luee1NZbH3trd/fnfmjT0wc/kAAAAAAAACHRIATAAAAeKyF69dnotuf2fOFstOLyLP7HVOkPLff4zmlmcgxve8PetRe7W1rbe/m8hHfCADwdFJKj/+mx/gPNz/4H64P1t+LiIh+d3l+amq58kkBAACAsSbACQAAAGNgYfVKL/rdvUHKnGYip5k9j6c0U0S55/EcxWxEPrX3J5QRudj7cHp44jLHQ4IQjwppHqGyLKMo9vkzAcAIu1fDE+1gMIhOp1PDNKOjjtcEvysH/0fafL3UKePSjZW935Tiasp5effDZRTLsc/jEWkpisHa7kfnP/3ZxYrjAgAAAENAgBMAAACO2P5rwjuzUebejodS7hURe0KZ+4Ys7z3iB+6bo8wPCVgOSbryMVbLQeVz5Dwaf1YAeBp3Si3VQy3HdI60p4k8Rb74sNds+91Es284NNKtFOXS7kfLiKXIaWcINOXlSHsDo4KhAAAAcLQEOAEAAOAR9l0dvl+r5b6NlqmXIy7sOem+ucG8T9AyPSROKXgIAMBu+VSOdHH3oylin3Boish7E6P7BUNTxOWIvCMAum9j6H6hUKvkAQAA4JEEOAEAABg7exouy04vIu9sstwncJlTmokcuxqRHrY6fPcDD2u0BACA0bVxQ9LO17n7N4buEwrdb5X8Pmvk920J3Wd9vIZQAAAAxo0AJwAAAENh36bLspjb8fk+K8X3XSe+u6Ay7ddYuU/gUrElADAG+pGjW+HGkn6/H51Op8aJYJt91sjv3xK6d338gcKgRVqLGOxcLd/tL81Pnt8VGAUAAICjJ8AJAABAZXsaL6MzG2XubX26b/By93rHfZoun2iluNQlAMB2d8oyeoUAJi3wJGHQnCNi198z7h3bFQZNt1KUO0Kee4Kg+6yI1wgKAABAVQKcAAAALbdw49pspG1hyz3hy92rxlNvY43iNnsylHlX+HK/4CU0K2f/VgIAEBGRT+2+wWxvK+jeFfG7G0FTxOWIvBX6LKNYju0NobvbQHNam3/u3M52UAAAAFpFgBMAAGDE7Wm/3LV2vEh5x+d7my9j14XI3eHLfVaNwxC4k8s4mYrHf+NDDAaD6Ha9NQIAbOh0OjEYDA58fK/oxmp58OMZfRs3uj34u1OK/Ng20Mc2gea0uOOAotzxuRZQAACA0eYqBQAAQMMe14D52ADm7hLBXVlL4UvGVT/vDhsDAHXQUg1N2acJNMWuv/8V39z+6d4W0Pz65sdlSmtRxoNA6O4G0H53eX5qarmGwQEAADggAU4AAIAa7Alhbm/BTLlXRMxufppTmokc0ztO8IgGTAFMAACexu08iF50Dnx8WZY1TgMcpe0B0JQjIsUrD764qwG0U+4IgO5dAR9LkdPW5zvaP4U/AQAAaiHACQAAcN/C6pVe9LuzDx55eBPmY0OYOzKXaWdJpkIjAAAOUd/rTeAA9q6Aj10r4Le1fz4u/Ll99XvKy5Hy8tbn3f7S/OT5B8FQAACAFhPgBAAAxs7C9esz0e3PbD2wow0zzRRRbn0tRzEbkU9FRMS93Wd6RBOmi+Iw8qyHBQCAeuwJf+5Y/Z523vB479i28Ge6laLcWuu+o/Vz98p3wU8AAGAMCXACAABD65GNmLvXkm9bExdRRuRta+F2tGHmXSvJBbhgVFkPCwAAoy6f2rH2fXvr5+6V7wcMfs5/+rOLhzY+AABARQKcAADAkdjRill2ehH5QTCziNkibwQzd6wmf2QjZhK9hJazHhYADoeWamD4PXnwc/uq90hxNeWNde5lSmtRxtK2Ly5FMdgIgfa7y/NTU8uHNT0AAMAmAU4AAOCpPSqMWaQ8t/nxjvXk21sx064LwnnbenLXigEAoJK1sh8Rxw58vJZqYGzlmM6RpiPuvzWR4pXtX9x636JTPrztM6fFB8cIfQIAANUIcAIAQMvtWVNeFnObHx4kjGk9OTAqhFMAAIDH29X2meLitq89NvS5p+mzKBe3Pu72l+Ynz68d3uwAAMCwE+AEAIAxs6MdM6eZyGnj45Rmiig3Po7UyxEXImLvmvJt+UthTGCY3cmDSsdbDwsAAByOB6HPPU2fufjm1sf3jm2FPlPE5Yi8FhFRRrEc91e9R8rLke5/rOUTAADGjgAnAAAMuYUb12Yj5d7GZ53ZKO9/XMRskTc+fmg7ZsS2QGbeFcgEGG19AUwAAGBMbNxou/G+TYp88cFbOCki3/9ke8tniqvpfshzR8tnkdYiBhsf57Q2/9y5B+2fAADA0BHgBACAI7ajIfOJApnx4I36yA8CmXl7Q6YQE8BB5JwjJeF2ANjNcyTAkMsxnSNNR+xq+cw5Ih7c2LvvWncNnwAAMDQEOAEAoKKF1Su96HdnIyKi7PQi8sbH21aW55RmIsf0xhHbGzIFMgEO6l4NvyvLsoxOp1PDNAAwPG7nsvI5PEcCjJtta92ftuEzYilyWrv/haUoBhsfd/tL85Pn147qTwAAAONIgBMAAPbxsJbMIuW5ze/ZfNM77m07MG0PE21bWS6PCVC7O2X1cAoAjKN+9hcQACra3vAZsS3wmR/cmHzv2FbgM0V+PeIR69y1ewIAwL4EOAEAaI2FG9dmI91fV14WcxERkXKviNhozIzUyxEXNj7evyXzQUMmAOMgC7gAAABUttXu+bB17tvaPVPE5Yi8FhFR5rQYETvDnjmtzT93bukIxwcAgMYIcAIAMNIeF8rcubo8HqyE2rYmSnQHYHT1I0e3Qrh+MBhEt+vtEQAAgKOycQP1xt/jUoqNDTfbw54Rj17lrtkTAIAx4goFAABD5/Hry7c3ZcajQ5nSmQBj7U5ZRq/oND0GAAAAh2G/Ve4Hbfbs9pfmJ8+vHe0fAAAAHk2AEwCAI7PwwbtzERFRdnoReWNteRGzRd4IaG6uWrK+HICjYoU6AADAeHhss+e9Y9vCnvn1iIgyiuW43/AZkZaiGKxZ4Q4AwFES4AQAoJKF1Su96Hc3wpibbZkPW2G+mZFJ28IyWTATgIPrV6xaLsuypkkAYLjcyWWcTMXjv/Eh+v1+dDrtarl2YwdAe2zeSJ4iX3zw1mTeuql83xXuWj0BADgEApwAAOxrxxrzspiLiIiUZoooZyK2tWXe237UZlumFeYAHI3bZRmfOng2BQDGVj8/2GbAk6l6Y8da2a9pEgCGxvYV7o9s9Uy3UpRLERFlxFLktBHqLMrFiIjod5fnp6aWj3R2AABGggAnAEDLPHEwc/sa8213oWvLBGCcaOAEAACgunzqQatnPGj1zMU3IyKiUz56fbugJwBAawlwAgCMCfsLQmAAACAASURBVMFMANroTh5UOt6qVAAAAI7SvuvbnzboaXU7AMDYEOAEABhyC6tXetHvzm581pmNMvci5V4RMRsRkaOYjcinBDMBaKN+DQHMsiyjKOxhBwAAYHg8Muj5qNXtRVqLGCxFRMx/+rOLRz85AABPQ4ATAKBBCzeuzUbKvSg7vYg8GxFRpDwXEZFTmokc03Fv+xH5fjgzRd7+GAC01L0ange1cAIAADCa9lndnnNEbNykuNnmGSmuppyXy5TWooyl+w8uRTFYi5zW5p87t9TA8AAAhAAnAMCh2L81c7915hGRU0TaHsdMmx8AAI9xpywrn0OAEwAAgLGWYzpHmk45IlK8svng5kanh65t1+YJAHDoBDgBAJ7SwvXrM9Htz2xvzYwiZouce49uzbTOHACG0WAwiG7XWyQAjJe7uYxedA58/GAwqHGa4VfHn/eum0IAGHF71rY/aZtnUS5GRES/uzw/NbV8xGMDAIw0VycAALZ55ErzKGYj8qmIcuPO5G2tmZHvN2e6VgMAR26tHESvOHhABQDG0bow4ZFbz9WbwQFg6O3X5pmLb0ZERKe8H/RMt1KUSxERZU6LGwfeX9ku5AkAsIMAJwDQGlvhzJxmIqeZSLlXRMxGPOFKc+lMABhLbWsYAwAAgMOVT221eaa4/977/ZXtQp4AADsIcAIAY+GpwpkR91eaJ5FMABgDqxUbOLOGMgAAADhiQp4AABECnADACFi4fn0muv2ZR681D+FMAOBAytK6UwBoO43cADCMKoY8u/2l+cnza01MDgDwpAQ4AYBGLaxe6UW/OxsREWUxFxERRcwWOfcehDPLjTdkrDUHAPaxVvYj4lilc5RlGUVR1DMQADByqjZyr5UCoADQjEeEPO8d2wh5priacl4uU1qLMpYiIqIoFyMi5j/92cVGxgYAuE+AEwA4VHtXm6eZIsqZiNTLERfi3rZv3pbJ3AhoCmcCAEfDGnUAAAAYUzmmc6TplCMixSsbjxXfjIj7LZ4RKeJyRF4ro1iOnJcj3f8np7X5584tNTY7ADD2BDgBgAPbas/cd7V5urj1jTtWm+dt7ZkAANWt1tB4NRgMotPp1DANADCK3MwBAO2WIy5EpEiRL25cwkhb1zYeuqr9founVe0AQBUCnADAQz1xe+a+q80BAI5OP3J0K7wOEdoAgHYry7LS8bezFeoAMN72WdV+v8Vzc1X7Q1s8+93l+amp5cZGBwCGmgAnALTYwgfvzkVERFls/GcRs0XOvRzFbEQ+FRHaMwGAkXCnLKNXHLxBczAQugBgvPTDzQlHqe+/bgBovYe2eHbKHS2eZUprUcZSFGktYrBkTTsAtJsAJwCMqa315hFbAc096803Ly5sZjLzZoOmqw4AwGi5m8voxcEDnBo4ARg3d8pqNye07eaGqg2cAACPt9HimXJEpHglco6IIiI217RHpMivR+xd0z7/6c8uHvW0AMDREOAEgBG1FdAsO72IPBsp94qI2T3rzSO2ApraMwGAcbVeMYAptAEA7Vb1Zo47VqgDADV42Jr2PQHPiKXIaS0iLUUxWItuf2l+8vxaM1MDAFUIcALAkHrigGZ6UKOpNwoAaKu1sh8RxyqdYzAYRKdz8BbPUVAUReVzTBadWK3Y6gYAw6SOJu6+Nm8A4AhsBTwj7q9pzxG5iLh3LC7dWIkUcTkirwl4AsDoEOAEgIYIaAIA1OduDaGJsizHPsCZkkZ2ANitjibue961AQCGQI64EJGeOuBpRTsANEeAEwAO0cIH785FRERZzAloAgAcnvVcPXhhjToAtFMdDZx3vI4AAEbAwwKee1a057QYERFFuRg5rc0/d26poZEBYOwJcAJABQvXr89Etz8TOW38U8RskXMvRzEbkU/Fg2xmCGgCAByutXIQveLgDZqDgbXgANBGXgMAAGzYWtGe4uLGA8U3I+J+wDPdSlEulSmtRRlLkfJypLxsPTsAVGNvFgA8xsKNa7ORci+iMxtl7hUpz221aAIAcChurq/G27euxM31tbh253rc7a8/8vtf7J2PTxXd+NyJT8XZiTPxz06/8NQ/M6UUJ0+ePOjII+P27duVjv/5738bq6WgC0Cd7vbX482Pfhk31+u77j2RUkx1PhEREX9w/HScnTgTEfFUz5HHjh2rbZ5hNhgMKoU418pB/Oz3v32i773bX49rd67HO7euxEfrq1v/m698vPP1ztkTz8fXZv4kXj7z0oHnAgA4Slvr2XNajCKtRQyWot9dnp+aWm56NgAYZgKcABDbmjS3rTrPKc1EjummZwMAaIs3P3or3vzwl/HO/eBmVSe7x+OPnj0b/+QTG/+53fYgy3YTxyeiSAd/u+TciU/FuU9+6sDHH8R/vvfb+OXa//fE3//b397d+PMfP32gnyfACVCvn77/s/jer3/w2JsV6rT5HPml0y/EP5t8sdLzAnsDnCt3rsdv7//vefN3GyHNt9eubH38NP78c38aX/7MF2udFwDgqAl3AsDDCXAC0BoLq1d60e/OatIEABgOb69diZWPr8fba1finVtXjjS4clSe/cTx+Ke9P4x/8olPxudP/WGcO/Gp+Ownz2x83vvDJz7Ptd9+GNc+/jDe/e1Hce3jD+M/fPif4tbvfxtv3Xq38oybIZ7tvvSIdrbrg3uxnvOOx86enIrjnYk93/vJ7kScPTlVeUaAcfX3v/puvPH+z5seY8t/Pbnx+//sEQU6n+0ejz969tyOx/7on5yNZ7vHD/1nP6n/5+Y7sbL+Ufzm7s34T7dX4j/fuxu/Wb8Zv7l788hm+Ndf/BeeTwGAsbUj3GktOwAtJMAJwNhZuHFtNnIxE5FnI6WZIsqZHOli03MBALTJ5irYNz98a0cw8yDNU21x9pNn4rMnPlVbMHOYnZ7oxctnXoqvTf9JHO/uDX4CtMEPr/4ofnj1R02PMdT2u8ngKNzu341f3V458p/7MC+cOh//6sJfNj0GAMCRS5FfL6NYjpyXI9JSpHJ5/rlzS03PBQB1EuAEYCRttWnmNBM5zRQpz1l5DgAwHO721+NvLv/7WPn4vaZHYcgd707Ev/7iv4jTE5NNjwJwpG6ur8ZfvfFvmh6DEfJXX/qfPV8CANy3X2vn/Kc/u9j0XABwEN2mBwCAR9mx9jyXM0XEbI5iNu7lU1vflCLyxv8BAGAIfPfX/yi8yRO521+PH1z9UfzF5/6s6VEAjtTiyo+bHoERc+3j9wQ4AQDuyxEXIlKkFBc3LhSmuHRjJSLSrRTlUhmxFKlYjhgsWccOwLAT4ARgKDw+qJkjIt3PaEpqAgAMMyvSeRr+fQHa6NodNzrwdFbuXI+Xz7zU9BgAAEMun8qRLqaIi5FzRBQR947FpRu/EewEYGgJcAJw5BY+eHdOUBMAYHwd7040PQIADDXPlTytF06db3oEAIAR9gTBzoglq9gBaIIAJwCHZuHGtdnIxUxEni1SnsspzUSO6Y1cpqAmAMC4OndyKn7x0VtNj8GIOHfy+aZHADhyL/bOe64EAIDGbQt2RjxYxZ7iao5YijKWItJSpHJ5/rlzSw0PC8CYEuAEoLKt9edlMRcpzRSRZ3PEhYiISJsRzSSnCQAA7HG8e7zpEQCO3IvaFHlK505ONT0CAEB75JhOEdOR4pXNUppLN1YiRX69jGI5UixZww5AXQQ4AXgqe1o1t68/TxERWU4TAKDlTk/0mh6BEWKNMNBGZ09OxemJXtxcd62XJ+P5EgCgeRttnfli5Pj61hr2D1auppyXy5wWI9JSlGlpfmpquelZARgdApwAPNTCB+/ORU4zETFbRMzmSBvrA7a3aoprAgCwy+lnJpsegRFy9oRGMaCdXj7zUiyu/KTpMRgBbo4BABhiOaZzpOmU4mJEjujkbW2dsRT3/7GCHYCHEeAEICLuhzWjMxs5ZrdWoG/LZoppAgAAANRn7uxXBDh5Im6OAQAYPRttnXFx8/ONUGdcLiMtba5gn//0ZxcbHBGAISHACdBCDw9rbjZrAgDAwZ07qVGRJ3dGqxjQUqcnJuPsiedj5eP3mh6FIaeBEwBgPOSICynyhc0V7EKdAEQIcAKMPWFNAACO2vHuRNMjMEJOT2gVA9pr7txX4h9+9b2mx2DInfFcCQAwth4b6szlovXrAONNgBNgjCzcuDYbEbMRMVtEmhPWBAAAABheL5/5fHyv+4O4219vehSG2Fnt5gAArbIz1Jnuhzrz62XEUtz/R6gTYHwIcAKMqIXr12eiyLMRebZIeS5Hurj968KaAAA06fREL26urzU9BkPuhVPnmx4BoFHHuxPxhTMvxRvv/7zpURhiZ56xQh0AoO1ypIspYut68KUbv7mVolwqc1qMSEtx7HeL85PnvRkHMIIEOAFGxMIH785FWcxFEbMpYjZyOb35tRypwckAAGCv089MCnACwBN4+VOfF+DkkTRwAgCwVz6VI11MKS5G5Ih7x+LSBytXc8RSRFqMGCzNf/qzi01PCcDjCXACDKGF69dnojOYi92r0FOo1gQAAMbG6QmNYgAvn3lJczUPdfbE802PAADAqMgxnSKmI/IrEcXO1eu5WIwyLc1PTS03PSYAOwlwAgyBhQ/enYvozEbkuQftmhutmvKaAADAuDozMdn0CABD4eUzL8Xiyk+aHoMhdNpzJQAAFWytXk/5G9HJO1s6c7k4/9y5paZnBGg7AU6AI7aweqUXv39mLiLPFinP5UgXN1KaopoAAIyPF3vn451bV5oeAwBGwhfOfF6Ak32dsz4dAIA67WjpTA9aOnNajKJcjG5/aX7yvPUAAEdIgBPgkO1Zh34vLkTaCGvm+y2bAAAAbfTCqfNNjwAwFF7snY/j3Ym4219vehSGzOmJXtMjAAAw5nKkiynFxcjFN+Pesfj+jZXLZeTFyMViHPvdokAnwOES4ASo2YPAZjGXUp6zDh0AAACAx3nh1Pn4xUdvNT0GQ+b0M1aoAwBwtHLEhRTpQqT8jbh3bGPtek6LEeViDDqL81NTy03PCDBOBDgBKlq4cW02UjEXkedSTnMR5amNwGaW2AQAoLXOWvfJE7AWFuCBF3sCnOzluRIAgMblmE6Rvx6Rvh6dUqAToGYCnABPaW9gM5+KvJnUlNgEAICIiOOdiaZHYAQc7/r3BGDTi6fONz0CQ8hzJQAAQ0egE6BWApwAj7G1Ej2lVwU2AQAA6nF6otf0CABDRXs1u5098XzTIwAAwOMJdAJUIsAJsMtWYDOKuZTyXORyOiLdz2oKbAIAwJOw7pPHOf3MZNMjAAydF06dj3duXWl6DIbE8e7xpkcAAICn96hA5yfuXZqfPL/W9IgAw0SAE2i9hdUrvfj9M3ORyrmU0qtbgc3I8poAAHBA1n3yOBo4Afby/Ml2505q4AQAYAxsD3TeO/Z337+xcrmMvBi5WIxjv1sU6ATaToATaKWFD96di7KYK1K8mu/FhUg5HrRsAgAAdTjenYi7/fWmx2BInZnQwAmw27mTU/GLj95qegyGhAZOAADGUY64kCJdiJS/EfeOxfdvXHu9zGkxUr40/9y5pabnAzhqApxAKyxcvz4T3fxqRJ5LOc1FzqfkNQEA4HCdPTFlDSwPpWUOAB7NcyUAAG2QI11MKS5GpG9euvGbWznlxcj5Ugw6i/NTU8tNzwdw2AQ4gbG071r0rbSm2CYAAEDTzp6YanoEgKFz9qTfjTzguRIAgPbJp1KOVyLSK9Ep49IHK1dzzpciF4vzn/mDS01PB3AYBDiBsbFw49pspGKuyOWr+V66aC06AAA06/REL+JW01MAwOg43tG4CAAAsCXHdIr0jUj5G5durERO8f2ItBj9dEk7JzAuBDiBkfWgZTNeTSnPRY7pyDlypKZHAwAAIuLMxGTTIzDEzmmZA4BHerF3vukRAABgqGy0c+ZXopO/pZ0TGBcCnMBIWbh+fSa6+dWIPJfuxSsbLZuhZRMAgB1W7lyPax9fj5vra/HR+mrcXF/b8z2nJ3pxZmIyzp6cinMnno/TwoZwpI53tcwBwMN4ngQAgMfYr50z50sx6Cxq5wRGiQAnMPQWPnh3LnJ6NaX0auRyWlgTAIDt7vbX4+1bV+Kdtf83rt15L965deXJDty12vt4dyK+cOaleLF3Pl48dV6gswaCBwDwdD7puZP7zp7QVH1QN9dX46NtN3Cdmeh5bQ8A0AIb7ZzpleiU8f0bK5fLyIsR8Z35584tNT0bwKMIcAJDZ8dq9IhXI+dTEaFlEwCALSt3rsebH70Vb69defLA5mPc7a/HG+//PN54/+cREXH2xPPx8qc+Hy+feSnOWvV8IIIHPMzZE883PQLAUPKag03nTnqufJjNvwNcu3M97vbXY+Xjjf+s6uyJ5+N49/iex493J+Lc/f/fPHtyKo53Jqy3BwAYcjniQop0ISK+cenGb27liEuR45JV68AwEuAEhsLC9esz0RnMRUqv7liNDgAAsRHYfPvWla2LtXVcoH3sz/z4vVj5+L344dUfxemJXrx85qV4ofdfxMtnXjr0nw3jbr9wBADwgDDvTm9+9Fa8+eEv4xcfvXVofxdY+fi9h37tFx+9teex492JOHtiKs6dfD5OT0zG2RNTgp0AAEMpn0oRX48UX9+xav0T9y7NT55fe/zxAIdLgBNozML16zPRza8WOb+Wo7wQkbRsAgAQb69diZu/W42b62vx9tqV2hp1qri5vhaLKz+JxZWfRETEC6fOx4u98xp4AAA4FOc0mcfd/nr89P2fxeLKj+Pm+vBdV7/bX493bu3dCHD2xPNx9uRUnDs5FS+eOi+MCwAwZLZWrd879nffv7FyuUzpO9FPl+anppabng1oJwFO4Egt3Lg2GxGvpZRejVxOR5bZBABoo5vrq/HR+tr9Ns27ce3Oe0MR1HxS+12o3fTCqScPc56e6MWZick4PdGL089MCoLSGse7E02PAABD63h3otWhv7v99Vhc+XEsrvx4ZP5+sN1mk/8b7/9867HNG8A2/xMAgOGQIy6knL8Vnfyt799YuVzmuBQpX5p/7txS07MB7SHACRy6naHNmI4IqU0AgBa521+Pt29d2ViDvvbw4OO4eKo/3629D33hzEvx8qdeii9/5ov1DQVD5lyLQykA8DhPc0PQuPnh1R+NbHDzUXbfAPaFMy/Fi73z8fKZl+L0xGSDkwEAsClHXEgpLkSkb176YOVqzvlSRHxHmBM4bAKcwKEQ2gQAaLe7/fV486NfxpsfvhW/+OitpscZKb/4aOO/s+/9+gfx5c/8ccyd/YqLugAALdLGhsafvv+z+OHVHw3lqvTDsP01/9kTz8eXn/+iMCcAwDDJMZ0ifSMiviHMCRw2AU6gNkKbAADcXF+Nn77/87FszTlqG6sjfxKLKz+JL33mj+OfT3/VBV0AaIHTE73WhNjY34stauBsW3BzPysfvxff+/UPtsKcc+e+Ei+f+Xwc7040PRoAABHCnMChS00PAIy2fUObAAC0zs311fjB1R/FG+//vOlRxtooBjn/1f/9vzQ9AkPoX778l61sFwN4En9z+W93rFqmXY53J+KvvzLer5/u9tfjp+//LBZXftzq4OajHO9OxBfOvDRyr/0BAFolhTAnUAsNnMBT07QJAMCmu/31+O6v/1Fw84i88f7P4433fx5fm/5qzJ39ilYeAIAx88KYtm/e7a/Hmx/9Mt78cGN1OI92t7++9dr/hVPn42vTX3XzCwDAsNmvmXPQ+fb81NRy06MBo0WAE3giC9evz0RRvpaKeE1oEwCAjfXeP7YqvSE/vPqj+On7P4s//S//+3j5zEtNjwNP7ZPCxwCwr3Mnp5oeoTYrd67H27euxJsfvqVVtoJ3bl2Jf/vm38bpiV58bfqr1qsDAAyjzTBnp/zG92+sXC5T+k700yVhTuBJWKEOPNTC6pVe9J95rcj5tRxxoel5AAAYDj99/2fxvV//QHBzSLxw6nz8xef+dGhXK1qhzn7+5r/7X5seAWBo/f2vvqvdvMX+5ct/ObJNi5uBzbfXrsQ7t674+8Ih+tJn/jhe/tTn3cwFADDkUsTlMvK34xP3Ls1Pnl9reh5gOGngBPZYuHHttUjp1XQvXonIijYBAIiIiLfXrsT3fv2PsfLxe02Pwjbv3LoSf/XGv4mvTX81vjb91abH2eP0RC9urntvEgCe1JkhvSmDo3Fmotf0CE9s+1p0gc2jtble/fREL14+81J8+TNfjLNj1N4KADAucsSFFOnv4t6xv1v4YOX7UabvzH/mDy41PRcwXAQ4gYiIWPjg3bnInddSxKsR+ZTUJgAAm+721+OHV//PWFz5SdOj8Aiba9X//L/6s6FqbTr9zKQAJzucPfF80yMAwNAa1lb1TZuhzcVrP3Zj1xC4ub4Wiys/icWVn8TZE8/Hl5//Ynz5M1+0Yh0AYAilHK9Eyq9cuvGbWzniUkT57fnnzi01PRfQPAFOaLGF69dnoihfS0W8FjmmQ2oTAIBd3vzorfiHX31Xm86IuLm+Fv/2zb+NL5x5Kf7ic3/mwi1D6Xj3eNMjAAy1F04Nz40YHK1hvsnh5vpq/ODqj+KN93/e9Cg8xMrH78X3fv2D+N6vfxBf+swfxz+f/urQB4IBANopn0oRX49IX7/0wcrVHOnb0U+X5qemlpueDGiGACe0zMLqlV7c+8SrRcRrOcqLESG3CQDAHlo3R9svPnor/uqN/y3mzn6l8bXq504+H+/cutLoDAyXcyeHN5wCAE0axpsc7vbX47u//kfBzRGzuWJdkBMAYMjlmE6RvxWd/K2FD1a+Hzlfmn/u3HeaHgs4WgKc0BJbK9LvbaxIl9kEAOBhVu5cj//9l/9g7fWI2wjh/ije/PCX8T/+0z9v7KLtMAYRaJZ/JwAe7cWeBs62Oj3Ra3qEHRZXfhw/vPojbfwjbDPIOXf2v42vTf+Jhn4AgCGWcrwSkV65dOM337ZiHdpFgBPG2MLqlV70n3ktRf6frEgHAOBJ/PT9n8U//Op7TY9BjVY+fi/++mf/Lv78c38WL5956ch//rAFEWie1cAAj3e8OyE010JnhqQl8eb6avz9r76nRX2MLK78JN5euxJ/8bk/i7Mnp5oeBwCAR3qwYv37N1Yul5G/HZ+4d2l+8rzGBRhTRdMDAPVb+ODduYUbv/lOundsNeX8rY3wJgAAPNrf/+q7wptj6m5/Pf79f/yH+On7Pzvyn336meEIIjA8Pqn5CeCxzp4QsKIZiys/jr/+2b8T3hxDKx+/F3/z5t/Gmx+91fQoAAA8oRxxIcX/z94dxFZ55mmi/7/GAdMg2ZAOgdgRMBfUqh51QVdLU5reBM1dzb2L4J7ltIRbV3fXmqJXvblS6GVLcxU6t2dVVYojhWX4YJHOahLXXaSUSBMIUVXEkLRB8bHxcWEbCdonwfE7C5oUSYBgOOe855zv99t0qYsiTxJsn6PvOc8/vZ7ubF2pmvPT1dIXx0pnAtrPAicMCGubAAA8jTcvvxUfLl4oHYMOu1fQ/enzP+naX3PCwg/fYfUJ4Ic5c1xPJZfL19Zb8eblt+IT5b6Bdu+DXf/5j/6iq+8JAAB4einyichDJ84tNa7lSKdj+Mtpq5wwGCxwQp+ztgkAwNNS3qyXM5fPdnWJUwGF+5UspgD0Ex+AqKdSy+WNWwvx2se/UN6skTOXz0bj1kLpGAAAPIkc+1POr36zytmcO1o6EvB0FDihD1Urs2NVc27q3FLjaspD76XIJ0pnAgCgP8003lferKFulzgPjR7s2l+L3laqmALQb3wAgm65dOPTeO3SL6Nx+3rpKHTZa5d+GcutldIxAAB4CinyiRTpwvlm42LVnJuqVmZ9ehr6kAIn9JFqYeHA3bXNbVdTpNetbQIA8DQu3fg0zn7+T6VjUMiZy2fjUpdWlqwucs/hMWVegMcxvsMCJ533zrV34xe/ORNr663SUShgbb0VP//NmdIxAABogxxxJEV6Pd3ZdrVqzp2uFhYOlM4EPD4FTugD1eL88fPNuZm0ZWP27tpmHi2dCQCA/rbcWokzl98qHYPCzlx+qyunE52B5R5lXgDoDW9efiveufZu6RgU1rh9Pc5+/nbpGAAAtE0eTZF+lrZszFZLjXPV0hfHSicCfpgCJ/SoamV2rFqaP3luqXE1pVzlSC+VzgQAwOD4uaUd4u7qTjdOJx52Qp1/5YQ6wOOxWEynrK234u//xz/Gh4sXSkehR8w0fh1XVmdLxwAAoM1SjpdTHnrv3FLjqvPq0NsUOKHHfOtMes6vOpMOAEC7vXPt3Wjcvl46Bj3i3unEThZ6x3fui+3DIx37/ekf1lgB4OGWv+zsh2rW1lvx2se/8F6A7znzP9/yAT8AgEGVY7/z6tDbFDihR1RLXxyrlhrnnEkHAKCTrqzOOpXI9zRuX4/XPv5FR/8ah6xw1t724RFFXoBN8LOzfpZbqx37vRu3FuLvP/pH5U0eaLm1Gu9c+++lYwAA0FH3nVdvzk87rw69Q4ETCquac1Pnm42LKQ+9l3K8XDoPAACDa229FWf+51ulY9CjGrevx5uXO/fn48d/+KOO/d70h/Ed1jcBoITGrYV47dIvO1oQpf85pQ4AUB8p8omUh94735ybqRbnj5fOA3WnwAkFVCuzY9XS/MlzS42rKdLrOeJI6UwAAAy+tz5/20NbHunDxQsdK3EetiJWexM795aOANBXDo/52Vk3c7cW2v57Xrrxabx26ZfOY/NYzn7+dukIAAB0UY70Ukq5OrfUuFo156ZK54G6UuCELqpWZseqxcapdGfb1ZTzq5Fjf+lMAADUw6Ubn8aHixdKx6AP3Ctxtvsh/+6RXTG+Q4GvznaP7CodAaCvbB8eKR2BLmv3668PFj+KX/zmjPImj61x+3q8c+3d0jEAAOi2HPtTpNfPNedXq8XGqWpldqx0JKgTBU7ogmph4UDVnJ9Od7ZdTSleicijpTMBZwhDJQAAIABJREFUAFAfy62VONPB09gMng8XL8RrH/+i7Q/7f/yHf9zW34/+4oQ6wOb4vlk/jdvtW+A8+/nbceby2bb9ftTHO9fejUYH1mABAOgHeTSleCXd2XZVkRO6R4ETOuib4uaWjdkU+YTiJgAAJfzc6g5PoHH7ettLnD9+9kdt+73oPxM7FZEANuMPLHDWTjted62tt+LnvzkTM41ftyERddWJRX4AAPrJvSLn1pWqOT9dLSwcKJ0IBpkCJ3TA94ubAABQxtnP347G7eulY9CnGrevx6kP/2vbFnjGd+5zDramtg+P+HcPsEnjiu9s0nJrJV77+BfxyY1PS0ehzzVuX4+3Pn+7dAwAAHpAinwibdmYVeSEzlHghDZS3AQAoJd8sPiR5R2e2tp6K1679Mv2lTidg60l/94BnszuEdfqeDxXVmfj7z/6bz68Rdt8uHghPlj8qHQMAAB6hCIndI4CJ7RB1Zw7er45N6O4CQBAr2jcWoizn/9T6RgMiLX1Vvz9R/+tLQ9wD48dbEMi+o0CEsCT2b1tV+kI9IGZxvvx/136pZPXtN2Zy2fb9kEuAAAGgyIntJ8CJzyFbxY3I13IkV4qnQcAAO558/JbHuDSdmcun33qEqdzsPX07IgCEsCTmNi5t3QEetybl9/ywS066ue/PeO9JQAA36PICe2jwAlPwKl0AAB62TvX3nU6kY45c/lsnP387Sf+3z+7zRJjHR0atbwK8CS2D28vHYEetbbeir//H/8YHy5eKB2FAbfcWo03L79VOgYAAD1KkROengInbILiJgAAvW5tvRUzjfdLx2DAzTR+/cQPcS1w1tMfDI+UjgDQlxTgeZC19Va89vEvfGiLrvnkxqfeZwIA8EjfKnKuzPoUP2yCAic8hmpldqxqzp1W3AQAoNe99fnbztvRFR8uXnjiEud2Zb7aUdwFgPZo3FqIUx/+V+VNuu6da+/GcmuldAwAAHpcinwi3dl2tVpsnFLkhMejwAmPUK3MjlWLjVPpzrarKdLPSucBAIBHWW6tOKFIVz1piXN8hzJfnYzv2Fs6AkDfsmBcL7tHHv1sc7m1Eq9d+qUPbFHE2nor3rx8tnQMAAD6Qh5NKV65V+QsnQZ6nQInPETVnJtKd7ZdTSleicijpfMAAMAP+adr75aOQA19uHghzn7+dukY9DDrmwBPzvfQetm9bddD/7u19Vb8/DdnlDcp6rObs3HpxqelYwAA0DfuFjnPLTWuVs25qdJpoFcpcMJ3VEtfHDu31LiaIr2uuAkAQL+wvklJM41fxweLHz32r1/+0unFOplQPgKAx7K2vvbQ/+7nvznjbDo94czltxSJAQDYnBz7U6TXzzcbF6ulL46VjgO9RoET/lXVnDt6vjk3k/LQe5Fjf+k8AACwGdY3Ke3M5bNxZXX2B3/dpRufxnJrtQuJ6BXjOxQ4AeBxNG5ff2Ax7p1r78ZnN3/4dRZ0w9p6K9659t9LxwAAoA/liCMpD71XLTXOVQsLB0rngV6hwEntVSuzY1VzfjpFupAjvVQ6DwAAbJb1TXrFL3776LOejVsLcebyW11MRC84PHawdAQA6Btv3vdaaW29FWc/fzve8WEtesxM49fRuLVQOgYAAH0q5Xg5bdmYrZpzp6uV2bHSeaC0VDoAlFQtzZ9MOU45lQ4AQD87+/nbMdP4dekYEBER4zv2xv/9b/9z7B7Z9c3/b229FTON92Om8b5zizUzvmNv/O2f/XXpGAB97b/8//9P6Qh02e6Rsdi9bVc0bi947UTPOjR6MP7Lkf+rdAwAAPpeuplj4+Tknonp0kmglOHSAaCEaumLYymGpiNnp9IBAOhra+ut+MD6Jj2kcft6nPrw/43xHXtj+/D2iAgnP2tsfKfz6QCwWcut1VhurZaOAY/02c3ZuHTj0/jxsz8qHQUAgL6WR1Ok1883Gyc30sbJyedenCmdCLpNgZNaqRYWDsTwxumU4+XSWQAAoB0sGtKrGrevl45AD5hQ4AQAGFhnP39bgRMAgLbIEUdSHnqvas6/Ec98eXJy10GfaqM2hkoHgG6pFhun0pZ8UXkTAIBBce8sNUCvOjx6sHQEAAA6ZLm16j0pAABtlSKfSHe2Xa2W5k+WzgLdosDJwKuWvjh2bqlxNaV4JSKPls4DAADtYn0T6HVOqAMADLZ3rr3rfSkAAG2WR1POr55vNi5WzbmjpdNApylwMrCqldmxqjk/nfLQe5Fjf+k8AADQTtY3gV53yPomAMDA894UAIBOyRFHUqQLVXPudLUyO1Y6D3SKAicDqVqcP57ubLuaIp8onQUAADrB+ibQ6w6PKXACANTBTOP9WG6tlI4BAMCASpF+lta3XqwW54+XzgKdoMDJQKkWFg6cb87NpJQr59IBABhUy60VCydAz3M+HQCgHtbWW/FP194tHQMAgEGWY39KuaqWGuescTJoFDgZGNXS/Mm0JV/MkV4qnQUAADrpzctnrW8CPe+wE+oAALXx4eIFK5wAAHRcyvFyurPtqjVOBokCJ33vm9XNnF+1ugkAwKCbabwfn92cLR0D4JF2j4zF9uGR0jEABsLuEcMiQH948/LZ0hEAAKiFPGqNk0GiwElfs7oJAECdLLdW4h1n6YA+cMj6JkDb7N62q3QEgMfy2c3ZuLLqA4cAAHSHNU4GhQInfalamR2zugkAQN38/DdnnE4H+sLEzn2lIwAAUMDZz98uHQEAgFqxxkn/U+Ck71SL88fTnW1XrW4CAFAn71x7Nxq3r5eOAfBYxncocAK0y8TOvaUjADy2xu3r8cHiR6VjAABQM9+scS59cax0FtgsBU76RrUyO1Y156dTypXVTQAA6uTK6qzT6UBfOTzmhDpAu+wecUId6C/evwIAUEYeTXnovao5d9oaJ/1EgZO+UDXnjqb1rRdT5BOlswAAQDetrbfiF789UzoGwGMb32EpDqCdDo8qxQP9Zbm1GjON90vHAACgplKknw3d2TpTNeeOls4Cj0OBk55XLTZOpUgXIsf+0lkAAKDb3rz8Vqytt0rHAHhs1jcB2mt8577SEQA27Z1r73ovCwBAMTniSIqhmWpp/mTpLPBDFDjpWdXK7Nj55txMSvFK6SwAAFDCpRufxic3Pi0dA2BTDo39m9IRAAbOISucQJ9ZW29Z4QQAoLA8mnJ+tVpqnHNSnV6mwElPqpa+OJbubLuaI71UOgsAAJSwtt6KM5ffKh0DYNOc+gVoP+vGQD/6YPGj0hEAACBSjpfT+taLTqrTqxQ46TnV0vzJlIfei8ijpbMAAEApb33+tnNzQN8Z37E3tg+PlI4BMHAscAL9aLm1qsQJAEBvyLE/RbpQNeemSkeB71LgpGdUK7Nj1VLjXMr51dJZAACgpOXWSny4eKF0DIBNsxAH0BkTO/eVjgDwRN659m7pCAAA8I0U6fWqOT/tpDq9RIGTnlA1544O3dk6k3K8XDoLAACU9tbn/1Q6AsAT+ZNn/7h0BICBtH14JMZ37C0dA2DTllurcWV1tnQMAAD4Rop8YujO1plqYeFA6SwQocBJD6gW54+nGJrJEUdKZwEAgNKWWyvxyY1PS8cAeCIWOAE6Z9wKJ9CnZhrvl44AAADfkiOOpC35YrX0xbHSWUCBk6KqpfmTKeUqIo+WzgIAAL3Agy2gXx0aVd4E6CQleaBffXLj01hbb5WOAQAA35FHUx56r2rOTZVOQr0pcFJM1ZyfTjm/WjoHAAD0kkvWN4E+NbHTaV+ATtq9bVfpCABP7IPFj0pHAACAB0qRXq+a89Olc1BfCpx0XbUyO3a+2biYIp8onQUAAHrJpRufxnJrtXQMgCdyaOzflI4AMNAscAL97IPrCpwAAPSuFPnE+ebcTLUyO1Y6C/WjwElXVc25o0N3ts7kiCOlswAAQK+59Lvflo4A8MQmdljgBOi03SOeIwH9qXH7ejRuLZSOAQAAD5UjvTR0Z6sSJ12nwEnXVM25oymGlDcBAOAhPnE+Hehju0ec9gXoNGfUgX72XuP90hEAAOCRcsSRdGfb1ao5d7R0FupDgZOuqJpzUymGZiLyaOksAADQixq3FmJtvVU6BsATOTTqrC9AN0zstHYM9K8PFy943wsAQB/IoymGZpQ46RYFTjrubnkzva68CQAAD/fB4kelIwAA0OO2D28vHQHgqcxY4QQAoC/k0RTpQtWcmyqdhMGnwElH/b68CQAAPMol59OBPnZ4zAInAAA/bKbxvhVOAAD6Ror0uhInnabAScdUzflp5U0AAPhhy62VWG6tlo4BAECPOzSqMA/0t7X1lhVOAAD6ihInnabASUfcLW/mE6VzAABAP7C+CQAAQF1Y4QQAoN8ocdJJCpy0nfImAABszpXV2dIRAAAAoCuscAIA0I/uljjnp0vnYPAocNJWypsAALB5n1jgBAAAoEYUOAEA6Ecp8gklTtpNgZO2Ud4EAIDNs74JAMDjWv5ypXQEgLZYW2/FB4sflY4BAACbliKfqJbmT5bOweBQ4KQtlDcBAODJfHZTgRMAgMez3FotHQGgbd659m7pCAAA8ERSzq9Wzbmp0jkYDAqcPLVqaf6k8iYAADwZC5zAIJi7tVA6AgAAfWa5teo9MQAAfStFel2Jk3ZQ4OSpVM25qZTzq6VzAABAv7LACQyC5ZaTvgDdoOgEDBpn1AEA6GdKnLSDAidPrGrOTaVIr5fOAQAA/coDeGBQNG5fLx0BoBbW1tdKRwBoq09ufFo6AgAAPJUU6fVq6YtjpXPQvxQ4eSJVc+6o8iYAADydxm0nh4HB0XBGHaDjFOaBQbO23opLSpwAAPS5lLecq5pzR0vnoD8pcLJpd8ubQzOlcwAAQL+zwAkMkjmldICO8toRGFSfrf5z6QgAAPCU8miKoZlqZXasdBL6jwInm1KtzI4NRZqOyKOlswAAQL+zwAkMEsUigM7y2hEYVF5HAgAwGPLo0J2tSpxsmgInmzJ055lzOeJI6RwAADAIllurpSMAtM1nNz14B+ikuVsKnMBgaty+XjoCAAC0RY44Eutbp0vnoL8ocPLYqub8dI70UukcAAAwCCyMAINmubUay62V0jEABpaiPDDIGkrqAAAMiJTj5Wqxcap0DvqHAiePpWrOTaXIJ0rnAAAAAHrXFeUigI5Ybq1YbwcG2r+st0pHAACAtkkpXqkW54+XzkF/UODkB1XNuaMphk6XzgEAAAD0NuvCAJ0x57wwMODWvlbgBABgsKQU09XCwoHSOeh9Cpw8UrUyO5ZSOheRR0tnAQAAAHqb874AnfHZ6j+XjgDQUU6oAwAwePLo0JaNc6VT0PsUOHm09a3TkWN/6RgAAABA71turcZya6V0DICBM3fLAicAAAD0mxxxpGrOuXrMIylw8lBVc24q5Xi5dA4AAACgfzjzC9B+Fo4BAACgP6VIP6sW54+XzkHvUuDkgaqFhQMphjTAAQAAgE1x5hegva6sKm8CAABAP0sppquV2bHSOehNCpw80NCWr6cj8mjpHAAAMKgmdu4rHQGgI5z5BWivxu2F0hEAAACAp5JHY33rdOkU9CYFTr6nWmycypFeKp0DAAAG2fbhkdIRADrCmV+A9lpurZSOAAAAADyllOPlamn+ZOkc9B4FTr6lWlg4kFLyzQIAALpg94hrGcBgatyyFgfQLpaNAQAAYDCkHKecUue7FDj5FqfTAQCge3Zv21U6AkBH3PhytXQEgIHhhDoAAAAMCqfU+T4FTr5RNeemnE4HAIDuscAJDCoLnADts7beKh0BAAAAaJO7p9S/OFY6B71DgZOIiKhWZsdSDJ0unQMAAOrk2RELnAAAPJxCPAAAAAyeFEPTpTPQOxQ4uevOM6ecTgcAAADa4crqbOkIAAPhX6xvAgAAwODJsb9abJwqHYPeoMBJVAsLB1Kkn5XOAQAAdXNo9GDpCAAdsba+VjoCAAAAAEDPSimdrFZmx0rnoDwFTiKGN5xOBwAAANqmcft66QgAAAAAAD0sj8adbTpbKHDWXbX0xbGU4+XSOQAAAIDB0ri1UDoCAAAAAEDPSpFPVAsLB0rnoCwFzpobyulU6QwAAADA4Lnx5WrpCAB9b2LnvtIRAAAAgE7akk+VjkBZCpw1Vi19cSxHeql0DgAAAGDwWOAEeHrbh0dKRwAAAAA6yAonCpw1Zn0TAAAA6JQ5BU4AAB7TjdZK6QgAAFCOFc5aU+Csqao5d9T6JgAAlPXZzdnSEQA6pnFbgROgHQ6NHiwdAaDjllurpSMAAEAxVjjrTYGztoZOlk4AAAB1Z2EEGGTLrdVYW2+VjgEAAAAA0Pu2fK3LVVMKnDVUrcyOpcgnSucAAIC6azgvDAw4Z9QBnt7Ezr2lIwB0nAsVAADUXYqhqWpldqx0DrpPgbOOvtqqsQ0AAIWtrbeicft66RgAHeVBPMDT2z68vXQEAAAAoOPyaNx55njpFHSfAmcNpaGYKp0BAADq7opSE1ADFjgBnt74zn2lIwB0xZVV75MBAKi3oUhG+WpIgbNmqsX545Fjf+kcAABQd5d+99vSEQA6rnFbgRPgaW3fMlI6AkBXrH3dKh0BAACKyhFHqubc0dI56C4FzrpJYWoXAAB6gLPCQB0st1Zjbd2DeAAAfljDejsAAESEy8p1o8BZMykUOAEAoLTGrYVYbq2WjgHQFc6oAzydw2MHS0cA6IobrZXSEQAAoLiUkm5XzShw1ki1OH88Io+WzgEAAHX3weJHpSMAdI0z6gAAPA4fdAQAgIjIsd8Z9XpR4KwT59MBAKAnXFl1Ph2oDwucAAA8Dh/8AQCAb0yVDkD3KHDWiPPpAABQ3nJrJRq3r5eOAdA1lpQAAHgca+ut0hEAAKAnOKNeLwqcNXF3Wtf5dAAAKO3KTeubQL185vseAACPqWG9HQAA7p5RX1g4UDoG3aHAWRdZMxsAAHqB8+lAHS23VkpHAOhbykxAnfyLFU4AALhrOOt61YQCZ00MpXysdAYAAMApYaCebvjeB/DElJkAAACgjnS96kKBsyZypJdKZwAAAJwSBuqpcdt6HMCT8voRqBOvGwEA4K6U07HSGegOBc4aqJpzR0tnAAAAItasJwE15fsfwJObc0IdqBGvGwEA4J48Wi0sHCidgs5T4KyDNHSsdAQAAMDDdwAANs8CJwAAANTUUDbaVwMKnHWQNw6UjgAAAADU143WSukIAH2pcWvBGh0AAADUlgJnHShw1sBQhC9mAAAAoJjl1mrpCAB96Yr1TaBmdo+MlY4AAAC9Y0jnqw4UOGsgx5AvZgAA6AETO/eVjgAAQB/54PpHpSMAdNXubbtKRwAAgJ4xlONA6Qx0ngJnLeTR0gkAAICI7cMjpSMAANAn1tZb0bh9vXQMAAAAoJAccaR0BjpPgXPAVUtfHCudAQAAAACAzbl047elIwB03bNOqAMAwLdUK7NeJA84BU4AAIAu2u1hFAAAj+GD6xdKRwDout0jTqgDAMC3rA8fLR2BzlLgHHQ5HSgdAQAA+L3d2zyMAgDg0ZZbK/HZzdnSMQC6anzH3tIRAAAAuk6Bc9ApcAIAAAAA9JVLNz4tHQGg67YPby8dAQAAeo/u18BT4AQAAOiiw2MHS0cAAKDHfXD9o9IRALrO+2UAAHgABc6Bp8AJAAAAAAA9Yrm1Eo3b10vHAOi63SNjpSMAAAB0nQInAABAFx0atSgCAMDDOZ8O1NXubbtKRwAAAOg6BU4AAAAAAOgRzqcDdeWEOgAAUEcKnAAAAF3kgRRQR8tfrpSOANAXnE8H6mp8x97SEQAAAIpQ4AQAAOiy7cMjpSMAdNVya7V0BIC+4Hw6UFfjO/eVjgAAAFCEAicAAECXje/wYAoAgO+7sjpbOgJAERMKnAAAQE0pcAIAAHTZ7pGx0hEAum655Yw6wA/57KYCJ1BPPugIAADUlQInAABAlz07sqt0BICuu+GMOsAjLbdWYm29VToGQBGHxw6WjgAAAL1paGOmdAQ6S4Fz0PkiBgCAnnNo1IMpoH6sygE82tzt66UjABQxvmNv6QgAAADFKHACAAB02bNOqAM1NHdroXQEgJ7W8H0SqKnxnc6nAwDAQ+XktNGAU+AcdOvDV0tHAAAAvm23E+pADTVuKyYBPMqVVUvFQD1NKHACAMBDTe6ZuFg6A52lwDngJvftu1o6AwAA8H3OqAN1s9xajeXWSukYAD1L0R2oq/EdCpwAAPBg6WbpBHSeAmcNpIiPS2cAAAC+bWLn3tIRALruyk3rcgAP0ri1EGvrrdIxAIo4POYDjgAA8CApNqxv1oACZw1spLhaOgMAAPBt407EATV06Xeflo4A0JPmrG8CNbV7ZKx0BAAA6FkbEQqcNaDAWQcbvpgBAKDX/PjZPy4dAaDrPrPACfBAV1Z9fwTqafe2XaUjAABA70pDV0tHoPMUOOtgaGOmdAQAAODbtg+PxJ88+6PSMQC6am29FZduWOEE+C4Fd6CunE8HAIBH+dpoXw0ocNbB8LovZgAA6EE/3fuT0hEAuu7S735bOgJAT1lurcRya7V0DIAinFAHAICHm3zuxZnSGeg8Bc4amNx1cDVSXCudAwAA+LYfP/sjD6uA2vnEAifAt1gmBurMCXUAAHiwFPlXpTPQHQqcNZFzmimdAQAA+L7/uP8/lI4A0FXOqAN825VV59OB+prYua90BAAA6EkbES4u14QCZ21szJROAAAAfN9Pn/9JjO/YWzoGQFc5ow7we5/dVOAE6mn78EhsHx4pHQMAAHpTyudKR6A7FDjr4pk7vqgBAKBH/cX/9n+WjgDQVR8uXoi19VbpGADFXVmd9f0QqK3xHdY3AQDgYSafe3GmdAa6Q4GzJiZ3HVxNER+XzgEAAHzf4bGDcWj0YOkYAF116YYVToBPfC8Eamxip2sUAADwIDnF+dIZ6B4FzhrZSGm6dAYAAODB/vKP/qJ0BICumpl7v3QEgOKurDqfDtTX7pFdpSMAAEBvys6n14kCZ52sJ1/cAADQo3aP7Ipj4/++dAyArmncvh7LrZXSMQCKWVtvReP29dIxAIpxQh0AAB7imTs6XjWiwFkjk/v2XXVGHQAAetd/3P+/x/bhkdIxALrmg8ULpSMAFHPJ+XSg5g6PHSwdAQAAek5OcX5y18HV0jnoHgXOmnFGHQAAetf24ZE4Nv7npWMAdM0Hix+VjgBQjPPpQJ2N79hbOgIAAPQm59NrR4Gzboa/nC4dAQAAeLhj439uhROojeXWqjPqQG19dlOBE6iv8Z3OpwMAwPelm86n148CZ81M7jq4miO9UToHAADwYFY4gbq5dOPT0hEAum65tRLLLdfQgPqaUOAEAIDvyRHnnE+vHwXOOkpfT5eOAAAAPJwCJ1AnTggDdXRDeROoucOjB0tHAACAHrRxunQCuk+Bs4Ymn3txJlJcK50DAAB4sO3DI/Hvnv/T0jEAumJtvVU6AgAAXbR9eMQJdQAA+I4U+VeTeyYuls5B9ylw1lTO+VTpDAAAwMMdHrNGAtSD73dAHR0eOxjjO/aWjgFQxJ88+6PSEQAAoOds5CHrmzWlwFlTk3smpiPSzdI5AACAB/vxs39cOgJAV/zU4jBQU3/5R/+ptiXO8R17Y/fIWOkYQCE+wAMAAN+R4trk8y+cKx2DMoZLB6CcnPPplOKV0jkAAIDv2z48ErtHxmK5tdrRv86h0fY+OGvcXnAOmZ6xfXgkxnc8/DTj2vpaNG5f72IivuvY+L+P3SO7SscAKGJ857742z/765hpvB8zjfc3/bpv98hY7N727e+hEzv3xvbh7d/7tVdWZyOi+6/VxnfsjR//4R/HodGDMbFzX2wfHnnkr7+X87Obs3GjtRKNWwt+VrfBD70mirj7z5z2u/fPfvfIWDz7iNc8N1orsdxajeUvVzr+HrC0f/f8n8ZPn/9J6RgAANBTXFKut1Q6AOVUK7Nj6c62qxF5tHQWAADg+z5Y/CjOXD77yF9z78H9vQeC4zv3xfYtI/HsyFjRUlTj1kLc+HI1GrcW4srqbNvLAuM7fl9OeNz1lnsPRSMUTQfRodGDd8/R7twXz24bi/Gdjy4pfNe9P6dztxZ6uixy/5/9+20fHomJ+/6e19bXYu7W7/8eerGUMb5jb/ztn/116RgAPWO5tRI3HlHc+oPhkU3/fHuQtfVWXLk5G5d+99v45ManbX9NtH14JP7k2R/F/7H/P7Tt9Wjj1kL8y3rrWz/P7pU9H6QOJbiHGd+x95vXRBM79m3qz8zaeivmbi3EZzdnv/m/XjNv3viOvfHTvT+Jw6MHn+hr9v5/D514L1XC7pGxODR6MH76/E+sbwIAwHeluHb8ufEDpWNQjgJnzVWLjVNWOAEAoHfde1h9v9LlzCd1r5Rw/wPI+0uV9/vuQ717S6GPs9y0Gff++a593YrGrYWH/rrvluEierMQN8i+uxx1eOxg7B4Z23QxYTPuf2A+d2tzD86/W6h80Erao7SrpHO/5dZKzN2+Hp+t/vO//r2VK6n+ybM/ir/8o//U1q9nADZvbb0Vl278Nmbm3n/qnwvbh0fi2Pifx7HxP++Z7+/3fvZ16kNFJd17bXHvNcfjrpxu1pXV2W8KncutlZ79kEtp99Zmf/r8n3bkvdqD3kvd70Hvqzr9fuXe6/PDYwcfuvKqrAkAAD8sR/6ryT0T06VzUI4CZ81VK7NjaX3rxcixv3QWAACAfnOv2Ne4ffeB9tyt610pBjxshfG7vntG9d5C62bc/+D3/hLjkzwQvv/B7r2Hub2yGltHy62VuPKvy07LrdWnfsj/oD+XDzrle28tFYDestxaiQ8WL3xT2Hsc24dH4tDowfjxH/6ob04if7cI96AP6jzR7/uI1c+Hldvu/zl57wNLEZ35IEe7PWoB9Z4HLaaura+1rQT6uK+JO+Fecfbu0unenn4de2V19ps/n/f/582492d4YufeGN+5Lw6PHuzpv2cAAOgb1jfuIEWEAAAdZElEQVQJBU4iomrOTaVIr5fOAQAAMEgetJ76OPrhgT2D7XEKGRH9uwYMwOO591rmu2Wve8uPfg7QToN0eaCf/NB7Fv8OAACgs3JOk5PPv3CudA7KUuAkIiLONxsXc8SR0jkAAAAAAAAAAAAGWYr8q5f3TBwrnYPyhkoHoDdspI2TpTMAAAAAAAAAAAAMuo0IXS0iQoGTfzX53IszOcX50jkAAAAAAAAAAAAGVY78D5N7Ji6WzkFvUODk94a/mopIN0vHAAAAAAAAAAAAGDzpZjxz51TpFPQOBU6+Mbnr4GpOcap0DgAAAAAAAAAAgEGTc0xN7jq4WjoHvSOVDkDvOd+cm8mRXiqdAwAAAAAAAAAAYBDkFOcnnxs/XjoHvcUCJ9+z8fWWKafUAQAAAAAAAAAA2iHdjOGvpkqnoPcocPI9k/v2XXVKHQAAAAAAAAAA4Ok5nc7DOKHOQzmlDgAAAAAAAAAA8ORypDcm97wwVToHvckCJw+18cyd406pAwAAAAAAAAAAPIEU1+KZL0+WjkHvUuDkoSZ3HVzN6evjpXMAAAAAAAAAAAD0m5zzcafTeRQFTh5p8rkXZ3KOvyudAwAAAAAAAAAAoF/klP5mcs/ExdI56G2pdAD6w/nm3EyO9FLpHAAAAAAAAAAAAL0sR3pjcs8LU6Vz0PsscPJYNp65czxSXCudAwAAAAAAAAAAoFeliI/jmS9Pls5Bf7DAyWOrmnNHUwzNROTR0lkAAAAAAAAAAAB6S7qZv05HJ/ftu1o6Cf3BAiePbXLPxMUcG9rhAAAAAAAAAAAA35HT18eVN9kMBU42ZXLPxHRO6W9K5wAAAAAAAAAAAOgVOfJfTT734kzpHPQXBU42bfK5F07nSG+UzgEAAAAAAAAAAFBajvwPk3smpkvnoP+k0gHoX9VS41zK8XLpHAAAAAAAAAAAACXkSG9M7nlhqnQO+pMFTp7c8FdTKeLj0jEAAAAAAAAAAAC6LUX+lfImT0OBkyc2uevg6sYzXx1T4gQAAAAAAAAAAOokRXy88cyd46Vz0N+cUOepVSuzY0N3ts7kiCOlswAAAAAAAAAAAHTS3fLmV8cmdx1cLZ2F/qbASVtUzbmjKYZmIvJo6SwAAAAAAAAAAACdoLxJOylw0jZKnAAAAAAAAAAAwKBS3qTdFDhpKyVOAAAAAAAAAABg0Chv0gkKnLSdEicAAAAAAAAAADAolDfplKHSARg8k3smLubYOBYprpXOAgAAAAAAAAAA8KSUN+kkC5x0TLUyOzZ0Z+tMjjhSOgsAAAAAAAAAAMBmKG/SaQqcdJQSJwAAAAAAAAAA0G+UN+kGJ9TpqMldB1c3nvnqWIr4uHQWAAAAAAAAAACAH5IjvaG8STdY4KRrqub8dIp8onQOAAAAAAAAAACAB8mR3pjc88JU6RzUgwVOumZyzwtTOfI/lM4BAAAAAAAAAADwXTmlv1HepJsscNJ1VXNuKkV6vXQOAAAAAAAAAACAiIgc+a8m90xMl85BvShwUkS19MWxlLeci8ijpbMAAAAAAAAAAAB1lW7m2Dg2uWfiYukk1I8T6hQx+dyLMzk2jkWKa6WzAAAAAAAAAAAA9ZMiPs5fp6PKm5SiwEkxk3smLubhr46myL8qnQUAAAAAAAAAAKiPnOL8xjNfHZvct+9q6SzUlxPq9ISqOXc6RfpZ6RwAAAAAAAAAAMBgyzn+bvL58VOlc4ACJz2jas5NpRg6HZFHS2cBAAAAAAAAAAAGTbqZc0xNPv/CudJJIEKBkx5TNeeOppTORY79pbMAAAAAAAAAAACDIUV8vBF5anLPxMXSWeCeodIB4H6TeyYu5uGvjuYU50tnAQAAAAAAAAAA+l+O9MbGM18dU96k11jgpGdVS/MnU86vls4BAAAAAAAAAAD0o3Qzx8bJyT0T06WTwIMocNLTnFQHAAAAAAAAAAA2y8l0+oET6vQ0J9UBAAAAAAAAAIDNcDKdfmGBk75RNeemUgydjsijpbMAAAAAAAAAAAC9Jt3MOaYmn3/hXOkk8DgUOOkr1cLCgaEtG+dyxJHSWQAAAAAAAAAAgN6QIv9q4+stU5P79l0tnQUelwInfalabJxKKV4pnQMAAAAAAAAAACgrp/Q3k8+9cLp0DtgsBU76VtWcOzoUadoaJwAAAAAAAAAA1E+K+Hgj8tTknomLpbPAk1DgpK9VK7NjceeZUynSz0pnAQAAAAAAAAAAuiPn+LvJ58dPlc4BT0OBk4FQLX1xLMXQdOTYXzoLAAAAAAAAAADQGVY3GSQKnAyUarFxKqV4pXQOAAAAAAAAAACgvaxuMmgUOBk4VXPu6FCk6RxxpHQWAAAAAAAAAADg6aTIv9r4esvU5L59V0tngXZS4GRgVUvzJ1OOUxF5tHQWAAAAAAAAAABgs9LNnOLU5HMvnC6dBDpBgZOBVi0sHBja8vV0jvRS6SwAAAAAAAAAAMDjySnOx/BXU5O7Dq6WzgKdosBJLVSL88fTUD4dOfaXzgIAAAAAAAAAADxEims5NqYmn3txpnQU6DQFTmqjWpkdi6+2nkwpXimdBQAAAAAAAAAAuF+6mXM+Pfn8+KnSSaBbFDipHWfVAQAAAAAAAACgd+QU52N96OTkvn1XS2eBblLgpLacVQcAAAAAAAAAgIKcS6fmFDiptd+fVU8nI/Jo6TwAAAAAAAAAADD40s2c4tTkcy+cLp0ESlLghLh7Vj225FMp8onSWQAAAAAAAAAAYFDlyP8Qz9w5Nbnr4GrpLFCaAifcp1r64thQTqdypJdKZwEAAAAAAAAAgEGRIv9q4+stU5P79l0tnQV6hQInPEC1OH88DeXTkWN/6SwAAAAAAAAAANCvUsTHG2nj5ORzL86UzgK9RoETHqFqzk2lGDodkUdLZwEAAAAAAAAAgL6R4lrO+dTknonp0lGgVylwwg+oVmbH4qutJ1NKJxU5AQAAAAAAAADgUdLNnPPpyefHT5VOAr1OgRMe0++LnPFK6SwAAAAAAAAAANBb7hY3Y+tXpyd3HVwtnQb6gQInbFK1sHAgtuRTKfKJ0lkAAAAAAAAAAKC0nOPvFDdh8xQ44QkpcgIAAAAAAAAAUGc50hvxdTo1uW/f1dJZoB8pcMJTUuQEAAAAAAAAAKBOFDehPRQ4oU0UOQEAAAAAAAAAGGSKm9BeCpzQZoqcAAAAAAAAAAAMEsVN6AwFTugQRU4AAAAAAAAAAPpXupkjziluQucocEKH3S1yfn0yxdBURB4tnQcAAAAAAAAAAB4u3cw5n46tX52e3HVwtXQaGGQKnNAl1crsWHy19WRK6aQiJwAAAAAAAAAAvUVxE7pNgRO6rFqZHYv1bVMp8snIsb90HgAAAAAAAAAAaizFtZzzqck9E9Olo0DdKHBCQVVzbmoo0skccaR0FgAAAAAAAAAA6iNF/tVGxLTiJpSjwAk9oFr64thQTqdypJdKZwEAAAAAAAAAYHDlFOcjNk5PPvfiTOksUHcKnNBDqoWFA7Eln0qRT5TOAgAAAAAAAADAoEg3c8S5+Dqdmty372rpNMBdCpzQg6qV2bH4auvJNBRTkWN/6TwAAAAAAAAAAPShFNdypNMx/OX05K6Dq6XjAN+mwAk9rmrOTQ1FTDmvDgAAAAAAAADA40iRf7WRh05PPv/CudJZgIdT4IQ+UTXnjkYMnXReHQAAAAAAAACA73MmHfqNAif0GefVAQAAAAAAAAD4hjPp0LcUOKGPVYvzx2MoT6UcL5fOAgAAAAAAAABA9+QU5yM2Tk8+9+JM6SzAk1HghAFQLSwciC1fn0wxNBWRR0vnAQAAAAAAAACgA1JcyxsxHRtD086kQ/9T4IQBUzXnpoYipnKkl0pnAQAAAAAAAADg6eUU52MjTU8+/8K50lmA9lHghAH1zSpnSscjx/7SeQAAAAAAAAAA2ARrmzDwFDihBqrF+eMxlKdSjpdLZwEAAAAAAAAA4OFypDcixzlrmzD4FDihRqqFhQMxnI+nyCetcgIAAAAAAAAA9IYU8fFGStMx/OX05K6Dq6XzAN2hwAk1VTXnjkYMnUwRxyPyaOk8AAAAAAAAAAD1km7m2JiOiOnJPRMXS6cBuk+BE4iqOTcVKR13Yh0AAAAAAAAAoLNyivOxkaadSAcUOIFv3DuxPpTzVI44UjoPAAAAAAAAAMAgcCIdeBAFTuCB7p5Yj6mU0vHIsb90HgAAAAAAAACAvpL+V3t3l9tUmrVh+Hl3Ut2HmAMopQTCjADPAM+g4xn00OobgdMzMDMwI8ARqKOGA8xhdzn7/Q7yQwIOCSHJ9s91SZbsbRPWAG6tlcPa5s+0zZ+jvb1Z1+MAq0fACVxr/On9MHXnnyXZT+qjrucBAAAAAAAAAFhN5UtN+2eSP0dPn027ngZYbQJO4KeM//Pv/ZTsizkBAAAAAAAAAJKTaDMHqTkY/f7HQdfTAOtDwAncyvjzu17++m0/peyXmn90PQ8AAAAAAAAAwEOqKf8n2gR+hYAT+GViTgAAAAAAAABgG9SSf6XWg/z218Ho8ct51/MA603ACdwpMScAAAAAAAAAsElEm8B9EXAC90bMCQAAAAAAAACsn/KlljoRbQL3TcAJPIjzmDPNsCT7SX3U9UwAAAAAAAAAACfKl5ocpOZg9PsfB11PA2wHASfQifF//r2fkn0xJwAAAAAAAADQiZLDWstEtAl0RcAJdG786f0wteyXUvZT86LreQAAAAAAAACADVVyWGs9SPLn6OmzadfjANtNwAmslPHHD4OUZtjU+s+avOp6HgAAAAAAAABgvZXkbVvKn1mUg9He3qzreQDOCDiBlTU+Oupn53iYUvZLzT+6ngcAAAAAAAAAWAflSy11kloP8ttfB6PHL+ddTwSwjIATWBvj//x7PyX7pdShU+sAAAAAAAAAwLmz0+i1mYx+/+Og63EAbkLACawlp9YBAAAAAAAAYLuV1DdtaQ5S28no6bNp1/MA/CwBJ7D2xp/f9fLXb/tJMyzJflIfdT0TAAAAAAAAAHDHSg5rLZPUHORv/504jQ6sOwEnsHHGHz8MUst+U7JvOycAAAAAAAAArC9bNoFNJuAENtr487te/vf3YUr2S6nD1LzoeiYAAAAAAAAA4Aolh7XWg9RmYssmsOkEnMBWGR8d9bNb95M6LLUMnVsHAAAAAAAAgC6VL7XUSVImWZSD0d7erOuJAB6KgBPYauNP74dpm6Fz6wAAAAAAAADwMErqm7aWSUo9cBYd2GYCToBTX8+tt8MmZSjoBAAAAAAAAIBfV5K3beoktZmMfv/joOt5AFaFgBPgCuPP73r567f9pBmWUoepedH1TAAAAAAAAACw8koOa60Hqc0kf/vvZPT45bzrkQBWkYAT4IbGR0f97BwPBZ0AAAAAAAAAcEHJYa1lkrSTHO9MRnt7s65HAlgHAk6AWxJ0AgAAAAAAALCVBJsAd0LACXBHBJ0AAAAAAAAAbKKSvG1TJ0mmgk2AuyPgBLgn46Ojfpo6SGmHTcqwJq+6ngkAAAAAAAAArnMebNZmkr/9dzJ6/HLe9UwAm0jACfBAxp/f9fK/vw+TOmhKHdaU113PBAAAAAAAAAAl9U1byyRNOxk9eT7peh6AbSHgBOjQ+NP7YbIzSOqw1DJM6qOuZwIAAAAAAABgg5Uc1mSalElqOxk9fTbteiSAbSXgBFgh46OjfnaOh0kGzq4DAAAAAAAA8KvOz6En0xzvTEZ7e7OORwLglIATYMWNP70fpm2GaTKwpRMAAAAAAACAq5UvtdRJ2kydQwdYfQJOgDVzeUtnBjXlddczAQAAAAAAAPDwSuqbNpmmNpO0ZWq7JsB6EXACbIDxp/fDZGeQmkGTOnB6HQAAAAAAAGCznJxCL9OUTFPbyejps2nXMwHwawScABto/PldL4vdwfnp9WSQmhddzwUAAAAAAADADZQc1mTqFDrAZhNwAmwJUScAAAAAAADACvom1szuYjp6/HLe9VgA3D8BJ8AWE3UCAAAAAAAAPCCxJgAXCDgBuETUCQAAAAAAAPDrSvK2LZmJNQG4ioATgBsZf3o/THYGqRk0qYOavOp6JgAAAAAAAIBVUFLftGlmKZkmx9PRk+eTrmcCYPUJOAG4tfHHD4Mkg9TSb0od1jSDpD7qei4AAAAAAACA+1G+lLTTtpZJUqYp7Wz09Nm066kAWE8CTgDu1KUT7KX0besEAAAAAAAA1tG3WzWdQAfgrgk4AXgQ448fBqlNP6mDptRhLaWfmhddzwUAAAAAAABst5K8bUtmaTO1VROAhyTgBKBT40/vh6mlf36GXdgJAAAAAAAA3IeSw1LrrK1lklJnKXU2evJ80vVYAGwvAScAK0nYCQAAAAAAANyKUBOANSHgBGCtfBt2JqVXk1ddzwUAAAAAAAA8rEunz4WaAKwhAScAG2H88cMgtekndZBS+k3afk153fVcAAAAAAAAwK8pqW/aNLPUOkvTTlLLfPT02bTruQDgVwk4Adho48/velnsDpKdQdras7UTAAAAAAAAVk9J3iZ13tYySVPmyfE0u4vp6PHLedezAcB9EXACsLXGHz8MUmovbTNMqb0mGdRS+ql50fVsAAAAAAAAsHFKDkutszaZppa5bZoAbDsBJwAsIe4EAAAAAACAWxBpAsCNCTgB4CctizudZQcAAAAAAGBbXDp3nkSkCQC3I+AEgDs0PjrqZ3fRTy0nryaDptZeTTNI6qOu5wMAAAAAAIDrlS8l7bRNM0uts5TT1+5iOnr8ct71dACwKQScAPCAzrd3ZmeQtvaaUodJUlNedzwaAAAAAAAAW+M00CxlnjbTNGWeHE9t0QSAhyXgBIAVMv70fpgkaZthkgg8AQAAAAAAuI2S+iZJnDkHgNUl4ASANSLwBAAAAAAA4LsNmslJoJlk9OT5pMPBAICfIOAEgA3ybeCZJoOm1l5NM0jqo84GAwAAAAAA4Cc4cQ4A20DACQBbZPzxwyCl9pKdQdraOw88S+mn5kXX8wEAAAAAAGyFksNS66xNM0uts5TTl0ATALaKgBMAODc+Oupnd9FPLSevUntNMkhKryavup4PAAAAAABgHZTkbVLnbTJNLfOkTNMcz7PYnY329mZdzwcArAYBJwBwY+PP73pZ7A6SnJ9pb0odJokz7QAAAAAAwHb45rx5kjTtJElGT55POhwMAFgzAk4A4E6dn2k/3+JZ+k3avi2eAAAAAADAOvhue+bZeXPbMwGAOybgBAAe1LItnmkyaGrt2eIJAAAAAADcq5LDUuvM9kwAYBUIOAGAlTM+Oupnd9FPu9NL6iC5eKq9vO50OAAAAAAAYEWdnDZPkraWyemzaZrjue2ZAMAqEnACAGvp+1Pttdckg0TkCQAAAAAAm6ikvkmS706b1zIfPX027Xo+AICfJeAEADaWyBMAAAAAANaDOBMA2EYCTgBgq4k8AQAAAADgfokzAQCWE3ACAFzju8gzSVPqMElqmkFSH3U3HQAAAAAAdKV8KWmnSdLWMjl9Nk1zPBdnAgBcT8AJAHAHxkdH/ewu+ml3ekkdJEmaDJpae7WUfmpedDshAAAAAAD8hJLDUuusLWWeNichZtNOkiSL3dlob2/W3XAAAJtBwAkA8IDGn94PT97tDNLWnpPtAAAAAAA8tO9OmjdlnhxPk2T05Pmk0+EAALaIgBMAYMX8aJtnUno1edXxiAAAAAAArKCSvE3q3NZMAID1IOAEAFhT59s8a+mnln6SNKUOTx4VZ9sBAAAAADbF6TnzJGlrmZw8q7OUOkst89HTZ9MOpwMA4JYEnAAAG2z8+V0vi92TLZ5Lz7Y3g6Q+6nJGAAAAAICt9aMwM86ZAwBsOgEnAADXh542egIAAAAA3JwwEwCAGxBwAgDwU350uj0pvZq86mIuAAAAAID7VpK3SZ23pczT5uRsuTATAIBbEnACAHAvxh8/DFJqL+1OL6kn2z1L6Tdp+0lSU153OR8AAAAAwInypaSdJkmbZpbTzZlp2kmSpJb56OmzaVfTAQCwuQScAAB0aun59tjqCQAAAAD8mrNtmcnyM+bZXUxHj1/Ou5oPAAAEnAAArI3zrZ5J0jbDJEmpvSYZJEktpZ+aFx2NBwAAAADct5LDcrohs02mqeUkwDzblrnYnY329mYdTQcAAD9FwAkAwEYSewIAAADAmrguynTCHACADSXgBABg610XezrjDgAAAAA/Z+n58kSUCQAAFwg4AQDgJ4yPjvrZXfRPPu0M0p6Gn00GTT15X1NedzUfAAAAANyP8qWknSZJW8o8bU7iy1JnKSfbM50vBwCAnyPgBACAezT+9H54/sF2TwAAAABWyLVbMpOMnjyffPvvAACAuyHgBACAFTH+/K6Xxe5J2Nnu9JJ68l7wCQAAAMANXAoyk2lqmZ9+M01zfPJ+dzEdPX4572xIAADgnIATAADW1M2CTyfdAQAAANZVSX1z9v7ShkxBJgAAbAQBJwAAbJGlJ92TpMmgqbWXJLWUfmpePOxkAAAAABuu5LDUOkuStpR52kyTJE2ZJ8fTs585WQ4AANtDwAkAAFxpfHTUz+6in+Tyls8kTanDs/c1zSCpjx58QAAAAIBOlC8l7Xl0aTsmAABwGwJOAADgTok+AQAAgPVywxhzsTsb7e3NHng4AABggwk4AQCAzl2KPpMrz7snpVeTVw86HAAAALA2SvI2qfMkadPMcnqyPEnStJPz9zZjAgAAK0DACQAArK3xxw+DlNO480fbPkvpp+bFgw8IAAAA3MqlELOUedpML3z7dStmLfPR02fTpX8EAABgxQk4AQCArfOj8NPGTwAAALg7JfXN2XshJgAAwGUCTgAAgBv67tR7dgZpT2PPUntNch6C2voJAADApri4DTNJ2lom5182ZZ4cfw0vF7uz0d7e7CHnAwAAWFcCTgAAgAdwaetnkrTN8OL3F0++2/wJAADAXRNhAgAArB4BJwAAwIobf37Xy2L365n3WvqppX/+uZR+k7b/9eti+ycAAMCmKTkstc7OPrbJNLXML/zg6znyJNldTEePX84DAADAyhJwAgAAbLjvTr+3O72kfg1Cvzn/niQ15fWDDQgAALAFSuqbi58FmAAAAAg4AQAAuNb40/vh5Sc7g7QXTsKLQAEAgA12bXxZ6izl63bM1DIfPX02DQAAAPyAgBMAAIAHMf74YZByIfr8dhNokjQZNPXCb1J6NXn1UDMCAACbpSRvk3oeWralzNPmm7Dym82Xi93ZaG9v9lAzAgAAsL0EnAAAAKyV70LQJGmb4aXPyzaCltJPzYt7Hg8AAPhVJYelXthmmWXnxpM07eTSZ+ElAAAAa0bACQAAwNZaGoN+ex4+WbIZNKlpBkl9dO9DAgDAyitfStpLWy2Xbrpsyjw5vvzMqXEAAAC2mIATAAAA7sjSILSWfmrpX3q2ZENoktSU1/c4HgAAZFlsmVyx4bLUWcrlTZiCSwAAALg7Ak4AAABYYeOjo352F/3vvvj2bHxydRjqfDwAwPpZckY8ueqU+JLNlkmyu5iOHr+cf/ccAAAAWAkCTgAAANhSy0/IJ0vPyCdLT8knAlEAYDuV5G1Sv4sj2zSzLAkvr4wsbbQEAACArSXgBAAAAO7N+NP74dIvlp2WP3NFKJo4Mw8AXK+kvln2vC1lnjbLQ8llp8JPjZ48n9zZcAAAAAAXCDgBAACAjXBlLJrkyq2iyZWn58/YMAoAt3TFCfAzS0+Bn7lqW+UpUSUAAACwCQScAAAAAL9gfHTUz+6if+UP2p1eUq8MRJP8cOvomZpmkNRHtxoSgC1TvpS0PzzJ/cNtlF//zjTN8fLAMkkWu7PR3t7sNhMCAAAAIOAEAAAA2Bjjz+96Wez+OBZNbhaVnrlBXHrGtlJgK1yzVfKim0WS53/4x7Hkmd3FdPT45fW/AwAAAGDlCTgBAAAA6MS120uX+Zn49Ful9Ju0P/f/fcMmVLjO9Zsfr9OmmeWGgeSS//9mEeRFtkgCAAAA0BEBJwAAAAB05FYR6y/ZGaS92UZVOlLqLOW28eIt2OYIAAAAAJ35f6GLrWZ+ei/bAAAAAElFTkSuQmCC","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"right_hand","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[10]},{"t":65.0000026475043,"s":[0]}],"ix":10},"p":{"a":0,"k":[2288.651,2057.194,0],"ix":2},"a":{"a":0,"k":[91.687,101.702,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"left_hand","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-10]},{"t":65.0000026475043,"s":[0]}],"ix":10},"p":{"a":0,"k":[852.437,2074.236,0],"ix":2},"a":{"a":0,"k":[415.628,94.174,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"paper1","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[629.348,1634.708,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[629.348,1604.7,0],"to":[0,0,0],"ti":[0,0,0]},{"t":65.0000026475043,"s":[629.348,1634.708,0]}],"ix":2},"a":{"a":0,"k":[153.785,182.706,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":40,"s":[97,97,100]},{"t":65.0000026475043,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"paper4","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[2175.905,1086.807,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[2175.905,1119,0],"to":[0,0,0],"ti":[0,0,0]},{"t":65.0000026475043,"s":[2175.905,1086.807,0]}],"ix":2},"a":{"a":0,"k":[169.638,194.06,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":23,"s":[103,103,100]},{"t":65.0000026475043,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":2,"nm":"paper3","refId":"image_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[-5]},{"t":65.0000026475043,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[1557.1,796.965,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[1557.1,767,0],"to":[0,0,0],"ti":[0,0,0]},{"t":65.0000026475043,"s":[1557.1,796.965,0]}],"ix":2},"a":{"a":0,"k":[254.672,176.274,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":2,"nm":"paper2","refId":"image_5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":25,"s":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":48,"s":[3]},{"t":65.0000026475043,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[939.527,1085.535,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[939.527,1115,0],"to":[0,0,0],"ti":[0,0,0]},{"t":65.0000026475043,"s":[939.527,1085.535,0]}],"ix":2},"a":{"a":0,"k":[158.109,248.53,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":2,"nm":"paper5","refId":"image_6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":33,"s":[-8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":53,"s":[-3]},{"t":65.0000026475043,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[2486.008,1625.728,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[2486.008,1595,0],"to":[0,0,0],"ti":[0,0,0]},{"t":65.0000026475043,"s":[2486.008,1625.728,0]}],"ix":2},"a":{"a":0,"k":[208.47,184.497,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"body","refId":"image_7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1560,2117.53,0],"ix":2},"a":{"a":0,"k":[1335.962,982.843,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":66.0000026882351,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":1,"nm":"back","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1560,1860,0],"ix":2},"a":{"a":0,"k":[1560,1860,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"sw":3120,"sh":3720,"sc":"#ffffff","ip":0,"op":66.0000026882351,"st":0,"bm":0}],"markers":[]} \ No newline at end of file From 2090077659f9b3c5c0c8ec1fd763742c5a8b4c87 Mon Sep 17 00:00:00 2001 From: boiledegg Date: Sat, 7 Sep 2024 16:09:54 +0900 Subject: [PATCH 25/33] =?UTF-8?q?[UI/#223]=20=EC=98=A8=EB=B3=B4=EB=94=A9?= =?UTF-8?q?=20=EC=8B=9C=EC=9E=91=20=EA=B7=B8=EB=9E=98=ED=94=BD=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/item/TerningLottieAnimation.kt | 7 +++++-- .../filtering/startfiltering/StartFilteringRoute.kt | 13 ++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt b/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt index 65a0cbdcb..cdaca33d7 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt @@ -3,6 +3,8 @@ package com.terning.core.designsystem.component.item import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.RectangleShape import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.rememberLottieComposition @@ -14,7 +16,8 @@ fun TerningLottieAnimation( ) { val lottieComposition by rememberLottieComposition(LottieCompositionSpec.Asset(jsonString)) LottieAnimation( - modifier = modifier, - composition = lottieComposition + modifier = modifier.clip(RectangleShape), + composition = lottieComposition, + clipToCompositionBounds = false ) } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt index dd7326109..d2fef703e 100644 --- a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.terning.core.designsystem.component.button.RectangleButton +import com.terning.core.designsystem.component.item.TerningLottieAnimation import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.designsystem.theme.White @@ -79,16 +80,18 @@ fun StartFilteringScreen( Text( text = stringResource(id = R.string.start_filtering_title), style = TerningTheme.typography.title1, - modifier = Modifier.padding(bottom = 35.dp), + modifier = Modifier.padding(bottom = 36.dp), textAlign = TextAlign.Center ) - Image( - painter = painterResource(id = R.drawable.ic_terning_onboarding), + + TerningLottieAnimation( + jsonString = "terning_onboarding_start.json", modifier = Modifier .fillMaxWidth() - .padding(horizontal = 24.dp), - contentDescription = "terning image" + .height(372.dp) + .padding(horizontal = 24.dp) ) + Spacer(modifier = Modifier.weight(2f)) } Box( From e86534132b8eaa92f14a1db83e63a99e0a755c0d Mon Sep 17 00:00:00 2001 From: boiledegg Date: Sat, 7 Sep 2024 16:16:44 +0900 Subject: [PATCH 26/33] =?UTF-8?q?[UI/#223]=20=EC=95=A0=EB=8B=88=EB=A9=94?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EB=B0=98=EB=B3=B5=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/component/item/TerningLottieAnimation.kt | 5 ++++- .../feature/filtering/startfiltering/StartFilteringRoute.kt | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt b/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt index cdaca33d7..a3468d931 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt @@ -7,17 +7,20 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.RectangleShape import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec +import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.rememberLottieComposition @Composable fun TerningLottieAnimation( jsonString: String, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, + iterations: Int = 1, ) { val lottieComposition by rememberLottieComposition(LottieCompositionSpec.Asset(jsonString)) LottieAnimation( modifier = modifier.clip(RectangleShape), composition = lottieComposition, + iterations = iterations, clipToCompositionBounds = false ) } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt index d2fef703e..47c47b9fc 100644 --- a/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt +++ b/feature/src/main/java/com/terning/feature/filtering/startfiltering/StartFilteringRoute.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.airbnb.lottie.compose.LottieConstants import com.terning.core.designsystem.component.button.RectangleButton import com.terning.core.designsystem.component.item.TerningLottieAnimation import com.terning.core.designsystem.theme.TerningPointTheme @@ -86,6 +87,7 @@ fun StartFilteringScreen( TerningLottieAnimation( jsonString = "terning_onboarding_start.json", + iterations = LottieConstants.IterateForever, modifier = Modifier .fillMaxWidth() .height(372.dp) From dcf7894c126a14e3f4129a40e03929006f675787 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 19:06:25 +0900 Subject: [PATCH 27/33] =?UTF-8?q?[FEAT/#221]=20=ED=94=84=EB=A1=9C=ED=95=84?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20=EB=B7=B0=20=EC=84=9C=EB=B2=84=ED=86=B5?= =?UTF-8?q?=EC=8B=A0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datasource/MyPageDataSource.kt | 5 +++++ .../datasourceimpl/MyPageDataSourceImpl.kt | 5 +++++ .../request/MyPageProfileEditRequestDto.kt | 12 ++++++++++ .../data/mapper/mypage/MyPageMapper.kt | 4 ++-- .../mapper/mypage/MyPageProfileEditMapper.kt | 10 +++++++++ .../repositoryimpl/MyPageRepositoryImpl.kt | 15 +++++++++++-- .../com/terning/data/service/MyPageService.kt | 4 ++++ ...MyPageProfileModel.kt => MyPageProfile.kt} | 2 +- .../domain/entity/mypage/MyPageProfileEdit.kt | 6 +++++ .../domain/repository/MyPageRepository.kt | 9 ++++++-- .../mypage/profileedit/ProfileEditRoute.kt | 10 +++++++-- .../profileedit/ProfileEditSideEffect.kt | 3 +++ .../profileedit/ProfileEditViewModel.kt | 22 ++++++++++++++++++- 13 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 data/src/main/java/com/terning/data/dto/request/MyPageProfileEditRequestDto.kt create mode 100644 data/src/main/java/com/terning/data/mapper/mypage/MyPageProfileEditMapper.kt rename domain/src/main/java/com/terning/domain/entity/mypage/{MyPageProfileModel.kt => MyPageProfile.kt} (79%) create mode 100644 domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileEdit.kt diff --git a/data/src/main/java/com/terning/data/datasource/MyPageDataSource.kt b/data/src/main/java/com/terning/data/datasource/MyPageDataSource.kt index 5eee61e1b..60361d5f2 100644 --- a/data/src/main/java/com/terning/data/datasource/MyPageDataSource.kt +++ b/data/src/main/java/com/terning/data/datasource/MyPageDataSource.kt @@ -2,6 +2,7 @@ package com.terning.data.datasource import com.terning.data.dto.BaseResponse import com.terning.data.dto.NonDataBaseResponse +import com.terning.data.dto.request.MyPageProfileEditRequestDto import com.terning.data.dto.response.MyPageResponseDto interface MyPageDataSource { @@ -10,4 +11,8 @@ interface MyPageDataSource { suspend fun deleteQuit(): NonDataBaseResponse suspend fun getProfile(): BaseResponse + + suspend fun editProfile( + request: MyPageProfileEditRequestDto + ): NonDataBaseResponse } \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt b/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt index d1636d0d5..faf607c61 100644 --- a/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt +++ b/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt @@ -3,6 +3,7 @@ package com.terning.data.datasourceimpl import com.terning.data.datasource.MyPageDataSource import com.terning.data.dto.BaseResponse import com.terning.data.dto.NonDataBaseResponse +import com.terning.data.dto.request.MyPageProfileEditRequestDto import com.terning.data.dto.response.MyPageResponseDto import com.terning.data.service.MyPageService import javax.inject.Inject @@ -15,4 +16,8 @@ class MyPageDataSourceImpl @Inject constructor( override suspend fun deleteQuit(): NonDataBaseResponse = myPageService.deleteQuit() override suspend fun getProfile(): BaseResponse = myPageService.getProfile() + + override suspend fun editProfile( + request: MyPageProfileEditRequestDto + ): NonDataBaseResponse = myPageService.modifyProfile() } \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/dto/request/MyPageProfileEditRequestDto.kt b/data/src/main/java/com/terning/data/dto/request/MyPageProfileEditRequestDto.kt new file mode 100644 index 000000000..3f4c7ef8a --- /dev/null +++ b/data/src/main/java/com/terning/data/dto/request/MyPageProfileEditRequestDto.kt @@ -0,0 +1,12 @@ +package com.terning.data.dto.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class MyPageProfileEditRequestDto( + @SerialName("name") + val name: String, + @SerialName("profileImage") + val profileImage: String, +) \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt b/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt index cfc5c65ba..0a19f6e76 100644 --- a/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt +++ b/data/src/main/java/com/terning/data/mapper/mypage/MyPageMapper.kt @@ -1,10 +1,10 @@ package com.terning.data.mapper.mypage import com.terning.data.dto.response.MyPageResponseDto -import com.terning.domain.entity.mypage.MyPageProfileModel +import com.terning.domain.entity.mypage.MyPageProfile fun MyPageResponseDto.toMyPageProfile() = - MyPageProfileModel( + MyPageProfile( name = name, profileImage = profileImage, authType = authType diff --git a/data/src/main/java/com/terning/data/mapper/mypage/MyPageProfileEditMapper.kt b/data/src/main/java/com/terning/data/mapper/mypage/MyPageProfileEditMapper.kt new file mode 100644 index 000000000..892bbd425 --- /dev/null +++ b/data/src/main/java/com/terning/data/mapper/mypage/MyPageProfileEditMapper.kt @@ -0,0 +1,10 @@ +package com.terning.data.mapper.mypage + +import com.terning.data.dto.request.MyPageProfileEditRequestDto +import com.terning.domain.entity.mypage.MyPageProfileEdit + +fun MyPageProfileEdit.toMyPageProfileEditRequestDto(): MyPageProfileEditRequestDto = + MyPageProfileEditRequestDto( + name = name, + profileImage = profileImage + ) diff --git a/data/src/main/java/com/terning/data/repositoryimpl/MyPageRepositoryImpl.kt b/data/src/main/java/com/terning/data/repositoryimpl/MyPageRepositoryImpl.kt index 45cafad9b..76aa84af2 100644 --- a/data/src/main/java/com/terning/data/repositoryimpl/MyPageRepositoryImpl.kt +++ b/data/src/main/java/com/terning/data/repositoryimpl/MyPageRepositoryImpl.kt @@ -2,7 +2,9 @@ package com.terning.data.repositoryimpl import com.terning.data.datasource.MyPageDataSource import com.terning.data.mapper.mypage.toMyPageProfile -import com.terning.domain.entity.mypage.MyPageProfileModel +import com.terning.data.mapper.mypage.toMyPageProfileEditRequestDto +import com.terning.domain.entity.mypage.MyPageProfile +import com.terning.domain.entity.mypage.MyPageProfileEdit import com.terning.domain.repository.MyPageRepository import javax.inject.Inject @@ -19,8 +21,17 @@ class MyPageRepositoryImpl @Inject constructor( myPageDataSource.deleteQuit() } - override suspend fun getProfile(): Result = + override suspend fun getProfile(): Result = runCatching { myPageDataSource.getProfile().result.toMyPageProfile() } + + override suspend fun editProfile( + request: MyPageProfileEdit + ): Result = + runCatching { + myPageDataSource.editProfile( + request.toMyPageProfileEditRequestDto() + ) + } } \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/service/MyPageService.kt b/data/src/main/java/com/terning/data/service/MyPageService.kt index 26a7d76ca..d033094d0 100644 --- a/data/src/main/java/com/terning/data/service/MyPageService.kt +++ b/data/src/main/java/com/terning/data/service/MyPageService.kt @@ -5,6 +5,7 @@ import com.terning.data.dto.NonDataBaseResponse import com.terning.data.dto.response.MyPageResponseDto import retrofit2.http.DELETE import retrofit2.http.GET +import retrofit2.http.PATCH import retrofit2.http.POST interface MyPageService { @@ -16,4 +17,7 @@ interface MyPageService { @GET("api/v1/mypage/profile") suspend fun getProfile(): BaseResponse + + @PATCH("api/v1/mypage/profile") + suspend fun modifyProfile(): NonDataBaseResponse } \ No newline at end of file diff --git a/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt b/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfile.kt similarity index 79% rename from domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt rename to domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfile.kt index b9a617564..356758d3e 100644 --- a/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileModel.kt +++ b/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfile.kt @@ -1,6 +1,6 @@ package com.terning.domain.entity.mypage -data class MyPageProfileModel( +data class MyPageProfile( val name: String, val profileImage: String, val authType: String diff --git a/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileEdit.kt b/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileEdit.kt new file mode 100644 index 000000000..398575b04 --- /dev/null +++ b/domain/src/main/java/com/terning/domain/entity/mypage/MyPageProfileEdit.kt @@ -0,0 +1,6 @@ +package com.terning.domain.entity.mypage + +data class MyPageProfileEdit( + val name: String, + val profileImage: String +) \ No newline at end of file diff --git a/domain/src/main/java/com/terning/domain/repository/MyPageRepository.kt b/domain/src/main/java/com/terning/domain/repository/MyPageRepository.kt index 26eaed11f..917b82c17 100644 --- a/domain/src/main/java/com/terning/domain/repository/MyPageRepository.kt +++ b/domain/src/main/java/com/terning/domain/repository/MyPageRepository.kt @@ -1,11 +1,16 @@ package com.terning.domain.repository -import com.terning.domain.entity.mypage.MyPageProfileModel +import com.terning.domain.entity.mypage.MyPageProfile +import com.terning.domain.entity.mypage.MyPageProfileEdit interface MyPageRepository { suspend fun postLogout(): Result suspend fun deleteQuit(): Result - suspend fun getProfile(): Result + suspend fun getProfile(): Result + + suspend fun editProfile( + request: MyPageProfileEdit + ): Result } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt index 4e33d719f..565969645 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt @@ -15,6 +15,7 @@ import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -35,7 +36,7 @@ import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.designsystem.theme.White import com.terning.core.extension.addFocusCleaner import com.terning.core.extension.noRippleClickable -import com.terning.core.type.ProfileImage +import com.terning.core.extension.toast import com.terning.feature.R @Composable @@ -48,6 +49,7 @@ fun ProfileEditRoute( val state by viewModel.state.collectAsStateWithLifecycle() val lifecycleOwner = LocalLifecycleOwner.current + val context = LocalContext.current val systemUiController = rememberSystemUiController() @@ -69,6 +71,7 @@ fun ProfileEditRoute( .collect { sideEffect -> when (sideEffect) { is ProfileEditSideEffect.NavigateUp -> navigateUp() + is ProfileEditSideEffect.ShowToast -> context.toast(sideEffect.message) } } } @@ -92,7 +95,10 @@ fun ProfileEditRoute( onInputChange = { editName -> viewModel.updateName(editName) }, - onSaveClick = { viewModel.navigateUp() }, + onSaveClick = { + viewModel.modifyUserInfo() + // viewModel.navigateUp() + }, name = state.name, onBackButtonClick = { viewModel.navigateUp() }, onValidationChanged = { isValid -> diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditSideEffect.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditSideEffect.kt index 6fd2f3668..9d16e2bc8 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditSideEffect.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditSideEffect.kt @@ -1,5 +1,8 @@ package com.terning.feature.mypage.profileedit +import androidx.annotation.StringRes + sealed class ProfileEditSideEffect { data object NavigateUp : ProfileEditSideEffect() + data class ShowToast(@StringRes val message: Int) : ProfileEditSideEffect() } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt index ecc575a98..5516b79c2 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditViewModel.kt @@ -2,6 +2,9 @@ package com.terning.feature.mypage.profileedit import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.terning.domain.entity.mypage.MyPageProfileEdit +import com.terning.domain.repository.MyPageRepository +import com.terning.feature.R import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -13,7 +16,9 @@ import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel -class ProfileEditViewModel @Inject constructor() : ViewModel() { +class ProfileEditViewModel @Inject constructor( + private val myPageRepository: MyPageRepository, +) : ViewModel() { private val _state: MutableStateFlow = MutableStateFlow(ProfileEditState()) val state: StateFlow get() = _state.asStateFlow() @@ -53,4 +58,19 @@ class ProfileEditViewModel @Inject constructor() : ViewModel() { _state.value = _state.value.copy(isButtonValid = isValid) } + fun modifyUserInfo() { + viewModelScope.launch { + myPageRepository.editProfile( + MyPageProfileEdit( + name = _state.value.name, + profileImage = _state.value.profile + ) + ).onSuccess { + _sideEffects.emit(ProfileEditSideEffect.NavigateUp) + }.onFailure { + _sideEffects.emit(ProfileEditSideEffect.ShowToast(R.string.server_failure)) + } + } + } + } \ No newline at end of file From b668696cb40c86fdbd606c4281fd5632e25d08d0 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 19:11:31 +0900 Subject: [PATCH 28/33] =?UTF-8?q?[FEAT/#221]=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/com/terning/core/type/ProfileImage.kt | 5 ++--- .../com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt | 2 +- data/src/main/java/com/terning/data/service/MyPageService.kt | 2 +- .../terning/feature/mypage/profileedit/ProfileEditRoute.kt | 1 - 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/terning/core/type/ProfileImage.kt b/core/src/main/java/com/terning/core/type/ProfileImage.kt index eac0fda9d..df24f2d39 100644 --- a/core/src/main/java/com/terning/core/type/ProfileImage.kt +++ b/core/src/main/java/com/terning/core/type/ProfileImage.kt @@ -26,8 +26,7 @@ enum class ProfileImage( else -> DEFAULT } - fun toIndex(profileImage: ProfileImage): Int { - return entries.indexOf(profileImage) - } + fun toIndex(profileImage: ProfileImage): Int = + entries.indexOf(profileImage) } } diff --git a/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt b/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt index faf607c61..bc96ce7b0 100644 --- a/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt +++ b/data/src/main/java/com/terning/data/datasourceimpl/MyPageDataSourceImpl.kt @@ -19,5 +19,5 @@ class MyPageDataSourceImpl @Inject constructor( override suspend fun editProfile( request: MyPageProfileEditRequestDto - ): NonDataBaseResponse = myPageService.modifyProfile() + ): NonDataBaseResponse = myPageService.editProfile() } \ No newline at end of file diff --git a/data/src/main/java/com/terning/data/service/MyPageService.kt b/data/src/main/java/com/terning/data/service/MyPageService.kt index d033094d0..6ce2d16ae 100644 --- a/data/src/main/java/com/terning/data/service/MyPageService.kt +++ b/data/src/main/java/com/terning/data/service/MyPageService.kt @@ -19,5 +19,5 @@ interface MyPageService { suspend fun getProfile(): BaseResponse @PATCH("api/v1/mypage/profile") - suspend fun modifyProfile(): NonDataBaseResponse + suspend fun editProfile(): NonDataBaseResponse } \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt index 565969645..7dba0d325 100644 --- a/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt +++ b/feature/src/main/java/com/terning/feature/mypage/profileedit/ProfileEditRoute.kt @@ -97,7 +97,6 @@ fun ProfileEditRoute( }, onSaveClick = { viewModel.modifyUserInfo() - // viewModel.navigateUp() }, name = state.name, onBackButtonClick = { viewModel.navigateUp() }, From 34cab10ce1c5648948d02773380b478e9b012ad7 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 19:18:55 +0900 Subject: [PATCH 29/33] =?UTF-8?q?[FEAT/#221]=20@DrawableRes=20=EC=96=B4?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/com/terning/core/type/ProfileImage.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/type/ProfileImage.kt b/core/src/main/java/com/terning/core/type/ProfileImage.kt index df24f2d39..8ccc58040 100644 --- a/core/src/main/java/com/terning/core/type/ProfileImage.kt +++ b/core/src/main/java/com/terning/core/type/ProfileImage.kt @@ -1,9 +1,10 @@ package com.terning.core.type +import androidx.annotation.DrawableRes import com.terning.core.R enum class ProfileImage( - val drawableResId: Int, + @DrawableRes val drawableResId: Int, val stringValue: String ) { From a4f1c0c081921cb25af21b742350f2d6fe6e1f35 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 19:20:38 +0900 Subject: [PATCH 30/33] =?UTF-8?q?[MOD/#221]=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/component/bottomsheet/ProfileBottomSheet.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt index 8067b2af7..9109deb87 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/ProfileBottomSheet.kt @@ -39,7 +39,7 @@ import kotlinx.coroutines.launch * @param modifier 바텀시트에 적용할 Modifier입니다. * @param onDismiss 바텀시트가 닫힐 때 호출되는 콜백 함수입니다. * @param onSaveClick 저장하기 버튼 클릭 시, 호출되는 콜백 함수입니다. - * @param initialSelectedOption 초기에 선택된 이미지의 이름을 string 값입니다. + * @param initialSelectedOption 초기에 선택된 이미지의 이름을 나타내는 string 값입니다. */ @OptIn(ExperimentalMaterial3Api::class) @Composable From fdba10ce2f6041dffea6ab996a3f3c6b03bfe8c4 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sat, 7 Sep 2024 20:27:02 +0900 Subject: [PATCH 31/33] =?UTF-8?q?[FEAT/#221]=20SnackBar=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../snackbar/TerningBasicSnackBar.kt | 23 ++++++++++++++ .../com/terning/feature/main/MainScreen.kt | 31 ++++++++++++++----- 2 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 core/src/main/java/com/terning/core/designsystem/component/snackbar/TerningBasicSnackBar.kt diff --git a/core/src/main/java/com/terning/core/designsystem/component/snackbar/TerningBasicSnackBar.kt b/core/src/main/java/com/terning/core/designsystem/component/snackbar/TerningBasicSnackBar.kt new file mode 100644 index 000000000..0d12f3811 --- /dev/null +++ b/core/src/main/java/com/terning/core/designsystem/component/snackbar/TerningBasicSnackBar.kt @@ -0,0 +1,23 @@ +package com.terning.core.designsystem.component.snackbar + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.terning.core.designsystem.theme.Grey500 + +@Composable +fun TerningBasicSnackBar(content: @Composable () -> Unit) { + Box( + modifier = Modifier + .clip(CircleShape) + .background(Grey500) + .padding(vertical = 7.dp, horizontal = 20.dp) + ) { + content() + } +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/main/MainScreen.kt b/feature/src/main/java/com/terning/feature/main/MainScreen.kt index 5836eeeb1..516f63bf1 100644 --- a/feature/src/main/java/com/terning/feature/main/MainScreen.kt +++ b/feature/src/main/java/com/terning/feature/main/MainScreen.kt @@ -1,8 +1,6 @@ package com.terning.feature.main import android.app.Activity -import android.content.Intent -import android.widget.Toast import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.EnterTransition @@ -17,6 +15,9 @@ import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Scaffold +import androidx.compose.material3.SnackbarDuration +import androidx.compose.material3.SnackbarHost +import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -30,8 +31,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.sp -import androidx.core.content.ContextCompat.startActivity import androidx.navigation.compose.NavHost +import com.terning.core.designsystem.component.snackbar.TerningBasicSnackBar import com.terning.core.designsystem.theme.Grey300 import com.terning.core.designsystem.theme.TerningMain import com.terning.core.designsystem.theme.White @@ -44,7 +45,6 @@ import com.terning.feature.filtering.startfiltering.navigation.startFilteringNav import com.terning.feature.filtering.starthome.navigation.startHomeNavGraph import com.terning.feature.home.changefilter.navigation.changeFilterNavGraph import com.terning.feature.home.home.navigation.homeNavGraph -import com.terning.feature.home.home.navigation.navigateHome import com.terning.feature.intern.navigation.internNavGraph import com.terning.feature.mypage.mypage.navigation.myPageNavGraph import com.terning.feature.mypage.profileedit.navigation.profileEditNavGraph @@ -53,7 +53,6 @@ import com.terning.feature.onboarding.signup.navigation.signUpNavGraph import com.terning.feature.onboarding.splash.navigation.splashNavGraph import com.terning.feature.search.search.navigation.searchNavGraph import com.terning.feature.search.searchprocess.navigation.searchProcessNavGraph -import kotlinx.coroutines.delay import kotlinx.coroutines.launch @Composable @@ -64,17 +63,35 @@ fun MainScreen( var backPressedState by remember { mutableStateOf(true) } var backPressedTime = 0L + val snackBarHostState = remember { SnackbarHostState() } + val coroutineScope = rememberCoroutineScope() + BackHandler(enabled = backPressedState) { - if(System.currentTimeMillis() - backPressedTime <= 3000) { + if (System.currentTimeMillis() - backPressedTime <= 3000) { (context as Activity).finish() } else { backPressedState = true - Toast.makeText(context, "한 번 더 누르시면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show() + coroutineScope.launch { + snackBarHostState.showSnackbar( + message = "버튼을 한 번 더 누르면 종료돼요", + duration = SnackbarDuration.Short + ) + } } backPressedTime = System.currentTimeMillis() } Scaffold( + snackbarHost = { + SnackbarHost(hostState = snackBarHostState) { snackBarData -> + TerningBasicSnackBar { + Text( + text = snackBarData.visuals.message, + color = White, + ) + } + } + }, bottomBar = { MainBottomBar( isVisible = navigator.showBottomBar(), From 348b2a03101ccaecb8241a4a3c1c8ccf775ab3e4 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Sun, 8 Sep 2024 14:25:27 +0900 Subject: [PATCH 32/33] =?UTF-8?q?[FEAT/#221]=20=EC=9E=84=EC=8B=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/com/terning/core/type/ProfileImage.kt | 2 +- .../java/com/terning/feature/onboarding/signup/SignUpState.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/terning/core/type/ProfileImage.kt b/core/src/main/java/com/terning/core/type/ProfileImage.kt index 8ccc58040..f4836df27 100644 --- a/core/src/main/java/com/terning/core/type/ProfileImage.kt +++ b/core/src/main/java/com/terning/core/type/ProfileImage.kt @@ -24,7 +24,7 @@ enum class ProfileImage( "glass" -> GLASS "calendar" -> CALENDAR "passion" -> PASSION - else -> DEFAULT + else -> BASIC } fun toIndex(profileImage: ProfileImage): Int = diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt index 02c6c1796..773904e4c 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpState.kt @@ -2,7 +2,7 @@ package com.terning.feature.onboarding.signup data class SignUpState( val name: String = "", - val profileImage: String = "", + val profileImage: String = "basic", val isButtonValid: Boolean = false, val authId: String = "", val showBottomSheet: Boolean = false From acd21dbef513494121ec33ca4ffbbbf1d1e7ac77 Mon Sep 17 00:00:00 2001 From: boiledegg Date: Sun, 8 Sep 2024 23:31:01 +0900 Subject: [PATCH 33/33] =?UTF-8?q?[DEL/#223]=20=EB=9D=BC=EC=9D=B4=EB=B8=8C?= =?UTF-8?q?=EB=9F=AC=EB=A6=AC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/designsystem/component/item/TerningLottieAnimation.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt b/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt index a3468d931..1ff5c5df3 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/item/TerningLottieAnimation.kt @@ -7,7 +7,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.RectangleShape import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec -import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.rememberLottieComposition @Composable