Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
a3db087
feat: Add multi-app communication using Nearby Connections
google-labs-jules[bot] Jul 19, 2025
e6aadf6
feat: Add commander failover logic
google-labs-jules[bot] Jul 19, 2025
8079eb8
feat: Add commander reclaim logic
google-labs-jules[bot] Jul 19, 2025
3a64bd8
feat: Add system prompts and local database
google-labs-jules[bot] Jul 19, 2025
a54b07f
feat: Add message signing and verification
google-labs-jules[bot] Jul 19, 2025
e106a78
feat: Add identity verification
google-labs-jules[bot] Jul 19, 2025
71efd32
feat: Add impersonation detection
google-labs-jules[bot] Jul 19, 2025
a9a6929
feat: Add mission descriptions and vector database
google-labs-jules[bot] Jul 20, 2025
1221166
feat: Unify chat experience and improve communication protocol
google-labs-jules[bot] Jul 20, 2025
ca0e02b
I fixed the build issue with the ObjectBox plugin.
google-labs-jules[bot] Jul 20, 2025
3909644
Firebase Studio Nix configuration
MrCsabaToth Jul 20, 2025
f3e85ff
Revert "I fixed the build issue with the ObjectBox plugin."
MrCsabaToth Jul 21, 2025
d4a1e2f
With this commit the Gradle sync succeeds but the build fails with "E…
MrCsabaToth Jul 22, 2025
d47f7bc
Fixing Gradle sync (biggest pain point is the ObjectBox vector support)
MrCsabaToth Jul 24, 2025
0feb520
Fixing ObjectBox vector code for build
MrCsabaToth Jul 24, 2025
ac6d94c
ObjectBox entities meta data json
MrCsabaToth Jul 24, 2025
7c92ab2
Correcting startDiscovery calls without agentName
MrCsabaToth Jul 25, 2025
db48f4e
when (switch) statements should cover all possible enums
MrCsabaToth Jul 25, 2025
3ab8562
Undo an unrelated change by Google Jules
MrCsabaToth Jul 25, 2025
e760b76
Source compilation fixes, both manual and Gemini CLI
MrCsabaToth Jul 26, 2025
9d553e8
Towards compilation
MrCsabaToth Jul 26, 2025
07b99f2
The setCurModel needs to be called
MrCsabaToth Jul 27, 2025
63ba4c9
Fixes for NearbyChatView to compile
MrCsabaToth Jul 27, 2025
62d6a95
Remove unused root build.gradle.kts buildscript (was part of struggle…
MrCsabaToth Jul 27, 2025
092d111
Raise minor version because of the lot of changes
MrCsabaToth Jul 27, 2025
d855e54
package="com.google.ai.edge.gallery" found in source AndroidManifest.…
MrCsabaToth Jul 27, 2025
348e232
Trying to lower the min SDK level to 28 (Android 9) so it may support…
MrCsabaToth Jul 27, 2025
0fc989c
Address Task :app:kaptGenerateStubsDebugKotlin, w: Support for langua…
MrCsabaToth Jul 27, 2025
2996e5d
MediaPipe library 16K alignment https://github.com/google-ai-edge/gal…
MrCsabaToth Jul 27, 2025
b139772
AGP upgrade 8.8.2 -> 8.11.1 (dist 8.10.2 -> 8.13)
MrCsabaToth Jul 27, 2025
d6b5478
Upgrade package versions
MrCsabaToth Jul 27, 2025
5cdb57b
Trying to address: > Task :app:generateDebugProto, protoc plugin 'jav…
MrCsabaToth Jul 27, 2025
d51ee69
Treating 'var jvmTarget: String' is deprecated. Please migrate to the…
MrCsabaToth Jul 27, 2025
ef07d92
Starting rebranding
MrCsabaToth Jul 27, 2025
4e9d3ff
Role Selection screen should not be transparent
MrCsabaToth Jul 28, 2025
ca494d2
Add title to the select role screen
MrCsabaToth Jul 28, 2025
58ce813
Changing default agent name from Model to Agent
MrCsabaToth Jul 28, 2025
df3e2c5
Correcting repo URLs and adding models to the nearby chat
MrCsabaToth Jul 28, 2025
92efbc4
Remove verbose information elements
MrCsabaToth Jul 28, 2025
3fcbc92
Adding back preview to home screen
MrCsabaToth Jul 28, 2025
b11ff3b
Shorter model descriptions
MrCsabaToth Jul 28, 2025
6dc6b2a
Even shorter model descriptions
MrCsabaToth Jul 28, 2025
8050046
Model cards always expanded for less clicks, shorter model descriptions
MrCsabaToth Jul 28, 2025
4905e5f
Trying to fix crash after the role is selected
MrCsabaToth Jul 30, 2025
7371176
Adding equals and hashCode overrides advised by linter because of the…
MrCsabaToth Jul 30, 2025
af624b3
Changing field from var to val a advised by linter because the value …
MrCsabaToth Jul 30, 2025
835b5ed
Merging the role selection with the model selection of nearby chat an…
MrCsabaToth Aug 1, 2025
7beaf88
Human development towards group chat
MrCsabaToth Aug 2, 2025
decea78
Adding settings to bypass model allow list download and only read the…
MrCsabaToth Aug 3, 2025
2edd559
Correction to group chat view navigation by Gemini CLI (missing annot…
MrCsabaToth Aug 3, 2025
0e7c5f4
Passing extra parameters to the ChatViewWrapper for the group chat pu…
MrCsabaToth Aug 3, 2025
5243229
Commander system prompt v1
MrCsabaToth Aug 3, 2025
39d4173
Commander system prompt v2
MrCsabaToth Aug 3, 2025
12b8cf4
Agent system prompt template v1
MrCsabaToth Aug 3, 2025
7bd3688
Small version upgrades
MrCsabaToth Aug 3, 2025
bbc9709
Fix for starting group chat in agent mode
MrCsabaToth Aug 4, 2025
3b0ae31
Introducing a constant for the max number of agents
MrCsabaToth Aug 5, 2025
5019a9d
Introducing two input modes: group chat and local LLM chat
MrCsabaToth Aug 5, 2025
c526cd7
Adding pregenerated key pairs for demo and deserialize those instead …
MrCsabaToth Aug 5, 2025
6c0ac86
Correcting key pair asset loading file names
MrCsabaToth Aug 5, 2025
df8f2cd
Adding permissions and programmatic permission request for nearby con…
MrCsabaToth Aug 5, 2025
6d29fdf
Use ANDROID_ID for myEndpointId, and also memoize it
MrCsabaToth Aug 5, 2025
f61c426
Mission modifications and adding Agent 3 mission
MrCsabaToth Aug 5, 2025
e7376cc
Moving all the prompts to the assets
MrCsabaToth Aug 5, 2025
d61ae9f
Apply commander system prompt
MrCsabaToth Aug 6, 2025
1caff97
Apply agent system prompt with template substitutions
MrCsabaToth Aug 6, 2025
eac3363
Upgrade README to the same as the main branch
MrCsabaToth Aug 6, 2025
e22689a
Delete line end white spaces from issue templates
MrCsabaToth Aug 17, 2025
8e5b085
Prompt and mission handling fixes
MrCsabaToth Aug 17, 2025
73b3da7
More diligent permission check / request code
MrCsabaToth Aug 18, 2025
6b11b10
Stop nearby connections if the user navigates away from the Group Chat
MrCsabaToth Aug 18, 2025
63426b6
Fix a bug with endpointName vs endpointId
MrCsabaToth Aug 18, 2025
6fc7e37
Discovery / advertising logic changes, more debug prints
MrCsabaToth Aug 18, 2025
467a124
Another endpointId vs endpointName bug fix
MrCsabaToth Aug 18, 2025
a8327f8
Fix WindowOnBackDispatcher com.google.aiedge.gallery W OnBackInvokedC…
MrCsabaToth Aug 20, 2025
679e6cc
Avoid unnecessary Firebase Analytics warnings in LogCat if FB is not …
MrCsabaToth Aug 20, 2025
a5e6766
Modification to the Nearby Connection based code for the chat to work
MrCsabaToth Aug 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@ assignees: ''

---

**Describe the bug:**
**Describe the bug:**
A clear and concise description of what the bug is.

**To Reproduce:**
**To Reproduce:**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior:**
**Expected behavior:**
A clear and concise description of what you expected to happen.

**Screenshots:**
**Screenshots:**
If applicable, add screenshots to help explain your problem.

**Device & App Information (Please complete the following):**
- Device: [e.g., Samsung Galaxy S23, Google Pixel 7]
- Android Version: [e.g., Android 12, Android 13]
- App Version: [e.g., 1.0.1, v1.0.2]

**Additional context:**
**Additional context:**
Add any other context about the problem here.
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ assignees: ''

---

**Is your feature request related to a problem? Please describe.**
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
**Additional context**
Add any other context or screenshots about the feature request here.
55 changes: 55 additions & 0 deletions .idx/dev.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# To learn more about how to use Nix to configure your environment
# see: https://firebase.google.com/docs/studio/customize-workspace
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-24.05"; # or "unstable"

# Use https://search.nixos.org/packages to find packages
packages = [
# pkgs.go
# pkgs.python311
# pkgs.python311Packages.pip
# pkgs.nodejs_20
# pkgs.nodePackages.nodemon
];

# Sets environment variables in the workspace
env = {};
idx = {
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
extensions = [
# "vscodevim.vim"
];

# Enable previews
previews = {
enable = true;
previews = {
# web = {
# # Example: run "npm run dev" with PORT set to IDX's defined port for previews,
# # and show it in IDX's web preview panel
# command = ["npm" "run" "dev"];
# manager = "web";
# env = {
# # Environment variables to set for your server
# PORT = "$PORT";
# };
# };
};
};

# Workspace lifecycle hooks
workspace = {
# Runs when a workspace is first created
onCreate = {
# Example: install JS dependencies from NPM
# npm-install = "npm install";
};
# Runs when the workspace is (re)started
onStart = {
# Example: start a background task to watch and re-build backend code
# watch-backend = "npm run watch-backend";
};
};
};
}
31 changes: 22 additions & 9 deletions Android/src/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
alias(libs.plugins.android.application)
Expand All @@ -24,6 +25,7 @@ plugins {
alias(libs.plugins.protobuf)
alias(libs.plugins.hilt.application)
alias(libs.plugins.oss.licenses)
// alias(libs.plugins.objectbox)
kotlin("kapt")
}

Expand All @@ -33,17 +35,18 @@ android {

defaultConfig {
applicationId = "com.google.aiedge.gallery"
minSdk = 31
minSdk = 28
targetSdk = 35
versionCode = 1
versionName = "1.0.4"
versionName = "1.1.0"

// Needed for HuggingFace auth workflows.
// Use the scheme of the "Redirect URLs" in HuggingFace app.
manifestPlaceholders["appAuthRedirectScheme"] =
"REPLACE_WITH_YOUR_REDIRECT_SCHEME_IN_HUGGINGFACE_APP"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("boolean", "FIREBASE_ENABLED", "false")
}

buildTypes {
Expand All @@ -54,19 +57,23 @@ android {
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
freeCompilerArgs += "-Xcontext-receivers"
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
buildFeatures {
compose = true
buildConfig = true
}
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_21
freeCompilerArgs.add("-Xcontext-receivers")
}
jvmToolchain(21)
}

dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
Expand Down Expand Up @@ -103,7 +110,13 @@ dependencies {
implementation(libs.play.services.oss.licenses)
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.analytics)
implementation(libs.play.services.nearby)
implementation(libs.objectbox.android)
implementation(libs.objectbox.kotlin)
// implementation(libs.objectbox.java)
// implementation(libs.objectbox.vector)
kapt(libs.hilt.android.compiler)
kapt(libs.objectbox.processor)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
Expand All @@ -116,5 +129,5 @@ dependencies {

protobuf {
protoc { artifact = "com.google.protobuf:protoc:4.26.1" }
generateProtoTasks { all().forEach { it.plugins { create("java") { option("lite") } } } }
generateProtoTasks { all().forEach { it.builtins { create("java") { option("lite") } } } }
}
73 changes: 73 additions & 0 deletions Android/src/app/objectbox-models/default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
{
"_note1": "KEEP THIS FILE! Check it into a version control system (VCS) like git.",
"_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.",
"_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.",
"entities": [
{
"id": "1:8904987025762660639",
"lastPropertyId": "4:7476748590421088182",
"name": "Mission",
"properties": [
{
"id": "1:4466308653343913902",
"name": "id",
"type": 6,
"flags": 1
},
{
"id": "2:5213058753200353166",
"name": "agentName",
"type": 9
},
{
"id": "3:8115710319763687221",
"name": "description",
"type": 9
},
{
"id": "4:7476748590421088182",
"name": "embedding",
"indexId": "1:6591355027232620496",
"type": 28,
"flags": 8
}
],
"relations": []
},
{
"id": "2:5851076489166036791",
"lastPropertyId": "3:5886129787010143938",
"name": "SystemPrompt",
"properties": [
{
"id": "1:901480344699551907",
"name": "id",
"type": 6,
"flags": 1
},
{
"id": "2:4923962571859088191",
"name": "role",
"type": 9
},
{
"id": "3:5886129787010143938",
"name": "prompt",
"type": 9
}
],
"relations": []
}
],
"lastEntityId": "2:5851076489166036791",
"lastIndexId": "1:6591355027232620496",
"lastRelationId": "0:0",
"lastSequenceId": "0:0",
"modelVersion": 5,
"modelVersionParserMinimum": 5,
"retiredEntityUids": [],
"retiredIndexUids": [],
"retiredPropertyUids": [],
"retiredRelationUids": [],
"version": 1
}
31 changes: 29 additions & 2 deletions Android/src/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.ai.edge.gallery"
xmlns:tools="http://schemas.android.com/tools">

<uses-sdk
android:minSdkVersion="31"
android:minSdkVersion="28"
android:compileSdkVersion ="35"
android:targetSdkVersion="35" />

Expand All @@ -31,7 +30,34 @@
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- Required for Nearby Connections -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
android:usesPermissionFlags="neverForLocation" />

<!-- https://github.com/trancee/capacitor-nearby-connections/blob/main/example-app/android/app/src/main/AndroidManifest.xml -->
<!-- https://developer.android.com/develop/connectivity/bluetooth/bt-permissions#features -->
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="false" />

<uses-permission android:name="android.permission.NFC" />

<uses-feature
android:name="android.hardware.nfc"
android:required="false" />

<uses-feature
android:name="android.hardware.camera"
Expand All @@ -47,6 +73,7 @@
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/Theme.Gallery"
android:enableOnBackInvokedCallback="true"
tools:targetApi="31">
<!--
android:configChanges="uiMode" tells the system don't destroy and
Expand Down
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Agent1.key
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDQ0B64nLkCRgMxCNEFL1mwQWc9kAn2FNsVWQjKCe02n5f0kA6cdkwwEXch+ampVWAA3xoM8t7bUA+6yC49dzZbkT89l05Cq+9wOKeSX+QR6XENAC50s/5A9iDnLJBe5zwBz35yxnEGNBriuGZ1zzR0XlW1WfgxuWO8aneghuRPX+P2E3jMC4EWpAVDPVH0ZTTpwj9DYf0/fMkBR0EyhCYQH0GbZ9rJPxAIZGLAtcKm+1e1oBKEktwREQk2K10OV+df/J38U6lwzO/2m9gU5hqfYV3s7Os3NVZzU12ILD2kI+W9mXw/aOSgMsyqa2VVw/yRzA5acaysOjlQwex+1vCLAgMBAAECggEAAVO/mh2nbbt3qvfEJmKihU9V1Uu+JDj2eAwJxdK3Y4jdvdh/ZNn/zxW8HtCRobWwZgPttuWgc9sU+HNgYPNMCCG2ZICvHzY8gkVuhBFrMhtXlUBIPbqkpdlSYJuT2wVYwmzp5OcQu8XE6kdWsW6Y5vJwDr5FkVxtieUp8Ndx6OkbB5PXtxuuRtuuPaXbRz7zLzWP5kfxzJ2lW9Cemo0fdGtztGgB0M+ku8m4U3YNUCXVE0nBlLSRqSuF5lAkkktQdRY91tjyfWxd7pzmvjwN3pHvH4McqXh3y/CRgLiO2gifjaszpJ+6JG/mycaJFK3MnBdAHgK+ewylpNQ0ZR/21QKBgQD1TuYMnZTO81xS5Aw5d+bTXU767gYGtCXpd043VB2iKWx+C6fBiG9xCz1KHGRUMfCIT9KiYc13oTwrPrbV93PCVisMRMIAaadC2b8YL1ZSPfabxFVHwYur7+xa98oLerGJtqTisjOMed923v2nAq1flRa21d6g1L6oEXYR1rOFBQKBgQDZ6gPBzxZizWueOSz4HDcCU8ruA2C8xZ7VoIDB0XT97d6+P2MG76mGjKThN2detWlXGDlj7sEk+gp/2N3akJsanRbB2kkWmYA7hsAlvArYCqyWmftBUvqesBADmyhXcBqfdC3WDEcdqWKzjVwjgkWtIwLlVusdz4t0xrQ+yIKUTwKBgQDt47SeuVatFz4KOJNOS+OySAOmvptjduJpNUTJzS3rq6ZF2gG2YhxIkTC/pSb6q29qkZZf2N7Ly7Ww7mGawB0nci7O+AL3KX6GCuoRhx58JRD5X/2f16ced05LrY7ncPWo6lGeclghO7Mk8P0lMCh3z/o2FtOOPqIiFMTeacqwDQKBgQC1zPqdcrvmaiLiuii+RivOkUG4GLFYTDcbWvCQwsKsJwuyBQgE/WWdjzDvhF2FMixUMS2QJdyVkNW5m6BbfFEqfuxBhm97n0zQXLdpw9v4Kc+bRZPNCAF26sQxffzGFgzgAvlKnqumH27tBX5dUY33yEHePAmjsUdTgYNW7cmjGQKBgQCFBTBLYlxrZzX5aY3hZw8c8Sc1E0wD49b8zLa1wMv42y3se8ReCpX20u3VttQii+PwxdXyVGT7hghf3eTP5wkzhS+c4tJwcPlSz59Krj/mUeyx85STTMwVf8XY28ISwSwDUmnoldu8Y39j/LH4JjtY4y0BgM4L4oQtbi0pout4SQ==
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Agent1.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0NAeuJy5AkYDMQjRBS9ZsEFnPZAJ9hTbFVkIygntNp+X9JAOnHZMMBF3IfmpqVVgAN8aDPLe21APusguPXc2W5E/PZdOQqvvcDinkl/kEelxDQAudLP+QPYg5yyQXuc8Ac9+csZxBjQa4rhmdc80dF5VtVn4MbljvGp3oIbkT1/j9hN4zAuBFqQFQz1R9GU06cI/Q2H9P3zJAUdBMoQmEB9Bm2fayT8QCGRiwLXCpvtXtaAShJLcEREJNitdDlfnX/yd/FOpcMzv9pvYFOYan2Fd7OzrNzVWc1NdiCw9pCPlvZl8P2jkoDLMqmtlVcP8kcwOWnGsrDo5UMHsftbwiwIDAQAB
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Agent2.key
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCiHErg+GkCCCl/95xNO/0jDwW5ChcX4qMt2O1XjaxFgf+GkayxVI21MMwZiHmIvHkIwq8eZTCnRiJ10XeC1aznxhS0zbERar/asce8hVbQxSYV4W0jsNSBFiTZbaGC4jn0IL4qeFv5EU7AXjye8r2J9lABxOgPT++UdXn9L/02u8fD6pj/7Fq+TCLph1qyMrcHrscvnPc7rbrEe5fSwwJhKKRbHIM8uOC8y8iBdPLjLmcvljLNecLSChvZf4KT6hsGty8qHYQfMbqY9b+XV6flRa2ByJ/FWCDV41gRPsFPpJsU08Pym8wl+jlkObSIvRuOzRk+99kZzLwiNlNkxDPbAgMBAAECggEATNuMFrg/lOKIxm5/UNDZtab4KCAkDcN6aRC5ijKVlAjLvKHRVevIGbkOcyaUtGLjIWen/gmstQnX6bMLbeDfjq2HgKcqxZ6uYkG6eGNhYy6tXV9YzryWK7NzehBzrCmUn21sq5cPx/jQNP0Y0aU1frTkfso72ZKk/GZsFUGM1EcWSCGfMot9YZqPFEWIyzG4rTIonce6Am4djVmsqyl3StCjmTdzXTh3Tn7YfPf9D/vZaTOxb6Oros7eUuKPFpFItFoABsSunpW8MxHI7Qw1R79LrilFwKt2mVocRgslf1jyE0ay4DcfmFSi2kGwrT77Gv1axrhGeVg5pcurgbUDQQKBgQC6nrm5sq+tt3jaoCybD0z/caHSohAKc5YwFg8gCXD3xkFJG+HfZ3uUrLq9k9l4XgswFwaIkrWL7vNrj6ntk8gY/lHabZy/hJ+6Xr2DzLkM/H6I3SB8W/9byjk1Gj8wtrHSBX2RhlT9UAeX3wVY6w1g6MbhwT/xXUaS9YjKs9nfwQKBgQDeYOmcI75Z4JWO1K4hp5CMAZzn1RM4IGSgZDzBXu2pRDmqVb3stMAGrYWjTYn+u4Y6oD7NMpBIBTb8EsYMKTjbUxbnhXCL04L8qmchXbbrhUhJcosHymBcGy1RYNmtWx94d7tJ+7bsK9m26ffH3Yq/0Zv3vq7WJz0mhGrJbSg6mwKBgF88g2F+C+NmPzmrBjh3fX7a2Y9pfzAmPp35k+xwhQMdXNHXddSRteJwp7f5jMC9lY4MIhxualGoNvdMUJbalQIUP2duCtE9+Fme4a4yOrmi3VwxJNPyCwYn1DwCUf8lLOgWPzeVyyeewNFDUjJHegNbp6sr+NrPFCYJQa7YS7bBAoGBAMJyKTLfSj1alEudClnhJBJYArPwa2rDYFmi7EEFWXiNcILRkE2eyt3L8rOVRFmZ7UfsAJ36XZCsBqUpYUUW8mFM6RUuZ/fLzZhTA/R39k9AbrHSV2FLgzBmjxy+O/hKWl1DDGAnmo4t1aQMNx3rSLxrcx6Q/F3DV8QLOzi/mtKLAoGAA8uFiOsjAHJWFTUl2zwv0U/VbDRdxf4DlWto3hnz+5ocrnTUb47B6JczZ3mEFcuHgp8CxzAd3xwRihf4eaiJ6ifl1/b6fnc6WG6l9w5vHVHrwdJWWcDpFz9icaOCFg3Xs66RvfWJMzpbU2u5jfuQ2WSoILdmZxSbDRxjAQjslaE=
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Agent2.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAohxK4PhpAggpf/ecTTv9Iw8FuQoXF+KjLdjtV42sRYH/hpGssVSNtTDMGYh5iLx5CMKvHmUwp0YiddF3gtWs58YUtM2xEWq/2rHHvIVW0MUmFeFtI7DUgRYk2W2hguI59CC+Knhb+RFOwF48nvK9ifZQAcToD0/vlHV5/S/9NrvHw+qY/+xavkwi6YdasjK3B67HL5z3O626xHuX0sMCYSikWxyDPLjgvMvIgXTy4y5nL5YyzXnC0gob2X+Ck+obBrcvKh2EHzG6mPW/l1en5UWtgcifxVgg1eNYET7BT6SbFNPD8pvMJfo5ZDm0iL0bjs0ZPvfZGcy8IjZTZMQz2wIDAQAB
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Agent3.key
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCN0QQRO5vZ8qPkemCD+BYq/k2vRbsl4ljg62K8LDEwiX4rfMUtKqPcpkYz5e2lmmXm8/6zEeOsi42h6eObEIH/w77KnLXVZQlI3J0YSJifKlCprRudnx+TJylfyF0ovxF77hTq6fIqsU32CEYQfNl0qEGloqHnMkLOM4m8WhPJxLbJWXkSeylqqhUyu9vvM7HVTWdk+EbqyrCj3WKEorVJ2ptuzh5235hj/Uc2GmXV8gjHe3mTcFx2YhyqUxYiYjouBxbQ4C2+MPi8wMwv8Kt0lM6R1BcnTQkfCGkLkAC51A+t7t01ypjnFv4idQ0kGuqauXSvuZOngARjjDYJOz0HAgMBAAECggEAAtGJIaiMH+hFHpjaCzVmh2M3ewjJP+cAOjQjabb9IUhSRB3+MzgaOpvpYEWtE/H+HXly8e8klbzOS04BModA9irXQ2Ka8ItKBHMyAhYLRnqKUNz6ZAcSExQfq+IpC9LET7C7JLISmIuej4m5jsFUdw+TAm45hoVGs59tmNs3cnaZUWvPwRSlt7Rz59cC1PC8mNdY5+6u3Xh4FVl9CxTzHV5uglQvRPw/uBDGBRA2UrRjaMifW5pEhdFTjNqMul4qdk2eLZJ7bej0bQO2B2my3Jlq4IsYSQ6kE490qm4HleV5XgQAV9cJ4EXeK9A/6+V80cQgpYFXN0dgC0tPH40v5QKBgQDFDrG9hei8OKq7lzAkBhPWL+WGcBGl63IAdiDzTPjvKgnBrtjivGxtGjkJyi2UpapVXjZvYkOJ+BzR0PURAahW2eGV+WTAxRgCMm3r2WJODrIZQaH+515rTz9miu/9FfIlBlj5RP62mJ5bUKxDxe422431k3BgENehDw/zoN8vRQKBgQC4PFl5I1dnhkgl9P17+VNxmD+J1QsHkFS/JtfGeDrJG63juPFIeGg4fj7eB++weuz5DXoURRmJQ29hBfafCfKf63hy8qwR/m1QK8I16L2toMtS8zxAHlZdssnZi5faxfip/kmonXwLUr9OEqjmbYXkJS/vm0GweCzk6xFa56jp2wKBgQCQzIxkxGpRLJ6ge6b/QYv//m/9SopdTlYV6repsGzXaR+EN9PdQDG4NeWlwO+fY+B3HGSJkj4ouq2Kq634kiw9rZqrFngngmxy6NWG0dT/oKLUFjtQUHk8Bx6CXiOc6CxncnOcr0svp5Pta6k5n868draotm+D17xq9+Nz1UlKtQKBgQCOp9w4Go+BT87p5SuqJULhgJwiY95oeu/EG5WUzl/mfRJGdFwQW3uH0ulnDwofwu9fYXoX2/GMAbVqkS2HtDI0diYMC7AFNtb57wgwqgjFOu51SnZqx5Lkdp4pXxe0hPqo1oe+kkMMmYQcNgKmekPkho75n2Rb+pH4p7QGib6XZQKBgAJeXfBYUngexEdATlC8xt3kYs/v9/dMWxNYx5Ut7cru0+7Eq8JMCsnZcMz8O7iGOdkQwDVfVIoMTfIkr4IHrXnu0pTbbU5fILW5C+A9C1YFEYPA9vANicVcwPbgSr65Ng3KbrrSYNS6y4xK9iE0Bjs7IgBXHi6go9xYnwXrROxw
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Agent3.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjdEEETub2fKj5Hpgg/gWKv5Nr0W7JeJY4OtivCwxMIl+K3zFLSqj3KZGM+XtpZpl5vP+sxHjrIuNoenjmxCB/8O+ypy11WUJSNydGEiYnypQqa0bnZ8fkycpX8hdKL8Re+4U6unyKrFN9ghGEHzZdKhBpaKh5zJCzjOJvFoTycS2yVl5EnspaqoVMrvb7zOx1U1nZPhG6sqwo91ihKK1Sdqbbs4edt+YY/1HNhpl1fIIx3t5k3BcdmIcqlMWImI6LgcW0OAtvjD4vMDML/CrdJTOkdQXJ00JHwhpC5AAudQPre7dNcqY5xb+InUNJBrqmrl0r7mTp4AEY4w2CTs9BwIDAQAB
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Commander.key
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCv4z1r7j6tWLAzCs7DGKZLBignQ6kSNJ0yEhQUpb9VISR0xsPMnMh5OBAitxENKImvV8X4gwJe+8X0pX5UtiUJ7Q8t7ye+iHW24T8O11PjejtfRtMj4dB5KMGwBXo0EFGjFUKRiWL6IYU79DeYwODV1nTWRCOvbTbQQsqqW56PvGN6+r8yeelDsUwvnLEtWIQimluwi6s9G682zThZLIub7bB7NnO/T0SxSgNgwcqrRZdcJT4y62obQ6XZbxmLcccN9YLf7Su6xy4/M3SgD35FwBrd2E6ZpDjIAp4iA57Sc85p1+fm/rjRZnwPHlAEi4nr1Vw+9qT4os2/K74KhOGLAgMBAAECggEADwd72B0jfex2IeZqhIE2tHJyO+isKcIVLJIe5STElKGgW9ogIPvEpZcEyfKaomU0XqdBY1rOeQ9Kev0pLlPiFlcLVQF6g+1lIZtdqAb+RBHNwPZsVESXa8Lvyfqt1oUOdMD8TzNOIdF7cQQNPCA/FgadNTHdWsAaTvFmH+h0RBPQUsSRdKsSRkU+wgo/gd1piI6hP2usvJJUFhBkbyMt3zhxIKfM9ouw4XRoOzkBKLHaZ2VP/EMb5AKjWsp85rpTFv6EJIjBCsQCNYfkDQze+zlc5aQsQ01bjtNZXMfwnrrUs8AhWDfRNw98KyVc+BEG/Dsq5XG0BbR/c5XMMbelAQKBgQDzGwKDCPdhUUnLBWZPz6tikjoA9kmDS8l7/S2yLsraxQGAJREBOJszANbfdvWpVaU7qGyyg3QPj9OERsWQMsYM8padI9tHicpR00d8uR1AginLrB8s3KSK/dqCPSrAkxL1ttkNXB8aKlrbZQFAe/4JE9iFkEfrBx1JtIo1hlyNnwKBgQC5N4R56U2NAWupyrcKgOz5yz+5K8VB5ak1xGPMZ3k7s4aBG/SM7ubt+tBSApwFdmcqRgUCGthC0EJyJccsZjzVHAdZKTHRvqdsE7BI3WVByFNgy0Y14GYhh6WKVW13iuxkd4dl3RsqaBxNhu9XVLaBs1Fbxj5ikJVfGcBDax0MlQKBgAslmObjOVyX+pc5hyhvsD8Tz18N6+7+QZ3SzQ6XgKupTtlOWcpBizQ6fJ/Ad6EtESd8IIfK6T5xbNRq3lIvUc90LB3GcB6GneVEl8mLP2Ee1sXE/aTz9QN+gk9oeJZd6AemO6uWJsLvYD0hE36ecNZ/t3TgWbvYFqqzgYbUw1enAoGADFJtNc8XobHef8VEuCYrndKvwpnu3ZtxzmnqWcbogdhHsn8xnc6m/l4ZTdtulc5yvpU58BHpIUjJot5wibujgGoE8yGSdunAKaiFqdNQ0TeKlH3xhdQP91sW4EUeqz1KzMRG9bfn/sI+X8oCUkUIf0h2uSxPKi+EQHduGw4dOKECgYAnxPtgblTvq7W0yZmATPBG4+6OLv87hYOizPy8pYLfy7y95n6abS3xKQPNOinYJ0tQi4SfvJEJ2XibRZy/9uJKCkEH3kQfi4b4ahcKACPbb3XNoMDmiUy0W7siWQVZ1sOF9OxvAQCrbfadsyLotPgZrVS1KbS1Ao1awfEO8Pplqw==
1 change: 1 addition & 0 deletions Android/src/app/src/main/assets/Commander.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+M9a+4+rViwMwrOwximSwYoJ0OpEjSdMhIUFKW/VSEkdMbDzJzIeTgQIrcRDSiJr1fF+IMCXvvF9KV+VLYlCe0PLe8nvoh1tuE/DtdT43o7X0bTI+HQeSjBsAV6NBBRoxVCkYli+iGFO/Q3mMDg1dZ01kQjr2020ELKqluej7xjevq/MnnpQ7FML5yxLViEIppbsIurPRuvNs04WSyLm+2wezZzv09EsUoDYMHKq0WXXCU+MutqG0Ol2W8Zi3HHDfWC3+0ruscuPzN0oA9+RcAa3dhOmaQ4yAKeIgOe0nPOadfn5v640WZ8Dx5QBIuJ69VcPvak+KLNvyu+CoThiwIDAQAB
Loading