├── .gitignore
├── .idea
├── .gitignore
├── .name
├── appInsightsSettings.xml
├── compiler.xml
├── deploymentTargetDropDown.xml
├── gradle.xml
├── migrations.xml
└── misc.xml
├── app
├── .gitignore
├── build.gradle.kts
├── google-services.json
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── example
│ │ └── firestorepklearnings
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── example
│ │ │ └── firestorepklearnings
│ │ │ ├── AddingLocationActivity.java
│ │ │ ├── AddingNameContactAndEmail.java
│ │ │ ├── LoginActivity.java
│ │ │ ├── ModelClassData.java
│ │ │ ├── ModelClassFirestore.java
│ │ │ ├── RetrievingDataFirestore.java
│ │ │ ├── SplashScreen.java
│ │ │ ├── UserRegisterationActivity.java
│ │ │ ├── firebaseStorageProfileImage.java
│ │ │ └── util
│ │ │ └── FirebaseUtil.java
│ └── res
│ │ ├── drawable
│ │ ├── background_black.xml
│ │ ├── background_lines_email_password.xml
│ │ ├── baseline_arrow_back_24.xml
│ │ ├── firstimgofapp.png
│ │ ├── ic_launcher_background.xml
│ │ ├── ic_launcher_foreground.xml
│ │ ├── img.jpg
│ │ └── mario.png
│ │ ├── font
│ │ └── abeezee.xml
│ │ ├── layout
│ │ ├── activity_adding_location.xml
│ │ ├── activity_adding_name_contact_and_email.xml
│ │ ├── activity_firebase_storage_profile_image.xml
│ │ ├── activity_login.xml
│ │ ├── activity_retrieving_data_firestore.xml
│ │ ├── activity_splash_screen.xml
│ │ └── activity_user_registeration.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.webp
│ │ ├── raw
│ │ ├── firestorelottie.json
│ │ └── svs.json
│ │ ├── values-night
│ │ └── themes.xml
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── font_certs.xml
│ │ ├── preloaded_fonts.xml
│ │ ├── strings.xml
│ │ └── themes.xml
│ │ └── xml
│ │ ├── backup_rules.xml
│ │ └── data_extraction_rules.xml
│ └── test
│ └── java
│ └── com
│ └── example
│ └── firestorepklearnings
│ └── ExampleUnitTest.java
├── build.gradle.kts
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 | local.properties
16 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | FIRESTORE Set and Retrieve Data
--------------------------------------------------------------------------------
/.idea/appInsightsSettings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
25 |
26 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/deploymentTargetDropDown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/migrations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.application")
3 | id("com.google.gms.google-services")
4 | }
5 |
6 | android {
7 | namespace = "com.example.firestorepklearnings"
8 | compileSdk = 34
9 |
10 | defaultConfig {
11 | applicationId = "com.example.firestorepklearnings"
12 | minSdk = 24
13 | targetSdk = 34
14 | versionCode = 1
15 | versionName = "1.0"
16 |
17 | testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
18 | }
19 |
20 | buildTypes {
21 | release {
22 | isMinifyEnabled = false
23 | proguardFiles(
24 | getDefaultProguardFile("proguard-android-optimize.txt"),
25 | "proguard-rules.pro"
26 | )
27 | }
28 | }
29 | compileOptions {
30 | sourceCompatibility = JavaVersion.VERSION_1_8
31 | targetCompatibility = JavaVersion.VERSION_1_8
32 | }
33 | }
34 |
35 | dependencies {
36 |
37 | implementation("androidx.appcompat:appcompat:1.6.1")
38 | implementation("com.google.android.material:material:1.10.0")
39 | implementation("androidx.constraintlayout:constraintlayout:2.1.4")
40 | testImplementation("junit:junit:4.13.2")
41 | androidTestImplementation("androidx.test.ext:junit:1.1.5")
42 | androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
43 |
44 |
45 | //FIREBASE
46 | implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
47 | implementation("com.google.firebase:firebase-analytics:21.3.0")
48 | implementation("com.google.firebase:firebase-auth:22.1.2")
49 | implementation("com.google.firebase:firebase-database:20.2.2")
50 | implementation("com.google.firebase:firebase-storage:20.3.0")
51 | implementation("com.google.firebase:firebase-firestore")
52 |
53 |
54 | //LOTTIEFILES
55 | implementation("com.airbnb.android:lottie:6.0.1")
56 |
57 | //Glide
58 | implementation ("com.github.bumptech.glide:glide:4.16.0")
59 | }
--------------------------------------------------------------------------------
/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "525331547324",
4 | "firebase_url": "https://hello-world-5230b-default-rtdb.asia-southeast1.firebasedatabase.app",
5 | "project_id": "hello-world-5230b",
6 | "storage_bucket": "hello-world-5230b.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:525331547324:android:1f6cc41827e04d10723cb9",
12 | "android_client_info": {
13 | "package_name": "com.example.firestorepklearnings"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "525331547324-attheqqffm87qts1s1cl091evivkpt1q.apps.googleusercontent.com",
19 | "client_type": 3
20 | }
21 | ],
22 | "api_key": [
23 | {
24 | "current_key": "AIzaSyAyluYOk1XrGzMxbUjSGEpf1NmOrQ57DOw"
25 | }
26 | ],
27 | "services": {
28 | "appinvite_service": {
29 | "other_platform_oauth_client": [
30 | {
31 | "client_id": "525331547324-attheqqffm87qts1s1cl091evivkpt1q.apps.googleusercontent.com",
32 | "client_type": 3
33 | }
34 | ]
35 | }
36 | }
37 | }
38 | ],
39 | "configuration_version": "1"
40 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/example/firestorepklearnings/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.example.firestorepklearnings", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
15 |
18 |
21 |
24 |
27 |
30 |
33 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/AddingLocationActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import androidx.annotation.NonNull;
4 | import androidx.appcompat.app.AppCompatActivity;
5 |
6 | import android.content.Intent;
7 | import android.os.Bundle;
8 | import android.view.View;
9 | import android.widget.Button;
10 | import android.widget.ImageButton;
11 | import android.widget.Toast;
12 |
13 | import com.example.firestorepklearnings.util.FirebaseUtil;
14 | import com.google.android.gms.tasks.OnCompleteListener;
15 | import com.google.android.gms.tasks.OnFailureListener;
16 | import com.google.android.gms.tasks.Task;
17 | import com.google.android.material.textfield.TextInputEditText;
18 |
19 | public class AddingLocationActivity extends AppCompatActivity {
20 |
21 | TextInputEditText inputEditTextCity, inputEditTextState, inputEditTextCountry;
22 | Button nextSubmitButton;
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | super.onCreate(savedInstanceState);
27 | setContentView(R.layout.activity_adding_location);
28 |
29 | inputEditTextCity = findViewById(R.id.enterCityTextView);
30 | inputEditTextState = findViewById(R.id.enterStateTextView);
31 | inputEditTextCountry = findViewById(R.id.enterCountryTextView);
32 | nextSubmitButton = findViewById(R.id.nextSubmitButton);
33 |
34 | nextSubmitButton.setOnClickListener(new View.OnClickListener() {
35 | @Override
36 | public void onClick(View view) {
37 | String city = inputEditTextCity.getText().toString();
38 | String state = inputEditTextState.getText().toString();
39 | String country = inputEditTextCountry.getText().toString();
40 |
41 | if (city.isEmpty()) {
42 | inputEditTextCity.setError("Invalid");
43 | } else if (state.isEmpty()) {
44 | inputEditTextState.setError("Invalid");
45 | } else if (country.isEmpty()) {
46 | inputEditTextCountry.setError("invalid");
47 | } else {
48 | addingUserData(city, state, country);
49 | }
50 | }
51 | });
52 |
53 |
54 | }
55 |
56 | private void addingUserData(String city, String state, String country) {
57 |
58 | ModelClassFirestore modelClassFirestore = new ModelClassFirestore(city, state, country);
59 |
60 | //WE WILL ADD HIS DATA WITHOUT USER INPUT //STATIC //EXAMPLE OF DYNAMIC Line No. 81
61 |
62 | // Map city = new HashMap<>();
63 | // city.put("name","valsad");
64 | // city.put("State","gujarat");
65 | // city.put("Country","india");
66 |
67 |
68 | //this way you can add data to the firestore data or go to line number 78, code starts from LNo.81
69 |
70 | // FirebaseFirestore firestoreDB = FirebaseFirestore.getInstance();
71 | //
72 | // firestoreDB.collection("users").document("location").set(modelClassFirestore).
73 | // addOnCompleteListener(new OnCompleteListener() {
74 |
75 |
76 | //by creating FirebaseUtil class in util package under 'com.example.firestorepklearnings' and creating a function currentUserDetails() which will get or return FirebaseFirestore.getInstance();
77 |
78 | //USER WILL PROVIDE THE DATA AS INPUT //DYNAMIC
79 | FirebaseUtil.currentUserDetails().set(modelClassFirestore).addOnCompleteListener(new OnCompleteListener() {
80 | @Override
81 | public void onComplete(@NonNull Task task) {
82 | if (task.isSuccessful()) {
83 | Toast.makeText(AddingLocationActivity.this, "Data Added Successfully", Toast.LENGTH_SHORT).show();
84 | Intent intent = new Intent(AddingLocationActivity.this, AddingNameContactAndEmail.class);
85 | intent.putExtra("city", inputEditTextCity.getText().toString());
86 | intent.putExtra("state", inputEditTextState.getText().toString());
87 | intent.putExtra("country", inputEditTextCountry.getText().toString());
88 |
89 | startActivity(intent);
90 | finish();
91 |
92 | }
93 | }
94 | }).addOnFailureListener(new OnFailureListener() {
95 | @Override
96 | public void onFailure(@NonNull Exception e) {
97 | Toast.makeText(AddingLocationActivity.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
98 |
99 | }
100 | });
101 | }
102 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/AddingNameContactAndEmail.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import androidx.activity.result.ActivityResultLauncher;
4 | import androidx.activity.result.contract.ActivityResultContracts;
5 | import androidx.annotation.NonNull;
6 | import androidx.appcompat.app.AppCompatActivity;
7 |
8 | import android.content.Intent;
9 | import android.icu.text.StringPrepParseException;
10 | import android.net.Uri;
11 | import android.os.Bundle;
12 | import android.view.View;
13 | import android.widget.Button;
14 | import android.widget.ImageButton;
15 | import android.widget.ImageView;
16 | import android.widget.Toast;
17 |
18 | import com.example.firestorepklearnings.util.FirebaseUtil;
19 | import com.google.android.gms.tasks.OnCompleteListener;
20 | import com.google.android.gms.tasks.OnFailureListener;
21 | import com.google.android.gms.tasks.OnSuccessListener;
22 | import com.google.android.gms.tasks.Task;
23 | import com.google.android.material.textfield.TextInputEditText;
24 | import com.google.firebase.auth.FirebaseAuth;
25 | import com.google.firebase.firestore.SetOptions;
26 | import com.google.firebase.storage.UploadTask;
27 |
28 | import java.util.Objects;
29 |
30 | public class AddingNameContactAndEmail extends AppCompatActivity {
31 | TextInputEditText inputEditTextName, inputEditTextPhoneNumber, inputEditTextEmail;
32 | Button submitInputButton;
33 | ImageView proPicImgView;
34 | String url;
35 | String email;
36 | @Override
37 | protected void onCreate(Bundle savedInstanceState) {
38 | super.onCreate(savedInstanceState);
39 | setContentView(R.layout.activity_adding_name_contact_and_email);
40 |
41 | inputEditTextName = findViewById(R.id.enterNameTextView);
42 | inputEditTextPhoneNumber = findViewById(R.id.enterPhoneTextView);
43 | inputEditTextEmail = findViewById(R.id.enterEmailTextView);
44 | submitInputButton = findViewById(R.id.submitButton);
45 | proPicImgView = findViewById(R.id.profilePictureImgCardView);
46 |
47 | proPicImgView.setOnClickListener(new View.OnClickListener() {
48 | @Override
49 | public void onClick(View view) {
50 | activityResultLauncher.launch("image/*"); // "*/*" //for any types of files
51 |
52 | }
53 | });
54 |
55 | submitInputButton.setOnClickListener(new View.OnClickListener() {
56 | @Override
57 | public void onClick(View view) {
58 | String name = inputEditTextName.getText().toString();
59 | String number = inputEditTextPhoneNumber.getText().toString();
60 | email = inputEditTextEmail.getText().toString();
61 |
62 | String city = getIntent().getExtras().getString("city");
63 | String state = getIntent().getExtras().getString("state");
64 | String country = getIntent().getExtras().getString("country");
65 |
66 | if (name.isEmpty()) {
67 | inputEditTextName.setError("Invalid");
68 | } else if (number.isEmpty()) {
69 | inputEditTextPhoneNumber.setError("Invalid");
70 | } else if (email.isEmpty()) {
71 | inputEditTextEmail.setError("invalid");
72 | } else {
73 | mergeWithExistingData(city, state, country, name, number, email, url);
74 | }
75 | }
76 | });
77 |
78 |
79 | }
80 |
81 | private void mergeWithExistingData(String city, String state, String country, String name, String number, String email, String url) {
82 |
83 | ModelClassFirestore modelClassFirestore = new ModelClassFirestore(city, state, country, name, number, email, url);
84 | FirebaseUtil.currentUserDetails().set(modelClassFirestore).addOnCompleteListener(new OnCompleteListener() {
85 | @Override
86 | public void onComplete(@NonNull Task task) {
87 | if (task.isSuccessful()) {
88 | Toast.makeText(AddingNameContactAndEmail.this, "Added Successfully" + task.getResult(), Toast.LENGTH_SHORT).show();
89 | startActivity(new Intent(getApplicationContext(), RetrievingDataFirestore.class));
90 | finish();
91 | }
92 | }
93 | }).addOnFailureListener(new OnFailureListener() {
94 | @Override
95 | public void onFailure(@NonNull Exception e) {
96 | Toast.makeText(AddingNameContactAndEmail.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
97 | }
98 | });
99 | }
100 |
101 |
102 |
103 | ActivityResultLauncher activityResultLauncher = registerForActivityResult(new ActivityResultContracts.GetContent(), results -> {
104 |
105 | //i have created this medthod in FirebaseUtil class
106 | FirebaseUtil.firebasestorage().getReference().child("images")
107 | .child(Objects.requireNonNull(FirebaseAuth.getInstance().getUid()))
108 | .child("IMG_" + System.currentTimeMillis())
109 | .putFile(results)
110 | .addOnCompleteListener(new OnCompleteListener() {
111 | @Override
112 | public void onComplete(@NonNull Task task) {
113 |
114 | if (task.isSuccessful()) {
115 | task.getResult().getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener() {
116 | @Override
117 | public void onSuccess(Uri uri) {
118 | //global variable
119 | url = uri.toString();
120 | Toast.makeText(AddingNameContactAndEmail.this, "" + url, Toast.LENGTH_SHORT).show();
121 | proPicImgView.setImageURI(results);
122 | }
123 |
124 | }).addOnFailureListener(new OnFailureListener() {
125 | @Override
126 | public void onFailure(@NonNull Exception e) {
127 | Toast.makeText(AddingNameContactAndEmail.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
128 | }
129 | });
130 |
131 | }
132 | }
133 | });
134 |
135 | });
136 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/LoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import androidx.annotation.NonNull;
4 | import androidx.annotation.Nullable;
5 | import androidx.appcompat.app.AppCompatActivity;
6 |
7 | import android.content.Intent;
8 | import android.os.Bundle;
9 | import android.text.TextUtils;
10 | import android.util.Log;
11 | import android.view.View;
12 | import android.widget.Button;
13 | import android.widget.EditText;
14 | import android.widget.TextView;
15 | import android.widget.Toast;
16 |
17 | import com.example.firestorepklearnings.util.FirebaseUtil;
18 | import com.google.android.gms.tasks.OnCompleteListener;
19 | import com.google.android.gms.tasks.OnFailureListener;
20 | import com.google.android.gms.tasks.Task;
21 | import com.google.firebase.auth.AuthResult;
22 | import com.google.firebase.auth.FirebaseAuth;
23 | import com.google.firebase.auth.FirebaseUser;
24 | import com.google.firebase.firestore.DocumentSnapshot;
25 | import com.google.firebase.firestore.EventListener;
26 | import com.google.firebase.firestore.FirebaseFirestoreException;
27 |
28 | public class LoginActivity extends AppCompatActivity {
29 | private EditText email, password;
30 | private Button loginbutton;
31 | private TextView txtWelcomeBackForTestingLayout, registerUser, forgetpassword, txtpasswordStatus, txtEmailStatusMessage, txtStatusMessage;
32 | FirebaseAuth firebaseAuth; //abstract class
33 | // DatabaseReference databaseReference;
34 | @Override
35 | protected void onCreate(Bundle savedInstanceState) {
36 | super.onCreate(savedInstanceState);
37 | setContentView(R.layout.activity_login);
38 |
39 |
40 | email = findViewById(R.id.editTextEmailAddress); //linking this with XML
41 | password = findViewById(R.id.editTextTextPassword);
42 | registerUser = findViewById(R.id.textReturnToLoginPage);
43 | forgetpassword = findViewById(R.id.textViewForgetPassword);
44 | loginbutton = findViewById(R.id.loginButton);
45 | txtpasswordStatus = findViewById(R.id.passwordMessage);
46 | txtEmailStatusMessage = findViewById(R.id.emailMessageStatus);
47 | txtStatusMessage = findViewById(R.id.messageStatus);
48 |
49 | //Testing
50 | // txtWelcomeBackForTestingLayout = findViewById(R.id.textWelcomeBack);
51 | // txtWelcomeBackForTestingLayout.setOnClickListener(new View.OnClickListener() {
52 | // @Override
53 | // public void onClick(View v) {
54 | // startActivity(new Intent(LoginActivity.this, SavingDataInFirebaseRealtimeDatabase.class));
55 | // }
56 | // });
57 |
58 |
59 | //instance variable
60 | firebaseAuth = FirebaseAuth.getInstance();
61 |
62 |
63 | //CREATE A NEW USER
64 | registerUser.setOnClickListener(new View.OnClickListener() {
65 | @Override
66 | public void onClick(View v) {
67 | startActivity(new Intent(LoginActivity.this, UserRegisterationActivity.class));
68 | finish();
69 | }
70 | });
71 |
72 |
73 | loginbutton.setOnClickListener(new View.OnClickListener() {
74 | @Override
75 | public void onClick(View v) {
76 | String txtEmail = email.getText().toString();
77 | String txtPassword = password.getText().toString();
78 |
79 | // Toast.makeText(LoginActivity.this,txtEmail, Toast.LENGTH_SHORT).show();
80 | Toast.makeText(LoginActivity.this, txtPassword, Toast.LENGTH_SHORT).show();
81 |
82 |
83 | if (TextUtils.isEmpty(txtEmail) || TextUtils.isEmpty(txtPassword)) {
84 | // if (txtEmail.isEmpty()) {
85 | // txtStatusMessage.setText("Enter Email Address");
86 | // } else if (txtPassword.isEmpty()) {
87 | // txtStatusMessage.setText("Enter Password");
88 | // } else {
89 | // txtStatusMessage.setText("Empty credentials");
90 | // }
91 | //
92 | // txtEmailStatusMessage.setText("www.indianrocks@example.com");
93 | }
94 | if (txtEmail.isEmpty()) {
95 | txtStatusMessage.setText("Insert Email Address");
96 | txtStatusMessage.setText("Empty credentials");
97 |
98 | } else if (txtPassword.isEmpty()) {
99 | txtStatusMessage.setText("Insert Password");
100 | } else {
101 | txtStatusMessage.setText(" ");
102 | }
103 |
104 |
105 | if (txtEmail.length() < 7) {
106 | txtEmailStatusMessage.setText("www.humanbeing@example.com");
107 | } else if (!(txtEmail.endsWith(".com"))) {
108 | txtEmailStatusMessage.setText("email must ends with .com/org");
109 | } else {
110 | txtEmailStatusMessage.setText(" ");
111 | }
112 |
113 | if (txtPassword.contains(" ")) {
114 | txtpasswordStatus.setText("Spaces are not allowed");
115 | } else if ((txtPassword.length() < 6) || (txtPassword.length() >= 15)) {
116 | txtpasswordStatus.setText("Minimum of 6 characters is required, Maximum 15");
117 |
118 | } else if ((txtPassword.length() < 6) || (txtPassword.length() >= 15)) {
119 | txtpasswordStatus.setText("Minimum of 6 characters is required, Maximum 15");
120 | } else if (txtPassword.contains(" ")) {
121 | txtpasswordStatus.setText("Spaces are not allowed");
122 | } else if (!(txtPassword.contains("@") || txtPassword.contains("#")
123 | || txtPassword.contains("!") || txtPassword.contains("~")
124 | || txtPassword.contains("$") || txtPassword.contains("%")
125 | || txtPassword.contains("^") || txtPassword.contains("&")
126 | || txtPassword.contains("*") || txtPassword.contains("(")
127 | || txtPassword.contains(")") || txtPassword.contains("-")
128 | || txtPassword.contains("+") || txtPassword.contains("/")
129 | || txtPassword.contains(":") || txtPassword.contains(".")
130 | || txtPassword.contains(", ") || txtPassword.contains("<")
131 | || txtPassword.contains(">") || txtPassword.contains("?")
132 | || txtPassword.contains("|"))) {
133 | txtpasswordStatus.setText("at least 1 special character is required");
134 | } else {
135 | userSignIn(txtEmail, txtPassword);
136 |
137 | txtpasswordStatus.setText(" ");
138 | txtStatusMessage.setText(" ");
139 | txtEmailStatusMessage.setText(" ");
140 | }
141 | }
142 | });
143 |
144 | }
145 |
146 | private void userSignIn(String email, String password) {
147 |
148 | firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener() {
149 | @Override
150 | public void onComplete(@NonNull Task task) {
151 | if (task.isSuccessful()) {
152 | // assert user != null;
153 | FirebaseUser user = task.getResult().getUser();
154 | if (task.getResult().getUser().isEmailVerified()) {
155 |
156 | txtStatusMessage.setText("User SignIn Successfully");
157 | startActivity(new Intent(LoginActivity.this, AddingLocationActivity.class));
158 | finish();
159 |
160 | FirebaseUtil.currentUserDetails().addSnapshotListener(new EventListener() {
161 | @Override
162 | public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
163 | if (value.exists()){
164 | startActivity(new Intent(getApplicationContext(), RetrievingDataFirestore.class));
165 | finish();
166 | }
167 | }
168 | });
169 |
170 |
171 | } else {
172 | txtStatusMessage.setText("Email Not Verified");
173 | }
174 | } else {
175 | txtStatusMessage.setText("Invalid Login Credentials");
176 | }
177 |
178 | }
179 |
180 |
181 | }).addOnFailureListener(new OnFailureListener() {
182 | @Override
183 | public void onFailure(@NonNull Exception e) {
184 | Log.d("TAG_name", "onFailure: " + e.getMessage());
185 | }
186 | });
187 | }
188 | }
189 |
190 |
191 |
192 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/ModelClassData.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import java.io.Serializable;
4 |
5 | public class ModelClassData implements Serializable {
6 | String name;
7 | String countrycode;
8 | String phone;
9 | String email;
10 | String password;
11 |
12 | public ModelClassData(){}
13 |
14 | public ModelClassData(String name, String countrycode, String phone, String email) {
15 | this.name = name;
16 | this.phone = phone;
17 | this.email = email;
18 | this.countrycode = countrycode;
19 |
20 | }
21 |
22 | public ModelClassData(String name, String countrycode, String phone, String email, String password) {
23 | this.name = name;
24 | this.countrycode = countrycode;
25 | this.phone = phone;
26 | this.email = email;
27 | this.password = password;
28 | }
29 |
30 | public String getName() {
31 | return name;
32 | }
33 |
34 | public void setName(String name) {
35 | this.name = name;
36 | }
37 |
38 | public String getCountrycode() {
39 | return countrycode;
40 | }
41 |
42 | public void setCountrycode(String countrycode) {
43 | this.countrycode = countrycode;
44 | }
45 |
46 | public String getPhone() {
47 | return phone;
48 | }
49 |
50 | public void setPhone(String phone) {
51 | this.phone = phone;
52 | }
53 |
54 | public String getEmail() {
55 | return email;
56 | }
57 |
58 | public void setEmail(String email) {
59 | this.email = email;
60 | }
61 |
62 | public String getPassword() {
63 | return password;
64 | }
65 |
66 | public void setPassword(String password) {
67 | this.password = password;
68 | }
69 | }
70 |
71 |
72 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/ModelClassFirestore.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import java.io.Serializable;
4 |
5 | public class ModelClassFirestore implements Serializable {
6 | public ModelClassFirestore(){
7 |
8 | }
9 |
10 |
11 |
12 | String city;
13 | String state;
14 | String country;
15 | String name;
16 | String phone;
17 | String email;
18 | String url;
19 |
20 | public ModelClassFirestore(String city, String state, String country) {
21 | this.city = city;
22 | this.state = state;
23 | this.country = country;
24 | }
25 | public ModelClassFirestore(String city, String state, String country, String name, String phone, String email, String url) {
26 | this.city = city;
27 | this.state = state;
28 | this.country = country;
29 | this.name = name;
30 | this.phone = phone;
31 | this.email = email;
32 | this.url = url;
33 | }
34 | public String getCity() {
35 | return city;
36 | }
37 |
38 | public void setCity(String city) {
39 | this.city = city;
40 | }
41 |
42 | public String getState() {
43 | return state;
44 | }
45 |
46 | public void setState(String state) {
47 | this.state = state;
48 | }
49 |
50 | public String getCountry() {
51 | return country;
52 | }
53 |
54 | public void setCountry(String country) {
55 | this.country = country;
56 | }
57 | public String getName() {
58 | return name;
59 | }
60 |
61 | public void setName(String name) {
62 | this.name = name;
63 | }
64 |
65 | public String getPhone() {
66 | return phone;
67 | }
68 |
69 | public void setPhone(String phone) {
70 | this.phone = phone;
71 | }
72 |
73 | public String getEmail() {
74 | return email;
75 | }
76 |
77 | public void setEmail(String email) {
78 | this.email = email;
79 | }
80 |
81 | public String getUrl() {
82 | return url;
83 | }
84 |
85 | public void setUrl(String url) {
86 | this.url = url;
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/RetrievingDataFirestore.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import androidx.annotation.Nullable;
4 | import androidx.appcompat.app.AppCompatActivity;
5 |
6 | import android.content.Intent;
7 | import android.os.Bundle;
8 | import android.view.View;
9 | import android.widget.Button;
10 | import android.widget.ImageView;
11 | import android.widget.TextView;
12 |
13 | import com.bumptech.glide.Glide;
14 | import com.example.firestorepklearnings.util.FirebaseUtil;
15 | import com.google.firebase.auth.FirebaseAuth;
16 | import com.google.firebase.firestore.DocumentSnapshot;
17 | import com.google.firebase.firestore.EventListener;
18 | import com.google.firebase.firestore.FirebaseFirestoreException;
19 |
20 | public class RetrievingDataFirestore extends AppCompatActivity {
21 | TextView retrieveNameTextView, retrievePhoneTextView, retrieveEmailTextView,
22 | retrieveCityTextView, retrieveStateTextView, retrieveCountryTextView;
23 | Button logOutButton;
24 | ImageView proPicImgView;
25 | String email;
26 |
27 | @Override
28 | protected void onCreate(Bundle savedInstanceState) {
29 | super.onCreate(savedInstanceState);
30 | setContentView(R.layout.activity_retrieving_data_firestore);
31 |
32 | retrieveNameTextView = findViewById(R.id.textViewName);
33 | retrievePhoneTextView = findViewById(R.id.textViewPhone);
34 | retrieveEmailTextView = findViewById(R.id.textViewEmail);
35 | retrieveCityTextView = findViewById(R.id.textViewCity);
36 | retrieveStateTextView = findViewById(R.id.textViewState);
37 | retrieveCountryTextView = findViewById(R.id.textViewCountry);
38 | logOutButton = findViewById(R.id.logoutButton);
39 | proPicImgView = findViewById(R.id.profilePictureImageView);
40 | logOutButton.setOnClickListener(new View.OnClickListener() {
41 | @Override
42 | public void onClick(View view) {
43 | FirebaseAuth.getInstance().signOut();
44 | startActivity(new Intent(getApplicationContext(), LoginActivity.class));
45 | finish();
46 | }
47 | });
48 |
49 |
50 | retrieveData(retrieveNameTextView, retrievePhoneTextView, retrieveEmailTextView, retrieveCityTextView, retrieveStateTextView, retrieveCountryTextView, proPicImgView);
51 | }
52 |
53 | // private void retrieveData(TextView retrieveNameTextView, TextView retrievePhoneTextView, TextView retrieveEmailTextView, TextView retrieveCityTextView, TextView retrieveStateTextView, TextView retrieveCountryTextView) {
54 | //
55 | // FirebaseUtil.currentUserDetails().get().addOnCompleteListener(new OnCompleteListener() {
56 | // @Override
57 | // public void onComplete(@NonNull Task task) {
58 | // if(task.isSuccessful()){
59 | // DocumentSnapshot dataSnapshot = task.getResult();
60 | // if (dataSnapshot.exists()){
61 | // Toast.makeText(RetrievingDataFirestore.this, ""+dataSnapshot.getData().toString(), Toast.LENGTH_SHORT).show();
62 | //// Log.d("TAG_data", dataSnapshot.getData().toString());
63 | // }else{
64 | // Log.d("TAG", "no data");
65 | // Toast.makeText(RetrievingDataFirestore.this, "No Data", Toast.LENGTH_SHORT).show();
66 | // }
67 | //
68 | // }
69 | // }
70 | // });
71 | // }
72 |
73 | private void retrieveData(TextView retrieveNameTextView, TextView retrievePhoneTextView, TextView retrieveEmailTextView, TextView retrieveCityTextView, TextView retrieveStateTextView, TextView retrieveCountryTextView, ImageView proPicImgView) {
74 |
75 | FirebaseUtil.currentUserDetails().addSnapshotListener(new EventListener() {
76 | @Override
77 | public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
78 | if (value.exists()) {
79 |
80 | // Map map = value.getData();
81 | // map.get("name");
82 | // retrieveNameTextView.setText(map.get("name").toString());
83 |
84 |
85 | String name = value.getString("name");
86 | retrieveNameTextView.setText(name);
87 | String phone = value.getString("phone");
88 | retrievePhoneTextView.setText(phone);
89 | email = value.getString("email");
90 | retrieveEmailTextView.setText(email);
91 | String city = value.getString("city");
92 | retrieveCityTextView.setText(city);
93 | String state = value.getString("state");
94 | retrieveStateTextView.setText(state);
95 | String country = value.getString("country");
96 | retrieveCountryTextView.setText(country);
97 | String url = value.getString("url");
98 |
99 | Glide.with(RetrievingDataFirestore.this)
100 | .asBitmap()
101 | .load(url)
102 | .placeholder(R.drawable.ic_launcher_background)
103 | .error(R.drawable.ic_launcher_background)
104 | .into(proPicImgView);
105 | }
106 |
107 | }
108 | });
109 | }
110 |
111 |
112 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/SplashScreen.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.content.Intent;
6 | import android.os.Bundle;
7 | import android.os.Handler;
8 |
9 | import com.google.firebase.auth.FirebaseAuth;
10 | import com.google.firebase.auth.FirebaseUser;
11 |
12 | public class SplashScreen extends AppCompatActivity {
13 | FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
14 | FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_splash_screen);
20 | new Handler().postDelayed(new Runnable() {
21 | @Override
22 | public void run() {
23 |
24 | if ( firebaseAuth.getCurrentUser()!= null) {
25 | startActivity(new Intent(SplashScreen.this, RetrievingDataFirestore.class));
26 | finish();
27 | } else {
28 | startActivity(new Intent(SplashScreen.this, LoginActivity.class));
29 | finish();
30 |
31 | }
32 |
33 | }
34 | }, 3820);
35 | }
36 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/UserRegisterationActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import androidx.annotation.NonNull;
4 | import androidx.appcompat.app.AppCompatActivity;
5 |
6 | import android.content.Intent;
7 | import android.os.Bundle;
8 | import android.os.Handler;
9 | import android.view.View;
10 | import android.widget.Button;
11 | import android.widget.EditText;
12 | import android.widget.ImageView;
13 | import android.widget.TextView;
14 | import android.widget.Toast;
15 |
16 | import com.google.android.gms.tasks.OnCompleteListener;
17 | import com.google.android.gms.tasks.OnSuccessListener;
18 | import com.google.android.gms.tasks.Task;
19 | import com.google.firebase.auth.AuthResult;
20 | import com.google.firebase.auth.FirebaseAuth;
21 | import com.google.firebase.auth.FirebaseUser;
22 | import com.google.firebase.database.DatabaseReference;
23 |
24 | public class UserRegisterationActivity extends AppCompatActivity {
25 |
26 | ImageView backiconImg;
27 | private EditText email, password;
28 | private Button registration;
29 | private TextView alreadyAccount, txtpasswordStatus, txtEmailStatusMessage,
30 | txtStatusMessage;
31 |
32 | FirebaseAuth firebaseAuth;
33 | DatabaseReference databaseReference;
34 |
35 | @Override
36 | protected void onCreate(Bundle savedInstanceState) {
37 | super.onCreate(savedInstanceState);
38 | setContentView(R.layout.activity_user_registeration);
39 |
40 |
41 | //LINKING WITH XML
42 | backiconImg = findViewById(R.id.backIconimageView);
43 | email = findViewById(R.id.emailAddressRegisteration);
44 | password = findViewById(R.id.passwordRegistration);
45 | txtpasswordStatus = findViewById(R.id.passwordMessage);
46 | txtEmailStatusMessage = findViewById(R.id.emailMessageStatus);
47 | txtStatusMessage = findViewById(R.id.message);
48 | alreadyAccount = findViewById(R.id.textViewAlreadyRegistered);
49 | registration = findViewById(R.id.buttonSubmitRegistration);
50 |
51 |
52 | //INSTANCE VARIABLE
53 | firebaseAuth = FirebaseAuth.getInstance(); //ABSTRACT CLASS
54 |
55 |
56 | //BACKICON IMAGE ON CLICK
57 | backiconImg.setOnClickListener(new View.OnClickListener() {
58 | @Override
59 | public void onClick(View v) {
60 | finish();
61 |
62 | }
63 | });
64 |
65 | //ALREADY HAVE AN ACCOUNT INTENT
66 | alreadyAccount.setOnClickListener(new View.OnClickListener() {
67 | @Override
68 | public void onClick(View v) {
69 | finish();
70 | }
71 | });
72 |
73 |
74 | //REGISTRATION
75 | registration.setOnClickListener(new View.OnClickListener() {
76 | @Override
77 | public void onClick(View v) { //ON CLICK
78 | String txtEmail = email.getText().toString(); //TAKING INPUT STORING IT IN String txtEmail VARIABLE
79 | String txtPassword = password.getText().toString();
80 |
81 | Toast.makeText(UserRegisterationActivity.this, txtPassword, Toast.LENGTH_SHORT).show(); // TOAST TO SHOW PASSWORD
82 |
83 |
84 | //CONDITIONS FOR TAKING INPUT
85 |
86 |
87 | if (txtEmail.isEmpty()) {
88 | txtStatusMessage.setText("Insert Email Address");
89 |
90 | } else if (txtPassword.isEmpty()) {
91 | txtStatusMessage.setText("Insert Password");
92 | } else {
93 | txtStatusMessage.setText(" ");
94 | }
95 |
96 |
97 | if (txtEmail.length() < 7) {
98 | txtEmailStatusMessage.setText("www.humanbeing@example.com");
99 | } else if (!(txtEmail.endsWith(".com"))) {
100 | txtEmailStatusMessage.setText("email must ends with .com/org");
101 | } else {
102 | txtEmailStatusMessage.setText(" ");
103 | }
104 |
105 | if (txtPassword.contains(" ")) {
106 | txtpasswordStatus.setText("Spaces are not allowed");
107 | } else if ((txtPassword.length() < 6) || (txtPassword.length() >= 15)) {
108 | txtpasswordStatus.setText("Minimum of 6 characters is required, Maximum 15");
109 |
110 | } else if (!(txtPassword.contains("@") || txtPassword.contains("#")
111 | || txtPassword.contains("!") || txtPassword.contains("~")
112 | || txtPassword.contains("$") || txtPassword.contains("%")
113 | || txtPassword.contains("^") || txtPassword.contains("&")
114 | || txtPassword.contains("*") || txtPassword.contains("(")
115 | || txtPassword.contains(")") || txtPassword.contains("-")
116 | || txtPassword.contains("+") || txtPassword.contains("/")
117 | || txtPassword.contains(":") || txtPassword.contains(".")
118 | || txtPassword.contains(", ") || txtPassword.contains("<")
119 | || txtPassword.contains(">") || txtPassword.contains("?")
120 | || txtPassword.contains("|"))) {
121 | txtpasswordStatus.setText("at least 1 special character is required");
122 | } else {
123 | createUser(txtEmail, txtPassword);
124 | txtEmailStatusMessage.setText(" ");
125 | txtStatusMessage.setText(" ");
126 | txtpasswordStatus.setText(" ");
127 | }
128 | if (txtEmail.isEmpty() && txtPassword.isEmpty()) {
129 | txtStatusMessage.setText("Empty credentials");
130 | }
131 | }
132 | });
133 |
134 |
135 | }
136 |
137 | private void createUser(String email, String password) {
138 | firebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener() {
139 | @Override
140 | public void onComplete(@NonNull Task task) {
141 | if (task.isSuccessful()) {
142 | FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
143 | // firebaseUser.isEmailVerified()
144 | firebaseUser.sendEmailVerification().addOnSuccessListener(new OnSuccessListener() {
145 | @Override
146 | public void onSuccess(Void unused) {
147 | txtStatusMessage.setText("verification mail has been sent to your email");
148 |
149 | }
150 | });
151 |
152 |
153 | new Handler().postDelayed(new Runnable() {
154 | @Override
155 | public void run() {
156 | startActivity(new Intent(UserRegisterationActivity.this, LoginActivity.class));
157 | finish();
158 |
159 | }
160 | }, 3000);
161 |
162 |
163 | } else {
164 | txtEmailStatusMessage.setText(task.getException().getMessage());
165 | }
166 | }
167 | });
168 |
169 | }
170 |
171 | }
172 |
173 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/firebaseStorageProfileImage.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import static com.google.common.io.Files.getFileExtension;
4 |
5 | import androidx.annotation.NonNull;
6 | import androidx.annotation.Nullable;
7 | import androidx.appcompat.app.AppCompatActivity;
8 |
9 | import android.content.ContentResolver;
10 | import android.content.Intent;
11 | import android.net.Uri;
12 | import android.os.Bundle;
13 | import android.view.View;
14 | import android.webkit.MimeTypeMap;
15 | import android.widget.ImageView;
16 | import android.widget.Toast;
17 |
18 | import com.google.android.gms.tasks.OnCompleteListener;
19 | import com.google.android.gms.tasks.OnSuccessListener;
20 | import com.google.android.gms.tasks.Task;
21 | import com.google.firebase.storage.FirebaseStorage;
22 | import com.google.firebase.storage.StorageReference;
23 | import com.google.firebase.storage.UploadTask;
24 |
25 | public class firebaseStorageProfileImage extends AppCompatActivity {
26 | ImageView profilePictureImg;
27 | Uri imageUri;
28 | private static final int IMAGE_REQUEST = 2;
29 |
30 | @Override
31 | protected void onCreate(Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | setContentView(R.layout.activity_firebase_storage_profile_image);
34 |
35 | profilePictureImg = findViewById(R.id.profilePictureImageView);
36 |
37 | profilePictureImg.setOnClickListener(new View.OnClickListener() {
38 | @Override
39 | public void onClick(View view) {
40 | openImage();
41 |
42 | }
43 | });
44 | }
45 |
46 | private void openImage() {
47 | Intent intent = new Intent();
48 | intent.setType("image/");
49 | intent.setAction(Intent.ACTION_GET_CONTENT);
50 | startActivityForResult(intent, IMAGE_REQUEST);
51 | }
52 |
53 | @Override
54 | protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
55 | super.onActivityResult(requestCode, resultCode, data);
56 | if(requestCode == IMAGE_REQUEST && requestCode == RESULT_OK){
57 | imageUri = data.getData();
58 | uploadImage();
59 | }
60 | }
61 |
62 | private String getFileExtension(Uri uri) {
63 | ContentResolver contentResolver = getContentResolver();
64 | MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
65 | return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
66 | }
67 |
68 | private void uploadImage() {
69 | if (imageUri != null) {
70 | StorageReference reference = FirebaseStorage.getInstance().getReference().child("uploads").child(System.currentTimeMillis() + "." + getFileExtension(imageUri));
71 | reference.putFile(imageUri).addOnCompleteListener(new OnCompleteListener() {
72 | @Override
73 | public void onComplete(@NonNull Task task) {
74 | reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener() {
75 | @Override
76 | public void onSuccess(Uri uri) {
77 | String url = uri.toString();
78 |
79 | Toast.makeText(firebaseStorageProfileImage.this, ""+uri, Toast.LENGTH_SHORT).show();
80 | Toast.makeText(firebaseStorageProfileImage.this, "Image Upload Successfull", Toast.LENGTH_SHORT).show();
81 | }
82 | });
83 | }
84 | });
85 | }
86 |
87 | }
88 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/firestorepklearnings/util/FirebaseUtil.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings.util;
2 |
3 | import com.google.firebase.auth.FirebaseAuth;
4 | import com.google.firebase.firestore.CollectionReference;
5 | import com.google.firebase.firestore.DocumentReference;
6 | import com.google.firebase.firestore.FirebaseFirestore;
7 | import com.google.firebase.storage.FirebaseStorage;
8 |
9 | public class FirebaseUtil {
10 | public static String getCurrentUserId() {
11 | return FirebaseAuth.getInstance().getUid();
12 | }
13 |
14 | public static DocumentReference currentUserDetails() {
15 | return FirebaseFirestore.getInstance().collection("users").document("User Id : " +getCurrentUserId());
16 | }
17 |
18 | public static CollectionReference allUsersCollectionReference() {
19 | return FirebaseFirestore.getInstance().collection("users");
20 | }
21 | public static FirebaseStorage firebasestorage(){
22 | return FirebaseStorage.getInstance();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/background_black.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/background_lines_email_password.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/baseline_arrow_back_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/firstimgofapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/drawable/firstimgofapp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/drawable/img.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/mario.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/drawable/mario.png
--------------------------------------------------------------------------------
/app/src/main/res/font/abeezee.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_adding_location.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
21 |
28 |
29 |
30 |
38 |
45 |
46 |
47 |
55 |
62 |
63 |
64 |
76 |
77 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_adding_name_contact_and_email.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
22 |
23 |
30 |
31 |
32 |
43 |
44 |
51 |
52 |
53 |
61 |
62 |
69 |
70 |
71 |
79 |
80 |
87 |
88 |
89 |
101 |
102 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_firebase_storage_profile_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
25 |
26 |
46 |
47 |
58 |
59 |
78 |
79 |
94 |
95 |
106 |
107 |
119 |
120 |
135 |
136 |
152 |
153 |
169 |
170 |
182 |
183 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_retrieving_data_firestore.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
23 |
24 |
31 |
32 |
33 |
34 |
50 |
51 |
67 |
68 |
85 |
86 |
103 |
104 |
122 |
123 |
139 |
140 |
152 |
153 |
154 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
24 |
25 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_registeration.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
20 |
21 |
36 |
37 |
38 |
39 |
56 |
57 |
67 |
68 |
84 |
85 |
96 |
110 |
111 |
123 |
124 |
139 |
140 |
141 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/raw/firestorelottie.json:
--------------------------------------------------------------------------------
1 | {"v":"4.8.0","meta":{"g":"LottieFiles AE ","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":150,"w":500,"h":500,"nm":"9 - Cloud storage","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"Ok","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[64.385,-82.189,0],"ix":2},"a":{"a":0,"k":[79.833,72.23,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":[[64.952,-57.611],[-13.343,32.23],[-39.834,0.116]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999991623,0.4,0.458999992819,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":16,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[79.833,72.23],"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":80,"s":[25]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":96,"s":[35]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":113,"s":[15]},{"t":129,"s":[25]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Line Ellipse","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[51,-80,0],"ix":2},"a":{"a":0,"k":[95,95,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,-33.137],[33.137,0],[0,33.137],[-33.137,0]],"o":[[0,33.137],[-33.137,0],[0,-33.137],[33.137,0]],"v":[[60,0],[0,60],[-60,0],[0,-60]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.728999956916,0.301999978458,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 2')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.862999949736,0.411999990426,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 3')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95,95],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":83,"s":[10]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":99,"s":[20]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":116,"s":[6]},{"t":132,"s":[10]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":83,"s":[90]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":99,"s":[80]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":116,"s":[94]},{"t":132,"s":[90]}],"ix":2},"o":{"a":0,"k":-28,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Ellipse 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":78,"s":[0]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":94,"s":[-15]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":111,"s":[15]},{"t":127,"s":[0]}],"ix":10},"p":{"a":0,"k":[275,265,0],"ix":2},"a":{"a":0,"k":[51,-80,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.3,0.3,0.3],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0]},"t":78,"s":[0,0,100]},{"i":{"x":[0.3,0.3,0.3],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0]},"t":94,"s":[120,120,100]},{"i":{"x":[0.3,0.3,0.3],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0]},"t":111,"s":[120,120,100]},{"t":127,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[180,180],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.729411764706,0.301960784314,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 2')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.862744978362,0.411765005074,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 3')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51,-80],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Server 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"t":132,"s":[280,395,0],"to":[0,0,0],"ti":[0,0,0]},{"t":147,"s":[280,255,0]}],"ix":2},"a":{"a":0,"k":[282.325,257.487,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":[[1.119,1.109],[0.33,0.22],[0.36,0.15],[0.389,0.071],[0.769,-0.159],[0.369,-0.15],[0.32,-0.22],[0.27,-0.28],[0,-1.58],[-1.121,-1.109],[-1.58,0],[-0.38,0.08],[-0.361,0.15],[-0.33,0.21],[-0.271,0.281],[0,1.58]],"o":[[-0.271,-0.28],[-0.32,-0.22],[-0.371,-0.15],[-0.771,-0.159],[-0.391,0.071],[-0.36,0.15],[-0.33,0.22],[-1.121,1.109],[0,1.58],[1.11,1.121],[0.389,0],[0.389,-0.08],[0.37,-0.15],[0.33,-0.219],[1.119,-1.12],[0,-1.58]],"v":[[4.24,-4.22],[3.33,-4.97],[2.3,-5.52],[1.17,-5.861],[-1.17,-5.861],[-2.3,-5.52],[-3.33,-4.97],[-4.24,-4.22],[-6,0.02],[-4.24,4.259],[0,6.02],[1.17,5.9],[2.29,5.56],[3.33,5.009],[4.24,4.259],[6,0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51.25,6.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":39,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":46,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":53,"s":[50,50]},{"t":60,"s":[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":[[3.31,0],[0,-3.32],[-3.311,0],[0,3.31]],"o":[[-3.311,0],[0,3.31],[3.31,0],[0,-3.32]],"v":[[0,-6],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[28.75,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":36,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":43,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":50,"s":[50,50]},{"t":57,"s":[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":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.58,0],[1.12,-1.12],[0.219,-0.33],[0.149,-0.359],[0.069,-0.391],[0,-0.391],[-1.12,-1.12],[-0.33,-0.219],[-0.36,-0.15],[-0.391,-0.08],[-0.391,0],[-1.11,1.12],[0,1.58],[1.119,1.109]],"o":[[-1.58,0],[-0.281,0.269],[-0.22,0.319],[-0.15,0.37],[-0.08,0.38],[0,1.58],[0.27,0.281],[0.32,0.21],[0.369,0.149],[0.38,0.08],[1.58,0],[1.119,-1.12],[0,-1.58],[-1.12,-1.12]],"v":[[0,-6],[-4.24,-4.24],[-4.99,-3.33],[-5.54,-2.301],[-5.88,-1.17],[-6,0],[-4.24,4.239],[-3.33,4.989],[-2.3,5.54],[-1.17,5.88],[0,6],[4.24,4.239],[6,0],[4.24,-4.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[6.25,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":33,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":40,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":47,"s":[50,50]},{"t":54,"s":[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":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[330,267.45],"ix":2},"a":{"a":0,"k":[28.75,6.29],"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":"Points 1","np":3,"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]],"o":[[0,0],[0,0]],"v":[[5,5],[55,5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[0]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[100]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[235,267.449],"ix":2},"a":{"a":0,"k":[30,5],"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":"Line 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.999,0],[0,0],[0,-5.998],[0,0],[-5.998,0],[0,0],[0,5.999],[0,0]],"o":[[0,0],[-5.998,0],[0,0],[0,5.999],[0,0],[5.999,0],[0,0],[0,-5.998]],"v":[[84.139,-27.164],[-84.139,-27.164],[-95,-16.303],[-95,16.302],[-84.139,27.164],[84.139,27.164],[95,16.302],[95,-16.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"op","nm":"Offset Paths 1","a":{"a":0,"k":-3,"ix":1},"lj":1,"ml":{"a":0,"k":4,"ix":3},"ix":2,"mn":"ADBE Vector Filter - Offset","hd":false},{"ty":"st","c":{"a":0,"k":[0.968627512455,0.741176486015,0.329411774874,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 4')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":false},{"ty":"fl","c":{"a":0,"k":[0.898000001907,0.587999999523,0.298000007868,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 5')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,47.339],"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":4,"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],[2.913,0],[0,0],[1.453,-2.526]],"o":[[0,0],[0,0],[-1.453,-2.526],[0,0],[-2.913,0],[0,0]],"v":[[-93.206,12.408],[93.206,12.408],[81.282,-8.325],[74.225,-12.408],[-74.225,-12.408],[-81.282,-8.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.532999992371,0.587999999523,0.638999998569,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 6')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,12.658],"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":[282.325,257.487],"ix":2},"a":{"a":0,"k":[95.25,37.376],"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":"Server 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":132,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Server 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"t":135,"s":[280,395,0],"to":[0,0,0],"ti":[0,0,0]},{"t":150,"s":[280,325,0]}],"ix":2},"a":{"a":0,"k":[282.325,257.487,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":[[1.119,1.109],[0.33,0.22],[0.36,0.15],[0.389,0.071],[0.769,-0.159],[0.369,-0.15],[0.32,-0.22],[0.27,-0.28],[0,-1.58],[-1.121,-1.109],[-1.58,0],[-0.38,0.08],[-0.361,0.15],[-0.33,0.21],[-0.271,0.281],[0,1.58]],"o":[[-0.271,-0.28],[-0.32,-0.22],[-0.371,-0.15],[-0.771,-0.159],[-0.391,0.071],[-0.36,0.15],[-0.33,0.22],[-1.121,1.109],[0,1.58],[1.11,1.121],[0.389,0],[0.389,-0.08],[0.37,-0.15],[0.33,-0.219],[1.119,-1.12],[0,-1.58]],"v":[[4.24,-4.22],[3.33,-4.97],[2.3,-5.52],[1.17,-5.861],[-1.17,-5.861],[-2.3,-5.52],[-3.33,-4.97],[-4.24,-4.22],[-6,0.02],[-4.24,4.259],[0,6.02],[1.17,5.9],[2.29,5.56],[3.33,5.009],[4.24,4.259],[6,0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51.25,6.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":39,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":46,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":53,"s":[50,50]},{"t":60,"s":[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":[[3.31,0],[0,-3.32],[-3.311,0],[0,3.31]],"o":[[-3.311,0],[0,3.31],[3.31,0],[0,-3.32]],"v":[[0,-6],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[28.75,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":36,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":43,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":50,"s":[50,50]},{"t":57,"s":[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":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.58,0],[1.12,-1.12],[0.219,-0.33],[0.149,-0.359],[0.069,-0.391],[0,-0.391],[-1.12,-1.12],[-0.33,-0.219],[-0.36,-0.15],[-0.391,-0.08],[-0.391,0],[-1.11,1.12],[0,1.58],[1.119,1.109]],"o":[[-1.58,0],[-0.281,0.269],[-0.22,0.319],[-0.15,0.37],[-0.08,0.38],[0,1.58],[0.27,0.281],[0.32,0.21],[0.369,0.149],[0.38,0.08],[1.58,0],[1.119,-1.12],[0,-1.58],[-1.12,-1.12]],"v":[[0,-6],[-4.24,-4.24],[-4.99,-3.33],[-5.54,-2.301],[-5.88,-1.17],[-6,0],[-4.24,4.239],[-3.33,4.989],[-2.3,5.54],[-1.17,5.88],[0,6],[4.24,4.239],[6,0],[4.24,-4.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[6.25,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":33,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":40,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":47,"s":[50,50]},{"t":54,"s":[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":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[330,267.45],"ix":2},"a":{"a":0,"k":[28.75,6.29],"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":"Points 1","np":3,"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]],"o":[[0,0],[0,0]],"v":[[5,5],[55,5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[0]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[100]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[235,267.449],"ix":2},"a":{"a":0,"k":[30,5],"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":"Line 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.999,0],[0,0],[0,-5.998],[0,0],[-5.998,0],[0,0],[0,5.999],[0,0]],"o":[[0,0],[-5.998,0],[0,0],[0,5.999],[0,0],[5.999,0],[0,0],[0,-5.998]],"v":[[84.139,-27.164],[-84.139,-27.164],[-95,-16.303],[-95,16.302],[-84.139,27.164],[84.139,27.164],[95,16.302],[95,-16.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"op","nm":"Offset Paths 1","a":{"a":0,"k":-3,"ix":1},"lj":1,"ml":{"a":0,"k":4,"ix":3},"ix":2,"mn":"ADBE Vector Filter - Offset","hd":false},{"ty":"st","c":{"a":0,"k":[0.968627512455,0.741176486015,0.329411774874,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 4')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":false},{"ty":"fl","c":{"a":0,"k":[0.898000001907,0.587999999523,0.298000007868,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 5')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,47.339],"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":4,"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],[2.913,0],[0,0],[1.453,-2.526]],"o":[[0,0],[0,0],[-1.453,-2.526],[0,0],[-2.913,0],[0,0]],"v":[[-93.206,12.408],[93.206,12.408],[81.282,-8.325],[74.225,-12.408],[-74.225,-12.408],[-81.282,-8.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.532999992371,0.587999999523,0.638999998569,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 6')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,12.658],"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":[282.325,257.487],"ix":2},"a":{"a":0,"k":[95.25,37.376],"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":"Server 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":132,"op":150,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Server 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"t":12,"s":[280,255,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":29,"s":[240,255,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":46,"s":[320,255,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":63,"s":[280,255,0],"to":[0,0,0],"ti":[0,0,0]},{"t":78,"s":[280,395,0]}],"ix":2},"a":{"a":0,"k":[282.325,257.487,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":[[1.119,1.109],[0.33,0.22],[0.36,0.15],[0.389,0.071],[0.769,-0.159],[0.369,-0.15],[0.32,-0.22],[0.27,-0.28],[0,-1.58],[-1.121,-1.109],[-1.58,0],[-0.38,0.08],[-0.361,0.15],[-0.33,0.21],[-0.271,0.281],[0,1.58]],"o":[[-0.271,-0.28],[-0.32,-0.22],[-0.371,-0.15],[-0.771,-0.159],[-0.391,0.071],[-0.36,0.15],[-0.33,0.22],[-1.121,1.109],[0,1.58],[1.11,1.121],[0.389,0],[0.389,-0.08],[0.37,-0.15],[0.33,-0.219],[1.119,-1.12],[0,-1.58]],"v":[[4.24,-4.22],[3.33,-4.97],[2.3,-5.52],[1.17,-5.861],[-1.17,-5.861],[-2.3,-5.52],[-3.33,-4.97],[-4.24,-4.22],[-6,0.02],[-4.24,4.259],[0,6.02],[1.17,5.9],[2.29,5.56],[3.33,5.009],[4.24,4.259],[6,0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51.25,6.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":45,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":52,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":59,"s":[50,50]},{"t":66,"s":[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":[[3.31,0],[0,-3.32],[-3.311,0],[0,3.31]],"o":[[-3.311,0],[0,3.31],[3.31,0],[0,-3.32]],"v":[[0,-6],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[28.75,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":42,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":49,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":56,"s":[50,50]},{"t":63,"s":[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":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.58,0],[1.12,-1.12],[0.219,-0.33],[0.149,-0.359],[0.069,-0.391],[0,-0.391],[-1.12,-1.12],[-0.33,-0.219],[-0.36,-0.15],[-0.391,-0.08],[-0.391,0],[-1.11,1.12],[0,1.58],[1.119,1.109]],"o":[[-1.58,0],[-0.281,0.269],[-0.22,0.319],[-0.15,0.37],[-0.08,0.38],[0,1.58],[0.27,0.281],[0.32,0.21],[0.369,0.149],[0.38,0.08],[1.58,0],[1.119,-1.12],[0,-1.58],[-1.12,-1.12]],"v":[[0,-6],[-4.24,-4.24],[-4.99,-3.33],[-5.54,-2.301],[-5.88,-1.17],[-6,0],[-4.24,4.239],[-3.33,4.989],[-2.3,5.54],[-1.17,5.88],[0,6],[4.24,4.239],[6,0],[4.24,-4.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[6.25,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":39,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":46,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":53,"s":[50,50]},{"t":60,"s":[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":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[330,267.45],"ix":2},"a":{"a":0,"k":[28.75,6.29],"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":"Points 1","np":3,"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]],"o":[[0,0],[0,0]],"v":[[5,5],[55,5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":39,"s":[0]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":53,"s":[50]},{"t":67,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":39,"s":[100]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":53,"s":[50]},{"t":67,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[235,267.449],"ix":2},"a":{"a":0,"k":[30,5],"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":"Line 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.999,0],[0,0],[0,-5.998],[0,0],[-5.998,0],[0,0],[0,5.999],[0,0]],"o":[[0,0],[-5.998,0],[0,0],[0,5.999],[0,0],[5.999,0],[0,0],[0,-5.998]],"v":[[84.139,-27.164],[-84.139,-27.164],[-95,-16.303],[-95,16.302],[-84.139,27.164],[84.139,27.164],[95,16.302],[95,-16.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"op","nm":"Offset Paths 1","a":{"a":0,"k":-3,"ix":1},"lj":1,"ml":{"a":0,"k":7,"ix":3},"ix":2,"mn":"ADBE Vector Filter - Offset","hd":false},{"ty":"st","c":{"a":0,"k":[0.968627510819,0.741176470588,0.329411764706,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 4')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":7,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000001907,0.587999999523,0.298000007868,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 5')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,47.339],"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":4,"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],[2.913,0],[0,0],[1.453,-2.526]],"o":[[0,0],[0,0],[-1.453,-2.526],[0,0],[-2.913,0],[0,0]],"v":[[-93.206,12.408],[93.206,12.408],[81.282,-8.325],[74.225,-12.408],[-74.225,-12.408],[-81.282,-8.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.532999992371,0.587999999523,0.638999998569,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 6')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,12.658],"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":[282.325,257.487],"ix":2},"a":{"a":0,"k":[95.25,37.376],"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":"Server 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":78,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Server 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"t":9,"s":[280,325,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":26,"s":[240,325,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":43,"s":[320,325,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[280,325,0],"to":[0,0,0],"ti":[0,0,0]},{"t":75,"s":[280,395,0]}],"ix":2},"a":{"a":0,"k":[282.325,257.487,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":[[1.119,1.109],[0.33,0.22],[0.36,0.15],[0.389,0.071],[0.769,-0.159],[0.369,-0.15],[0.32,-0.22],[0.27,-0.28],[0,-1.58],[-1.121,-1.109],[-1.58,0],[-0.38,0.08],[-0.361,0.15],[-0.33,0.21],[-0.271,0.281],[0,1.58]],"o":[[-0.271,-0.28],[-0.32,-0.22],[-0.371,-0.15],[-0.771,-0.159],[-0.391,0.071],[-0.36,0.15],[-0.33,0.22],[-1.121,1.109],[0,1.58],[1.11,1.121],[0.389,0],[0.389,-0.08],[0.37,-0.15],[0.33,-0.219],[1.119,-1.12],[0,-1.58]],"v":[[4.24,-4.22],[3.33,-4.97],[2.3,-5.52],[1.17,-5.861],[-1.17,-5.861],[-2.3,-5.52],[-3.33,-4.97],[-4.24,-4.22],[-6,0.02],[-4.24,4.259],[0,6.02],[1.17,5.9],[2.29,5.56],[3.33,5.009],[4.24,4.259],[6,0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51.25,6.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":42,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":49,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":56,"s":[50,50]},{"t":63,"s":[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":[[3.31,0],[0,-3.32],[-3.311,0],[0,3.31]],"o":[[-3.311,0],[0,3.31],[3.31,0],[0,-3.32]],"v":[[0,-6],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[28.75,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":39,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":46,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":53,"s":[50,50]},{"t":60,"s":[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":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.58,0],[1.12,-1.12],[0.219,-0.33],[0.149,-0.359],[0.069,-0.391],[0,-0.391],[-1.12,-1.12],[-0.33,-0.219],[-0.36,-0.15],[-0.391,-0.08],[-0.391,0],[-1.11,1.12],[0,1.58],[1.119,1.109]],"o":[[-1.58,0],[-0.281,0.269],[-0.22,0.319],[-0.15,0.37],[-0.08,0.38],[0,1.58],[0.27,0.281],[0.32,0.21],[0.369,0.149],[0.38,0.08],[1.58,0],[1.119,-1.12],[0,-1.58],[-1.12,-1.12]],"v":[[0,-6],[-4.24,-4.24],[-4.99,-3.33],[-5.54,-2.301],[-5.88,-1.17],[-6,0],[-4.24,4.239],[-3.33,4.989],[-2.3,5.54],[-1.17,5.88],[0,6],[4.24,4.239],[6,0],[4.24,-4.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[6.25,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":36,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":43,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":50,"s":[50,50]},{"t":57,"s":[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":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[330,267.45],"ix":2},"a":{"a":0,"k":[28.75,6.29],"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":"Points 1","np":3,"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]],"o":[[0,0],[0,0]],"v":[[5,5],[55,5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":50,"s":[50]},{"t":64,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":50,"s":[50]},{"t":64,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[235,267.449],"ix":2},"a":{"a":0,"k":[30,5],"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":"Line 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.999,0],[0,0],[0,-5.998],[0,0],[-5.998,0],[0,0],[0,5.999],[0,0]],"o":[[0,0],[-5.998,0],[0,0],[0,5.999],[0,0],[5.999,0],[0,0],[0,-5.998]],"v":[[84.139,-27.164],[-84.139,-27.164],[-95,-16.303],[-95,16.302],[-84.139,27.164],[84.139,27.164],[95,16.302],[95,-16.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"op","nm":"Offset Paths 1","a":{"a":0,"k":-3,"ix":1},"lj":1,"ml":{"a":0,"k":4,"ix":3},"ix":2,"mn":"ADBE Vector Filter - Offset","hd":false},{"ty":"st","c":{"a":0,"k":[0.968627510819,0.741176470588,0.329411764706,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 4')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":false},{"ty":"fl","c":{"a":0,"k":[0.898000001907,0.587999999523,0.298000007868,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 5')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,47.339],"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":4,"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],[2.913,0],[0,0],[1.453,-2.526]],"o":[[0,0],[0,0],[-1.453,-2.526],[0,0],[-2.913,0],[0,0]],"v":[[-93.206,12.408],[93.206,12.408],[81.282,-8.325],[74.225,-12.408],[-74.225,-12.408],[-81.282,-8.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.532999992371,0.587999999523,0.638999998569,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 6')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,12.658],"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":[282.325,257.487],"ix":2},"a":{"a":0,"k":[95.25,37.376],"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":"Server 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Server 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"t":6,"s":[280,395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":23,"s":[240,395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":40,"s":[320,395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":0.3},"o":{"x":0.7,"y":0.7},"t":57,"s":[280,395,0],"to":[0,0,0],"ti":[0,0,0]},{"t":78,"s":[280,395,0]}],"ix":2},"a":{"a":0,"k":[282.325,257.487,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":[[1.119,1.109],[0.33,0.22],[0.36,0.15],[0.389,0.071],[0.769,-0.159],[0.369,-0.15],[0.32,-0.22],[0.27,-0.28],[0,-1.58],[-1.121,-1.109],[-1.58,0],[-0.38,0.08],[-0.361,0.15],[-0.33,0.21],[-0.271,0.281],[0,1.58]],"o":[[-0.271,-0.28],[-0.32,-0.22],[-0.371,-0.15],[-0.771,-0.159],[-0.391,0.071],[-0.36,0.15],[-0.33,0.22],[-1.121,1.109],[0,1.58],[1.11,1.121],[0.389,0],[0.389,-0.08],[0.37,-0.15],[0.33,-0.219],[1.119,-1.12],[0,-1.58]],"v":[[4.24,-4.22],[3.33,-4.97],[2.3,-5.52],[1.17,-5.861],[-1.17,-5.861],[-2.3,-5.52],[-3.33,-4.97],[-4.24,-4.22],[-6,0.02],[-4.24,4.259],[0,6.02],[1.17,5.9],[2.29,5.56],[3.33,5.009],[4.24,4.259],[6,0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51.25,6.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":39,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":46,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":53,"s":[50,50]},{"t":60,"s":[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":[[3.31,0],[0,-3.32],[-3.311,0],[0,3.31]],"o":[[-3.311,0],[0,3.31],[3.31,0],[0,-3.32]],"v":[[0,-6],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[28.75,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":36,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":43,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":50,"s":[50,50]},{"t":57,"s":[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":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.58,0],[1.12,-1.12],[0.219,-0.33],[0.149,-0.359],[0.069,-0.391],[0,-0.391],[-1.12,-1.12],[-0.33,-0.219],[-0.36,-0.15],[-0.391,-0.08],[-0.391,0],[-1.11,1.12],[0,1.58],[1.119,1.109]],"o":[[-1.58,0],[-0.281,0.269],[-0.22,0.319],[-0.15,0.37],[-0.08,0.38],[0,1.58],[0.27,0.281],[0.32,0.21],[0.369,0.149],[0.38,0.08],[1.58,0],[1.119,-1.12],[0,-1.58],[-1.12,-1.12]],"v":[[0,-6],[-4.24,-4.24],[-4.99,-3.33],[-5.54,-2.301],[-5.88,-1.17],[-6,0],[-4.24,4.239],[-3.33,4.989],[-2.3,5.54],[-1.17,5.88],[0,6],[4.24,4.239],[6,0],[4.24,-4.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[6.25,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":33,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":40,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":47,"s":[50,50]},{"t":54,"s":[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":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[330,267.45],"ix":2},"a":{"a":0,"k":[28.75,6.29],"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":"Points 1","np":3,"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]],"o":[[0,0],[0,0]],"v":[[5,5],[55,5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[0]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[100]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[235,267.449],"ix":2},"a":{"a":0,"k":[30,5],"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":"Line 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.999,0],[0,0],[0,-5.998],[0,0],[-5.998,0],[0,0],[0,5.999],[0,0]],"o":[[0,0],[-5.998,0],[0,0],[0,5.999],[0,0],[5.999,0],[0,0],[0,-5.998]],"v":[[84.139,-27.164],[-84.139,-27.164],[-95,-16.303],[-95,16.302],[-84.139,27.164],[84.139,27.164],[95,16.302],[95,-16.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"op","nm":"Offset Paths 1","a":{"a":0,"k":-3,"ix":1},"lj":1,"ml":{"a":0,"k":4,"ix":3},"ix":2,"mn":"ADBE Vector Filter - Offset","hd":false},{"ty":"st","c":{"a":0,"k":[0.968627512455,0.741176486015,0.329411774874,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 4')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":false},{"ty":"fl","c":{"a":0,"k":[0.898000001907,0.587999999523,0.298000007868,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 5')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,47.339],"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":4,"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],[2.913,0],[0,0],[1.453,-2.526]],"o":[[0,0],[0,0],[-1.453,-2.526],[0,0],[-2.913,0],[0,0]],"v":[[-93.206,12.408],[93.206,12.408],[81.282,-8.325],[74.225,-12.408],[-74.225,-12.408],[-81.282,-8.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.532999992371,0.587999999523,0.638999998569,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 6')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,12.658],"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":[282.325,257.487],"ix":2},"a":{"a":0,"k":[95.25,37.376],"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":"Server 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":78,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Cloud 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"t":3,"s":[275,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":20,"s":[245,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":37,"s":[305,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":54,"s":[275,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.8,"y":0},"t":73,"s":[275,260,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.9,"y":0},"t":98,"s":[275,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":123,"s":[275,250,0],"to":[0,0,0],"ti":[0,0,0]},{"t":138,"s":[275,215,0]}],"ix":2},"a":{"a":0,"k":[148.478,96.829,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,24.5],[20.473,3.933],[0,6.726],[20.763,0],[6.675,-6.06],[34.446,0],[0,-37.429],[-0.754,-4.043],[4.032,0],[0,-31.534],[-31.533,0]],"o":[[24.502,0],[0,-21.618],[3.096,-5.463],[0,-20.766],[-9.73,0],[-4.315,-33.27],[-37.43,0],[0,4.263],[-3.788,-0.806],[-31.533,0],[0,31.534],[0,0]],"v":[[103.864,96.579],[148.228,52.215],[112.274,8.715],[117.156,-9.775],[79.558,-47.376],[54.32,-37.59],[-12.82,-96.579],[-80.593,-28.809],[-79.398,-16.348],[-91.131,-17.613],[-148.228,39.481],[-91.131,96.579]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.922000002394,0.922000002394,0.922000002394,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 7')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[148.478,96.829],"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":150,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Cloud 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[205,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":17,"s":[175,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":34,"s":[235,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":51,"s":[205,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.8,"y":0},"t":70,"s":[205,205,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.9,"y":0},"t":95,"s":[205,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":120,"s":[205,195,0],"to":[0,0,0],"ti":[0,0,0]},{"t":135,"s":[205,160,0]}],"ix":2},"a":{"a":0,"k":[127.75,83.324,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,21.074],[-17.61,3.383],[0,5.785],[-17.86,0],[-5.742,-5.212],[-29.629,0],[0,-32.194],[0.648,-3.478],[-3.468,0],[0,-27.125],[27.124,0]],"o":[[-21.075,0],[0,-18.595],[-2.663,-4.699],[0,-17.862],[8.369,0],[3.712,-28.618],[32.196,0],[0,3.667],[3.258,-0.694],[27.124,0],[0,27.123],[0,0]],"v":[[-89.34,83.074],[-127.5,44.914],[-96.574,7.497],[-100.774,-8.407],[-68.433,-40.75],[-46.724,-32.333],[11.027,-83.074],[69.323,-24.78],[68.295,-14.061],[78.387,-15.149],[127.5,33.961],[78.387,83.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.811999990426,0.811999990426,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller').effect('Color 8')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[127.75,83.324],"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":150,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Server 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":78,"s":[280,395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":0.3},"o":{"x":0.7,"y":0.7},"t":93,"s":[280,270,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":117,"s":[280,270,0],"to":[0,0,0],"ti":[0,0,0]},{"t":132,"s":[280,395,0]}],"ix":2},"a":{"a":0,"k":[282.325,257.487,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":[[1.119,1.109],[0.33,0.22],[0.36,0.15],[0.389,0.071],[0.769,-0.159],[0.369,-0.15],[0.32,-0.22],[0.27,-0.28],[0,-1.58],[-1.121,-1.109],[-1.58,0],[-0.38,0.08],[-0.361,0.15],[-0.33,0.21],[-0.271,0.281],[0,1.58]],"o":[[-0.271,-0.28],[-0.32,-0.22],[-0.371,-0.15],[-0.771,-0.159],[-0.391,0.071],[-0.36,0.15],[-0.33,0.22],[-1.121,1.109],[0,1.58],[1.11,1.121],[0.389,0],[0.389,-0.08],[0.37,-0.15],[0.33,-0.219],[1.119,-1.12],[0,-1.58]],"v":[[4.24,-4.22],[3.33,-4.97],[2.3,-5.52],[1.17,-5.861],[-1.17,-5.861],[-2.3,-5.52],[-3.33,-4.97],[-4.24,-4.22],[-6,0.02],[-4.24,4.259],[0,6.02],[1.17,5.9],[2.29,5.56],[3.33,5.009],[4.24,4.259],[6,0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[51.25,6.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":39,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":46,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":53,"s":[50,50]},{"t":60,"s":[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":[[3.31,0],[0,-3.32],[-3.311,0],[0,3.31]],"o":[[-3.311,0],[0,3.31],[3.31,0],[0,-3.32]],"v":[[0,-6],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[28.75,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":36,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":43,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":50,"s":[50,50]},{"t":57,"s":[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":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.58,0],[1.12,-1.12],[0.219,-0.33],[0.149,-0.359],[0.069,-0.391],[0,-0.391],[-1.12,-1.12],[-0.33,-0.219],[-0.36,-0.15],[-0.391,-0.08],[-0.391,0],[-1.11,1.12],[0,1.58],[1.119,1.109]],"o":[[-1.58,0],[-0.281,0.269],[-0.22,0.319],[-0.15,0.37],[-0.08,0.38],[0,1.58],[0.27,0.281],[0.32,0.21],[0.369,0.149],[0.38,0.08],[1.58,0],[1.119,-1.12],[0,-1.58],[-1.12,-1.12]],"v":[[0,-6],[-4.24,-4.24],[-4.99,-3.33],[-5.54,-2.301],[-5.88,-1.17],[-6,0],[-4.24,4.239],[-3.33,4.989],[-2.3,5.54],[-1.17,5.88],[0,6],[4.24,4.239],[6,0],[4.24,-4.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[6.25,6.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":33,"s":[100,100]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":40,"s":[150,150]},{"i":{"x":[0.25,0.25],"y":[1,1]},"o":{"x":[0.75,0.75],"y":[0,0]},"t":47,"s":[50,50]},{"t":54,"s":[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":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[330,267.45],"ix":2},"a":{"a":0,"k":[28.75,6.29],"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":"Points 1","np":3,"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]],"o":[[0,0],[0,0]],"v":[[5,5],[55,5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372999995947,0.40000000596,0.458999991417,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"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":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[0]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":33,"s":[100]},{"i":{"x":[0.25],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":47,"s":[50]},{"t":61,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[235,267.449],"ix":2},"a":{"a":0,"k":[30,5],"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":"Line 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.999,0],[0,0],[0,-5.998],[0,0],[-5.998,0],[0,0],[0,5.999],[0,0]],"o":[[0,0],[-5.998,0],[0,0],[0,5.999],[0,0],[5.999,0],[0,0],[0,-5.998]],"v":[[84.139,-27.164],[-84.139,-27.164],[-95,-16.303],[-95,16.302],[-84.139,27.164],[84.139,27.164],[95,16.302],[95,-16.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"op","nm":"Offset Paths 1","a":{"a":0,"k":-3,"ix":1},"lj":1,"ml":{"a":0,"k":4,"ix":3},"ix":2,"mn":"ADBE Vector Filter - Offset","hd":false},{"ty":"st","c":{"a":0,"k":[0.968627512455,0.741176486015,0.329411774874,1],"ix":3,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 4')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":false},{"ty":"fl","c":{"a":0,"k":[0.898000001907,0.587999999523,0.298000007868,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 5')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,47.339],"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":4,"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],[2.913,0],[0,0],[1.453,-2.526]],"o":[[0,0],[0,0],[-1.453,-2.526],[0,0],[-2.913,0],[0,0]],"v":[[-93.206,12.408],[93.206,12.408],[81.282,-8.325],[74.225,-12.408],[-74.225,-12.408],[-81.282,-8.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.532999992371,0.587999999523,0.638999998569,1],"ix":4,"x":"var $bm_rt;\ntry {\n $bm_rt = thisComp.layer('Controller')('Effects')('Color 6')('ADBE Color Control-0001');\n} catch (e) {\n $bm_rt = value;\n}"},"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":[95.25,12.658],"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":[282.325,257.487],"ix":2},"a":{"a":0,"k":[95.25,37.376],"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":"Server 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":78,"op":150,"st":0,"bm":0}],"markers":[]}
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF000000
4 | #FFFFFFFF
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/font_certs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @array/com_google_android_gms_fonts_certs_dev
5 | - @array/com_google_android_gms_fonts_certs_prod
6 |
7 |
8 | -
9 | MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
10 |
11 |
12 |
13 | -
14 | MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values/preloaded_fonts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @font/abeezee
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | FIRESTORE PK Learnings
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/app/src/test/java/com/example/firestorepklearnings/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.example.firestorepklearnings;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | buildscript {
2 | dependencies {
3 | classpath("com.google.gms:google-services:4.4.0")
4 | }
5 | }
6 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
7 | plugins {
8 | id("com.android.application") version "8.2.2" apply false
9 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Enables namespacing of each library's R class so that its R class includes only the
19 | # resources declared in the library itself and none from the library's dependencies,
20 | # thereby reducing the size of the R class for that library
21 | android.nonTransitiveRClass=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laidbackvalen/Firebase-Firestore-DataApp-/dc1e844e4ca3eff8da47fb751f83c83cabcc29a4/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Nov 21 10:33:45 IST 2023
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | gradlePluginPortal()
6 | }
7 | }
8 | dependencyResolutionManagement {
9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
10 | repositories {
11 | google()
12 | mavenCentral()
13 | }
14 | }
15 |
16 | rootProject.name = "FIRESTORE Set and Retrieve Data"
17 | include(":app")
18 |
--------------------------------------------------------------------------------