[tor-commits] [tor-browser-build/master] Bug 34101: Add application-services

sysrqb at torproject.org sysrqb at torproject.org
Tue Sep 1 19:48:42 UTC 2020


commit 2d6b83020e118fab3e7388d234690b7ee4807378
Author: Georg Koppen <gk at torproject.org>
Date:   Mon Aug 24 07:29:23 2020 +0000

    Bug 34101: Add application-services
---
 projects/application-services/1651660.patch        | 811 +++++++++++++++++++++
 projects/application-services/build                | 103 +++
 projects/application-services/config               |  86 +++
 .../gradle-dependencies-list.txt                   | 419 +++++++++++
 projects/application-services/mavenLocal.patch     |  53 ++
 projects/application-services/no-git.patch         |  23 +
 projects/application-services/target.patch         |  21 +
 projects/fenix-rust/config                         |   2 +-
 8 files changed, 1517 insertions(+), 1 deletion(-)

diff --git a/projects/application-services/1651660.patch b/projects/application-services/1651660.patch
new file mode 100644
index 0000000..8cf15b1
--- /dev/null
+++ b/projects/application-services/1651660.patch
@@ -0,0 +1,811 @@
+From 1641b74b17dad85a3ee65802a0a6320d2184c6c3 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk at torproject.org>
+Date: Fri, 21 Aug 2020 19:26:37 +0000
+Subject: [PATCH] 1651660
+
+
+diff --git a/build.gradle b/build.gradle
+index 6b16a91d..58a4ddae 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -4,16 +4,16 @@ buildscript {
+     ext.kotlin_version = '1.3.71'
+     ext.jna_version = '5.2.0'
+     ext.android_gradle_plugin_version = '3.6.0'
+-
+-    // N.B. try to keep these two in sync
+-    ext.android_components_version = '24.0.0'
+-    ext.glean_version = '21.3.0'
++    ext.android_components_version = '47.0.0'
+ 
+     ext.build = [
+         ndkVersion: "21.3.6528147", // Keep it in sync in TC Dockerfile.
+         compileSdkVersion: 29,
+         targetSdkVersion: 28,
+         minSdkVersion: 21, // So that we can publish for aarch64.
++        // This is required to support new AndroidX support libraries.
++        // See mozilla-mobile/android-components#842
++        jvmTargetCompatibility: "1.8",
+     ]
+ 
+     repositories {
+@@ -44,6 +44,11 @@ buildscript {
+ 
+         classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'
+ 
++        // Since the Glean version depends on the Android components version,
++        // it is very important to use a modern version of Glean and, ideally,
++        // let this come from the embedding product itself.
++        classpath "org.mozilla.components:tooling-glean-gradle:$android_components_version"
++
+         // NOTE: Do not place your application dependencies here; they belong
+         // in the individual module build.gradle files
+     }
+diff --git a/components/fxa-client/android/build.gradle b/components/fxa-client/android/build.gradle
+index 9981facd..e0cac485 100644
+--- a/components/fxa-client/android/build.gradle
++++ b/components/fxa-client/android/build.gradle
+@@ -36,6 +36,19 @@ android {
+             }
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/components/logins/android/build.gradle b/components/logins/android/build.gradle
+index be777e5b..166b81fe 100644
+--- a/components/logins/android/build.gradle
++++ b/components/logins/android/build.gradle
+@@ -46,6 +46,19 @@ android {
+             includeAndroidResources = true
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+@@ -80,6 +93,12 @@ protobuf {
+     }
+ }
+ 
++// Needs to happen before `dependencies` in order for the variables
++// exposed by the plugin to be available for this project.
++ext.gleanGenerateMarkdownDocs = true
++ext.gleanDocsDirectory = "$rootDir/docs/metrics/logins"
++apply plugin: "org.mozilla.telemetry.glean-gradle-plugin"
++
+ dependencies {
+     // Part of the public API.
+     api project(':sync15')
+@@ -108,7 +127,7 @@ dependencies {
+     testImplementation 'org.mockito:mockito-core:2.21.0'
+     testImplementation 'androidx.test:core-ktx:1.2.0'
+     testImplementation 'androidx.work:work-testing:2.2.0'
+-    testImplementation "org.mozilla.telemetry:glean-forUnitTests:$glean_version"
++    testImplementation "org.mozilla.telemetry:glean-forUnitTests:$project.ext.glean_version"
+ 
+     androidTestImplementation 'com.android.support.test:runner:1.0.2'
+     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+@@ -132,8 +151,3 @@ afterEvaluate {
+ 
+ apply from: "$rootDir/publish.gradle"
+ ext.configurePublish()
+-
+-ext.gleanGenerateMarkdownDocs = true
+-ext.gleanDocsDirectory = "$rootDir/docs/metrics/logins"
+-apply from: "https://github.com/mozilla-mobile/android-components/raw/v${android_components_version}/components/service/glean/scripts/sdk_generator.gradle"
+-
+diff --git a/components/logins/android/metrics.yaml b/components/logins/android/metrics.yaml
+index e7ddec62..c81d6e43 100644
+--- a/components/logins/android/metrics.yaml
++++ b/components/logins/android/metrics.yaml
+@@ -2,31 +2,36 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+-# This file defines the metrics that will be gathered for the "logins" storage component.
+-# These are emitted for all users of the component.  Additional metrics specific to the
+-# *syncing* of logins are defined in a separate "sync_ping" package.
++# This file defines the metrics that will be gathered for the "logins"
++# storage component.
++# These are emitted for all users of the component.  Additional metrics
++# specific to the *syncing* of logins are defined in a separate "sync_ping"
++# package.
+ #
+-# Changes to these metrics require data review, which should take into consideration
+-# the following known consumers of the logins component Android bindings:
++# Changes to these metrics require data review, which should take into
++# consideration the following known consumers of the logins component
++# Android bindings:
+ #
+ #  * Firefox Preview
+ #  * Firefox Lockwise for Android
+ 
++---
+ $schema: moz://mozilla.org/schemas/glean/metrics/1-0-0
+ 
+ logins_store:
+ 
+-  # These help us understand how much the logins store is being used, and whether it's succeeding
+-  # in the duties asked of it.  We'll use them to graph e.g. the error rate of applications trying
+-  # to use the logins store, and identify application or platform features that lead to unusually
++  # These help us understand how much the logins store is being used, and
++  # whether it's succeeding in the duties asked of it.  We'll use them to
++  # graph e.g. the error rate of applications trying to use the logins store,
++  # and identify application or platform features that lead to unusually
+   # high error rates.
+ 
+   unlock_count:
+     type: counter
+     description: >
+       The number of times the login store was unlocked.
+-      It is intended to be used together with `unlock_error_count` to measure the overall 
+-      error rate of unlocking the logins store.
++      It is intended to be used together with `unlock_error_count` to measure
++      the overall error rate of unlocking the logins store.
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2225
+     data_reviews:
+@@ -39,9 +44,10 @@ logins_store:
+   unlock_error_count:
+     type: labeled_counter
+     description: >
+-      The number of errors encountered when unlocking the logins store, labeled by type.
+-      It is intended to be used together with `unlock_count` to measure the overall error
+-      rate of unlocking the logins store.
++      The number of errors encountered when unlocking the logins store, labeled
++      by type.
++      It is intended to be used together with `unlock_count` to measure the
++      overall error rate of unlocking the logins store.
+     labels:
+       - invalid_key
+       - mismatched_lock
+@@ -59,9 +65,10 @@ logins_store:
+     type: counter
+     description: >
+       The total number of read operations performed on the logins store.
+-      The count only includes operations triggered by the application, not e.g. incidental reads performed
+-      as part of a sync. It is intended to be used together with `read_query_error_count` to measure the 
+-      overall error rate of read operations on the logins store.
++      The count only includes operations triggered by the application, not
++      e.g. incidental reads performed as part of a sync. It is intended to be
++      used together with `read_query_error_count` to measure the overall error
++      rate of read operations on the logins store.
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2225
+     data_reviews:
+@@ -74,9 +81,10 @@ logins_store:
+   read_query_error_count:
+     type: labeled_counter
+     description: >
+-      The total number of errors encountered during read operations on the logins store, labeled by type.
+-      It is intended to be used together with `read_query_count` to measure the overall error rate
+-      of read operations on the logins store.
++      The total number of errors encountered during read operations on the
++      logins store, labeled by type.
++      It is intended to be used together with `read_query_count` to measure
++      the overall error rate of read operations on the logins store.
+     labels:
+       - interrupted
+       - storage_error
+@@ -93,9 +101,10 @@ logins_store:
+     type: counter
+     description: >
+       The total number of write operations performed on the logins store.
+-      The count only includes operations triggered by the application, not e.g. incidental writes performed
+-      as part of a sync. It is intended to be used together with `write_query_error_count` to measure the 
+-      overall error rate of write operations on the logins store.
++      The count only includes operations triggered by the application, not
++      e.g. incidental writes performed as part of a sync. It is intended to
++      be used together with `write_query_error_count` to measure the overall
++      error rate of write operations on the logins store.
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2225
+     data_reviews:
+@@ -108,9 +117,10 @@ logins_store:
+   write_query_error_count:
+     type: labeled_counter
+     description: >
+-      The total number of errors encountered during write operations on the logins store, labeled by type.
+-      It is intended to be used together with `write_query_count` to measure the overall error rate
+-      of write operations on the logins store.
++      The total number of errors encountered during write operations on the
++      logins store, labeled by type.
++      It is intended to be used together with `write_query_count` to measure
++      the overall error rate of write operations on the logins store.
+     labels:
+       - no_such_record
+       - id_collision
+@@ -127,14 +137,16 @@ logins_store:
+     expires: "2021-03-01"
+ 
+   # These help us understand the performance of the logins store in the wild.
+-  # We'll use them to identify any application or platform features that are leading to unacceptably
+-  # slow performance of the store, and eventually for comparison with other logins store implementations
+-  # (such as the one in Desktop).
++  # We'll use them to identify any application or platform features that are
++  # leading to unacceptably slow performance of the store, and eventually for
++  # comparison with other logins store implementations (such as the one in
++  # Desktop).
+ 
+   unlock_time:
+     type: timing_distribution
+     description: >
+-      The time taken to open the logins store on startup, or after locking it due to user inactivity.
++      The time taken to open the logins store on startup, or after locking it
++      due to user inactivity.
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2225
+     data_reviews:
+@@ -147,8 +159,8 @@ logins_store:
+   read_query_time:
+     type: timing_distribution
+     description: >
+-      The time taken to execute a read query on the logins store (such as listing all logins, or finding a
+-      specific login by id).
++      The time taken to execute a read query on the logins store (such as
++      listing all logins, or finding a specific login by id).
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2225
+     data_reviews:
+@@ -161,8 +173,8 @@ logins_store:
+   write_query_time:
+     type: timing_distribution
+     description: >
+-      The time taken to execute a write query on the logins store (such as adding, updating, or deleting
+-      a login record).
++      The time taken to execute a write query on the logins store (such as
++      adding, updating, or deleting a login record).
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2225
+     data_reviews:
+diff --git a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
+index ae2ba8b1..8eb2ee7a 100644
+--- a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
++++ b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
+@@ -23,7 +23,6 @@ import org.mozilla.appservices.logins.GleanMetrics.LoginsStore as LoginsStoreMet
+  * on version updates.
+  */
+ import mozilla.components.service.glean.private.CounterMetricType
+-import mozilla.components.service.glean.private.TimingDistributionMetricType
+ import mozilla.components.service.glean.private.LabeledMetricType
+ 
+ /**
+@@ -419,22 +418,6 @@ internal fun Pointer.getRustString(): String {
+     return this.getString(0, "utf8")
+ }
+ 
+-/**
+- * A helper extension method for conveniently measuring execution time of a closure.
+- *
+- * N.B. since we're measuring calls to Rust code here, the provided callback may be doing
+- * unsafe things. It's very imporant that we always call the function exactly once here
+- * and don't try to do anything tricky like stashing it for later or calling it multiple times.
+- */
+-inline fun <U> TimingDistributionMetricType.measure(funcToMeasure: () -> U): U {
+-    val timerId = this.start()
+-    try {
+-        return funcToMeasure()
+-    } finally {
+-        this.stopAndAccumulate(timerId)
+-    }
+-}
+-
+ /**
+  * A helper class for gathering basic count metrics on different kinds of LoginsStore operation.
+  *
+diff --git a/components/places/android/build.gradle b/components/places/android/build.gradle
+index 4debb737..5655326c 100644
+--- a/components/places/android/build.gradle
++++ b/components/places/android/build.gradle
+@@ -44,6 +44,19 @@ android {
+             includeAndroidResources = true
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+@@ -77,6 +90,11 @@ protobuf {
+     }
+ }
+ 
++// Generate markdown docs for the collected metrics.
++ext.gleanGenerateMarkdownDocs = true
++ext.gleanDocsDirectory = "$rootDir/docs/metrics/places"
++apply plugin: "org.mozilla.telemetry.glean-gradle-plugin"
++
+ dependencies {
+     // Part of the public API.
+     api project(':sync15')
+@@ -105,7 +123,7 @@ dependencies {
+     testImplementation 'org.mockito:mockito-core:2.21.0'
+     testImplementation 'androidx.test:core-ktx:1.2.0'
+     testImplementation 'androidx.work:work-testing:2.2.0'
+-    testImplementation "org.mozilla.telemetry:glean-forUnitTests:$glean_version"
++    testImplementation "org.mozilla.telemetry:glean-forUnitTests:$project.ext.glean_version"
+ 
+     androidTestImplementation 'com.android.support.test:runner:1.0.2'
+     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+@@ -130,8 +148,3 @@ afterEvaluate {
+ apply from: "$rootDir/publish.gradle"
+ 
+ ext.configurePublish()
+-
+-// Generate markdown docs for the collected metrics.
+-ext.gleanGenerateMarkdownDocs = true
+-ext.gleanDocsDirectory = "$rootDir/docs/metrics/places"
+-apply from: "https://github.com/mozilla-mobile/android-components/raw/v${android_components_version}/components/service/glean/scripts/sdk_generator.gradle"
+diff --git a/components/places/android/metrics.yaml b/components/places/android/metrics.yaml
+index 2c4b7891..dcfd1318 100644
+--- a/components/places/android/metrics.yaml
++++ b/components/places/android/metrics.yaml
+@@ -2,15 +2,19 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+-# This file defines the metrics that will be gathered for the "places" storage component.
+-# These are emitted for all users of the component.  Additional metrics specific to the
+-# *syncing* of places are defined in a separate "sync_ping" package.
++# This file defines the metrics that will be gathered for the "places"
++# storage component.
++# These are emitted for all users of the component.  Additional metrics
++# specific to the *syncing* of places are defined in a separate "sync_ping"
++# package.
+ #
+-# Changes to these metrics require data review, which should take into consideration
++# Changes to these metrics require data review, which should take into
++# consideration
+ # the following known consumers of the places component Android bindings:
+ #
+ #  * Fenix for Andriod
+ 
++---
+ $schema: moz://mozilla.org/schemas/glean/metrics/1-0-0
+ 
+ places_manager:
+@@ -19,9 +23,10 @@ places_manager:
+     type: counter
+     description: >
+       The total number of read operations performed on the places store.
+-      The count only includes operations triggered by the application, not e.g. incidental reads performed
+-      as part of a sync. It is intended to be used together with `read_query_error_count` to measure the
+-      overall error rate of read operations on the places store.
++      The count only includes operations triggered by the application, not
++      e.g. incidental reads performed as part of a sync. It is intended to
++      be used together with `read_query_error_count` to measure the overall
++      error rate of read operations on the places store.
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2300
+       - https://github.com/mozilla/application-services/issues/2299
+@@ -35,9 +40,10 @@ places_manager:
+   read_query_error_count:
+     type: labeled_counter
+     description: >
+-      The total number of errors encountered during read operations on the places store, labeled by type.
+-      It is intended to be used together with `read_query_count` to measure the overall error rate
+-      of read operations on the places store.
++      The total number of errors encountered during read operations on the
++      places store, labeled by type.
++      It is intended to be used together with `read_query_count` to measure
++      the overall error rate of read operations on the places store.
+     labels:
+       - url_parse_failed
+       - operation_interrupted
+@@ -55,9 +61,10 @@ places_manager:
+     type: counter
+     description: >
+       The total number of write operations performed on the places store.
+-      The count only includes operations triggered by the application, not e.g. incidental writes performed
+-      as part of a sync. It is intended to be used together with `write_query_error_count` to measure the
+-      overall error rate of write operations on the places store.
++      The count only includes operations triggered by the application, not
++      e.g. incidental writes performed as part of a sync. It is intended to
++      be used together with `write_query_error_count` to measure the overall
++      error rate of write operations on the places store.
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2300
+       - https://github.com/mozilla/application-services/issues/2299
+@@ -71,9 +78,10 @@ places_manager:
+   write_query_error_count:
+     type: labeled_counter
+     description: >
+-      The total number of errors encountered during write operations on the places store, labeled by type.
+-      It is intended to be used together with `write_query_count` to measure the overall error rate
+-      of write operations on the places store.
++      The total number of errors encountered during write operations on the
++      places store, labeled by type.
++      It is intended to be used together with `write_query_count` to measure
++      the overall error rate of write operations on the places store.
+     labels:
+       - url_parse_failed
+       - invalid_bookmark_update
+@@ -108,8 +116,9 @@ places_manager:
+   scan_query_time:
+     type: timing_distribution
+     description: >
+-      The time taken to execute a scan query on the places store. This metric is for queries that we
+-      expect to be costly e.g. getBookmarksTree(guid, recursive=True).
++      The time taken to execute a scan query on the places store. This metric
++      is for queries that we expect to be costly
++      e.g. getBookmarksTree(guid, recursive=True).
+     bugs:
+       - https://github.com/mozilla/application-services/issues/2300
+       - https://github.com/mozilla/application-services/issues/2299
+diff --git a/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt b/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
+index 518bf77a..df2110c4 100644
+--- a/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
++++ b/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
+@@ -27,7 +27,6 @@ import org.mozilla.appservices.places.GleanMetrics.PlacesManager as PlacesManage
+  * on version updates.
+  */
+ import mozilla.components.service.glean.private.CounterMetricType
+-import mozilla.components.service.glean.private.TimingDistributionMetricType
+ import mozilla.components.service.glean.private.LabeledMetricType
+ 
+ /**
+@@ -1273,22 +1272,6 @@ data class VisitInfosWithBound(
+     }
+ }
+ 
+-/**
+- * A helper extension method for conveniently measuring execution time of a closure.
+- *
+- * N.B. since we're measuring calls to Rust code here, the provided callback may be doing
+- * unsafe things. It's very imporant that we always call the function exactly once here
+- * and don't try to do anything tricky like stashing it for later or calling it multiple times.
+- */
+-inline fun <U> TimingDistributionMetricType.measure(funcToMeasure: () -> U): U {
+-    val timerId = this.start()
+-    try {
+-        return funcToMeasure()
+-    } finally {
+-        this.stopAndAccumulate(timerId)
+-    }
+-}
+-
+ /**
+  * A helper class for gathering basic count metrics on different kinds of PlacesManager operations.
+  *
+diff --git a/components/push/android/build.gradle b/components/push/android/build.gradle
+index c68815f1..9dcc0678 100644
+--- a/components/push/android/build.gradle
++++ b/components/push/android/build.gradle
+@@ -36,6 +36,19 @@ android {
+             }
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/components/rc_log/android/build.gradle b/components/rc_log/android/build.gradle
+index 07f6b238..ad813fca 100644
+--- a/components/rc_log/android/build.gradle
++++ b/components/rc_log/android/build.gradle
+@@ -29,6 +29,19 @@ android {
+         // has their own build dir)
+         test.resources.srcDirs += "${project(':full-megazord').buildDir}/rustJniLibs/desktop"
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/components/support/android/build.gradle b/components/support/android/build.gradle
+index 6555c057..0454acb2 100644
+--- a/components/support/android/build.gradle
++++ b/components/support/android/build.gradle
+@@ -25,6 +25,18 @@ android {
+         }
+     }
+ 
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ dependencies {
+diff --git a/components/sync15/android/build.gradle b/components/sync15/android/build.gradle
+index cd9f7c63..48520a94 100644
+--- a/components/sync15/android/build.gradle
++++ b/components/sync15/android/build.gradle
+@@ -25,6 +25,18 @@ android {
+         }
+     }
+ 
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ dependencies {
+diff --git a/components/sync_manager/android/build.gradle b/components/sync_manager/android/build.gradle
+index 7593e09c..2f1bc7fb 100644
+--- a/components/sync_manager/android/build.gradle
++++ b/components/sync_manager/android/build.gradle
+@@ -33,6 +33,19 @@ android {
+             }
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/components/tabs/android/build.gradle b/components/tabs/android/build.gradle
+index 7593e09c..2f1bc7fb 100644
+--- a/components/tabs/android/build.gradle
++++ b/components/tabs/android/build.gradle
+@@ -33,6 +33,19 @@ android {
+             }
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/components/viaduct/android/build.gradle b/components/viaduct/android/build.gradle
+index 842da737..bbffa362 100644
+--- a/components/viaduct/android/build.gradle
++++ b/components/viaduct/android/build.gradle
+@@ -37,6 +37,19 @@ android {
+             }
+         }
+     }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/docs/metrics/logins/metrics.md b/docs/metrics/logins/metrics.md
+index 1a8cce22..bd16ea75 100644
+--- a/docs/metrics/logins/metrics.md
++++ b/docs/metrics/logins/metrics.md
+@@ -4,7 +4,6 @@
+ This document enumerates the metrics collected by this project.
+ This project may depend on other projects which also collect metrics.
+ This means you might have to go searching through the dependency tree to get a full picture of everything collected by this project.
+-Sorry about that.
+ 
+ # Pings
+ 
+@@ -12,21 +11,24 @@ Sorry about that.
+ 
+ 
+ ## metrics
++
+ This is a built-in ping that is assembled out of the box by the Glean SDK.
++
+ See the Glean SDK documentation for the [`metrics` ping](https://mozilla.github.io/glean/book/user/pings/metrics.html).
++
+ The following metrics are added to the ping:
+ 
+ | Name | Type | Description | Data reviews | Extras | Expiration |
+ | --- | --- | --- | --- | --- | --- |
+-| logins_store.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the  overall error rate of read operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
+-| logins_store.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)|<ul><li>interrupted</li><li>storage_error</li></ul>|2020-07-01 |
+-| logins_store.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the logins store (such as listing all logins, or finding a specific login by id).  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
+-| logins_store.unlock_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The number of times the login store was unlocked. It is intended to be used together with `unlock_error_count` to measure the overall  error rate of unlocking the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
+-| logins_store.unlock_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The number of errors encountered when unlocking the logins store, labeled by type. It is intended to be used together with `unlock_count` to measure the overall error rate of unlocking the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)|<ul><li>invalid_key</li><li>mismatched_lock</li><li>storage_error</li></ul>|2020-07-01 |
+-| logins_store.unlock_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to open the logins store on startup, or after locking it due to user inactivity.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
+-| logins_store.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the  overall error rate of write operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
+-| logins_store.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)|<ul><li>no_such_record</li><li>id_collision</li><li>interrupted</li><li>invalid_record</li><li>storage_error</li></ul>|2020-07-01 |
+-| logins_store.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the logins store (such as adding, updating, or deleting a login record).  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
++| logins_store.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| logins_store.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>interrupted</li><li>storage_error</li></ul>|2021-03-01 |
++| logins_store.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the logins store (such as listing all logins, or finding a specific login by id).  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| logins_store.unlock_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The number of times the login store was unlocked. It is intended to be used together with `unlock_error_count` to measure the overall error rate of unlocking the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| logins_store.unlock_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The number of errors encountered when unlocking the logins store, labeled by type. It is intended to be used together with `unlock_count` to measure the overall error rate of unlocking the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>invalid_key</li><li>mismatched_lock</li><li>storage_error</li></ul>|2021-03-01 |
++| logins_store.unlock_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to open the logins store on startup, or after locking it due to user inactivity.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| logins_store.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| logins_store.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>no_such_record</li><li>id_collision</li><li>interrupted</li><li>invalid_record</li><li>storage_error</li></ul>|2021-03-01 |
++| logins_store.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the logins store (such as adding, updating, or deleting a login record).  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
+ 
+ 
+ <!-- AUTOGENERATED BY glean_parser.  DO NOT EDIT. -->
+diff --git a/docs/metrics/places/metrics.md b/docs/metrics/places/metrics.md
+index efdc5723..8f7cb68c 100644
+--- a/docs/metrics/places/metrics.md
++++ b/docs/metrics/places/metrics.md
+@@ -4,7 +4,6 @@
+ This document enumerates the metrics collected by this project.
+ This project may depend on other projects which also collect metrics.
+ This means you might have to go searching through the dependency tree to get a full picture of everything collected by this project.
+-Sorry about that.
+ 
+ # Pings
+ 
+@@ -12,19 +11,22 @@ Sorry about that.
+ 
+ 
+ ## metrics
++
+ This is a built-in ping that is assembled out of the box by the Glean SDK.
++
+ See the Glean SDK documentation for the [`metrics` ping](https://mozilla.github.io/glean/book/user/pings/metrics.html).
++
+ The following metrics are added to the ping:
+ 
+ | Name | Type | Description | Data reviews | Extras | Expiration |
+ | --- | --- | --- | --- | --- | --- |
+-| places_manager.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
+-| places_manager.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)|<ul><li>url_parse_failed</li><li>operation_interrupted</li></ul>|2020-07-01 |
+-| places_manager.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
+-| places_manager.scan_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a scan query on the places store. This metric is for queries that we expect to be costly e.g. getBookmarksTree(guid, recursive=True).  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
+-| places_manager.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
+-| places_manager.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)|<ul><li>url_parse_failed</li><li>invalid_bookmark_update</li><li>invalid_parent</li><li>unknown_bookmark_item</li><li>url_too_long</li><li>cannot_update_root</li></ul>|2020-07-01 |
+-| places_manager.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
++| places_manager.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| places_manager.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>url_parse_failed</li><li>operation_interrupted</li></ul>|2021-03-01 |
++| places_manager.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| places_manager.scan_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a scan query on the places store. This metric is for queries that we expect to be costly e.g. getBookmarksTree(guid, recursive=True).  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| places_manager.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
++| places_manager.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>url_parse_failed</li><li>invalid_bookmark_update</li><li>invalid_parent</li><li>unknown_bookmark_item</li><li>url_too_long</li><li>cannot_update_root</li></ul>|2021-03-01 |
++| places_manager.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the places store.  |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
+ 
+ 
+ <!-- AUTOGENERATED BY glean_parser.  DO NOT EDIT. -->
+diff --git a/megazords/full/android/build.gradle b/megazords/full/android/build.gradle
+index 91d4071e..6da43879 100644
+--- a/megazords/full/android/build.gradle
++++ b/megazords/full/android/build.gradle
+@@ -29,6 +29,19 @@ android {
+ 
+     // Uncomment to include debug symbols in native library builds.
+     // packagingOptions { doNotStrip "**/*.so" }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+diff --git a/megazords/lockbox/android/build.gradle b/megazords/lockbox/android/build.gradle
+index 5f4d5234..be7654ee 100644
+--- a/megazords/lockbox/android/build.gradle
++++ b/megazords/lockbox/android/build.gradle
+@@ -29,6 +29,19 @@ android {
+ 
+     // Uncomment to include debug symbols in native library builds.
+     // packagingOptions { doNotStrip "**/*.so" }
++
++    // This is required to support new AndroidX support libraries.
++    // See mozilla-mobile/android-components#842
++    compileOptions {
++        sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
++        targetCompatibility rootProject.ext.build.jvmTargetCompatibility
++    }
++
++    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
++        kotlinOptions {
++            jvmTarget = rootProject.ext.build.jvmTargetCompatibility
++        }
++    }
+ }
+ 
+ configurations {
+-- 
+2.28.0
+
diff --git a/projects/application-services/build b/projects/application-services/build
new file mode 100644
index 0000000..807b6f0
--- /dev/null
+++ b/projects/application-services/build
@@ -0,0 +1,103 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+distdir=/var/tmp/dist/[% project %]
+builddir=/var/tmp/build/[% project %]
+mkdir $distdir
+mkdir /var/tmp/build
+
+cd /var/tmp/dist
+[% FOREACH arch = ['armv7', 'aarch64', 'x86', 'x86_64'] -%]
+  # The host (i.e. Linux) bits should be the same for all four targets. Thus,
+  # extracting all input files into the same place should give us a working host
+  # part with all the needed target architectures.
+  tar -xf $rootdir/[% c('input_files_by_name/rust-' _ arch) %]
+  tar -xf $rootdir/[% c('input_files_by_name/nss-' _ arch) %]
+  mv nss nss-[% arch %]
+  tar -xf $rootdir/[% c('input_files_by_name/sqlcipher-' _ arch) %]
+  mv sqlcipher sqlcipher-[% arch %]
+[% END -%]
+export PATH=/var/tmp/dist/fenix-rust/bin:$PATH
+cd $rootdir
+
+# application-services uses a newer NDK, 21, than everything else...
+export ANDROID_NDK_HOME=/var/tmp/dist/[% c('var/compiler') %]/android-ndk/android-ndk-r[% pc('fenix-android-toolchain', 'var/android_ndk_version') %][% pc('fenix-android-toolchain', 'var/android_ndk_revision') %]
+# We need to add the new path to our build tools to PATH.
+export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
+export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
+export ANDROID_NDK_API_VERSION=[% pc("fenix-android-toolchain", "var/android_ndk_version") %][% pc('fenix-android-toolchain', 'var/android_ndk_revision') %]
+export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
+
+[% IF !c('var/fetch_gradle_dependencies') %]
+  gradle_repo=$rootdir/[% c('input_files_by_name/gradle-dependencies') %]
+  cp -r $gradle_repo/dl/android/maven2/* $gradle_repo
+  cp -r $gradle_repo/m2/* $gradle_repo
+  cp -r $gradle_repo/maven2/* $gradle_repo
+[% END %]
+
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+# Prepare the offline build.
+# Move the directory for hardcoding the path in .cargo/config.
+mv /var/tmp/build/[% project %]-[% c('version') %] $builddir
+tar -C $builddir -xjf application-services-vendor-[% c('var/rust_vendor_version') %].tar.bz2
+cd $builddir
+# Make sure our vendored crates are used for offline builds.
+cat >> .cargo/config << 'EOF'
+
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "/var/tmp/build/application-services/vendor"
+
+[net]
+offline=true
+EOF
+
+# Move NSS and SQLCipher to the right place
+# XXX: Maybe merge with the loop above.
+archs="armv7 aarch64 x86 x86_64"
+for a in $archs
+do
+  if [ "$a" == "armv7" ]
+  then
+    mkdir -p libs/android/armeabi-v7a
+    mv /var/tmp/dist/nss-$a libs/android/armeabi-v7a/nss
+    mv /var/tmp/dist/sqlcipher-$a libs/android/armeabi-v7a/sqlcipher
+  elif [ "$a" == "aarch64" ]
+  then
+    mkdir -p libs/android/arm64-v8a
+    mv /var/tmp/dist/nss-$a libs/android/arm64-v8a/nss
+    mv /var/tmp/dist/sqlcipher-$a libs/android/arm64-v8a/sqlcipher
+  else
+    mkdir -p libs/android/$a
+    mv /var/tmp/dist/nss-$a libs/android/$a/nss
+    mv /var/tmp/dist/sqlcipher-$a libs/android/$a/sqlcipher
+  fi
+done
+
+patch -p1 < $rootdir/no-git.patch
+# XXX: We don't build the code for Linux for now as this involves additional
+# complexity. That's needed for running unit tests later on, though.
+patch -p1 < $rootdir/target.patch
+patch -p1 < $rootdir/1651660.patch
+[% IF c('var/fetch_gradle_dependencies') %]
+  # XXX: `assemble` is still not enough to see all fetched dependencies via
+  # Gradle's --debug. See: tor-browser-build#40056.
+  $GRADLE_HOME/gradle-6.3/bin/gradle --debug --no-daemon assemble
+[% ELSE %]
+  patch -p1 < $rootdir/mavenLocal.patch
+  gradle_flags="--offline --no-daemon -Dmaven.repo.local=$gradle_repo"
+  $GRADLE_HOME/gradle-6.3/bin/gradle $gradle_flags assembleRelease
+  $GRADLE_HOME/gradle-6.3/bin/gradle $gradle_flags publish
+
+  cd build
+  find maven -regex '.*[0-9].\(aar\|pom\)' -exec cp --parents {} $distdir \;
+
+  cd /var/tmp/dist
+  [% c('tar', {
+      tar_src => [ project ],
+      tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+  }) %]
+[% END %]
diff --git a/projects/application-services/config b/projects/application-services/config
new file mode 100644
index 0000000..081a53a
--- /dev/null
+++ b/projects/application-services/config
@@ -0,0 +1,86 @@
+# vim: filetype=yaml sw=2
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+version: 61.0.10
+git_hash: 2478bcf2b48d1867b01e8b7df4f86a69d564d49a # v61.0.10
+git_url: https://github.com/mozilla/application-services
+
+var:
+  container:
+    use_container: 1
+  # This should be updated when the list of gradle dependencies is changed.
+  gradle_dependencies_version: 1
+  # This should be updated when the list of rust dependencies is changed.
+  rust_vendor_version: 1
+  # For armv7 we need a different target than the default one we use for
+  # GeckoView. We set this variable so the Rust project in the `input_files`
+  # below can set the correct target when built for use in this project,
+  # querying `origin_project`.
+  application_services: 1
+  # Switch to make it easier to grab all dependencies during a dry-run.
+  fetch_gradle_dependencies: 0
+
+input_files:
+  - project: container-image
+  - project: '[% c("var/compiler") %]'
+    name: '[% c("var/compiler") %]'
+  - project: fenix-rust
+    name: rust-armv7
+    target_prepend:
+      - torbrowser-android-fenix-armv7
+  - project: fenix-rust
+    name: rust-aarch64
+    target_prepend:
+      - torbrowser-android-fenix-aarch64
+  - project: fenix-rust
+    name: rust-x86
+    target_prepend:
+      - torbrowser-android-fenix-x86
+  - project: fenix-rust
+    name: rust-x86_64
+    target_prepend:
+      - torbrowser-android-fenix-x86_64
+  - project: nss
+    name: nss-armv7
+    target_prepend:
+      - torbrowser-android-fenix-armv7
+  - project: nss
+    name: nss-aarch64
+    target_prepend:
+      - torbrowser-android-fenix-aarch64
+  - project: nss
+    name: nss-x86
+    target_prepend:
+      - torbrowser-android-fenix-x86
+  - project: nss
+    name: nss-x86_64
+    target_prepend:
+      - torbrowser-android-fenix-x86_64
+  - project: sqlcipher
+    name: sqlcipher-armv7
+    target_prepend:
+      - torbrowser-android-fenix-armv7
+  - project: sqlcipher
+    name: sqlcipher-aarch64
+    target_prepend:
+      - torbrowser-android-fenix-aarch64
+  - project: sqlcipher
+    name: sqlcipher-x86
+    target_prepend:
+      - torbrowser-android-fenix-x86
+  - project: sqlcipher
+    name: sqlcipher-x86_64
+    target_prepend:
+      - torbrowser-android-fenix-x86_64
+  - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
+    name: gradle-dependencies
+    exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
+    enable: '[% !c("var/fetch_gradle_dependencies") %]'
+  # `cargo vendor vendor` in the `application-services` directory has vendored
+  # the sources.
+  - URL: https://people.torproject.org/~gk/mirrors/sources/application-services-vendor-[% c('var/rust_vendor_version') %].tar.bz2
+    sha256sum: fd90572db453b5d83bc7dbb50b09d75c5019f09ee747054fdc12f42605d9da69
+  - filename: no-git.patch
+  - filename: mavenLocal.patch
+    enable: '[% !c("var/fetch_gradle_dependencies") %]'
+  - filename: target.patch
+  - filename: 1651660.patch
diff --git a/projects/application-services/gradle-dependencies-list.txt b/projects/application-services/gradle-dependencies-list.txt
new file mode 100644
index 0000000..dc57592
--- /dev/null
+++ b/projects/application-services/gradle-dependencies-list.txt
@@ -0,0 +1,419 @@
+# On how to update dependencies see projects/common/how-to-create-gradle-dependencies-list.txt
+# Don't forget to update var/gradle_dependencies_version when modifying this file
+sha256sum | url
+d1bc9842455c2e534415d88c44df4d52413b478db9093a1ba36324f705f44c3d | https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0.aar
+27a4be7462629c312da0b831a0978d2076fc34074145fb61dd4e86d7c8469b82 | https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0.pom
+2e9372ba7780ef44952adbf86b66e1f08682c1e5277c926185f6564a13799efe | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0.pom
+8d7299bca44cb3bdf17f5595766acbf459fc81fee223e8686cc6acd3a42ab5c0 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/appcompat-1.1.0.aar
+340d617121f8ef8e02a6680c8f357aa3e542276d0c8a1cdcb6fd98984b2cb7b9 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/appcompat-1.1.0.pom
+19944d32b46551a17c347e21894b95837fbd7baaafc9e2082794344f222f7361 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0.aar
+046011e16cb01b6f14842565661551110ef1b6427483f5d9068493f4c49690f2 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0.pom
+83bbb3960eaabc600ac366c94cb59414e441532a1d6aa9388b0b8bfface5cf01 | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0.pom
+dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852 | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1.0/core-runtime-2.1.0.aar
+c0c4ed0160cd2ca18390015de8b392b697c173327c6b2c0947d4e62f6958c05d | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1.0/core-runtime-2.1.0.pom
+a7913a5275ad68e555d2612ebe8c14c367b153e14ca48a1872a64899020e54ef | https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.0/collection-1.0.0.pom
+67e9066ca4acfdc6e3cc508293c31ba0398057ff118e4f70b1e1813c9a3456d1 | https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0.pom
+524b8b88ceb6a74a7e44e6b567a135660f211799904cb218bfee5be1166820b2 | https://dl.google.com/dl/android/maven2/androidx/core/core/1.2.0/core-1.2.0.aar
+3d1f4e37b77dd92353879a040ab4ce2f706798bcbdf066147491c3642b3f79a6 | https://dl.google.com/dl/android/maven2/androidx/core/core/1.2.0/core-1.2.0.pom
+dcb74d510d552b35eff73b0dd27b829649535f3902e5b5a1f26040383c10a940 | https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.2.0/core-ktx-1.2.0.aar
+29eaddba4e6a35e68a128e594ebae3b72ef7e767f1b273ef93dc2ed019ff97f6 | https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.2.0/core-ktx-1.2.0.pom
+a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564 | https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0.0/cursoradapter-1.0.0.aar
+62d95c89850af21030b19f14d5f7ecd6d8bcc9a3014c59002ec99624caac8100 | https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0.0/cursoradapter-1.0.0.pom
+20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2 | https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.aar
+ce9e47b87184f5bd5e139e9becd5b26476d42d78c31bf2fdedc37acb41b9ad49 | https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.pom
+e6d2aee708189bc3d9dff647b7671d03750007223639db16146bd7382bfb7934 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.6.0/databinding-common-3.6.0.jar
+8d22885c700e913c8d17a373b96bbb05bc6d6a1c2848b0c57928e2de325bf158 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.6.0/databinding-common-3.6.0.pom
+bf2b0ed68625a159254198aeca04f4fe6a5b99638500c88b2d59b7ecd42b6f67 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.6.0/databinding-compiler-common-3.6.0.jar
+b450ad9617683054753abf126d3ebf2b2d99a3a4975355cdfc2cf31cef7ace67 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.6.0/databinding-compiler-common-3.6.0.pom
+9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1 | https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0.aar
+da6733425a83f5ce850878fa7201082345fed7c668dd58550fdd19c0396c6fa4 | https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0.pom
+e329d673361e94d2e8f4d4d14e1f0586368bd43fb19efd5766ce7498bcccd162 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.0.0/fragment-1.0.0.pom
+a14c8b8f2153f128e800fbd266a6beab1c283982a29ec570d2cc05d307d81496 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0.aar
+ef78eb27ac02ddf3545d5f8a3857c73a2837a01853f8d5fcf77251011db52544 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0.pom
+33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a | https://dl.google.com/dl/android/maven2/androidx/interpolator/interpolator/1.0.0/interpolator-1.0.0.aar
+0ddc07cc39699f48ecd9ec894b5830c0f09e22e82959294edf37217224c88b7b | https://dl.google.com/dl/android/maven2/androidx/interpolator/interpolator/1.0.0/interpolator-1.0.0.pom
+692c2a60437a95220c8fbb6e8943196f255f535d1a7c58714e6c46530782f276 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.1.0/lifecycle-common-2.1.0.pom
+bd53c64b038585215b4959c1a388437a3ad525608a31c58e4283c3e371727d4d | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extensions/2.1.0/lifecycle-extensions-2.1.0.aar
+510e33b8b6ca33d2fcb3b7615a4528e338b438de398f3ee8de119c26508a5fdd | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extensions/2.1.0/lifecycle-extensions-2.1.0.pom
+242e446bed3db36f0df0aab0cb7f91060bd2dab7adcad1117adf54e724cd1d26 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata/2.1.0/lifecycle-livedata-2.1.0.aar
+1e4c580c995e41cd18455cfb87e3e43955be9db9ec63a8fb3c7259f01b7c4e3c | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata/2.1.0/lifecycle-livedata-2.1.0.pom
+a150743e86c30eddf1660ad454b1f86041efdefcd1a039320c4c26db87f7119a | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.1.0/lifecycle-livedata-core-2.1.0.aar
+6839d2e68c8fee4cc3bbf04e6b291a6ae842403fcd5f8d944c27814d296deff3 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.1.0/lifecycle-livedata-core-2.1.0.pom
+8cddd0c7f4927bbf71fb71fca000786df82cc597c99463d6916ccbe4a205a9ac | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-process/2.1.0/lifecycle-process-2.1.0.aar
+8bd43b3a4c017cc9f255f0a33cb216a7b5040d6ee1a8838a95b787987601a4e4 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-process/2.1.0/lifecycle-process-2.1.0.pom
+e5173897b965e870651e83d9d5af1742d3f532d58863223a390ce3a194c8312b | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.1.0/lifecycle-runtime-2.1.0.aar
+af8dcf02db2d79bcd4b53d6be8dbf37d79a32b38a1dfcaebbbd8766e0d959fcb | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.1.0/lifecycle-runtime-2.1.0.pom
+23516745f34f16ff7850bb1eadd55cf193dd789cba428de4bca120433e3bfd69 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-service/2.1.0/lifecycle-service-2.1.0.aar
+6b9e4fe350ed993d0c00b5ac0ff22f28bfc3bfbd9ad7eb7afc9b82f8339e673e | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-service/2.1.0/lifecycle-service-2.1.0.pom
+ba55fb7ac1b2828d5327cda8acf7085d990b2b4c43ef336caa67686249b8523d | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0.aar
+29aa72e339c3e227e74c973a4c85c7b79c926f0d37b61ed94f4d99a137c9a4b4 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0.pom
+11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025 | https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0.aar
+c978d550808b47434aa49a63164110a50b55b0bcc6160a93a2e37d5110df8c5e | https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0.pom
+831d4e3c7e5481e73f37c1cb2e08f24e27306976d3c83916f89b00b28857998b | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.1.0/room-common-2.1.0.pom
+175efd0a722810272098282819ebd52d6d0fa0aa5f9bfb25ac54268e1daa041e | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.1.0/room-runtime-2.1.0.aar
+ce8566bc008cc900268c07a4acb8840e4b54cdc404f73081a0986906f205fd7c | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.1.0/room-runtime-2.1.0.pom
+2510a5619c37579c9ce1a04574faaf323cd0ffe2fc4e20fa8f8f01e5bb402e83 | https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0.aar
+844d7d22fcea798c78bf5559229daf88ec9cad8136f5eea0a29aa76b3f8fde7c | https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0.pom
+cdfceb8f6ec64aac217dc5a499a5edb6d610f9d6a575fba7bea06b2bfaf3ea7f | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.0.1/sqlite-2.0.1.aar
+bc69fd52e7eb5563a766319b7a84efda32f15473c4cec0e12b99502d91489cb1 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.0.1/sqlite-2.0.1.pom
+870e3bce33ad21ef034332b083b2925105becfd73d262e3a1270901229e45076 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.0.1/sqlite-framework-2.0.1.aar
+c4dedda03bd663e0ff34c8eaaf608ae86be05929a2f7cf2ce1e17160201bca3e | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.0.1/sqlite-framework-2.0.1.pom
+46fd633ac01b49b7fcabc263bf098c5a8b9e9a69774d234edcca04fb02df8e26 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0.aar
+5b0e2d5b2179e54804785cbc21ce5f473b5e1ddd55a57da482e94dcd39492bb2 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0.pom
+76da2c502371d9c38054df5e2b248d00da87809ed058f3363eae87ce5e2403f8 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable-animated/1.1.0/vectordrawable-animated-1.1.0.aar
+276a20116b705fb75b9003ee9496c56f6fd3b32375fb232472811eba60a040bd | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable-animated/1.1.0/vectordrawable-animated-1.1.0.pom
+9a1d77140ac222b7866b5054ee7d159bc1800987ed2d46dd6afdd145abb710c1 | https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0.aar
+c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5 | https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0.pom
+147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.aar
+1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.pom
+de617480ce64e4e9055e2d0295c87ee20929b06c4f2a5efdaded27dcca8520e4 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.2.0/work-runtime-2.2.0.aar
+960a24728eaedfc4ff7a2f366b9360e02a1d88f9eb0a9c7142ed94ed462797b0 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.2.0/work-runtime-2.2.0.pom
+e93836f35d35e47ba501add90fa6559964fa7a70975bf4ffc4a04836189611e9 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.0/work-runtime-ktx-2.2.0.aar
+7cbb32f2fe880d407d4c53268bcd554c11dc9316a1d6cd556a08fe45a4631f22 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.0/work-runtime-ktx-2.2.0.pom
+10e1f9691dc9485d4c122d16b8ebb2c062a7675c983055bb28cec2496026e658 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.6.0/baseLibrary-3.6.0.jar
+099461a4afeb91d9852e4f6a69959403c328286840d991a001a068afc243bac6 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.6.0/baseLibrary-3.6.0.pom
+a0c36940b7351c2673bf3c96b6774017db4f1e8342ee063cafc3533cecd22707 | https://dl.google.com/dl/android/maven2/com/android/signflinger/3.6.0/signflinger-3.6.0.jar
+a8f9f10afa0b381b5e64eafafbd09015775d9934eea475ccaf3320431b4b2a50 | https://dl.google.com/dl/android/maven2/com/android/signflinger/3.6.0/signflinger-3.6.0.pom
+f7a0143fa51920ea9289ebfc11349fcb4bc70cebd1f6b746de2998fa7fdf5f2d | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.6.0/crash-26.6.0.jar
+b98df4993e7f76236fd28b6b73f62b2349f0399e780d50c8743e708c08f9b073 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.6.0/crash-26.6.0.pom
+fe69b530190d1be5d375b4d27c1831f1921ee023bcc2a4779a692a11b883a5d1 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.6.0/protos-26.6.0.jar
+65965684318c80df0f40e90f9a50800d8c57e9b3eda48096f9990b769f93524b | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.6.0/protos-26.6.0.pom
+d897e7af0116944be7c4b917831527155fa3723f1fb77f45ba84537c9923cd99 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.6.0/shared-26.6.0.jar
+ade7c62a6a19e93635ad78bb8f4bac080e32a1ecc7423c146522e013472f672f | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.6.0/shared-26.6.0.pom
+29720b801195d7809a8e91da9dbaee2305320f28777c7e9649da6b2392dc48a7 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.6.0/tracker-26.6.0.jar
+9835e19c8b5ba3660f1778d27a82f03c4ac944cb3d22f14881b372ae251246e2 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.6.0/tracker-26.6.0.pom
+fb242380c243cd2069fd992b2803cca4a9e4366157cd327984eab75eb9e9a9e7 | https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.6.0/annotations-26.6.0.jar
+827af30b20f5c227cba52f365d685e92ff08c45e2d4f37fca57eb5f951006dd2 | https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.6.0/annotations-26.6.0.pom
+f74465e394c73d71f0f9053f3ebc90999d06bea3ad7c1fa3576b6a3a088d0db3 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.6.0-6040484/aapt2-3.6.0-6040484-linux.jar
+c616e4a81a19bf74fb98f072383b316da8be882c3e9efce7fee82b802da5ccd5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.6.0-6040484/aapt2-3.6.0-6040484.pom
+fac0435e08898f89eeeb9ca236bea707155ff816c12205ced285ad53604133ca | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.4.0/aapt2-proto-0.4.0.jar
+a24bdd4e8e374fdcd8cef8d77ea723f147ccd0f25dc6de4fbe290039be904339 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.4.0/aapt2-proto-0.4.0.pom
+1fc041276d0e090b6ac99f26e8ab59d1c2257293bc88ee49ff074e69345bc665 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.6.0/apksig-3.6.0.jar
+2cf2d4a8fbe06e60026b6f2f90a7d6c73b7d3f66abbb984e6a1740b85776a028 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.6.0/apksig-3.6.0.pom
+8126c2fef74b0ebd1d6e647c3a84ef4f3e9a60231952abc74e4a097a6449374a | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.6.0/apkzlib-3.6.0.jar
+055661a9e3089fb7154e0f358281a7406b1da4bc6d61dea1a0e19231239f36cf | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.6.0/apkzlib-3.6.0.pom
+74cc34c112d8586cedb0f94a9728b0402492436e10c6493ee6da60308be0b262 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.6.0/builder-3.6.0.jar
+f4485a00d7a5c792cb5f2a8c5c8446bada583570f25182dbf84d700e30441386 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.6.0/builder-3.6.0.pom
+e18b976ea7620026259eeae4dc0378bd2ff5388dd91b8201113b2089b281ae3f | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.6.0/builder-model-3.6.0.jar
+369428537e6613f4e229cbd70360aeff18a628c41566a7dd5b3d143808eef41a | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.6.0/builder-model-3.6.0.pom
+ac90b88ce12f9d0ae0f9845ff2ad9bdf65aa07d3e7b4b0515794cffe4b603fe8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.6.0/builder-test-api-3.6.0.jar
+af0c92edfbc6549bebb636e82eb8a851c85e12bc4bcdfa2b81161bbb9e994050 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.6.0/builder-test-api-3.6.0.pom
+20f2e347e9b4ccd9cdcdc2f6e1956ba3cc1641991fbbadc1f86ca60dd6ca64e1 | https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.10.3/bundletool-0.10.3.jar
+ad9c1614680f29b5c39018c32e2b44d3adfc52d667e7bf29ca64eb2feb697034 | https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.10.3/bundletool-0.10.3.pom
+bdd59f532634d4fde2b3a6864bdc61058d94a62a5310f431f75b6f571d00d196 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.6.0/gradle-3.6.0.jar
+ee16c99fea79a677092828264e01961816cef6ef4fa1f5702db6a58093dc0157 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.6.0/gradle-3.6.0.pom
+841cfc9f6224c2d12e761ac3a305b268e0ee735b0ddd7e70cfebbf5a2df9cfa6 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.6.0/gradle-api-3.6.0.jar
+69d6a67a8f84d03ba331dc9e228bd477c903f3643bde330c8c3a1cc72e8e1b7a | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.6.0/gradle-api-3.6.0.pom
+0930bb58d94e09c61161576ca38853b3dba4ac9320fcf323f9b31bc58a18afda | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-beta08/jetifier-core-1.0.0-beta08.jar
+c39f0d195566b2ca9e1c954a665a553dc60320d4022acad82fd56a31a6d395d5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-beta08/jetifier-core-1.0.0-beta08.pom
+689e5637b0b61b460f447064ff62ed4267203a26a70cf071fa34d7c3faba5366 | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-processor/1.0.0-beta08/jetifier-processor-1.0.0-beta08.jar
+be08f1215cd2bb5cbd22b1146ea92e0f14558fafc1603cbef7553b3a6677984c | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-processor/1.0.0-beta08/jetifier-processor-1.0.0-beta08.pom
+9b2709e8f64978960a701675fa8d6e7dc5109ec6ddf1bb301c9ebf88545c9bc6 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.6.0/manifest-merger-26.6.0.jar
+fc1c1056089f4418ac0de5aef2c797a38a39ce8cd70cacb95269b834625fcde8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.6.0/manifest-merger-26.6.0.pom
+4de4a3d05e1c534c2db9e4588bf34082bb2bd232d8abb9727c430290ce225740 | https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api.jar
+7c62f3856e8abca1d79257925f26c12668693f5d95904056bbac88605cfd8575 | https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api.pom
+f83adfad2f11074d97e6b0706872a60ec54c6ff42d6554bec1c900d9077825d5 | https://dl.google.com/dl/android/maven2/com/android/tools/common/26.6.0/common-26.6.0.jar
+4f9c30f02a6ee14fe175c1dd53274fd615d8e11dc22fb9912adcb58a69bb0bca | https://dl.google.com/dl/android/maven2/com/android/tools/common/26.6.0/common-26.6.0.pom
+62eab1a996349a50e1e2a38f9277ebcebd2e10b1614b15f0ee8be1e1aedb8503 | https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.6.0/ddmlib-26.6.0.jar
+764cf4d884e271972c3a1ea6fbc27fa6fcb7d4eb38787fbb40fa91f9f57a1add | https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.6.0/ddmlib-26.6.0.pom
+837f7e464ab3bc491637869950ba56a7cc61977590d2d8ea85801cef3de253bb | https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.6.0/dvlib-26.6.0.jar
+b19445e91383f59fb54c75e053d389a447eeac6c606b98420fcd74e044c0d95b | https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.6.0/dvlib-26.6.0.pom
+452a2589b6ba40db238cff741fb0f01de83bb9e40b5a58a6f597473abb35900f | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.6.0/intellij-core-26.6.0.jar
+c84395f45a7d7e87f2f484e6e8180860cc92e464d2f344a90b8d2202520c99fe | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.6.0/intellij-core-26.6.0.pom
+2c13673bbd2f88c0cdd1df45a4ee63d0e0322c39796103c7abf175fcafe9ba35 | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.6.0/kotlin-compiler-26.6.0.jar
+712c98251cf99c8d47ae32968fc3a46b0f1e376c744bc2409a28a0c122ba9c17 | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.6.0/kotlin-compiler-26.6.0.pom
+09768c6b91a9cbd615074faf903b8010870f3b64a46a710718eecfce0edb21bf | https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.6.0/uast-26.6.0.jar
+3680ff0f4ee339b0e05865f4057a2d2321b3adaf4bcddeb732314fa7f3fb2bc7 | https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.6.0/uast-26.6.0.pom
+951e8a3832d8f8cb7c10a41c6bd45c16a7a7ae7cc72958ac734f9db0650f61f9 | https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.6.0/layoutlib-api-26.6.0.jar
+476d3579571a4588f8187024f0043b043917a9b102c2c9f1f8fd6fc0085ab7df | https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.6.0/layoutlib-api-26.6.0.pom
+1efa62b21a76ac2ec98c213937a846dab30f95082fcca806605b0215f9bba6d6 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.6.0/lint-26.6.0.jar
+235bd153831ba5180c3487ffb9d20364cd402b72aa38429dd87bdb6cdb4a2227 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.6.0/lint-26.6.0.pom
+b5e1235b181a5a68a14de7adc88997c66cda26036895fc771e87aca63267f2a4 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.6.0/lint-api-26.6.0.jar
+54ab64c262cd2762fb2a2c4aead50a23c3ab500cb0f285864b4c7789a2898df5 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.6.0/lint-api-26.6.0.pom
+941a2cd8c4b88b02abad9e7fc8219a65642ec4222f531bc0dbb69ae2b4f97147 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.6.0/lint-checks-26.6.0.jar
+12a8ff3487f7d014492354942d4e88b20925ae6b6679ddf4d426131936e51741 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.6.0/lint-checks-26.6.0.pom
+9298f4493601af4ba0ccd8f0623ec5cdb7c604c2fea59c3ddf1a82dab824b4c4 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.6.0/lint-gradle-26.6.0.jar
+40d80c18a03c236c1ed50dbbb792266b7348b280fcebfce5bf3e41a7f929ecb9 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.6.0/lint-gradle-26.6.0.pom
+f661cca9e27b7029cc074b2b7167d1a6882abeb5a9f55efb8005a05e5ef6e11f | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.6.0/lint-gradle-api-26.6.0.jar
+fe047cd786c3d1d32a92b2afe45d6c1ad8fefc214216136ffa0de491bb1cd51b | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.6.0/lint-gradle-api-26.6.0.pom
+da6c7429828e8149702d43b01bb32a57cf9687db6f407552585ba5f26bdf650b | https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.6.0/repository-26.6.0.jar
+d583cc98e2215aa1d558b577435696c5d279674d48922e7095fc4f1dda0f5137 | https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.6.0/repository-26.6.0.pom
+2bdd20936544902649d85d5db4a538cca888bc9b079ca49886476f7eea270dbc | https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.6.0/sdk-common-26.6.0.jar
+353c976f0c5d38f9dc64f571e1ca0a2c57ef0b3dbe76f5bbe062dc396fe7c8a3 | https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.6.0/sdk-common-26.6.0.pom
+8dae7e1f611f12c13e660e5245ade4311bb111976c191eacf6ae907a66a3e37d | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.6.0/sdklib-26.6.0.jar
+709acf0644fa2d6ea5ff226b902f49b5503dd76a13b2637b5e9216342987e50d | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.6.0/sdklib-26.6.0.pom
+3b9d663a8c1fc4fdc812d729961532fb943fd30e5c9e276121f59cdf6a68e665 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/3.6.0/zipflinger-3.6.0.jar
+3b46e78152954f6bde5a6d6c219508a8c1229f858e685c156314f1f82e76e1ce | https://dl.google.com/dl/android/maven2/com/android/zipflinger/3.6.0/zipflinger-3.6.0.pom
+05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a | https://jcenter.bintray.com/com/google/auto/auto-parent/6/auto-parent-6.pom
+b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.jar
+1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.pom
+27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c | https://jcenter.bintray.com/com/google/auto/value/auto-value-parent/1.6.2/auto-value-parent-1.6.2.pom
+feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
+766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
+19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom
+233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
+b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
+8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://jcenter.bintray.com/com/google/code/gson/gson-parent/2.8.5/gson-parent-2.8.5.pom
+2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://jcenter.bintray.com/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar
+47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://jcenter.bintray.com/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.pom
+757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://jcenter.bintray.com/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar
+7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://jcenter.bintray.com/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.pom
+6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.jar
+5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.pom
+10a5949aa0f95c8de4fd47edfe20534d2acefd8c224f8afea1f607e112816120 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.jar
+3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.pom
+c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
+767525d9a81129cd081968382980336327be4162b1e2251a182911daa733c123 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
+cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81 | https://jcenter.bintray.com/com/google/google/1/google-1.pom
+845c3efce63bd23d962f210b13beebab05c4d583898a1b1a7ffb8c7b3ed7d5d4 | https://jcenter.bintray.com/com/google/gradle/osdetector-gradle-plugin/1.6.2/osdetector-gradle-plugin-1.6.2.jar
+5bf4f695ed1177e80524525b6e5a040a5d7ea4b16196b1110882c62e69a555e8 | https://jcenter.bintray.com/com/google/gradle/osdetector-gradle-plugin/1.6.2/osdetector-gradle-plugin-1.6.2.pom
+a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
+e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
+6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36 | https://jcenter.bintray.com/com/google/guava/guava/27.0.1-jre/guava-27.0.1-jre.pom
+4a5aa70cc968a4d137e599ad37553e5cfeed2265e8c193476d7119036c536fe7 | https://jcenter.bintray.com/com/google/guava/guava/27.1-jre/guava-27.1-jre.jar
+bd99d75006131ae25c9860a1d63e84e36371f112fdb0c2fe3d5d6ab38e9eb271 | https://jcenter.bintray.com/com/google/guava/guava/27.1-jre/guava-27.1-jre.pom
+f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://jcenter.bintray.com/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom
+317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696 | https://jcenter.bintray.com/com/google/guava/guava-parent/27.0.1-jre/guava-parent-27.0.1-jre.pom
+d3610165c6de2b4d8d6418487717b63c52b5a39c5e35a553e24873ecb60e0628 | https://jcenter.bintray.com/com/google/guava/guava-parent/27.1-jre/guava-parent-27.1-jre.pom
+53873caf26bc1ed8a567ea6c939ab2aaa3f47a5e32d5cade95ddf5080d23238a | https://jcenter.bintray.com/com/google/guava/listenablefuture/1.0/listenablefuture-1.0.pom
+b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
+18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom
+2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar
+f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.pom
+c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
+efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
+c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://jcenter.bintray.com/com/google/jimfs/jimfs-parent/1.1/jimfs-parent-1.1.pom
+74ee43b09e711b13d568811e12f33bd16e6087b15f1aeded22b0dfe89ae76856 | https://jcenter.bintray.com/com/google/protobuf/protobuf-bom/3.11.4/protobuf-bom-3.11.4.pom
+433ae1f99ae3c330f1b54971b39c2672d49948e6acf661d9bb4f1e9a7743de8e | https://jcenter.bintray.com/com/google/protobuf/protobuf-gradle-plugin/0.8.12/protobuf-gradle-plugin-0.8.12.jar
+d9fdbf20ea7e2b965a8870d17ebbd2900a64cef3c9a7c2bf0bd4d4857462680a | https://jcenter.bintray.com/com/google/protobuf/protobuf-gradle-plugin/0.8.12/protobuf-gradle-plugin-0.8.12.pom
+dce7e66b32456a1b1198da0caff3a8acb71548658391e798c79369241e6490a4 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.4.0/protobuf-java-3.4.0.jar
+83f17ba86c5fa1a15a3a3c8030d4ce42ef21c1d39b65db6cc004a8eeb2c59406 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.4.0/protobuf-java-3.4.0.pom
+8cacea2f7a042dabae295c509dcdbfe32a49aa3708eec6ddb8efd8593aa0b4a3 | https://jcenter.bintray.com/com/google/protobuf/protobuf-javalite/3.11.4/protobuf-javalite-3.11.4.jar
+1aa38c0b0891b910e84642c5116bb1b54d86a5959f37c9c38a34ede600bdd55d | https://jcenter.bintray.com/com/google/protobuf/protobuf-javalite/3.11.4/protobuf-javalite-3.11.4.pom
+4189e0be5ab15cf2330f70b24fbdc75ca37514f188388fce8580ce16a9a68052 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.jar
+89c43073e7eaa0eaba72a4a36ae1b6bfdfe5d81bb9d0e156aee05e4a72de3cb8 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
+c3e2aee04dd8698f8b21ce635c318f8964d52fc9ca490a01a64cdc7a6c44d362 | https://jcenter.bintray.com/com/google/protobuf/protobuf-parent/3.11.4/protobuf-parent-3.11.4.pom
+24909c552842c0eb7a4c769d631a43cbef5a9a10c1640f2bdbd1ea149c573a47 | https://jcenter.bintray.com/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
+5405b8939f23a32b70700386ff0edb9bc1a78b29b90396371d4c0fc973c60249 | https://jcenter.bintray.com/com/google/protobuf/protoc/3.11.4/protoc-3.11.4-linux-x86_64.exe
+516b980cf41148c1d881e584634c81b0c4bc6c03a097a82e5181229f2a8b336d | https://jcenter.bintray.com/com/google/protobuf/protoc/3.11.4/protoc-3.11.4.pom
+4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://jcenter.bintray.com/commons-codec/commons-codec/1.10/commons-codec-1.10.jar
+bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://jcenter.bintray.com/commons-codec/commons-codec/1.10/commons-codec-1.10.pom
+cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://jcenter.bintray.com/commons-io/commons-io/2.4/commons-io-2.4.jar
+b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://jcenter.bintray.com/commons-io/commons-io/2.4/commons-io-2.4.pom
+50f11b09f877c294d56f24463f47d28f929cf5044f648661c0f0cfbae9a2f49c | https://jcenter.bintray.com/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
+ed76b8891c30b566289c743656f8a4d435986982438d40c567c626233247e711 | https://jcenter.bintray.com/commons-lang/commons-lang/2.6/commons-lang-2.6.pom
+daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
+c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-logging-1.2.pom
+20ef4b82e43ff7c652281a21313cf3b941092467add3fa73509c26f6969efdab | https://jcenter.bintray.com/com/squareup/javapoet/1.10.0/javapoet-1.10.0.jar
+1690340a222279f2cbadf373e88826fa20f7f3cc3ec0252f36818fed32701ab1 | https://jcenter.bintray.com/com/squareup/javapoet/1.10.0/javapoet-1.10.0.pom
+fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar
+e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom
+1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://jcenter.bintray.com/com/sun/activation/all/1.2.0/all-1.2.0.pom
+993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.jar
+f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.pom
+6f83d3c85fdca9ef24010cb2f652aab1a508bff6331c087b60d0301782b78c6f | https://jcenter.bintray.com/com/sun/istack/istack-commons/3.0.7/istack-commons-3.0.7.pom
+6443e10ba2e259fb821d9b6becf10db5316285fc30c53cec9d7b19a3877e7fdf | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.jar
+6d704e450a816a45bce806ba22c22fe83d8e8dcf7a71517603de630a1726809f | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.pom
+c2204f54b43593808c9af6502865ee71679823156dabdef341e71d35662c7aa0 | https://jcenter.bintray.com/com/sun/xml/bind/jaxb-bom-ext/2.3.1/jaxb-bom-ext-2.3.1.pom
+f699ef37ec7966e284742dfca83075221179041a9a49aef7991280192604462d | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-parent/2.3.1/jaxb-parent-2.3.1.pom
+b56383eb4d43498b145d379e2a93d5fcdcd8ff9291f89b58b82cb91658dbf14c | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.3.1/jaxb-runtime-parent-2.3.1.pom
+7a8473e935504841c606686d84e9c017a739ac2c144fde687aa003a7dd44de7f | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-txw-parent/2.3.1/jaxb-txw-parent-2.3.1.pom
+785861db11ca1bd0d1956682b974ad73eb19cd3e01a4b3fa82d62eca97210aec | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.jar
+bbc796ab84a6778a751c2eff1136078abd2b4d35b5047062804f3582ef3c42c8 | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.pom
+cfb8cdad4c0dd05ed8cacbe146bf1718764403947b9de8348e1bfd42f62ea73e | https://jcenter.bintray.com/com/sun/xml/fastinfoset/fastinfoset-project/1.2.15/fastinfoset-project-1.2.15.pom
+c8300fbf69d2240f5eae5a88a76f06f67e7c604d0328813de22b75174879a9e5 | https://jcenter.bintray.com/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.pom
+952cbfcc5f21beeccb5925cc5ba648af09839258441dd44d087d64a57d34e87a | https://jcenter.bintray.com/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.jar
+0161c5a76ef500bcfe727e95e34974c0482ad87793d821876bf3fa95704c1407 | https://jcenter.bintray.com/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.pom
+0a908758b2e432479a6c60489895b875ec31eaaf73248a573494cfdc303dc282 | https://jcenter.bintray.com/digital/wup/android-maven-publish/3.6.2/android-maven-publish-3.6.2.jar
+78d58d83d1409d9be861a570409b9b993e24081e7f6d5303e5591e4c1ea476e5 | https://jcenter.bintray.com/digital/wup/android-maven-publish/3.6.2/android-maven-publish-3.6.2.pom
+6aed6782fcfc8de4272f541786f03c9fae46903adcfb8c76900bffc5746f3b2e | https://jcenter.bintray.com/io/gitlab/arturbosch/detekt/detekt-gradle-plugin/1.7.4/detekt-gradle-plugin-1.7.4.jar
+fc05b435d9467cc917d3b4dafa5c81af268434affa10875b29aae51055addda1 | https://jcenter.bintray.com/io/gitlab/arturbosch/detekt/detekt-gradle-plugin/1.7.4/detekt-gradle-plugin-1.7.4.pom
+74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar
+953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
+43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393 | https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar
+da2926f3c8be898643cc10acdec6de0b0351a57fb2735770fa0177b06ade71b9 | https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.pom
+91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.jar
+943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.pom
+88b955a0df57880a26a74708bc34f74dcaf8ebf4e78843a28b50eae945732b06 | https://jcenter.bintray.com/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar
+12b20cf922773445c3445c2883cbf671fa982111e9bf9f875020f9313b3814b1 | https://jcenter.bintray.com/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.pom
+cd1beaa4560dc4dfdb826b9d809e464db22526dfb54264bae78a6ff7efb08e1f | https://jcenter.bintray.com/javax/xml/bind/jaxb-api-parent/2.3.1/jaxb-api-parent-2.3.1.pom
+3a0c495de1cebc83f67beaa1776a7936f02f11f2addd3879596a78b2a86bcaa3 | https://jcenter.bintray.com/kr/motd/maven/os-maven-plugin/1.6.2/os-maven-plugin-1.6.2.jar
+6d70d1f2f2727730d779d32a1fd2fbb1ea08e75a67a50a2d8e7d0fdb3a2a4af3 | https://jcenter.bintray.com/kr/motd/maven/os-maven-plugin/1.6.2/os-maven-plugin-1.6.2.pom
+c83a9c71358d781539c34b38d76a88e3ec8e2d587c7f04b611acc9041919b310 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.2.0/jna-5.2.0.aar
+0271ae7fc162a5e69c337f36d86fdb94a8a232c5c42a80d8a7424071addd1fdc | https://jcenter.bintray.com/net/java/dev/jna/jna/5.2.0/jna-5.2.0.jar
+aafe6935d6bedb89a6aa32563d441fbe305da1de193d6f71a45a0212acf9b756 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.2.0/jna-5.2.0.pom
+281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://jcenter.bintray.com/net/java/jvnet-parent/1/jvnet-parent-1.pom
+1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a | https://jcenter.bintray.com/net/java/jvnet-parent/5/jvnet-parent-5.pom
+26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.jar
+7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.pom
+f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
+31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
+75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-base-6.0.3.jar
+2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-base-6.0.3.pom
+cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-gradle-6.0.3.jar
+5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-gradle-6.0.3.pom
+d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://jcenter.bintray.com/net/sf/proguard/proguard-parent/6.0.3/proguard-parent-6.0.3.pom
+a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
+8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
+401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://jcenter.bintray.com/org/antlr/antlr4-master/4.5.3/antlr4-master-4.5.3.pom
+ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://jcenter.bintray.com/org/apache/apache/13/apache-13.pom
+36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://jcenter.bintray.com/org/apache/apache/15/apache-15.pom
+9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://jcenter.bintray.com/org/apache/apache/16/apache-16.pom
+7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://jcenter.bintray.com/org/apache/apache/18/apache-18.pom
+1397ce1db433adc9f223dbf07496d133681448751f4ae29e58f68e78fb4b6c25 | https://jcenter.bintray.com/org/apache/apache/7/apache-7.pom
+4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://jcenter.bintray.com/org/apache/apache/9/apache-9.pom
+2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://jcenter.bintray.com/org/apache/commons/commons-compress/1.12/commons-compress-1.12.jar
+b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://jcenter.bintray.com/org/apache/commons/commons-compress/1.12/commons-compress-1.12.pom
+96e718baf534874ee62ce4d42de265f2ddacd88391a540e030d59d98fa7c4408 | https://jcenter.bintray.com/org/apache/commons/commons-parent/17/commons-parent-17.pom
+467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://jcenter.bintray.com/org/apache/commons/commons-parent/25/commons-parent-25.pom
+3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://jcenter.bintray.com/org/apache/commons/commons-parent/34/commons-parent-34.pom
+7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://jcenter.bintray.com/org/apache/commons/commons-parent/35/commons-parent-35.pom
+87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://jcenter.bintray.com/org/apache/commons/commons-parent/39/commons-parent-39.pom
+c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar
+7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.pom
+b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client/4.5.6/httpcomponents-client-4.5.6.pom
+61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4.4.10/httpcomponents-core-4.4.10.pom
+caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent/10/httpcomponents-parent-10.pom
+78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar
+c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.pom
+0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6.jar
+dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6.pom
+7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.jar
+321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.pom
+963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.jar
+8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.pom
+64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.jar
+dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom
+51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0 | https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.jar
+fc0d535d7bdb7ca90562321c2e8e2a35c377f113c6dd0b2062282e1f4676367a | https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.pom
+92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar
+e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom
+18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom
+fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://jcenter.bintray.com/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom
+6cc1266cf306557b4f2d09cbd8cd6e75b5ef0c5773ca4ef763d4f730df947b64 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-bom/2.3.1/jaxb-bom-2.3.1.pom
+45fecfa5c8217ce1f3652ab95179790ec8cc0dec0384bca51cbeb94a293d9f2f | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar
+f8101b86157fbfc01949ffdc7c59ea71ca23b7ece25f6a79061fe01cb750ff00 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.pom
+34975dde1c6920f1a39791142235689bc3cd357e24d05edd8ff93b885bd68d60 | https://jcenter.bintray.com/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar
+4714d46cacf702ab2cd478d6048c5d9cc57abdb55f4c07b6b7aa72799e02d36c | https://jcenter.bintray.com/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.pom
+1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://jcenter.bintray.com/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
+47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://jcenter.bintray.com/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
+ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0.jar
+965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0.pom
+affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601 | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar
+310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom
+ffd156464b8129365423e27b9e53ecbfd32d56b91af977dab2222ca2d271a65f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/1.3.71/kotlin-android-extensions-1.3.71.jar
+eb68121782d951a1db37e9a00c8fd9252eafa91388e90987239d75224490d6bb | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/1.3.71/kotlin-android-extensions-1.3.71.pom
+303c422700f79d5d13d528b978c6abd9cd136d78d9f7f6f2556e85a81892f9f1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-runtime/1.3.71/kotlin-android-extensions-runtime-1.3.71.jar
+648025c01c56b234a7458cb6048ae8fcfa941f9ea8ebf059090733237b9df9b6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-runtime/1.3.71/kotlin-android-extensions-runtime-1.3.71.pom
+975dab97d8aa780bc8d1af8efd66ba121c35c709537308d5742e812c46b126c0 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-runtime/1.3.72/kotlin-android-extensions-runtime-1.3.72.jar
+d89b4ef057d10f9057d85685b711048c104ae76cfc60777cfae275848649a839 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-runtime/1.3.72/kotlin-android-extensions-runtime-1.3.72.pom
+2e508e8d23e9ab171f53ae3f71e8218e7242cd138af040d62651ecd9d3417bcd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.71/kotlin-annotation-processing-gradle-1.3.71.jar
+c36857d64b1ee46f61f74f9a61bc0da7467bc50eb1fa6ce0c48e45b472a7d31e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.71/kotlin-annotation-processing-gradle-1.3.71.pom
+a799c7521e0be8808b94d4ce6683c5fccc8428fc0764b659be337725ff57c68a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-build-common/1.3.71/kotlin-build-common-1.3.71.jar
+ed14a0fe3f1f6fc35c45399506208b12e174581175a59ac2d9daa56d688b5f3a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-build-common/1.3.71/kotlin-build-common-1.3.71.pom
+849309b35cdd2e26d9e9838f49e4a6ba1c9b1e2f6f71541fd7d7877463f3c716 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.71/kotlin-compiler-embeddable-1.3.71.jar
+c2c3917c52e8dd3cb8e0d6c7ca98be4c39200d69ad0c6eacbc50f7b7fd1c41d9 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.71/kotlin-compiler-embeddable-1.3.71.pom
+4dc0bdc5acd3d276499781d5e406ac40edae8d778ed01408324a19783eed329b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.3.71/kotlin-compiler-runner-1.3.71.jar
+78657a6c1faa71a11420dff67ff4f0469283a2e1dded458693c7206c20814d7b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.3.71/kotlin-compiler-runner-1.3.71.pom
+1d0e3c08f28e15d87bbbd84d554089750f35e890405dd923c96fb0f29633badd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-client/1.3.71/kotlin-daemon-client-1.3.71.jar
+8a92782825a7c4b3547ee3622ea08e36e71843e6295157ea214c98523bb7fee6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-client/1.3.71/kotlin-daemon-client-1.3.71.pom
+5df3203befb387d24821473c35705987a3353e4514a9c45afe9621a8ce27a587 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.71/kotlin-daemon-embeddable-1.3.71.jar
+37d6bbf9074a74be00fa618b8bfa5783852c7bf27ec512895d2dd1ab64e1ea71 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.71/kotlin-daemon-embeddable-1.3.71.pom
+f54f0a4620e6253573cb4ba6a130d9829c93b8cf165eaf05da8fe0e552500f3f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.71/kotlin-gradle-plugin-1.3.71.jar
+18e52973ed9aff902570d6ba9e633037593564b9acc193890026a08aa8907b48 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.71/kotlin-gradle-plugin-1.3.71.pom
+44803ecde3e410d2344535d3374da67b32a290530f19de84410f37d4e7bc57fc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.71/kotlin-gradle-plugin-api-1.3.71.jar
+6218d87f4b653d07aa348a3505e4261540a8fabfaca3a7aa479708aa4263fcb1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.71/kotlin-gradle-plugin-api-1.3.71.pom
+9f56a0e6594ff627387cb35eab67a41c4d2905575006d1677aea9d0860698066 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.71/kotlin-gradle-plugin-model-1.3.71.jar
+08f9b985c8d7212b6d916d8e6c7debeeb90e64617723242381a75c43f8964666 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.71/kotlin-gradle-plugin-model-1.3.71.pom
+6123981a9d8998fe7229f813352ccb11944685527c2612a3fe44437bce45e394 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-native-utils/1.3.71/kotlin-native-utils-1.3.71.jar
+dabbcda1f808e1d318e62548d35c2bc55ac45429d5bc33126c9066c3becf732b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-native-utils/1.3.71/kotlin-native-utils-1.3.71.pom
+143e715c10ff6d65eb5a7695be7b696c6e013702dff103d23ba54760bf93867b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.jar
+b2b8add63c5ce9b67571ed469f7c37fd043ee2420206255e96a146018d8e2fa0 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.pom
+59c57ab609494d2a30d6ea3737428a56918ff0b8031081ea73b8472fdec06e44 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.71/kotlin-reflect-1.3.71.jar
+4df94aaeee8d900be431386e31ef44e82a66e57c3ae30866aec2875aff01fe70 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.71/kotlin-reflect-1.3.71.pom
+2c716ce300e573e51d351c68334b3cc5476cd500ad5e46cfdd716ee1e46cab31 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.3.71/kotlin-scripting-common-1.3.71.jar
+0cc9b3006fe35dc2f297d9a38aadde5461d9b2e8fc49ffef4762eb2c6a30f40c | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.3.71/kotlin-scripting-common-1.3.71.pom
+e7335e39e68af08902de5ca76085b7caba166a7b92ceb4acb81412f32d373831 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.71/kotlin-scripting-compiler-embeddable-1.3.71.jar
+8b318616802f040dd1db93b8e881fd61947f9a7e22035381d3864cf13a4bbf67 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.71/kotlin-scripting-compiler-embeddable-1.3.71.pom
+b53a20c3b3cbd6c46754dcec681f0613c8e32ecda30308c27a3c0f13a6cc45ee | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.71/kotlin-scripting-compiler-impl-embeddable-1.3.71.jar
+8491bd3f536685032bb7bfb8e40bac13b3286b57648582d65c348e8977764165 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.71/kotlin-scripting-compiler-impl-embeddable-1.3.71.pom
+e67e0eaf0d532e4d312947ac4cf02135ea44aee646b32273707dc0c4646a3662 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.71/kotlin-scripting-jvm-1.3.71.jar
+781be9412e564dfbc31345b21959989012e3dbea2686795725b875e43eac5ce0 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.71/kotlin-scripting-jvm-1.3.71.pom
+ec403b5a429113adc0fa96e6c9367ceeaa6294b3e6e8b8a3d65eef7224d1ccea | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.71/kotlin-script-runtime-1.3.71.jar
+04deba2875d68ac3f88d06dee97ab5c084698812a47415a1b0b88b6fde6b6c66 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.71/kotlin-script-runtime-1.3.71.pom
+e51e512619a7e7650a30eb4eb3e9c03e6909c7b5e3c026404e076254c098b932 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar
+dbe5babcd8d43e9b08c2845680b53fc1bb3e051c4805802ddd0ed3e8e2c50a84 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom
+5ace22b102a96425e4ac44e0558b927f3857b56a33cbc289cf1b70aee645e6a7 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotlin-stdlib-1.3.71.jar
+ff03e9989faa2d40fa4a9098aaad71e247f27ea4d24b0754da642eb0924bd8c5 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotlin-stdlib-1.3.71.pom
+3856a7349ebacd6d1be6802b2fed9c4dc2c5a564ea92b6b945ac988243d4b16b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.72/kotlin-stdlib-1.3.72.jar
+4f0d574a969ea93c45628a163e1ed3ffabb4584278d72c647ec124f8c8109481 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.72/kotlin-stdlib-1.3.72.pom
+a2e7f341cf3047b5f00a1917ef777d323cdab2a57377468b8ed62aa31469cf7f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar
+e22db009bb1a61636d9425635989736db5e3fca494809abf244468dc474cfc04 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom
+76162bfcaa756897fd3f631019353e13b128df2318cdad5baecb7e7d428a28e3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.70/kotlin-stdlib-common-1.3.70.pom
+974f8a9b7bfce3d730a86efe0eab219a72621e8530f91e30c89f400ba98092ec | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.71/kotlin-stdlib-common-1.3.71.jar
+93f5cb50148dee7da746ed487e6278ee8d94da9a99b670f9f5248456c2f66341 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.71/kotlin-stdlib-common-1.3.71.pom
+5e7d1552863e480c1628b1cc39ce230ef829f5b7230106215a05acda5172203a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.72/kotlin-stdlib-common-1.3.72.jar
+24781edf5b0934804930dcafc8911b9e710d146239a82699889132e7b37be9dc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.72/kotlin-stdlib-common-1.3.72.pom
+11f4a57e3e7d81f3f152d5dcefe39bd77614b5a94125ff3b11526b0a19ac3989 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar
+c416080aeabdb9118a08ee78c28e2856038cd85858422a71f7c46bf276f667a7 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom
+b046a5ef54c7006db852e48e547aaff525a9e7a0a5909ffe5fe2c966c1a3a72e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.71/kotlin-stdlib-jdk7-1.3.71.jar
+7163f88887d050f76f86ad2304f84a9d79c39a96178bf02e4524bdeacc5bb149 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.71/kotlin-stdlib-jdk7-1.3.71.pom
+40566c0c08d414b9413ba556ff7f8a0b04b98b9f0f424d122dd2088510efccc4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.72/kotlin-stdlib-jdk7-1.3.72.jar
+9d5a13d9abc33445e1366d258af0a77e42f01945acef7c0917b9d539854e2fce | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.72/kotlin-stdlib-jdk7-1.3.72.pom
+3839ba7deb798375da1807bc469d1cf315db7a6275599f733184374772ec3b21 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar
+e30187e5720ca640b8e68686f20dd0250dcef0193d56e5569c3c4a61277312b6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom
+133da70cfc07b56094282eac5c59bccd59f167ee2ead22e5282876d8bc10bf95 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.72/kotlin-stdlib-jdk8-1.3.72.jar
+a6d50f0321bdb52838c99136930c8dcc78c3074a592d526862ec01be91fa622b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.72/kotlin-stdlib-jdk8-1.3.72.pom
+ab355888358a25478591aafe2cab2dd0b2e44af323a0acc3fd03581b24712430 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.41/kotlin-stdlib-jre7-1.2.41.jar
+a5e970ffd412599c8159068e670356509193e3238dddf20273ed6a8fb7b09de2 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.41/kotlin-stdlib-jre7-1.2.41.pom
+1b8355ce90079352de296f3f0b175473e7cbbde34d7338b92e4a80c633baab96 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.41/kotlin-stdlib-jre8-1.2.41.jar
+f6837401cbd13a8a31f126a9e22430ab9861602d91a4c310a47805453690f76d | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.41/kotlin-stdlib-jre8-1.2.41.pom
+71cdc094af3463af5773122941819ce11951e8550c499938bb79a04b3d5ee842 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.71/kotlin-util-io-1.3.71.jar
+ab2b2bd3304dcd40562a2930c53002b1e2d80fb21d0d9cc7d6448a83b9ae6b0b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.71/kotlin-util-io-1.3.71.pom
+51f7f966cd071ff412df49849bdd0a6a651f800c8816defaa29fcd106eedcdac | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-klib/1.3.71/kotlin-util-klib-1.3.71.jar
+fae43f08052e63bf49cbcda0ade70c05381c4093521e20f31dd564947c1b7105 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-klib/1.3.71/kotlin-util-klib-1.3.71.pom
+fa64623d47d5f03553b4b9dc7902d30943c65c334487029681a03045fb13172c | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-android/1.3.5/kotlinx-coroutines-android-1.3.5.pom
+7177ed4629704537e0252537629886f5409526ecd041d8d8e308e20624b14394 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.jar
+6f7523ea8a56d7f12d11a004cfe5a4577bfba3ed6c84cc5ac48b72d54975552c | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.pom
+f4a306487c17b8cdca8d3e5da50369a2e5ac7c665200516d427726dff5a56f92 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.5/kotlinx-coroutines-core-1.3.5.pom
+1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.jar
+5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
+95b05d9590af4154c6513b9c5dc1fb2e55b539972ba0a9ef28e9a0c01d83ad77 | https://jcenter.bintray.com/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar
+0a84c20cf71f6a3d21fe226b0d588332fc7ae3e90cb583c60a483317eb9f3644 | https://jcenter.bintray.com/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.pom
+b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf | https://jcenter.bintray.com/org/ow2/asm/asm/7.0/asm-7.0.jar
+83f65b1083d5ce4f8ba7f9545cfe9ff17824589c9a7cc82c3a4695801e4f5f68 | https://jcenter.bintray.com/org/ow2/asm/asm/7.0/asm-7.0.pom
+e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474 | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/7.0/asm-analysis-7.0.jar
+c6b54477e9d5bae1e7addff2e24cbf92aaff2ff08fd6bc0596c3933c3fadc2cb | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/7.0/asm-analysis-7.0.pom
+fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d | https://jcenter.bintray.com/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.jar
+f4c697886cdb4a5b2472054a0b5e34371e9b48e620be40c3ed48e1f4b6d51eb4 | https://jcenter.bintray.com/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.pom
+cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c | https://jcenter.bintray.com/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.jar
+d39e7dd12f4ff535a0839d1949c39c7644355a4470220c94b76a5c168c57a068 | https://jcenter.bintray.com/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.pom
+75fbbca440ef463f41c2b0ab1a80abe67e910ac486da60a7863cbcb5bae7e145 | https://jcenter.bintray.com/org/ow2/asm/asm-util/7.0/asm-util-7.0.jar
+e07bce4bb55d5a06f4c10d912fc9dee8a9b9c04ec549bbb8db4f20db34706f75 | https://jcenter.bintray.com/org/ow2/asm/asm-util/7.0/asm-util-7.0.pom
+0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://jcenter.bintray.com/org/ow2/ow2/1.5/ow2-1.5.pom
+b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
+13009fb5ede3cf2be5a8d0f1602155aeaa0ce5ef5f9366892bd258d8d3d4d2b1 | https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar
+1e1beb22ca906209700122b5cacf6f2719324538c5b1e3c27bf91564c8d31dbd | https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.pom
+4bca00bc684d935cf3675d3437113d1284bb94412b6b9aea03194f946c719a9c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/47.0.0/concept-fetch-47.0.0.aar
+c2ec8bc73e7e1a86b53f1c8ac8e2f09eee5e31b6bdc291f31495e3080ab66261 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/47.0.0/concept-fetch-47.0.0.pom
+5df22d5e7864c593c0b78624304d3046514177cd819bada0ce5927ed22e38bdf | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/47.0.0/service-glean-47.0.0.aar
+c062918be5f021628bf9705898a9e7598ed340f5ec971033ab0ea239ee6efaeb | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/47.0.0/service-glean-47.0.0.pom
+c959adf0ae40a073b3db4e21c1f6a9a961bbb7d6cc33c569492e2268b8a473a1 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/47.0.0/support-base-47.0.0.aar
+0f47f76b38975b5407b212f1aa4dd1daabde311989ff934360afa529c1c77d92 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/47.0.0/support-base-47.0.0.pom
+2813838b7bb4d2973b3663f2aac08b36c3db9a372d266eb228fba98bfcb09017 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/47.0.0/support-ktx-47.0.0.aar
+0d72828ec6af2fe0b7021c2cada48204a47ccd6e47eeea35dd2b51c24df3b8ff | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/47.0.0/support-ktx-47.0.0.pom
+bd295b27f098eed0aadf2ebbf3daf2356c6ebe73c2cde49597bdf33414936699 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/47.0.0/support-utils-47.0.0.aar
+10543160bfa1790c2d98ba8e0de1230e0feea1926fd4859751c931e3bd5e1c34 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/47.0.0/support-utils-47.0.0.pom
+e24f78d36c64695407ace7b499472306161b1abf47b65c99ec790f321a6663e1 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradle/47.0.0/tooling-glean-gradle-47.0.0.jar
+6320746e6d914aa45d9f8e0de23bdbd81c8097999b3dd64796363ed878633600 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradle/47.0.0/tooling-glean-gradle-47.0.0.pom
+68f97a68faf84fa03cf3e1898042ffefe17b37c4c02df9e754fd2a47e6746196 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/31.1.1/glean-31.1.1.aar
+9d6e64de942f997293b5ed35337da9350798192b22d8928030f191174b9f77fa | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/31.1.1/glean-31.1.1.pom
+3c2868a395d588eef2a370e4cd889a3a71351cff8eb4dd557dee764bc9f6e90a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/31.1.1/glean-gradle-plugin-31.1.1.jar
+7517604c7643984718d421c85df395ae9f69f74c78ebd825930b4bceccf8196c | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/31.1.1/glean-gradle-plugin-31.1.1.pom
+470564ff0a452da1c96be4ca3a9cdeceaa2912537ee2a8def486f3b383d43f15 | https://plugins.gradle.org/m2/com/jetbrains/python/envs/com.jetbrains.python.envs.gradle.plugin/0.0.26/com.jetbrains.python.envs.gradle.plugin-0.0.26.pom
+6438812f927b505a4c4ef2703b45433a1b99e45334526bfed25e71e1a79abb14 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-python-envs/0.0.26/gradle-python-envs-0.0.26.jar
+317aa4c467a37d5fcab6657c326a4069ea8e8c6dda951ec2091ffb95c596a2a3 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-python-envs/0.0.26/gradle-python-envs-0.0.26.pom
+e436c86bdae38ac9e886675aa9e03da6a341a5fabe8b963d0c4a5ff5c24d9592 | https://plugins.gradle.org/m2/gradle/plugin/org/mozilla/rust-android-gradle/plugin/0.8.3/plugin-0.8.3.jar
+b2a23c355edaebd7c557cc6eb0b3abfafac06084cd96675baed0a2e65e0b14dd | https://plugins.gradle.org/m2/gradle/plugin/org/mozilla/rust-android-gradle/plugin/0.8.3/plugin-0.8.3.pom
+5daf821493ef25fb2f16e0b859e173520d1694660b61214358c6360cbb984d30 | https://plugins.gradle.org/m2/io/gitlab/arturbosch/detekt/io.gitlab.arturbosch.detekt.gradle.plugin/1.7.4/io.gitlab.arturbosch.detekt.gradle.plugin-1.7.4.pom
diff --git a/projects/application-services/mavenLocal.patch b/projects/application-services/mavenLocal.patch
new file mode 100644
index 0000000..f0d2793
--- /dev/null
+++ b/projects/application-services/mavenLocal.patch
@@ -0,0 +1,53 @@
+From 1eed35b66ea9d943d6ea648649b0012e132f3602 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk at torproject.org>
+Date: Thu, 2 Jul 2020 20:34:23 +0000
+Subject: [PATCH] Use local maven repository for gradle dependencies
+
+
+diff --git a/build.gradle b/build.gradle
+index 4715a7cd..1e71ca04 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -17,6 +17,7 @@ buildscript {
+     ]
+ 
+     repositories {
++        mavenLocal()
+         google()
+         jcenter()
+         maven {
+@@ -57,6 +58,7 @@ apply plugin: 'de.undercouch.download'
+ 
+ allprojects {
+     repositories {
++        mavenLocal()
+         google()
+         jcenter()
+         maven {
+diff --git a/settings.gradle b/settings.gradle
+index 2349f829..f0ad1ef9 100644
+--- a/settings.gradle
++++ b/settings.gradle
+@@ -1,6 +1,11 @@
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++pluginManagement {
++  repositories {
++    mavenLocal()
++  }
++}
+ 
+ import org.yaml.snakeyaml.Yaml
+ buildscript {
+@@ -8,6 +13,7 @@ buildscript {
+         classpath 'org.yaml:snakeyaml:1.23'
+     }
+     repositories {
++        mavenLocal()
+         jcenter()
+     }
+ }
+-- 
+2.27.0
+
diff --git a/projects/application-services/no-git.patch b/projects/application-services/no-git.patch
new file mode 100644
index 0000000..a676f70
--- /dev/null
+++ b/projects/application-services/no-git.patch
@@ -0,0 +1,23 @@
+From 88fdf4a5e0510fe430e81b652621705d3de47746 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk at torproject.org>
+Date: Mon, 6 Jul 2020 17:04:47 +0000
+Subject: [PATCH] no git
+
+
+diff --git a/build.gradle b/build.gradle
+index 6b16a91d..af8a3b6e 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -79,8 +79,7 @@ import com.sun.jna.Platform as DefaultPlatform
+ //
+ // Note we pass the path to the git-dir so that this still works when
+ // used as a dependency substitution from e.g. android-components.
+-ext.libsGitSha = "git --git-dir=${rootProject.rootDir}/.git diff --name-only main -- :/libs".execute().text.allWhitespace ?
+-                 "git --git-dir=${rootProject.rootDir}/.git rev-parse HEAD:libs".execute().text.trim() : null
++ext.libsGitSha = null
+ 
+ // Use in-tree libs from the source directory in CI or if the git SHA is unset; otherwise use
+ // downloaded libs.
+-- 
+2.27.0
+
diff --git a/projects/application-services/target.patch b/projects/application-services/target.patch
new file mode 100644
index 0000000..0468ec0
--- /dev/null
+++ b/projects/application-services/target.patch
@@ -0,0 +1,21 @@
+From 9593dc8d9589f0ed94c07d77eab6845b02b484de Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk at torproject.org>
+Date: Fri, 7 Aug 2020 20:54:31 +0000
+Subject: [PATCH] No unit test running currently
+
+
+diff --git a/build.gradle b/build.gradle
+index 58a4ddae..95bc8445 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -198,7 +198,6 @@ switch (DefaultPlatform.RESOURCE_PREFIX) {
+         ext.rustTargets += 'darwin'
+         break
+     case 'linux-x86-64':
+-        ext.rustTargets += 'linux-x86-64'
+         break
+     case 'win32-x86-64':
+         ext.rustTargets += 'win32-x86-64-gnu'
+-- 
+2.28.0.rc1
+
diff --git a/projects/fenix-rust/config b/projects/fenix-rust/config
index df0ba86..7dc240a 100644
--- a/projects/fenix-rust/config
+++ b/projects/fenix-rust/config
@@ -24,7 +24,7 @@ targets:
 
   android-armv7:
     var:
-      configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=thumbv7neon-linux-androideabi --set=target.thumbv7neon-linux-androideabi.cc=[% c("var/CC") %] --set=target.thumbv7neon-linux-androideabi.ar=[% c("var/cross_prefix") %]-ar
+      configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].cc=[% c("var/CC") %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].ar=[% c("var/cross_prefix") %]-ar
 
   linux:
     var:





More information about the tor-commits mailing list