From 2a1344a50e37bf9abc039c14ad30027ff2504a9e Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 17 Jun 2021 12:00:53 +0800 Subject: [PATCH 1/8] [Settings] Code Refactor - ActiveSubsciptionsListener Fix the spelling with "ActiveSubsciptionsListener" into "ActiveSubscriptionsListener". Bug: 191321218 Test: build pass Change-Id: I7282c7ba9fbb793056c12928843b6eef59eb2213 --- ....java => ActiveSubscriptionsListener.java} | 6 ++--- .../telephony/MobileNetworkSettings.java | 22 +++++++++---------- ...a => ActiveSubscriptionsListenerTest.java} | 10 ++++----- 3 files changed, 19 insertions(+), 19 deletions(-) rename src/com/android/settings/network/{ActiveSubsciptionsListener.java => ActiveSubscriptionsListener.java} (98%) rename tests/unit/src/com/android/settings/network/{ActiveSubsciptionsListenerTest.java => ActiveSubscriptionsListenerTest.java} (94%) diff --git a/src/com/android/settings/network/ActiveSubsciptionsListener.java b/src/com/android/settings/network/ActiveSubscriptionsListener.java similarity index 98% rename from src/com/android/settings/network/ActiveSubsciptionsListener.java rename to src/com/android/settings/network/ActiveSubscriptionsListener.java index 26f644145b2..91a4c0a0de1 100644 --- a/src/com/android/settings/network/ActiveSubsciptionsListener.java +++ b/src/com/android/settings/network/ActiveSubscriptionsListener.java @@ -39,7 +39,7 @@ import java.util.concurrent.atomic.AtomicInteger; /** * A listener for active subscription change */ -public abstract class ActiveSubsciptionsListener +public abstract class ActiveSubscriptionsListener extends SubscriptionManager.OnSubscriptionsChangedListener implements AutoCloseable { @@ -73,7 +73,7 @@ public abstract class ActiveSubsciptionsListener * @param looper {@code Looper} of this listener * @param context {@code Context} of this listener */ - public ActiveSubsciptionsListener(Looper looper, Context context) { + public ActiveSubscriptionsListener(Looper looper, Context context) { this(looper, context, SubscriptionManager.INVALID_SUBSCRIPTION_ID); } @@ -84,7 +84,7 @@ public abstract class ActiveSubsciptionsListener * @param context {@code Context} of this listener * @param subscriptionId for subscription on this listener */ - public ActiveSubsciptionsListener(Looper looper, Context context, int subscriptionId) { + public ActiveSubscriptionsListener(Looper looper, Context context, int subscriptionId) { super(looper); mLooper = looper; mContext = context; diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index f54c18ba5d3..adf399fb953 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -37,7 +37,7 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.datausage.BillingCyclePreferenceController; import com.android.settings.datausage.DataUsageSummaryPreferenceController; -import com.android.settings.network.ActiveSubsciptionsListener; +import com.android.settings.network.ActiveSubscriptionsListener; import com.android.settings.network.CarrierWifiTogglePreferenceController; import com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController; import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController; @@ -74,9 +74,9 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { private UserManager mUserManager; private String mClickedPrefKey; - private ActiveSubsciptionsListener mActiveSubsciptionsListener; + private ActiveSubscriptionsListener mActiveSubscriptionsListener; private boolean mDropFirstSubscriptionChangeNotify; - private int mActiveSubsciptionsListenerCount; + private int mActiveSubscriptionsListenerCount; public MobileNetworkSettings() { super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); @@ -218,8 +218,8 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { super.onResume(); // TODO: remove log after fixing b/182326102 Log.d(LOG_TAG, "onResume() subId=" + mSubId); - if (mActiveSubsciptionsListener == null) { - mActiveSubsciptionsListener = new ActiveSubsciptionsListener( + if (mActiveSubscriptionsListener == null) { + mActiveSubscriptionsListener = new ActiveSubscriptionsListener( getContext().getMainLooper(), getContext(), mSubId) { public void onChanged() { onSubscriptionDetailChanged(); @@ -227,7 +227,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { }; mDropFirstSubscriptionChangeNotify = true; } - mActiveSubsciptionsListener.start(); + mActiveSubscriptionsListener.start(); } private void onSubscriptionDetailChanged() { @@ -236,21 +236,21 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { Log.d(LOG_TAG, "Callback during onResume()"); return; } - mActiveSubsciptionsListenerCount++; - if (mActiveSubsciptionsListenerCount != 1) { + mActiveSubscriptionsListenerCount++; + if (mActiveSubscriptionsListenerCount != 1) { return; } ThreadUtils.postOnMainThread(() -> { - mActiveSubsciptionsListenerCount = 0; + mActiveSubscriptionsListenerCount = 0; redrawPreferenceControllers(); }); } @Override public void onDestroy() { - if (mActiveSubsciptionsListener != null) { - mActiveSubsciptionsListener.stop(); + if (mActiveSubscriptionsListener != null) { + mActiveSubscriptionsListener.stop(); } super.onDestroy(); } diff --git a/tests/unit/src/com/android/settings/network/ActiveSubsciptionsListenerTest.java b/tests/unit/src/com/android/settings/network/ActiveSubscriptionsListenerTest.java similarity index 94% rename from tests/unit/src/com/android/settings/network/ActiveSubsciptionsListenerTest.java rename to tests/unit/src/com/android/settings/network/ActiveSubscriptionsListenerTest.java index efa21ae6bba..27bc40c4847 100644 --- a/tests/unit/src/com/android/settings/network/ActiveSubsciptionsListenerTest.java +++ b/tests/unit/src/com/android/settings/network/ActiveSubscriptionsListenerTest.java @@ -49,7 +49,7 @@ import java.util.ArrayList; import java.util.List; @RunWith(AndroidJUnit4.class) -public class ActiveSubsciptionsListenerTest { +public class ActiveSubscriptionsListenerTest { private static final int SUB_ID1 = 3; private static final int SUB_ID2 = 7; @@ -68,7 +68,7 @@ public class ActiveSubsciptionsListenerTest { private SubscriptionManager mSubscriptionManager; private List mActiveSubscriptions; - private ActiveSubsciptionsListenerImpl mListener; + private ActiveSubscriptionsListenerImpl mListener; private BroadcastReceiver mReceiver; @Before @@ -83,7 +83,7 @@ public class ActiveSubsciptionsListenerTest { addMockSubscription(SUB_ID2); doReturn(mActiveSubscriptions).when(mSubscriptionManager).getActiveSubscriptionInfoList(); - mListener = spy(new ActiveSubsciptionsListenerImpl(Looper.getMainLooper(), mContext)); + mListener = spy(new ActiveSubscriptionsListenerImpl(Looper.getMainLooper(), mContext)); doReturn(mSubscriptionManager).when(mListener).getSubscriptionManager(); mReceiver = mListener.getSubscriptionChangeReceiver(); } @@ -99,8 +99,8 @@ public class ActiveSubsciptionsListenerTest { mListener.close(); } - public class ActiveSubsciptionsListenerImpl extends ActiveSubsciptionsListener { - public ActiveSubsciptionsListenerImpl(Looper looper, Context context) { + public class ActiveSubscriptionsListenerImpl extends ActiveSubscriptionsListener { + public ActiveSubscriptionsListenerImpl(Looper looper, Context context) { super(looper, context); } From 666178a0dc71d5f2d12fcb46170ca82e034ddc6e Mon Sep 17 00:00:00 2001 From: Wendy Sung Date: Tue, 22 Jun 2021 02:02:18 +0000 Subject: [PATCH 2/8] Add Adaptive Preferences Lottie File for Dark Mode Test: make Settings Bug: 178199757 Change-Id: I22751a4ea3c25a252c641871f1b1249f6ff92bcc --- res/raw/auto_awesome_battery_lottie.json | 1 + res/xml/smart_battery_detail.xml | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 res/raw/auto_awesome_battery_lottie.json diff --git a/res/raw/auto_awesome_battery_lottie.json b/res/raw/auto_awesome_battery_lottie.json new file mode 100644 index 00000000000..6a51b6695b7 --- /dev/null +++ b/res/raw/auto_awesome_battery_lottie.json @@ -0,0 +1 @@ +{"v":"5.6.5","fr":60,"ip":0,"op":240,"w":412,"h":300,"nm":"Adaptive_Battery","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue50","cl":"blue50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95.824,105.277,0],"ix":2},"a":{"a":0,"k":[72.737,21.013,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.311,0.172],[0.187,0.001],[0,0],[0,0],[0,0],[0,0],[0.392,-0.207],[0.109,-0.141]],"o":[[0,0],[-0.108,-0.14],[-0.402,-0.222],[0,0],[0,0],[0,0],[0,0],[-0.185,0.001],[-0.33,0.174],[0,0]],"v":[[0.001,6.453],[12.127,-5.673],[11.511,-6.203],[10.543,-6.453],[7.25,-6.453],[0.001,0.796],[-7.248,-6.453],[-10.541,-6.453],[-11.481,-6.218],[-12.127,-5.676]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.737,21.013],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95.825,108.4,0],"ix":2},"a":{"a":0,"k":[72.738,24.136,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.104,0],[0,0],[0,1.104],[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0]],"o":[[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,1.104]],"v":[[10.542,9.576],[-10.542,9.576],[-12.542,7.576],[-12.542,-7.576],[-10.542,-9.576],[10.542,-9.576],[12.542,-7.576],[12.542,7.576]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.738,24.136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".blue600","cl":"blue600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95.825,107.728,0],"ix":2},"a":{"a":0,"k":[72.739,23.464,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.984],[11.984,0],[0,11.984],[-11.984,0]],"o":[[0,11.984],[-11.984,0],[0,-11.984],[11.984,0]],"v":[[21.699,0],[-0.001,21.699],[-21.699,0],[-0.001,-21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.101960784314,0.450980392157,0.909803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.739,23.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green50","cl":"green50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[44.909,108.585,0],"ix":2},"a":{"a":0,"k":[21.822,24.322,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.102,27.297],[23.559,27.297]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.956862745098,0.917647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.102,21.346],[28.542,21.346]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.956862745098,0.917647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[21.822,24.322],"ix":2},"a":{"a":0,"k":[21.822,24.322],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[44.909,107.713,0],"ix":2},"a":{"a":0,"k":[21.822,23.45,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,2.275],[7.54,0],[0,-7.539],[-7.539,0],[-1.886,0.984],[0,0]],"o":[[0.983,-1.886],[0,-7.539],[-7.539,0],[0,7.54],[2.275,0],[0,0],[0,0]],"v":[[12.104,6.3],[13.652,-0.001],[-0.001,-13.652],[-13.652,-0.001],[-0.001,13.652],[6.301,12.104],[12.104,12.104]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.822,23.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green600","cl":"green600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[45.035,107.728,0],"ix":2},"a":{"a":0,"k":[21.948,23.464,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,11.984],[-11.984,0],[0,-11.984],[11.984,0]],"o":[[0,-11.984],[11.984,0],[0,11.984],[-11.984,0]],"v":[[-21.699,0],[0.001,-21.699],[21.699,0],[0.001,21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.117647058824,0.556862745098,0.243137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.948,23.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[311.765,105.986,0],"ix":2},"a":{"a":0,"k":[288.678,21.723,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.425,1.49],[-2.425,1.49],[-2.425,-1.49],[2.425,-1.49]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.678,21.723],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue50","cl":"blue50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.229,106.162,0],"ix":2},"a":{"a":0,"k":[293.142,21.899,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.707,6.449],[-8.707,6.449],[-8.707,-6.449],[8.707,-6.449]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.142,24.776],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.339,107.259,0],"ix":2},"a":{"a":0,"k":[316.339,107.259,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[286.254,12.573],[286.254,17.652]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[300.248,12.573],[300.248,17.652]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[293.251,15.113],"ix":2},"a":{"a":0,"k":[293.251,15.113],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[316.229,106.162],"ix":2},"a":{"a":0,"k":[293.142,21.899],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.223,9.152],[-11.223,9.152],[-11.223,-9.152],[11.223,-9.152]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.252,24.266],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[316.339,108.53],"ix":2},"a":{"a":0,"k":[293.252,24.266],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".blue600","cl":"blue600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.339,107.728,0],"ix":2},"a":{"a":0,"k":[293.252,23.464,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.984],[11.984,0],[0,11.984],[-11.984,0]],"o":[[0,11.984],[-11.984,0],[0,-11.984],[11.984,0]],"v":[[21.698,0],[0,21.699],[-21.698,0],[0,-21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.101960784314,0.450980392157,0.909803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.252,23.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red50","cl":"red50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[367.331,107.483,0],"ix":2},"a":{"a":0,"k":[344.245,22.219,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.333,0.77],[0,0],[0,-1.539],[0,0],[-1.333,0.77],[0,0]],"o":[[0,0],[-1.333,-0.77],[0,0],[0,1.539],[0,0],[1.333,-0.77]],"v":[[3.478,-1.732],[-1.811,-4.785],[-4.811,-3.053],[-4.811,3.053],[-1.811,4.785],[3.478,1.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[344.411,22.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[366.965,107.483,0],"ix":2},"a":{"a":0,"k":[343.878,22.219,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.104,0],[0,0],[0,1.104],[0,0],[-1.105,0],[0,0],[0,-1.105],[0,0]],"o":[[0,0],[-1.105,0],[0,0],[0,-1.105],[0,0],[1.104,0],[0,0],[0,1.104]],"v":[[9.885,10.599],[-9.885,10.599],[-11.885,8.599],[-11.885,-8.599],[-9.885,-10.599],[9.885,-10.599],[11.885,-8.599],[11.885,8.599]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[343.878,22.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red600","cl":"red600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[366.964,107.482,0],"ix":2},"a":{"a":0,"k":[343.877,22.219,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.276,-11.98],[11.98,0.276],[-0.276,11.98],[-11.982,-0.276]],"o":[[-0.276,11.981],[-11.982,-0.276],[0.277,-11.981],[11.98,0.276]],"v":[[21.693,0.5],[-0.499,21.693],[-21.693,-0.5],[0.501,-21.693]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.850980392157,0.188235294118,0.145098039216,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[343.877,22.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red50","cl":"red50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[94.505,189.306,0],"ix":2},"a":{"a":0,"k":[71.418,105.042,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.735,0.244]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.735,-0.244]],"v":[[71.913,100.924],[69.976,107.049],[71.913,107.237],[73.726,101.424],[73.21,100.543]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":7,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":true},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[4.064,-4.734],[0.939,4.735],[-4.064,3.714]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[67.841,105.757],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.715,6.863],[1.715,0.929],[-1.715,-1.057],[0.141,-6.863]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[73.614,108.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.707,1.237],[0,0],[0.619,0],[0.265,0],[0,0],[0,0]],"o":[[-1.679,0],[0,0],[-0.353,-0.53],[-0.265,0],[0,0],[0,0],[0,0]],"v":[[5.939,1.648],[2.139,-0.473],[1.255,-1.886],[-0.247,-2.77],[-0.953,-2.682],[-4.716,-1.164],[-5.939,2.77]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[73.121,103.041],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.077,0],[0,1.077],[1.077,0],[0,-1.076]],"o":[[1.077,0],[0,-1.076],[-1.077,0],[0,1.077]],"v":[[0,1.958],[1.958,0],[0,-1.958],[-1.958,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74.597,96.86],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[71.418,105.042],"ix":2},"a":{"a":0,"k":[71.418,105.042],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red600","cl":"red600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95.825,189.162,0],"ix":2},"a":{"a":0,"k":[72.739,104.898,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.984],[11.984,0],[0,11.983],[-11.984,0]],"o":[[0,11.983],[-11.984,0],[0,-11.984],[11.984,0]],"v":[[21.699,0.001],[-0.001,21.699],[-21.699,0.001],[-0.001,-21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.850980392157,0.188235294118,0.145098039216,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.739,104.898],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_5","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".yellow50","cl":"yellow50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[45.036,190.901,0],"ix":2},"a":{"a":0,"k":[21.949,106.637,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[28.511,98.421],[28.511,114.853]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.96862745098,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.386,98.421],[15.386,114.853]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.96862745098,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[21.949,106.637],"ix":2},"a":{"a":0,"k":[21.949,106.637],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[45.035,189.253,0],"ix":2},"a":{"a":0,"k":[21.949,104.99,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.104,0],[0,0],[0,-1.105],[0,0]],"o":[[0,0],[0,-1.105],[0,0],[1.104,0],[0,0],[0,0]],"v":[[-3.014,2.014],[-3.014,-0.014],[-1.014,-2.014],[1.014,-2.014],[3.014,-0.014],[3.014,2.014]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[21.949,97.14],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.104,0],[0,0],[0,1.104],[0,0],[-1.105,0],[0,0],[0,-1.104],[0,0]],"o":[[0,0],[-1.105,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,1.104]],"v":[[8.57,8.216],[-8.57,8.216],[-10.57,6.216],[-10.57,-6.216],[-8.57,-8.216],[8.57,-8.216],[10.57,-6.216],[10.57,6.216]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.949,106.637],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[21.949,104.99],"ix":2},"a":{"a":0,"k":[21.949,104.99],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".yellow600","cl":"yellow600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[45.036,189.162,0],"ix":2},"a":{"a":0,"k":[21.949,104.898,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.984],[11.984,0],[0,11.983],[-11.984,0]],"o":[[0,11.983],[-11.984,0],[0,-11.984],[11.984,0]],"v":[[21.699,0.001],[-0.001,21.699],[-21.699,0.001],[-0.001,-21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976470588235,0.670588235294,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.949,104.898],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_6","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green50","cl":"green50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.338,187.297,0],"ix":2},"a":{"a":0,"k":[293.251,103.034,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.646],[2.645,0],[0,2.646],[-2.646,0]],"o":[[0,2.646],[-2.646,0],[0,-2.646],[2.645,0]],"v":[[4.79,0],[0,4.79],[-4.79,0],[0,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901960784314,0.956862745098,0.917647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.251,103.034],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.338,189.567,0],"ix":2},"a":{"a":0,"k":[293.251,105.304,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.281,4.281],[-4.28,-4.281],[4.281,-4.28]],"o":[[0,0],[-4.281,-4.28],[4.281,-4.281],[4.281,4.281],[0,0]],"v":[[0,13.768],[-7.751,6.016],[-7.751,-9.487],[7.751,-9.487],[7.751,6.016]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.251,104.769],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green600","cl":"green600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.338,189.162,0],"ix":2},"a":{"a":0,"k":[293.251,104.898,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,11.983],[-11.983,0],[0,-11.984],[11.985,0]],"o":[[0,-11.984],[11.985,0],[0,11.983],[-11.983,0]],"v":[[-21.698,0.001],[0,-21.699],[21.698,0.001],[0,21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.117647058824,0.556862745098,0.243137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.251,104.898],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_7","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".yellow50","cl":"yellow50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[372.222,189.563,0],"ix":2},"a":{"a":0,"k":[349.135,106.3,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[349.085,100.106],[349.085,112.494]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.96862745098,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[366.839,189.563,0],"ix":2},"a":{"a":0,"k":[343.752,106.3,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.961],[-0.638,0.622],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,-0.961],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.638,-0.622]],"v":[[8.704,-0.029],[9.739,-2.478],[9.739,-6.194],[-9.739,-6.194],[-9.739,6.194],[9.739,6.194],[9.739,2.42]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[343.752,106.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".yellow600","cl":"yellow600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[366.964,189.535,0],"ix":2},"a":{"a":0,"k":[343.877,106.271,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,11.984],[-11.983,0],[0,-11.983],[11.985,0]],"o":[[0,-11.983],[11.985,0],[0,11.984],[-11.983,0]],"v":[[-21.698,-0.001],[0,-21.699],[21.698,-0.001],[0,21.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976470588235,0.670588235294,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[343.877,106.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_8","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green600","cl":"green600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[239.851,142.625,0],"ix":2},"a":{"a":0,"k":[79.701,66.597,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.209],[0,0],[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0]],"o":[[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,-2.209],[0,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,0]],"v":[[31.851,-52.738],[35.851,-48.738],[35.851,58.416],[31.851,62.416],[-31.851,62.416],[-35.851,58.416],[-35.851,-48.738],[-31.851,-52.738],[-16.864,-52.738],[-16.864,-60.416],[-14.864,-62.416],[14.864,-62.416],[16.863,-60.416],[16.863,-52.738]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":25,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":240,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.117647058824,0.556862745098,0.243137254902,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":11.6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29,"s":[100]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":138,"s":[100]},{"t":150,"s":[0]}],"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[45.851,72.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"green","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":483,"st":-299,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".yellow600","cl":"yellow600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,200.202,0],"ix":2},"a":{"a":0,"k":[45.851,124.174,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.209],[0,0],[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0]],"o":[[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,-2.209],[0,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,0]],"v":[[31.851,-52.738],[35.851,-48.738],[35.851,58.416],[31.851,62.416],[-31.851,62.416],[-35.851,58.416],[-35.851,-48.738],[-31.851,-52.738],[-16.864,-52.738],[-16.864,-60.416],[-14.864,-62.416],[14.864,-62.416],[16.863,-60.416],[16.863,-52.738]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":25,"ix":1},"e":{"a":0,"k":50,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":240,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.976470588235,0.670588235294,0,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":7.732,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25.133,"s":[100]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":135.334,"s":[100]},{"t":147.333984375,"s":[0]}],"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[45.851,72.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"yellow","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":483,"st":-299,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red600","cl":"red600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[170.2,156.264,0],"ix":2},"a":{"a":0,"k":[10.05,80.236,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.209],[0,0],[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0]],"o":[[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,-2.209],[0,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,0]],"v":[[31.851,-52.738],[35.851,-48.738],[35.851,58.416],[31.851,62.416],[-31.851,62.416],[-35.851,58.416],[-35.851,-48.738],[-31.851,-52.738],[-16.864,-52.738],[-16.864,-60.416],[-14.864,-62.416],[14.864,-62.416],[16.863,-60.416],[16.863,-52.738]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":50,"ix":1},"e":{"a":0,"k":75,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":240,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.850980392157,0.188235294118,0.145098039216,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":3.867,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21.268,"s":[100]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":132.666,"s":[100]},{"t":144.666015625,"s":[0]}],"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[45.851,72.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"red","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":483,"st":-299,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".blue600","cl":"blue600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[204,97.116,0],"ix":2},"a":{"a":0,"k":[43.851,21.087,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.209],[0,0],[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0]],"o":[[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,-2.209],[0,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,0]],"v":[[31.851,-52.738],[35.851,-48.738],[35.851,58.416],[31.851,62.416],[-31.851,62.416],[-35.851,58.416],[-35.851,-48.738],[-31.851,-52.738],[-16.864,-52.738],[-16.864,-60.416],[-14.864,-62.416],[14.864,-62.416],[16.863,-60.416],[16.863,-52.738]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":75,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":240,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.101960784314,0.450980392157,0.909803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17.4,"s":[100]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":130,"s":[100]},{"t":142,"s":[0]}],"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[45.851,72.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"blue","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":483,"st":-299,"bm":0}]},{"id":"comp_9","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[205.639,149.71,0],"ix":2},"a":{"a":0,"k":[87.101,45.31,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,5.681],[0,0],[5.681,0],[0,0]],"o":[[0,0],[-5.682,0],[0,0],[0,-5.682],[0,0],[0,0]],"v":[[19.731,18.05],[10.36,18.05],[0.073,7.763],[0.073,-7.763],[-10.214,-18.05],[-19.731,-18.05]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":90,"s":[7]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":120,"s":[8]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":210,"s":[8]},{"t":240,"s":[7]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[24.731,23.05],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"12","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,5.681],[0,0],[-5.681,0],[0,0]],"o":[[0,0],[5.682,0],[0,0],[0,-5.682],[0,0],[0,0]],"v":[[-19.731,18.05],[-10.361,18.05],[-0.074,7.763],[-0.074,-7.763],[10.215,-18.05],[19.732,-18.05]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":90,"s":[7]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":120,"s":[2]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":210,"s":[2]},{"t":240,"s":[7]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[149.471,23.05],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"24","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-5.681],[0,0],[5.681,0],[0,0]],"o":[[0,0],[-5.682,0],[0,0],[0,5.682],[0,0],[0,0]],"v":[[19.731,-18.051],[10.36,-18.051],[0.073,-7.764],[0.073,7.763],[-10.214,18.051],[-19.731,18.051]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":90,"s":[7]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":120,"s":[2]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":210,"s":[2]},{"t":240,"s":[7]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[24.731,67.57],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"48","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-5.681],[0,0],[-5.681,0],[0,0]],"o":[[0,0],[5.682,0],[0,0],[0,5.682],[0,0],[0,0]],"v":[[-19.731,-18.051],[-10.361,-18.051],[-0.074,-7.764],[-0.074,7.763],[10.215,18.051],[19.732,18.051]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":90,"s":[7]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":120,"s":[2]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":210,"s":[2]},{"t":240,"s":[7]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[149.471,67.57],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"49","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0}]},{"id":"comp_10","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".white","cl":"white","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,148.444,0],"ix":2},"a":{"a":0,"k":[45.851,72.416,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[34.465,76.705],[45.85,76.705],[51.535,55.259]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43,65.982],"ix":2},"a":{"a":0,"k":[43,65.982],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[8.535,-10.723],[-2.851,-10.723],[-8.535,10.723]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 2","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.701,87.428],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,148.444,0],"ix":2},"a":{"a":0,"k":[45.851,72.416,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.209],[0,0],[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,0],[-1.104,0],[0,0],[0,-1.104],[0,0]],"o":[[2.209,0],[0,0],[0,2.21],[0,0],[-2.21,0],[0,0],[0,-2.209],[0,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,0]],"v":[[31.851,-52.738],[35.851,-48.738],[35.851,58.416],[31.851,62.416],[-31.851,62.416],[-35.851,58.416],[-35.851,-48.738],[-31.851,-52.738],[-16.864,-52.738],[-16.864,-60.416],[-14.864,-62.416],[14.864,-62.416],[16.863,-60.416],[16.863,-52.738]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.855000035903,0.862999949736,0.877999997606,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[45.851,72.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"grey","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":579,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,204.175,0],"ix":2},"a":{"a":0,"k":[0,45.925,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0.53,0.667],"y":[1,0.927,1]},"o":{"x":[0.333,0.534,0.333],"y":[0,0.01,0]},"t":0,"s":[100,87,100]},{"i":{"x":[0,0.536,0.833],"y":[1,0.997,1]},"o":{"x":[0.333,0.305,0.333],"y":[0,0.452,0]},"t":90,"s":[100,5,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.833,1]},"o":{"x":[0,0,0.167],"y":[0,0,0]},"t":121,"s":[100,100,100]},{"t":240,"s":[100,87,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[60,102.783],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.114,-5.467],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":540,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"mail","refId":"comp_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"t":120,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"chat","refId":"comp_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"t":120,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"cal","refId":"comp_2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[75]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":225,"s":[75]},{"t":240,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"youtube","refId":"comp_3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[75]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":225,"s":[75]},{"t":240,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"run","refId":"comp_4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[75]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":225,"s":[75]},{"t":240,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"trips","refId":"comp_5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":225,"s":[50]},{"t":240,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"maps","refId":"comp_6","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":225,"s":[25]},{"t":240,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":0,"nm":"tix","refId":"comp_7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":225,"s":[25]},{"t":240,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":0,"nm":"ColorLines","refId":"comp_8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":90,"op":573,"st":90,"bm":0},{"ddd":0,"ind":10,"ty":0,"nm":"Lines","refId":"comp_9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":0,"nm":"Battery","refId":"comp_10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[206,150,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":412,"h":300,"ip":0,"op":540,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".white","cl":"white","hd":true,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.4,0],[0,0],[0,15.4],[0,0],[-15.4,0],[0,0],[0,-15.4],[0,0]],"o":[[0,0],[-15.4,0],[0,0],[0,-15.4],[0,0],[15.4,0],[0,0],[0,15.4]],"v":[[178,150],[-178,150],[-206,122],[-206,-122],[-178,-150],[178,-150],[206,-122],[206,122]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":540,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/res/xml/smart_battery_detail.xml b/res/xml/smart_battery_detail.xml index c907c482500..9c0aac58318 100644 --- a/res/xml/smart_battery_detail.xml +++ b/res/xml/smart_battery_detail.xml @@ -22,12 +22,9 @@ android:title="@string/smart_battery_manager_title" settings:keywords="@string/keywords_battery_adaptive_preferences"> - + settings:lottie_rawRes="@raw/auto_awesome_battery_lottie" /> Date: Thu, 24 Jun 2021 19:16:59 +0100 Subject: [PATCH 3/8] Update string to enable transcode via MTP Also added a summary string when checked. Test: Manual Bug: 191985287 Change-Id: I1db9763bbf3766eecace6eca168218ab71ca6195 --- res/values/strings.xml | 6 +++++- .../usb/UsbDetailsTranscodeMtpController.java | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c19c8dc6711..c8555881b0a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10592,7 +10592,11 @@ - Transcode exported media + Convert videos to AVC + + Videos will play on more media players, but quality may be reduced diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java index 7ce8470bd0f..bbaaa318c42 100644 --- a/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java +++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java @@ -55,6 +55,7 @@ public class UsbDetailsTranscodeMtpController extends UsbDetailsController mSwitchPreference = new SwitchPreference(mPreferenceCategory.getContext()); mSwitchPreference.setTitle(R.string.usb_transcode_files); mSwitchPreference.setOnPreferenceClickListener(this); + mSwitchPreference.setSummaryOn(R.string.usb_transcode_files_summary); mPreferenceCategory.addPreference(mSwitchPreference); } From 8d37a2bb85a5e9273cb3068956f4a033a9c0dc16 Mon Sep 17 00:00:00 2001 From: Peter Kalauskas Date: Tue, 15 Jun 2021 17:11:24 -0700 Subject: [PATCH 4/8] Make use of config for auto-created guest users If frameworks config config_guestUserAutoCreated=true, then Settings will: - Create a new guest user any time the current guest user is removed - Show "Guest" instead of "Add guest" - Show "Reset guest" instead of "Remove guest" Bug: 188542158 Test: With config_guestUserAutoCreated=true, delete current guest user using adb (`adb shell cmd user list -v --all` to find the user ids, then remove each guest user with `adb shell pm remove-user `), then as owner, open multi-users settings page. Check that there is a item for "Guest" instead of "Add guest". Select "Guest", then confirm there is an item for "Reset guest" (it should be disabled). Select "Switch to guest", then switch back to owner. Open the multi-users settings page again. Check that "Reset guest" is now enabled. Tap "Reset guest", and press confirmation button, named "Reset". You should be take back to the main multi-user settings page and still see "Guest". Wait a few seconds, then use adb to confirm there is a guest user present. Test: With config_guestUserAutoCreated=true, switch to guest user, open multi-users settings page, check that there is an option to "Reset guest". Select "Reset guest", and press confirmation button, named "Reset". Phone should switch back to last active user, and QS tile should now show "Guest" instead of "Add guest". Run `adb shell cmd user list -v --all` to confirm guest has a new user id. Test: With config_guestUserAutoCreated=false, confirm that "Add guest" and "Remove guest" features remain unchanged Change-Id: I7d5b81bd2e5c6b999ae18cd6b1280ae0496db94b --- .../settings/users/UserDetailsSettings.java | 48 +++++++- .../android/settings/users/UserDialogs.java | 20 ++++ .../android/settings/users/UserSettings.java | 103 ++++++++++++++++-- 3 files changed, 162 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java index ac6a8ea6f04..ce186f2134a 100644 --- a/src/com/android/settings/users/UserDetailsSettings.java +++ b/src/com/android/settings/users/UserDetailsSettings.java @@ -42,6 +42,9 @@ import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; /** * Settings screen for configuring, deleting or switching to a specific user. @@ -67,9 +70,13 @@ public class UserDetailsSettings extends SettingsPreferenceFragment private static final int DIALOG_CONFIRM_ENABLE_CALLING = 2; private static final int DIALOG_CONFIRM_ENABLE_CALLING_AND_SMS = 3; private static final int DIALOG_SETUP_USER = 4; + private static final int DIALOG_CONFIRM_RESET_GUEST = 5; private UserManager mUserManager; private UserCapabilities mUserCaps; + private boolean mGuestUserAutoCreated; + private final AtomicBoolean mGuestCreationScheduled = new AtomicBoolean(); + private final ExecutorService mExecutor = Executors.newSingleThreadExecutor(); @VisibleForTesting RestrictedPreference mSwitchUserPref; @@ -97,6 +104,9 @@ public class UserDetailsSettings extends SettingsPreferenceFragment mUserCaps = UserCapabilities.create(context); addPreferencesFromResource(R.xml.user_details_settings); + mGuestUserAutoCreated = getPrefContext().getResources().getBoolean( + com.android.internal.R.bool.config_guestUserAutoCreated); + initialize(context, getArguments()); } @@ -104,13 +114,20 @@ public class UserDetailsSettings extends SettingsPreferenceFragment public void onResume() { super.onResume(); mSwitchUserPref.setEnabled(canSwitchUserNow()); + if (mGuestUserAutoCreated) { + mRemoveUserPref.setEnabled((mUserInfo.flags & UserInfo.FLAG_INITIALIZED) != 0); + } } @Override public boolean onPreferenceClick(Preference preference) { if (preference == mRemoveUserPref) { if (canDeleteUser()) { - showDialog(DIALOG_CONFIRM_REMOVE); + if (mUserInfo.isGuest()) { + showDialog(DIALOG_CONFIRM_RESET_GUEST); + } else { + showDialog(DIALOG_CONFIRM_REMOVE); + } return true; } } else if (preference == mSwitchUserPref) { @@ -144,6 +161,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment public int getDialogMetricsCategory(int dialogId) { switch (dialogId) { case DIALOG_CONFIRM_REMOVE: + case DIALOG_CONFIRM_RESET_GUEST: return SettingsEnums.DIALOG_USER_REMOVE; case DIALOG_CONFIRM_ENABLE_CALLING: return SettingsEnums.DIALOG_USER_ENABLE_CALLING; @@ -179,10 +197,30 @@ public class UserDetailsSettings extends SettingsPreferenceFragment switchUser(); } }); + case DIALOG_CONFIRM_RESET_GUEST: + return UserDialogs.createResetGuestDialog(getActivity(), + (dialog, which) -> resetGuest()); } throw new IllegalArgumentException("Unsupported dialogId " + dialogId); } + /** + * Erase the current guest user and create a new one in the background. UserSettings will + * handle guest creation after receiving the {@link UserSettings.RESULT_GUEST_REMOVED} result. + */ + private void resetGuest() { + // Just to be safe, check that the selected user is a guest + if (!mUserInfo.isGuest()) { + return; + } + mMetricsFeatureProvider.action(getActivity(), + SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED); + + mUserManager.removeUser(mUserInfo.id); + setResult(UserSettings.RESULT_GUEST_REMOVED); + finishFragment(); + } + @VisibleForTesting @Override protected void showDialog(int dialogId) { @@ -239,11 +277,17 @@ public class UserDetailsSettings extends SettingsPreferenceFragment if (mUserInfo.isGuest()) { // These are not for an existing user, just general Guest settings. // Default title is for calling and SMS. Change to calling-only here + // TODO(b/191483069): These settings can't be changed unless guest user exists mPhonePref.setTitle(R.string.user_enable_calling); mDefaultGuestRestrictions = mUserManager.getDefaultGuestRestrictions(); mPhonePref.setChecked( !mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS)); - mRemoveUserPref.setTitle(R.string.user_exit_guest_title); + mRemoveUserPref.setTitle(mGuestUserAutoCreated + ? com.android.settingslib.R.string.guest_reset_guest + : R.string.user_exit_guest_title); + if (mGuestUserAutoCreated) { + mRemoveUserPref.setEnabled((mUserInfo.flags & UserInfo.FLAG_INITIALIZED) != 0); + } } else { mPhonePref.setChecked(!mUserManager.hasUserRestriction( UserManager.DISALLOW_OUTGOING_CALLS, new UserHandle(userId))); diff --git a/src/com/android/settings/users/UserDialogs.java b/src/com/android/settings/users/UserDialogs.java index 9aab5b03da1..6915e95eeec 100644 --- a/src/com/android/settings/users/UserDialogs.java +++ b/src/com/android/settings/users/UserDialogs.java @@ -154,4 +154,24 @@ public final class UserDialogs { null) .create(); } + + /** + * Creates a dialog to confirm with the user if it's ok to reset the guest user, which will + * delete all the guest user's data. + * + * @param context a Context object + * @param onConfirmListener Callback object for positive action + * @return the created Dialog + */ + public static Dialog createResetGuestDialog(Context context, + DialogInterface.OnClickListener onConfirmListener) { + return new AlertDialog.Builder(context) + .setTitle(com.android.settingslib.R.string.guest_reset_guest_dialog_title) + .setMessage(R.string.user_exit_guest_confirm_message) + .setPositiveButton( + com.android.settingslib.R.string.guest_reset_guest_confirm_button, + onConfirmListener) + .setNegativeButton(android.R.string.cancel, null) + .create(); + } } diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index e95fed784ad..ee23fc379d8 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -87,6 +87,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; /** * Screen that manages the list of users on the device. @@ -128,6 +131,7 @@ public class UserSettings extends SettingsPreferenceFragment private static final int DIALOG_USER_PROFILE_EDITOR = 9; private static final int DIALOG_USER_PROFILE_EDITOR_ADD_USER = 10; private static final int DIALOG_USER_PROFILE_EDITOR_ADD_RESTRICTED_PROFILE = 11; + private static final int DIALOG_CONFIRM_RESET_GUEST = 12; private static final int MESSAGE_UPDATE_LIST = 1; private static final int MESSAGE_USER_CREATED = 2; @@ -136,6 +140,9 @@ public class UserSettings extends SettingsPreferenceFragment private static final int USER_TYPE_RESTRICTED_PROFILE = 2; private static final int REQUEST_CHOOSE_LOCK = 10; + private static final int REQUEST_EDIT_GUEST = 11; + + static final int RESULT_GUEST_REMOVED = 100; private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED = "key_add_user_long_message_displayed"; @@ -160,6 +167,7 @@ public class UserSettings extends SettingsPreferenceFragment SparseArray mUserIcons = new SparseArray<>(); private int mRemovingUserId = -1; private boolean mAddingUser; + private boolean mGuestUserAutoCreated; private String mAddingUserName; private UserCapabilities mUserCaps; private boolean mShouldUpdateUserList = true; @@ -173,6 +181,8 @@ public class UserSettings extends SettingsPreferenceFragment private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController; private MultiUserTopIntroPreferenceController mMultiUserTopIntroPreferenceController; private UserCreatingDialog mUserCreatingDialog; + private final AtomicBoolean mGuestCreationScheduled = new AtomicBoolean(); + private final ExecutorService mExecutor = Executors.newSingleThreadExecutor(); private CharSequence mPendingUserName; private Drawable mPendingUserIcon; @@ -240,6 +250,9 @@ public class UserSettings extends SettingsPreferenceFragment return; } + mGuestUserAutoCreated = getPrefContext().getResources().getBoolean( + com.android.internal.R.bool.config_guestUserAutoCreated); + mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController( activity, KEY_ADD_USER_WHEN_LOCKED); @@ -343,7 +356,10 @@ public class UserSettings extends SettingsPreferenceFragment @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { int pos = 0; - if (!mUserCaps.mIsAdmin && canSwitchUserNow()) { + // TODO(b/191509236): The menu item does not need to be accessible for guest users, + // regardless of mGuestUserAutoCreated + if (!mUserCaps.mIsAdmin && canSwitchUserNow() && !(isCurrentUserGuest() + && mGuestUserAutoCreated)) { String nickname = mUserManager.getUserName(); MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++, getResources().getString(R.string.user_remove_user_menu, nickname)); @@ -387,7 +403,9 @@ public class UserSettings extends SettingsPreferenceFragment if (isCurrentUserGuest()) { // No need to load profile information mMePreference.setIcon(getEncircledDefaultIcon()); - mMePreference.setTitle(R.string.user_exit_guest_title); + mMePreference.setTitle( + mGuestUserAutoCreated ? com.android.settingslib.R.string.guest_reset_guest + : R.string.user_exit_guest_title); mMePreference.setSelectable(true); // removing a guest will result in switching back to the admin user mMePreference.setEnabled(canSwitchUserNow()); @@ -445,6 +463,9 @@ public class UserSettings extends SettingsPreferenceFragment if (resultCode != Activity.RESULT_CANCELED && hasLockscreenSecurity()) { addUserNow(USER_TYPE_RESTRICTED_PROFILE); } + } else if (mGuestUserAutoCreated && requestCode == REQUEST_EDIT_GUEST + && resultCode == RESULT_GUEST_REMOVED) { + scheduleGuestCreation(); } else { mEditUserInfoController.onActivityResult(requestCode, resultCode, data); } @@ -508,12 +529,15 @@ public class UserSettings extends SettingsPreferenceFragment extras.putBoolean(AppRestrictionsFragment.EXTRA_NEW_USER, newUser); final Context context = getContext(); - new SubSettingLauncher(context) + SubSettingLauncher launcher = new SubSettingLauncher(context) .setDestination(UserDetailsSettings.class.getName()) .setArguments(extras) .setTitleText(getUserName(context, userInfo)) - .setSourceMetricsCategory(getMetricsCategory()) - .launch(); + .setSourceMetricsCategory(getMetricsCategory()); + if (mGuestUserAutoCreated && userInfo.isGuest()) { + launcher.setResultListener(this, REQUEST_EDIT_GUEST); + } + launcher.launch(); } @Override @@ -651,6 +675,10 @@ public class UserSettings extends SettingsPreferenceFragment } return buildAddUserDialog(USER_TYPE_RESTRICTED_PROFILE); } + case DIALOG_CONFIRM_RESET_GUEST: { + return UserDialogs.createResetGuestDialog(getActivity(), + (dialog, which) -> resetGuest()); + } default: return null; } @@ -727,6 +755,7 @@ public class UserSettings extends SettingsPreferenceFragment case DIALOG_NEED_LOCKSCREEN: return SettingsEnums.DIALOG_USER_NEED_LOCKSCREEN; case DIALOG_CONFIRM_EXIT_GUEST: + case DIALOG_CONFIRM_RESET_GUEST: return SettingsEnums.DIALOG_USER_CONFIRM_EXIT_GUEST; case DIALOG_USER_PROFILE_EDITOR: case DIALOG_USER_PROFILE_EDITOR_ADD_USER: @@ -840,6 +869,55 @@ public class UserSettings extends SettingsPreferenceFragment removeThisUser(); } + /** + * Erase the current user (assuming it is a guest user), and create a new one in the background + */ + @VisibleForTesting + void resetGuest() { + // Just to be safe + if (!isCurrentUserGuest()) { + return; + } + int guestUserId = UserHandle.myUserId(); + // Using markGuestForDeletion allows us to create a new guest before this one is + // fully removed. This could happen if someone calls scheduleGuestCreation() + // immediately after calling this method. + boolean marked = mUserManager.markGuestForDeletion(guestUserId); + if (!marked) { + Log.w(TAG, "Couldn't mark the guest for deletion for user " + guestUserId); + return; + } + exitGuest(); + scheduleGuestCreation(); + } + + /** + * Create a guest user in the background + */ + @VisibleForTesting + void scheduleGuestCreation() { + // TODO(b/191067027): Move guest recreation to system_server + if (mGuestCreationScheduled.compareAndSet(/* expect= */ false, /* update= */ true)) { + // Once mGuestCreationScheduled=true, mAddGuest needs to be updated so that it shows + // "Resetting guest..." + mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST); + mExecutor.execute(() -> { + UserInfo guest = mUserManager.createGuest( + getContext(), getString(com.android.settingslib.R.string.user_guest)); + mGuestCreationScheduled.set(false); + if (guest == null) { + Log.e(TAG, "Unable to automatically recreate guest user"); + } + // The list needs to be updated whether or not guest creation worked. If guest + // creation failed, the list needs to update so that "Add guest" is displayed. + // Otherwise, the UX could be stuck in a state where there is no way to switch to + // the guest user (e.g. Guest would not be selectable, and it would be stuck + // saying "Resetting guest...") + mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST); + }); + } + } + @VisibleForTesting void updateUserList() { final Context context = getActivity(); @@ -988,8 +1066,15 @@ public class UserSettings extends SettingsPreferenceFragment && mUserCaps.mUserSwitcherEnabled) { mAddGuest.setVisible(true); mAddGuest.setIcon(getEncircledDefaultIcon()); - mAddGuest.setEnabled(canSwitchUserNow()); mAddGuest.setSelectable(true); + if (mGuestUserAutoCreated && mGuestCreationScheduled.get()) { + mAddGuest.setTitle(com.android.settingslib.R.string.user_guest); + mAddGuest.setSummary(R.string.guest_resetting); + mAddGuest.setEnabled(false); + } else { + mAddGuest.setTitle(com.android.settingslib.R.string.guest_new_guest); + mAddGuest.setEnabled(canSwitchUserNow()); + } } else { mAddGuest.setVisible(false); } @@ -1077,7 +1162,11 @@ public class UserSettings extends SettingsPreferenceFragment public boolean onPreferenceClick(Preference pref) { if (pref == mMePreference) { if (isCurrentUserGuest()) { - showDialog(DIALOG_CONFIRM_EXIT_GUEST); + if (mGuestUserAutoCreated) { + showDialog(DIALOG_CONFIRM_RESET_GUEST); + } else { + showDialog(DIALOG_CONFIRM_EXIT_GUEST); + } } else { showDialog(DIALOG_USER_PROFILE_EDITOR); } From 7b8e05adab5d3dac6906279d2f1bdaa377926798 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Fri, 25 Jun 2021 02:10:43 +0000 Subject: [PATCH 5/8] Revert "[Settings] Code Refactor - ActiveSubsciptionsListener" This reverts commit 2a1344a50e37bf9abc039c14ad30027ff2504a9e. Reason for revert: Missing some files which would lead to build breakage. Change-Id: I8c63dea9b41598b563cbf5e5ff1c500cc51b7005 --- ...r.java => ActiveSubsciptionsListener.java} | 6 ++--- .../telephony/MobileNetworkSettings.java | 22 +++++++++---------- ...va => ActiveSubsciptionsListenerTest.java} | 10 ++++----- 3 files changed, 19 insertions(+), 19 deletions(-) rename src/com/android/settings/network/{ActiveSubscriptionsListener.java => ActiveSubsciptionsListener.java} (98%) rename tests/unit/src/com/android/settings/network/{ActiveSubscriptionsListenerTest.java => ActiveSubsciptionsListenerTest.java} (94%) diff --git a/src/com/android/settings/network/ActiveSubscriptionsListener.java b/src/com/android/settings/network/ActiveSubsciptionsListener.java similarity index 98% rename from src/com/android/settings/network/ActiveSubscriptionsListener.java rename to src/com/android/settings/network/ActiveSubsciptionsListener.java index 91a4c0a0de1..26f644145b2 100644 --- a/src/com/android/settings/network/ActiveSubscriptionsListener.java +++ b/src/com/android/settings/network/ActiveSubsciptionsListener.java @@ -39,7 +39,7 @@ import java.util.concurrent.atomic.AtomicInteger; /** * A listener for active subscription change */ -public abstract class ActiveSubscriptionsListener +public abstract class ActiveSubsciptionsListener extends SubscriptionManager.OnSubscriptionsChangedListener implements AutoCloseable { @@ -73,7 +73,7 @@ public abstract class ActiveSubscriptionsListener * @param looper {@code Looper} of this listener * @param context {@code Context} of this listener */ - public ActiveSubscriptionsListener(Looper looper, Context context) { + public ActiveSubsciptionsListener(Looper looper, Context context) { this(looper, context, SubscriptionManager.INVALID_SUBSCRIPTION_ID); } @@ -84,7 +84,7 @@ public abstract class ActiveSubscriptionsListener * @param context {@code Context} of this listener * @param subscriptionId for subscription on this listener */ - public ActiveSubscriptionsListener(Looper looper, Context context, int subscriptionId) { + public ActiveSubsciptionsListener(Looper looper, Context context, int subscriptionId) { super(looper); mLooper = looper; mContext = context; diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index adf399fb953..f54c18ba5d3 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -37,7 +37,7 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.datausage.BillingCyclePreferenceController; import com.android.settings.datausage.DataUsageSummaryPreferenceController; -import com.android.settings.network.ActiveSubscriptionsListener; +import com.android.settings.network.ActiveSubsciptionsListener; import com.android.settings.network.CarrierWifiTogglePreferenceController; import com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController; import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController; @@ -74,9 +74,9 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { private UserManager mUserManager; private String mClickedPrefKey; - private ActiveSubscriptionsListener mActiveSubscriptionsListener; + private ActiveSubsciptionsListener mActiveSubsciptionsListener; private boolean mDropFirstSubscriptionChangeNotify; - private int mActiveSubscriptionsListenerCount; + private int mActiveSubsciptionsListenerCount; public MobileNetworkSettings() { super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); @@ -218,8 +218,8 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { super.onResume(); // TODO: remove log after fixing b/182326102 Log.d(LOG_TAG, "onResume() subId=" + mSubId); - if (mActiveSubscriptionsListener == null) { - mActiveSubscriptionsListener = new ActiveSubscriptionsListener( + if (mActiveSubsciptionsListener == null) { + mActiveSubsciptionsListener = new ActiveSubsciptionsListener( getContext().getMainLooper(), getContext(), mSubId) { public void onChanged() { onSubscriptionDetailChanged(); @@ -227,7 +227,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { }; mDropFirstSubscriptionChangeNotify = true; } - mActiveSubscriptionsListener.start(); + mActiveSubsciptionsListener.start(); } private void onSubscriptionDetailChanged() { @@ -236,21 +236,21 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { Log.d(LOG_TAG, "Callback during onResume()"); return; } - mActiveSubscriptionsListenerCount++; - if (mActiveSubscriptionsListenerCount != 1) { + mActiveSubsciptionsListenerCount++; + if (mActiveSubsciptionsListenerCount != 1) { return; } ThreadUtils.postOnMainThread(() -> { - mActiveSubscriptionsListenerCount = 0; + mActiveSubsciptionsListenerCount = 0; redrawPreferenceControllers(); }); } @Override public void onDestroy() { - if (mActiveSubscriptionsListener != null) { - mActiveSubscriptionsListener.stop(); + if (mActiveSubsciptionsListener != null) { + mActiveSubsciptionsListener.stop(); } super.onDestroy(); } diff --git a/tests/unit/src/com/android/settings/network/ActiveSubscriptionsListenerTest.java b/tests/unit/src/com/android/settings/network/ActiveSubsciptionsListenerTest.java similarity index 94% rename from tests/unit/src/com/android/settings/network/ActiveSubscriptionsListenerTest.java rename to tests/unit/src/com/android/settings/network/ActiveSubsciptionsListenerTest.java index 27bc40c4847..efa21ae6bba 100644 --- a/tests/unit/src/com/android/settings/network/ActiveSubscriptionsListenerTest.java +++ b/tests/unit/src/com/android/settings/network/ActiveSubsciptionsListenerTest.java @@ -49,7 +49,7 @@ import java.util.ArrayList; import java.util.List; @RunWith(AndroidJUnit4.class) -public class ActiveSubscriptionsListenerTest { +public class ActiveSubsciptionsListenerTest { private static final int SUB_ID1 = 3; private static final int SUB_ID2 = 7; @@ -68,7 +68,7 @@ public class ActiveSubscriptionsListenerTest { private SubscriptionManager mSubscriptionManager; private List mActiveSubscriptions; - private ActiveSubscriptionsListenerImpl mListener; + private ActiveSubsciptionsListenerImpl mListener; private BroadcastReceiver mReceiver; @Before @@ -83,7 +83,7 @@ public class ActiveSubscriptionsListenerTest { addMockSubscription(SUB_ID2); doReturn(mActiveSubscriptions).when(mSubscriptionManager).getActiveSubscriptionInfoList(); - mListener = spy(new ActiveSubscriptionsListenerImpl(Looper.getMainLooper(), mContext)); + mListener = spy(new ActiveSubsciptionsListenerImpl(Looper.getMainLooper(), mContext)); doReturn(mSubscriptionManager).when(mListener).getSubscriptionManager(); mReceiver = mListener.getSubscriptionChangeReceiver(); } @@ -99,8 +99,8 @@ public class ActiveSubscriptionsListenerTest { mListener.close(); } - public class ActiveSubscriptionsListenerImpl extends ActiveSubscriptionsListener { - public ActiveSubscriptionsListenerImpl(Looper looper, Context context) { + public class ActiveSubsciptionsListenerImpl extends ActiveSubsciptionsListener { + public ActiveSubsciptionsListenerImpl(Looper looper, Context context) { super(looper, context); } From 4c7981eb0d2b0f8b6fd1b96c5fee055caa0336d8 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Fri, 25 Jun 2021 09:17:41 -0400 Subject: [PATCH 6/8] Disable additional pkgs on DND perm page Because they will always have access because they hold the permission to manage notifications. Test: manual Fixes: 191973668 Change-Id: I456aec41b401bba6f10d9ea969e2fb8c4300825d --- .../zenaccess/ZenAccessController.java | 19 +++++++++++++++---- .../notification/zen/ZenAccessSettings.java | 2 ++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java b/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java index e6b389a5b3c..84608794f7a 100644 --- a/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java +++ b/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java @@ -50,13 +50,24 @@ public class ZenAccessController extends BasePreferenceController { } public static Set getPackagesRequestingNotificationPolicyAccess() { + final String[] PERM = { + android.Manifest.permission.ACCESS_NOTIFICATION_POLICY + }; + return getPackagesWithPermissions(PERM); + } + + public static Set getPackagesWithManageNotifications() { + final String[] PERM = { + android.Manifest.permission.MANAGE_NOTIFICATIONS + }; + return getPackagesWithPermissions(PERM); + } + + public static Set getPackagesWithPermissions(String[] permList) { final ArraySet requestingPackages = new ArraySet<>(); try { - final String[] PERM = { - android.Manifest.permission.ACCESS_NOTIFICATION_POLICY - }; final ParceledListSlice list = AppGlobals.getPackageManager() - .getPackagesHoldingPermissions(PERM, 0 /*flags*/, + .getPackagesHoldingPermissions(permList, 0 /*flags*/, ActivityManager.getCurrentUser()); final List pkgs = list.getList(); if (pkgs != null) { diff --git a/src/com/android/settings/notification/zen/ZenAccessSettings.java b/src/com/android/settings/notification/zen/ZenAccessSettings.java index e83983f5b1b..1a9fb161932 100644 --- a/src/com/android/settings/notification/zen/ZenAccessSettings.java +++ b/src/com/android/settings/notification/zen/ZenAccessSettings.java @@ -17,6 +17,7 @@ package com.android.settings.notification.zen; import android.annotation.Nullable; +import android.app.ActivityManager; import android.app.NotificationManager; import android.app.settings.SettingsEnums; import android.content.Context; @@ -117,6 +118,7 @@ public class ZenAccessSettings extends EmptyTextSettings implements } ArraySet autoApproved = new ArraySet<>(); autoApproved.addAll(mNoMan.getEnabledNotificationListenerPackages()); + autoApproved.addAll(ZenAccessController.getPackagesWithManageNotifications()); Collections.sort(apps, new PackageItemInfo.DisplayNameComparator(mPkgMan)); for (ApplicationInfo app : apps) { final String pkg = app.packageName; From 05689a343294a501e30b51e5ca181930ff4c405f Mon Sep 17 00:00:00 2001 From: Joshua Mccloskey Date: Thu, 24 Jun 2021 16:31:01 -0700 Subject: [PATCH 7/8] Updated fp bad calibration string Test: Verified string was present during enrollment error. Bug: 189133688 Change-Id: Ia9a447c443fa0784c736e171a2e1840fed55034c --- res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 6ee4bc3a008..60a7f2954b1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1211,7 +1211,7 @@ Lift finger, then touch sensor again - Device repaired improperly. Fingerprint disabled. + Can\u2019t use fingerprint sensor. Visit a repair provider You can add up to %d fingerprints From 4aa1e532db5e4e00e2be67a53319cf44fd9ed076 Mon Sep 17 00:00:00 2001 From: Curtis Belmonte Date: Fri, 25 Jun 2021 12:59:47 -0700 Subject: [PATCH 8/8] Update strings for choose lock password/pattern screen Makes the following changes to the header/description text shown on the choose lock screen: - Remove references to "biometrics" in favor of "face or fingerprint" - Add a default description when setting a PIN/pattern/password Test: Manual Bug: 191923052 Change-Id: I788fd03aaeea624fab548d1c055c5c6dee076e2d --- res/values/strings.xml | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 26b65063622..c876e35b451 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4393,6 +4393,25 @@ Set a work pattern + + For added security, set a password to unlock the phone + + For added security, set a PIN to unlock the phone + + For added security, set a pattern to unlock the phone + + For added security, set a password to unlock the tablet + + For added security, set a PIN to unlock the tablet + + For added security, set a pattern to unlock the tablet + + For added security, set a password to unlock the device + + For added security, set a PIN to unlock the device + + For added security, set a pattern to unlock the device + To use fingerprint, set password @@ -4438,12 +4457,12 @@ To use Face Unlock, set PIN - - To use biometrics, set password - - To use biometrics, set pattern - - To use biometrics, set PIN + + Set a password to use face or fingerprint + + Set a pattern to use face or fingerprint + + Set a PIN to use face or fingerprint