summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2023-10-23 16:18:49 +0000
committercyberta <cyberta@riseup.net>2023-10-23 16:18:49 +0000
commitd9189bc869cee26ed46c3892385ce0cf4e7fcaaa (patch)
treee989949a614da09545a1642f44c4f4b095cbb886
parent9ad95a20f7500e3b52ae0cc50609635e8c73205f (diff)
parent5413bb839b60c890908c74e59987cfa8d0dd8921 (diff)
Merge branch 'improve_action_bar_tint_colors' into 'master'
Improve action bar tint colors See merge request leap/bitmask_android!256
-rw-r--r--app/src/androidTest/java/se/leap/bitmaskclient/base/ProviderBaseTest.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java14
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java1
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java19
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/fragments/LogFragment.java11
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java16
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java22
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/views/ActionBarTitle.java4
-rw-r--r--app/src/main/res/values-sw600dp/dimens.xml2
-rw-r--r--app/src/main/res/values/colors.xml2
-rw-r--r--app/src/main/res/values/dimens.xml2
-rw-r--r--app/src/test/resources/v4/riseup.net.cert94
12 files changed, 124 insertions, 65 deletions
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/base/ProviderBaseTest.java b/app/src/androidTest/java/se/leap/bitmaskclient/base/ProviderBaseTest.java
index 8efc6e4b..68676bee 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/base/ProviderBaseTest.java
+++ b/app/src/androidTest/java/se/leap/bitmaskclient/base/ProviderBaseTest.java
@@ -1,6 +1,5 @@
package se.leap.bitmaskclient.base;
-import static android.content.Context.MODE_PRIVATE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static androidx.test.espresso.Espresso.onData;
import static androidx.test.espresso.Espresso.onView;
@@ -15,7 +14,6 @@ import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.anything;
import static org.hamcrest.Matchers.is;
-import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
import static utils.CustomInteractions.tryResolve;
import android.app.Instrumentation;
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java b/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java
index b459f75d..7dd01ccb 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java
@@ -46,6 +46,7 @@ import static se.leap.bitmaskclient.providersetup.ProviderAPI.USER_MESSAGE;
import android.content.Context;
import android.content.Intent;
+import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
@@ -93,7 +94,6 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
private NavigationDrawerFragment navigationDrawerFragment;
public final static String ACTION_SHOW_VPN_FRAGMENT = "action_show_vpn_fragment";
- public final static String ACTION_SHOW_LOG_FRAGMENT = "action_show_log_fragment";
public final static String ACTION_SHOW_DIALOG_FRAGMENT = "action_show_dialog_fragment";
public final static String ACTION_SHOW_MOTD_FRAGMENT = "action_show_motd_fragment";
@@ -150,6 +150,7 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
return;
}
+ @ColorInt int tintColor;
Fragment fragment = null;
switch (intent.getAction()) {
case ACTION_SHOW_VPN_FRAGMENT:
@@ -161,6 +162,8 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
bundle.putParcelable(PROVIDER_KEY, provider);
fragment.setArguments(bundle);
showActionBar();
+ int color = ((ActionBarTitle) getSupportActionBar().getCustomView()).getTitleTextColor();
+ setActionBarToggleColor(color);
break;
case ACTION_SHOW_MOTD_FRAGMENT:
fragment = new MotdFragment();
@@ -171,10 +174,6 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
fragment.setArguments(motdBundle);
hideActionBar();
break;
- case ACTION_SHOW_LOG_FRAGMENT:
- fragment = new LogFragment();
- showActionBar();
- break;
case ACTION_SHOW_DIALOG_FRAGMENT:
if (intent.hasExtra(EIP.ERRORID)) {
String errorId = intent.getStringExtra(EIP.ERRORID);
@@ -207,6 +206,7 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
@ColorInt int titleColor = ContextCompat.getColor(context, R.color.colorActionBarTitleFont);
actionBarTitle.setTitleTextColor(titleColor);
+ actionBarTitle.setSubtitleTextColor(titleColor);
actionBarTitle.setCentered(BuildConfig.actionbar_center_title);
if (BuildConfig.actionbar_center_title) {
@@ -220,6 +220,10 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
}
}
+ public void setActionBarToggleColor(int color) {
+ navigationDrawerFragment.setDrawerToggleColor(this, color);
+ }
+
private void hideActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
index f50b69a5..670cdfd8 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
@@ -416,6 +416,7 @@ public class EipFragment extends Fragment implements Observer {
private void setActivityBarColor(@ColorRes int primaryColor, @ColorRes int secondaryColor) {
ViewHelper.setActivityBarColor(getActivity(), primaryColor, secondaryColor, R.color.actionbar_connectivity_state_text_color_dark);
+ ((MainActivity) getActivity()).setActionBarToggleColor(R.color.actionbar_connectivity_state_text_color_dark);
}
private void handleNewState() {
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java
index 89b167f3..07608211 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java
@@ -5,6 +5,8 @@
package se.leap.bitmaskclient.base.fragments;
+import static se.leap.bitmaskclient.R.string.exclude_apps_fragment_title;
+
import android.Manifest;
import android.app.Activity;
import android.content.Context;
@@ -41,8 +43,6 @@ import se.leap.bitmaskclient.base.utils.PreferenceHelper;
import se.leap.bitmaskclient.base.utils.ViewHelper;
import se.leap.bitmaskclient.base.views.SimpleCheckBox;
-import static se.leap.bitmaskclient.R.string.exclude_apps_fragment_title;
-
/**
* Created by arne on 16.11.14.
*/
@@ -271,7 +271,6 @@ public class ExcludeAppsFragment extends Fragment implements AdapterView.OnItemC
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.allowed_apps, menu);
-
SearchView searchView = (SearchView) menu.findItem( R.id.app_search_widget ).getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
@@ -298,9 +297,23 @@ public class ExcludeAppsFragment extends Fragment implements AdapterView.OnItemC
return false;
});
+ tintSearchViewChild(searchView);
super.onCreateOptionsMenu(menu, inflater);
}
+ private void tintSearchViewChild(ViewGroup view) {
+ for (int i = 0; i < view.getChildCount(); i++) {
+ View v = view.getChildAt(i);
+ if (v instanceof ViewGroup) {
+ tintSearchViewChild((ViewGroup) v);
+ }
+ if (v instanceof ImageView) {
+ ((ImageView) v).setColorFilter(getResources().getColor(R.color.colorActionBarTitleFont),
+ android.graphics.PorterDuff.Mode.SRC_IN);
+ }
+ }
+ }
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.allowed_vpn_apps, container, false);
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/LogFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/LogFragment.java
index c7dd25da..56b7259e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/LogFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/LogFragment.java
@@ -8,6 +8,7 @@ package se.leap.bitmaskclient.base.fragments;
import static de.blinkt.openvpn.core.OpenVPNService.humanReadableByteCount;
import static se.leap.bitmaskclient.R.string.log_fragment_title;
import static se.leap.bitmaskclient.base.utils.ViewHelper.setActionBarSubtitle;
+import static se.leap.bitmaskclient.base.utils.ViewHelper.setDefaultActivityBarColor;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -60,6 +61,7 @@ import de.blinkt.openvpn.core.VpnStatus.LogListener;
import de.blinkt.openvpn.core.VpnStatus.StateListener;
import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.base.utils.PreferenceHelper;
+import se.leap.bitmaskclient.base.utils.ViewHelper;
public class LogFragment extends ListFragment implements StateListener, SeekBar.OnSeekBarChangeListener, RadioGroup.OnCheckedChangeListener, VpnStatus.ByteCountListener {
public static final String TAG = LogFragment.class.getSimpleName();
@@ -432,11 +434,11 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.f_log, menu);
- if (getResources().getBoolean(R.bool.logSildersAlwaysVisible))
+ ViewHelper.tintMenuIcons(getContext(), menu, R.color.colorActionBarTitleFont);
+ if (getResources().getBoolean(R.bool.logSlidersAlwaysVisible))
menu.removeItem(R.id.toggle_time);
}
-
@Override
public void onResume() {
super.onResume();
@@ -522,7 +524,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
mLogLevelSlider.setOnSeekBarChangeListener(this);
- if (getResources().getBoolean(R.bool.logSildersAlwaysVisible))
+ if (getResources().getBoolean(R.bool.logSlidersAlwaysVisible))
mOptionsLayout.setVisibility(View.VISIBLE);
mUpStatus = v.findViewById(R.id.speedUp);
@@ -532,6 +534,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
mOptionsLayout.setVisibility(View.VISIBLE);
setActionBarSubtitle(this, log_fragment_title);
+ setDefaultActivityBarColor(getActivity());
return v;
}
@@ -545,7 +548,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
@Override
public void onAttach(Context context) {
super.onAttach(context);
- if (getResources().getBoolean(R.bool.logSildersAlwaysVisible)) {
+ if (getResources().getBoolean(R.bool.logSlidersAlwaysVisible)) {
mShowOptionsLayout = true;
if (mOptionsLayout != null)
mOptionsLayout.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java
index a06fee5d..60c21c40 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java
@@ -46,7 +46,9 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.graphics.drawable.DrawerArrowDrawable;
import androidx.appcompat.widget.Toolbar;
+import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
@@ -64,7 +66,6 @@ import se.leap.bitmaskclient.base.utils.PreferenceHelper;
import se.leap.bitmaskclient.base.views.IconSwitchEntry;
import se.leap.bitmaskclient.base.views.IconTextEntry;
import se.leap.bitmaskclient.eip.EipStatus;
-import se.leap.bitmaskclient.providersetup.ProviderListActivity;
import se.leap.bitmaskclient.providersetup.activities.SetupActivity;
import se.leap.bitmaskclient.tethering.TetheringObservable;
@@ -202,6 +203,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
activity.invalidateOptionsMenu();
}
};
+ setDrawerToggleColor(activity, ContextCompat.getColor(activity, R.color.amber200));
}
private void setupEntries() {
@@ -222,6 +224,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
account.setText(currentProvider.getName());
account.setOnClickListener((buttonView) -> {
Fragment fragment = new EipFragment();
+ setDrawerToggleColor(drawerView.getContext(), ContextCompat.getColor(drawerView.getContext(), R.color.actionbar_connectivity_state_text_color_dark));
Bundle arguments = new Bundle();
arguments.putParcelable(PROVIDER_KEY, currentProvider);
fragment.setArguments(arguments);
@@ -230,6 +233,13 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
});
}
+ public void setDrawerToggleColor(Context context, int color) {
+ DrawerArrowDrawable drawable = new DrawerArrowDrawable(context);
+ drawable.setTint(color);
+ drawable.setColor(color);
+ drawerToggle.setDrawerArrowDrawable(drawable);
+ }
+
private void initSwitchProviderEntry() {
if (isDefaultBitmask()) {
IconTextEntry switchProvider = drawerView.findViewById(R.id.switch_provider);
@@ -249,6 +259,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
advancedSettings.setOnClickListener(v -> {
closeDrawer();
Fragment fragment = new SettingsFragment();
+ setDrawerToggleColor(drawerView.getContext(), ContextCompat.getColor(drawerView.getContext(), R.color.colorActionBarTitleFont));
fragmentManager.replace(R.id.main_container, fragment, MainActivity.TAG);
});
}
@@ -298,6 +309,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
return;
}
Fragment fragment = new GatewaySelectionFragment();
+ setDrawerToggleColor(drawerView.getContext(), ContextCompat.getColor(drawerView.getContext(), R.color.colorActionBarTitleFont));
fragmentManager.replace(R.id.main_container, fragment, MainActivity.TAG);
});
}
@@ -321,6 +333,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
log.setOnClickListener((buttonView) -> {
closeDrawer();
Fragment fragment = new LogFragment();
+ setDrawerToggleColor(drawerView.getContext(), ContextCompat.getColor(drawerView.getContext(), R.color.colorActionBarTitleFont));
fragmentManager.replace(R.id.main_container, fragment, MainActivity.TAG);
});
}
@@ -331,6 +344,7 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
about.setOnClickListener((buttonView) -> {
closeDrawer();
Fragment fragment = new AboutFragment();
+ setDrawerToggleColor(drawerView.getContext(), ContextCompat.getColor(drawerView.getContext(), R.color.colorActionBarTitleFont));
fragmentManager.replace(R.id.main_container, fragment, MainActivity.TAG);
});
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java
index ebf26048..ed7bd9f2 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/ViewHelper.java
@@ -9,10 +9,13 @@ import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -24,7 +27,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
import androidx.fragment.app.Fragment;
import se.leap.bitmaskclient.R;
@@ -116,6 +121,12 @@ public class ViewHelper {
if (customView instanceof ActionBarTitle) {
ActionBarTitle actionBarTitle = (ActionBarTitle) customView;
actionBarTitle.setTitleTextColor(ContextCompat.getColor(bar.getThemedContext(), actionBarTextColor));
+ actionBarTitle.setSubtitleTextColor(ContextCompat.getColor(bar.getThemedContext(), actionBarTextColor));
+ }
+
+ Toolbar tb = activity.findViewById(R.id.toolbar);
+ if (tb != null && tb.getOverflowIcon() != null) {
+ tb.getOverflowIcon().setTint(ContextCompat.getColor(bar.getThemedContext(), actionBarTextColor));
}
}
@@ -139,6 +150,17 @@ public class ViewHelper {
return rtnValue;
}
+ public static void tintMenuIcons(Context context, Menu menu, @ColorRes int color) {
+ for (int i = 0; i < menu.size(); i++) {
+ MenuItem item = menu.getItem(i);
+ Drawable normalDrawable = item.getIcon();
+ Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable);
+ DrawableCompat.setTint(wrapDrawable, context.getResources().getColor(color));
+
+ item.setIcon(wrapDrawable);
+ }
+ }
+
public static void setActionBarTextColor(ActionBar bar, @ColorRes int titleColor) {
CharSequence titleCharSequence = bar.getTitle();
if (titleCharSequence == null || titleCharSequence.length() == 0) {
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/views/ActionBarTitle.java b/app/src/main/java/se/leap/bitmaskclient/base/views/ActionBarTitle.java
index 3aa21ae9..a754efa9 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/views/ActionBarTitle.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/views/ActionBarTitle.java
@@ -67,6 +67,10 @@ public class ActionBarTitle extends LinearLayoutCompat {
actionBarTitle.setTextColor(color);
}
+ public @ColorInt int getTitleTextColor() {
+ return actionBarTitle.getCurrentTextColor();
+ }
+
public void setSubtitleTextColor(@ColorInt int color) {
actionBarSubtitle.setTextColor(color);
}
diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml
index fb8e7ded..ad0fae2c 100644
--- a/app/src/main/res/values-sw600dp/dimens.xml
+++ b/app/src/main/res/values-sw600dp/dimens.xml
@@ -5,7 +5,7 @@
-->
<resources>
- <bool name="logSildersAlwaysVisible">true</bool>
+ <bool name="logSlidersAlwaysVisible">true</bool>
<dimen name="bitmask_logo">72dp</dimen>
<dimen name="bitmask_logo_compact">56dp</dimen>
<dimen name="stdpadding">16dp</dimen>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 10d802cd..0ad20a63 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -80,7 +80,7 @@
<color name="actionbar_connectivity_state_text_color_light">@color/white</color>
<!-- default action bar colors used in other fragments than EipFragment -->
<color name="colorActionBarTitleFont">@color/white</color>
- <color name="colorActionBarSubtitleFont">@color/black800</color>
+ <color name="colorActionBarSubtitleFont">@color/white</color>
<!-- background color of the splash screen -->
<color name="windowSplashScreenBackgroundColor">@color/white</color>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index b17683ae..edda28c7 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -8,7 +8,7 @@
<dimen name="stdpadding">8dp</dimen>
<dimen name="compact_padding">3dp</dimen>
<dimen name="standard_margin">8dp</dimen>
- <bool name="logSildersAlwaysVisible">false</bool>
+ <bool name="logSlidersAlwaysVisible">false</bool>
<dimen name="diameter">48dp</dimen>
diff --git a/app/src/test/resources/v4/riseup.net.cert b/app/src/test/resources/v4/riseup.net.cert
index f9b15e9f..711a7067 100644
--- a/app/src/test/resources/v4/riseup.net.cert
+++ b/app/src/test/resources/v4/riseup.net.cert
@@ -1,54 +1,54 @@
-----BEGIN RSA PRIVATE KEY-----
-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
+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
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
-MIIEmzCCAoOgAwIBAgIQKB/oFW/IM1XFSMBk4QgsSTANBgkqhkiG9w0BAQsFADB1
+MIIEmzCCAoOgAwIBAgIQHybvsqrpyjLQlh3K46x6ozANBgkqhkiG9w0BAQsFADB1
MRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlz
ZXVwLm5ldDE8MDoGA1UEAwwzUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EgKGNsaWVu
-dCBjZXJ0aWZpY2F0ZXMgb25seSEpMB4XDTIzMDYxOTAwMDAwMFoXDTIzMDkxOTAw
-MDAwMFowLTErMCkGA1UEAwwiVU5MSU1JVEVEMjV2bzYxZ3U5Mzc5NjhyeXJvdWts
-YnJnZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOKk+vW7IVImw70C
-OgsYxwq9gpKjX2OZ/nopjEvNZ6R+HboF5NqvrX5/O07UqTFAI48pHFAIV+FhJ/fN
-r8UX5MYwz4aXKCdYyECDJ8G09jKbnxGoFEbSu/TBy+Lrsn7llarcMVvYCP4gyOFo
-lJWmV/kxxnDI0BUpUUNjyQr/AVEqEbKpAFVvF1iugCy4d6ThmwzZrgtgM+UGRewj
-wW1O1/0Y0ckfNAptfvrY+KQNSVy3OX78dpBlTOsVJ4oYmnM21TP+kpUTYUsyBHWR
-QKgt9BtwMaicHeyt/cvh9nHwSB/GlVDqfuXeeNMpwkaDnN87sRBbDszsd175fSWZ
-a8faajMCAwEAAaNvMG0wHQYDVR0OBBYEFBwYCc4Ox1Fb2/tWgQVu+k/SAakHMAsG
+dCBjZXJ0aWZpY2F0ZXMgb25seSEpMB4XDTIzMDkyMzAwMDAwMFoXDTIzMTIyMzAw
+MDAwMFowLTErMCkGA1UEAwwiVU5MSU1JVEVEZHZiYW45cXBsZXUxcGl0b3lhZnZi
+OGFkNDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMkVKGTju40G+WiM
+iQOSPKJuljtr0KDQ8sArLlReNk4nXTyELfyReHsXG6MxbviGSS3dtJ9/s81EdEh8
+N9Ji2AI51ZkWn/Fw/dcYq5XOC1oYV6hz2/lrr4AXgC54Q3Qma9aym534sGGHhkZK
+M2n0i+tQFty7bmgP7lvzFn65S2K8tExv6ihWLfVTYO9ryhP/j0OOG7C6VAQfTrGA
+UhteXQuKIae7TefT+xmdBebSjhnZzCci9dDPWxBCEkua5YKZlWeflddKvN6ruH0j
+chqrD1XYiNCYbCmEpcqjMUyy1j7PeS2mkVNLhlbdHKtzFDvrzfYM3M0tTCUtQ7pc
+TIzJzDECAwEAAaNvMG0wHQYDVR0OBBYEFEzWvshjpfxlaIp1lqAzun0SJsUbMAsG
A1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAJBgNVHRMEAjAAMB8GA1Ud
-IwQYMBaAFBf0G9XlKgEBTWuiXTYKKQmWZYBGMA0GCSqGSIb3DQEBCwUAA4ICAQBl
-84EhWvv8L/nODg6ULqbyZMOIycN1l9up8ruuG3Gz/jFfj6DQZHJTxRXaFhKrK0uR
-wOgccDvme3w31bPbpuKOGfNwI9hotWKkF8qqZ6Gd1msic71DsLxtGzz8gVd+ofxI
-/U/bMh259hFyk2wE39YJVJywPQgJc+wsOsgijLcg71JJzMX2LlAv7sdkWwPljqg7
-BL18gUqJLG5sAYMskRpPI6ls7DNs2fgRxJr4obR6ejPZ697dbNx8IbOOXFl3Su+k
-WZE0wM/bHPP7agG+F4xsjLG6ZyrshaHnt0t/1O6HlJVyC6vht6N2MNeC7fRxAzdf
-PTK7F5SBY3zO3rVVypHP0mBtKwKEqlkKLKKDNowu/677Lis4sqYWaKjGmFIFo7J0
-O6v+PeTEUULMMqY00z4qWVOKZ4kaM3cnEeiWVQKB9D+jcP7omvy2YZEXNSmUVDtM
-qzh/+IzJ0wmrREpYQUSjWQkN8SoEeLATsHvT0dFnlblt6xzr/Vga8nczilPtgagw
-Jx5hmLQ+OnGOF1C00S+7xb3iOFNgH+dyjKIoDpKUO4+3LPSJGkBRGED4rKSCmrUn
-T2mgslMdAb/5lYruhgwEXscJBnK9RdT6D5CJEDISljsSfPBQLHx13uHAC+iCKT0w
-nWFNpoq61mpXWBCkqSgfH3I8wS3W53T6DSusRdmyqg==
+IwQYMBaAFBf0G9XlKgEBTWuiXTYKKQmWZYBGMA0GCSqGSIb3DQEBCwUAA4ICAQAR
+ZzHo/Sn14yISzWnlvmQA7kqICm5j0mENib2BhaM7b6kmZRzvt9s9BwD83DYQwfCV
+VBeGx1YkXCHsUEVcqJCXF/of9CsUUvUhMMp+fd068OdrJuPVxglOCmY4zMIfSlQW
+YLvBalER1ilm8IuVrSVwBHP1vpnKj/g6W8gufZn06Tq7/c6X+QOrjebijJ4WuRtm
+V3mqEoMcBOEaHk9T7Lxe0yixrssUm13yJmCz3R5x6jRDtaVnQ95VwgBqnrJpXPgb
+sE2GrR5E74e+PbNQPfJJSobtYpJifp97wOpHFy2z5EcHyRuLdD3PX3it9mz5b0FJ
+GwMb+YmgIWI8oAngWj8KiELDTWpKH6DdrQBljARHwjjBAG+rSYyWwkKKO2Nk8nsz
+cnBlYY2rqLJ3gXc9oNDFWlh96K9rGy7bGcY0ALSxrLWFrpODQIKerjSNcsOhXp4D
+6OS603EPgFKSo1bca9wKkTIjJIsIXjTfJEKXR22huhJhkJsTIg5z02N2dBJfmNkz
+nffWtSk7tu8+CNEGruWfQ2TzYyknS5D0E2Eba07W/39gs6uXncrXwIidGg/G8D/h
+mpw7L/+f41za+mlykz2ivoUJsDb7TsQeW4O/Oj5wnekyAnJKHUJy9O8y4vpqJkUn
++xLUpVnNpH6lAzAV3xODOVg2pTbwnkCnBkCDUx3Eww==
-----END CERTIFICATE----- \ No newline at end of file