From 76ee7753ab42505bddf7770a3aa9072f659fc6de Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Thu, 20 Aug 2015 19:29:38 -0700 Subject: [PATCH 01/25] Rollback theme changes from commit b4bbf96aea This was causing problems for many samples because we didn't have appcompat dependencies in place. Also needs more testing to ensure we don't have any samples with minSdk < 7 or other incompatibilities. Change-Id: I385018b2190a2503734acb62ea8ceff8efce2935 --- templates/base/_MODULE_/build.gradle.ftl | 3 --- .../_MODULE_/src/template/res/values-v11/template-styles.xml | 2 +- .../src/template/res/values-v21/base-template-styles.xml.ftl | 2 +- .../base/_MODULE_/src/template/res/values/template-styles.xml | 2 +- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/templates/base/_MODULE_/build.gradle.ftl b/templates/base/_MODULE_/build.gradle.ftl index 617861a8..c30f7eed 100644 --- a/templates/base/_MODULE_/build.gradle.ftl +++ b/templates/base/_MODULE_/build.gradle.ftl @@ -38,17 +38,14 @@ dependencies { <#if !sample.auto_add_support_lib?has_content || sample.auto_add_support_lib == "true"> <#if sample.minSdk?matches(r'^\d+$') && sample.minSdk?number < 7> compile "com.android.support:support-v4:23.0.0" - compile "com.android.support:appcompat-v7:23.0.0" <#elseif sample.minSdk?matches(r'^\d+$') && sample.minSdk?number < 13> compile "com.android.support:support-v4:23.0.0" compile "com.android.support:gridlayout-v7:23.0.0" compile "com.android.support:cardview-v7:23.0.0" - compile "com.android.support:appcompat-v7:23.0.0" <#else> compile "com.android.support:support-v4:23.0.0" compile "com.android.support:support-v13:23.0.0" compile "com.android.support:cardview-v7:23.0.0" - compile "com.android.support:appcompat-v7:23.0.0" <#list sample.dependency as dep> diff --git a/templates/base/_MODULE_/src/template/res/values-v11/template-styles.xml b/templates/base/_MODULE_/src/template/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/templates/base/_MODULE_/src/template/res/values-v11/template-styles.xml +++ b/templates/base/_MODULE_/src/template/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/ActionBarCompat-Basic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActionBarCompat-Basic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActionBarCompat-Basic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActionBarCompat-Basic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ActionBarCompat-Styled/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActionBarCompat-Styled/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActionBarCompat-Styled/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActionBarCompat-Styled/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ActivityInstrumentation/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActivityInstrumentation/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActivityInstrumentation/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActivityInstrumentation/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ActivitySceneTransitionBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ActivitySceneTransitionBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ActivitySceneTransitionBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AdvancedImmersiveMode/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AdvancedImmersiveMode/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AdvancedImmersiveMode/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AdvancedImmersiveMode/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AgendaData/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AgendaData/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AgendaData/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AgendaData/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AppRestrictionEnforcer/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AppRestrictionEnforcer/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AppRestrictionEnforcer/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AppRestrictionEnforcer/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AppRestrictionSchema/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AppRestrictionSchema/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AppRestrictionSchema/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AppRestrictionSchema/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AppRestrictions/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AppRestrictions/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AppRestrictions/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AppRestrictions/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AppUsageStatistics/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AppUsageStatistics/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AppUsageStatistics/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AppUsageStatistics/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/AutoBackupForApps/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/AutoBackupForApps/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/AutoBackupForApps/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/AutoBackupForApps/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicAccessibility/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicAccessibility/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicAccessibility/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicAccessibility/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicContactables/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/BasicContactables/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/BasicContactables/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/BasicContactables/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/BasicContactables/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicContactables/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicContactables/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicContactables/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicImmersiveMode/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/BasicImmersiveMode/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/BasicImmersiveMode/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/BasicImmersiveMode/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicManagedProfile/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicMediaDecoder/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicMediaDecoder/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicMediaDecoder/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicMediaDecoder/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicMediaRouter/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicMediaRouter/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicMediaRouter/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicMediaRouter/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicMultitouch/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicMultitouch/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicMultitouch/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicMultitouch/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicNetworking/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicNetworking/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicNetworking/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicNetworking/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicNotifications/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicNotifications/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicNotifications/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicNotifications/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicRenderScript/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicRenderScript/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicRenderScript/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicRenderScript/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicSyncAdapter/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicSyncAdapter/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicSyncAdapter/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicSyncAdapter/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BasicTransition/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BasicTransition/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BasicTransition/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BasicTransition/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BatchStepSensor/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BatchStepSensor/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BatchStepSensor/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BatchStepSensor/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BluetoothAdvertisements/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/BluetoothAdvertisements/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/BluetoothAdvertisements/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/BluetoothAdvertisements/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/BluetoothChat/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BluetoothChat/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BluetoothChat/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BluetoothChat/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BluetoothLeGatt/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BluetoothLeGatt/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BluetoothLeGatt/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BluetoothLeGatt/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/BorderlessButtons/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/BorderlessButtons/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/BorderlessButtons/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/BorderlessButtons/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Camera2Video/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Camera2Video/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Camera2Video/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Camera2Video/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/CardEmulation/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/CardEmulation/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/CardEmulation/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/CardEmulation/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/CardReader/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/CardReader/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/CardReader/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/CardReader/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/CardView/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/CardView/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/CardView/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/CardView/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ClippingBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ClippingBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ClippingBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ClippingBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ConfirmCredential/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ConfirmCredential/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ConfirmCredential/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ConfirmCredential/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/CustomChoiceList/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/CustomChoiceList/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/CustomChoiceList/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/CustomChoiceList/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/CustomNotifications/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/CustomNotifications/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/CustomNotifications/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/CustomNotifications/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/CustomTransition/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/CustomTransition/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/CustomTransition/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/CustomTransition/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DataLayer/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DataLayer/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DataLayer/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DataLayer/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DelayedConfirmation/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DelayedConfirmation/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DelayedConfirmation/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DelayedConfirmation/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DeviceOwner/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DeviceOwner/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DeviceOwner/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DeviceOwner/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DirectorySelection/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DirectorySelection/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DirectorySelection/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DirectorySelection/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DisplayingBitmaps/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DisplayingBitmaps/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DisplayingBitmaps/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DisplayingBitmaps/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DocumentCentricApps/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DocumentCentricApps/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DocumentCentricApps/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DocumentCentricApps/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/DrawableTinting/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/DrawableTinting/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/DrawableTinting/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/DrawableTinting/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/DrawableTinting/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DrawableTinting/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/DrawableTinting/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/DrawableTinting/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ElevationBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ElevationBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ElevationBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ElevationBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ElevationDrag/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ElevationDrag/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ElevationDrag/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ElevationDrag/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ElizaChat/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ElizaChat/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ElizaChat/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ElizaChat/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/FindMyPhone/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/FindMyPhone/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/FindMyPhone/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/FindMyPhone/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/FloatingActionButtonBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/FloatingActionButtonBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/FloatingActionButtonBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/FloatingActionButtonBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Geofencing/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Geofencing/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Geofencing/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Geofencing/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/HdrViewfinder/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/HdrViewfinder/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/HdrViewfinder/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/HdrViewfinder/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/HorizontalPaging/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/HorizontalPaging/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/HorizontalPaging/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/HorizontalPaging/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Interpolator/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/Interpolator/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/Interpolator/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/Interpolator/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/Interpolator/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Interpolator/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Interpolator/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Interpolator/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/JobScheduler/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/JobScheduler/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/JobScheduler/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/JobScheduler/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/LNotifications/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/LNotifications/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/LNotifications/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/LNotifications/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/MediaEffects/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/MediaEffects/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/MediaEffects/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/MediaEffects/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/MediaRecorder/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/MediaRecorder/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/MediaRecorder/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/MediaRecorder/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/MediaRouter/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/MediaRouter/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/MediaRouter/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/MediaRouter/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/NetworkConnect/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/NetworkConnect/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/NetworkConnect/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/NetworkConnect/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/NetworkConnect/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/NetworkConnect/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/NetworkConnect/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/NetworkConnect/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/NfcProvisioning/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/NfcProvisioning/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/NfcProvisioning/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/NfcProvisioning/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Notifications/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Notifications/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Notifications/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Notifications/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/PdfRendererBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/PdfRendererBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/PdfRendererBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/PdfRendererBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/PermissionRequest/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/PermissionRequest/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/PermissionRequest/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/PermissionRequest/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/Quiz/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/Quiz/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/Quiz/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/Quiz/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/RecipeAssistant/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/RecipeAssistant/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/RecipeAssistant/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/RecipeAssistant/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/RecyclerView/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/RecyclerView/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/RecyclerView/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/RecyclerView/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/RenderScriptIntrinsic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/RenderScriptIntrinsic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/RenderScriptIntrinsic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/RenderScriptIntrinsic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/RevealEffectBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/RuntimePermissions/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/RuntimePermissions/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/RuntimePermissions/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/RuntimePermissions/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/ScreenCapture/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/ScreenCapture/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/ScreenCapture/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/ScreenCapture/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/SlidingTabsBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/SlidingTabsBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/SlidingTabsBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/SlidingTabsBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/SlidingTabsColors/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/SlidingTabsColors/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/SlidingTabsColors/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/SlidingTabsColors/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/SpeedTracker/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/SpeedTracker/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/SpeedTracker/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/SpeedTracker/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/StorageProvider/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/StorageProvider/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/StorageProvider/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/StorageProvider/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/SwipeRefreshListFragment/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/SwipeRefreshListFragment/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/SwipeRefreshListFragment/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/SwipeRefreshListFragment/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/SwipeRefreshMultipleViews/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/SwipeRefreshMultipleViews/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/SwipeRefreshMultipleViews/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/SwipeRefreshMultipleViews/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle b/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle index a8515ab4..7ade5a4c 100644 --- a/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle +++ b/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:1.2.0' + classpath 'com.android.tools.build:gradle:1.2.3' } } diff --git a/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle b/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle index 360b4db7..72354be4 100644 --- a/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle +++ b/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:1.2.0' + classpath 'com.android.tools.build:gradle:1.2.3' } } diff --git a/prebuilts/gradle/TextLinkify/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/TextLinkify/Application/src/main/res/values-v11/template-styles.xml index f261bb5c..8c1ea66f 100644 --- a/prebuilts/gradle/TextLinkify/Application/src/main/res/values-v11/template-styles.xml +++ b/prebuilts/gradle/TextLinkify/Application/src/main/res/values-v11/template-styles.xml @@ -17,6 +17,6 @@ - diff --git a/prebuilts/gradle/TextLinkify/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/TextLinkify/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/TextLinkify/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/TextLinkify/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/TextSwitcher/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/TextSwitcher/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/TextSwitcher/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/TextSwitcher/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/WatchFace/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/WatchFace/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/WatchFace/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/WatchFace/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - diff --git a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/values/template-styles.xml index 74086d29..6e7d593d 100644 --- a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/values/template-styles.xml +++ b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/values/template-styles.xml @@ -18,7 +18,7 @@ - + + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values-v11/template-styles.xml new file mode 100644 index 00000000..8c1ea66f --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values-v11/template-styles.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/base-strings.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/base-strings.xml new file mode 100644 index 00000000..b3f15fbb --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/base-strings.xml @@ -0,0 +1,30 @@ + + + + + DirectShare + + + + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/colors.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/colors.xml new file mode 100644 index 00000000..c5a6a3db --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/colors.xml @@ -0,0 +1,26 @@ + + + + #3F51B5 + #303F9F + #C5CAE9 + #00BCD4 + #212121 + #727272 + #FFFFFF + #B6B6B6 + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/dimens.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/dimens.xml new file mode 100644 index 00000000..2d05f5d3 --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/dimens.xml @@ -0,0 +1,20 @@ + + + + 24dp + 8dp + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/strings.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/strings.xml new file mode 100644 index 00000000..ddc858a9 --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/strings.xml @@ -0,0 +1,39 @@ + + + + + + + + This app demonstrates how to implement Direct Share. Use some other app and share a text. + For your convenience, you can also use the input below to share the text. + + Hello! + Share + Send a message via: + + + + Sending a message + To: + Send + Body: + Edit your message. + Sent a message \"%1$s\" to %2$s. + Text to share + + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/styles.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/styles.xml new file mode 100644 index 00000000..ae312cc4 --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/styles.xml @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/template-dimens.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/template-dimens.xml new file mode 100644 index 00000000..39e710b5 --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/template-dimens.xml @@ -0,0 +1,32 @@ + + + + + + + 4dp + 8dp + 16dp + 32dp + 64dp + + + + @dimen/margin_medium + @dimen/margin_medium + + diff --git a/prebuilts/gradle/DirectShare/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/DirectShare/Application/src/main/res/values/template-styles.xml new file mode 100644 index 00000000..6e7d593d --- /dev/null +++ b/prebuilts/gradle/DirectShare/Application/src/main/res/values/template-styles.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + diff --git a/prebuilts/gradle/DirectShare/CONTRIBUTING.md b/prebuilts/gradle/DirectShare/CONTRIBUTING.md new file mode 100644 index 00000000..faa8b5c6 --- /dev/null +++ b/prebuilts/gradle/DirectShare/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# How to become a contributor and submit your own code + +## Contributor License Agreements + +We'd love to accept your sample apps and patches! Before we can take them, we +have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement (CLA). + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual CLA] + (https://cla.developers.google.com). + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA] + (https://cla.developers.google.com). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The repo owner will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Ensure that your code adheres to the existing style in the sample to which + you are contributing. Refer to the + [Android Code Style Guide] + (https://source.android.com/source/code-style.html) for the + recommended coding standards for this organization. +1. Ensure that your code has an appropriate set of unit tests which all pass. +1. Submit a pull request. + diff --git a/prebuilts/gradle/DirectShare/LICENSE b/prebuilts/gradle/DirectShare/LICENSE new file mode 100644 index 00000000..4f229463 --- /dev/null +++ b/prebuilts/gradle/DirectShare/LICENSE @@ -0,0 +1,647 @@ +Apache License +-------------- + + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +All image and audio files (including *.png, *.jpg, *.svg, *.mp3, *.wav +and *.ogg) are licensed under the CC-BY-NC license. All other files are +licensed under the Apache 2 license. + +CC-BY-NC License +---------------- + +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the "Licensor." Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/prebuilts/gradle/DirectShare/README.md b/prebuilts/gradle/DirectShare/README.md new file mode 100644 index 00000000..4c65b2d4 --- /dev/null +++ b/prebuilts/gradle/DirectShare/README.md @@ -0,0 +1,76 @@ + +Android DirectShare Sample +=================================== + +Sample demonstrating how to show some options directly in the list of share intent candidates. + +Introduction +------------ + +[Direct Share][1] is a feature that allows apps to show their internal options directly in the +system Intent chooser dialog. This sample is a dummy messaging app, and just like any other +messaging apps, it receives intents for sharing a plain text. When a user shares some text from some +other app, this sample app will be listed as an option. Using the Direct Share feature, this app +also shows some of contacts directly in the chooser dialog. + +To enable Direct Share, apps need to implement a Service extending +[ChooserTargetService][2]. Override the method [onGetChooserTargets][3] and return a list of Direct +Share options. + +In your AndroidManifest.xml, add a meta-data tag in your Activity that receives the Intent. Specify +android:name as android.service.chooser.chooser_target_service, and point the android:value to the +Service. + +[1]: https://developer.android.com/reference/android/service/chooser/package-summary.html +[2]: https://developer.android.com/reference/android/service/chooser/ChooserTargetService.html +[3]: https://developer.android.com/reference/android/service/chooser/ChooserTargetService.html#onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter) + +Pre-requisites +-------------- + +- Android SDK v23 +- Android Build Tools v23.0.0 +- Android Support Repository + +Screenshots +------------- + +Screenshot Screenshot Screenshot + +Getting Started +--------------- + +This sample uses the Gradle build system. To build this project, use the +"gradlew build" command or use "Import Project" in Android Studio. + +Support +------- + +- Google+ Community: https://plus.google.com/communities/105153134372062985968 +- Stack Overflow: http://stackoverflow.com/questions/tagged/android + +If you've found an error in this sample, please file an issue: +https://github.com/googlesamples/android-DirectShare + +Patches are encouraged, and may be submitted by forking this project and +submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details. + +License +------- + +Copyright 2014 The Android Open Source Project, Inc. + +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. diff --git a/prebuilts/gradle/DirectShare/build.gradle b/prebuilts/gradle/DirectShare/build.gradle new file mode 100644 index 00000000..1901ba93 --- /dev/null +++ b/prebuilts/gradle/DirectShare/build.gradle @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmWIWW@h1HVBp|j;I(dXVqjokU;+^g3=EtM3=F=mA&$D9es22A45$h(?|2~S$H2gl z!N9;Ef~?Tj(a+P(H8@1i*X^_KnbSVrx_TFRy>+$DojJcb$l!|cgQuU)=$`OA>w8w) zQ-_i3Ra?rmCrhF`nSK-Z^|pBjqFp<|@cUTj*8SmV- z&*YWH?A5vwYAvm$UE1ngx|Oe8V!e;o*RSqja4Irz+tn*}&)eU_TI%{Cjk;YSM)@3{ z?I)B-3fR^xmv6bC#N*^9!6x6{dziOWSGE={l)3htYY<~%U?^Z=U~nPe$KcB1lGNOQ zqWpr?qLR$i;(((3ib}`Ql8n^6lFa19lKdh_AS?~8&lhqOsO6q=_;JR^kPX+oa|V@>`2QDwX15&I!`i5TNLkAuI`?azx4kNH(~n*`BN6$A)J$v9{t^DY@L7a z%7j5;N1JLASj zKIcR~rRJUT-%^72eECvglpf&ey>Y@prK>ZPyAwAq4%vR?s(YO@XXb->twJ%on(Yrr zhAUgMof3QZxbfYG3kQ_j?*5n7bAGq|lxD)$JDdh7?Jo1#bIY%^E3SQ?c_sJ2hNoB5 zgQk3GDqH%ayyM}?o+I^3(v~NyIJIu&n;xoZ+38_%^stn3om=DDx?~XzC)V)Ai1O z=FYV^+BA1dZ}5_R4-Rpj@eh6~CH(Z$;v$x`g4~#Qnm2DmaL-<=YVIYGeeoXGI{wVn zhyO_L@VTa@->al|@JQ&U6U*ut1K`CFDCa(Z6H&a1fq~&R0|SE+_H^e7%UqCD<=T6Y z>yQCY+y65!pNRE@sDoFLB$A%)G2$mDtT@mp{-hWIa`q;`E5^E z*BWkI@x8@y%b&=zubmG?%$~BeO+9GCsSk?;+DxSmeMr{d>2>qllmYA{KKx*SqxXjW0Rx57aZG`t-Jks}?I81495e1A{SkpSo5g=ad#_mZiF7=A=3% zC#Mz{`zGckrl&$P)YLHV0+CP=Tm6}5^ktbCnV1>d8jLtwI+d6vceG7(NDw;F?!dq~ z*Hb<7(o4DODxpXJ+v`8>-gwH^d#RU@f!IVXZ|~EsdYa~WYl;>=Z7NEh`l#~m zv#-CuTW`_!&!F%&i<>| zo%}kjey)S(C8N!KSyppbO}xzF)MvLO(sH?_w!$oyX(>8~GmK=<%7yW2e!2d7*}FHQ z8eOKQp`~0uCWYzqdI#@Xx%Ej~mC0`Bw}vK?=e<_DEzf%WX^!}>IgE4T9%-I_*Z=)? z*7}7<-E&MQUwrf9-{(x_=~vsgy4}4XbtzMKc5ayO*7(hwSJv-hYHXV^y*=;f(zv>i6=TrLyb4tT`KnTwk{D%IJNEa1B2tvM^YkQIyQ3oUtaR~ zOGDPISrbc@4SF4KaV(0rJS=%JOVWM2Po!(ET1i;0naj*=vr;>F|1*avXl$(Tn|5o} z&1~Mv)(XVyK}PV(?I|BnbSQlSqE&dDa&^=4*q+yro82=tZZp@rhL}*-@aE* z-ZaTv_uk`-{-=A@S(Be{?^=CelVa%>cWirg3 zRx)dQ;QLBfS?ycLKXA_4`_Qq@xM91Ab!@4r!9b>q+LpJG4t zPF;TyG0!96a#PK`ryiFIGd6^8->mmz^5#uh@@K7X3EZ5!eBYaZ&3O{LmY*>cNs~Ic zQhiUM*5utbk4no!6JlkmO`i5```TS~nt!{bgEgCn$hB1(*%?u7EPb+*W`-V_^)75> zP*eVklTmKxF7~ZD$B_QiY3sW=PJ3@CB-rq&CFf}`SN}fi=;ee%+tMXZp#+2U#4S_Re}8HgDI8 z;1l_oUoBj|-qO}sv2I7xq0{R=nq5D0yj1zRSIdhk&bikEgub5HAX|9g?n#3~cTYO7 z-nstC->s1+xL{g6lZZoz&w=Y(OL<&{Ka}?>AIL4>S-8nyx}iwFbLPs2Zza6?x?B8J zy4EF~)Z6dDqI@v_;tA)S`+pUS#01#?V%e=0a4R%;TZznRp?w|sJgJ?FIDDt?zO}u+ z=R$?+k>jmut>WvFo-VyDe98YT%c;WdHr>-X|8Bl+-2vS-&;L#P{WNmQiR!>tb=-I5VpHM|%nIN1>1s|M@Aas4);H(g zy|eU2yKsfT-5ZT|UhE$YjBXqa+&?>cmz?+q4rOzLGNJgQu=@_m`;IZzv^V$M@0x$X zjm7iNq22M7-=*LGdvI4*=1{yvPyGa;)(pi(VH=xvO_E=Ja@yP-=T=zHxSr?pKyhC4 zmH4wSc55h0FS~L0Zr+=TZyxG3T5Vb;R4;r}E-j+jzB6B6GNSwbM-4e=!HrEdvo76t z|GVV$jpLpb|E@hbS=)7=Y5JY}3zqznTEsN{fp_e(8}3Ji#I7h;TE;RR*L=I^k4e7Y zq!;OTTu!ar+;X3pGnpk0flkq# zvrl>Uyw#>~C{8c6=puT^WZ-g3jJivG6@s0OC z@3CK(WD`5;pmTQP;=e1+bzYhNlifN&U+d*%(;MZ`S__ zoIzV8-88LcRO)^_dSv>H^UMoRWQcz#>8Wh`H|ryFN1$J?Lhck}(w@evg%bn`;ujhTXem?K!{{KHe>oc@} z+}u{yv!cS;S=P;D&ao9;=B7VXKliYSCVw)}D;L&M3-wu9;eA-GhovxVouTJB&!V{I zzLyGm85PpTm);~P-#fU}E#}znNqf}wt@W3_&o(g7_KZ0!(-JZ---XFjbXk`+7ZdZc z)LqS7uMW#z=Bjc2HYZ?1>X|J^T=Z6)|5&^m9)GT!4;o-18`u6A}!(>uf4 zo-RUthSP;6vK~K?(jwfcn;JWDUQv!*OmK?7wAfL@q^+@cg z*Js2<-e?pWyy7}ukej*Na`U`(J+pc~^@y5?nNFLrLB~mzDQX$ZhPkSbcokCBBo9Ab z8@ASG8P}o}Ci>bhf}Rxy{yw!{b_Lt&S;ijiyoSb!l6mJA_CH)M{&{9?mZA0YBd(0= z?)qn}jLTe=Y|rs`TW__W^i7rbL4~32TsgC3w|)q^@TnzilANxrnUU2x&-=Htzf5Vm z)_dUmGo9-`-9m}psbT8HX<2?|H~%Fb-#B+$>yiz(g0>mDN8WZTz5Pt`G^Z@zrb#=j zigxHRM+Iy!-OYD+>Aiyd^!6@SS??bX$9Zd3JW`gGf4r>AzodpM?W3gK^+J~T6+eQG z>z@3{6~Fq2+wtu`{EmPB;dnGx*8Y(?>)iAICP;du{@1?Xz41wbVfWl~4~r%qUHOK~ zvLNLXS6Oa{SN!HHAC3o?g;`C07;)t-XSlhyyXfkUk}XdAe+126CSUTFsascgUDy)0 z^j;1xi|3R2_A1Cv7Oy`od{03>>yBT#P0hSXL1&LkKalC>40noJ;no zeC^DtlQ~(do*C_1GI6dzcge%edzQ-deO*|-#pKt*B@d4r**a&#qeX6f(u=onP5*eD z`G$G^DXZVYeRChn2%Q}4FpLd=7lh|yY$;l{P<>um8+?>s9b0V(7w=9kZv21C=u6%FJ1sT+ z(=M8AWUEc%oxNi3&P;E)=$A>+a=x~!Z~R-4d7RnAzvTJG&x%nZUw%97YrnDdfu7&V z*bbd~{}c1wv*pfzWp`?{DZ78PG2p=TYMCSLL3x80-Lb$3f|K{@-{ zo~H)(d-DWeD1Q-Ju->lfRWj!!3+MRb9M+D<3-=r{?YRHK{FGAb2W_^3rlUL0ykG0M z$E$w5D0jq#s=2!-$4zYCVg2-N+kdo9qqbizrxZH_Lm?jngBtcSGa#`f!?CzHH8%-f zQcex~SuGtdYMbmWm1^TDb2RdemE*?AZqssBX9{ch$!^e94cnM=J^B^PtG>0JHY-gY zpPO_eKqHnZb$Kc;i^gw0y)8iT}zF{ynqrcdPI1e13Ok{r~6p ztQpQdh!^Txw1Yi;qn6|0(oVPY1;LM&={P-4ZC1}#nm1Kp;R$WE{xupo?_@cZ@;-d> z&AaBB<6+U^@BM?v-n#qwq91EI&U;qK&F_E2%BlZIb>5yci=&nH9r!D*Dsx=>PL1c0 z>8>@ZUF*GG9KF8ihm~}F^X&Xh=ff+%M2Xyg^zU|Hje6I6uOD*z&RgWUe{9yMJ7JyQ zy+irIftHPnrWnmioqcOla(0`Z!?~BcvihcqoDR}ubk{rElcKiC`}5|TGnal`SyPr- zmZxT3>FJR3XjhT5=X8<1Gv=wXSAE>mus69a?`Bt?zJ{v1=!X2Nv{xVB+=$7&zHiY= z5wBN!md<+YHdEKeeAdK$E2f4N30C@CHvQeyaLwg@Q^SQBfeM@d3eQ^SXZ1Ao>YU(d z-de}gKX7-g{CFpx=jLjuh3{q>oJqRHJ#}BER(AHPne)QlTotqmovGu?Rid!b*u?#I ze8}6mH9D$IHL>5StlpZgeKCXU_PqDi=U1rTceN`aLgp3Ad4|1_lid(pK`EkWz!yEnBB#cU~YC1)<}NLtG^q2qAP!#U=a1_}WW z{_Rb@x@pRySr@xjrE*(5lZ<@Tm7Mj>&FcP-8E+1smNw(w^7PdThQ_|i6$i7+YF%SL zYj#ECahzJaa$2u+R@vRK($lF{OLntxx^zrXzV+ux^_H(cPLy8tJAeL3nWd?*RsOUr zt9#qjo@Y;~?C%Zqnl!s%-rbuk;u{2>Pcb_u)wgreC#BBX_8zv%_MXI;359a~oj)e_ z=+x;v4zBPzrZjKDM^2whv3Xx~9;;Wx9y1Di5oW$vqI64;qiO1&DY1@7~l`ps`mW;X!R|L4177#+>A9`zP%6 zWwkhPv8lXqMOvlA-_G_#l?^8Ebv`=^N^$SI<8hYHGjDNEjIocd*I?hrj4aFH0}Eo+a^A>#^vOfJOb@Nk<~JHOzK$tFP<(v7SS z0{eDdNta!kV*2y8+K*G`Y;q&EMSb&_W5zqFVedxn39NG#_^(_1rSf{0Ukyut(}+R&CyC;w?3ntZY`M0Dc93t~rH>qOQjoflhjRO?oTTKER@ZT+*(37Cq$S-+@O zV^3~%LVIpb`&#Q)>+`#E9zICgWPC?*<)Y-xWpnggR`^~F{Izkugl&_fm5bEtiW9cC zcCha%+Y-IQC3}geO}os~MXhCb4?H%>TDsS2?h^CR&mD}o9&0l}{n9S=-|Siz+gcxYD<1l^Q0vj#k6eB^ z&$eIKEn)3xX;pgvYYmg_m+X|>j$5BI7GK^vxuVLWey>RC5m%{Y>33%w)Onksoc7GX zKcXsgPs8bVnQYlF*gr1m-q*UHt7eJ+L{sjy%A(a9nl2x{TQ1<2yDVzAw#Svq&YjCo z2J~%u@>8kM_T91m>gsGktAeAw3X_h8)?AuuUfcF#qtB)^``9Dy@%!daE&g@Lkn6_& zoAo+hN?1=;9XVWL6p(j#O6bf_H~n;ubClX@$8KE_8*%8eh;ol}K+M_`CAAiI>8<+; z|NK~g!7fc@a+hG!zuO&Z_gzk>X_-AZcPsMU#)G>(!arV6TYmI<%^RMR)<>i2E25wG z-^q8f^7o2euwuFQq9vb*rwMb z);``$Lm zy`-G^dQ0J@$JdvApKJEze_B|zN4KGy{l53J-&Z{UzxR9X@2m2AYo>OXeLmhKvebU! zv*=4T(X;GzT|cKA{raqM^`bOa?Q!QnXRkMjEZ9F`>;5Uvb~{#0-Y34~{pEPpmyW-( zGyl0Q+|L`t`gd;5-|E)70Jr}R|5seFXMHhW^w)F+(@Xo=GFAW1KJ&l2;h*!b{~<5- zH*J}Ak0Z$R?{<^_%4hjg-`2Z!{pY^WpYm+hp(O_FJ5&zH`D`%vn0-UN*Zu?-yVuSs z&0N!2S5Cgiv7u|;^pnSmBz5^eajgs35%f^&W}NJj*cjm@bN2*2yru9~kh82Pw!!(w zgV0Ml;XkG+eEpEsdYxrue>i(ZZo_p}3mKO6UzhG_%x?{gk$=GU(wu9%?P9+cox>dK^#5Z`ppb@$H4#!-Ivvwakm#`S`xb*qIb0{J7%rec@l9sm9#~ z+?qCV#+|cU)?D{llB1g_e=#Z3_P};y)G`wrIBr)(! zdSCWNM5S>0VEcKTS7fT2a+%UNr`OKQ%3xouIBTxs===Hf|p$CGO6Ko_BZu9m=?{DFd&{7JXpO~6@a^)(kO)|!lKJf}OF;@lk zEfv|_}CK72O+nxG78fj&MYODNmCA zxiva1hf0bV`5wAfe-|mb-MzVS#%d#tc5%c}wLn2MT>U+&GAcYulC zV5)?~ls>7+oM-)_e+4D$sKvYN*fk~ZyZ_6_nbBV)FRtA&(W~<;W7E+qeH`98S5lu> zUlJDHwbY&eRn!&Uvr}YEFMsg%m3v*gO!Rur?VAsJ6;C;+TefYP@O+Kn=_v~DJ*5q& z3#mW+v{X99_57rE4rcaE7B}aXwihQUFis1z%6xtCkFKNm=HF*6Ug#9tSDmeh@mBc1 z(jqa+IiV$n`LWc>#coV51*58^X7@Qd8k?>;dGgW4}H|0~GpT`bG7ur6}qj3(nr znbJBXx_Sn23PlR}aS_%!djn%XO;sx4<@|KZ=G5QLl9=<)#Gd|fnsZI>>Ac2Qp9+mF zZ6};~e1G0$&HTFZ!j&<5RJrEN)eyMlIII2)qvAKY_XlHq-bi1OxqZF7tjvg4Y`xIT znA*!P7pJTWo^|$8&dH6pbk=;^qq=(0PV4$c0tnO?rO;~kUl**DqKbG2%l>{eb9f5AGnZsxq;m&#uPr}9`W zzSRD*$xH1%XPJ5F<_XSswT@~oyi_X^yudg6_-qfrWkqfGvG0*kWX~nk*R*BMuwzHSac(?cTLfLccLmv9_uJnDlV&(Ef zoR|3?$0cODDXmdmw(;zxdQoPFXo!MH)E%b`imKbv9Ow(Pf_3Ei-%7?ZPXD6G=|A)36 z5?Z-Q_4c)WrBhR~-kDzBxPp1h72c4ef6G*sWot4VJqsTU|5l{7RdnE3!{nZvVEbX5RhPpP2tF zIQ3pwS}D`!{!*t7V#%Tp!KxvwL_ zZp2*VON#%NYWSg#J8B{Ckrj2i#iw8ERmB!Nw3k@U+g9*#vvt)$$3qzllb%0~_lS&( zI4a2Kw#t6q7D4WRoa&e69)B{)`qamzM`m@!8f16PDUCaz`FPK}1FY-0_-JBdtKjM_tQ9VblT$Be>?A7UX*llNs8jx4HMJ3U!N>Fb?x!b@XLY*Cu4p8 zHfdG{Y!Nm7Icepc&F)U?t94S3UE22UmBfa#t*=5uTO?V0PKEOXM)e(L{r>jW9uJK@ z*4IV%cXm%)RpdRheC`>x4RW$2a{1MHTut8d8icxUiib(sC1kNISWxr$_NHs^Si^Tr zRLXRmH>KTuvwh`LT@I1l;tMwIJ5E z-q~^M-i-Y2L+v5H7g-q|ZkZ-!q`TLC+3|^%3`aJ#*rlf1i96d%&*ysc(k|fd$KQA6 z8#`In>s7{=K9OGh;BAHNgAnn>s^Y6>XkJ^ZRm9aM^ua^b>Yj4h=ee7CHg-4Vuk_tA zZ&8T5OB~lkKj9-Lo$H0He5V#IKfWVq-4nn5-KW9a+pHOvEF>7ILC$r1;riWFlmQ`)YU9fe_#Go0xyO*3; zW-`%ONbrVar+})&{H4V&TEC`iIMjW)9hH`OGvG7#lB58;J7(UeckjsvFZpQ@Dfa1X zur3ZPO_%n)Xp-_F@vqHZ zagkGsKbgPOorvXqY45=Aygu~DZv{8Isw0Lvm)kc8=P&L#xzB?ut+Q=*^s^JzcfJW- zHHclbt1?P*<(jYioJs}#U%%)UnYB1{ebQI4ijS9PKE2vK-B$nNETK~wPYO+@ zyw#Xf%3)^b^tNP5mFA<2t8a?VXPLe^arWGcK!*h^>fbLXf3bLB>-cHOqcdkF&(NIs zJ?HMWO z?J4?cwuksJNCy&;bB z%{S^K_O;ga)X6-5ogo~%WPU@{c88b!$tvsKp3}NDH_(J3Yf+qMm~Htp&oh6PF!#(q zRKKSvw*BMw14~6d=QBP2I{id-<-AqOx>I?Jw-k1?KhF$4@}JAp&1S0aV!`~>&lyLq zTY2j)F1~W>DQ{)^%C)D(Kb;Nw9lYgX<*OOX{cdCxKb;nNtE=|*g|nBwMcy)W{{1X7 zJ!M{*Ys&B3;wz@^yLbQjyoH@T?|smbs%quf#_KE1mW14U=%gqjF?XqT|GAjoaUL_5 zzI!Mc^|I*g(G6#0zwvM1>o@yT#rxJ245p3ek&e%@wj8^eAg*9%`av+_SksyUwUp(H}9Ui ze!}t71;;{nJigsA^}UkQk&T{Ohkur_91b@4>3o7`{-XJ8$GNw()v=x6X}JA&!LQ66 zJGhH#+Uof9>cpz&FPne-4)?hilI-{M)9(ILtG!lOEm}Lbj#2sIhwKTNha8RNw$I#Q z)3#oybN;En`j-xT{<1Ez>U)Cs(+4`dQ*E5>-WSh%zA19?rH3Ci4t$m{I`O#S-sCsxwmb*a-j`QfL|5|M;=IfYFNW$%8Nkp6zwwblNYf2FZUug%`Z5L5i* z=EJog?Og577x!1F1Z?=~;Mc)xz`^*N>%w}bpI04fm<#Unh-`mU&3$Hi(WPnppSk{W z{na|6=blr;XKib-d7_>FblHjJX=k?z>s8$l{K;*wLij}uzlA4D%$(&DIW}FptGABN z>yy;fC#eYq9TVI6c1PG3b!NFv4*O}r6`S@_F5!#xXA#B&{jOZsp1t@Xvv>LF`!b(S zUFn=q-{;45!~g6BBk^y`oldPbzHX=I^M2~d24gPPxV=2Rehgem{M=R^@+>8K3-&WS zk2w*QEpOB&(yOpw6O$hYBhS}@dToXR>pLatZ;F|wSu%Ie*wEPekMYI>#a&GSFk-R;$|lsP4_gthFZF7p(bJ%zE{`K+NRu3!=Z)@;JBdo3*jiX}|7LHkJDJI&dmJqnYvU9%ued-2A`4F~>7S)#J>4_nAT42+hGE>hc=~# zs5V3jO?H^Wa5Qb>YguefOC&b1l=K-JAIT&-3lm8SWkEH)7hM{#a_6${zj1C^zY} zlru?w$85xYY|uE|yrV}|=kvpT^87oVER@$45)xudF-Z(PG^?jH$K%I=ewFgi9sILv zD&8D#H?li)T*&UD^V8G1lHn63O%Qu9`vT9|c_I%u-LJ8B1gFj7%;?Hyi$0gWea6;R zc`sEskDQ&dYW?bI$G*ER%y^$+$vAOGW@?h8x9@A6Z&!l8f14q?JAGE!xn*Z3t&-%7 z-kOuv%l+Zmk06Kq3gdmN->o)`H8tAUlAGz4c4ulvT8`W0n>(7_w;G8o+}gL1;U=$T zdK%~Hqo)otNyWZx$`brFCG*Cc1M@CjjnT_nmFae9LG_`8vYcGixMh#pH@DmprMrm78gbruUZ@xrf+#;&BfPe6j}}R7dS3%on!Dhtm~}B z@}{p`;!ov7S_)zhTJO+(aLIC|@PaAXB00*+iSCVUv7G)QFHUF~{19l;O!Pmve1pgn zhw??U*9Bf#8x^8&)OXIRy3f^7?sv<)-M2VtK5N8D>21?em$M2R z*rq=FT5`hR?F7Hn?U5($B`QvLTJgkqOF_Bn5=qsMq^GZ;m9M zOS^fhJ@ivR?V-x4XX+M2omo)j?q$0`ib{*{R=hMH6E+ z+2<#J3z_@;zGR*24!612j()!{zAo3!l%@NMm+nKqxyG|i)0Ng|$xJ_gIq>qep4!ix zcOTw+40e=4_p3IX2Evm3z(7dU#IpLXpHzp)AaNUwAjkE1j^jIbyJO z$9X}Q&fOlx{CSu53+eyNI;OkFGfdg_(zL z*lzV-2t2TK>B8xg=LK$zee+B5dfTm|(Q~pGr!ya9vZ`;=fARP0PK`gG-p8x&n8XvK zD`@9-U2xZbi?t5yt*jF{1?MK7`so|hFQn*KI_Xdw$2*CMA0H`QO_mWZS=X9#Pjzkk zKZd&ps<#MP?zucg$Ex!I>;A__cK${iJWPwe{n3$&fnlo{1A_+k!9(cE8`p}|uy$Ll`JzW=%B`1iMu z{cV33G!##95ZKOAn9Z@Cb1~O;){nOgvI-1%Sl3UUd%L-!mLs3zQE%d%M(e{Xj>abH z966|PPvlsV%o^3Fvr{X&dGe<|%so`Qo##8p$=l8q?KSr`t=~_&xlrJq?)~p4KHL+y zr+)wY=?{$pb{hBjPZn5oR6GCJ@ZwL$hkN2~?0p@f#zwQJ-u$a*qabE4ab(T~8x8gH zlW!I~+K3#hw2(M-_*1P)OMmN!j{&Kr4RUcRbKOHsL*P`E@8PEB6^^Yit_~YhIKbAF#-rd_d@!`F57bo63*f@9b z;acnVHumt=Yi~t_ zFWGg+6Z+wQ*`6rTwTK>D|P1f%{{RKPj~E6oqg3=|R$Y2$rqj1?b*{5v-5)!KCcPfFy~q&Q~Rlc zs0}AiNPJ6UogT7ftIW&C6&qq3of3QZJ)T$VY5RJi@P_3)Zuw_VTJAE*ei?c8((YcF z-~uImCpTT^gPOXpV^}5czLSuBH#OnunLSf=j_s}x(vz6L{V2L;|I%zt_a&BDOK0|} zzRsKLHF?(B<;P6e)=g{h&EB>)nsvF1ir)PD%bIS51V+T(x)S8P&n4GR(}Z>Vgo%ku zU*0Nl6t1i?J`-48oh)!a?TUKo?SA%y5BxmEv@&ul)ikBA$e!rD8>$;F8~uH%%2zLW zkLB9)N@p$e{kMC@9;VZ9B zo%H)t6_-A${$ba>`o)I=yJYFhRSTs=w^W+Bb{|^2JHuy7W$rr5Sw=h0%qR=Ff4n9? zeUW%7ub+oE_ak<#x(@lyL-L!i_!&J7eRCjG%gta_lJ&6=8|lYdIZr|*ZmfNz{zG%> z(i+!mE1#B#+8-9yifapB@nh!-?S>-e`*M7wC#VwXkaLL|=ilyQzPt%KX{&drAN)TSciEqObNiwYhoyeLgQOZFgPwSiV@e>dK|%XKh1f7@zg2 zF40(P{N`fKIb+`{Y5keswo0D7uHO7(_k!>IqUPNHPXB3rk^MvHT>Yva;{Rli)Q9{D z*UGjpWB)j%>%XBu*CMS@udPkG%xPC%N|_v=*A=(;efiaAo2r7&_+D)2nrYlG+x+Yux{T)y({goZnYNa-m26Q|+BgAN@Xkasn4Si^fbd)g0~q|3!%slU26O zJ-%l0WA)z-)@nXe-|h6$m%TN0^IV2?D}SuhE|yRKu>P^rzk}&qDa-`9L&)N5W}?KqKoy3*xc^z+l&*MELedsZ%3YR7(F_4wxAgsH^Q#{)<+ME4+3I+;m3u(JI_73$lWD>&7xgaA;me%C-Cj6?DNmPQ|z0z zF6xBwiO|(+)ZKZ@-*ui{)VD}H_=~3d29;}NEE6MM3tl2a|Dz^_{4m$RiiaShwc4 zcIEmUw~N1Xts?A-LGOCUSz$iKq7Tdu7jIth+bf-4phS7%51w27Nhf8jX3Y5*ImfoU znD6qc;?u!Ty;jMjsr6ZDg@(5*zqDQ>I^c^+ag+tWMs2Z0e`QgfP7$N&nFohXxXL6= z{Ce+IQu@|~DO)c_=RPuM_SQ%;c8$4pUu@@^W4=XBQziIa9(79QNIqV*FqdsE|AN(A z$?Y39+%H^S?PHTIx;!IZROboz%L1|2oIJjw+S}W$|9;UqI%~7U4IAxT{_yL@N5ZX3 zB_I5ZTGrzF%T|YpbKilw1BVxI>ARkLDe7u+=#$v@3p*MkJbr|oU6?+HA^zTduj=&= z@?R^qus@MbKNog!g_X&q4HFAVD9A zB)l+9UnzI0@$QLNu0G*5G)gY1m1F3%|F2iUms8>;%yBGA)NE>zINuK~ornO5Bd6yE zgj@bSDykyk-LQ0_Ys7)K%pVu8=# z-T#P>C!cSAe8Mj$J+eh*+S4OSYbIQ5*dY5zGWoclZ^q^Bl8vmB{O0&c#$Ir|U9!F8 z(zJJ%?lP=h^T_E%(=@$Z-|v;Y_x=5^e3Q;;@eh}uPyF}u@BQy}pZ~u<=>Be>_<^#E z%aYjrR=+s%IrTHs%{>7}yFVmZR&{or{upFg70G)&ZrvlXJx&L;MfaTQ4?q3&`icu5 zqFA?|I{7-p6pST#E`q|8~c6U>` z#*VxF<*PUz#cJK_{eI$Nb?Rrkn|to}^ZzJxJ1V;)_?+e!JyH21?IBML7cXkyU%f+m zGnd_>2Xdmf3)gpT-f_Oa|CF)(=f{t^>=fJQPnrGw^jUV5#lQdln3D1((_Sv*gXGFj znKx^$_0LZEZ)tD0{t-L)8^f)z4-B9v->)!-fukL$$(XR0G}z zshl~n&*jpCyxL<%J2TaL*2D+~=v>}XEwm)}#Jp3t+_ILqIIz6?IA^Yh+q3H@(_8~R z-g_!f+w42<-jk(w7Pf{6#lAl|W8y|(6Pv%2FRoo<7^YY@KXuunzNXnWya8>Q9_J^d z`=0TUe;(Ovpr_d`=&hzS_0I0IAzuE+mp+1Q#bzn>Tq$5lh&>*4Zq~^Fu8N( zmb~XWw>H&tR(#i47O`j3^d9N26?=qi3fsi0LfQ_uo!aWPe7(-E#d89kGX!TY;Cg-c z=$1tHWA49?`7O=;n{qOB$wzg``$aKbYn4{^tX(vN^YAGv5#M4XF}IAnh0_oC$~bN8 zSu=BUlADRQl(RqQ8m+|F-swf#cAr^%>tc+Oq`Ya8n^N-h6EfePYP^nJ-h0{g_gRsv zpWZM0e}^UPxJ+c;m-TT|>S8A?Zu5*;tk@SU<@cziO><7bhgjbGhrgRHnQ-j`^Pd1` zzT>8UIPAkd2=m$>J!}*uD+YQdMbJMA34k<{#X9xCV^?` zNf|#x>()Lr|FO31{=@H5{~GKsedIQ3yr;wO(6;jQ#_WAAo^$^#d2n9pU(^1qAG1Tg zzQ1Jg|3L4Wlh-drUQ=tlwMm)l-^z#aKg?Gj4_dXh>3>EA%m2_0H;#=yf}yiMbUy7` zajiw^Psy#tDlC6((07gKSt-7xm<2mGDa2|To?5U@bK`|0RvYKJDqnhP zbo~fh<|U)WyE6}U%rkoPY1J*ER~FZ&MxM12n;NPhuxiJ_6yEhl#buQ@r4_gQ+_e4U z#`j^T(w@ky()p5?_BH&DKx(S7*RPV8eZdv^Ixo5M`E{RiP4+5n-(&IZ?9@GX<92he zntj;SQ08XH;|-_lTYv!wx zgm5CiMOVxL4Gj1x1 zc2iq<+WPLPN#8atWnFRoa>~&^QQOy?SZ5S+c-ht$cjPYD&dQ&2`m>JnWv?5{m8P1c zY2+%_-wlUcNj zW_+RU(`(iixii)8JTllg!E^rW`5SL+QQRApduPJs$y=_ky6{Njb;8p1X{BB-znt^q ze=qaR;_=gYp>pYSg&w+e*}mPCU2?H_)8W^5Ea%Oz`)+zo=+m9)m$IIB|I@6yI(PPW zrw_eye_nJ(T$;NtDk+_eaktYf1F*--k`PR zl=P&pX(yC`@3w~?*`{@JE5m~;ITXR;=J*qJ8Kv*&7 z2N#*d_-1uS^{F<01pX{x;S<}Cvte_?Dn+w>51FRD|FrejA=Z%R3v;v&?EmU_MP$Ld zsC&C?Y`SlqjLewaxQppk`i3Mi-pQ^={6XHRs?eo3QiAH=Sl~`nquLVu4qJ zZpv5V+H+kb9NF~_Na&Sqcvt%Ifkx7sT8W3@4UT_IL;gs(pRTBq-_On?wMH<|N7-=| zU(s&9>%qsD6njl@n<~%cYFoTyUDAEK?zBVMl5-7bD~&x^ZuZanLK*xmpI*#x+%f6yKclj< zs%3w=v^VYM<$BpzXJyYHRU0iATj|1<=PqlzsdiH_oA|t?J>5*=&kIkk&6wET=w16g z;dn}D#hQlGX&XN02%cFd`NrtfGdWzI-qS$kYV*W}m@sd9mJ zYPrJ7uTEBUJzf`Ep*8Q>jtTK~u50*>yOz9G?=an<-hZ68Mc!dhCPe=ChndaSG8?^ zp>(Qtb@+VlOn-x$*&VC;w9lS-WR~_p?OB1kv;Lt6w>`bzFMIxbCO7jL=9S4agsfJ+ z^u1Ck>F@rL$7b^D+?ZOimn@punT_ezcDr^yQJ!q5mb=ULLb$_!haYtreS4Q~WM*dN z@#CAKfAZj5iJ}-oah~isB4#(!PW)oqb#M{)CLM;IK@B0o$Ikj~{ruQ+X;j%nVYvgh zB6%+FVrNo5GU52u#z3>mp1ZAzGkF*3JUf^CJI4LX=YQ;|jZOc%W-MZC3=9`}aPQWK zESOY*9)vMB>}9!dsL21lX_uC~R9KiJ7P%_KlR3Ac$%~s~i$ZIFSGYsSvXjcPGtRY~ zT(We>`yG$-3gZQ@HwkdfdHhjk-_O?mf1>}mU+tZ_#9Qjo!8wz+-zk6p{_nd__h#Gw z+xJVl!E{GNqg6@q<-@-E=CzD18}GL>GfsKDfS;fB!ST9zGLJ4EuCqDxcd?G;ncic* z_U0QItOUP1e|qACk~8i8u65xKnHwKHIr(Nq-l=b2 z683M|y|wP!TCG#-zGZDY_jyi0;wmPAfZIO7w{+X4d3jFK(LK1LjCW!M2%l$jk;9p$;Dkj}xSu6OPgCBIu&Z79=Y=hL&g58qFYo_F>ee*~^(DnPno-XkZi@cuauk8w55q|N2FU#sslSisfGj=t0 z1>aEFP%tS~Ty)*c8`G}!?${E#rzbpQPuFz~Z{BN$qU%5J5zJpvA-p_v&(X8Db*kCl zb5%%Bn)P-?1^@Eeiuj}KKPH%+S>9EUEs=Aj-B`=+&~YuhgUjt|mOU!2S@_7iX6d8s zn#YH?Yn^*!Eq`w1k9p-k7z3>$*It^y*Br1nKt;E@)6JO zhv|PF9iGwkdB=iB;choitkcsA-5g@s`co(($SCnh_NA0X4lH7KYvdnEZ(jQBMA$0h zMqXF{viY~SM?4d>ow%&oVZ~YFa}(8%Jg*FMvXYg$T-1HU{c~AvfY`JZv!nNgO59$u zIaq$yPMgb0;k+p?%5}n3HrRx`nKhHm<%-tVkZil?$Xz87r@u})U2OL8&aL^IdbTKA zo1`}|Ek2rLn z4LcRQb|%MYc@=jb2nd^GW4yxbnRs{A`z7DAZ~X36-Me0U*9`m2v*s&5pY*;gKVL$R z+qYhE+40`WpDVYln6pc_(ULXtdCjxT^?&nku^uyC|MK=S?~Hug?>rao%C6G>XA^RE zO3)7WEg`#Y90j^&zWrn(Ju~g^+6!|YJ+?B-`*%Oz&^>sr)LYLdU$^^o`|qosxaD-B z*uplu_(NX;*0%`pe0s|taDT$fi^NrOD(!hC zbn4L8=?^%=wWlv=(LY>0FYI)I{??}{%uc)eqfD*iT7F;T`RB60dfFC_jXCBIr%ujz zB6W(tMSqbF^L^7F{4s8=*4!xpkxPRnA6#?#ORGzeKig*ajVY;Y2Lp8!8WR@oHb|EV zOOkaT{7|D+dcO!Rz-%@ zvv%98C~tiC;a4$|{pNdfdR^(FZYCxckJWrP@9#&gRiru^{%m4oU!Q_o)xeLzi2G=N_u~>s2GX@zi7Isi)@Fy>`fK3XfTJ z?w0!@FWc*DcPw=^p8By|_g3!8$NGzQ+<9H{q;!(kS&R3RPlasszOkBDUS34@%(e3z z@9OSNY3bZ`>Pg{utBJot3?>L%``qSnz9mfUy?AW$6obra_MG_DOQKiUD6_ans(r1~ zikRiTtvxEb+T~C_cl4$o`%|t5uUu z>=K7F7~~h*g>gim|9&EG&D4;TwLglBRHa!Lh8VA2!(Rzm-p2guF|$U?03FPI8-!aX3I>eo~%crDq1ls zjii$ePs-<{Y>|T>Pc8TpT@RerTz>aQ+3FSbAG(1W}M{vILAboUT^PRVZ@m>g8lQ9-v*OmEnE-(pKFGX;WqjdYfNT^_{)U`___3ugUL9 z^p_|Ezfr0E)yV%>|1Wp$ed}qeH(xBAHsAXDyyEjl@2lU<{JsAFoxcJH>i#$%XK-P0 zj+kB|EZ=dq_y-KR==`xm(rsTo2u|@R7RKy$}Xgw^N&1j3W(V!*_7~x)dJcFXC@q z=4lZZw_{H1zM>^>bh%HTPWL@uCgS3MeqL2tnbur8^U9jMXG@q=mnPg^lDl(WX65I! zg*s6wtGJ@npY_Sko@G1TZ|=-REB41a&W_X)U9x;n?%5fx3l+?2@9oLx6ZOf?)Ol-J znVmW3P+RWjLxn#B1nP|PpYA=(^-K8s?K}FCGr|StY$@)!Xf}8I5ucqq6y`iX)7m6| z_1vu1%F8EDmxfAwnfBQw@%omxI=#AT+hs#&a+Bru#=2&0eJujZ(Ltj6I zT`e!!yq2l)hG$sondqap+3p?m7nP}VaDDspf4iUC?q!eC+3p>!)~d^UApT=%WBkMG zY<`bcblsQup}TIgiTQ&$A9jlDbc^zEPyTAMDy8B6$%o&y{v|x<|1r7I*utCRNp;T; zmK8rXH||fkb0EIZ`KT}R`^Wig^A78V9a+(Jn@uYsu<-bS`-RsJXoc~t@r>sIdT(@C+5ZoOOabn~L(ZJs&5_I!C$di>k2y`6jC?f7qh!QiRjit8stFK*uD}8*! zz1BlVxp(e){A=&~Gi}XT{J{dBa^(K89j+37<#Fde&*RQ#zDwstU7h#5S0U=_x+5;YnfLwPozbOcf}2^b>VEU6p7Y~bA{Bi% zQ|Q)_9gaS$C&gS`6WGC%+ zy{$Qm=ex_~g7oFvIA2yy3$LnHw%X@Y&U8gO!tNDYiOZdXHDWVzW0xOSq z|FZk;=xo22=SN{r>Fz8U*2xy9?p}H>Q-1ny?qSgvqFe0jEll<>C9mF{xJ&wB%@)PC z+oEpe&PXcivae=4o;mZ8jmJsObN+cO!T&rpwgqlpc1Gjmg#gyulOBe;7_ZJaZIJbw z%PQ^BL$0Kg3WjfdR((uZqrEO{gRR_}1=fK8{(bKzdT~HZ_2Gqxc>G3y~(@!LpNBc#mUz6N|w`yH2e7tye&2)ivkEHHDmfBx*JlX`TFQ1z7 zZNd?|pqU9*-=yD_QR4F#KFry-yz^eVNB*?c+)IwAc7=D|JMHp5RO!3avX5-@Qd=JX zNn7?~t#zaHl)H;^re2%WDYSUYr#?I1$Qgn2j`Jk1urpr1!+r5H!s#o^Qks$Mt0kIx3r%R*G_x3f91s|of3Omr@f4j zfBpI9jm0wQN!1o=%^UZA66|_AxxZjdyxo*hnOxiv3ncXt8Lr+v(Hoxu+ zjkjny|4IG)j4eOs)E~3rxboaGdtoita|`ZEr&;zLi0s&REVH)bL*IlOtn&95JSSH^ zF?eR)&QR*?u-omffF0l8demw+l+z<1kb!~0A9}nc{VZu8am@;T{w)%V=VCt6x(wNIY$-HLML=U1y1rw)}0ky8u|46=+23=#|s z3`wP#IVrkDsmZCC1tmz%$o1cyci4dE&R6Y5*2toi>I;)}9VRSwz1}oQ!rf6tvP$Cb zA1%+#Q|G)pv0J&cwEXu=n`caQp>w`A@vi+o=Y6|uwyV#Vds7#OYWzH*BJ2~x!gI@~ zYFnAuoqrcTQh z;fY>r{-x=f0k`$mZON-=ZN8ml7P|V}|Q% z61y71?Q9im8Rmc0$$4wfA-SC&)*SVj|1tJ$#B~|2Ng=lto^>u@$U4=TwY_w9V&Q}U z`H9RAo$ooWSZa5BVe;&0iaSoN-LGkM#ZGLdMW#qG-ySNa`a_UNdX1x z*KAuHB~@xRk?#oK^4RC!m%iHezxrnWt|W%Gx3`Ws~31(#a9QxbKTl3cep<;1-Q?+kqS!j5k+ajC4EVYgoP_6w8J(=T}~c`ahk z^)FLotGQ_&^zZhO`wKSgsO5?Nzw?~4&->Ym%gR@9P8EBxcZ#F1>-+2(Dzd_BA8)y> zcydSRPKMuZUL3+(+*%5`CT}?w%YJ8>ZNc+Ns*aN`p7aft@h^8Xaw&So?q(OG@FnbI zsiNl29Px*GO3!T@3Lj2$=xI8xF^75SodEuhY-5k0UlOi&4(t47E%=Z*X;t+cJjn8RtLAbN2qO)`1x^O z3ybmg;*)Xylj8hi{vUs0f1=EF(vP*u-MhnIJkN@J(sBlQF*_*N7{#adFJoX}c)@_N zeiM|*oDsPtAhD=8wFow%+1ld>I@;Iuf5z4*?y{%5I+_f_{obbKv75gsxta_&G?Na6U zlML>^aFPsv{p!Hot5X!yT9$5{x?+uvXt&eVN6#y#3OaO@M{PbkwWLp0@#RD(&)Ck# zOCK&$Uh?0=^OYrYP5KMg`%FDGY!cP;fA#+1{i-{&2I+KPkYBl)cCT8<#K7>Kje)@i zvxLC(t8Zp;ab{k+e*vg>?O2o^T#{Il3SBlZHQWDkg2?gz=goGleVwvEA#Ns1s(1>I zpuh!}=c>m#)r@C6Se?G+TGsa|TjqZJG_^*tv+sy_9fSRpk2bk8n{_31d~X%coA=rJ z`j+~C|9WmgU#p7H(Mk`ncK zv)5&FDLdRN@7b_w>%qt`UzY?K`TpCvZt}B=gVtS>R_}W*UwQJ;A&sjx?RU&RS@Q(G zlQ7ypZ#qwAw2b4MFOFXt`L6$+qPs1pP(rITWgq{qr*;-+E;2|)m&~*g;$3As{eItL zGiHfd`+NIVTD$N&ry7r7gwU9X5*0k+&V*hT`6i?lBJk9Z&^I;96Pumtb9+l)> zJ>$}bHft%phnw0;eU3Y>nfmZsN8&#d-Lwd+T4u>Kw(ZS{?^q6VO3gL6dssH;Z{z#O zT|Ap-SbsgVqE0)?H@1T3rsKI2m)LbUcX~Z8l2Xy^IKg@Gq(r8_NB0He&;<4lkuH0| zyXvM+&lEmuRKAi(%wK54oc=P$$l$o;qzB$Yr(an0uN2rN=QP!6WABaaeEy9wulQqS zmL3i)U=*+A%k?}_>Gn~Rc?q|@KyLC9i~DV#{z~MXKc32bm`_jk(UK*TL==B=Epz^G z*Wln1mf*gRk1vFU_nqW3xp~sCJ6kd9>UC$4r$2tx{|#?Xsh{&IS4qxr>}d;b6Ps+m(MV09J~1^$ zwYF{E36+0HdsaY6U#^*J`eY^shGtd<23um1J|xWtmlS2@r90>6795?q}1te@;d8T{qEV^=oa@d zF`W0;)9s@9?X6sESAM)unSby1v%UHID=+Imm$zfocr>w*@r;DQl|{*6?gtr;&x!Jp z{jBA?ZAG%9d*{OZt3_)PdKIV5zM1wwv^?C1CsfznE?ee}$NSbB8#Rq$O0y5$6Pvg6 zTi^ut>S^aE+_T})xqg$&=Jd+&JI&4yI}d!75R&dw-rJ>H6EBpv^i@^q=69X3(X&i% z8*x@E%!$4FX6J{Rm#MqMwTxeEEpYc;UVOE-P{k+OqI7esPPto}*^3_OFm0`GvJGWb zjV>R)$LK4_RDaFhT(I)uvvd2_us%K4k+o#+y!|(nPp#z9+N6phvOi*Ir0-2SunN!D_K?2uD8ilpOw?KWOnyUhC5*_FxX?|0x zdo1$nSn5xn6F4utYyHiJ-~>SI1N2 z_~A6qQ@zgKnyqS!4{4`t_3*nEd#;50f}X_krpQyr3+#{hCt7W>j8V3B`^fmj(C1$4 zCXcU|d7ph`NVZ2y?bBzUIPJ#Bz~IeRUmMrZO zJE)Ua1g6}8L-ZF7aVZWtxrcD?J`e8BQ~({kIUUkmH~66Vwi1!drO!?`xH+%daq@YR;@l4{4~|UN`r_nzT<~*KNA+~0 zzLgTvCtA5S&*=Q}$})jpbNV9h2gh_gGcs20j}h21z2f&W9yKq!nLn=;7%qrhNp@;o@VP%+&}9F!`>9G#4WnZgweI=Hy17Upt*LL_ zxhkvkFYjiSFH_L}R_A(rQfPT;s_^PxS7wA})}9TLnX+-6WLxOW&3RvX_T0N$_PnC& zj{l8$dAGK2XpX$e^z2;Xvyh{0TX$sc&Yq9joX?3e-PXd+!0=m$$Rfx)FTXqwQVv1d z9!S;i-H7NKk#NcX^HU~AsxkYDGx26vZ);SUeY%ZdEr*-4mujxZ1&5@r{o5wreVLYE zy!qT2p%vS&ct>yjo^*T5jjDyNx>{G#oINx%Otbdd|9G?7UcTn#?q9XWn`ir$9agLT z^7Kskxu1E@cfa5Feg5h93^)4rpWM>3cHz+p7dw-M`c88w9#wz5XU3k0JxeNo+C083 zG{+!@Q&MvK!xkP^VV=1>k3)Fn4v9;=>^9ohqW}4uwvgPkjhyk^k6#;=J(4z(JGi*! z^NgPSN6|e$-Wtd~pRAtsL1o^fr^LI{<=bULDWF>n&T0h#<$3J*_)L_|< z-;;W#7q%7d*M9uC!u8Nrie{RNEXQqX6+K$(DH3t4Ne!O^BZG^P%Mb9PYyRug*o;9nGmub5Z#U%aSa4qNM z>sb@c%cqAgFwwjjw(U%w^-Rg@zTpY+!5eqa3YXSO)IF~sbjB}1_IBLnyLEq;crRkL zniZy-92->5pK-3~*;L=N->do+PnCG3uMVkH)DB2A;mFbGI2{+h-SqmS6G4~e8M8Op z=y0u9if1=ee7J^z<=@x;0u!EY++OV%UAU=v`rADvpEfm5pS$PHqcic0(nS{+Ox^hS zS1cR*w_{3k%E~4;?f#(2TApO@yq z&mOI?4n5K;AunOO?6~LV;va&mzbCWWACzXQ-t8MI@4tKbr<7MM&sJpKwn|j_((-FT z>gtcFF5A5=)<0POV`h^gkJpc#P23iX9w_yBR0Kcxwkga$!-9`>n!L@IR|_((Otneh zTJIS1doBN>)lJ(CbQM=8uuT^^^N5#oy6BmQxvb$g5HLovVIa^$Qh4b#U@H78q zW2P4P9@M|dw*S!X?lbSxCp5)xep=sL$-4jOdloa@qc^4-265h9cBrbtCtUQ8-20E8 z*c)dTJ>qfqeUTa6KiO9(OIq=-;AbJwdb=}!^w0cRFCnnwG4r&z#&e?AT3ubtr&(l2 zhc*gk#QK&l5R0{2&nk6V{Lq4~fThc}&iZ4sF7V;K*hNoe-bT*~y3*=ZGHF-P+pd|* zON?LkRc@+U8L1=Z`69wwWm>@VBLTvJr$rN9WnZb=6|9-9biZ+ht#{kz`IG>Ki*7XSMVV5O8 zrYuVGDXzGr*y{U!^TL%oE#BQo?L2bGBG`S`9my;5m+B%m`|6j93qP-&{QbM$x9{&n zc~lvt4|mBb$-Ucf_Wk3)Xz%5vlQ%71`$S`hkLumcEcG{+#2(<^9kxzxt^PtTNxieX zMJn@jC6f(|rAk<<)~0@oc64p^vX`)a$)0JdWWy#P^3e0Z?@I;`YBS|N>@(56aAsTo z1FkPuu6=5F7#Q|pkE1zz#&;X7mn<2*+k6%)X{7~7&UMa6VGF&yqHmj@bJsRsWtp}7 zzRA8@=J`GCmOCC7mEY!){4jXJQQ;NB{>hsw*tU11Zw$3*7b}!17e40~VpxBtxw(OT z<2_NiBeTM*1YXO1Qn574sq@$55MnE3;Zm!?Tn*j=NjJFgS#f4dJ#Q=P5)t= z&17iuE5*f9(nJ&k|CJCKel*jc|CtpmOb=ih8zS(X!c9_RT=v2wt z$Inq+bA3Tq@jQ#8=^`D%HaA(FtZWx5xo}~7RITUgwGaQQ=6qY4_ww^eJD104V)EY_*qzdg_4ivoZ;bY;PMCJDvw7|2 z9~|9ll^=vPX757ruuYR&JoOi zTw2IlFCPApzmWI8*!!wwy_0_W1()zm{;&PfVB3Su5+4^m{(Im~?2Kc3Ew}=?Pi^|m zbo}NMh0a*v+|1n7{8z)zZeZ)4`+bJ`!-oFp{idwngRgP%S1Fv3W{sL)&gIs;Cs5$~ zr?!PGCHkl3zo@9ZJSt;#bxP;t8?65>rwhd@{(GG%RNL~=^4B7>9^Ws2wSL@R>se#3 z@}D2IdjCJ6M&L3N1H)}L1_pEDdl=|_3(z3kNbHm~|z@x0>q zm6`kh{`(~Az<66IXvWkFr{isB2pj4<9%yQD)#~k zn*K?v{ggu3Us=|wsk_@0K7=e5{3%p;YhO&ljE=I5L*g&il{Q!NPT}90>}zPcdRd6g z@eNs73CbR3*OTttwZF1@-mP^Hmv_|8*zY5HYsXTBrc;db^^CGvr-tW#Qgdi~*A=+g zWc@+osDIZ3rRODT)t}xVH+L!TqG?)XhgZJ3&6eNo6aB-|Pgl9OPV)Q)&7|(cr)|1| zDLc3BG@8ph$6ou<&K{+>fbck7k;7>zCl)<>rF#0R?)48n$$M?TMX)#>?X)j<;)>vxD~>L{-Q*R1d9MNoZ&tnD{Yz}3bGJV+E$57oXp4S4TWzl9 zg6_)+0k?{u`h7dcyZo7T@6n|fxt_0!ovfcYZ(sgi6PwyEr6K~4b=`L}-qPH1DMrz- zwC#qvP?E%wa`Es@?yRx*wvgg!N>m9G>r$~PHcr=f{P(Jy| z?4{kklU0^%e^J7J=<;4Q?vF~QrnQapB&+-s=a=kxRKbwL=AGDdVy3?DBoXiC{y>jC zUfDWlBwx?j?8A^Dq}E~J{>|c(T^-lue^$-WTl@m#fWrM*j`%VjaAqwo~g-QL!c?#qo+tU~`a{Xg2OVk0D;=i9TsRoXo7OS#1Pxqe=) zleX#InN$3J=kwq1cHXy~TleGdH`xZ8JnfFe7)N$BtBk3_X+bmgSj-4A=$)yt&aJT5 zQLp;W<;63SJM16jMV4Q8X>hDfxV>w4&c~uiePf?B7V9P&$HZ;<5_8a~__W{3BX1vd zWxfu*;~`r!Pw_}>v*ONAJ^LS6cHef(J6r5~d%@z0hXSV!YNp(Lu6gaFu*#-{Tg$ee zSg^d`*i1cR{f{$N&J{N`g9`5|rEU$nb>;5yn#-4tcF$qjer;!VSFHd~wZE@W=7Y|^ zcgo^!@o%@eyz&2}&8>3xpo6*zs+}^M;OT_(cXEQs0?ziu>ZR)Kjxs6rNm>l-d zPN=#$E4YyRmu>JC`%;~Br#*qL`oCIchF|P$>5@|k)p!wP*mF=rEac9SB$4eB&;C_f zNi3U{B;8OYb!5}q4j=nF&zuZcy)>WoVUxxj>&UNzuLC>WvaJYPkzsS!!XHgTl<7*cby}o?>Fyp zW)})d37(L7%-$(&{(=qXU!=ufIKJ|L(N-9U30A=#-c2%cD;l zvYSOzY6UMJ+w_<{!P4b7PzXjy6~g={7<-^Sxow z;lkk(cbN@^Cov|49PkzmF;Gd$Sv#HUs#e#cm^BLnmWH)IG3k*tdYSTQ>2&!=-T7a`#*ZId0CHCfA=^mpr=6^6tU9uGF1>XLeN=e!1dbtC#-$ z>6^wmFF$3gwmI>*N{SfPC_1Z(uGZpVT@_l$vpOd9g7xQs`X$e^`VyagIwTo>VXC=T z>fMz$oeoZXcDM7_r7NeG#@yT3Ta@{S$vK&ga>&`bHgfW^xV1*9<=Ht( z%KmCyi=sC0PVZ?75r}i#6BVr)k)2(&^F+_06*m?wIQ>WUuAXtLq}$Gb=tLjADZ9BA z3A^1a(9?L~|65?WY~pL}WfJnSAp$eEbUCduKb5p@+cu>)tUJ{$BUtaoT*-A_w>RO+ zCy6o%cj>4*i*_vNOP!o?B+@kE!eQfSv8Sfy?9J$kIcQQex%AVgWtHN~mdfzPas8U5 zpKfZ)lxTI!MEUo%otyYRPAYh|ea{ACTd9J>1=(xPZtV=+TXk}CW7A@ruVSeeYT7I6 z%}+k5y?bwOY58X5N!e9PcP0EZKEI^7GykYVuEUoPpS0`D-Esrh&J@{f-cY+UZHBAj z?0e3vzRQDJcBag_mb`z%xi1>IJJ)YC^^RGb#1-#VbNXge%(opePIKmM&nk2Dk-Q{a z%V?{v;?KLd;zV4Y`P*G_v8j(uWDZzs?YokY>ifvTX7$^|OCvSTrq`l6&0QCTLmRwf^ZRX(rwL*RnFwPj>HJ{!rr5 zmm{CP6{o$4{vgZ$FJ67N$NBX(BCN;P{(2;qTAqB-DB{kELvy3UZ?1Tt9VlSD=lhvY zW|H^6p9?;yQR^aqrc-^7X;4{v+WTvo9}CJaM=QDS)%ZP^@0r(em#smFzjp7{ zUA#EC2drO}m zzGv~M_l?r=yk~t%hfAlep8mq6sCEf?$cbreHb4zRMpkKs)(jyDcIEB52 z@6vWu3vtd-*yz_K>D2d{&$HQn?|a5~Zy5Y0zWO~UTjuq|%e)KIEv&nX=k>^h8>P1| z`8s)a!JW0!c=&ctzvft0A%4ZtF5!*MN=>~Jk!~q|;c4QJMCRXQ>)QRsZKdvG=GUJN zi1@TLWh5%7b4=o9{W*a(h^c5-^wT+96Blo=lCNynH;Rs1lD6sf3%)z`)7sDN6sY~W z#qDHhOp^1Hv(u%0{(U)cB>T$+slCQ2Q)-xXwU6_@iFq`ms=1_$dG|c!dA@vk3EzXv zwz|JNxnzp9=hw=ef6p6Sm}UK7Sx&-xv#X!~__KtW9$WNf(iw)UvPydegQO3O?s}wE zzRY5G-|QL3a_>B_-ymsoV2=N+4@-^~@J~K7_0qbw>za})F6Um;yuZxPeUFvz!&&TQ z_p+-eNiD9izVF<-$6?9m|e$WN(Wo|`)@rcR=#p^WthA4!oGbk)6V`ux_JiF^7wV_g55Gk z28Lyr3rx{UPsnha3ZxK)aFE8{rUu1=7MR*@j@(@4>$_#vqw*e2H_beecon4#2azVO zi8epXJlo!$NDE6-SM~qvU#s=yp!@~-&^?7yPcn(zki?3(Ej6* za#lkdtSXBXTT{57v!>6DJyW4-=cG2Yek z>am}F)p)qK`@0=`)%V)v#k7ZQbx+q#71|~EQANd>06l-SZP%VzK?k>0;ld zt+zDR>!a-R1Aa3O^K6pS;&H#czG>lySC?|12bN@>SburPk$`zNT+W$7Cv`6hmnH7k zk+Bxu`Rbysf=ajH=KtL1{JCV#EK_;?o4;m(g}Ks!RRJf$az{*EO%eR zOzq^4!cOTr=ly>!a43%~RU8 zeqm!^5EH;!bAsbI1!-IyQgcoX&n_3fE_!$I^%IW|9y`SGgk`ZnbE;y2+!obs$w?en z8ghet3VD1l9h7>qaFd&4FNfdk^!sNwd;U_Wec~9sJ+{VU6VsGUx1L0A{v`cLH~y2h z*SEdKlT@>1<~-f{Y+m)dozLg(eQ){v)ck+{@Be2lF#oqwv9qbGl2=jWmH~tJQA^&y z{7=lHuDpf$n=bSTy(ydWamNn}EiJ7W-nkkXFC4bYK2Ka-u}D^YgT(R4T6HT5Z}*$z z90=B$cWr``Vqf}^A2~ATJ3m$?eoWr@S^ez~%^btOGYdWxi|+4uJYDM7ht*|!8pK=A zdTYgnUC5jsds;8_o4()fzEG_IYb6yKkcYtmb0Z><@~ESI+p!{OwRv;3@wI)z33*3M;0}vp&@qY3RLf z`6?56yWCwSJ2yuP7c3}Ai7SvzKBE~T{-Uq%nt9Ib4O)kS?{i(%T9>38cCyG_H0P9w zgiM+5af@J+c6L9l4w(&~mvKzXShk8g-RF5rMDT1#<(LV6OvhP z9%u~>c*kXDEb)A$=$b1F*6fYh#kH)uz*X4uO3>1cy>BuC*D)o`op|26U%fZ!YD{bP zv$QXJw%>F6E%mUU?Z!Q;>-*Vaa&N7(Dt@NuJtcM1(Y);zvB%~1IHgUy*e5-;vaD7% z@=Z=;Lix3g(#>3EI{H19eH%4AF8y@4xA;-0?EYifT5;Duvehkqy#2@ArY~zJO#Hf4 z@$$#&n2?WZ@(ok}to+g3XaC5bYum5C*&2KIPVzS2FXME5%g-A#i+yZl-3vmF&;KZP zzctirR~04fIP<0{aE)uh zheLB-Cf|FL==D8+{g>t5+h(7eo!)7(KRTvoVUp+Z`-Psz?F}xUO5}FrIwUzUuk+fy zga0yq`twa*sJUNy-XfRP(|mh+le$E_-mf|2;psPP_L}1hPgsdX?)5D(m3^}J+v`~( zzQxaE`6tGf<}bTixmwMj=|<%3NP`!T_cd@?|Gnxr&3a#;-t47+iu$wOS+3sx=f|Ab zB3|zW_azz}1#ZY*`NFYB;l&NXEt(u@?#1no>deFiE9~sUbRO~jGxGUlo-M%{cq(AR zW1W`RIh&haf8K48e)HP%?~8gL%hfc0GG|;mT`nYR-nqEuNqZYFyfJNAui#|pWmv|l zb=2bMHth>#aqhdDPTnbf!KL>|qqUUF&h7XW-jYjce*;pkhnB>;I~@!#5&io1lGCI% z>9(Ys{DPiGgC@Ry!Izx&@>#mKxqU^v(oeDdyDy&0=Mv0$qW@B*Y6Iu(pLg4DNAzt! zd`QfuG0vuQZ3S26o26eZ1S9^Otd(yQIBfFEut)G;n!NhE--cfCzgOIBXRmPMyFYQY zVxwg84StW8400;&?3%A-Y|k#V%D%tsNZJ8?%VgzF&)FqO$zSX}&b4hmvLx>CvX?hI z1WXnGanHU#xtdk${62rT*FXJ#r?87!y$B^ z1WVriq_!pI(YDn)YSpISP-+j^k|-t@yX&XtJFTkw(FgO}{vY9SNPdn^YGZ2m2IZUv9d%iI<07ms?& zEwW}+H+($#mzBHVD~7puFHYEPyYc#&LKa+kj+c&5GM9ghXqt{YpHB+Mf*0;D=92TmW@kyuIMz`6gnopYP(~p-4 zhMk8v0_#}%fBEowJ!@Fu@o?(S-x1F5+-lq9x{m+&YsVvhwE3Uzt3#ZDU)l{m|LfwO zlg#%_S}$Nd`-;asJOMYJ)b^|XXR4lEF;nR0#L0Wr4l9@G9>1;VC~k4?bY0+X-KrJy zFKbt~Dyd!+ciIxCugMvl?G>NCp9Qtv>~=KGsbOSb;AUoEu)-Xz2`I|XN=+_7Tmp_% zg`%x4oIAv>idmm2$k!;9V=V386oeXJbVqrFH);=8l;G{f9>9%jz}Ug2tb ze;EI1JQi7Hc*Etf&bya$Ebo6QTbBP`e?7yujnNKb(v>;SHcoZdY=0|L#&J_vkgL|s zBRspj#V2^zoDFw`6!*)q#jeYXyl#Fj%G>J9{$wwg&o|Dzm?t677Zp^wZTXDX#kW7U z-VOWIXno6LzP9d<1)9wbt$ACrgWHsoi%NYWzWzwhsJVRIsja0qYwgzqZfCwlzPKs7 z*5$>_7w7t4s9yK^aYuEE@HMtRp^ts7eKK0@@trH4?zR7Vt;0$~sokdWR!dU7*VW!{ zoZ_K`LyoY|r95nFex(^(V4<4;`%M>n*To zo?Ffyweh}1h(Y>0dnw6)FNw>}&7PS%rRUsR+va&^oVi$oHwzcbaxW8G&bYW+xQ6qz zVNCzSFHx@w*>r22FUP;|VwyG2^>pWpET&mAU9~w^{47^r`4w%X+K^}E>HsDN1{PKZ z1~<$&MT$ajv#3bLIk7m^Gp{%`uQ;M&-L&$|KidD;<7!rR@*hjD?+tvs_~W@v2e%{`7`E&z ze>bQ4-JRm}{eOP_;B?^a55DkGp;dIN%7(?$7WGZynqC@GYI9}d=?OU=?rgqo5gSX6 z2;}c%KDgo9#J&nkxvwqdC#ua{H_2{4|5o{(=hptFj}LmkNWR;$L;qHvzDzvZr;rk6 zf2*+5vU3ai+1DLU*dps*p*#Ecz6CAMWv_4cIsKS9dPZ&ZtQOhA^aZQ-J)5V$=aA4T ztLA(B%5F698zVjULkpdU32D6kJJQNX)8HHo4@xB=O@oM zJF;Qp3gx!9PqPfyxc5K1kQ?3inlp5MV(~%dAm-S)3nf3De&H!J*UtRZB7Ort-` zB0vAkj7?kz_bHy-r+l>TK!UyVwNEC-Nul@DiV~OVtedp_qAX9$;nE{U=T|)IUGa=D z=?n9vr>D|YR(-K|F52|r(NE2SFs0tvJ4B~>BzN2BG6yNi3)(BLcJUG+ls!;f@;C_B%$Jg|y%2 zMpY+-T%Gy9_T-s6GiP(RI81PC)L5vZsMsK+*y7HyLW48Qh3COzwPIm5HRHl}EFE8O zt_t09)ouyv?O$!%R`0&*mDF>7UFi1g>vylNz56at{`I$wtG8uu-+g!6?oIoP-=9g5 z6Bqv8Kd1Pe<^7*=&wtlFw`RWo_rc5O3_6n+E4qC2zWQf%)<0j<_Zb!DE#E(A%hvsg zdVXgA>l(_aE6`{Zya%V{Y4jy~FQ6vddon=q~&8hdl59)r*DX zr#x&~;N#*I61=L@|9I~selLgPG8auaU(HZoxZuUB-9Dymi)JiJp6|nZ%EUBy-K>{c z%ak;XS1dilZIZNllk|_6Xohuuo?84N#m$*%il6`%0y8MMDev^+{nQ3*It-QX(@%YZH!cG&m zR83oj(^pP?Qb_WeY#drVO;3A?XYaXdDXEfr(?T6Hucd62+NNlYJd6-ES7G>&vtB?=@q8T61dY@~2F(+dOuw$ue>D zoc*|CYEJjeZMip_BBR-ZF1qY7p4xNl_bs8n%xRZ=R42{K5j~S{oSR*IXWOGP6Vbcr zqC%Xf?%v(`TTkT7J+b@J{%`tscZ<*RyzN!C?97y#BF}OU_QhnBz;JM9rudKe`<9;Hc`RZ(sDAv!ja!y+< zDBVAE%cm!Crw*K%eZ#MD=RF}G?;VTGc~aB2y)pbgv$uI=#+r?HWg>JrO5J`xO3O0v ztTlhSe%p@uhQ{}3`Y%=E5MZ}hqsSF=wR?~?3R{kGkm zKVssRk4!feXFNRfymG#_s9?52=GPg0>6)#4i`-*wUUXS(ywz6nsY&Gd6=97NOSa|p z+)67yv*mh|3g#rAvm+9#@A6Bcb#sXB9GX`0cheU~Ti zyYf!ss>NgHoZ`Q0j$BXq>a}{wld0l7>rMwfMs2yoKc9D)8*dSs znGrJYdqDgm7meu|lHb)XZSwX#x=HUvTtV3?nbA>Hhou5SKPfh zJ(;o0-@zpVMQLQ3j{%e3p66)ID`X6jB}Hup;AIr;Mrk36j=y}9Q*rgCTp5i`eW*Vg@TdyR=RWh14FFNvdmG_K|?@n%5>L^U54~%a(Uc zmo4w`+a^oNd(rH{%*~p=ZW;ZK6`WNfSrJ$!@uTNWN^^BcvAF)ELgw?vZ||B+GT+eN zH|vejlcJr64v2pgb-e0wBId|U&lM-9w#BF}3tALyYTLAoGhg9+Q{daQs~M7)v}&mkE_>um~G-ZyiDV5 zr}*TMg&#OmPNb{ce{e13l1z|zk6O9(r^u)0C;if5zJEAg@{{G$ZRbym^Xzngcj?K5 z#_%WIZ8a+!+`m0Ce6pcS_r6ngqK*EMma9Y=U}hVS!Hd)lb)%c}9b-Y>lO?aM+_x-QJLcTw)#F{F0Pu^RlE*yI=Kk4A7{(oLGcy`Tw zV!Jn~h$HmNo_RUnMC>-PewBZ!X&}jQwtj)Wo#kHlp65fmVa1htA7x?)?B}jbvueu z->bZ8?~Hd5wtqRz@{(59)(5_#zWZ%B!z!OW-Q%I%mEKvh+jsY2s|iJQ(-U?+?Y5RT z&d%DKb@NkQ@rr0$r^zdM-h^MP2dmHkE;gxdkH4|Ls+BgFJ6%2T$mH*ytK>q} zmkZr2FYjIcD){#rk=MP2UrV>gbVhP*W2*7_vb4-P(TjbG>Lc0Cif0U`Wl!};&Yn`& zt#JO=b?q1L4TIM zTQAPYclU8weUwDK!gINsECzFae?FWUH`78+=HI;=3w+n6RsEb|en%x)_peRd*NG)( z`JMbtk`-R~)u!h6Yd!asRxkV~*zi+g%doKene{ch7KIq<+PcI~o7kJr^E5Vj#=X$*Dqik^iV_EV z1kdEiJEw-n?(InkJN_te&LOQ^;@^6cwmsOeXPH~#LGBrs-{f=rZZCY5SgG@7y+y7> zG5_Kkp3l3kT>B||{E7CQbyCM(wi~ujNwn`gFLA8tnS+HvPnJ-OcT+3h!ATqT*PJ!5 zyCzbgsqMMZ<6>5#?iv02q37;N{oxkiObi z!7059=doY?V6%O~3d;p&_}JYxE@^o;YiR}RB_Y|jAJS%(Z+;e#m3eBm)UgX5Zr<9{ zc$0T3#o6^3hwfisDZ$70c+KGz9PGx=f<$FPE^Ax;@m+XoLQ&-9<_OQ#KbF3Uy0Yf^ z<|~(VzUrJ7l{IgFa-(y4U!rWO=E+d=y>&d?>X*C)U!I#d_io{v=B2!cBO=#7T6v{& zxq86)Z$@X_#KjWWn@iNsrLTx@I-U54>&?-r5{E)}G{%=Nntk#@v%A2-$s0Z>Reikv z;;?;^dEJ?szp~#RuzWiua^#7~m(wvvmU3~fJbJarY|J9#E8{*d;X0+^3 zwCu`$5?CjH{Oc#4yeZQQC-3Qtej;2;ef5gg9$^YE-o1uLA3Y~zB_Geh6lgw&F zzi-^j{<+Xz?!gN|wb`>SubBC8U6A;6zr|aOKPbpG>6rz8PJG7^xH>Q0)MMwuFDt~> zPrB@U=c8X${)B0N+1xF~9ah`)Cd>TX7;*2w^$(>}U#af%kt-^ZxS#Ou?6mTa>J?KW zcRAE`9sjWW%g_0#3da`yN{idJi{rb+asLO=nHM4tN>2S4HTS(mP3dEY2am4VhCB-3 z%gcM~Va7|Fab)O9pz51*9{$a-rK`;E$DxHA?7I4bT=#F;a&mn_;p$D1nc@K(9%Y#O_g=b{Ikj$T zudn~ZLu&sw3fl)o>uKFHnsB#heF%Q7t@qKkJ2#e3=3~%XnPX*ATUOa6 zpHDSeI!W_h=*GjQr{=rgd+J?WVm@!j<~j*$`SVQ&OlKVbme}@RnZx)*w&cCjk~hSS zw)nOc%}Lxdzp--H> zz8h<}e>A!L;rWVV5-+d(XP()eK1Wu(=&8oM)Cp#XeLd_`rTtcA8}W0`-N{h8qiNUv z13SAzx1BR$koq$`cdj~Y`Fc&rTM?-Z&)s8QO~oxV#f6Czpv@lu{L&n z(=A=RL+QKJu|r=>@4T5`&9boSUO{-?`tS>NQ>CV^vn_k1J8z98-+S+nTR~+Lf=a#S zbX_-;t@plA&+PqCEqn6&&1RL{(jS;}4&Aq2zH!>EE1P#z%oTW*ZgVAFp-=qq{Q~_t z7p1@GddI)35w3UVzEbb~(~f(COh@sH`$_MaZu3VxmRZWf9<-!&USODf1RJ(4{9`nuj!gthd?hk*S zoSgAG$n^?G+4k$!2M%p{opItxrn8xEZJ$qkt=jJT7<;}c>%{LL^ZCQAKVg2NYMtZm z`jgq8bLV}s-t+BVYTz%qi$B8GJgj?LQ7EolqL%z?MRDMi55L=6ZVC16{=nZeFX-31 zpsH_-Ro~2f3X`t3i!6?=+ zr{*=jF!&}gzxMb8?Z0BL1xlc~af8RxCc__O0-YW7A)T-(ugw zH~VkeE_qS&Tl1Zr{eSD`_c6a|x3KU3Yx>6i+`p)G;hXmN{r&nT|HD*)gNt@_ewm-} z-}6#z&;7?g9bWuL+m$&X;rr30ObiT~>$ltr`G#lc91x} z|9Wp}Ni(m=k^9_D4%|}~F6uB0{3CdVVe-pGDzjvw=U#o6wQJE2p&I>vik)7II`t2T zr`D`ny?E2aCPUw<^Ple&&wpO|ZeDi%zhB>&9R$6lLVU73l2=Vvi9NcdO(o5A#*E;= z5X18mR_^L$6W=;XSEudbq}Nx^?mC{`ml`H}yXM5+WuejcK1U{b+}+Un_I`@Q{GRgp zs|-}8-<3L8d}+hBt2egnaj&_ocsk+a+M?x$Y@=T-G<>;#%WR&T(fT!~qw62vUN_-Y zm%y~`Z$6}5R=Rpe-crceDsi-)f**jW1H zgxQ@Uce&#Y4wE9>&KL5uUSO44I(^cQ8)-`w^b;))1>E9k)lp|U#^KlA6B^}sapLd3 zC&AADds@zHcz)UL!DNPrjGfyWcM51MHCEA7nSb=BK&|zf$jKp(wS#`ig-$kpBYEjf zrAp{p-)m7%_UP1@Jh`hVFKNG2dUt~LZ=)K4lLl9xEh$jEVW!!eXmjF4(uSfYKduWe z=Y&W|D6F4sGSBOj{DQ_}6R`{zJKz5f%*Ge$m{BJd0*@v2OlM+Xn8QkBs)rnH3eVtbi?n~rwu>FFA?nnG{srfNP??>HtUtjs9P!}g!|ZPc`!^4WKfzF7Q& z<=<2ng^NenKNS9W=$_P5zD(QcHp`FV=l86O-`PGtcV@f&{QXQCj}!IJEnG0kFyzZ( zjYBI%ytI}jYRw2-xIn`va>h-OypGMqTzQ&1&I&xQo2$5a%hCGo`mk)e5^M5 zNT88m-Yv%FZA#MHP6hn9QmVWE(FcVM8P{Vz{n-`yz4GkFGpmwki>|-;AkTM8#ks!+ zJ{7xvR9Ub;ueJZ}f|no4Pw#Q8W&7Nk=M=o~`X|vli42D~2fwtL=^uGc>06oGj7n(#+v^h#c|>~LjROo6(-rotKB2g7c>(Wr>lqVwltr>1 zpV52zlA({+?Bgr;Op>_!&Nrr^OM8ox|6jC2JpS%arF&B^bl=|N=@oITt0i>J$A{H>zVGXp(h{bka_1ns(6x;h+xR!$Y}>u#`0U?~ zH7W<&*DBcMIrGbXXgoAK_nnHa(&43AN$xJw7N&+>Hm&YEC@&eCF7T|k=hTIXS4v8k zZrHzeR{4~-GMP@E%4?ro6AgZx9Ikm|_pGA^b4||V=wxfnoFnD^d`m>l?M=R_x$9@T z#hK>%ZhhAKx7PK1!S>H>bq-!v=On&3wd%NA`|8SQccsZ5SJn>w0>nWZOQr;;>s+V*1x+I^VyziFL99zx%6$VUE$kKHUX{N>QKu<|lqQ z`Yk1QN3`wvT|GT(ZkK!wblRTd>My)#-Qx=GZPU7SwJSGe_-01NZj?Q8`RnJ+aaDU} zS$g% F#>hI#1eA}4;+Q?vY~ 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..afb32963 --- /dev/null +++ b/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-bin.zip diff --git a/prebuilts/gradle/DirectShare/gradlew b/prebuilts/gradle/DirectShare/gradlew new file mode 100755 index 00000000..91a7e269 --- /dev/null +++ b/prebuilts/gradle/DirectShare/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/prebuilts/gradle/DirectShare/gradlew.bat b/prebuilts/gradle/DirectShare/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/prebuilts/gradle/DirectShare/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/prebuilts/gradle/DirectShare/screenshots/1-main.png b/prebuilts/gradle/DirectShare/screenshots/1-main.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d46e42f7c6c623028574e845d613cc08795d9e GIT binary patch literal 69543 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�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 Jvd$@?2>^&RbEE(O literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/DirectShare/screenshots/2-intent.png b/prebuilts/gradle/DirectShare/screenshots/2-intent.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6f7d0050c94454c8c12f9abb3698b89e06f0e5 GIT binary patch literal 117193 zcmeAS@N?(olHy`uVBq!ia0y~yV6k9eU~k}HV_;y=PJ9lMU@3O;4B_D5;Hcq9>0n?` zVDNNt45^s&=5A&|^!3_*AK9%rCOyz96x7U)_c*zG&k3(Lw{qv|&9n;CSs9n){b`c; zTbEVov$lFo+2(ntXRV2^_2a@TYI*9HPi>sNZSt{|k9|`At7>0MiWE`}oRk^3WXJml zYyzkMvwF92Gcc)a^RBZumXa11|2~iV0n;A-b3bJ#FPXpq20UlxyaTzDfq~(SC?h*q z%)o|;56noYV37ec4t(IS05cjM3KoDF42P8;Kp1WA2N=ODp8f`AFhfF)7=t1&-(~1N zs{QN>-W3e%Im(r+x^~aQdU;h zmFw51PuiwvnYZI1+tcUIkN@2ZfJ9AK&wfkDs5Fl@$^kym+yD|Es&@_f7v4Z=Uev`Sa|LkB%1FpL_gq z#p>1CoVrYD)4nwvPTQRM{oUPDCr@51K5sky-Lsaj9}e?p|Nr;5>i662m+y)&FfgRd zICbjO$2i`pQ>XqqlWv#1gZt;HQ(m?|9yH(DmV3Lxzjvn;x7WLUzw>OrUJ0J$R$V4z zRpPP#$5H(&7cNYg@OR0it65hsE%koBrT5>zx~*Hcs;+QlQ1hxjpxFCu!i|l|?QCpp zU(D-2o42 zc_(lCysB54wtv4|-Yiu$N#p9(tH0ir?_a%dpWWU+pHBZe$X_?%((~1O_Qc5byUX>b zA1f7>%<~A!%Uic<_3F}3PfoVv)ZEzUAyItJOcy6v1y%( z?#o!DgLmG|v;BUjxa!x-<-uYlQ>IT}y=zxg-TruWzd0RJMJiTzB!VL%G?rhUc`Z(6 z^V-dVzJ7jvMMXu2?oHQx&h%`3&m6UH{r`XTe|=v6?|J6!|BL(WW*P4FU|?WK@JUv5 zS8L()xBWV$?(ggP*E^rjJKgcE#aOK5&#&wI<<{Sv$dmlA&7`XfDUA)j*pzE`iZWGxC5 zQccZ-4!$h|N8PsE+27vXT|H~otR?UAb&hacpS*a(27}CpZ6>#FE6!zg-=1@G(xvam z^y`0mU%h&DX->UI->FkxYvcFFRaRC?Nl68ThfhB@$8xgZRuf~R2NIiWf0tF-$l3n? z^I1wp#^=?(9JASS^?wTA-rsM(@;4&`gTu4i+j3{~$yhAdTmAjjg@w+=x59Qg^(~)Q zb?QR>?Xd9h*Y*FN*MHf%zSh_N$3cFfZFiR~TlVp7f2T;%maSV?E?agifHBbK-Twb| zcdOs;)w~^FUcNo9{_oc*Z}lgsdQZzZ-X~l2;UN3d&p*Gk*Z*iYwtHrM|7V|E#e>F{ zZI3q|m%IG)^K;={XIG{buXz{}8VbsPw>G7AYiVgMyZiq0&ytsyRR6w7x4*2te$S$L z^XBa|s|_=xF~ZB@_o^YeONeq?23)zZ}T%$R-b)`W~=+iRU`!dCD5wsrl> zjmPD>Z^iAtyN*}dEaPw+?_*W@x}T@x&;61}(|*j%H~Z|e^L5`gbFnb}`nG-l+z)yB zeC^KGWp6H+@BewWB~Kibkb@&5E#6tTBEzrf zo^$KgttFvKS|2cV@ZnW9!$Oxgg_p0AtO}G0jdAIz2t(K0CPkFH#CtEY;-MB^l zS05IM2;ahh)QqpBEJ*VeeIm#TkX&i}Xa-|zkZtIxgda6iT_lPp*HM6lIK@$b?2 zKdy(i|30c;XSnb-3j;%gp{a>U#`}AFi}@^%UGokQ$?>GJkta{rvoV z_W60Xo;S@DkDs|$@tF7Tr|J8rTz}o0`8PUmr)$66uZ$?>zN@Rlvyb=5{RzRhk|2{o<7?Dyy%q+M0d6Pha_ogsFwa3T5}cBY(7O zA|q$o{e9`bdcgvPle*n+R>%KcHLvoSWTeitmb~vjpU=O3u$evm>y7(A=ia}#`MjNV z=FRN&d&R=n&nTEwx@OXs+x!3Cu6nVseVOk1l`Ai9-~TuF@2l|rQt{jJ?poD8mcD<% z_WK><%)5sUIlaBP***T>r|H7?_IdCK7xdiRSG${yo&D?C{5s=jB86JrM;EEjuL+9( z`zl=cjuis~!x{EY9!snbjNdi5$R_uih!{5>Dtn4+ZP;^XIolIiuh>a!CR zk4Nm7*fmS_VcP+LB9GqQ-dAtl^kl}iA6^K`68Ea#hx+;XO^OzajEsy7()*zwzi-Xy z>H6niZ45rG$iu^P#!6?VM&xm=UNKFxnLd-J#qKCj%rU6`_{i1v(+TBY{r`XP->vz4 zcJjO5H;&s)oAS*yX-C(r)L% zlew@h_jb~)W7~3XFKd;aw59z0y(MkZ$yr%hTk`MkTk>9A^4r_n)4ymYr5lMA`S5nk znlg~ zdSzc*Gjq$E=l1`1-nxBz@}~VRGTC)?`^<80ndJTiRTCYJi|@a`e*f>?`@YfpYJPs2 z!WP%|`k-QO-36OpFBX5Q+FSMS=ksJen^y%EUrs3Z8|bhyFfbU-^!D%T+`Q3eO2^9d z$AvF0DCXYSptx}J1eMzdo7sbZ$+&KwP+eqVVzOfQ?&@P-^LD*dv;B4>Ici@`<*_qf zH*efnak!oT^>X{aEBoYZwLE`)S#Ce~Q<=@jBf^vO*qIt7m)ovev*yaNUg@h>t}MB{ z-2eQJei!-IvgLOamtVHbj0_H*e6Q;D+7gA5;~c`p&HeSqs_H$Jf^$ z>;4$>|^Z)Pp_U5Ls-K_^79v;56vpD_6C!Uj5*Sfm8 zGEc9I-!FGLc{!WR%Cr{^haVPXJU=&gQ`A~eE2OQh?a;dP%{RBy{w`bA#LB>MV2um6 zl-;{ zxp#Mk^4olHIOfCs`&Rb)rMo#F&#U|OGP6`CuJY;Bj@RK~VSZfZOD?XApI`ZG=7z)e zlSQc_ZBYxaLUz|0S-__Xx({R3C`Bp+_$-SvLoZ#CW3 zYu8>qU;poOM}Or0y4o976N9rWRHAcp*JfpBKd!qY|L35*k9Jj5boApOMbrvrs&~#_;ah8BdOi$NQXIW7H|6 z398vp3T-N{RPYtMexwR#8@}^Cjg6?cO6CN44(!b`B@Z@P*w{L&#ZvQLr z%5hT@lNYVxaWhPGUVM0Xxa#H7>60#^Rcf74pjw-Ba$Lnj*3j_q*9Y0Dl|NN`SrMJ-?Yt@Q8O7lPn|w} z+4lRL#j4)Zd{#Rf-nadH#`tp6{Q3XBEKlTa_51qweSLg8pX{Y$z0#$Bf0f4WsW6N@ z>oeo(>hRav@jp*(dHVlH|Nj;1)~%beE%hF&3}3smzunK2U9&-r`pS2p;&V^sX1Tf_ z4>P~-{q<_Kq;y`-&CTikan)~4LqkKCuH}7xe*XCzipCpftXFi;&R%`%)-4eZmP7aM zU%k2%)JW@-h!GJHd2v#G{uSHrcP5`nOIrd8=`R3T-`neFfBI%n28z%bt+}_iwep%TxoA~zdt0t|VfUlU z*RLTf9}ffpmr9Dk^FeO+vKRK2nUPgY8bi{1SETl?R<$$5KY zqx0?U`SBC>nwP!5XZtqk|5@|gq%TfKhz`FhRPv6cgw*~c5 z8&Ym>%Zb-v7udGww_hw($a~2WpJzDenWMEX(s=3zX zey=+NqN7)DzgOjb_Uze2`S5^%1)w%p)uT@Jkifu=4-WCJzG|g=gQwNWs^UY!tf(n5 z_kZ8}{v~?<*XYU9SeY2#-rnxN+<(5G_iS)CxxwOyP+pIr(}}__F9K`-zK*|segD6& zQ{H}l9shqTN|}Bbaj|-^uJTu>p>|rQ9d{zU;(III{)vR^w7Y- zjSA{j6@NY+4-E`7%)D9se(&ZOf{T4cdk|4pB+)r(aZ0;?=XDz z@woi_ZExcLJ&nI~VbYUZo74M2L7n@vzwXQ89rp6VxrzHeGcYhTSh#YTpPO%Q|FUey zEHO6@%WrRQo4<_^di&?+=UdzJKm#G?A!nsf8*_2-{A&$N7aYz3$x9JRab z?UK~e($cEGU$0-jvgk?0qfYfNpni>X-Iw?O|Goe9Y5M*-%fkL1J5=)>G?Y--A(Hpz z?(XpXJs*!PNi{V!1vd&xjcuR2c>VhFy4c;5!b+|@{+MxnU2L1amQ?pov7(B-ak7?0 zF5&Cr=5Co&@YuZU?Jd*XNUQcNmBY*J|7L>A=huIp&CY-2|L=+ar7NpWioLTI09AU9 zTMCqea(kWI`6P{=WMpJ;R4<&y5xqSx)Y;iNXxrS*XTc`|!^4+PR`*}EeS3M$%)<{s zEt4-dlKXXk6eORXrh98k=H(@+ckkZ)^^m`Q#ymFFgUtLk3!cxfk29N{d+8Hs(BNkJ zeBa>J%c6I@cLMba**0^UACoYBVo~)a<3`!}qxbe!KR?@}`EiE6;_=)0``4bHuHS#Z z%tGeYuF}<@dO9>LOz%a3^CWO>{mG|AzES`F{eGYQ{oUP9 zReLkDZkBNWp3A|&z~Evqy&(C_Lg)4`kGl2!qU#Mcy3_OoVRWw1y2-Cd=ia&^l5`SzKWxw&i0-rbp5sK^H%05Wh@I>hU_YTdeP!Tz?U zxj#X6eZ0Kn-ObJE=Um;-&$nN1Tm4OCh3hd<%_kmVdndbCReoBMm7Oih!J^hG{rcM4 z*=8|`iofnWw^Ltz)hhGm`ns>$SFc_@TQwUrbn^H9|5{MXvN-qNoRF}vR}T(0YiVlE z-16tu)zzRzfE!y0c=YN3ODC5(s2Mr`&lB~c-FGKX+yCp;>b9LP?(Zsny+;3#tz7@M zyt}g=h)ISonV>wGmxt%Yi;Ig_tzWNxha>sqB-LMg@BiNGdD>~=g*jRIHUB=(zYdC{ z>G5@u_P=kQ|MFP=e*|B9a-VK*d}884J~^8esi&v;M%}w|Wl8MrvX%Sx**(qeVg-lC zhk7k-ZDFxI8H<7g7aq2mSZzL)6~n^~+~pbn5FC*MHT_Z#Uum^UKcswo8`J ztLiF9Zc3kDTNV}Db$Pk}>$&CkW?ucKrLDa+{k+`Gx8FXde!o|}eqQCXnU-6N&G!Ai z`+n7~T~)U}ZQ5kC_v^Ljtel*l*YTUW#Qj~tV|0J!x3#rpvYI{SHD9%A)uA>OH*WJ| zF0;Ow&8q$VP4~p2MH?l!EkSkE-6<=W8XNj#EEoOyRb~6-f^*fgndw{V{#G68{r|XZ z_t%yFwOO}5$^ZXxeDl3$zrMa!Zl{ch)GWL)6Z-?QN1!-pSJ+xg|MdF$^rS^ic}<=V_} zPyr=2udS`kGCz4=i*$0?yE`k*@7EaTeE)jvnA_VsJB@kQ&a&=5zWCj{JW&ymB{lbx zOZjHaniaI~y$2f`+mix|FYfhU+@p3DJ>A1;9#{Xjbnm}kuZ!>X-G6@_6uk{%zTYvM z0fk|=XTIKeum1nv&2>3e7n?y9tVh#Nu{@8(uI}Za!Y)k|(xjB!wc^Fj;^&vla9Kdg=SU-`)1ui*TJxF*;fsZ?vuO z?X9hn*O?g@4jj64;lhIC<9#a^E=)YwBAv`({wz)BO2qE6wSM#M=6<>v!zXXI=H9(~ zQ{KM6vNBlnwz!zu2l&kdx4Pfe*e<&-zJavm+j8 z+&?NT=0%9-#^Cq!GL)apXx}s^OgDDY+CMh!Ma4O%ilUU(z5dL4_4@nZ@c!^#UuG$Z zFUvP91>2GHS?|G#(_2^WxM2DG?GI+f($eayx9pa*z5dI^;#_S;T#UNl|fE&pxh z?(4IkTm$9khL2}=Hz)_L5t}R~ZoPHKjg_IN@2<*!6MpyVzDRc2?k*W4_njAXPi#NG zZRH6CvCW>@;m@-xQ~j=7uU1Rj?AhJDIV9%Am94LtSFL;-R?w#?4RZLIbQT%I6Gc&5 z@&OZA>UZR4N%>z8}U-b#gcxoMVbcl~{q z^mMndc-YLdYPze>1n#@N?z`Xi)82EzGi)5)4a$5wEzRzhzE+Ceb7?jI`fo?S-Z+=H z-bqn2sPE$K=iUz7f~zkb)zj51ZQZ+mWvRithQkjxyf_yvu4%5m@0b3@Q|C9oJ{K+i z@r*Y5g;S=@ zUd5HnW$rYot?lotx6-<5w{Abb{2(CbsLSV~x4Sm3D(KS%jb=6c%yj(vKtkrz>&4mg zGEeJ@ZGKa>S*EP})19)XJJRZ+!gR||n+x@&q-9HBT-h#d7T`o%3N&C*|ziq_qG4DX*AS zI_CqOgMVz`0fo2NDpt{gAAcRMUiIg*49sLF;l1SS|rvLvt7&oZ?ke%u5{N< zUisM1ExeHlF{h`u&6iF0i9WvJp8ajX(u|WAHpEYVRaLt6;Nsb1<(SsNBLjQ2UxeCnRR3`^CGDudesscJi{lP@(Mf)2m9gKL_2= zN}1&9dTzz{`jWH4-@mLonBZYLy=sx&Ivp>5evtPfI>fFBOuY#T+9T|;w~E|5bGCh` zyl_eN=B^^s;#V0ra??bgSf^}{7U5yJdj0+M<@IHow>)`vW6Il2y>itWD)a4E{QD=! z>+3D(dISZZez0cS?c2|T=cl{; ztbADAzN1*!I@&w0&v%{9>NjQGf0P}0e>1&$`}wHsxg&>PZqd>|t~UFw&gPR#1nUFr z;sfT@#e1c9&D4Jm8l~NEL9pP+g8BrP>GrRJug>~lygXuUnr{58)!oyp7v()a7cK72 zh*@i&|`XdhSx@>FliCSMNTayX8z$XUyWG@*J5* z?0<8AjqBG>I`FW>C9i&smstABMJCa%t>-qZ-+W&_WPQ3zuP?J;Izw0c(VR<@KIKf+ zI~6qVw%kXFCdJHz1Q**{yQ}8k{HxEUZ<=rpH0Q#w-|>LpV*d5tUbc13$rL}8JZ;L3 zG#-mjcgt=n$1vPfW|5!tq$Dat;Gxs?$C7`SR=!f=pWo-4iQ-i?dhb7}FqcOS$LRqot2V_AXh;|@<80}JencxPOAQyums<@T03-+f-`GkzY;GF`pmz`{jL?bAY^z4%)^H?Te1 zb#s;LylJ7&j)&Z&DPbQwxk_>^Sa^2nzY=A_!V87ZeA@tadzX&Z?n6;Cf3f^ zi|La4)UtWWm8HC|xfi$DToe(tD0#lNJG6SK`m)F(q0EA|g+}HfPhMPV-@EzNxAySg zk7l)5h`F-*-7O0ayuqM8%Vv9Q`Q2?1@AuwccW>W~_WUQ$Zj_#Gb9(Bkc|@w$bFr=N zyPb<&OvS68*;JpYv4{s{xfb_{7cFA4d+G{JFY7-#`QY5f%&VUy^sXuWd62(78f1N1 z?MAa>DU-rJKXv@r=-kXUT*WJwiwYT z)I=riC z#x42PTeUxj>{O}w+nVy?K2mRcrvbjH{0PggHK?UiD?`Bv=ij=E>}80P&G{95Jq zM4IzNmZ7Hl?PWFFZHwNrOx{vgIxp&W`;*VT*Y;(+mkRs;;E8~e{&BtVmMX30=DM$K zGhGkA=8pG%yf|C#ZbYcWM~OFPoAd4kEb01`bM*CW@Z>CN9WY|K&y2;V+4ne(kQW!=JBKI;4M| zZ@25}@ExVkYQm4a4PSq&N4WIwuYr5ro1G_r&)+(0Yu3zY?deb5cqEI8a{^zVeX{edR;)}VNBi=6 zm*wZmR-HGtb=h_6L15s*;O%!McKUg|Oq#ytTHep+2F_}}c)a|!@;NV~H@u*7LFyy> z)|$*854lpiV^{6Gve;q9bM4cap^=_XxF6iJo8LD#Oa6VM;Jbh2{##!5MT=zy2L1?G zxJAV~UEl4F>!I3!%S(6XMavXUo7;KE(rjn=)6B1@Y`%W0x_ZxY&1>D}SMoFN@~D3N z@VnV6_VUta*FG3m{P^n#D%%9>4IXVdaVaD5x(B0sWvBNtj`zCz?NXmOVuJt~g?6Ugkl1)O>rJfm-uAK-eqBkyNbDxv;>uSY1Q@*sr&!zVs*j2DneOdR` zrkeJyMPJNzRO~c=bo7?XbN#O_YwQ!Z&)#ZsNdKC4-ifJ4h5lt-l;?Q)w|K7L;aj}7xOZ(dd5PTi8`^97JE$92Q?_SDsEdD)_ib+)GRiod-9nl+&rh; zOj~Ep@1lFla^iLA3ty+5_&tARoYNvuV*FAuJL*;%pTIJsnQrZ6Yoe#F|Gj<6>uJ5N zMbFi?W#sy=_y3yM7T^+XFVt@P>Gz(s$q}Vr=WY1E&iwelJ6|f5_VYgzVuCxYZN(8y zk;Gpo3_Irts)+q%RyOvFw+;=Q!u@~Qv>$rsW=FGctt+j&p~z{OSa-5KHF7cEjg*h{+~0s;_~qqlU3a=XVIrOqc$t)FH_VGj?`5PosznG&yl6Cb(?opEHzg= zJdf$1D!9Jkr;oeDKlkmN~l<=7_Jgyt!?K z_}!0j8+iGCKK;sesEzYxWZ2EO(>xFRDqTG@!7W>~#C64M0nhmR9ahRb{2!_o^A~$A zJGP9`bURPh%}X($?#i4uKlJ0yrcKs5y?N`36DvP&y}L{9dA4zQUHy~qVM`R;*l(J}5x{Nnb#jJ!O@;$K{P&0T*m&B$}-O|w$J9SOzmEAI+; z+qSH1Yx`?ewa4_`@uf}*5|`S;e}8#+)o!Y8*~&#W(MMhVA|LaxgDQ`k5jxXXhfjZ9 zHTlY|my`bb>76LoIGs81YSy%?Nz;xhWgbeHFz3yedYh%cA*p5emv~2sGd{78Yn5l# z7EY3Vy69q_@#{w2r-k{(QMN5B&rdf!_1S#RF*)&**Y23Dc(%>)=9;vr(|3hz((ra= z<%?X*^L56Flu6gto|-Ij>FKV0Pt43by}CAsguM#dcUv!fnyKnuhi6)MAr;0A!Ga?v zvwG_S&14e8`h5i7GM&mXJ89ZIOYowP?yjuuu66&!4vEZE{B&62 zzf0dGZNK-kwELFTBLBo$vy(4R+Vnx4E|QnJ?jiRMtLD{CyTT-cDO# zto4QeNPL08)k|{~S(qkP?>J)QlDtn^;>+vn%Wsw3_C2blU+5aMKBsWnI`iY^OY^iq zbzJGQ83`V*UVdG*`uOU9jTdLSy8Ur%Rr8s(l0Ef%Il-KfKRxdT(7(B7;yWhM+r7CBG`=yTVfK7CnUe+e|bSTprmgiLY$=XzJ3W93fW&##p#7W+6# za+m@!xDwz+iDU*)tXc_KUxhr6u#!*-6-Fsh|IQ-?!+`{g< zC258C^d~B%|7+#ux9xqn`|s?tYPy=eHar@0nrhnfR-EAct$)+F;!9EHyt7^7?GmqIa;Zzk%I4EzwfU}l<|3Q&k5?i#Mx2#2KAN-Z zJh(5jQSm{?f+Ej8ySng|V&d-m8m28-&HJ})_Rj~eO#QDc6wVHR>dITX%xJdnu1e>L zTBl;P^h+}@>vpGf3I)|%5vaW3;kPaHb@=n+TkcPKw5B6?Wt+;@E$({1q;hxNig51y z*En&7ZTY4-VRs8pE2UaKmgY>`IIA?cbmE$8Czhu#+xL8t=+iB?&l>vv&N7=_QXIPQ zj^)Ja4NHO$uDkFe;@2IS*{8f>c5Pf0@I6=W^4Y7cr#g*vT&32k7w+3;?Yh=yPNU=g zb>_S-d+sNhy}Z`z8nxRf{}}iBM@q{<-qKQ!*)dJ;)TL$7Vy=4}-oN_hw)W_TM{O~o zYftvynw;#p(tCT3PS*~<^6lY!YbUl(aFNz~Sav&ff_U`%##`EZx!iXCI9q)C>&D$) zTZ(2zZ_{WzI>Xh~@9yTz!Yi3!&Xc6px!3)@v~u@x>8<5HS7+6TK6AI*c1LEmS-w`_ zPafx~k6u1C4u=&?X^x_jXU}eY{r%ng8Qbn8nQGrVz4V^l{W;4ReYbaqSB1tr>9IJw z@@CGZSyL-P9k1x)8+KLgk&^m$I>qSZ(=8h6x0f9~>bJA_@c9`VSDaWmdo_3Iqvj9i zFCIO;ch~1_C-%pzk9ih$QfYeBE%vLIt)sRdPBPTgzrOD1Q9n^pE9HG@3n!GUTxb63 zWA!4Qc*EICe7B3N-kIvb>|8g~XYp25tKECDGNtEi$tzzU9=@(>OPcGGL@vJFuA$kV zwx+d4+t%7u{&IivmG#N@_7tPuYp+j~MNXZb9iGRtS1jswo6)w2=MN^t+t%8NK54Cw zw|FCVxAb2}^#i;E+g4}-cEPg8D(#Jsq$NGaXtp{o`%pXOgkH8WFpMMLtNq@s1V ztlLXJHTU(*USup67w?dMuKeY<+2SX&I%_t*IJGG&GPQ47=&^7gLkS+&x2YFy+O9cW zS{o&v$R?6mvg6dMH$PrWUorpYK6kC_q+7f9aIrZH>Q9j^>z<}Nx8}?}j-!Fu>%W|s zni}dF`6Z4$Y<1+(RzFd3tHtZY&weOyc&?XLwtnHRU;9>URn-xjtaWNrXrS3|r8Q;I zS=H9i!qmX{m&TdQgr=h|FexX@zRMc?*i z(;Q9Jf0WKW^>V|KJ$bIs9B>g-vTnY;8q~I~$t}M!i`%VuZ)$+L{fi493Z6Wg@bSaX zCQ!Ti*RdOV-~8(?ENs*G%KNAgq{MIg@jt&}{;e?2`go#Z?%oSaFF)V4NbJ^}we#ZU z_sz{Ye`BF$@ZS1u!E*!CPS5mIkO+#ceUh{#ZL{Z5*Uj%ajiaGy)@9p*wiQQCzvo}I z`1b16*KLgXDh)PW>r?!@|9jNdI^TV#ykoiwr(N-Ml3L4K_^_z|7rWB+?Htd)?DQ-B zTCue(_1>Cgp|aoDN_MU@eIo^@Sc9eJSO?Y|F(x)N_jG0PI}XE_>`Ae>Ppj7 zK9(mZz55IruXLzjk&$|<^p3yf$#-^Bizn9)EQpV_jWgZOqxMDopO2Zzo9io$Wq)1B zz5Z$G&Zv+lJ(@Wmel}&jmkO(O-fy)#U7jg6`%QT9=>^m7Pgwm)DBS0$*>85YD_4wG z^slRYB0cl&goXXZ9A7Rh1WIvSywMg+~76nWv`JCMCukRL*N<+PSgEtzHLTmS zF~LJw*^!s$*VUVE=U)DICT(&Tmu%7V8&6MdI+bO5GRaI+WYV9;1%LicXxq#9^~}UeyZobm`M>`+ z>{p*m3DOX`bff-knsFm!chU)ohfcjKx35k9Z+tB|S?A7-9XW3r!L~5G6wrKPFx!1~ ze#GIgH)h;g4VoKgU{IK=#wL^ef9|#B65fno7XGZ#>C!@zJL19Ps_ zc=>M7_$UJdL$NDALt= zOKz2GdpIoqeYXE^oOyfS`+dKklBAD_7%Ff=ilvL%O~6|F8s)E;rXe;W>?wUS)e7nlm0R@Fg$+ro+II1ja~ei>!N%2?#;@}3(L)2 z`|0!NtyN#MKzlBp)fS#(I%%lS)c5m1j@juHBTW&mUj5AxI+;0w49eEEzqYWkvmejD zU-^7)+aI5q`o|d`8@#IS+poMKAmx$et;?4eKR(|7`qtL$U4Osbo;rE5@#AER^uwo* zTo*rPq|em%>eVaB>o4ED3Gwzm{p0PUM@dtsOgZyoM@Xq~v4u?3?y|LdvAdQe7_68y zNk}((n~v&lHiQ2r=H{!{uh0MUO}6~b#ADaa+^ezVlV}gTU;Ib5u~lj6^Nh^Qm0ew3 zYP#GkOrNUuzIy#SxV-%Pl6&{ou3h`<{{O%6psf(Ct*wFE&ss{)3$$;ZX!*?bz{bSG zZIai2K4|7wW0lFnP&yyqenHbP31glVAlH`VWUx`(~aw>rLk z%a#|fuC9KWEwaJkY`3D;%tebAJNx?jO3BGhyZ?Ur*|gxgx_#4hB8`&8O+B-+vnStw zFTX!FE>7-povqyY9~Gwa&#O;9sj~a-x;=YrrcRr7EaXMTI?#@wTeq~2EdjEYmWWBSgjg8Lgt6Ix1uiUiBNH=PWhT?At8JUpeT~DLeY|aHY56!TnJ_p}77VeLn_1n_^YRtK(*REar_-^AQwZHpKezjja@_ECG6&aWG-Gci~ zwY9xjSy?A7dG{{Q)WoDm{I8a__GMo4I|3VZi+|e8cwOjXbp3n1#mo;kt<^5Rcg=kF zeB%B0;nC5zf8_4ID|b1hOZYzX&!0byx7BB4c-*~v_wjc1edWm$*L;szWY_*k@brDb znLi@uoxFek(xG4f=Dgmh_PE+O@_EK0QE~C?x3{*gTDej(zU<|tr7KEJlPuGPfBw}` zeg3;(jjpb)?xzZyPrv^f%|2UXHCIbdFDx=L@`%$yx60Z?85SAN3wQ3U*_?jf?-z6S zBIERP8ArQBcRigJy(sVbkxt=H6*iBzZ_mFkSNeC}Jh{1+#csN~x|6jG{8P+khlYhM zlg{5$cuCx6(H#5wxYE*6DG7;=9e!b9)56xpSSB0Z0By^+)H9_wKbSe>Z2=tXWEa zA8TG+(F_d<$#{IM_td#_eY^Iqd_OaEb=b>oxATIFi#LM|n>TOXhW_rabL1y?6#qQZ zDg5gF`~DsM%Ie~8l$74QO`?{Fk-rmW#o__y*_#flcj`Phs z<&KARR{i&%!a09$ve4JR#(|5@DNjDRB>8w>Z~eBNF?zM1CeQEL_5R>NM_Id?ia(XI zzvpy5J2h3?s{Y@fA8%j1dbNY8&t?B}p}&?Q{Sp8AP8>P^$>(ofoX7q7omSUUYVy^7 z$@nh&`uh6oQ&Y7+RqdVRrvK~q?c2)#B1BJH&hB`hu4#F{ebSX1H&$?q>w)$fzxlg$ z>(*1JPF?B})jo91*znS8?qr1rGZurEkDi%nEcpM#R5$w^P{Fxyp(ONyVLTe*0#bM&^H&dOEl z^Up6o+|Ivx?_S$iRe%5ft@?hq{Oax7t9zx*k8ODyl2fnN=-}{v&*#3V=;+1kuHU`8 zR@uET({fl+G-vzn49_@L%a`o!V zFE1}ozmumR5KvpYch>CLTQe^&o3YLI*!%CV|NQ)HRsJsK(7B%_^G{#=_Whjo`!f}F z9xH#^%;-(o^WXU8SFdB={guuucOPA}XwjmNO!u3cn_sbS)a6x5g~zr3;FH;6x7`O`ue)? zHRrR&AIU0GRKAInSp{rh)v-9>3h$&1zR_nO~h&DHz$`}fyxxAXnIqJ7mSb8&M& zE!&;CG2+6 z{fwi-rtS8V%kS5gN9{;7n)#$`_tO%qr=NeC7#JwbKfgS|V8yLlw{~o+e|yVx@ArGv zlkcgU&Gv0=Z7s5zD7@)D_ z-@iIuUS8j*|DT?oF0zmTWs!>6YruoxbY)LYLD^ z&VMp|`460hPug8`0cGLex;MMJyVY4`f}L;d?D~pG51*c%o;=MLoMb`4v!5T751yP5 z1TCX~yngbUT-CtYM}E2p zJe=gc@=Wkdb^p0Gl}5$~qt=G?^!BE<7FX_#+f)6$Px8j>*|VpY73k>d8Zz(SyjeIn zI5_h6-n)6`&z?WuS@1E%sPpJi*P8!-zfb>FJN@+0EhqD~C#R*UW#^Y_O+9q!lF;X* zeS7!zE?l^9QF?RwKK>Yq6OSK1_W8LoglqQf*%7g^sXTM9UJboieeS8=eu4S+^~a{` z$Im!#Wo2bxX?e0`v$_zc-k)7Jx_IYbz8t(GMsL~tFW$_U(n%HJQpK%y6Bfx9eXZYGsxQCtx%|#!f#v1q!l{SuyX&dQ^*^r>ym9;X>DOC6 zRPF8Q6Px_lxkIGZ&(l`LH0t8hov)T0`%^RZnZN2St)qK1zy47(KlE0(bzAPV<{LjH zC%l(@|L&d9xn7_Bb7ssqaY|q1&3Sis_lU^IgHN8QG@Pp5*Ya&)aEP8~ZLRITzu#`p zslGbLPyOBf{rq$Nj@Ope)WlrsUL~;q{`ob0w{pyEYJM0j54>{mVxxP%oT1mlA3rSK z$K@K%nK#c!J11?kWWT)qxy+DPU#ool{1&ZV-ThlnBuQ8jTv=j@Aml@pr| z)>Ln4hg`8iiY?m!x z&aE~fJ1fhnxY)RSuHSO+TgK`xJC5(&xpU`(P8Pm)<cq0w%ckhpVeHx+}vDO z;U%1#-Jg3Ks2)k%oLE)0>w&G`a^vjOM-Lu22tR$ETwgywa^;G(Yjvagr%ju-$TP~A zg^6)lUukKn>tT=lJ39_aJc?VtJ>ii01E;#}`SWh0XU0)xc zzV0XIjvp0!u%n= zcP{5}_wmP@bP5Dm9QgXYFW$MMljXm)p!L0xmtTg#$M4b4k~1^yblkPoNik4gsA&3p{)gA5%$p|{sJ`Tb z`hTaIe}86jPJZ|LweZvv6YEVPt>&JKk`xUJ4_99mvoKKk8ONqGbx(MH{_6Qq^Yh-l zxWI=e`P!LnZEf#>%C~FR!Y;n|w0w3|?)1@&yga>GBEFur3Sv8d?Y}l}`jpzhcZDh? zU!D{fe2C9DcI?=WsRu%|rd}6#=6+P9*y?2Kr7DlCEelS!t}wNaU-~n6<+fFc+S!Z? zb(Z#o2^iZmf3i(pC>#AkBF65JjdPHGfq)BJQGrH7!K8gXld`k2k`Dc_k>f8bE90s= z{<0(~C8g!J@b5)BqE4x^-rv|$bn*4q$jQsEXfF+#rXRyOt?Fptj^nX8kE{~+PtckZ z_hOIW?&EXp^FFCw7P4y(n)HS9y{?E=yjIe&J=cyK?avER+HN;t_5bX@l~0|0;-^&0 zl$Mnl>BsE+RPg5g`{KkapmOfz%fxMJPpUdURoI+4Jv-_+TUIE)XYZU{dt#Q%o4@|j zpOss;d1Y#cTPHnF-#O3lf7J5JoqF4sE^VDDeDuj<<&L5SJ-S)}Z#0%V-N-R3DJ@N` zua`e?^z^~k*Vli1d0D-rv~=O_-O*E3QV%8wxVyV^v^sgH2zjVYj#&p+>@ zbi_QJS1rD%v3ZeX|M8E1etzC`>e8=Qo(2*rVgJ2tgJaiUKb*9&fUV(5wCa%sQ#b0c zMqOYp`u;zwDo%2Wl)K;Z$;AaKLYzD9<{eW!cs_CB%}bXqUv6$~WmTE%sUpPr=IvWU zb?py}W#5$T&N}zk>$>yQz7TMkw>~KPYLmYBT)*W%Y80*;_qizboO|s4T(Biff!&=o z$!zw=H#d!SbafN6v$aoq%kZ!X@~~~(zPL>Ft|035ki0#?>mV ziF1PdcLYtXud6#(aqQ@uRvp&5Wp7R|DqZaQLn+|gD~|uxD?_-RKY!jOr5Gh~I%t7t ztwQ<#_0ygobzfOHr7$ez%lzYyAIiws&F}BdF_z$oiR0RQvuD~gF}$Y6^UG-EeKI6}+sm~o=-Vb1YxFpKYy7j00 z6^_o(Vjb^Bv9FBsD}UE7wbxhl>Ro*6R+NPd-#N{L=O-VyA9vx(l_P67wr$^D%*R(J zbm{P6=VLn$_;)Q=xw@!bOVaZB|E#(8#f4LEX_+6I<9O6hJeW&!-o}9E6Za`?;jpyO znzL({m5+~4LQ)db^XJbkY;2x5E&F*=2h#4D=(oIE&Nr;XL#3&;mGzi{w4B_rA3rMM z__qqJ-sRL^w61u^)_{E%Gg{)-KYyaWHBpVHzsy4B$HR7cmA|}e6>_pIS9=^12r_ln zoho-aXn|?%f|UR3k365st$KXo<(E%nWYpEwJKPo<%szYOo5({=!P?r|h`6|CO459M zd>3xsoLQ=~`oj{jr7O&ALpnhb^YrKDS+`fQ9kLNGnpZK6f9Jf78)9~fOK>idIdL%1 zH9|-1%lGfa$4x8u#;sYi#$a`vw6wH@goH+gT&1F2{l7CUd%u4F{`lNn>*=eui*THO zG40kt#nhjsrlxni@BRE~8MJarN~ML5nlKL=v-v|0$weznb;P(Q&sl%PCH-Q?l%IW9 zeg^0@3nfQ#ZCS>D<<8WG!(b3(@ zmZ`mKeRz7h{);znQj{E)_+5$Ny1J%ai*@C*=c`TX=y#>y>}mwipl`5P%l zhF1N*_!hcmh^!c8$98z{F$Pf&(n2Z z@Gsrrl^Z&#U*6tmV%OKNUthd>6|_{Z$ToSOtaPW#jNniXC+-Q&i<>-DgnqnSK7Yr4 zas9ZCUvcsA^2N0?mG`zhe0u23)13nE^ry{oQJR<<;I(s+dg;$Y0j~f46>AEpncTT` zYtoh)T}7MKd#8w>xO+GD*{zo)UV*BC8HwPu-zWnral`GV$hg=98|pE3|-|exjwN)k(3%N%2R`zBL!l#CS|((QP&;nO5%; zZ#QlF^wYoA7Fg)KIl~O)^_iii;Q{$rhpR4v-SXew*$II5d$gM*tIr2w+(VNMkPV!T3 z@mc=bFIKXCj)rC5kBbuN>FGZ6PtKXAbR=!FA=}q>e)%2s)-rvQ`qOmXR@SZy`Z{4+ zU~%2E;Ip68Rkw$B{#+YUV<%tt`>na!a=+wcWjA;C(AAS;&RcAjH9q|9+qMh6MwupcFgUdXyo+MQQwRjTkgS6ck|5u{dmm(Y;%p_xINxw*M# zv=Wy6NzzY=TQ9yoZttO2ue9R!)vWwAaeh)pMn-~@y>KU}#U8xj-NFEl;^JZ-`!{dj zii*}Ms2267K0LkEpeLGZ$_4hN+nm?^TfgnyRAJTQf#Koe-+eB>G`SxC>h)`Gx#g$J zdp^h>Dsr)za_hNPB!8ypR&X8)D~g^vKTXPHn#ZRzgzpqR-EtJ8FNMeU|xI^rX0^ zrsw+l_~g2}eM=VaShj50j9?umS=q7LxbX1y=HcK+0L zwvajY?w#J}?=LT_uUWI^!PC>zK^c0(zJ2Fhgsxt>l2BF_HuZ9F%ZaZ&>gwu}?nj=V zpa1dG)6;9JAAht63k&=3`~807{pMCyv%YUJRh_RNIQN34mZ+PzH}|q-%N`W%+#w#< zf1J7hIP>bOT-`^TO00S_OlBFsJb!k!xxVPR+gGo)u3M+4=Dg+p`{S#_*DtvIGQmJ% zlSu!;1P86Dk6ualy1CAkS#QSGF?d-qoS_>dTOqF8C-fs-dW`}+F@ zxmstOJdeCueU8?QSR2;U-~V|3zt{Us9^W~kaNT%c-CwI^%a?ENOXF*G zx-;iQy&PLJ<4>WftgZzi8ix-be(~bPfm^qvY~=j!DbMmz6TWr( zcH!e=yeFNW`lt!dv#agey45r%H}|Q}gvj9F=5_1z?(8b%-nw;bMov!3s~2UvT_u(I z)m>;N{m}3#{husQq0Q>3;ZRY@MN+y86Xix4N!gy*j6Jevg|nXgtf% zka6}|w#g?$CKcu9=O3^C|Ggemq*PZ|SALJZcIC=~#fzDflapti6%OdRb}j7Bhr|4? zx1-|Y`}gg$>*?!Dd;2+r+4A_O!|nVZpPijOsc)^0sOlHToo^>B{=a%<^;Cz>!Yfy< zu*^PtY^v_Jr~8&KXP39Hd$O*Tk6%-BJ2(X@Wq~WvHAg@x@af?Mg98~RhqAUVTDXu= zR#x`KyLZ!6nmqKLR2^$>ZZ5Ez8xb4Zdi(9UqDM^sC0Cp0-xGQJC-C!6p{f1vj?34J z?B6*5f=>MYx}!I5N}fA^exldXfZ$-}-FN%0T?@O}t3LmH`{T#SN0JOBdfh<%yONSA ze|Fo==RZH+{`tD-=x9)9;oYw`=CCdPGZ#kyI~o;^FO{^pcqo!>QfKWgk$ zgg9@`-x=~tA^zs{%yyZ-@xFIgvrM(>Tk>dA?YmW{{dJ<|&u?69S|1h^J$26gRh&EL zZM^-~O+)0+&!3iGs%&4qdUfI2HMZ`fL1C3&YC4M)*x46Kc1c=9>Cac-Xj167wD9Ll z1&*c(Tt)SQERF(D6!>vMb2CVuqX|TIbhXRKK&3!xLTsKq0Et6nITk%qWM>D7L$!Vj-y4}3#PI5Ww%*O|E4Aj|LazzDD*Mh7F{3vmCor5ZBy+4L*KrcmEXO8zrVASlQYW$>i$a) zi*|0b@2W7!|%T*7Z(dB zCnrnD$%U<$)-pw9vZsrZ;JaPRmMvRT1gdlVbi{U-+yzBWlLCiRR?d)u3hF4#fcr3phIe-5A`G=ntDGG2Tq@}sN%MxO746)(n=H_TW zeCO-l>hB2#5+Q2@9R*kxnuRCk?cmB)>F`>*N=7C#?1QTcbXHc<5|mYHIj> zrjOc|En5~WUCNrAoLsOo=Ej{nPyYRXe7yg~t5;6m-rY&1;G_vkD;m>}9dqmH?_V9u z+Y~T$RpIs4!-+C-az)pz=JFXE8%LhwRjk@8clq+=7jND?vGZPj`OL*MP-=pvyNubZ z3JXBJ?x|jd*ZJC+-@bjjXutlKvML)n6(P=(uiT*#2=YNq$XPMbx<&F2lB&HlP0Y*| zty{;pFo5I0(UmfG^Vh4Wcbwpy`03C? zgKyuz3v#eb@K8xGkxJYc@u0-Yds4V*VOiO+x5s;qCS7=0vSQ^*M`vf|Teoi~ZoYX+ zFWR^A^v!i1Doua?)`Ic?Bm?A_Enc{g(bm@1V5ZNaQ=M*$Ev&2_t;;o&ep6=M&^>w5 zzM7v+ix(@;nLl57uHWILjSChoWZb)VuYpwY>I0WA2fum$URkJ9L8|vqg294q+r)Bn zb2GBDwRfM*>Ysc1)Sbs46=wPrUH?5^~MX7P_T-iBu<~;cGXU^;O zva+%nxw*PK_Y_SG{+_Nd+f#C{eydNH;`KWPk~cZU?be2A%ka6M%-tBFlaZA*srKJ$ zktLh%KA9EG+{p0RZ$@QZ(vM$XwI6-7C_g*@@+ZZqHs{WtFRZCK6Z`pTAjkgu=jSYX zTwt;3%krqQo>?Ki&CV+pobKG0k(HHXq|mK<_-$EoWu;`@e*5SD^>uX<3kn2+gM$~n z-n4C7+uF6d=N?Y#zI7`qW_KB{dHy|}h-)ujYS#UHD*kTQ?%mRxH*c=^{!aGW_wO@< zQ-wNR?)BA{m9;&6nkpkBlcHJ15D_2m9vdqQYFK7pUniQK6e_^MvSG`Xmcxe+&sqMN zLA-YJ;>FCu!ood?F+8SEb<=nI`T1?ww5h4Nnfcg{2ak((UbuU=H+p;C!gcG`WyJpc zTU}8hQU31E!C$|u%*@OR>gwiwuJ-o!mXMV_`r?H~@U=sSnD)fwpDSCxe*NN&8wEk* z@h2}X{B~oa*R$f{Vh*$ zLN~yak1vtk#>&b`LqzM=!XGvj9~L~h|M$Z~=4sQWeUf52;F^B(#tjD*AFMb| z-fq8NP*fE3WxMi3j2cLg_cyUqr;_=|6L7IO)o!0;H>+9+jzZnzC%fUG2pgC-0YmGVQn z9DaU&pr{K>)efvPoH8L%X(Fgq8Wt9&@_O^h6rufpK5^T~`5*lKr_LTU7Qn;L-@Ph( z<%yNQjVF|4q~*cZ0-Qaf)P67ANv%j}>Kiq6^@krTES9@i$Q=9h$>`mkos&23Nipht z`ZV>~=6mlL9UvEEc`t+T<+MElLCb2B_^^7HvYbGZi&IGp>`bWkB~U(Lyij#4YxS+iy(Y`>joAhDyMrtZhp zhYuB>J%8>hAE?T+SsT<#y|=ISbj|S;qlGJ1a*B1ceyp(3R>`TZmUde#SpNQ==wIup zM;<;@ytlXd_=zJ41`9TB6x_OXD}&xV_4-yVx&Fs*Z*PyONVU5%W&51Bx9;3I^5>6@ zv6|7}+gV$c=K3j%a48CK6nsCDWVom9uhizvn-}%=+`SunZuYwCuLI-b`8VI}DY5EJ zFgVfjiSdAZ{U657H+!~jHC=btZLwh4ZdtX-oSiOA>FMcbj!gGadswvd!o7R*%4d5o z)643UU6~peAAf$!chI@Wvkm@ipOC}wvQ$H1{~7PA^OFL+zUSxW8fyD~{rYu7gpSAZ z%NEwwr>ho5L`OFtO%nX;q+9;8HNdM4)SNzdu5U^0x2vneBhT^9^<&?Cm#_P1Q-n@i zfJRG%PFsjpYrnjG*Q#tya4I;fvj1MVmzvX(S<*|U%)OX#sFLnm&dE0>w^MLl}*mdGo9&^k)3_`-#@$WH$l@{?8grtWGudW z@#4hKc1xcqsu$fbj9P5vCaQ z?Q`z+*GG4Em!EOjymRNw@=awsW6ta?+bs*K^5u?%Xtjdocu(BCckkGR3lmn&j&1<&zT= z8)phcMMoEYe-~?FVq)<9SB>3{7`<~7&RGc0nl;Pi?eBAY625-@nh5eiOI3C@cXxO9 zoWn|U{fbwcSd==T7+~_&R~DijZ{zXT-$qvh2MrQ~v$ zzu%{Qa>eARb}hxvL0^_fOu6)T=EjTHuC;yqSh(y@h*s;_v%YKAtuyND04;T}6nvt$ zU%>06!Q#(LUTp?t6XYciFV?vzHTuuDOU%t(`(jn1<%y-ge@=kM^9<=H6JpcT)!EqC zHf-I>`oRA0*O!-KfA;HqQt83|G(N7C06e?KYsjp&asm(UuqVgS$i|**yH2<#cl2{zoM@RDA}89 zCJpLF&zvdw<=eMKD_3%^UAs0?`1YksLdiXRJUkEn{rw#|nU~=XXu{vzZ~5g-YfM)5 z-hZDSwlT*{TF$O!MsQ+jNy&qYi`~yGDX*!CDR{pz>eIB%vEAL>J~xV^qowEBR8BHg zWN`5I<_698e>s|A($(6^dNEg0PVSib{hG>j6|Mu;(v#I=~vbtt(T>ry|i8d7<8ak_b z;0qaAFBwhQbbj61wT9PiZEY+5{3x9E&Pb|PLRNOFs#d7qUHz7vW&ahn-V2XX3sRmA zDv4+Ad-Ju*vfaI{wUsq(-+t4VRq4-XH|sh;EK@4s=|wzm28|0M1I|1rL|zy5s6 z6y5LN!K(>wW+7G+6u+xHHHT^8<(HuNzIH9lq`u?A?iuqYrlE(=AxTRm>U^{ zH-(0Whnv)VI@T+F#^HO_Ue?J*p-P8p*PcClmUZ(4Yni?^p{)N_%1d6Ewms(Ur>ebY zjwG4QHng^m-jFl-WXsH%lE*sErF_wEJDYa+?d|Q{_b%VQ-TmuV)idMWcjHXt4}5)n zedg=Un>Ww-zVffm)M=GFJytqTowPIJucnx4>Hf26hrfI&Iaoc%FFh<|l0ixM+E1Ss zF5y}FX7lggzkTXguU)IFwSU^QY2NBBB1+TWi94AEn+3h9RZUegEjo2B#VE0;Xj0*v zwd>Xu^=-a;H&!iudO^0=(!!dWo~27wFV<^oYg?WUywx|MDo=FYwa^ol>OG52mtG2A zdLuMxLe#aWCA*SV7F?VuXIIk!%9!idr>FM&Ex&AGX?gJENlr5}vkMn4H2nKl$HU7z zRVM1%ojW>N_g9`xOP-^-)2|dX^|Zs?T>Q}E<{y?!T%bh>uXgM_Ki}RsF`~A%c9GL` zD{E`ZX3e>Nk3W16aCUZH^eT*#W9m$ao&3DKhHla87S9KV>8*SB($-a1SG%?@wwB=o zt&jQq{5*r6Q`Yuv+YBr%BR^D^mX*0$R9g?rJrp)JG`rLozuQeA|ynFdl zu++(GXVIzlm|gK4H+^3K zvGyNV&hmC+TYRwtwBY9a)NRU3=0*Sh{d;C`3D?P%_d71U{%W~>c}Q2RD%;A`wXUnq z9h~^^*4FG7uU{X2_Drp;tn5>p|GYVK5(*0i>;HUoKWDozNWtXCDa%7<;!aQJzn`I` zSfgL2*dnNxB>b48SAXNe)l;2z?pV#c%+oh4~?qR!q+mmeby+-+#~S=z8|- z*_>|)rZ+>QHY7h;mL)55;HZkFkx|pciGnh+vWfZm{O#@Smi_0r+7Hi|J-hk%<=eyrarv&rWEX_BXDbRo1HTSjPHSdZn*QLpuZ(g{1 z^{A?W*V3ShzrRfFYJat?Tc=l2UOs)QgGX-V>5J<^w5DENS93h?>7kb;hcZlx*z)%2 zDh37g9XfB$cC}{ORF%&~CsoV09`C=hV&(6~?ojo8%ucWB6v}@#{4#nn`Stf7g3H*N z7cME(QY|{08RTeo`RVJWQwt~XtEPkp2RENQ>G|j1@An?dFW(WIC#fUmeNQ<>n{)Hc zn4o#{VkR10O>+OBT+`5fIi!V;@1G6JlQNU=Zku&Np>H2NxP0f%naV1EKfeuo_s-q= zUv$Td7bjDM{=fhK*WPp$=L37s>wJ8CA-9){_PWgsI9g%T_x$|)>7mm?R_jM4RaHqX z4Csi|{qVEq!_S(Cn3$HcY0k;X%5(hGckSN2c~ThH#jZU|^TI)kA6mS4e_weGYG2*4 z2-U9HCUT{2n#$)>SHq(&{FQ83xIJk89mVjUQIir4f8=h9&|&>vbh`J-u6WNaAI@xD z*1SbQc%z2q?sxCVDO|TX0=#ljOx0c=4O9qXXd>7`+9G0&ri0X6=GNBMIn{nsTjrnqwJBtA^Whw`$2T{pM?^&(x^^w>T3Bm>K}Ui?$KJiRI(mAG z_U@H6&%1MC_S^{VPt$hAI;qC_rHH^*Ma(i<*Sg}bj_0%K&bqZrMeojc+|lZtwev*a zzH2EF9iKlJr+tllyZGmlYk$2KPEB8@D!W8WRd?b9uuJJchz z6}K*3@MN>f%=iG$UtZn2?BnYs*G^mSDk-OSn)w**<)>FJ3x$f$l zM^!(Iy5JZ!xiezQlvt&S2Y!Elzd7effkn^v_xB(F`}=#-pS-1kzGW`;_4Z+5VLN_( z*uL_^|6HS)pVY$Esa3{^t~zvZi_sqoF8XYn2U%!9v)VUM4UR+yS z8#I1Xe*V}oHa0f4gzdL?p5LPPzUX%9#)uh5yq2o@ce^bB{x%#sB?OgckYr2FwmB**_=aKP#_cqyl&DX-pj5+bIoHqlczx%?FJGn@?kcqcO}EXc7V2cF z`}I=&-TR~6;)_m+we5Xcv~PuGzU6IIo8|jNoGZ%9r|%S#d%raFik!7d@!Qv{d7`fT z?Q~H(T`}2cR^Y2oTQ!^wP0Y-Ut{-~LHPylIuD*Iy&9ki63c9CUbc#;vUB5Qvi*^1H>39@?d|O`F6;$@PXo^!RNQXU(*367(y6B_xY*n8=B4wr zhG@06wzf_>_2FmDnZPKkxqcVlJa9TMYyU74v;gDjD!zss=Ct&5_buVJ!pByrIJJI! zd3pIHn~&Ps+GkSk-?=j?r-cGFcJW~=O7)JYXaoh{E7}IyE_mko?%lgN zSeRT-f2-Pih9$*7LMzSH>+QzHQ_i%Wk3MU|ly!Pf%#EqAO&sSaDJZD$D-F{zGcY$-_j<_E?6{})_q301wr$y> zAr++hXKin9Z~`H8)O83wrw8x%=~SiCME|%?Lf{ zGhcU#b5?P2a1cAY!u)sBg>~(Ux0X(rmJ;;pj>7UcEz!X}ZpzD+E!&aZeY9z|dA`wo z!Ofvd@BH-7x*e{!>TH>?)x{rGX7^ue);yWkelsWSSb>Su(PPKl?rnPf(c<2o%EdqH zmWZ`km%sZ{pB3)JB_$;#z}GIBKkNScD>gwt+i*lX=<-EO@rx=AC?!W%X6A z=7S9d7Cmd%>Yh1!*6`i|9=2x1=iZe&zq09tUHkU!+l(jvzkmO}@UkQ$BO}3P-oXTc z)vH%WL_|CYd+xLlH0CgK?=c1gd;9*MKP%t7fB*RN^Ya-wIeWG^pUf~hlwoq{ZCUaB z*29T;^J8;!buY6gZIt--?VEwU{ruE5ygWP)j`d1g)*sK>nv|a29vqRLp8nxy&4!yf zkzS`?e@&{Zo40cE$&^E1zLcC>QdM*^nx|;n>ZMCtZ@#antLxK`-**5!ThO>$f2vnv zdOCaly*-IxMz3GJ`T$xh8@Vgj zuBAO~`0?Q(vzVBe#NqRK+aKTCTWuNs;;CM|PShOxqu(NT-#z!@Zh=Klb2IamD_0C2 zfBEr4qPx5M$A^c`*Sue({$3KZYkrPe>eqd9j5MbPJ!f-}yQwO~`RCj1e4j^`CQh8V zX8PS_%hYQA{+c?Q`SC{!rHLMn&$BIaryTxv_x}C#IofO2uFc5K-W@Vi^2rwEC-b6P zZ{(Q0dG{{ORWfRA*qJkDI<%bgc58`n8Fu>D+R2w#$x2B}@7yQSeRRXlot)E8Pc_aD z4i68%_RW21>RQ%Sk3^>OT)uocX8Eatva+_RQ$^RTS+ii-vbJEGj}Y{f-?($<$(H`9r!QO(IP}oq+V$%@&mVedaGm{3nsJYt@}!e0 zi!NrIyV}*)2U_Z4{yu-pmMsZcSzLP4yMNcI?Ob~`tMzD-qt#qD6REQ=BllK*PP;ZS zSn|n)?GaCM!qb>4|Nb&H-w7&vs=k8s7%w{fupo@>>lwpyKTloL0>!`N%<_^FgNgof z{p|I>Z{JTan=ROX+|bl?X-3AXTSofqs-^q=mOER`J$CV;VBEf%&Re&l@?zSZ7Ot_p z2wAW5WsXw$&z~1w{n2cjHcjl#jzZ?ut5@GiS65dDEws6}x4M1StXVqMt@F>uud+I^ z^!HPz)#qb;WtXVVoMLQ#Lecu+HIdzS=amO06%`4A77WPf9Q6y;+}c}oYhO`d?zZUk zbalJBKPPI!y8b+!20H$K-xa;^;O9Jo7A;oE{g+y{H^=(_um@MgV4n@>MOLww;u1iV$$&|YX4>E2xbzOe>;kUQ9E8p%u zcFc{3m)CH<=&eWvbL@GkeQWrXlwTM1aP1B^SUd{51i`T+S@^cNd_*l?*c-b4>mM5GQRlw zYtHJ}1FeOip(J*GIndyK{QkPsJ(o>QO(WSBi!Agso6UQDT`Y5f;H0Vg6JvaRd3WvJ z{Sj2O#kO8}Sz=*t|2zdWN@Zy|bF1nLBNH>TqOLUowT;}Zm+s!}y?HY-Fk0FOG~c^? zIeVuI)5Zv$=bxGM4wdiTwadWTTDxlf&MBYtL@jTJhKC`AAVTy;LRJI=iE~-X1Iihi_6(mG(3Bj z23qr4-8pHMzt`H|C)0xB-k(;TT%?hj_dvPz4XB0p_iOmG-Fx@$b(Qs4yLRoJYh??5 zgiQ^)r7``j_H(hRJViGIvvOu{h|mF*Nz0R8zkY3KX&G5$S#&FumzTG|YA#2sQ|0IE zh_zunyu1(Z?X9-3v~0Zo`su&^Z7X6H{Qh`cezn~?)yb*T*1yTl%1YQ8b@A4%SyN{_ zYyYURlaZHK7VAEkVR9&K^TNf87iW|-3Z?9s^8ER8kEKB?R<3Nko7aB%rHJe;2@V#4 zPL~T;uBiMr<^cDvI@}g_KqkjmuXc8JZcbVLG^K}Sp-)tFwEo{SOD2@>JaKc~kr`|5;PCbIbGqZ{&*_GL>g@aa`vp5)KvVWxqb}aOsabi& z%@CC07d%a0H;wO7laHRYc}UYgy`{ZgpyFlaw&-UOZ_dmyv9al~E`JxZD`w{tL9W&Z zA1ijODBgUNr~RPZ&L#zpMIl+)*@5x#{T?bzbN$$7pKUvL&JR?^vo$-ueI>{R zPDz)u!kZAz~pW0rJ%)MR3H$})PKCW!lrNAHnSN%YFk%33$QeTmTt_QTX;RiLb#}? zuC5Qlg_UArVgh{aJ6~6Se;0f6XYaGB%msF?9*kd=opQmt&ZHT;xw$R49$)fx+cvW= z-@mVp)&#}F4wby^($&?~cjW&+{kO`oc&|yoe5EA~zXTVWi5zqcvE813|JaWo7DAmY zXVNy`x~d3T(d3kru@1DjhXE8YEX@ZU9u|Te5qR`MjK2Vj;{`EMkjc>SXy+Wve5`9TgRI;o`->ZOiS2Izg*VKwCqOCS7>_)nGPg+l+(1fB%cm z*ONC&)Y!?F=Wf0U8d%7lf4;rBnHjYHWunJ{6r+O=3qXynu+^sNGZzMMsH>~rDb3B* zm6Dcry{az3^XSW$Elb|F9Zm!-j1k~anCNjJ!{kuX#se=)7VX`;_eK6GMP|FW_2Qi_ zO}pQ{d86}du2*KX-ji3Kr%yea%E`jyb4jcFXcK62@BP2fB`UewLF;$8>fBcu*45SZ zJ${`0F6vFim*0OuYZA8}eyFkAU*s3B<*%;muUn5lb~KT4)e&nxn9y)E$+5WD*vi^^ zXYHrffaEtFu3g_^+cs}D-f=f?&b)a_V%?6*FE3oSjE$Fh{myt@m`Vr%rM4@$pUYT3U1ubwx}< zC8%_MIz4{JYs_^i+qZ0K0S&SG`lkMkw~;#zT0o-uH8UgQ!2Ew-)C1o}M@Ak5FBvg4 zof>{}?%cVFm6ek0?Cg=Jco?o-zaAJK-VU1GyR|jDvObtk^25y8vk%|ADOvt^|Nr0n zS>Lm3Ezhla^6GQY$w!-N{{9lxo8G;9-Rjkc=l}one9?VxwaGueUXQn2EX1(y_q*MD z^o@f03+JD2zhC#eclWz@?~WaA=kLDu`|LOf; zd3k(x^ZCEOyQ}@{cY}%14xXtu%y$0TGiQ^=)PMi#boBL$AM1;79en&z#B|%fnxBU( z%%!BHKCNreFg$kEt#4mZSy>w>UOQ#9L*AV_#Z_Y`FK1h&V&&!HyLW-h@2-uTH#hIx zX_?k)CB8C*D}G;1w`&#>LUd-v%tsrzE*_b*3JgN_prdFk=w`+qI7Oq>z=e8KMj43@m-ADG@w{IVQeop7%;W2nxQd(-b zdb72)wX3WQJ3G6NL~?YrbXHc@rgyjR-aUGId%om)i}+(7D{Qi@4}SY**5ju9?%v+j zGk8ud6uPYzK7V?&*wQ4UnHR2IYy11R_TA>ad-pEl>uYXiezt4zV&&(xUcH5;6Bn-s z^+IcYPWtKRmRGi0maUobVulFlX6|@P8ynEtowW3H*Q>F*dl!WK<|?eH=qP`G&oKES zc-_y$VjI?G$23+uImoIXi!!@ad+(ptv|d`8Qd?_l%y$0Vxf%D%EM(67{aI4ocKLGf zj~YAA<5R9Z>rFbbGJM;%Z8NSu|MjaXLPu=L<;*#A=cev$Sig4d!K94|6%`SSu8F$8 zvQrhS+s~}0B%GCL!A_S=ix`apTa}fSSx<-V{(o|z|Lt41EZEr#1Pen?%zJ*H zJ4UC7jj3@>`pI_rogwk@@gMHRcwFsYRcog-W$`K*nccg0_k3J;`DMY|Tc$ofJ}GZ6 z-@0|{(4$96+c#C0l(bBpI(3fRqsNd_D45r6-6~rC{+_F|Gjs9!^Us@4KYi4*G{uN> z`sr3sT~%FeyzqS3YSHB63WAwxq@2IM-HUxE%4(*1lvGL2BJ$v?xH*e1TZkp++B{{`Qb(`-xyY($P zrxtGCKKJ$4BMw zH@|%|YinzBc^VYxt*>!)pA+chkmQY2I!FnAk6GpSJG*zwi5vEjNP-+kt7zqah&J-c($qvw@^LjA`#FEVW4J|1JYy!HC))L#o`$jCb_dEp+O2#ztoz(~+} z4*7R>H0~~c|IEk97<#C~!^6?h(U#5;;^N{n&)>dv>%)_ilh-h^$7p~~m@s0?HIX`c z=up#(vMblGKfay6|Ljiv3olC^{rd|VHoTL5{P^+6g)yMrB)Pdy*BRdq;X25lyg5S0 zQdY*>+q*|e26i6C`ulq-Cv$H1S$?_aV?2juN`Mxm)C=0AF?HTNxn+C@6E-CLc>3_6 z;^v^o1r|kp(Myl-kUDWO+|S=%^7%^W0v#!js=acPCr^Iy>eVCAvg;dn?~2}KTl%%> z(%aLm_ur?NY(JZJ_;5Rau~ea~tZc=X7lO$ia`N)eul~Jy@BPy$bHhqgR(e=2(+X89 zdNmcgM8-S)1>&p^zCQ308Rwb0D|J9!h$kl}&xz&+Z3B98QaEkRv80Vnn*w+LKe^Pu zwX@*!({oIEGLk!Ub~$xB9%2nxI=4p>oI#dm$;en+TlXyAzH#Hm7jehFeJfL&qbb*) zF1a{v{q)L4quFO?%$=({L-l@&QDRzJo8c6r$lKiuufI05wT(467#SQaJZtvsov%x* z<`(xazu#s(gpRKH{Hi7!3GYbCi+O=zuVy$`JorEcqufNuv(ZMkxj4f&9 zk!>fhKA$?tbti}MIq|B-KcAj@AAHYrs=v^5!s_)YVO=FwvL#lsw{G3)Qu{6BcHxQl zD|Hv%y$e!)e^Na2`{JEDF&px&WcqZNO|N&|3w`mu=%n9kt00}AzLj26JLgm#MV#3o zym;~AGwFwNr(W$im~i0C86F)m?|ap2!nD=Y)MlLjbkgnZKlSZ)PxT|*7GK=M$G!db z*}uE@?VI;|`v(}Hl{`|3dJ#XJWyJr&1oNkA-bj~Y!oBaFFPh(-L zYuB%z`MvRkG*V=IS4P+c$1B)U(o<>h(01=aKtL(PF04M?+`ybEK}6VrQ>!cvWI` zu`?|yD$2mf=+Ixz?_S*MGlPU~aJ<(Q2@BIYU}fO{rAsTe40Ibc5&OX z?9v|Z&Y0SzGA(ZD`;;G?a`oC9z!$WA{mPY{oc-S`Y*-h6Z0HV6{8ud8=ldY*OZCo_ z<)yNkrb)*_ww`wJ+q>xc>&W$<%~%__bB?)Oe|zB{uS%8z&6w7o9Rbr;c^J*|QJY!&ZR^&ptcUOYkmx&VWwzP`R0yPk4AW}l$i z4LTs>X5hYEPq`=W);Zd@SI1@PR^N4Y{2B3L2VCW!w$Fe6_HC+U$DtKVViKoMH92X41QM?b`8V*UAts&{D$X{_`(f zz1sTj-MdMXSH-s0@t;t(USL$RWX_XUkHdY{g8GZw4<9@e86_K>rEuop1aGsfZ}v;S zWO{pZi}$|#{(GX2nq<3GeYc;tH#ZL(GpI|It8F)*ztg3u@Y+Xl^HQt1TJCG(rh)^d zpuj~*Fl}nj`=@(&4kk>{G!I|2$mzvbP~D#QAkHjgr;L@ARl??*JFH~n20?4LiM&x59DLaofN^1pIiG*BHaos~`!=zzPVWEr`v0Kb(%OU>??PXEms~O}cIgWbRmGVx^JdMG zdiHD8DMj%^llQfN3V+R|{?%1go3`Ca{qVEqjw2&mbK`06M6=m5GdSvmf*2ypCP~FC z{n-)Fx2ofTfRt`fD<9YCr`lp0Iljkh%g*DCQ91SdalieJ*LUy6=FRp}5J+(P>wR)w zOrMPw>)P$U>+I%puRXPB_wL!8j!*N0Z{EF|nlefM&8Dbh6^c*ZY2Utm8?*&Pxqa3w zDbVom!i9`st3}l&cTUdLntJH=_I%Z~&2uuA)`Aw9zq@nr#0d^Fb8}F8(?MavR~z9@ zmT%v`KP=l_`1jY>HNhMWt1rI)>7lthCL`2+73aw%CX-GsxfOar=jjQzlmC`av0J-# zZR_EO59SE{*(3VLVYHC57_wJor-1cGe1UWf5qjRk_w=X|^w(6{Vi&02xv$MoG zm8&j_I@@K=>;1R3n(Mdi!w097MMg$mA3uDUV0`CCLD<{^OzYZ@;fv@VU2|4qtmdI-R&0-q8J4pPQSzr_j*G zrU$fwPxK_u)GeD99sPFo>ea-gBqm{DVGDcv;}0JyZhzYJevO~nWYBgPtGVZHO{)<7 zRjc=8!rW=4OM)i&==B?1@{`zFFjZ4cdh74`lYU)!SyHs^&&iXVi!N%MNi!BcsAZ$F zVEuaj)2C0zq<}VGSy@|e?n@P&cV&@Cc&VMzlcieQR?P5GQ?v10RbbkE^w5;(tWOIw zOitAtPujSm=#S8WbqSvroBhylTDx{_Wq+#COrM_Vp{FJ|Y=zX$+MZ%*n`e6J%(}Tu zsQ>uPsl7f-t71YfOPp_ysb$?^F{?j5uD;$LwB6zR)BTq&RQ-mmUNN+_?X~~=(!b)@ zm&~vkACDb#yS8oC>I?6?1J}LL@^sf?J^AF*hsiojPaZr7_5o!^)vucNr;v^v3#sWjbQXhjw>8 z{8%x=K+|;6_Y?^Ui3e&8C04zlT~u@D8veBCO7(ws-Cn3O9^*N7P;m}Vk)-NQ4i=^#pc51R?ydaX z_Ot$>VH7&7VBty^n8ZzwM-vsjv7G_z>lyhH8p8QB`vuGKyHdZie+ zg<7L}a?$qf(>>*?Dk@IMOieSJ-EC#@MDFpSt97PEHK(tJx7;@T-S`$P2;Qx@uEK`d_B zQKol9CHL~FJ8IW|Ob9NEx;XLBu9Y)a1Zf*x6auYa5l+g@?LBFH@y3l4YckRUlJo*s z`OC`78=Ga=+130wU@_}$S@kqy=79bGHCOuoG&_Iurlhg{)94EuZ|0nFI*xke$X^fb z&w_!rA-&CqUzQlj9oW3t_{{n9;(z*XzdiQsnOb?S+3d}6EK*WZGbXzVL5}$_m>8oW za_G(-8DXQVw{L4_ef9VI_3PIT(S{PMvn?)S(NEd*<|x#h&#;j@{`&g*ZmC|>V?$1= zG=tN|o|sJ*78VEY+>!aN9y3)_d|~3@`}362LY>|j=9$f&IpJi6Nmp-g@1E4-j|=xy zesng#uYvabi3lGY6#zguF>$XQ`FRcBeD~vevq$_OQbk((Ia*O)-ccv_# z`qSw}k6>PLfY90#F5WFpihF8*Z(DG#VE5fKn&l34)jpj&T~^vn^;`b1Xy>MFjGsRK ztci$^Pq#a*4k_NYtX|!HvuNJS_^)5TTF$kX{Lwe@%*0I%HiG<1zbUUhe`z?6@V z0kjr??JDfRjL_{BHhoj4ivIcc`~8{I7hb%`IQOJ5I5@bc+*p9)!OzdnBijPf_P;|r z=p%Ml?ewD=CTXeRY8R_H`(US#8C!aiN{A9FDyH)I#xslN!mq{`* zG7mtf>zos3UVptCbQ;UwF&+5Opz+hXOC4*U}t1f zsXt)HH_7J2W`_NYlg{K!aGiAXOir1Nb>wYsdF9)iR3n$CMsCvUexx`_$n)d7f3^WP zPN$jkd+zC~*~@Tv)vI-@@4=FE1}Q?u-i#4mL40bxlo8oicT* ztJU1Tb?es6>CV2rE%$Lsvm*&dP6&#YD@ty?gf-zPhr~qWW7- zNLZL#U|`^~@W&hd^}fBiX`G&%>#x@N+bsBb&85DhvrMxeU0UiL`C0Dio_Q~`YmWEH zf|@R8GF4PCfeJLjeyDPl|1)hK9zBYqxlf3)iiQ-EDSlUF__a zQ*9q59#1{qFW=wP)TE)Mbt*DEFfedQ&`KZ4U%!7VPxU%`I_~`Q!~fPsZPntFvylM# zXU*oFJ1u9;p1pX{BBfKOPb<&$bFZ(jzo))+clmp{?|0_t@6R6M1=g z3qLHB*&ZQ3LuBh%B&&VMee^zF|ApJ$UN7JqqnclXDG?D9t@sd^hd zkMZ~SKlfqz(W6HT9~@}p+^?PXYkSJJbD)F#eT3(Ai|Zdd+AY3#%^DppZf@iIGZ%}B ziXJ`K%&wl}WqbYk{hYe_*REZA#-r-k zp52e1;-3KuvL7EF&PiNSRaLcU?_SUl{-%Elx>{OY%jZ>T&8z$MlJolQ3l{|R_k3{j zoBH(Mzke@Yyy)ob>zl*9Zq+KSxQd6Zl~*60on@L`H0kO|D{|FT%-rkJ-{Qi0K=B<(MfAr{)Ma74NH@CLF-gw$hdeV-3ekZ*QBke6k?_{|nMT?;N|gKwMPx z=)b?e)oY|=4DIV~r+xZ0<7Be=_5I?r&GXMyPMYntbkX+h<>#{8&VDtV=^wT>YHDbA zK}t#gxpU|CJUj+U+Pu8H!t08c)qAJCo)fjZEZ4-$EbVVzzqpNvxcKphhufEn*q!(hA^5pF0dXbw_E)}aQeLr~q#yQ*NrytLA|NQWKM{AslF?Df&*h?Wv^bnI@9myG~MWL5zoK+#65m}eSN>G_p~E7H>WS&y4Cc( z@Yb%bE|7h1Zf(szwC$>Y(ysGUCrz4E@pNkVqeHFSg(5Q~x3}l_x3#tHD0t{(Vs74ld)>YzOH^LHe!Y0( zM#Fs5XEo0b=il~;lQ*t>^X%96M>jSme|))ozF+q8BmPL%__^-x{`&fR3ll%je0hJ;O^fATUS3J>@9hnYj+TCYet!SAZ{Ozpm9RAX{q61S zPhTYrzdyg9Q#1eCl`BUsE%i2jJ@3_h>(|%UpI`O%mxgJq{8ebAJkhTB{dW8FeE$5) zOIEJb1Z9Tx>-D*~xfgHRWE8eOZm#K`Cyzl1`P{j4FJ8ay4$%^Q`t<3>qNk_ae<{Uj zxJ|k`F*z_QY8I#ev*fFv-6tNYoxQU7pJ(6EcKNy)S8sof&fjaA`*>^XARV$jj^7w{M@v^2>o?VPaRWUJd4(x9oDseC^!a+>7__$uToC z2gbz6cu&^@ZCYmi%zmQg=KgEfuDy8m>eNoL?Ck9MJ9LWw-Zr~@{kV_Z?w!B(W@Kk~ zZ`-y_LP}~@`Tju9KfJXvxw*L?-|c>%whWZAu7<~-^|`;l-aaZi+IWAksHo`1s;{rq zSB2S6zJ4laUhv(!cR_1nUUnxhd3mIyM8fj=^ZPON^UrNnx9u1E{qgZfovsGv8P)rL z9Mv~^+qQc3YEW98v#m6KXOXJi|39D4e0jZozg=SfBL;)HYTOnKGi15dt=ONf)ec{m z!u$Q}ioeM|X(j1lSFc_@#LK`C(ZV8gphrqh?p)UA$k9UvJfZe|I+{E350^!GkZ}y#pNvA|WStZqL5d(_)VoFf$xbQhmUX z7L%KsyXWIEY5zU*&Ye4FQU9;z-t|?hS0}%}x7U9UF9UBnZ7W-r>f(Xgwl>)Eaf2A!a%PoG9A zw}ggU$4I|Zttv_>(;I@#1c&#yHDIeCLialWC<X=naE4A> zEeiufTAP{{veTdjZ(s2H0VsWLc_}X;(b3e@q@k)1 z{(Vr&mynX`nlx$BigoMywq{>8Yt3 z)6UM)&{0ihGKZ}Nm}4^?bY;i3ZQIU#nWXBSbhJxUQ1If#i-P9)_s*0&yK&)yfV6qu zoPt_@Ih&5??Rl>0>FGSYysm|Xg;Sk7!{k6KjYj^I*96o$_=F5x!`#L~# z#MkQ9$LusZb?VfzJ^yC@m@}!$XWo)KC>kbD_73^ zcwUx)A;Ly1<-o<8Hzm{0&FQo*f9GN~_uTJ!hYlUe$jIoZ{r$}~H1w)+{^FG@HP6kn zm6ny2t&F!Xe&&;NbCW8coQ=iP(zqQ3itFO`O4-`lKHispa+2!C(%08+?5+OZ@_JYO z|GJtV58G$HEPZ|L=tO1rM@Kq^3twMbyXLWxiHS+xfs0qKil(2R2ilzV{7#LVOU#}M zLoID>P+7Yz@2=HNy}s9<&)fIEd-tv|{{N51{hOD?*Zq7NvA62$lGk%P&ugwco?>;X z_Vu;3JBprqrR`d@Na^3Z`+s)_1_c?tE6cyTYijVd=ku!dva+($-W0PlFo?}(6)%X{ zUuO%-^`PSBL+#2CEzpcsMrLN`;dcJxZM@RU_Vljb_e<;C982T83Zah%CO>|?UcY$z zc5_fh;=F$S>Qzzs`agwtc9-X0%KiTB+p(R+&ljy-s|#veX!0+d>9zFHVSf9bYuB!6 z?zLBXbgWmp@Y9o%FW$eO|Do2_))rI}xJO4vgBk?EasPd0zdNs~wDWk%u2Z!S4m4)u z<(+F00!94h^z+9SI=6pXmtRp~ac-XNY}5S1ZM^*@dl?xRe2zA8S-iWmQ&`<^&WS3k z*pLtr?XWc+s@~IFTwKb_%dcJjbMWB7A8$6FHwyitUi|;x-;C_+(|1g!PoM6dnwlyi zF7BS6pI=g1ntC_j{+>$XeSg2*zOkpW_}}h-kpx~cE5G9XM%FX%9Wj;K79hU7tftL zx5g-TcbRTiclYC$%jeJgROY4=y-la9`~SC+H?Lluy7lcwn!w`wv(J~*`w5=3Rl6Md z4%*H=Hv3Oudd$Mk{NvE%9STMzyJLF9C>)3UgRc~)!WXL)W2h3IPhref_Gx) z=2%WHE#8uLb{43q<`*yR>+AdRsCazJtR^0Q{^Qf*>m=9j|MzRjZHY>zxWGWc-DPi2 ztvq%A(j_5K&~fRki`i-PuJ`lF$?BW$MTdrpp11kzvnFb*)@xA0I5)>qc)DKfsWZFF z-bUrz-lqG$_i2Rk@ugd~m|R;MExtN@eIKas{P3Z`Pj|xa@9&R;jOlyY#w-2kKqK?a z1sO+vet!P=&(F^@XW!KhUv~sl$}U`(c*&^u+oNv%G~fN7&sj&BA6vio+b!k0cl^FT zpK>MHNcd^o<}}}&dwVQFxk|9U`tP1kr?f3^@2mM)bZyVy-{0LUD}Qczr_8|MaD++9 zb?M^8%B$0kU0Uk>_{PTMN^7CqjEoNPxC+JB$5!s$TYINY>R8maoX9<2E_qk})&#ZT zKskboi)+(0TMLUBpYMU(J=eP2=yGam>c>aj`p;UV1^IvTSQb2R0QEYI_2>E>@0B)R z7V@m4{rHoq;c=bm^D5QMa&8EinwkbiN6!|XFvqf3ZMEj%XJ=79yw9XIw? zm%q8Y+kCapV&@q0D0c(`5t&5SL}mZ^oUi~*XGT|myG&z9-o+~Jh`s|RK#u1 zzkkjrJS@!b)*eu82kL3e%*)K2x#97Nn+9{|2M6_^^qIDM$r2Sl8H)*`0(0%_?SuvH z?kH5AHEWj9`rh1GObiSLcg1|}zTcR5?7)EoOHP9l#cQ_m6p5>yAUAu}mg>arGRdBC zZQs6qbH3-?+f#YSPX3c*^s$w1(vKW2x_<4N->-f7`~RA)&hP4#Huqbpd>Pa(c3M_q zB?~I2b8m0+U72H?Xl1{AiQMFwdf#tt%}&0&%olX#gWHk&Wfr^g@9&$_=lcEa?djXE zaWF6(D2X&+bocf36%i3h$$K$t_Uy;MzP=U?>s-Hj_3TT&A0A8G&OeZ{c$d%B8`4)o zv`m*ib+gZ$f8xdLza29^Wr#0sUeqz8sCfQPv#H?H)C^JxWoDlIl3x7v)l~@zi4&{7 zZp^#8YtAfp1_p-9xd&Om4ZE$`*N?4@-mdiMVefzS`87iKYd-selFPNV(bKov_uVwQ z7_c-MRG8e|UA}nva?qi0Nfi|qoBu3c^SrQUpP{a%X6M0!2j@sXtvNPr_4e)Mw@#Z$ zf0DhwL~im;jq=RQOc{#;g}UFj@4H#e?R)s};f}h$RnNYD`t+%=eF7^3!wf%ewFey? z7BxQ#zI^$TVq2I8X+r+^bXq_8<)x(?la6+Q(t7FZYpK1@46gtB{rmCi_4~SRZ_iKf zRWiJtDslHoYC(a)z1r`0k4IfExf(Gu+tXHUbL2ZvO?9kS8gvJe<@!uejGvjtDp~;Q zm#<#GPYP5^t`1+H#@j3T@k3`>d3pIAQ2F`i)9DrK*Y_Vgc1)9Zv(@Bv@%!bL`_Dgj z`~Tq_Dcf7eCP#TN9xs{swjp_!&(b^Wd@>!+o;_Q0OOBV9xBt#@9tMU3kD~$@-H#l$ z6Xlb&60t6S*8?gq=31A7&RAJ~>+gjN0e5zlYR{TAE9rQj?8f~2`z$rzZ_U0As!$_q zGp9_OcI?zt?c|@Io(2X63aYBA&a^WLS{YLF?PmJsuzf4P-Q74tk>wkB`5zvsnFdOzM{jn?QpTA0Hj{ zSblk9{r`WFy2<(Z`E%@Qt+eml*jHQq=H_N~FK_S9dd8Et+8i@e1+|IH@7EL`+cupA z5}*qgF0?3p72?$I+1uNDj&->n zsFnZz=dai6lRrN@8yFgDn*H?Gx7+!fX9?xp+LGyKouZ?u*|})ZBA?6iUgkWT5CXC1 z@^XLo@bK`oT|0JITwe3^Sg-WPvbVQ1`yVhdFnrj-^?VmY@xpcM^x|s2UR|+v?b$Ql zOM@z{J?D5PyKlL%DfRT4Jp1_H@{~GHorbM?as> zKcB_-`RVldbCv&%7#I#5+OELVw{YRYANK#B|4;c>{eJKFWn1nX>y_TTEWKLd{6_Oy zQBl#!dd9mfPy0yRe)#Ie?CVFhRvu4Tc6#pm%v1AhK^HqJ21jc>%AdW8fq~)75>~;2 zo{-M>FJE?odRf`o-S6JL^PH}&rFCl7ytn6+xw$v<*H>5nUUGVlZFSkQE@8o)3(tRj zeSP_#C-qBSo-dL39oZu*m~N)}b;g;JoyX05BllL7rd^q`@$lh$I|`Na?(8spS@!($ zb3O(JmD5ce7D`I1cY0dQop(w2@kaBQ%{TwMxs(Yvb+rF&@Ck8#{N&_h%d;8B%HI4~ z61F~0wzRZ#=1Wkc;>l!xHQt`6sHjIjK0Yq|_vh!22hIHRc6c7T@gcM1_=e58E03qB zownVU=~Y-*C}UG$U<|s=aCiCpb5UtpzM*p8i}Q1Hd!^0ujx@9LFZ%-OEj^4hU_5?q zuJz_Dmpl7vt^YmC|EIQmes@Q^d4YV*2S*cA)6{2Er%ZWb^Ko7#s5d+dl-u|Jd%eF8 zWXyvH2`)Bk?$y7%wDiZ<_4TsT_2bV)9`{J^yZrLO!RE-tJMQeSx4&2YelMsUSG?`| z-Mg~O{pOz9CAhEn`MD`si+z@C+GLdd>rg9qq-^TBBX#~NARn9p#nHF7w?TO-^8M{y zrP*NzjHWKr>fhWSU-Qv*&-Z)Pg@1m01lw5t?#|2tX;6yTlHe8?xiu>k-G;zdEE zvAvxOwY9XmLbRsdJpS+BKaZtBmS< zYu5BETD0iJ`}h6#?%kUcrC$B*O{Z!0HJd<5DJiK(&(6-C`SRJbXFs0m*Gs0RrW#sU zNU-zE&AI9qIl0OwZPA_N*~>ygL!Vx`CIK47tN4Dm+}PJwO*-^x;CI8RUPrgzubVwn zPDTb)GP%^&*53Qd%)r2Xy=mn^LBWlnu`Bg!g8cJkwr}6=?(XjHw<9nlMCAAP_x*FN z%g?0+8qcf!c5}`0JIa?{miX-mjEj>y-Y0vSE2*u$eeuqnmA6iBO+4IYQT8Un@Az`G zfjH?$6VteMm%Xie^fv$A9?P&b5fe@Ir+T^O=f7Wb{hq|cE6GN4pYE&uT^4qEN>fwQ zjs5lYewQZ+f*QoRx3{I9oxNh^shU4`7#SK;BEW_0s!!|p|EmI5&Vinw@tD8AzJ9!w zz5ZyhzpZJv>KWbR+UxfSReyhXcI7<#MO(I*nC0J-$=~zQ&BVmy$sLBiye#9nuU@}? z{QLg@IukRqXJ5pPw$(_R=k;8VueU9GbHgzAwtd-~h_L%wpB;nxPnJxvj=wzR>+9?O zQO2q7@9o`~b92*~FDbsEa;fs%+}xY9NflYIFJ4 zEveYp*o)V%i?0mP^78gxylRzJR(AIB+E+HyZ{4~D8UbZvV_URihs89#SSem!-p`BH z$jZuIym)b9vCivPua<4?JQD#LmAQ6J%-Pv_^R}}qy+51?zcvDeyN#eJWS9l2FMLnte*Nt1Z1C_@W%RZj@TKi4GyL2l zOSrhWmYMJ~Ff=?7C~yGZ@;u4!z`;eq5i_c9af7nnB;Ny!il8#k!-|o;yH5&KgmU*c zFgt;UNGFsq@rlVUUctb?pku?-$GTwsdi}Pxwr9H}jFU1lG=Ba1wXAe5D3BUjmshOg zKCn1DFRw5A`a0L@>gq3Fz8v}Rp}@su%9JTCk&%&WVs;w6di@&IB`l7THf`Fp zJ?r`T_>MhzkWf-ye*Ej}>);-eZS}V!yGmcD?Of8oZs$(Rb91f5b8~YmZtpKX1t3=9gEEHa<(fQ}zDzoVhA-+y+t`SDv@vls8$Wp(Lg zNl955s4olJFa&Cxef{S>UC%W(7IZ@8nXrrMrSI<}fleebro;`iGr zr`Cp~pPO^?WihCk5m)o^=$wM&HK6-~K~7$>L?ye<-`{_Zb$Q;U+}EI5CE;OUvvNPE z3I6u>_T{Ou!e4t0C+;qP?-m>!d~MIAOP4CX-ArG;rKYm7^3A=y)}Z-v)BnG|zTQ~* z`Pp%;%OyK&f0u!_{b$D|CML?*)mW%ck@R8x0eUa+@HzL%>~_Ts-ZV;cfVcy zereET;jLS@+@t)Hlauf4C{(txwl@CE#>V#O)6>%%)6dTxb>i#m{*+qvsFPd6?x_D9p z)Mr@S=_U8|>(|O`HXG37!XD*?K1=rQwN1abDfP5m_V1}vr&@lls;-vLj=c=p9c~G- zM6S9PG@)1W@)9WDpOKc3=-9SxTg29^(0i#@;9;c`xk<$=_m+w7>#XeT>L;mg_t*4i z<*6<%=T7KsUb%a>b^5(aOTFi3%uQzQ>*#czQ?u0+JcV;o?ZJ%p zPpqH=6EBPT@bK~ZovxB|-&d=lt6RIM^x12J(j4O%Cn05`?{VhO7ksX7I1#=&dE1lQ z+b2z$q#l*NuVL~2{q=XguRaLP4>Ll49_mo%75~(#CcHLSeK7+A19!ig*5`nIQoPn> zZ#qDQ!0BJ}w|JhId}4ck|E)PGYibzX_bH^d__;AMFn|Mmiav|S^2?9=xF)Im{Fb}u znM&}*>({3n=bxOU`gmVFsMH1LyoEL9&wskfdoHSRKJ-l5>RaFw>C$D(mZjbK4$6tA z_4m&)%|F^D>L0?!z`*cqT0^qjs@1Dc&%A!`o*ldD%(|~%zXk>b2)rz@GJbz=Z?&O` ziAmz-NgqLd)a9LCuCA^jAt61x&rDMFR$KFsk%7VC(~HPLxu|_Ll_6naX=h)*f8U?K z|8H5Jmr3oZ)2EBG3VC>Vj%>}oE|(43>u_S`_M)e!jz@_zFfg1{eK2GBr>l=ZT~zt% zj_c>nom1Dnv?X$TUhKI&`TKr8oA~`LXcqBq`TeJ7?r%suoIIVEfuSKqsNhVnb@{t9 zlDoES-fZkQ-|p{;*H*Q^O8(sc|GOSE@_adTkNT$C-{0n(b9;YxxA^mObE}tponuw1 zwY>7wr>CbsvuS{;r5vWd%B(%oUr$fhKR(kqec6`25G_$qH#cTiiDuBs5YVWM-LDsm z)#avr^_)6&Drh3U=vn>OtKo$|KRwl4`*`ztyKd|9cTdjb=j6<}^y%>7!x!(|k=dSq zf8OWEj0_A1CSN}J!lvxQgM%6Q`R64apFTR;4Vo#g{`N+){KbuB%a&PGf6FN;DM>k- zpP%1<@ZdoWUER4Gi~Nu7tNp!b>sHg%pRbfyfx7KoyUX7nySKNx_?Kd52j~VF&`{K^ zTephhqPOS8=G@s)cq#Y(?s9#*e?K0dd7+(}np*he#KefrX=jDs2r@7*6nh>p?4LS) z`f<=~6lj{};K74yu7f7-cJ8!<=H9@tFtL{C%@efg{tampx9X1^ERK) zOxafZ@6XRQ3sZmp{{8sOOk*ZK28IR};es>8Teoigc!*p7$nyDhQlR3i^6$UDzYG8W z`|EiV7_5v3`C1ny2AwA_VpK{dlxTCU(iLT~=|R$+X>N zxgsJWHkUTFwzh)$@fB~kUQaqXNi{fb-J(TFUY|jeyL_e=LP<9_rGC8Rt?wEf91L3B zQ271b-8pI6i$z65Tzq}O6BeL3yKdFmlBrXtf_&r>92^|8ug3D$ty^k$wr|?B2{c4H z*Sh>zm#DT}W%cf|w_SaGeLlT2CQX`jV{`iX#b=5)`7MqLik39bFZ=8eBShSeRM}ty-}{Ri9`rGgEGA|fJZ zN(G2TIK&5Pb{ed^Xzs22-*5S4CcYWzZijj&1|%D{ z$$~Pg!toad$xr?#|Cjz9m+-BJR|hnQ_V2WKna-C9&Y&9SiK$S^lAx6y%P$++*nsBc z1qCO1Eq%75DUOvC7I*y+BIVtnkm{IcN75}u_&6TOx$`tYAsR&b(lkxmNKRm(IEuMFYgHdhdI%L?z!TV-S< zE68p2LSxQr(D=>g<2Ux1wzajjNKY_OHeD|kU2h52xBkli)$jOJ{H>Jommd)1Hh&=i zYA;5*-51b3b6X+e$E9SZQ>{{2J!+uVgp$(sN-wLqeOshtCPZ|v{N~mI3PJ|4B|g4u zY#fg}ftzPWVuyVNbkrV~8toETUkVD%3CSC6KDM^zl<@W)bpQns15v9*ps|NFNyAd; z(U&Dv>rR7ubj&YHtlZx5yZw7x$2ck1F!nUK;fu(!!lDce3Q9>ALz3H%W*Ejm+Qkf= z(6sSv{?RLjiaIIE*9#pT55|b69$N`&r!c6@0~G)b9R@x+IxgKWqr^a=BRJ9i0mG!+ zKvtRJSOx}$gnv;y=B@`0Ens73U=R?Twc>!&mKp0(K|Y7@z`-IWYig13Fw*CGQK8Gf zveNFv=Zp*u`%QnzB^cfnIp}2i%Sx`g*4+h^HbXDY^VnA;E+S&H=Ahxd>C^O$LF+TF zJZNZ5&p8no5HR6Jg7Txp35NH+2Yq~@zoDjPAtS?qN6HTxo=9^tyR}O%)}8XYI>o;G zb7-(+?!q?)3=9T_Aj>7Ib^H0OCWTE_j(^*G@iW(@eH%fGYFe}*Nrb^h6Xa%Gi+6~L z4p5T9SoJevHO7665pVeU60}D4-|zS7;5BSZr^n4YECgx`{Sfm#Q26}ZT+qtYd-v{X zXlZq&o}PAeSLy3TTeg&}>o(H|&6}prubnpY-lo*<24=B|`TKsV{rdGQ>GrnVz_>WO z>qi+G8a#DhG(3KDb2Df?$?>((+ZU}~t^NG#qD6~93wMqkJ67>-=kuhOmzEX>cs2Zd znr{C)5;RS(BzNuJFY*76;(ye!FeKcIp1=rN&-v%){Qs3PyUTJ9edp!p2buQh+S=%k zC)MX4$zH!#?7aQ|KW{{Y66AK3zmJ<^TWw~1_tq_`<^J>g#N#Rw`Mg;f7$!#-Fdlz; zdirCKMPI&sdj{>Ymz?{vZr!>cpyufDx3{-H{$Bt8d-|>!44;Dv3k%PEPx16TDKm|O zfniyiBdg5XwQD~vum80?@}ZljrzdD?vFzf;>lm%e-yH#2^5x}a(1O3p z|LOB<#k{BKbZ);_m91CCnBW&07Iv&#f1iYW-H*g2K`U?UD$NE>mK4Y8Ffh!x(!^!) z@00$2BRQLj2{YHNTh~|r$^V}xs9XOU+@H$4ybQGDWY4cxt3P(f|5390`DF5$*C4Y% z9avCTD%zEOhWWpH_kUM^JSLs*QeR&m5*Bu@w2*-z!3#9UczNmO&Bl7MyQa+4)6nRs z|H1!1(Qk)gSYTk_pBL`-UB`|cJF_Q5YpSV>)`6tpm>8Wq3=9f^Vm=27UtU@YTIJ_s zZenr-G#9Yvk97VXK~`4QnJ+<8!3Pc;*fI^&fSn=9y{z-p-{0RiFAHB2@zLY-`qC4u~?iP!${Td3IECbCc?Ac=@B_);g{oUQb*x0`wza<4hZCX&AFI%<@ zv@CJbq)8F`YAWB{*r*KYELRJKuZ!sfCDmQKcZ1eTfu>eKbMb|bk7eZKfU3UC+hP9x z{-EZvvF$Glet!Prt=!_^ahJPyWnY$9fo3tje*FrXf6~y^J-hqdv}w~oJp<4X9w^Q% zr$ukit6kENyGGr1`KQd>++NU7O>uGYmv7%dO+!$J7c@Nf{M_8Y;9%qR*Q5=LpS#D$ z$3K&L@$zLSXob?MRb6wf%hO_+!`H|4?%TJoqhrO26%|X;vW-7V_FcPpQP9`dcjn7g zt5!v9&$~Ni+TQB#c_!xO>C2|;$IE43Uw76Av}p9#@88CkcbC1LRkU;2XXD*fU$a0i zG|RvDC*po71A~qpx7q^@oipotK3Qzl2aOmVJz8Jw!N$(6UQ?f)o&D!({NK=+9R-SQ zZEZzy_5c5VPX;yMPie0|a&fV{dd&Iyf9L;O8rOb#aq-8+{yGs*yzBw56*64>_t*9P zeah~ANBHZ19QOS7Cjaj<^ZlLucE2==FPq(}e!o{7w4&7fevPq~me#U8=Z=58SN;Ad zsBa-FEBkog@>Q#}`s8e-?*G2`eOc;k(25wVbLZ{<*Zev6{*T|D|Nnk}yy!0P8Xg{g z@9DkD=W{E5KArw}>GZf$XR@=hy7vF*-ruo0e7&32)KigZPa^hxy%ybHVr(7z{7MFB z;nnK+zgqi#KAXKJ%5Sl#xcKotS?fojS+cMlX5z1VXYBl(Tv1_B_j&gHBOf0h{~X8s ze*gcvE7z|d|GxkKUr-YH|I_||`j)L*U0sg+`uh5D{J+!nmM_iH9vPomzJ9&_zti(+siS=z4U%hmbh zY$Uv=>CF6O_3iC#aZu1a+rMkquEP7jpH7cI=3oEo@{ZEiVfUo(fG$u6t!D-GLP2HK z`|5XhcZ;k0%{k$7{pwX$Z*T8E>;HeNVrXuW!M z>eZQ&BR3iruV1f!Zod8eorN*maw4x>zwVx!n=2wNo_@E&#l^(j{CJnBcGB5drjMun zTyFn2v*zp7@W{_x+}z1uUtJB1kCzt}6*V+55ovC2p6IuH^P%33mz);w?(LPf|9R4X z(>xw=F|lL6zP?UA-X}XV`8w!spT#BL-`xcb7r(i;_jl(ud$R`_xw&VjEM2ieH+X+B!kO?Rj^*4jnpF@qBLiraZpuYa)eLLl+u8c#sfwc0Q<6T=q6f z#MyHapVBD-ALiv~+X#ZtKs#E?fuz4d!e< zdo$*}&wTm+U-$pJzM}@Tq;TW)0}mb~fEE~A&FwoqT|a$Yd&f!UzL`IG)GuGYEDT!N zm9}fmnw(2%rQ-T=J^uE8O^o*zKR;LTY-akVd&XBAl9$d*xz?Y??kP8SFc|E_-gg~XCcY^tG;Ia z>Hq)H{?WU;yJuF;ulx0K2jh`WVf9C#<)WXZq@^FP-G1-Xsz?I^0|C&wit_ul<(Jeq z_CKD!|4(Yz%-648JpwgIihr3($jSAU->X!&`|+Up%$~{W{>MNiv8?Fxz@C~mc7C~@ z>v7e(%cmU$H8|>jPOq2TyLYeP#|>tO*4O`i-BD2?{Qb@5^T%GV-!JDqUGHqv^WX3H z%fH|IJ?>fY{_^*6GWK;gt2<9;7?=9}eHFg{R8)F$a`K-K?e;yPtHVN z|80uz@$&E-Szq^cb>ZyfGgqq8KmD<&`%~d}V0-QFZ$BRL*Ut!Dy=4D>d(cj`_j|wJ zQ;ucc{BiGu^A8WVgM+KZH@^Pw*CnSx<8|3pn{LGm&s=$a&59Kopw$;Y-saa!zbvuR z($)qo7447pV_*<#XEpBfI&ye<&+Towr)OQic1`U6-~Io;|0w_e?*7sEzgOd3y}eHh z=RTfWe(z+}rpg~59{xCN|L5?YtB3Y~-~0ZkbpD=+GyRqZeSFw1@0V!}8p`^1JO6p^ z;{B+-BojINzpc{c9}^Zu!g!zF+%2 z7BqTmyf^FWsvjTw>*okNx!BY+{dceb;vN_lHf?74>uYO&fHt1w?lrEh`*ZgGAKz;w zpvd}M|L=V9tTUjc8mIO5%hZ2yum9q4{XkBweotsSpmXEo)`E%QSi+k671g-Hn zzE0He^8B0jKiK~({JXmUSNO-{^?#0k%>Q?Gf9Klh?RH_7jG)!`AqPM!W$gcb?Ekzi zGe0x4v;2Oo`9Dx3e3bupxV|I)->2!3%F}&7<8Gk!@y2_Tj&^~X1tt%T*6;b`752O< ze0|*6k|>Ldb${-?|9h|HuNk;Sd-C~*4+S;9-)^^jZ(aQ@=bG@fRjXEkgNJkb{>;nE zGGE^)KGG{~zG%S$1yC`uVui-G{QGtMRnwVLw>o7op{ z+h&#>7aJS9=jXH8!g}8iaqFk>THEa6`VUIjcXt-6ug>q`l{WLa;j(PuLdCLocff0O z3m+fro%8)HBsCX5^9egX9W+2#z5jc)@Ve^L({zQuSsUI01!Q^&Z%>JpZDK~j(^FH| zB!gzgj>~nXnXP--*49?>YUT1pn>Kygc#4DJz@tqGvsUzgrt;+f|2PirsQiAvfBxmg z^;UEHK)r;y*5!{L_uKbfT^)XWp>sQE@t%CS#s$Io_5UivW`A&Q=kr}z-+y;^d3sxl zjGP>(+tqp97psIAps&c?dY3~Cr`~#HtltFqK&fi$3C9lx9;4L@%8n+c;Ui? z&-X5#4GvoyWt!Q(~F;ntwj()(3an%=7Ma=0yq4`v zJ2p8hKfnL=_4S~&XkWg6f8OI@B=2KdP$gqr>bEv#r;(Jjw6UxgA3y)``G0TDKl<_U z@#OFC?rwbkKmGl^#ZOke{_}tTs$JFZX3jkG#E7#chEqk+!GUADz&kdUu+)Pb@3?lk z2i#_~jbFvQv}M@tul_gNK4j;~nRBGf$pLsakh8biaL@ z=C0@WY-6v6UOj)@((>iIm+StWDcNgx_3u0XT03{ysaG=?w{Nqa5c5WU<>DPamwje$ zRucbnLI2Eb^YfYoH@2;vsvZ7KvjDWOg{IlpzF5Am{rc+at5>fsg@(sYEvvSX^Ox?sfA8M9-S2j3uijQtR+jd4N6wPI zSD7cbWT`xH8DGb{B1tE?El;#iSoWW`|8-yv z1k^^IWB%&v*RQvBm992UcMS~(c!Hf6|}7&z5NOv-_DcxBOlu^SW1;E?s(*Ds21wshw%nmkiygEgs!sxyjUW_g^s9 zTKxRV!mqEdzy9<2{PZieRbJ<_1v_1g;{GnNhqzz3i|P2P(A8gVWv{oquI@YQ$)1h! z>vrw3x_b5M(zPiYvajncKM)ucv}n;HrRU5+0n^NNbahMH`nGS`qA}CwS*lzgXkq5t z!)NzYe*SXOzwXlKvLBxNzOC%);*u@DQ+Q5>XSP}HrOW>IYkg;%S$?nl`E+{eAx`y- zJ39*JfnB?1%^6Kl;#;wKbMXn)h3%*F{~nrSSv&_E(p##(=Uu&e_2u60_ln;cm%a)K z4G-`CvGarp0|Ub!wf)a^o_M&sx0~hMnD9+sdg;=onb)iJ-$n)pKaR=E%R5&U>8{@^ zYkh6!otrmrrh9s?|5A5P*x$xb|Lq59`!~Utm-${cy&khT^YSvw?W&VK_x^k~dtUDK zvwxLKL#L-0t?ZRHf0lE5l6~A^Ir-l=j*Ik`U0+-67kqPje*7(?o9?ouA%63^eV7>- z4&*xpKA2&Y>UC@9d+YLdA<4>{K?OiE;BGNe3%^|VsWfj zdipjc2cwx+g#B$MUNqa5b90gz=lslBwRSts%r@6wJ7H7N(^HA{(YrG*tNs1DzW(eA z-<=nBpIsfc)+^dDO+h4e{xKcB7dzqj0I=hoPhcmF=#@wm_XxAgwM-)w#rq#SeRIw91$PCo?X7iAlJ3! z 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 z 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/DirectShare/screenshots/3-message.png b/prebuilts/gradle/DirectShare/screenshots/3-message.png new file mode 100644 index 0000000000000000000000000000000000000000..54f9e9f727818e90c50ccdceb5d36b4293826d49 GIT binary patch literal 88338 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%0Dx9B3P*MyHj^XAS~ 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/DirectShare/screenshots/icon-web.png b/prebuilts/gradle/DirectShare/screenshots/icon-web.png new file mode 100644 index 0000000000000000000000000000000000000000..ee7c5579d63dcd08ad56c9ca5001ebd80cf710e0 GIT binary patch literal 39530 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≶BMUG^9q@ddTl^Ug+Z-TV4%MT0j3=LA2wJJ(Cj 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 MPgg&ebxsLQ0DnhYbpQYW literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/DirectShare/settings.gradle b/prebuilts/gradle/DirectShare/settings.gradle new file mode 100644 index 00000000..0a5c310b --- /dev/null +++ b/prebuilts/gradle/DirectShare/settings.gradle @@ -0,0 +1,2 @@ + +include 'Application' diff --git a/prebuilts/gradle/DirectorySelection/Application/src/main/java/com/example/android/directoryselection/DirectorySelectionFragment.java b/prebuilts/gradle/DirectorySelection/Application/src/main/java/com/example/android/directoryselection/DirectorySelectionFragment.java index 4af55dbe..075f39b7 100644 --- a/prebuilts/gradle/DirectorySelection/Application/src/main/java/com/example/android/directoryselection/DirectorySelectionFragment.java +++ b/prebuilts/gradle/DirectorySelection/Application/src/main/java/com/example/android/directoryselection/DirectorySelectionFragment.java @@ -27,7 +27,6 @@ import android.os.Bundle; import android.provider.DocumentsContract; import android.provider.DocumentsContract.Document; import android.support.v4.app.Fragment; -import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; @@ -124,8 +123,7 @@ public class DirectorySelectionFragment extends Fragment { } }); mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview_directory_entries); - mLayoutManager = new LinearLayoutManager(getActivity()); - mRecyclerView.setLayoutManager(mLayoutManager); + mLayoutManager = mRecyclerView.getLayoutManager(); mRecyclerView.scrollToPosition(0); mAdapter = new DirectoryEntryAdapter(new ArrayList()); mRecyclerView.setAdapter(mAdapter); diff --git a/prebuilts/gradle/DirectorySelection/Application/src/main/res/layout/fragment_directory_selection.xml b/prebuilts/gradle/DirectorySelection/Application/src/main/res/layout/fragment_directory_selection.xml index d63219c5..631a8fc4 100644 --- a/prebuilts/gradle/DirectorySelection/Application/src/main/res/layout/fragment_directory_selection.xml +++ b/prebuilts/gradle/DirectorySelection/Application/src/main/res/layout/fragment_directory_selection.xml @@ -16,6 +16,7 @@ --> + android:layout_height="match_parent" + app:layoutManager="LinearLayoutManager" + /> diff --git a/prebuilts/gradle/MidiScope/.google/packaging.yaml b/prebuilts/gradle/MidiScope/.google/packaging.yaml new file mode 100644 index 00000000..ad3aee6b --- /dev/null +++ b/prebuilts/gradle/MidiScope/.google/packaging.yaml @@ -0,0 +1,18 @@ + +# GOOGLE SAMPLE PACKAGING DATA +# +# This file is used by Google as part of our samples packaging process. +# End users may safely ignore this file. It has no relevance to other systems. +--- +status: PUBLISHED +technologies: [Android] +categories: [Media] +languages: [Java] +solutions: [Mobile] +github: android-MidiScope +level: INTERMEDIATE +icon: screenshots/icon-web.png +apiRefs: + - android:android.media.midi.MidiManager + - android:android.media.midi.MidiReceiver +license: apache2 diff --git a/prebuilts/gradle/MidiScope/Application/build.gradle b/prebuilts/gradle/MidiScope/Application/build.gradle new file mode 100644 index 00000000..4e8f709c --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/build.gradle @@ -0,0 +1,73 @@ + +buildscript { + repositories { + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:1.2.3' + } +} + +apply plugin: 'com.android.application' + +repositories { + jcenter() +} + +dependencies { + compile "com.android.support:support-v4:23.0.0" + compile "com.android.support:support-v13:23.0.0" + compile "com.android.support:cardview-v7:23.0.0" +} + +// The sample build uses multiple directories to +// keep boilerplate and common code separate from +// the main sample code. +List dirs = [ + 'main', // main sample code; look here for the interesting stuff. + 'common', // components that are reused by multiple samples + 'template'] // boilerplate code that is generated by the sample template process + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.0" + + defaultConfig { + minSdkVersion 23 + targetSdkVersion 23 + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + sourceSets { + main { + dirs.each { dir -> + java.srcDirs "src/${dir}/java" + res.srcDirs "src/${dir}/res" + } + } + androidTest.setRoot('tests') + androidTest.java.srcDirs = ['tests/src'] + + } + +} + + + + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/MidiScope/Application/src/main/AndroidManifest.xml new file mode 100644 index 00000000..c2b1c43f --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/AndroidManifest.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/EventScheduler.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/EventScheduler.java new file mode 100644 index 00000000..37c0140d --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/EventScheduler.java @@ -0,0 +1,243 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import java.util.SortedMap; +import java.util.TreeMap; + +/** + * Store SchedulableEvents in a timestamped buffer. + * Events may be written in any order. + * Events will be read in sorted order. + * Events with the same timestamp will be read in the order they were added. + * + * Only one Thread can write into the buffer. + * And only one Thread can read from the buffer. + */ +public class EventScheduler { + private static final long NANOS_PER_MILLI = 1000000; + + private final Object lock = new Object(); + private SortedMap mEventBuffer; + // This does not have to be guarded. It is only set by the writing thread. + // If the reader sees a null right before being set then that is OK. + private FastEventQueue mEventPool = null; + private static final int MAX_POOL_SIZE = 200; + + public EventScheduler() { + mEventBuffer = new TreeMap(); + } + + // If we keep at least one node in the list then it can be atomic + // and non-blocking. + private class FastEventQueue { + // One thread takes from the beginning of the list. + volatile SchedulableEvent mFirst; + // A second thread returns events to the end of the list. + volatile SchedulableEvent mLast; + volatile long mEventsAdded; + volatile long mEventsRemoved; + + FastEventQueue(SchedulableEvent event) { + mFirst = event; + mLast = mFirst; + mEventsAdded = 1; // Always created with one event added. Never empty. + mEventsRemoved = 0; // None removed yet. + } + + int size() { + return (int)(mEventsAdded - mEventsRemoved); + } + + /** + * Do not call this unless there is more than one event + * in the list. + * @return first event in the list + */ + public SchedulableEvent remove() { + // Take first event. + mEventsRemoved++; + SchedulableEvent event = mFirst; + mFirst = event.mNext; + return event; + } + + /** + * @param event + */ + public void add(SchedulableEvent event) { + event.mNext = null; + mLast.mNext = event; + mLast = event; + mEventsAdded++; + } + } + + /** + * Base class for events that can be stored in the EventScheduler. + */ + public static class SchedulableEvent { + private long mTimestamp; + private SchedulableEvent mNext = null; + + /** + * @param timestamp + */ + public SchedulableEvent(long timestamp) { + mTimestamp = timestamp; + } + + /** + * @return timestamp + */ + public long getTimestamp() { + return mTimestamp; + } + + /** + * The timestamp should not be modified when the event is in the + * scheduling buffer. + */ + public void setTimestamp(long timestamp) { + mTimestamp = timestamp; + } + } + + /** + * Get an event from the pool. + * Always leave at least one event in the pool. + * @return event or null + */ + public SchedulableEvent removeEventfromPool() { + SchedulableEvent event = null; + if (mEventPool != null && (mEventPool.size() > 1)) { + event = mEventPool.remove(); + } + return event; + } + + /** + * Return events to a pool so they can be reused. + * + * @param event + */ + public void addEventToPool(SchedulableEvent event) { + if (mEventPool == null) { + mEventPool = new FastEventQueue(event); + // If we already have enough items in the pool then just + // drop the event. This prevents unbounded memory leaks. + } else if (mEventPool.size() < MAX_POOL_SIZE) { + mEventPool.add(event); + } + } + + /** + * Add an event to the scheduler. Events with the same time will be + * processed in order. + * + * @param event + */ + public void add(SchedulableEvent event) { + synchronized (lock) { + FastEventQueue list = mEventBuffer.get(event.getTimestamp()); + if (list == null) { + long lowestTime = mEventBuffer.isEmpty() ? Long.MAX_VALUE + : mEventBuffer.firstKey(); + list = new FastEventQueue(event); + mEventBuffer.put(event.getTimestamp(), list); + // If the event we added is earlier than the previous earliest + // event then notify any threads waiting for the next event. + if (event.getTimestamp() < lowestTime) { + lock.notify(); + } + } else { + list.add(event); + } + } + } + + // Caller must synchronize on lock before calling. + private SchedulableEvent removeNextEventLocked(long lowestTime) { + SchedulableEvent event; + FastEventQueue list = mEventBuffer.get(lowestTime); + // Remove list from tree if this is the last node. + if ((list.size() == 1)) { + mEventBuffer.remove(lowestTime); + } + event = list.remove(); + return event; + } + + /** + * Check to see if any scheduled events are ready to be processed. + * + * @param timestamp + * @return next event or null if none ready + */ + public SchedulableEvent getNextEvent(long time) { + SchedulableEvent event = null; + synchronized (lock) { + if (!mEventBuffer.isEmpty()) { + long lowestTime = mEventBuffer.firstKey(); + // Is it time for this list to be processed? + if (lowestTime <= time) { + event = removeNextEventLocked(lowestTime); + } + } + } + // Log.i(TAG, "getNextEvent: event = " + event); + return event; + } + + /** + * Return the next available event or wait until there is an event ready to + * be processed. This method assumes that the timestamps are in nanoseconds + * and that the current time is System.nanoTime(). + * + * @return event + * @throws InterruptedException + */ + public SchedulableEvent waitNextEvent() throws InterruptedException { + SchedulableEvent event = null; + while (true) { + long millisToWait = Integer.MAX_VALUE; + synchronized (lock) { + if (!mEventBuffer.isEmpty()) { + long now = System.nanoTime(); + long lowestTime = mEventBuffer.firstKey(); + // Is it time for the earliest list to be processed? + if (lowestTime <= now) { + event = removeNextEventLocked(lowestTime); + break; + } else { + // Figure out how long to sleep until next event. + long nanosToWait = lowestTime - now; + // Add 1 millisecond so we don't wake up before it is + // ready. + millisToWait = 1 + (nanosToWait / NANOS_PER_MILLI); + // Clip 64-bit value to 32-bit max. + if (millisToWait > Integer.MAX_VALUE) { + millisToWait = Integer.MAX_VALUE; + } + } + } + lock.wait((int) millisToWait); + } + } + return event; + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiConstants.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiConstants.java new file mode 100644 index 00000000..38c25d50 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiConstants.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +/** + * MIDI related constants and static methods. + * These values are defined in the MIDI Standard 1.0 + * available from the MIDI Manufacturers Association. + */ +public class MidiConstants { + protected final static String TAG = "MidiTools"; + public static final byte STATUS_COMMAND_MASK = (byte) 0xF0; + public static final byte STATUS_CHANNEL_MASK = (byte) 0x0F; + + // Channel voice messages. + public static final byte STATUS_NOTE_OFF = (byte) 0x80; + public static final byte STATUS_NOTE_ON = (byte) 0x90; + public static final byte STATUS_POLYPHONIC_AFTERTOUCH = (byte) 0xA0; + public static final byte STATUS_CONTROL_CHANGE = (byte) 0xB0; + public static final byte STATUS_PROGRAM_CHANGE = (byte) 0xC0; + public static final byte STATUS_CHANNEL_PRESSURE = (byte) 0xD0; + public static final byte STATUS_PITCH_BEND = (byte) 0xE0; + + // System Common Messages. + public static final byte STATUS_SYSTEM_EXCLUSIVE = (byte) 0xF0; + public static final byte STATUS_MIDI_TIME_CODE = (byte) 0xF1; + public static final byte STATUS_SONG_POSITION = (byte) 0xF2; + public static final byte STATUS_SONG_SELECT = (byte) 0xF3; + public static final byte STATUS_TUNE_REQUEST = (byte) 0xF6; + public static final byte STATUS_END_SYSEX = (byte) 0xF7; + + // System Real-Time Messages + public static final byte STATUS_TIMING_CLOCK = (byte) 0xF8; + public static final byte STATUS_START = (byte) 0xFA; + public static final byte STATUS_CONTINUE = (byte) 0xFB; + public static final byte STATUS_STOP = (byte) 0xFC; + public static final byte STATUS_ACTIVE_SENSING = (byte) 0xFE; + public static final byte STATUS_RESET = (byte) 0xFF; + + /** Number of bytes in a message nc from 8c to Ec */ + public final static int CHANNEL_BYTE_LENGTHS[] = { 3, 3, 3, 3, 2, 2, 3 }; + + /** Number of bytes in a message Fn from F0 to FF */ + public final static int SYSTEM_BYTE_LENGTHS[] = { 1, 2, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1 }; + + /** + * MIDI messages, except for SysEx, are 1,2 or 3 bytes long. + * You can tell how long a MIDI message is from the first status byte. + * Do not call this for SysEx, which has variable length. + * @param statusByte + * @return number of bytes in a complete message, zero if data byte passed + */ + public static int getBytesPerMessage(byte statusByte) { + // Java bytes are signed so we need to mask off the high bits + // to get a value between 0 and 255. + int statusInt = statusByte & 0xFF; + if (statusInt >= 0xF0) { + // System messages use low nibble for size. + return SYSTEM_BYTE_LENGTHS[statusInt & 0x0F]; + } else if(statusInt >= 0x80) { + // Channel voice messages use high nibble for size. + return CHANNEL_BYTE_LENGTHS[(statusInt >> 4) - 8]; + } else { + return 0; // data byte + } + } + + /** + * @param msg + * @param offset + * @param count + * @return true if the entire message is ActiveSensing commands + */ + public static boolean isAllActiveSensing(byte[] msg, int offset, + int count) { + // Count bytes that are not active sensing. + int goodBytes = 0; + for (int i = 0; i < count; i++) { + byte b = msg[offset + i]; + if (b != MidiConstants.STATUS_ACTIVE_SENSING) { + goodBytes++; + } + } + return (goodBytes == 0); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiDispatcher.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiDispatcher.java new file mode 100644 index 00000000..b7f1fe1e --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiDispatcher.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiReceiver; +import android.media.midi.MidiSender; + +import java.io.IOException; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * Utility class for dispatching MIDI data to a list of {@link MidiReceiver}s. + * This class subclasses {@link MidiReceiver} and dispatches any data it receives + * to its receiver list. Any receivers that throw an exception upon receiving data will + * be automatically removed from the receiver list, but no IOException will be returned + * from the dispatcher's {@link MidiReceiver#onReceive} in that case. + */ +public final class MidiDispatcher extends MidiReceiver { + + private final CopyOnWriteArrayList mReceivers + = new CopyOnWriteArrayList(); + + private final MidiSender mSender = new MidiSender() { + /** + * Called to connect a {@link MidiReceiver} to the sender + * + * @param receiver the receiver to connect + */ + @Override + public void onConnect(MidiReceiver receiver) { + mReceivers.add(receiver); + } + + /** + * Called to disconnect a {@link MidiReceiver} from the sender + * + * @param receiver the receiver to disconnect + */ + @Override + public void onDisconnect(MidiReceiver receiver) { + mReceivers.remove(receiver); + } + }; + + /** + * Returns the number of {@link MidiReceiver}s this dispatcher contains. + * @return the number of receivers + */ + public int getReceiverCount() { + return mReceivers.size(); + } + + /** + * Returns a {@link MidiSender} which is used to add and remove + * {@link MidiReceiver}s + * to the dispatcher's receiver list. + * @return the dispatcher's MidiSender + */ + public MidiSender getSender() { + return mSender; + } + + @Override + public void onSend(byte[] msg, int offset, int count, long timestamp) throws IOException { + for (MidiReceiver receiver : mReceivers) { + try { + receiver.send(msg, offset, count, timestamp); + } catch (IOException e) { + // if the receiver fails we remove the receiver but do not propagate the exception + mReceivers.remove(receiver); + } + } + } + + @Override + public void flush() throws IOException { + for (MidiReceiver receiver : mReceivers) { + receiver.flush(); + } + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiEventScheduler.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiEventScheduler.java new file mode 100644 index 00000000..513d3939 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiEventScheduler.java @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiReceiver; + +import java.io.IOException; + +/** + * Add MIDI Events to an EventScheduler + */ +public class MidiEventScheduler extends EventScheduler { + private static final String TAG = "MidiEventScheduler"; + // Maintain a pool of scheduled events to reduce memory allocation. + // This pool increases performance by about 14%. + private final static int POOL_EVENT_SIZE = 16; + private MidiReceiver mReceiver = new SchedulingReceiver(); + + private class SchedulingReceiver extends MidiReceiver + { + /** + * Store these bytes in the EventScheduler to be delivered at the specified + * time. + */ + @Override + public void onSend(byte[] msg, int offset, int count, long timestamp) + throws IOException { + MidiEvent event = createScheduledEvent(msg, offset, count, timestamp); + if (event != null) { + add(event); + } + } + } + + public static class MidiEvent extends SchedulableEvent { + public int count = 0; + public byte[] data; + + private MidiEvent(int count) { + super(0); + data = new byte[count]; + } + + private MidiEvent(byte[] msg, int offset, int count, long timestamp) { + super(timestamp); + data = new byte[count]; + System.arraycopy(msg, offset, data, 0, count); + this.count = count; + } + + @Override + public String toString() { + String text = "Event: "; + for (int i = 0; i < count; i++) { + text += data[i] + ", "; + } + return text; + } + } + + /** + * Create an event that contains the message. + */ + private MidiEvent createScheduledEvent(byte[] msg, int offset, int count, + long timestamp) { + MidiEvent event; + if (count > POOL_EVENT_SIZE) { + event = new MidiEvent(msg, offset, count, timestamp); + } else { + event = (MidiEvent) removeEventfromPool(); + if (event == null) { + event = new MidiEvent(POOL_EVENT_SIZE); + } + System.arraycopy(msg, offset, event.data, 0, count); + event.count = count; + event.setTimestamp(timestamp); + } + return event; + } + + /** + * Return events to a pool so they can be reused. + * + * @param event + */ + @Override + public void addEventToPool(SchedulableEvent event) { + // Make sure the event is suitable for the pool. + if (event instanceof MidiEvent) { + MidiEvent midiEvent = (MidiEvent) event; + if (midiEvent.data.length == POOL_EVENT_SIZE) { + super.addEventToPool(event); + } + } + } + + /** + * This MidiReceiver will write date to the scheduling buffer. + * @return the MidiReceiver + */ + public MidiReceiver getReceiver() { + return mReceiver; + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiEventThread.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiEventThread.java new file mode 100644 index 00000000..626e83cf --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiEventThread.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiSender; +import android.util.Log; + +import java.io.IOException; + +public class MidiEventThread extends MidiEventScheduler { + protected static final String TAG = "MidiEventThread"; + + private EventThread mEventThread; + MidiDispatcher mDispatcher = new MidiDispatcher(); + + class EventThread extends Thread { + private boolean go = true; + + @Override + public void run() { + while (go) { + try { + MidiEvent event = (MidiEvent) waitNextEvent(); + try { + Log.i(TAG, "Fire event " + event.data[0] + " at " + + event.getTimestamp()); + mDispatcher.send(event.data, 0, + event.count, event.getTimestamp()); + } catch (IOException e) { + e.printStackTrace(); + } + // Put event back in the pool for future use. + addEventToPool(event); + } catch (InterruptedException e) { + // OK, this is how we stop the thread. + } + } + } + + /** + * Asynchronously tell the thread to stop. + */ + public void requestStop() { + go = false; + interrupt(); + } + } + + public void start() { + stop(); + mEventThread = new EventThread(); + mEventThread.start(); + } + + /** + * Asks the thread to stop then waits for it to stop. + */ + public void stop() { + if (mEventThread != null) { + mEventThread.requestStop(); + try { + mEventThread.join(500); + } catch (InterruptedException e) { + Log.e(TAG, + "Interrupted while waiting for MIDI EventScheduler thread to stop."); + } finally { + mEventThread = null; + } + } + } + + public MidiSender getSender() { + return mDispatcher.getSender(); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiFramer.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiFramer.java new file mode 100644 index 00000000..c274925a --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiFramer.java @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiReceiver; +import android.util.Log; + +import java.io.IOException; + +/** + * Convert stream of arbitrary MIDI bytes into discrete messages. + * + * Parses the incoming bytes and then posts individual messages to the receiver + * specified in the constructor. Short messages of 1-3 bytes will be complete. + * System Exclusive messages may be posted in pieces. + * + * Resolves Running Status and interleaved System Real-Time messages. + */ +public class MidiFramer extends MidiReceiver { + private MidiReceiver mReceiver; + private byte[] mBuffer = new byte[3]; + private int mCount; + private byte mRunningStatus; + private int mNeeded; + private boolean mInSysEx; + + public MidiFramer(MidiReceiver receiver) { + mReceiver = receiver; + } + + /* + * @see android.midi.MidiReceiver#onSend(byte[], int, int, long) + */ + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + int sysExStartOffset = (mInSysEx ? offset : -1); + + for (int i = 0; i < count; i++) { + final byte currentByte = data[offset]; + final int currentInt = currentByte & 0xFF; + if (currentInt >= 0x80) { // status byte? + if (currentInt < 0xF0) { // channel message? + mRunningStatus = currentByte; + mCount = 1; + mNeeded = MidiConstants.getBytesPerMessage(currentByte) - 1; + } else if (currentInt < 0xF8) { // system common? + if (currentInt == 0xF0 /* SysEx Start */) { + // Log.i(TAG, "SysEx Start"); + mInSysEx = true; + sysExStartOffset = offset; + } else if (currentInt == 0xF7 /* SysEx End */) { + // Log.i(TAG, "SysEx End"); + if (mInSysEx) { + mReceiver.send(data, sysExStartOffset, + offset - sysExStartOffset + 1, timestamp); + mInSysEx = false; + sysExStartOffset = -1; + } + } else { + mBuffer[0] = currentByte; + mRunningStatus = 0; + mCount = 1; + mNeeded = MidiConstants.getBytesPerMessage(currentByte) - 1; + } + } else { // real-time? + // Single byte message interleaved with other data. + if (mInSysEx) { + mReceiver.send(data, sysExStartOffset, + offset - sysExStartOffset, timestamp); + sysExStartOffset = offset + 1; + } + mReceiver.send(data, offset, 1, timestamp); + } + } else { // data byte + if (!mInSysEx) { + mBuffer[mCount++] = currentByte; + if (--mNeeded == 0) { + if (mRunningStatus != 0) { + mBuffer[0] = mRunningStatus; + } + mReceiver.send(mBuffer, 0, mCount, timestamp); + mNeeded = MidiConstants.getBytesPerMessage(mBuffer[0]) - 1; + mCount = 1; + } + } + } + ++offset; + } + + // send any accumulatedSysEx data + if (sysExStartOffset >= 0 && sysExStartOffset < offset) { + mReceiver.send(data, sysExStartOffset, + offset - sysExStartOffset, timestamp); + } + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiInputPortSelector.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiInputPortSelector.java new file mode 100644 index 00000000..7c665bac --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiInputPortSelector.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDevice; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiInputPort; +import android.media.midi.MidiManager; +import android.media.midi.MidiReceiver; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; + +import java.io.IOException; + +/** + * Manages a Spinner for selecting a MidiInputPort. + */ +public class MidiInputPortSelector extends MidiPortSelector { + + private MidiInputPort mInputPort; + private MidiDevice mOpenDevice; + + /** + * @param midiManager + * @param activity + * @param spinnerId ID from the layout resource + */ + public MidiInputPortSelector(MidiManager midiManager, Activity activity, + int spinnerId) { + super(midiManager, activity, spinnerId, MidiDeviceInfo.PortInfo.TYPE_INPUT); + } + + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + close(); + final MidiDeviceInfo info = wrapper.getDeviceInfo(); + if (info != null) { + mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { + @Override + public void onDeviceOpened(MidiDevice device) { + if (device == null) { + Log.e(MidiConstants.TAG, "could not open " + info); + } else { + mOpenDevice = device; + mInputPort = mOpenDevice.openInputPort( + wrapper.getPortIndex()); + if (mInputPort == null) { + Log.e(MidiConstants.TAG, "could not open input port on " + info); + } + } + } + }, null); + // Don't run the callback on the UI thread because openInputPort might take a while. + } + } + + public MidiReceiver getReceiver() { + return mInputPort; + } + + @Override + public void onClose() { + try { + if (mInputPort != null) { + Log.i(MidiConstants.TAG, "MidiInputPortSelector.onClose() - close port"); + mInputPort.close(); + } + mInputPort = null; + if (mOpenDevice != null) { + mOpenDevice.close(); + } + mOpenDevice = null; + } catch (IOException e) { + Log.e(MidiConstants.TAG, "cleanup failed", e); + } + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiOutputPortConnectionSelector.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiOutputPortConnectionSelector.java new file mode 100644 index 00000000..ca1ade48 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiOutputPortConnectionSelector.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; +import android.util.Log; + +import java.io.IOException; + +/** + * Select an output port and connect it to a destination input port. + */ +public class MidiOutputPortConnectionSelector extends MidiPortSelector { + + private MidiPortConnector mSynthConnector; + private MidiDeviceInfo mDestinationDeviceInfo; + private int mDestinationPortIndex; + private MidiPortConnector.OnPortsConnectedListener mConnectedListener; + + /** + * @param midiManager + * @param activity + * @param spinnerId + * @param type + */ + public MidiOutputPortConnectionSelector(MidiManager midiManager, + Activity activity, int spinnerId, + MidiDeviceInfo destinationDeviceInfo, int destinationPortIndex) { + super(midiManager, activity, spinnerId, + MidiDeviceInfo.PortInfo.TYPE_OUTPUT); + mDestinationDeviceInfo = destinationDeviceInfo; + mDestinationPortIndex = destinationPortIndex; + } + + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + Log.i(MidiConstants.TAG, "connectPortToSynth: " + wrapper); + onClose(); + if (wrapper.getDeviceInfo() != null) { + mSynthConnector = new MidiPortConnector(mMidiManager); + mSynthConnector.connectToDevicePort(wrapper.getDeviceInfo(), + wrapper.getPortIndex(), mDestinationDeviceInfo, + mDestinationPortIndex, + // not safe on UI thread + mConnectedListener, null); + } + } + + @Override + public void onClose() { + try { + if (mSynthConnector != null) { + mSynthConnector.close(); + mSynthConnector = null; + } + } catch (IOException e) { + Log.e(MidiConstants.TAG, "Exception in closeSynthResources()", e); + } + } + + /** + * @param myPortsConnectedListener + */ + public void setConnectedListener( + MidiPortConnector.OnPortsConnectedListener connectedListener) { + mConnectedListener = connectedListener; + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiOutputPortSelector.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiOutputPortSelector.java new file mode 100644 index 00000000..5aebf727 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiOutputPortSelector.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDevice; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; +import android.media.midi.MidiOutputPort; +import android.media.midi.MidiSender; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; + +import java.io.IOException; + +/** + * Manages a Spinner for selecting a MidiOutputPort. + */ +public class MidiOutputPortSelector extends MidiPortSelector { + private MidiOutputPort mOutputPort; + private MidiDispatcher mDispatcher = new MidiDispatcher(); + private MidiDevice mOpenDevice; + + /** + * @param midiManager + * @param activity + * @param spinnerId ID from the layout resource + */ + public MidiOutputPortSelector(MidiManager midiManager, Activity activity, + int spinnerId) { + super(midiManager, activity, spinnerId, MidiDeviceInfo.PortInfo.TYPE_OUTPUT); + } + + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + Log.i(MidiConstants.TAG, "onPortSelected: " + wrapper); + close(); + + final MidiDeviceInfo info = wrapper.getDeviceInfo(); + if (info != null) { + mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { + + @Override + public void onDeviceOpened(MidiDevice device) { + if (device == null) { + Log.e(MidiConstants.TAG, "could not open " + info); + } else { + mOpenDevice = device; + mOutputPort = device.openOutputPort(wrapper.getPortIndex()); + if (mOutputPort == null) { + Log.e(MidiConstants.TAG, + "could not open output port for " + info); + return; + } + mOutputPort.connect(mDispatcher); + } + } + }, null); + // Don't run the callback on the UI thread because openOutputPort might take a while. + } + } + + @Override + public void onClose() { + try { + if (mOutputPort != null) { + mOutputPort.disconnect(mDispatcher); + } + mOutputPort = null; + if (mOpenDevice != null) { + mOpenDevice.close(); + } + mOpenDevice = null; + } catch (IOException e) { + Log.e(MidiConstants.TAG, "cleanup failed", e); + } + } + + /** + * You can connect your MidiReceivers to this sender. The user will then select which output + * port will send messages through this MidiSender. + * @return a MidiSender that will send the messages from the selected port. + */ + public MidiSender getSender() { + return mDispatcher.getSender(); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortConnector.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortConnector.java new file mode 100644 index 00000000..457494d1 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortConnector.java @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiDevice; +import android.media.midi.MidiDevice.MidiConnection; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiInputPort; +import android.media.midi.MidiManager; +import android.os.Handler; +import android.util.Log; + +import java.io.IOException; + +/** + * Tool for connecting MIDI ports on two remote devices. + */ +public class MidiPortConnector { + private final MidiManager mMidiManager; + private MidiDevice mSourceDevice; + private MidiDevice mDestinationDevice; + private MidiConnection mConnection; + + /** + * @param mMidiManager + */ + public MidiPortConnector(MidiManager midiManager) { + mMidiManager = midiManager; + } + + public void close() throws IOException { + if (mConnection != null) { + Log.i(MidiConstants.TAG, + "MidiPortConnector closing connection " + mConnection); + mConnection.close(); + mConnection = null; + } + if (mSourceDevice != null) { + mSourceDevice.close(); + mSourceDevice = null; + } + if (mDestinationDevice != null) { + mDestinationDevice.close(); + mDestinationDevice = null; + } + } + + private void safeClose() { + try { + close(); + } catch (IOException e) { + Log.e(MidiConstants.TAG, "could not close resources", e); + } + } + + /** + * Listener class used for receiving the results of + * {@link #connectToDevicePort} + */ + public interface OnPortsConnectedListener { + /** + * Called to respond to a {@link #connectToDevicePort} request + * + * @param connection + * a {@link MidiConnection} that represents the connected + * ports, or null if connection failed + */ + abstract public void onPortsConnected(MidiConnection connection); + } + + /** + * Open two devices and connect their ports. + * + * @param sourceDeviceInfo + * @param sourcePortIndex + * @param destinationDeviceInfo + * @param destinationPortIndex + */ + public void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, + final int sourcePortIndex, + final MidiDeviceInfo destinationDeviceInfo, + final int destinationPortIndex) { + connectToDevicePort(sourceDeviceInfo, sourcePortIndex, + destinationDeviceInfo, destinationPortIndex, null, null); + } + + /** + * Open two devices and connect their ports. + * + * @param sourceDeviceInfo + * @param sourcePortIndex + * @param destinationDeviceInfo + * @param destinationPortIndex + */ + public void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, + final int sourcePortIndex, + final MidiDeviceInfo destinationDeviceInfo, + final int destinationPortIndex, + final OnPortsConnectedListener listener, final Handler handler) { + safeClose(); + mMidiManager.openDevice(destinationDeviceInfo, + new MidiManager.OnDeviceOpenedListener() { + @Override + public void onDeviceOpened(MidiDevice destinationDevice) { + if (destinationDevice == null) { + Log.e(MidiConstants.TAG, + "could not open " + destinationDeviceInfo); + if (listener != null) { + listener.onPortsConnected(null); + } + } else { + mDestinationDevice = destinationDevice; + Log.i(MidiConstants.TAG, + "connectToDevicePort opened " + + destinationDeviceInfo); + // Destination device was opened so go to next step. + MidiInputPort destinationInputPort = destinationDevice + .openInputPort(destinationPortIndex); + if (destinationInputPort != null) { + Log.i(MidiConstants.TAG, + "connectToDevicePort opened port on " + + destinationDeviceInfo); + connectToDevicePort(sourceDeviceInfo, + sourcePortIndex, + destinationInputPort, + listener, handler); + } else { + Log.e(MidiConstants.TAG, + "could not open port on " + + destinationDeviceInfo); + safeClose(); + if (listener != null) { + listener.onPortsConnected(null); + } + } + } + } + }, handler); + } + + + /** + * Open a source device and connect its output port to the + * destinationInputPort. + * + * @param sourceDeviceInfo + * @param sourcePortIndex + * @param destinationInputPort + */ + private void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, + final int sourcePortIndex, + final MidiInputPort destinationInputPort, + final OnPortsConnectedListener listener, final Handler handler) { + mMidiManager.openDevice(sourceDeviceInfo, + new MidiManager.OnDeviceOpenedListener() { + @Override + public void onDeviceOpened(MidiDevice device) { + if (device == null) { + Log.e(MidiConstants.TAG, + "could not open " + sourceDeviceInfo); + safeClose(); + if (listener != null) { + listener.onPortsConnected(null); + } + } else { + Log.i(MidiConstants.TAG, + "connectToDevicePort opened " + + sourceDeviceInfo); + // Device was opened so connect the ports. + mSourceDevice = device; + mConnection = device.connectPorts( + destinationInputPort, sourcePortIndex); + if (mConnection == null) { + Log.e(MidiConstants.TAG, "could not connect to " + + sourceDeviceInfo); + safeClose(); + } + if (listener != null) { + listener.onPortsConnected(mConnection); + } + } + } + }, handler); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortSelector.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortSelector.java new file mode 100644 index 00000000..39f983e3 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortSelector.java @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiDeviceStatus; +import android.media.midi.MidiManager; +import android.media.midi.MidiManager.DeviceCallback; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Spinner; + +import java.util.HashSet; + +/** + * Base class that uses a Spinner to select available MIDI ports. + */ +public abstract class MidiPortSelector extends DeviceCallback { + private int mType = MidiDeviceInfo.PortInfo.TYPE_INPUT; + protected ArrayAdapter mAdapter; + protected HashSet mBusyPorts = new HashSet(); + private Spinner mSpinner; + protected MidiManager mMidiManager; + protected Activity mActivity; + private MidiPortWrapper mCurrentWrapper; + + /** + * @param midiManager + * @param activity + * @param spinnerId + * ID from the layout resource + * @param type + * TYPE_INPUT or TYPE_OUTPUT + */ + public MidiPortSelector(MidiManager midiManager, Activity activity, + int spinnerId, int type) { + mMidiManager = midiManager; + mActivity = activity; + mType = type; + mAdapter = new ArrayAdapter(activity, + android.R.layout.simple_spinner_item); + mAdapter.setDropDownViewResource( + android.R.layout.simple_spinner_dropdown_item); + mAdapter.add(new MidiPortWrapper(null, 0, 0)); + + mSpinner = (Spinner) activity.findViewById(spinnerId); + mSpinner.setOnItemSelectedListener( + new AdapterView.OnItemSelectedListener() { + + public void onItemSelected(AdapterView parent, View view, + int pos, long id) { + mCurrentWrapper = mAdapter.getItem(pos); + onPortSelected(mCurrentWrapper); + } + + public void onNothingSelected(AdapterView parent) { + onPortSelected(null); + mCurrentWrapper = null; + } + }); + mSpinner.setAdapter(mAdapter); + + mMidiManager.registerDeviceCallback(this, + new Handler(Looper.getMainLooper())); + + MidiDeviceInfo[] infos = mMidiManager.getDevices(); + for (MidiDeviceInfo info : infos) { + onDeviceAdded(info); + } + } + + /** + * Set to no port selected. + */ + public void clearSelection() { + mSpinner.setSelection(0); + } + + private int getInfoPortCount(final MidiDeviceInfo info) { + int portCount = (mType == MidiDeviceInfo.PortInfo.TYPE_INPUT) + ? info.getInputPortCount() : info.getOutputPortCount(); + return portCount; + } + + @Override + public void onDeviceAdded(final MidiDeviceInfo info) { + int portCount = getInfoPortCount(info); + for (int i = 0; i < portCount; ++i) { + MidiPortWrapper wrapper = new MidiPortWrapper(info, mType, i); + mAdapter.add(wrapper); + Log.i(MidiConstants.TAG, wrapper + " was added"); + mAdapter.notifyDataSetChanged(); + } + } + + @Override + public void onDeviceRemoved(final MidiDeviceInfo info) { + int portCount = getInfoPortCount(info); + for (int i = 0; i < portCount; ++i) { + MidiPortWrapper wrapper = new MidiPortWrapper(info, mType, i); + MidiPortWrapper currentWrapper = mCurrentWrapper; + mAdapter.remove(wrapper); + // If the currently selected port was removed then select no port. + if (wrapper.equals(currentWrapper)) { + clearSelection(); + } + mAdapter.notifyDataSetChanged(); + Log.i(MidiConstants.TAG, wrapper + " was removed"); + } + } + + @Override + public void onDeviceStatusChanged(final MidiDeviceStatus status) { + // If an input port becomes busy then remove it from the menu. + // If it becomes free then add it back to the menu. + if (mType == MidiDeviceInfo.PortInfo.TYPE_INPUT) { + MidiDeviceInfo info = status.getDeviceInfo(); + Log.i(MidiConstants.TAG, "MidiPortSelector.onDeviceStatusChanged status = " + status + + ", mType = " + mType + + ", activity = " + mActivity.getPackageName() + + ", info = " + info); + // Look for transitions from free to busy. + int portCount = info.getInputPortCount(); + for (int i = 0; i < portCount; ++i) { + MidiPortWrapper wrapper = new MidiPortWrapper(info, mType, i); + if (!wrapper.equals(mCurrentWrapper)) { + if (status.isInputPortOpen(i)) { // busy? + if (!mBusyPorts.contains(wrapper)) { + // was free, now busy + mBusyPorts.add(wrapper); + mAdapter.remove(wrapper); + mAdapter.notifyDataSetChanged(); + } + } else { + if (mBusyPorts.remove(wrapper)) { + // was busy, now free + mAdapter.add(wrapper); + mAdapter.notifyDataSetChanged(); + } + } + } + } + } + } + + /** + * Implement this method to handle the user selecting a port on a device. + * + * @param wrapper + */ + public abstract void onPortSelected(MidiPortWrapper wrapper); + + /** + * Implement this method to clean up any open resources. + */ + public abstract void onClose(); + + /** + * + */ + public void close() { + onClose(); + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortWrapper.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortWrapper.java new file mode 100644 index 00000000..77aa7345 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiPortWrapper.java @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiDeviceInfo.PortInfo; +import android.util.Log; + +// Wrapper for a MIDI device and port description. +public class MidiPortWrapper { + private MidiDeviceInfo mInfo; + private int mPortIndex; + private int mType; + private String mString; + + /** + * Wrapper for a MIDI device and port description. + * @param info + * @param portType + * @param portIndex + */ + public MidiPortWrapper(MidiDeviceInfo info, int portType, int portIndex) { + mInfo = info; + mType = portType; + mPortIndex = portIndex; + } + + private void updateString() { + if (mInfo == null) { + mString = "- - - - - -"; + } else { + StringBuilder sb = new StringBuilder(); + String name = mInfo.getProperties() + .getString(MidiDeviceInfo.PROPERTY_NAME); + if (name == null) { + name = mInfo.getProperties() + .getString(MidiDeviceInfo.PROPERTY_MANUFACTURER) + ", " + + mInfo.getProperties() + .getString(MidiDeviceInfo.PROPERTY_PRODUCT); + } + sb.append("#" + mInfo.getId()); + sb.append(", ").append(name); + PortInfo portInfo = findPortInfo(); + sb.append("[" + mPortIndex + "]"); + if (portInfo != null) { + sb.append(", ").append(portInfo.getName()); + } else { + sb.append(", null"); + } + mString = sb.toString(); + } + } + + /** + * @param info + * @param portIndex + * @return + */ + private PortInfo findPortInfo() { + PortInfo[] ports = mInfo.getPorts(); + for (PortInfo portInfo : ports) { + if (portInfo.getPortNumber() == mPortIndex + && portInfo.getType() == mType) { + return portInfo; + } + } + return null; + } + + public int getPortIndex() { + return mPortIndex; + } + + public MidiDeviceInfo getDeviceInfo() { + return mInfo; + } + + @Override + public String toString() { + if (mString == null) { + updateString(); + } + return mString; + } + + @Override + public boolean equals(Object other) { + if (other == null) + return false; + if (!(other instanceof MidiPortWrapper)) + return false; + MidiPortWrapper otherWrapper = (MidiPortWrapper) other; + if (mPortIndex != otherWrapper.mPortIndex) + return false; + if (mType != otherWrapper.mType) + return false; + if (mInfo == null) + return (otherWrapper.mInfo == null); + return mInfo.equals(otherWrapper.mInfo); + } + + @Override + public int hashCode() { + int hashCode = 1; + hashCode = 31 * hashCode + mPortIndex; + hashCode = 31 * hashCode + mType; + hashCode = 31 * hashCode + mInfo.hashCode(); + return hashCode; + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiTools.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiTools.java new file mode 100644 index 00000000..82e3de4b --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/MidiTools.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; + +/** + * Miscellaneous tools for Android MIDI. + */ +public class MidiTools { + + /** + * @return a device that matches the manufacturer and product or null + */ + public static MidiDeviceInfo findDevice(MidiManager midiManager, + String manufacturer, String product) { + for (MidiDeviceInfo info : midiManager.getDevices()) { + String deviceManufacturer = info.getProperties() + .getString(MidiDeviceInfo.PROPERTY_MANUFACTURER); + if ((manufacturer != null) + && manufacturer.equals(deviceManufacturer)) { + String deviceProduct = info.getProperties() + .getString(MidiDeviceInfo.PROPERTY_PRODUCT); + if ((product != null) && product.equals(deviceProduct)) { + return info; + } + } + } + return null; + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/EnvelopeADSR.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/EnvelopeADSR.java new file mode 100644 index 00000000..a29a1933 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/EnvelopeADSR.java @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Very simple Attack, Decay, Sustain, Release envelope with linear ramps. + * + * Times are in seconds. + */ +public class EnvelopeADSR extends SynthUnit { + private static final int IDLE = 0; + private static final int ATTACK = 1; + private static final int DECAY = 2; + private static final int SUSTAIN = 3; + private static final int RELEASE = 4; + private static final int FINISHED = 5; + private static final float MIN_TIME = 0.001f; + + private float mAttackRate; + private float mRreleaseRate; + private float mSustainLevel; + private float mDecayRate; + private float mCurrent; + private int mSstate = IDLE; + + public EnvelopeADSR() { + setAttackTime(0.003f); + setDecayTime(0.08f); + setSustainLevel(0.3f); + setReleaseTime(1.0f); + } + + public void setAttackTime(float time) { + if (time < MIN_TIME) + time = MIN_TIME; + mAttackRate = 1.0f / (SynthEngine.FRAME_RATE * time); + } + + public void setDecayTime(float time) { + if (time < MIN_TIME) + time = MIN_TIME; + mDecayRate = 1.0f / (SynthEngine.FRAME_RATE * time); + } + + public void setSustainLevel(float level) { + if (level < 0.0f) + level = 0.0f; + mSustainLevel = level; + } + + public void setReleaseTime(float time) { + if (time < MIN_TIME) + time = MIN_TIME; + mRreleaseRate = 1.0f / (SynthEngine.FRAME_RATE * time); + } + + public void on() { + mSstate = ATTACK; + } + + public void off() { + mSstate = RELEASE; + } + + @Override + public float render() { + switch (mSstate) { + case ATTACK: + mCurrent += mAttackRate; + if (mCurrent > 1.0f) { + mCurrent = 1.0f; + mSstate = DECAY; + } + break; + case DECAY: + mCurrent -= mDecayRate; + if (mCurrent < mSustainLevel) { + mCurrent = mSustainLevel; + mSstate = SUSTAIN; + } + break; + case RELEASE: + mCurrent -= mRreleaseRate; + if (mCurrent < 0.0f) { + mCurrent = 0.0f; + mSstate = FINISHED; + } + break; + } + return mCurrent; + } + + public boolean isDone() { + return mSstate == FINISHED; + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawOscillator.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawOscillator.java new file mode 100644 index 00000000..c02a6a1a --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawOscillator.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +public class SawOscillator extends SynthUnit { + private float mPhase = 0.0f; + private float mPhaseIncrement = 0.01f; + private float mFrequency = 0.0f; + private float mFrequencyScaler = 1.0f; + private float mAmplitude = 1.0f; + + public void setPitch(float pitch) { + float freq = (float) pitchToFrequency(pitch); + setFrequency(freq); + } + + public void setFrequency(float frequency) { + mFrequency = frequency; + updatePhaseIncrement(); + } + + private void updatePhaseIncrement() { + mPhaseIncrement = 2.0f * mFrequency * mFrequencyScaler / 48000.0f; + } + + public void setAmplitude(float amplitude) { + mAmplitude = amplitude; + } + + public float getAmplitude() { + return mAmplitude; + } + + public float getFrequencyScaler() { + return mFrequencyScaler; + } + + public void setFrequencyScaler(float frequencyScaler) { + mFrequencyScaler = frequencyScaler; + updatePhaseIncrement(); + } + + float incrementWrapPhase() { + mPhase += mPhaseIncrement; + while (mPhase > 1.0) { + mPhase -= 2.0; + } + while (mPhase < -1.0) { + mPhase += 2.0; + } + return mPhase; + } + + @Override + public float render() { + return incrementWrapPhase() * mAmplitude; + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawOscillatorDPW.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawOscillatorDPW.java new file mode 100644 index 00000000..e5d661d5 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawOscillatorDPW.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Band limited sawtooth oscillator. + * This will have very little aliasing at high frequencies. + */ +public class SawOscillatorDPW extends SawOscillator { + private float mZ1 = 0.0f; // delayed values + private float mZ2 = 0.0f; + private float mScaler; // frequency dependent scaler + private final static float VERY_LOW_FREQ = 0.0000001f; + + @Override + public void setFrequency(float freq) { + /* Calculate scaling based on frequency. */ + freq = Math.abs(freq); + super.setFrequency(freq); + if (freq < VERY_LOW_FREQ) { + mScaler = (float) (0.125 * 44100 / VERY_LOW_FREQ); + } else { + mScaler = (float) (0.125 * 44100 / freq); + } + } + + @Override + public float render() { + float phase = incrementWrapPhase(); + /* Square the raw sawtooth. */ + float squared = phase * phase; + float diffed = squared - mZ2; + mZ2 = mZ1; + mZ1 = squared; + return diffed * mScaler * getAmplitude(); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawVoice.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawVoice.java new file mode 100644 index 00000000..3b3e543e --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SawVoice.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Sawtooth oscillator with an ADSR. + */ +public class SawVoice extends SynthVoice { + private SawOscillator mOscillator; + private EnvelopeADSR mEnvelope; + + public SawVoice() { + mOscillator = createOscillator(); + mEnvelope = new EnvelopeADSR(); + } + + protected SawOscillator createOscillator() { + return new SawOscillator(); + } + + @Override + public void noteOn(int noteIndex, int velocity) { + super.noteOn(noteIndex, velocity); + mOscillator.setPitch(noteIndex); + mOscillator.setAmplitude(getAmplitude()); + mEnvelope.on(); + } + + @Override + public void noteOff() { + super.noteOff(); + mEnvelope.off(); + } + + @Override + public void setFrequencyScaler(float scaler) { + mOscillator.setFrequencyScaler(scaler); + } + + @Override + public float render() { + float output = mOscillator.render() * mEnvelope.render(); + return output; + } + + @Override + public boolean isDone() { + return mEnvelope.isDone(); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SimpleAudioOutput.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SimpleAudioOutput.java new file mode 100644 index 00000000..04aa19c0 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SimpleAudioOutput.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +import android.media.AudioFormat; +import android.media.AudioManager; +import android.media.AudioTrack; +import android.util.Log; + +/** + * Simple base class for implementing audio output for examples. + * This can be sub-classed for experimentation or to redirect audio output. + */ +public class SimpleAudioOutput { + + private static final String TAG = "AudioOutputTrack"; + public static final int SAMPLES_PER_FRAME = 2; + public static final int BYTES_PER_SAMPLE = 4; // float + public static final int BYTES_PER_FRAME = SAMPLES_PER_FRAME * BYTES_PER_SAMPLE; + private AudioTrack mAudioTrack; + private int mFrameRate; + + /** + * + */ + public SimpleAudioOutput() { + super(); + } + + /** + * Create an audio track then call play(). + * + * @param frameRate + */ + public void start(int frameRate) { + stop(); + mFrameRate = frameRate; + mAudioTrack = createAudioTrack(frameRate); + // AudioTrack will wait until it has enough data before starting. + mAudioTrack.play(); + } + + public AudioTrack createAudioTrack(int frameRate) { + int minBufferSizeBytes = AudioTrack.getMinBufferSize(frameRate, + AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_FLOAT); + Log.i(TAG, "AudioTrack.minBufferSize = " + minBufferSizeBytes + + " bytes = " + (minBufferSizeBytes / BYTES_PER_FRAME) + + " frames"); + int bufferSize = 8 * minBufferSizeBytes / 8; + int outputBufferSizeFrames = bufferSize / BYTES_PER_FRAME; + Log.i(TAG, "actual bufferSize = " + bufferSize + " bytes = " + + outputBufferSizeFrames + " frames"); + + AudioTrack player = new AudioTrack(AudioManager.STREAM_MUSIC, + mFrameRate, AudioFormat.CHANNEL_OUT_STEREO, + AudioFormat.ENCODING_PCM_FLOAT, bufferSize, + AudioTrack.MODE_STREAM); + Log.i(TAG, "created AudioTrack"); + return player; + } + + public int write(float[] buffer, int offset, int length) { + return mAudioTrack.write(buffer, offset, length, + AudioTrack.WRITE_BLOCKING); + } + + public void stop() { + if (mAudioTrack != null) { + mAudioTrack.stop(); + mAudioTrack = null; + } + } + + public int getFrameRate() { + return mFrameRate; + } + + public AudioTrack getAudioTrack() { + return mAudioTrack; + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SineOscillator.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SineOscillator.java new file mode 100644 index 00000000..c638c344 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SineOscillator.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Sinewave oscillator. + */ +public class SineOscillator extends SawOscillator { + // Factorial constants. + private static final float IF3 = 1.0f / (2 * 3); + private static final float IF5 = IF3 / (4 * 5); + private static final float IF7 = IF5 / (6 * 7); + private static final float IF9 = IF7 / (8 * 9); + private static final float IF11 = IF9 / (10 * 11); + + /** + * Calculate sine using Taylor expansion. Do not use values outside the range. + * + * @param currentPhase in the range of -1.0 to +1.0 for one cycle + */ + public static float fastSin(float currentPhase) { + + /* Wrap phase back into region where results are more accurate. */ + float yp = (currentPhase > 0.5f) ? 1.0f - currentPhase + : ((currentPhase < (-0.5f)) ? (-1.0f) - currentPhase : currentPhase); + + float x = (float) (yp * Math.PI); + float x2 = (x * x); + /* Taylor expansion out to x**11/11! factored into multiply-adds */ + return x * (x2 * (x2 * (x2 * (x2 * ((x2 * (-IF11)) + IF9) - IF7) + IF5) - IF3) + 1); + } + + @Override + public float render() { + // Convert raw sawtooth to sine. + float phase = incrementWrapPhase(); + return fastSin(phase) * getAmplitude(); + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SineVoice.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SineVoice.java new file mode 100644 index 00000000..e80d2c7e --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SineVoice.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Replace sawtooth with a sine wave. + */ +public class SineVoice extends SawVoice { + @Override + protected SawOscillator createOscillator() { + return new SineOscillator(); + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthEngine.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthEngine.java new file mode 100644 index 00000000..6cd02a60 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthEngine.java @@ -0,0 +1,284 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +import android.media.midi.MidiReceiver; +import android.util.Log; + +import com.example.android.common.midi.MidiConstants; +import com.example.android.common.midi.MidiEventScheduler; +import com.example.android.common.midi.MidiEventScheduler.MidiEvent; +import com.example.android.common.midi.MidiFramer; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Iterator; + +/** + * Very simple polyphonic, single channel synthesizer. It runs a background + * thread that processes MIDI events and synthesizes audio. + */ +public class SynthEngine extends MidiReceiver { + + private static final String TAG = "SynthEngine"; + + public static final int FRAME_RATE = 48000; + private static final int FRAMES_PER_BUFFER = 240; + private static final int SAMPLES_PER_FRAME = 2; + + private boolean go; + private Thread mThread; + private float[] mBuffer = new float[FRAMES_PER_BUFFER * SAMPLES_PER_FRAME]; + private float mFrequencyScaler = 1.0f; + private float mBendRange = 2.0f; // semitones + private int mProgram; + + private ArrayList mFreeVoices = new ArrayList(); + private Hashtable + mVoices = new Hashtable(); + private MidiEventScheduler mEventScheduler; + private MidiFramer mFramer; + private MidiReceiver mReceiver = new MyReceiver(); + private SimpleAudioOutput mAudioOutput; + + public SynthEngine() { + this(new SimpleAudioOutput()); + } + + public SynthEngine(SimpleAudioOutput audioOutput) { + mReceiver = new MyReceiver(); + mFramer = new MidiFramer(mReceiver); + mAudioOutput = audioOutput; + } + + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + if (mEventScheduler != null) { + if (!MidiConstants.isAllActiveSensing(data, offset, count)) { + mEventScheduler.getReceiver().send(data, offset, count, + timestamp); + } + } + } + + private class MyReceiver extends MidiReceiver { + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + byte command = (byte) (data[0] & MidiConstants.STATUS_COMMAND_MASK); + int channel = (byte) (data[0] & MidiConstants.STATUS_CHANNEL_MASK); + switch (command) { + case MidiConstants.STATUS_NOTE_OFF: + noteOff(channel, data[1], data[2]); + break; + case MidiConstants.STATUS_NOTE_ON: + noteOn(channel, data[1], data[2]); + break; + case MidiConstants.STATUS_PITCH_BEND: + int bend = (data[2] << 7) + data[1]; + pitchBend(channel, bend); + break; + case MidiConstants.STATUS_PROGRAM_CHANGE: + mProgram = data[1]; + mFreeVoices.clear(); + break; + default: + logMidiMessage(data, offset, count); + break; + } + } + } + + class MyRunnable implements Runnable { + @Override + public void run() { + try { + mAudioOutput.start(FRAME_RATE); + onLoopStarted(); + while (go) { + processMidiEvents(); + generateBuffer(); + mAudioOutput.write(mBuffer, 0, mBuffer.length); + onBufferCompleted(FRAMES_PER_BUFFER); + } + } catch (Exception e) { + Log.e(TAG, "SynthEngine background thread exception.", e); + } finally { + onLoopEnded(); + mAudioOutput.stop(); + } + } + } + + /** + * This is called form the synthesis thread before it starts looping. + */ + public void onLoopStarted() { + } + + /** + * This is called once at the end of each synthesis loop. + * + * @param framesPerBuffer + */ + public void onBufferCompleted(int framesPerBuffer) { + } + + /** + * This is called form the synthesis thread when it stop looping. + */ + public void onLoopEnded() { + } + + /** + * Assume message has been aligned to the start of a MIDI message. + * + * @param data + * @param offset + * @param count + */ + public void logMidiMessage(byte[] data, int offset, int count) { + String text = "Received: "; + for (int i = 0; i < count; i++) { + text += String.format("0x%02X, ", data[offset + i]); + } + Log.i(TAG, text); + } + + /** + * @throws IOException + * + */ + private void processMidiEvents() throws IOException { + long now = System.nanoTime(); // TODO use audio presentation time + MidiEvent event = (MidiEvent) mEventScheduler.getNextEvent(now); + while (event != null) { + mFramer.send(event.data, 0, event.count, event.getTimestamp()); + mEventScheduler.addEventToPool(event); + event = (MidiEvent) mEventScheduler.getNextEvent(now); + } + } + + /** + * + */ + private void generateBuffer() { + for (int i = 0; i < mBuffer.length; i++) { + mBuffer[i] = 0.0f; + } + Iterator iterator = mVoices.values().iterator(); + while (iterator.hasNext()) { + SynthVoice voice = iterator.next(); + if (voice.isDone()) { + iterator.remove(); + // mFreeVoices.add(voice); + } else { + voice.mix(mBuffer, SAMPLES_PER_FRAME, 0.25f); + } + } + } + + public void noteOff(int channel, int noteIndex, int velocity) { + SynthVoice voice = mVoices.get(noteIndex); + if (voice != null) { + voice.noteOff(); + } + } + + public void allNotesOff() { + Iterator iterator = mVoices.values().iterator(); + while (iterator.hasNext()) { + SynthVoice voice = iterator.next(); + voice.noteOff(); + } + } + + /** + * Create a SynthVoice. + */ + public SynthVoice createVoice(int program) { + // For every odd program number use a sine wave. + if ((program & 1) == 1) { + return new SineVoice(); + } else { + return new SawVoice(); + } + } + + /** + * + * @param channel + * @param noteIndex + * @param velocity + */ + public void noteOn(int channel, int noteIndex, int velocity) { + if (velocity == 0) { + noteOff(channel, noteIndex, velocity); + } else { + mVoices.remove(noteIndex); + SynthVoice voice; + if (mFreeVoices.size() > 0) { + voice = mFreeVoices.remove(mFreeVoices.size() - 1); + } else { + voice = createVoice(mProgram); + } + voice.setFrequencyScaler(mFrequencyScaler); + voice.noteOn(noteIndex, velocity); + mVoices.put(noteIndex, voice); + } + } + + public void pitchBend(int channel, int bend) { + double semitones = (mBendRange * (bend - 0x2000)) / 0x2000; + mFrequencyScaler = (float) Math.pow(2.0, semitones / 12.0); + Iterator iterator = mVoices.values().iterator(); + while (iterator.hasNext()) { + SynthVoice voice = iterator.next(); + voice.setFrequencyScaler(mFrequencyScaler); + } + } + + /** + * Start the synthesizer. + */ + public void start() { + stop(); + go = true; + mThread = new Thread(new MyRunnable()); + mEventScheduler = new MidiEventScheduler(); + mThread.start(); + } + + /** + * Stop the synthesizer. + */ + public void stop() { + go = false; + if (mThread != null) { + try { + mThread.interrupt(); + mThread.join(500); + } catch (InterruptedException e) { + // OK, just stopping safely. + } + mThread = null; + mEventScheduler = null; + } + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthUnit.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthUnit.java new file mode 100644 index 00000000..90599e28 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthUnit.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +public abstract class SynthUnit { + + private static final double CONCERT_A_PITCH = 69.0; + private static final double CONCERT_A_FREQUENCY = 440.0; + + /** + * @param pitch + * MIDI pitch in semitones + * @return frequency + */ + public static double pitchToFrequency(double pitch) { + double semitones = pitch - CONCERT_A_PITCH; + return CONCERT_A_FREQUENCY * Math.pow(2.0, semitones / 12.0); + } + + public abstract float render(); +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthVoice.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthVoice.java new file mode 100644 index 00000000..78ba09ac --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/common/midi/synth/SynthVoice.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Base class for a polyphonic synthesizer voice. + */ +public abstract class SynthVoice { + private int mNoteIndex; + private float mAmplitude; + public static final int STATE_OFF = 0; + public static final int STATE_ON = 1; + private int mState = STATE_OFF; + + public SynthVoice() { + mNoteIndex = -1; + } + + public void noteOn(int noteIndex, int velocity) { + mState = STATE_ON; + this.mNoteIndex = noteIndex; + setAmplitude(velocity / 128.0f); + } + + public void noteOff() { + mState = STATE_OFF; + } + + /** + * Add the output of this voice to an output buffer. + * + * @param outputBuffer + * @param samplesPerFrame + * @param level + */ + public void mix(float[] outputBuffer, int samplesPerFrame, float level) { + int numFrames = outputBuffer.length / samplesPerFrame; + for (int i = 0; i < numFrames; i++) { + float output = render(); + int offset = i * samplesPerFrame; + for (int jf = 0; jf < samplesPerFrame; jf++) { + outputBuffer[offset + jf] += output * level; + } + } + } + + public abstract float render(); + + public boolean isDone() { + return mState == STATE_OFF; + } + + public int getNoteIndex() { + return mNoteIndex; + } + + public float getAmplitude() { + return mAmplitude; + } + + public void setAmplitude(float amplitude) { + this.mAmplitude = amplitude; + } + + /** + * @param scaler + */ + public void setFrequencyScaler(float scaler) { + } + +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/LoggingReceiver.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/LoggingReceiver.java new file mode 100644 index 00000000..23ce8f7c --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/LoggingReceiver.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midiscope; + +import android.media.midi.MidiReceiver; +import android.util.Log; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +/** + * Convert incoming MIDI messages to a string and write them to a ScopeLogger. + * Assume that messages have been aligned using a MidiFramer. + */ +public class LoggingReceiver extends MidiReceiver { + public static final String TAG = "MidiScope"; + private static final long NANOS_PER_SECOND = TimeUnit.SECONDS.toNanos(1); + private long mStartTime; + private ScopeLogger mLogger; + + public LoggingReceiver(ScopeLogger logger) { + mStartTime = System.nanoTime(); + mLogger = logger; + } + + /* + * @see android.media.midi.MidiReceiver#onReceive(byte[], int, int, long) + */ + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + StringBuilder sb = new StringBuilder(); + if (timestamp == 0) { + sb.append(String.format("-----0----: ")); + } else { + long monoTime = timestamp - mStartTime; + double seconds = (double) monoTime / NANOS_PER_SECOND; + sb.append(String.format("%10.3f: ", seconds)); + } + sb.append(MidiPrinter.formatBytes(data, offset, count)); + sb.append(": "); + sb.append(MidiPrinter.formatMessage(data, offset, count)); + String text = sb.toString(); + mLogger.log(text); + Log.i(TAG, text); + } + +} \ No newline at end of file diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MainActivity.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MainActivity.java new file mode 100644 index 00000000..41d74f03 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MainActivity.java @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midiscope; + +import android.app.ActionBar; +import android.app.Activity; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; +import android.media.midi.MidiReceiver; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.WindowManager; +import android.widget.ScrollView; +import android.widget.TextView; +import android.widget.Toolbar; + +import com.example.android.common.midi.MidiFramer; +import com.example.android.common.midi.MidiOutputPortSelector; +import com.example.android.common.midi.MidiPortWrapper; + +import java.util.LinkedList; + +/** + * App that provides a MIDI echo service. + */ +public class MainActivity extends Activity implements ScopeLogger { + + private static final int MAX_LINES = 100; + + private final LinkedList mLogLines = new LinkedList<>(); + private TextView mLog; + private ScrollView mScroller; + private MidiOutputPortSelector mLogSenderSelector; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + setActionBar((Toolbar) findViewById(R.id.toolbar)); + ActionBar actionBar = getActionBar(); + if (actionBar != null) { + actionBar.setDisplayShowTitleEnabled(false); + } + + mLog = (TextView) findViewById(R.id.log); + mScroller = (ScrollView) findViewById(R.id.scroll); + + // Setup MIDI + MidiManager midiManager = (MidiManager) getSystemService(MIDI_SERVICE); + + // Receiver that prints the messages. + MidiReceiver loggingReceiver = new LoggingReceiver(this); + + // Receiver that parses raw data into complete messages. + MidiFramer connectFramer = new MidiFramer(loggingReceiver); + + // Setup a menu to select an input source. + mLogSenderSelector = new MidiOutputPortSelector(midiManager, this, R.id.spinner_senders) { + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + super.onPortSelected(wrapper); + if (wrapper != null) { + mLogLines.clear(); + MidiDeviceInfo deviceInfo = wrapper.getDeviceInfo(); + if (deviceInfo == null) { + log(getString(R.string.header_text)); + } else { + log(MidiPrinter.formatDeviceInfo(deviceInfo)); + } + } + } + }; + mLogSenderSelector.getSender().connect(connectFramer); + + // Tell the virtual device to log its messages here.. + MidiScope.setScopeLogger(this); + } + + @Override + public void onDestroy() { + mLogSenderSelector.onClose(); + // The scope will live on as a service so we need to tell it to stop + // writing log messages to this Activity. + MidiScope.setScopeLogger(null); + super.onDestroy(); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main, menu); + setKeepScreenOn(menu.findItem(R.id.action_keep_screen_on).isChecked()); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_clear_all: + mLogLines.clear(); + logOnUiThread(""); + break; + case R.id.action_keep_screen_on: + boolean checked = !item.isChecked(); + setKeepScreenOn(checked); + item.setChecked(checked); + break; + } + return super.onOptionsItemSelected(item); + } + + private void setKeepScreenOn(boolean keepScreenOn) { + if (keepScreenOn) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + @Override + public void log(final String string) { + runOnUiThread(new Runnable() { + @Override + public void run() { + logOnUiThread(string); + } + }); + } + + /** + * Logs a message to our TextView. This needs to be called from the UI thread. + */ + private void logOnUiThread(String s) { + mLogLines.add(s); + if (mLogLines.size() > MAX_LINES) { + mLogLines.removeFirst(); + } + // Render line buffer to one String. + StringBuilder sb = new StringBuilder(); + for (String line : mLogLines) { + sb.append(line).append('\n'); + } + mLog.setText(sb.toString()); + mScroller.fullScroll(View.FOCUS_DOWN); + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MidiPrinter.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MidiPrinter.java new file mode 100644 index 00000000..9e97c04c --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MidiPrinter.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midiscope; + +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiDeviceInfo.PortInfo; +import android.os.Bundle; + +import com.example.android.common.midi.MidiConstants; + +/** + * Format a MIDI message for printing. + */ +public class MidiPrinter { + + public static final String[] CHANNEL_COMMAND_NAMES = { "NoteOff", "NoteOn", + "PolyTouch", "Control", "Program", "Pressure", "Bend" }; + public static final String[] SYSTEM_COMMAND_NAMES = { "SysEx", // F0 + "TimeCode", // F1 + "SongPos", // F2 + "SongSel", // F3 + "F4", // F4 + "F5", // F5 + "TuneReq", // F6 + "EndSysex", // F7 + "TimingClock", // F8 + "F9", // F9 + "Start", // FA + "Continue", // FB + "Stop", // FC + "FD", // FD + "ActiveSensing", // FE + "Reset" // FF + }; + + public static String getName(int status) { + if (status >= 0xF0) { + int index = status & 0x0F; + return SYSTEM_COMMAND_NAMES[index]; + } else if (status >= 0x80) { + int index = (status >> 4) & 0x07; + return CHANNEL_COMMAND_NAMES[index]; + } else { + return "data"; + } + } + + public static String formatBytes(byte[] data, int offset, int count) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < count; i++) { + sb.append(String.format(" %02X", data[offset + i])); + } + return sb.toString(); + } + + public static String formatMessage(byte[] data, int offset, int count) { + StringBuilder sb = new StringBuilder(); + byte statusByte = data[offset++]; + int status = statusByte & 0xFF; + sb.append(getName(status)).append("("); + int numData = MidiConstants.getBytesPerMessage(statusByte) - 1; + if ((status >= 0x80) && (status < 0xF0)) { // channel message + int channel = status & 0x0F; + // Add 1 for humans who think channels are numbered 1-16. + sb.append((channel + 1)).append(", "); + } + for (int i = 0; i < numData; i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(data[offset++]); + } + sb.append(")"); + return sb.toString(); + } + + public static String formatDeviceInfo(MidiDeviceInfo info) { + StringBuilder sb = new StringBuilder(); + if (info != null) { + Bundle properties = info.getProperties(); + for (String key : properties.keySet()) { + Object value = properties.get(key); + sb.append(key).append(" = ").append(value).append('\n'); + } + for (PortInfo port : info.getPorts()) { + sb.append((port.getType() == PortInfo.TYPE_INPUT) ? "input" + : "output"); + sb.append("[").append(port.getPortNumber()).append("] = \"").append(port.getName() + + "\"\n"); + } + } + return sb.toString(); + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MidiScope.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MidiScope.java new file mode 100644 index 00000000..3965d83c --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/MidiScope.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midiscope; + +import android.media.midi.MidiDeviceService; +import android.media.midi.MidiDeviceStatus; +import android.media.midi.MidiReceiver; + +import com.example.android.common.midi.MidiFramer; + +import java.io.IOException; + +/** + * Virtual MIDI Device that logs messages to a ScopeLogger. + */ + +public class MidiScope extends MidiDeviceService { + + private static ScopeLogger mScopeLogger; + private MidiReceiver mInputReceiver = new MyReceiver(); + private static MidiFramer mDeviceFramer; + + @Override + public MidiReceiver[] onGetInputPortReceivers() { + return new MidiReceiver[] { mInputReceiver }; + } + + public static ScopeLogger getScopeLogger() { + return mScopeLogger; + } + + public static void setScopeLogger(ScopeLogger logger) { + if (logger != null) { + // Receiver that prints the messages. + LoggingReceiver loggingReceiver = new LoggingReceiver(logger); + mDeviceFramer = new MidiFramer(loggingReceiver); + } + mScopeLogger = logger; + } + + private static class MyReceiver extends MidiReceiver { + @Override + public void onSend(byte[] data, int offset, int count, + long timestamp) throws IOException { + if (mScopeLogger != null) { + // Send raw data to be parsed into discrete messages. + mDeviceFramer.send(data, offset, count, timestamp); + } + } + } + + /** + * This will get called when clients connect or disconnect. + * Log device information. + */ + @Override + public void onDeviceStatusChanged(MidiDeviceStatus status) { + if (mScopeLogger != null) { + if (status.isInputPortOpen(0)) { + mScopeLogger.log("=== connected ==="); + String text = MidiPrinter.formatDeviceInfo( + status.getDeviceInfo()); + mScopeLogger.log(text); + } else { + mScopeLogger.log("--- disconnected ---"); + } + } + } +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/ScopeLogger.java b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/ScopeLogger.java new file mode 100644 index 00000000..dc52efd6 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/java/com/example/android/midiscope/ScopeLogger.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midiscope; + +public interface ScopeLogger { + /** + * Write the text string somewhere that the user can see it. + * @param text + */ + void log(String text); +} diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-hdpi/ic_clear_all.png b/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-hdpi/ic_clear_all.png new file mode 100755 index 0000000000000000000000000000000000000000..e23d886cd73d6913a6b9b39a08b9503f839d0e23 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^UBTpB{5RcB}1PRu~2}c_K z^Zl3ZXyN<8oAtwACu6~6$19(1B`_`iXet%I_@gP8+d&0320g#S6ZkGO3NSD*FnGH9 KxvX-L1 z;Fyx1l&avFo0y&&l$w}QS$HzlhJk@0&C|s(q~cc6pa1{unavKIIKeTE;goUGRQAl2 zq$Hy>1;#(WzrWWB;1_0I$*`oI_3RR37LyqcbN|mTd7aQUVeLozbqPyn_8$0=v}Aqn zldP13V*V`*C#snR`kmdCz5WP$)t%^KWa44C{6H?Vv+L*@1_lNOPgg&ebxsLQ03X#y ARsaA1 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-mdpi/ic_clear_all.png b/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-mdpi/ic_clear_all.png new file mode 100755 index 0000000000000000000000000000000000000000..dca304878f52db538375b1eebd895e3b3f0df47a GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#Ql2i3Ar_~T6C_x-u>b$a l@G3*1^nXFw{}ap%l@`k*d(Ua@WME)m@O1TaS?83{1OOTQ7lQx* literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-xhdpi/ic_clear_all.png b/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-xhdpi/ic_clear_all.png new file mode 100755 index 0000000000000000000000000000000000000000..fef5dcd28229fdcb4f751194671340b1786d0e49 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsBTAnVBArXh)UNRJ9VBk2i z;d{Q6$$^8@Bwk!%X-MCyQXqcd|G(q^|FI`5V4VJ9ZhdIqGdl(b1_n=8KbLh*2~7YB C79e;4 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-xxhdpi/ic_clear_all.png b/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-xxhdpi/ic_clear_all.png new file mode 100755 index 0000000000000000000000000000000000000000..51d2d3dad13bf7b580a565bd8779e5962cfbd489 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE8Mg|53hT3U;uNW8@m`Z~Df*BafCZDxnU|>-7 zba4!+U`&?iYxrv~@JG4XRWjiZKND}t1`Xz~3eIv94obB#FwB1vFUS{pryOLAr>mdK II;Vst06{$*#Q*>R literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-xxxhdpi/ic_clear_all.png b/prebuilts/gradle/MidiScope/Application/src/main/res/drawable-xxxhdpi/ic_clear_all.png new file mode 100755 index 0000000000000000000000000000000000000000..9dbccf364791b3bd5d426f1b025bce24d234f20c GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0y~yU`POAMg|53hEtEdrZO-vFqH)P1v4;|O+IVEz`!8w y>Eakt!I->2TY~k^|AP;hc`X;;ll;mj(!<2CGj(}np|9sYkY-O;KbLh*2~7Z42pXIK literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/layout/main.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/layout/main.xml new file mode 100644 index 00000000..71c52aa6 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/layout/main.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/menu/main.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/menu/main.xml new file mode 100644 index 00000000..abb1842a --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/menu/main.xml @@ -0,0 +1,32 @@ + + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-hdpi/ic_launcher.png b/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..4a755241d257295496d29fcb9dfe088273caa479 GIT binary patch literal 3022 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 TyLN+tfq}u()z4*}Q$iB}y5YU2 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-mdpi/ic_launcher.png b/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..09a42710929faa78c4e94b034bb3db9ad21da481 GIT binary patch literal 1887 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?Fz5bVPqd``jg)3Q}88@}kQ+w^eiC6@^k5<&|*A@_HG)+7u4R*-%c#PxE5!ve8TU$w@DJ4Z#cJwz)q=df^dGya|0;Nmge zp?o?|Rbp75te56wr39y%hZ!d~zkTf<`{7Ea40{q+h^v!lN8LMz16r;QEDJa^y_I~8 zDw+MCTdbK7ut%U#uPJ>Kr;zeOR{x8FYg;53>l>H5xiT$kdBipO3a7TY!Ne&E)2rfE z|5TW4v#e;A9AkY`xX_9mE|;3bO&lRJH~4&>cVP3>4Q_r-c3W6}y}6^Kwoys&$*Z*z zZ*p>$Y?TZC72kgH!J&(@G<5uSXt^{9e&Dp3Ji$!;3&#&GJF6A06TIi_bUY{F^<~*% zj@c_i6$HXnygar%bTzwW+cCvTCBP@=;U%Gt8;WiYOE>FP+&i)Rqx-AE8$EnyFTdTU zCCx0jU4LczgVvW83KwozHoiNRR{O~HO#j|jf;PVAPq_&vwQ~G;QOP#%XUn7u-45jk zFE7!r|E7}Uys~6Utc$F-RO1b$%$IL;6K87A$l3BBQZ;Tz(A`emNi8MYYpQ}KF$DiS zGGo^5uS)e<@dy6i6zEwP;`EQnKlg>;3%v@f^A|U!dIYWg85*f_LG$13Hck893+q46 z6S_9}`OP1PL|<{VJkNU-C6sOUz;m0GNS|G|fwHx3p#I#(oH{#&E6R5jt=zm@);I%;#Dt+?>;#jczdp|`4uQ|G0JY6M?q zKeVk@N%z^3y$y>t{odjw>QS=B;FZ#A<%(BZTvuO7{W5b)WD!fruAueOR$&_+*E4-L z(UMjE@M^Z{gPq@eU)Z)jKe}VKMPKdq&GSFyT$yB+ANY{>_uP+rCCv|urE*%weR%q8 z`jq9D6+Isxv;E_6sH6A#>pWY=g08jx`HNiU{9RjnYF(^W{HNl~m#$BLH!?7!F??C- zsKLP8Y-?e6Z;n-MSz&Q;v4!?`=0%6Tuc=i3oNT|Z^vU(7Ingyce;q3ctFCr+0xrjn=Zd(C|taC z<0_@EtM}X~Vpv<()n6D@Rh3loXK}l%?pe2ON)q1^&b0kBjt{r$GULm-?0K;KMZQ&n zPjuOP-F53W+pC%=I3+wfsV|>)uF~-nQ*_<8DeS#FO21x{WuFy&x8G7$*GVBsNmqT- zvpt5447Ur)H(dT%{piJu3s2v#TgzynrT@(dt^|*@%8Pk zQ@{3duULHRR@BPlQs#Q67hG+VEiakea8+vGm%pXgdDxh1TysucP<&r||IGvoCSF-(l8$w#T(NZ4J``pA=E?e3lo9wJHqV zU#85R7tWaR@#5)wa<8}9=Cf3|rY<@b$@<~9eXhruUAgb=cLj3QES>Z8Edv7sgQu&X J%Q~loCIFcPe`o*z literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-xhdpi/ic_launcher.png b/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..e9c9a361237515492c524394896e0a85da0b2fe9 GIT binary patch literal 3855 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/prebuilts/gradle/MidiScope/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..638d4e13f7ea92dd775f35976d43d3e7996df2ff GIT binary patch literal 8972 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values-sw600dp/template-dimens.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values-sw600dp/template-dimens.xml new file mode 100644 index 00000000..22074a2b --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values-sw600dp/template-dimens.xml @@ -0,0 +1,24 @@ + + + + + + + @dimen/margin_huge + @dimen/margin_medium + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values-sw600dp/template-styles.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values-sw600dp/template-styles.xml new file mode 100644 index 00000000..03d19741 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values-sw600dp/template-styles.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values-v11/template-styles.xml new file mode 100644 index 00000000..8c1ea66f --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values-v11/template-styles.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values/base-strings.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values/base-strings.xml new file mode 100644 index 00000000..fb7d652f --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values/base-strings.xml @@ -0,0 +1,30 @@ + + + + + MidiScope + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values/colors.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values/colors.xml new file mode 100644 index 00000000..eef48d88 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values/colors.xml @@ -0,0 +1,26 @@ + + + + #009688 + #00796B + #B2DFDB + #FFC107 + #212121 + #727272 + #FFFFFF + #B6B6B6 + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values/strings.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values/strings.xml new file mode 100644 index 00000000..52beb4e1 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values/strings.xml @@ -0,0 +1,24 @@ + + + + Select a MIDI source from the Spinner above or send messages to MidiScope. + Clear Log + Keep Screen On + + "none" + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values/styles.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values/styles.xml new file mode 100644 index 00000000..00360096 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values/styles.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values/template-dimens.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values/template-dimens.xml new file mode 100644 index 00000000..39e710b5 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values/template-dimens.xml @@ -0,0 +1,32 @@ + + + + + + + 4dp + 8dp + 16dp + 32dp + 64dp + + + + @dimen/margin_medium + @dimen/margin_medium + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/values/template-styles.xml new file mode 100644 index 00000000..6e7d593d --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/values/template-styles.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/Application/src/main/res/xml/scope_device_info.xml b/prebuilts/gradle/MidiScope/Application/src/main/res/xml/scope_device_info.xml new file mode 100644 index 00000000..f89f1109 --- /dev/null +++ b/prebuilts/gradle/MidiScope/Application/src/main/res/xml/scope_device_info.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/prebuilts/gradle/MidiScope/CONTRIBUTING.md b/prebuilts/gradle/MidiScope/CONTRIBUTING.md new file mode 100644 index 00000000..faa8b5c6 --- /dev/null +++ b/prebuilts/gradle/MidiScope/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# How to become a contributor and submit your own code + +## Contributor License Agreements + +We'd love to accept your sample apps and patches! Before we can take them, we +have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement (CLA). + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual CLA] + (https://cla.developers.google.com). + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA] + (https://cla.developers.google.com). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The repo owner will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Ensure that your code adheres to the existing style in the sample to which + you are contributing. Refer to the + [Android Code Style Guide] + (https://source.android.com/source/code-style.html) for the + recommended coding standards for this organization. +1. Ensure that your code has an appropriate set of unit tests which all pass. +1. Submit a pull request. + diff --git a/prebuilts/gradle/MidiScope/LICENSE b/prebuilts/gradle/MidiScope/LICENSE new file mode 100644 index 00000000..4f229463 --- /dev/null +++ b/prebuilts/gradle/MidiScope/LICENSE @@ -0,0 +1,647 @@ +Apache License +-------------- + + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +All image and audio files (including *.png, *.jpg, *.svg, *.mp3, *.wav +and *.ogg) are licensed under the CC-BY-NC license. All other files are +licensed under the Apache 2 license. + +CC-BY-NC License +---------------- + +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the "Licensor." Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/prebuilts/gradle/MidiScope/README.md b/prebuilts/gradle/MidiScope/README.md new file mode 100644 index 00000000..92919204 --- /dev/null +++ b/prebuilts/gradle/MidiScope/README.md @@ -0,0 +1,67 @@ + +Android MidiScope Sample +=================================== + +Sample demonstrating how to use the MIDI API to receive and process MIDI signals coming from an +attached device. + +Introduction +------------ + +The Android MIDI API ([android.media.midi][1]) allows developers to connect a MIDI device to Android +and process MIDI signals coming from it. This sample demonstrates some basic features of the MIDI +API, such as enumeration of currently available devices (Information includes name, vendor, +capabilities, etc), notification when MIDI devices are plugged in or unplugged, and receiving MIDI +signals. This sample simply shows all the received MIDI signals to the screen log and does not play +any sound for them. +[1]: https://developer.android.com/reference/android/media/midi/package-summary.html + +Pre-requisites +-------------- + +- Android SDK v23 +- Android Build Tools v23.0.0 +- Android Support Repository + +Screenshots +------------- + +Screenshot Screenshot + +Getting Started +--------------- + +This sample uses the Gradle build system. To build this project, use the +"gradlew build" command or use "Import Project" in Android Studio. + +Support +------- + +- Google+ Community: https://plus.google.com/communities/105153134372062985968 +- Stack Overflow: http://stackoverflow.com/questions/tagged/android + +If you've found an error in this sample, please file an issue: +https://github.com/googlesamples/android-MidiScope + +Patches are encouraged, and may be submitted by forking this project and +submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details. + +License +------- + +Copyright 2014 The Android Open Source Project, Inc. + +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. diff --git a/prebuilts/gradle/MidiScope/build.gradle b/prebuilts/gradle/MidiScope/build.gradle new file mode 100644 index 00000000..1901ba93 --- /dev/null +++ b/prebuilts/gradle/MidiScope/build.gradle @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 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 F#>hI#1eA}4;+Q?vY~ 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..afb32963 --- /dev/null +++ b/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-bin.zip diff --git a/prebuilts/gradle/MidiScope/gradlew b/prebuilts/gradle/MidiScope/gradlew new file mode 100755 index 00000000..91a7e269 --- /dev/null +++ b/prebuilts/gradle/MidiScope/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/prebuilts/gradle/MidiScope/gradlew.bat b/prebuilts/gradle/MidiScope/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/prebuilts/gradle/MidiScope/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/prebuilts/gradle/MidiScope/screenshots/1-main.png b/prebuilts/gradle/MidiScope/screenshots/1-main.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4fb8e8723036d41c7c1cc9b752b269d34d7cef GIT binary patch literal 43259 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/screenshots/2-signals.png b/prebuilts/gradle/MidiScope/screenshots/2-signals.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4b443ea2457683da81fa52b86e8981a2e0a390 GIT binary patch literal 265359 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≥`OP#)E*C98S?b$(~69)8#iw73M)$|^1-c5ln@gYojPe! zllbXVrxu)<5tdX|CMMD~Y0@M!|5rU{@03sI>f*AQ$=`kS)VXtN+if|l89{^npcUu; zX0KVJV>4w#h?cH~#)gBwd-v`IHR#S7OGrso{rZwAedmhbjWe~!GxPJ;uUd8KpD$#X z^I*gjj&`=EkZ@x9c>lu7FB2vRG&(Fedt6DZd-}9#IS-5kB_wv#{x0KcEqZolCa>^@ z*$T6FzL#k8_3^p0yWC%IdUkhaX66ZN)<)RYfW{y894t+s-Gn=pzrVZN?NcalEuo;` z!}Iy|$BY9%RqV;WzApF2nnI383YYc4E9?dSx64|WJ$drvLEqP_SFdgZT~HwR>GS78 zO;r<}(6LaUlfdlXE?%up<(}_IpLvoIG z(0dxLx!~Lwupt<_h#u^0>TV3!SUGdf9F^Ui9lf1FD_#7>5BWgtI+B)>lk;Zx`+eG4 zT1vYWJ9<66y-(l&_ig+2_3@MM3bZgc8(oI%$#|K8z8_%nU8N&#i}&u0)tf$j>Qv6w zLwD}PNcFmvbqn;dUxHrXu`?qpYghgMf2U4ywIzBj-L!UXFE~J9Oa1Hrd~~1c<(gM5 z&<9)Vf5WAutV~QyOlzuFuAz#GikaE8J8Ft%D$mc&EiNp)`0wuR+tvU7)fU}uE^yJ{ zYHfOBrtok2IxskS^5oH@u5T~w0E2>^ch*L4KX&x!#g`|d&Uc-7`svxTXaD}yP4rNi z>NV9%wb!kmjy{??Rdi>}zTDep$?oZul{+_YF3!lv$jb6ko19r1z{A#jH0kHh zpRH|eYHDh;zP*l=F8+1y`RDYsG@sq?4>q$OlwY!W^XGeet5>gHed|#pGrQj$i^N+~ z1!oIyd9_uXh3Vkx@bxWDiX}0>EhVL;v$L|2Hb$`X%h?n>V36d!^I%2Ds;;iCUAwIQ z{O(nr=+WW?I?U14_2|95)u2;9-yA(Dd#AOv_0*|T)24~d^kMs(otc@LmX?-~@Zj$5 z^2Wx--{0PPdwE5DZ_3Th)z#H~X0D^BckWixsV`r)T;r0rKlHTdtYC}L)r zfzG^=m6bJJ%ecGjEz|rJGiJ;>eZ`rZ*7wl=ydu1{(gM8x57k^Q>RY-`t?gMZjZ;Ek5ld( zeEaH^mX6Mqb?Q9EhK3(MJUqN_-@ePs{bw(>*reUn)#adhG-cZK>C#eCw{G1!cKrBt zS+Aggl_5uu9yQOu=i(KftsvGdZ(n!k_HFMcPhP%!xoFX%UAuN|PCwt)+8Vh#*DWwA zs>{Cwx->uJnLxf{Xz0~;e)(t5pP$_mQeIx}=y>qaqer{ay_Q~j_3G8UdGkI$KR?;x zj@TRPZ}zh@rX}6qSIf-IJa_I~(6uD1)cxnRw6-pMz{}CJz+dX8P3^BO%a*nM_^GU{ zygmQ^zPi7==DxXaVWl+j#qam~)$MkE|Ng!H|KIQNH6K~Kk4Ak@fv?e5e7Aqa#f%>{ z`$Dw#mc5!&e0+A5pIpKVbD6$={pvs8 z?r3dAhk>o_+PS+p|1Ftzw5j%bQlum6;SG?b_;0seymTqZ)6+99ZeD7B6Qi&9PwL0!9d@4hyp z@obvDo?ajL3dm;R?~wf&Q?sC?yA`6*ItW*E}`!~P-Uu3xcbF8cE_nnYv1Ff>}60)8cI?uMc z&7Wi6zJ2a}GKMw#nD?^s^70-%dbH}P23PB$6r-(tjd^)_uj5v2-@bjv4v9%YfBych zw2AZZ=-9n`chp+3?xTPI{=Ic$_YcdUm0#Z7-M#uYPL?d48#ZekHNf;4#+@ZCLqTHD-Q{Eu0CYpbf7T3Sj9 zXuD^5`Qzi!QBgs`!OBWXIkz6!9=552tp(t9PfdOLX-k$Yk+G}! z@$hhab93{LgMEE`jSdM1jy8QcsH>^TXdkO1_WH}q%K^>GIG5wA6)m1IW5%63F~zg8 zc)h&57KAE0f^zt(RbPH7-mv#t`swB6<>vYKRCX&$x9r@x^Ut3e53i4(K3P?KNJvUr zw5~NJJNq^GoM_kVNzWfY7M7IE>=s+kJOBLgB-6JXJ7OdMr?R*aryG)2RqbNRhKSbF1&u%7{HV3- z)~s=9;%eg1urWkmnQz_k4$I2?$4Zk=D)b&dH`iJ}X2*i;%THgv{0TZre}8>u=1RuZ zT1D*Jmn}=n%Hq;DlIS@-U4Ol5*v{R%gbN z5f>K+DugVGlO&Ek|J?hg@nyue_ZAa68~gkHR~W8QWiX!UV-Rur!-owH3I+=+JI=C! zuLbbFeCZMsGxK$;nSRUXTa|Ws{k^aF`u%(LN3Yr=xHXPV-@g6(%gf8JTiv{Q(^6lb z|H{kmqmQ0Fd$#qQdU?U^+qVxs+Vx8^J^eZ8NI`dpuM?9Mr+Uq|t!`Vt@l1Tk#+&GC z<;$4Y`jwV$b$#TXU-YBKZbjM=106%dkB3^hUrT*UNlQyhNom-0>dhM+4fPxImMvTM z@@3|pj3&)lwfk6uR(|>T_;|&OXr99nI$?2f_kMnUzB6VWr+7|Q7E?FqQi?TP$p#Y3 z{pK*18M2UA%ggRSdLT#^To0?c2+8lRGwid z`zN-i>T6bB9-scM9Xn$7*WG=x;Q6gP78MhZCcVACzy5BNprGIc=D#04Y{=v_;5z+H zmgSc6=PzGO{?CfCkn!{J;fa%xlQXmAFiQH|09|v>+uqdF)KQ`0Tq%@eteEE!q9wZH z^_di-&L^jDZ%*fz_*a^c;E-P;Qp6rUyPZ$Js;Wxpju5lC*H*s8%S;xHt7x_Mh-(8?_f7anYx_P|3$=yH-FXt&N}&ybKSyA0RJKGGHF zKKj7l3p^g0?ssABy?b#NZt1G1v?R36T(Cf4L&nDmk-H-HyjQpoowKZtP07qm?0@v) zi#0z!9BdMI&+(XGY?}$X17Lb^^!7YmUEQPIVm$5{{2zY)`S`IgJ^lHQ9~Bv|wp$1b z3qRm$JN;D1Q|{2i0w-r@b~d&xu2a2CO-xwM?TI=e8`J8<*!KDR*RQG(f}1i6Ee<=i zIt9kW^hD=uzWHX&8lB|LTq)`4(fYkTU*{Fb^{WeY9=Ne@ef<8u&Q3+UU&{;)3@+Tc zV`FA!W^TSbK*L0ecdlP~Vd2M5pSpT_?(D1Gy?_7y##gDSsSDoCPe}8A^WRLv{!U}Tz>1)jQEMJ}; z6m;qL_xB%_b8~a6E+75&?OW4!Zy%qYzP@Y!Y%MHqT)1FhWMpJ-zrNS`DP%B4NNCcW zIX(va(}RPBUmRmtS@k99>h=Rcd+Pto%{eSAB=qR<kN3fIXDimit-#jcI;RQt7s9sxq`xj)$8{eEmRVjDEwt+ zA;+oHr_)$^;J>A*a`9k5+pq*Plz{JMp&#$kqWv$Cn($dzY+FrVOGt)t#U1sT`MT>a2wGJOX z{PgM52d_I5XSgk%2)f@gCogZ^(xp$&&Ne^ZCu_WC)#W^g26vy$D?GitR;^rl(EO#k zn%a@1jqm&wg*qJ^TTg@Tvpj$9oS3+Hd3m|B+}qWwS8oObU0q#6L&N9i=f|5b6y70L zQdp?CY0=ht&}J=zNv4xe+Ejg6F;hH5YwClv-rc*c4|ZLUXq;uDod^nFDN&`DhkBa) zmbbUIJ}kSASfc+XRzR8)6wX^JlPm5E9yxoKH~#dglufOzto;1^+~((=ojHHLSV4p#>T~Ki>s=u4=Tj!h-oV-9&Ax#WoQ5W>(`@6Gu#%xeD^NS{L*Tt zg)iQ}KY#wbd5-(?iy2l{R?nV4-~Z>6H?x=*=(-Gs4231_$)F2Z&V}FJmTP=}>Z30& zFS9*bDZ${ymi2b#WvNUYb=~3$(Sh`Q>a@tX{o2$JpW2sZ;ap>(^;7 z4bTv|8y>y*Vn|q+UH!kBwW}Rx$;8LUPqsB#P|K^d?(pW#o6FzdQ+@H)*w8RACMM?r zi-)?i*S(T#hE}J>l)9;2szRN=e*HRj>{!kNLnc;z#f(YmM%Uh1{|Ibm5nURjDb{^< zOKx{>FYA4;57(U)N*tv`FEQ+2Sz=Wi``+zC%7%>md#jf{eESS6ge4jZgJ-FxlzvAcI;!I#W#-L~!9_wSFrQ*zb3_}ZJR<1;J^ zAF=GvTD5*XJMZ>OmoGc!uiolYn3bJOj=gpaulb!we z^Unvn-rn6^E+{Bi6@1Qdk*rFN1gna<(9J4_wN*{c&B;kgPR`D;v9aM{VQOk>yLRnj zV`DpT&dk(Q)}kOmx1CEv?f5j^=$@?ocbV4Z&Gbo&iIHhbynOj`X=&--zki(;3fvL@ z@Zm#8N5_qw#mh}yIyP=Jys%wML*vA)$^D_f_wCukQ^$Mv&Yfq^pG!+i|Ni}Z>p}%n zsorbvPoF)j3%*H(uWIG>*251gDk>hl2hBR2OgYjkB`}*8l;d{Dd)6qft~T27r7-43 z&bNn$+d&sS{Ef7bIkz$S_?lYx4IHk0<_(i43rAehUSVJ$v@p7@UiX0D&9#_Ex{Yv$MJS`D)O{+D9u^XvBi91rR7txXc>0 zS!jOxoVjy1Z`!n=MO{!(@b|a3ps}jLLc@EhQ@ujN!?%Z-m0XbQcUqVu(aV)lyxO!z zOH*^@`t{d$Kiz`1kUz5e)~Qoo0R|gRbf-zI{w7=U`LIDwO3IV_|Nq`!sQtJu{_^F^ zU%!403=BNpFK@18)iHm*{J&|MQ%^m7m^fvr+(t1E(8U3|-gn+{TsB-P&4OpgRlGj2%v$K7BAW#Kq;v^ZE7bzWeaCf4-SMA9O0o zjx7ep#-N3RyEnDGu{`@xz3tVjts+-jPo~7}C`i;5UuIkVt*5WA>1LX{o7=TrA~UiM zU%h%&N{@Y8dR3KFiPEPJA3%4G|N8Zd=X%iUt4xgvSy``cZOxvxDLXeioB6W!uOB~V zOz^p^vF2{M$6OB9N0(g}U;OgzTVHSQ(`V0K9h(}-ePU%Ac-4Q$R)?mp!^}se3p2J< zZ``(XdVha^dprBSl!+cHYuB!I`BUq7m?t~==0RO;?ZbyBu3fiIPha2pz75ae2p#Z& z=%;Lz1UP!m9;tbHYU+m%1&dd$aSaU>l~|yut9$mw5zTE!%=|5y51u%8ZeQ_pzI_*W zgLm&2y}YDatatn7P0n2r7cxMXc}e+Q#In+Vi<66ltnAx&?~Zlr>FLSW|Jm61`6l{m zf0LQdIJ5#7R+Jv*&p3JFgn>*(;`euV7c5w0zJ&doy_;#p#U{;TCt0IxzkmJu@|TPe zXz~Bj)gQ$WYybcG9Xxc%DKJpb&O2B`BwLy(;oAG%nfr>hwY7i#{5f4OR!KsEMQGZ! zss=$09!{-}vpx|KGaM8SbZ_0d^);8)fqB`yUv_B6A~8o$W?DT=)AV>n41?nJJI$8?11bEC{w!hY@u^|R8-W5 z1Hszb+NP$a)4G;Lg@?0qeYP%t7gMe~Z`Q0|pPqWxv?oN!4T2{OkrZ61F-^RDXLyv^0;Z&u!1zVr8v>hn9( zzn{DL^`3QhzpY=gbk2bT4?0qtP997#Q0tOunb30R`-1ncqvJh2*4}Ws^1d@`*RIte zcd!1hziKa`e9_5^Z=$)Xf`WpsuJ3Ql#>Pe+F>dqK!rez-?LBbiOoh)<`AK{#KFyP= z5)vMKdwYBFqD3LU+gDvU588iQed)`WFO${%x4hosvZMaL-Hk~nPIydKX}jLH^EaQX zLGZ)3Z)F7p9z1(?EWscwJX~B%40L|+Su38y*REab>h2Eh%d)Cwe7hoJk0#SXCQYr5 zv))clOeH-OY&&`G9Gmh^&8erB`_FG{ZI#?+uQ2^I=uU*i_Q#JOZ=UJ1@U;YU#z&`x0YbvU zomZH`HByXjUbryf=NUhR)BZ};OIW_!I=F&%YwGB%*uQ5&K(_I}Qwe`!WYi{CJ~<(H z;?t?qr?riZi=UsHYo2$9;jjs4_D)4b;&Jrh8%u9?Y6GYt<^P0Pd)m7#)3m`^ryC&c!*L>N)18D4@0G-D17TCl^dG zl1em?xV=69euw&No3jaPmNbWb$`(*GGBQ$7VAztTsjZ!CG*jwt`S0Jq6I&2GBPrP z!c%_p_xJaOJ^!=LO=uLj)Y030RZ}Zz!SNq$|Ch~bETe7O`mPzr= z3hexHe?V;)?#{co?ESK{ zvy~=hq@{tzaQ=My`u%(S?y|RMW*Q$k8X(ud+}K38F#P-X&%Ix6Z|Q5X ze}z*#R7y)rqc*Kv)sUAfeb8Gl?a(U`(UyHLL_@e3LAw;IzrVY_KK`*goJTTE0`T<*?yv<}cwcofyh z6%csvOXsE4tTsk1U5$;6pv8GET2A>}ehHaw@daJc;I<&dL+oCIsm0p0Q<>LFva+%Y za&pa?GUdykpT!1RdGYb{_i-++s;cVh?mp(cA&2~Q7T}4m1c8KravnM7jEbU#iv`=-l^$u?VNy$v!-Nn~HQ=uXW32A9;UnCSc zQX-eE-_E>cTE37szsJD|9x6^r4qffL7BOWOO08YR!6bP<`bIm~r2jc?fsNl*cC-t$ z1PKcXu5@&BcYl9(H+$=0vwNEH`X^rP7E>rUoh#TI+OWHO8Q1!z4W4WA+(Fkhtn9e% zytQhVp#QOr+qWN|zWa-jZbMvV%(ShO_@usNPdI&XvHRXVdqBHHT0f8jc6ZEIWm`kL;Ci%*Mo&aeBmvh_Nb=gZw?hYlYOy~e(3k%vlD zWaP!4E1IRIxB4mxN^`Fc4w>Qe473sNu=?W$GlnW%b%*)scfOqPvdXxz-qC7z+1p#& za;4{=fB*LF+S?jBt7p~}=sE-h1h}}c z%#(^)8M1B5mWYLmg5u)%b_Kk@z5V=*BM)b{+_`h-;lo4&&p(fk_wWDtO!|?LSjy%l z?{C>Gc^>ie(!SlhttDph_`F-EAMk{MJKdXLD{VrSa$P-am_n^JMW8wW}V^YB@?%7F;U`-E{$UkzO82J7TEYIDq>~Z z74P7;juZJzQeGXae$D84o~2%3Wk}WMXTAj*u`w~{=G*&wG5KUd!py2R0Q@W&J zVSrzl#O;0S*6|tbzJ9&KV_|?ps99%aiIMJDsy-hmF0tz!u||96wzgrze@y*_AI^cX&Q`m~Yh z;H_Iy6FnYj_1sBmm=y8*_wU!CvC0#+F|#rnv&F~98x(Jg(QE(qk>k?Ei;Q}9 z!-o$RESfxda?r{t2|bVBy~_*eD=aKD>^#dO!UMXf^+)z27Z;ZX$-lR5-{zOKTJqlY zz)PmX8!lW3s9o$N&6$#!=JY?a=wZ>$95dpFe-@c(=%Q0k59N#Ng$7_Uu`> zkWv5E&6{&A3J=Yw`F1S%+P?p<8q?dy?eLyzX@l~p4HXS5r_kQ4psv1rZ}sx}IMn;#5(xbKoVUVpEf$0*fPoDG)a9w^eBTDDvtl6_qpFaKZs2W#m z(UTK`8i^c{GuFR$fjoW+q-gbG9=;V^85@w)y9e_XlW9>FMElyRq3*=FW>385?p>pFX`lZttbY z?4%?n5e-cdE|nQdIn43#_qS{@Vb*$gYb$q2p&$p#{y(3(&qaYwB)B_$`t<43o^u6B zl^zrG_V#AJo~N#^?(OYeYUX)$6=)tdz)z*4r-#QNYnq43uFB79j)(t7Z_jgNoB#XU zTjijOPbAXXvi=@9dbIH&ub8-a=`urIeSP*&ce(!U_m*v}`t`H+_qVq&G>?>*RYRVw_3Q2J z?NO_2Dn2k6W!%|czkk|i#qAn%`wrRJ*H&;S2C|Nom8FD?|-HaZl%y=9sqtf{7^rl;pu9e;);<)QPt=I;*< zHt%N;xWDichl$nKuV16CHEU^WJ66teTKMMP-ss0Om6eqPe*K&>MWj~O@9Ir~+V9`L zv&+wT`t<4T?fKcA2MsJOe|~uA9I*KF=g-ml$9VcewC2v7d9YiCk3BWgAtSN)rcH!& zTwI)|r{{wp&^Cf;)240Ov`Ha;%dK0W;iD6ZS2v^vu6_zy=HmAG_V#?x%Dv)!#=2Vn zA1qy}x-h`P)YR0DXcJG~Q(X1;lMcek^%^UIen zUzr{E_4N%64P9{2pw~_Lot2JQ_rW(6M;2awsls-Cqs?*pK_hcJ-Wgh0{D}YmHGbyInXe{? z*4Ea7Mt`pNc`X&XX(=Ni!LU1jl0*ZCG@GWDO7VjOjo;tje{8fUXk|`rZteenwGIvq zt5<8!^%Li6UA%a4z!ovBsk7$J&Anyu;>jlP0AY*x(x8{GudmnDIrjH$e*NWt9~T5@ zczSyN{P~k*G23K|9p}!SV`XLi{{H^)YL)4yv$L|Kq@-$UYHVz5X80`gQHzd?n>S-d zgOtO<06uv;pF59tf~Qz6H@NNEv7_eq+wE*2cRC^t3-bvH2uzqYYt>~X!6vuGvi5a< z+U4sGEEQfFbo0`sOZV=*d;a|SyLaaj3|y2he)+P+L7^ci_t%dfFRpwzeE9Io603g~ zyp~>y-kw)kQDI?e*?BaHt-0{&DN)ds33@s@pkgdznZ1F5frZ73moHyFe!MuyY1;JZ z>gwtXBb>i|`*yrf_OhJe%QG{L&GYU^$jBV&*O+?h9vCcIqy)Y)VQJ9ISFcvNtv!GB z>eoZ9+$wq!)s>Z%RaK9aKHa!6!$)ni(=8Sl8bCTL|&R#sMi{`c?S%L@ww zHAJ|%xs#KVCp@3Dd-w0ERgcfx|L581zh&!I$0j?+J{e1NJr;KW(8ypFu%u9wy; zr$wQc=6%ij`Sa&o`}(-u(c*21d3kw)f`SX~tq#ywwtRVLk=d5}O~NuVH4hK9T9?0T zuwNOp@`!d;3;0BeX8qV* zE(WhyC!aiX`m}Y$hXp&MQxj`yY8>{5p2>P78l)kjH+}Zx$)A7U|9_7`ySRwmTvPL9 zxBfl_xqzcLZ~naOZ-4g88Iw?E0gJF7EtfO4?Ac?(JgMu~uU~QdYAmg+q`vIFS~UI1 zlPBx<|BFh`Vimo4^QP72=oO$q`S~dox{>1N&!4foN;)4%=jP|vzq+y#bVtLq_Fl$1GErClddj7&{g_4+`|;+9zf(VnYc0H;>C-o&k45v79JiR9$sEtFFaiZ%+0rdet!P@w{M?*{^^&u&+38PlMq)`wJR=A^3L76 z`mwu0Vq$oHZhz5o_+ibzpU-V=ZENi6Q&L=#Cuf*QO+W4H<8wul$9e9NBS(Jx_%UnN ztaIniO`Is0QO}d(mXh*hUF>e3NmnkZu&}WF`2G9w?-g_B&fU3l=aM}y7rbY0by8fh z`xVIGuUEsre*IcnS}H6o{Hj=|*X{G?&$sthn|Ds*kY4v5bb3oi$Aiy5-@bkO+I4GL zSy^9C&zM*VE-p^m7_lQ`3tbYCe-QLzF_1TP< zpa1)}Z(OZTOM_0P7+K2rd3bO*`o^hEE-f$j_w`-7Ze7>WB&ptK4;~zNSa9gjA)XuS z0^K!4`1ttz{QSC(CanzdT7FrQhpqka%}uG?FQrqZR<2)P|K){X+?lgyWA)!nj{FHa z^QiLf)vI6m>wh$#%r`VOy?Xz?y}7yiM2`&6E{LMy;_j|4CEImZ+TQ&>a^%Q?0|zc$ znxqxLGWldlNeK@hpP7QxDbRTaHczJS-~T_q?z6P=?Y0e-6Badr*0s0jDo;QC|I_sS z5A4|L>gqrj?G#9}v9p6tWfy<^=#k%iyWEG+oe|#Nr|<4A|Cp4R_^?mb+9QWQ$+@8> z1aypl6R8>N3usQsEe7))2TSQm{VV3qzo;0ax z_iat^#b%M8-X(36;Q4g=X%XnsghbG#3078C;7b!0*?!k%YHSt}WnpS`P{^4-XO4{4 z*Z*~2+}+#`Jk2c*4h?Os&REg3A^Od=C7Wmd?o*zAT3cJY(EQhn7a6lVC-xecdq8$2 z9Qww|&F$^ubEI2TRP>f{@{F#VHzNZyy*xZ_*sL@LS-EP}st+l4I%3-9=F{(dQ!o>N z>P!lrFn4b6^RptIF8uO#TMqcz+SqV$afMW}F*7rBb8+bu1ZyW6f0tdpdGqF7yQ03D zw>q6XdD5{^P4LLVzaRVSRd(}ofL(uvZ>}Fd2S-MBcJR`WS@Y+|$Hi@HIL$Ks^xa*h z+K_wJ&aymHJCXLz8hmiT_Wb){M@^3z=vZ1xRxVfg!qlqn2HuDweDT_~vj6{TZT`M~ zcX#(hO};}iJiNSrzg+frS{M-eDkA)%Obw{PEC%JAJh>v%)K(9p2Cxq0Qv zl{atROxe!5G0@QtvN0kjD8=aJjT;dG0RlI99d9TIb-E}Bu&}XB0$rcLrU_95^5>yf z4p1#nUKi4>2v$(nftlX?DW~-xMRss$Bvsj!=n? z|EVPEzL^18aZ+S=OU`f)D1xRPw4VbCJ_@!8qg;`(tNE=nI3I4u<5Y7Gt! zezs!8qSdQcuUO%+bZLTwn1FzQtnAwQ&w?DXGWKxQ{>O*JtSm1bG4G{8QoY9#4Cc(8 zyE8_w|2Q{4zk0>WzP`SX9}6GPe)9P7=G@z6kJm4jU9mOCtor)8*s9orR`zTMOl78cIU&7C}X^5)H(g*sDmb9?=k8%yw*o15q7 zzkl)K#e)Y4$?M{yqE0>kJk@LIvHwOheI|#8C<<`Y{rj1IRk$xP!o%Z4E4R1=58KAD z|Mgq8ZY?b>UAk-;8ylNcz+EOCUESXP{`2S0uV1&$O9eDdSL>den!0rL>eq+c`6o}F zoU}1QwRp9i*u8uA8XFrwe*D<>x9ZukAN#T!AJj-oO8z{lKL5_X+Und~-oqQdefzfD ze|}nO>daM=9MMdkd#^b~N8kSZ{5&fYV@b?bGczlzTX*i9N!s}B-QC&q=J~lX=g#lz z>jT{_*VE&0+*Rq~pFe+Y+=y^?KCHk0&!j0+N&_?Qgi#|9~M{~ z5f#m@(_R?3;9|zQb?Xun6Mw~}r=~tV+AaQ|bi$%da;r3xN=iavB?I<))z;SL-`n%B zz(P|~^Vh4xTKD!=FL%9pz#zx==Jf|%S}8_1_f~)ZuvWs~|GaVfxfj~${r&ysCMJ98 z|JM~33Lf6DVueO_a7a{iw6(RhySux%nAm~)U1!sT#jlBri?3e2diLzu3+HO{{D?3y zH4P05Q&Uk%NlAGTBBl*-e_EK=HML_Zx{f!5JOVdz z$=TP%L`ScFD!tfAMaZ`H*OtwjKObu4ZnF$iGEtg-+S}Xv^{ZDRT&>@XLAI@0_3QU< z|2Y;9U%vDN-wla8m$L|a4*Q_xyF)1l2 z>FMo#SrhN!s5d=4JpB6AtGYTm5|u0G&70TGFR!Po`_d*@Md;(tKlkq41MMsQDltP$ z_*<;{uXEcoGc%i;n`2{RK`Zw^J$m$L!2$)5J&cTvc9~B;|M>WL)-0(<&+GsE_;{>W zdb(chrb(qz(hr``ug}ZORIK~g&M&_%et+H1PpRVK;&0O@S?|!*)wTcsXLF36dc{6) z$4aQvMO;75b7mG@0$YFw~slaaOc>@{o>pwkCt#2&0L)|!0b{{8y* z_x3)0nz}cOlch<%?uVkbwzj3^%!H}Oj=2TQS^}Qg1MQ%VcNKMZcHX*mYenJpb+P~c z{d3VOD=9HCH|OW!@lX+J`o77=+1dH%(W9?^FJk-f?(S~THBxpqE;HuM3p>lhQXh0V z>CnE{M>hO4GdKT!xSe0?Yg%RH&MjNMTv-{MmLZ$O+$+s&IdSIV&2 z*x0;z^XA#}=k0B6_x9K8i*S7`wyXOS5fjsMFMV=AXeeu@riqlUl2X(0$CZ_p7r~b$ zG&VN&_3>RO$x2Im_U`WP@O3d4i&Bf&x9{J-f5i%pD?u6}Uf}CsKsO?9zA4n1l9!iP zQ2|O!4~!zp%gZApB?~L3A5D_nHu=G;S6L3aO*(pd|3018Z@YSTM}DfWuWwGynyoi) z3oPHgd-vYGviiGr?V7Z11rHC;pD&mFU%fuU$Hy0=cm3qalLrqbmX?;Lrluw(G1bT! z@J#klSrwwfQaW|vLd6XdqN1(=Hw|_y>e{r)sAkcJPoJy`9yEOWtSGFXy=>vag-e#W zES7U!7%;JaU z$V~Jod3|jyXv?5j+);zX`=v=AYF@v42U?Hu=Vx)~#ETU(oyv~>BK8w)?4TEd@~nW_1sGihT4 zD=X^+e~*lejG&-Pmo8n}Tm7AljqStZuV25OJb6-1PR=DyL{v01A|k^l_^e}QrlyLi zP|KG_W44(--+p|2ygGdSq^k_l$$5G2&ds%+FzwO1cl*lU-}~{SqLlmOw{PFV*T?nt z_C9nEQLCIcZ{EU%3$60aEiF049zS}-vF-AME{Qf%Q`3hVlMH!o@2}rKtwQnb+qaWu623S za#nWs{QLX!&F}W{k;AEJGXC3+i+-FDm>xK^Y!J`*li%uvpN0zy5~FJy?Imf@DS^U zY@yC4XJ?xqGiivqb?cUul@-tG-52kl+PKlMdHW;*0e*SAmLuz1T3Yh={Y-m)Zm!hd z9ozEmR(*YS_3!WR!5Sie7I+;Cc_r zS!$~YUwiVTt(CzS@8AFbTcYd)XdS^PXGIQZ+NEAjj5c>TD)ef#$O z+}!3ZA~NOW-}U$XVEP5BDqh}XK5UqKzclGgO?RTiZ%*-ibm-`UK-z~RVJ{)Mb3Qk;GZ7|c9#=T1xj%gi}*V$M5H zymRpFn>Q@oR?|UU(C_c=a?3T=&E#$IP|?!XKAfsq+o~>Iq5ZRFpC@QL#;jSh4&=J= z9DelpvHv`qm6scye|UHpbdHibxT7H-!5_LJOf*Dm>W=V@2SsPkp1pke@{dY|a;Ks$VD*j$t*p31&+XU3lQR{7~?YE~=h>hfOs^Ys(I%MBZkKt7@`!Bfez3P^<&SrFt^eeUbx)l##bv{yxpQM( zTwD?pA8x;2_xq&!{D|3tpFTf7|NPmr4~v?c4=?qe&coNX?$pd?@kpI(^K7e2u5od4 zHp;wcZ*S+#Zit()?Y)&@+PM6J~av51To6E^GUNqeqXPJ?opUn^7B^tfNrG9zM05Pk-0Woq~5>u#3Bd_AP8P zZE&fos&WwS&b__u<yoVOZ07A! zD?(Q7dw8W!#`4jF2Myw`N`cPK&5XK+@{=b|ey~|eOl+C)Hq)tIUq64guKDp{|KHpD zYrox0w=R2QV8OWV=M2!zP+3yFWq*DYCO74M{ra_WRf2;9!$BV7y1KfAK->3SCk-p_ zZ%uwu!!0B$+xvfQh}P>@uX=K24uv_K`?7@5Dke$7?Zel;jt&id{o~!!IIS}bXU&>* z?AWn4Z{H>-Coj~zC*$BGdT@fyf)9;}Gu$p07qN$HO>Ij2y?4(ZjU;UE)i7V~L9}9kLV=pW&_V(~# zxO>CO%Ie$O+wAi$U%Phg?%iH-$70!5r^5I5Y+uZ}dGn^$X1!+ZCeVyp9?u1_32sHj z#cSWl3QZK4DDy~?wW)5h&rk!8DtgP(X>vWUX2WI}}Jb(K1 z@A?0K%GU@SP5L-l-GASYN8G~qn3n9{|NrLZba}g)hQ8A&o1TKf!-o&2>&NHa-uCvx z!^5xNhL)9EmZz zj=6sPTwI5)zF)d@>AQFDPMq)%HWAr)(6Ngv)1lks)^%COIdkR|O!UwZ)7R5`+_8#PIxG> z?Y*U`0RjdKlu{&e-br4Ssg38K47n8Hj=D=1m(x+UXv3|l3dN!R{{Bs(ipeFnZ-mU8 zIkQn|U-W@@9e&H54J)Igqql|&cDgK>EZ^()_+y2XKXbQqQUN;~+kt+W_QM*U8zpNwt@Gj|1M+v*(xouF1_ zuUUEdEThKDBnh^)tS6p+TDfxNzkmNOUJT@}=y7oLRY*6RoP2WM?38`29esUl_rpG1 zcg{(>(8rb8a6iOq?z&<{c^gTcsM+6FCI0yFqhYr63_GJmhB%E75;yMs`uTKv{DFo&)!*Nl=6t+V!<;@-eU9Jq=TD!; z?yr-*uH>S0ak9FAG5;_{rF)q|NQZ8Mn=X7r;Q5F zm=}muAF8y8OG;A8mVkl@^QY$`gRr;9IV2hzkSow(P6p%c<&w%D0_G3=AAn+ zK|xKg*@|}VS+U~9_5J@$U+6HtQ^Bak zrdG+gHF@T~*#-MTkKev6UH?19=;ntH2B(7h9lE$O8esJdAMO;H;+5*^%G!Ti`5nt1InahV|053z?0&!5{Iw}wT}8#h%Ie;}TIuiKXUw0! ze$^_gsxK=ho@H3MW(~{J4HG6z0Ns4>c;>ow>*m*fyBYugS9nbHjF~etGcyCHD=c(* zKOuI0oI~kC?a3T7vJPLoII*J7BRdVWLqe~pu<+;g{r|4szrTL(G^d3b+1az_%-K`% zanZ^*vDQ{r2fp;pn>UY5;7+db+XrDG zArAuAUb}WJEG%q6zI0onj@aubCnr}OJ(QoFecAl+r=7*mo0^-yuG%Db_3G7xhGkEl zq%<@CoIT+y+c_ifMv1d$_f~#Z+qYo%o;@*9QB}{*NG9vuzIv6_GDFt7%%{3*-iHq# z_EvufS>%4})-66+D;E`OUO_iEx2mctP{Xl#*HvMT*=Ox4K0G+w&i_&Q?Af!gy12F| zru8ghVy(I)S$DvwYWFn-*jj)UJy{==4%&EM;}^NNYyW=vD5C`d8a`^ldec|$HU^#P z_B#ImudnOtbN_H1di3bgWOe@!o()b5BMvwmFse2GUc;^F{XkAI>2i~ZC<{|}Z*OU7 zsjik5(_}Lb6`@}1XMTQuGiS~eyK&syQp^0**MHs%0}dTJ1UeOS>XPf%u6;2LG@iP{ z%-Hzzqodq=PCP6yGB)-tdfMw35)x8VVyU<0m?{9Bk zzjdpNeMVGl?Anzp4MVS7`Sq(RKpnIh)^Db@rsm6=o6~Z#JBy zz2r$m=Tbe1P_e@X!7m}VC8&NqaNxk(+uPk;T~~e+UA}DDtl6_c<;nJ?FJHb?_n((> zy|lC7|G(M|suL$peCEy5pWL`FI$>XHS%}HAV7DBzfGheeOot85T)$ra`r2Bn&%D7J zQ+DjInB6n;#M2_srOg|igr-lK@?e`uh?c3ky1V{yq1$Ymti!dY`p>sBwYb$Eqt~94 zDA@1DwbRGpx*^+zO|4D~Rn*jkRhdDk-amd-uiFAu69T-DW=|M^pstmh%X z{pBvxXWf)}t2PFAoNc>WdnMIKQY6StnTIX;_qVswA5-Qom+YBZa>1*PcdvxBboGY^ zj9W_A2`&x#`RwfMZ{NP{*<%yxBRV@VC+E$tudfpm6Dun#rJZ6czrT~s_$Dkb-@j(2 zql~QV=1rU4-P_yEeVm({+kd{DZQ-L9#&Br~35LJgF|o1EPEH)x?ruzWPfbb z-T<^~;KJ*>moHCFxF`MMqnxDVP0-~D0lAGXEz=xp`R^P&`0&oo;@7sT^YZdQXFLA; z{l4(5@5+#CSFT9Nu&mj&YuC1IV)~adw*2{1b2{SM%-!#&&CFMvU&q}t!7ai*Z25|g zqe%u0C#!bs*pYL8U#;@IHJ?qIH%{Vm@JzDvj?nLq9zA+{dwX$l@miH~X~(iRHyZ0(u3fw4qIB`hnKPi9-dbP3f4{%% z?X8){=^fn*ZRGkrrYH(L7F~Gs=+RTBy!O0!^JdP}si{v)bNhGf*m3ThpFw14aB#4X zPY+{s(*&vY*Eu%b%qcG~zjMb!MX2`AkBb$T%QVzEMK~h3Cp=g&?*iK`Hbb>#tXoq7miqiRl|s}}C+*enK6y7yn!kDT=BK6S zK-a${;E94~+4S;Tj@Kmo8OQRGbjr=C|OA(vhu9q6-!^ zt#o~9%7eP%Uuo{Ipe>+IhKX8;xJWzmE~Cg5yCWxG6}rsyG=!InOX-o%j48;A{yUez z7X54M>Am~#@NiY^5s5Rm%Dc~QH<9Y~TKcHA(W>>voQR{Z&OJL4a=(pN#O)fFrluz2 zT7?RmdsDT;uWS|JISd+Vn`_0&)-(O|)1ya^O7&)#UwE+T<{RgBzSx~btapmzW z<{$$Vq0R{s6CN#Gx56Px=1TeAhG*>B9~U+~v7a3nvf!`wqlK&sZI;N}*IjwNZ}H;A z-{0MBK9nN;e#(0BXRmkvd=}l?u)8lzNR{7FFU&Br>B7sB3zrLRLvHC>n64jnmJ?>@MTYcK}ac&2XFB8{?uB7#S(~FEnjq#H;=L59aJ>R6YdV03dMb>({Rv zH*P$#_P4>}-d2T+_f@*Os-}b<4v^2#;F@N*uwB9RsMn+Hn^{JB&AP7-yqP&eE!#oY z$KT)i*x?vG(8Su-4=M@E_RTKcca>vBVPxk@m8O_Aeu0TbGvn+3Zsncd!+eY3#nv2# z+Ib&8Ob@%{c({%?C?h9_<@u2#M_iPWT-@A1BN}lV*RJ)gePs6YK~%$n1q(VlIBZOJ z1g*@;%-rbYx^&MTnUaO~w&%|`>^!V!_UM41qPcl_MTLZq(ElGFALsA;*|tN6^`_3t z-E90XEyMP;ynpwOuMKqd!fVjg3tmRk9Hgzy9&<9hJbxrUF(anq{X)*xL$l5Eog8J) z&9~35?7iYsYyP@sbzg`UYjmH8C`(#v*QsZWbHYTpjy`&%B=SDVR$<}^scmXz8Vii| zTAdUnUfsKY|NiC6!u~E>w`^JRPI8YUySa^xOn8Wa>Ho~^1>3i8-?&lG<`ZZ=zkYny zN~TDcGw06LeZO1&VB+cN`oDkuTJ`VV0_Nqy<>lX<+xbMr#UHz~Fgd!qx|Wrh9n^N% z7WZpcuEYL*&pq20b}w1FH23bVt3O^RWXV|^)6fct-ON>ar16Sh@LS)Bd?r(*gcCDa zE@^Z8QwUo5<=NTU4+M7a*fGbxex69_6&X-HzMAjJr`iH2>i< zRmIxIMyBNP%z5+X&7R#{lqSq_>04(t-we^{-nA@WxhGX^O_-qsT44L|Vd9<>NgL12 zv-J+kDKGwV_s-|FRu}5}&Vp`TV7?Wm%TNkXLP9bv7T^nlBku@ENhOQ-2GE4D=Qzg*XQQ;dZ-kNy5$+2 zIeWIzwZ6W7@2YH;OJxfb5{^B1{hB-N#I(~-FYGdMw6d~t;JtS5o?KCk8n?#Ud1v3O zaG0fa@Vj`h@as+uEq*zh7oeT1K5C!O%rs_XWMp}tQFP{F`DymMO*ScOjx6VP)B~^T zFP**-x~l)+T2S9v*gX64gBLG67GErgj9Kq*TC(ZaEECjq{oma)UY<_-6e@gt+kG#6 z{q?oKzuDIQ60tWjGXou3ydDJ35Pqi;GXbam?W$gPXg1 z?|wBu7Z;WpJJ;{s`}e{^=U;Iw{b}ozOiV)VuegxLw8`P}>GC_X&{p=(Ew)|ItB<*| z|AEOwwS!5u=Gqs!+B~<#2};W@Sux?*G~H+o5iY&^0zK_Fu3u*tTUa5>u{Xg$Vn>Fa zSa*6_8b{ZR3n{DKO>lVkz-e{Bk>W587AD>68`(a6{`}R~*TCAk8gx6%i-!+E=hA*) zDOi8t+5J;rzI<7?ZXIYRnLCG;R*u>1!w(<$pLq2uD>*qiD@$wQt_gemRJ0TXYiep@ zVq-t@9-caNYFk^|ks~gXV``qCoBQ?a*Bwb_wzhx&{QS(!&L^<{(1QmG5}CY*4Qf9x zn#CUTTxV#s5x zaM*;Y9VB}UazbQ>0%&#It-TjAOuoLYD`FQf3jOopVY82#@}sF11_lgbYXcsrZF1mX zym>!(Wr*&&IkO+G1+B*ZegA(S_e#i$euvO)>(=ExKR4H^_YMmaV}@dLqQt=!qAnb~ zysW*Oe$>=CIWalz-rd>Bsq5dgetmvQii$*Z)A{G_Zf-&~nkhz+k&%)amX9AlPCnEp z-M@OZw%shHi5ZEB2fdUgNqRatG5xSJGc$X4bF=&JXCIzCQCYDIbbz{8)!DOWpFVy1 zBZ{rn3AE8HC}`5gw`Qzr?|1Kf9$l&cTH)`0pG_f$|H)z}wF@~MdY3X<&OdKnzj68U z&@$^k4`07teewRRBL{o?`q=jRPMbbGes9&%&DV|`VbKT( z(wG9ezgB9)!i_(-U%GzXTvzvOL)Y%Iw@k4yEKCRW_y1Y6IV>|%GvoWyr%#tY-Pv>{ zbMD5Ymo8m$*qQ=9+#n=&|Wx9|V^_U5Ls?(>wCl!l8NU6d}Koo&upb?DBnQtnOC zEX7BonA;*PqwEU{3lnZMA3f?i_oeUY)29z=&OQEk?e>{#=GE1Kb{KtoW4P|5+Tk^| z+j$mb^G@};yD62sGS@MJ8`rx2HOD6$2r)4=wXOWLWYMBSM)7B5t;-r#`*wGCm%qDn z@!gtFkB)Zt_3?f1aB^xoW_%L9ygw=ew!FXczLS&FngaKuOrTEopO*FRZf z{`qN9WoYQte*1qr?tN-mzdpaJ%BmuzuI}Ib|9{j?m>oD+nzFC2bDZsAXlPhiSa|Dq zQli3ZwIcZwpbfOF2{ko$W~_Ex92OtHK6U59O`C-7v@QtH*j@hqTE(*yCpf0m*{Q0! z#-G+GHFLSI+YDdEfBe>?J<1-8GwUXHPM;ng6eKkN{PF%hm7mixGc~ofxuce>U%Phg znl&vlLA=poTchM`DjIgH@2ma&?aRx{fq{W(dl$F2yC)?*nr)u{LAkcJ_I~~UzYh<$ zU(L6*wEX$!=V#EobndO|*Fl$6O6mK(dytlrQc_m-NN9$S+V1M_?=D;jsH)nvtI<6; zI5;#^G(*N`@x_kaeBDQr46Nk}UzAvNIu>0!T*I9HQ#}TBLk4(pzg{lZ#r=_;J&?uy zVX6|~#r@$=76?4Nd-txD@B2@mKDoKO7j8FP8U)&}H*w-b=XSo8)`!1*`4SQq*0kxt zi4z?zN|E}G>27YvUcAuIIHRkh1Df5ok<&LbGt<-KyOIgoA!KcR`}XaHB4ToKa_;?d zS1+*!aq#oA8}~IQmg%1V^T%ezlqPL8wh43Q+_`$SwSQL7N*#TDaSoPtK3S&p{jII7 zpFVxsw#{rqo{vwD+x&{JUp^NW7P7Lk9@`S!`t|$WBpx1~hP&pTISwtn4I-kGEDIhS z`2GETp=997kZs$x?W_N9r=W1)>eZ=!%eh+*UA!2mp#{1g;oLbh&r2rSiHV5|SFYsL z_gZ@C`ug~2hn~}C&d5khGe3QE^5jWr^Sm89cmDkK%gV|sXl2O8h&7+Q8`u1lm6h$6 zw_o@4kqY0s&6|rI9S?%enXZi2n|}Su6%!MaA3uInR8$zu^qJ|iZO2B(EG zb~Q7094}4>f#r<7C544QzunH~U6GM@#;_p8_Tg(m=;Hkiyhw}p7r)b*dTQFVY2Ut; z+1uNfmzRe&biI6;+33KqwC?lAj~D;#OOOzglk;1C`D1&S7U+iU(}xcqK6%npN6c8F zM>~9-L+Fj1vc$xPz0&3fczBqZnVXxN=gpgEXJ@CSno?O=SyUv%)ts20U;pNY;oG(! z>F4I`EPQ%{e9HXLeA)YsQHkO!^E zb@boH>sVL!&;H*>{yS>HD?`joO}B2}{`>du-8*(@h;+5Kwr<>LnBi4kULNni^v}=d z^A*2$Zrf(&aY6mWL}m8{wfvWpKJAO<`Jj9F%9;Yf*<#W&r<&CO4P2 zD%nv(S=<-xKkgf%=3R-F9&$Lr-gT`t|do6Ea!wNKOT-M@DhKd<}q(fz~3i0J6c zo4&8^^4~hIz3rEVGe2`7&pHo*$=~lLHC&8|(7E=kWRlB@=9-Wb>IMcME-m$DSsZOJ z^UR(-dz#t#XYCFZJ9hjy`Fred( zs-@-6*X#FRlPGqY`{qp!vymkWJA3@TnwiHR3uX$nCDzr|fes&eVV;Con$O?#FJzR$?a`zarIE5?MAn|t%QEju|*H%rb=(P`R4EM@AlQ-e74HJef28Kp~|#*;l&I~OG~ZuE$i0l8O$`{Xg+vjQ>u4X zR+ftk%g64?);k&-8$lcDq@|^$rKH^4-A$z&f>(y{wNIWfVZy9gS*n~b*Dzk@liBJ2 zqpGE)Wyz8y4Sbd?g~i3z_5W(}^Y!PS|NrBoaze(itGVY=jPBmK zbLjBlwec&I#DjU~OtpEq%vEb@S!wCnbLYBTlsa9K($k;6c=6)>dwD6Tte*3SKYS?2 z&tD&)5u!EKM{V-qhb=8F0#}}-8by|uf4_3&%BxqaB6OBr%;4kWli^d>(K(~ixxLlt z;e!Vco;+C+p)<{EX^GX`g9!x|b9AG(P1qN>O#JKDul;hihq^)g7mn2aB62nU-P#P} z@3K!oHyFr$I(`5CfAjr6d3U~bjNpeYDmPY|4q0~p&W+?{_lH)&7Dnf|!I$0l9L*TEVe3InVYrU%7t$aeeX5m?cXU9H8rjkEp4tsjvw>cX+d^v(3i~DcvdGh2*z{>yO5)zVwA(UZ@my|eBEFZ4Qc_r>DHi*wc7%npSpxUzy4V|SeOj);gzN>YkjvtmVq zQSz)#0?Y2#2tb!|Z(Mou+___)GrL?Cwe!nIJy<3uC&$Xly2_@xv9Xbrl~ruV%BdS> z{_eYc^JZjh?Al+mofbZM@?^n}$sDB_pnYH`^O!+f1_U@REx7!Wk&!VsH+NNt_vg=_ zPoF+5RxtBH(az}Yc}oK{-23IW&TP2L0=iVeAg8A0&$qX?g*shAef<2~?rC!LF8FW+ zy!KmR!?tbPK$qiYCYHay*XvU#@GK!Cc`=xlnIvjm&bUnd3d zviscI+wd>ChcDp$J{q;5W_c!5wYw(@vVY9WbcH)e|e*sIXO8x8X6sM z+7xmGI$e|mIGC83Pv&tXF*kr_FhCK;!NQbS3fBYSL81~I3K6o<1Pl(_Fm`APaZnK8 zXt~;mY6whQTjGr)M_6w9I^0k*n#p4u%fajbU3ouy?!}82_y7C4-hZBr;%-Hb+e@}? z{rbNC|L@b&^+C>RZiHP)u=3@L7ZpD~JOm$_FV5APV>bJZm|{-vxpRJ_f`W#Ih9y>;t{E!}buL-DG&Lb1 zAuG#EMd)M-=wg%?FJ3%-Dk>#4Yr=$t{QUe6M^DPeEDX4D@7}+Mhuc@K)Z7@MGu128 zM5_5_^=Z{x;|PoJi4j93$(A;H7eee~1UuXi`4de_w0Xny07m6d(` z_;JO>yLW934KFslUbAM+ho3cjJeCF-8yWdru)Cd_l(cB=+T5a|qO!8EuLmx_EMaSY z`0UxUw{K--Wo1E|L!`GV3UK`U*k9k_q7-VVqVnWWD>o0@;Rf%mNUP~*ZRu4@&dkiL zsi~=}t1B%HRhsDH<|bue752L~FDq--%$bI3-rd_<%`08vb3T6S>ea8my}g~CoxLil zs;Vk1Y+B-X*BrSCi;{G=Y~5;G|1U;CAj7i#XwuueyUlHF?h*wpl^{Qr;g4@&?2z5oBNiSHK6kn@LMyjby#ecs`R zOO`Bob8GAABwpn{AGP10sT|SkmoI-_y?)=N??+|ilw-%>FS6A2i`u{I4FYl~BcT)DwyLayvEmE4wvvBUmj~{=3fB*ga zcX1Js7h7K%+S&d4@bEBb3{PEOUmtX(!OE2{Z){8kt#p0ANci*D5WVT3+nlam)fC}+ zo35v)7Zw`&_51hv7KMi{U!I(C*|#@FPhV4WXVq7&TMee{pFe-@m$QBK`n7V=C&(db zuU^0Im$eoX5lMNs?WJpFrKR0V!Xt2A4jw$XZk^uMt6kmQ%}q@KAJ|&Npf$zewC5imA2&5M zJ#s!iCg#tFhlj7Njh-lyB(!YVvbrA++h4xSYsJ z%!QdbiHQr>uh&;oYde`Dl;3Z-;>_Cv%G%o6Ml*YkKYm#{ck0xsw{As&G9bTZMCeatkkJ2;MVy zO^2-o5EQhLJAe9gx8L&fXV3ET@RXF4G|0c7IdkUj^7nB&i;kXHC+Q4XoqyGe=fx7F z)%ow<8yXmVxa@Dg^7UcttMgYHf>-B@s2;Qbptf+$8lL*pJ$v?)WG$J{IoPo%+CQ?e5*xiHV9oZ27pjy88R=A?qNjtExUcUb}X!r>Cc) zqM}&t#Az|U~@9)?D|Mz#{Ld8E1et&;|`_`>35y_M7 zb}U`G^nrWp(Iin35eHsAUS3}>uc)Y~UFGlZ9XP;Hw`bozJ4?%(hYvfS{@UKwCTCyA zlc{MVr?0Jj`ug?ozkjAqof^JA?&_5*4?;z_Ts=KG+YfKNH4k(wK<#fan@6u+RegHm zSs=j7%>4NAV~`V`pOd}dR+EvjV&lfb<9)KnO3q587~On)ynlV%Uav6boSvOKEx*QE zmzRIvTmAjm@#Cv+3vAoIeSg(gt~qh=Mf%e+KK?R6UYD;R09luBwYP9hOF3j+e%LJJ zb@^46$rJ2)g;T1kq;gW6oSeM8xIVtJ+RALL0-?lAm>!0NT8gY9n8bw5p zR4H86H(I%RHFIo&tc;A^?>EN1+6#Etl+Dbx?cXndCriB3<%n;Iz^jg^RnH{ugV*5uCMPRbbbo$+-rdbD z%O>(_!@70rrcM>TD!4OdU4X_lYx%7*SIIibtq-@bht92{I>Xk#eah7C{ zeHe5Aoq-Df&Smj`|Ni~{{yw{T_{xx1eX`bm^K53$nk6M5uwcFEGq;~^^?!Z{-l@B@ zt2Dc&W)FAbwclMU4SufgN|c!E7atdQEWAuiTzv1IJ!=kT2qd;Hu+d7nbnP0O*yPER zcgDP{QosE2%b!0r1x}4m(pvU881AzHZ`QqLee>SEe^*upKj^Wsx968+ZJc1e12i`m z`25hky?g)O+gp85`N6k|R{C*!7@QM>G(b0JzPYzII{mPcvhu=;Df0GpET+7*hS~lL z>oetD)F#iIJ==R>zz5~YlP9YcJ~3spo4?-Ji^WOZ*Vp%fn@n5c$B!S?{pVfLTqJ8( z^W(w6<_E!s*4Chf)Ws%~6waPKyTE%M<1UlgXYcK+{XIRt?&t3Nf6v{$dw0oNW0{E_ zUtU~PE_m2^GzoMs=#frg8NTBivh$|oo22wFfB&yd?99j2t315DnZGN3{lw&yqXn9E zaat%~B9dqXS|E07^^f1bo1Jdlx+SHuRPhT_l-ixG+0(yC1jxzBUASex;|814uLn(K zvLRYiJGdrJn84r_d-?L^2hSKzoI2$d8!KC(Vr4a}V!`<*Po6Y1Fns6`tMyk;d;9Xq z6P17Ftxh+07BBy%-QL>z^T&?|uB}cNZ{J?M**48pX`)TtpBZ<|ZZJ&9I{37xbGN*V zO+~@$Yil1&EPsE`QBG&tle@dif85s*>;6%<408j(!;hb#8vwHYU!DXmhMbuNn}opuU3EM{tnJMpxrVCl@0 zDMBYFZqL51cOfmgpdcVQzyq|{zZ$aGKPG`$++CFGXw}9&_x4t^N4+wh=~Fwo%u(q7 zhYuSPU-zZGefj2%jzx!_o}P={{|imp8M5hy4*c3YhuhlQgeYbRX_1C?*_p`QcaarvW65uGH>nbpleda_>2MK0QMNY|o{6Fu0 zzF(ehHPb(#ex619X8&(?)$?n=mDj6lP4!s8IicVFpTzl-y@@k?)UtDOwk%S!2wHh% zSHYIx;NS;GgoK5YuW|HxE#+cqI^53x|J(Ncf8T6AZ)9W?GwJFT6Ht>j z{P|R`rD3a=UVb@m-n@PL_FcSqQBzZM!7k7FU0qxknpn9QK_{H<3v+aIoWMEXk&T^w z_Uzfmj~x>e6ARH2ZFNdCkkAp+*3r??)5|+OP1ofXxT$dL*s-Wryzd`Bo;+_JA6wds zH*ZX4Sb<9UKcL$ZcI>dYdtctJCLy^XP(|NrUq_^3buu7{}?4i^;`3Yv5rGC0GPAIQ(&zhJ?F zhYu6~@LZ8)Da`O*ID?C&Sj1tv2Sq2V&tsS_to zJax+JL+DWhpVe1SJuTW9V`p!F|Jt>0pPrs}Zs(gBSN+mV`GE1Yn|qfmUw-}S)rSjb zs;Q}oiHUuYKlR7M3HRojYe=ewyY`xIHX9{P{BwxOMB6kdTnw&nLnjGneu2 z5Ca{+yXl?E{wYm=@81FWv5E6oemrBcT9F*Bo>G`a3!fQh;g7_3FJCg2r|jLc=Ywo~_k+(rOBgQj+~O3-%uGm7&{*xE zBBZp5E5$YK!qpp`i*1dJgu48#3=AG9lwa-Y>dL;p?xnY;fK>0Yty{n9*Z<^RGO?It zecWEqFr$K|>-?85U&`10Sh#7^r6Z=G-Me!gUYdxyHxK|8UE{wdJIq zpH!YnZ?lwW^~zwGFCmHxmTWop=(OTBV~@p;j1;(&>+9>ASQq{k+8A->Y0=v-U2#Ke zYwn{Ng$F?bc z%h_33AD;Wg)w*cy+Os8bA~Sv1el=gpFlpZTaIW#K;-aFe>S{;FU8`1|dbhfF(j=h^ zmeMU=OP$UhF~~_xefsY1Zf$MtG-crkUsuEJ%uAB#S#(Nm^S;?-0u< z<lnA0O)#yE=bMgTChE zlRjQvhYWJk(v~e;m{?E{pd!@BWIX+JZ&%l?O{v|H>*dO49-BUW`oZ_0BMBpP^0Km| zWMrFl8d9o`ZAfRylxzLp% z_J6+!@95y<;V}`*li*5DHCt-9a>I(H5^Znq?EHLpcX`DziHRO1-{0L`v`DGB`V}uP z?}F_ny>7;7m)>rBNN#0wO*-8X7A$Y!JA!oSz2- z&YU|3+LR319Ll^kDmE(W*VXX&#`TIS>Y#gpY`%Q|ZvL9r)Y9_jmzTi>59Oq#qeDVi z*s{AiK;XvC;^${)n-}J1_PPa!g^39ZFTTHdf<Az^v zqO!NQzCJrEUEmzGHq6|_M8>x2%7a=5e*>=8O=%`t3vLB0H_*}7umApT?!mXqj~+cb zZQ8VL+qOM<^5o8)7~x%fci3yOn*;f1JLcU;pRL?fLORL6ZVBQjBI! zoH()XUU1`^&1?J4GJRWoaI(t#JIj_W3tu1CcsAW==KPvZorb@~UM$XDY1zoVam!MP zwu>2Cgw_3G_SeaZyIWgXrKP8Te{*y4oH;%E?r!ex+1c5k-3qFo{{8*!+rn9NE5p9% ziAR0C{X3>5SF^OWw33pOdoxu!K7)dD4m%4=&9|HB#|}9!U%q_v%{RBV=Rf`@$IZV~c^c_3c}?R_PydObg#uq2-*) zDOF-P^UUSt{?grBHzXhL+qlutK=|T|7b`YKH_l7QF}odij%QtJS{hr4(xalC*Vn~L zOGp^RdM&=VW&3u2U*Fh06&EAUd6myRrnpo-W$xL3AiV4B)`O~Mp>gejSDt&bYbOOht$&)9S zzq_NUtNXOT!bHkfZL;GsSrM+(@9*yZ{{G&)HvM@|8C&zj>C?+UKl8og=d3hw%Jk{; zZL6OD*xtQ-`SX>P z!D{QC7g(_K$!KV59z4Hg%a#}1S{E9&y9P8mg-hRgeBt?lM&@P8hjQ=llNAZ!Y5RWQ z-}M!2_FIxa6OnLf*+)?T|_=kMh=4IUf4W)k-w!>E>Bxq z`{>c5>F4K}TI`zhGemLXu^S9-YoaGCXo}eH;^MMp`}W7}U%!4$W1V{Pq^CxS5NGjx z$>fBD11+nSTAeyOJ5QcIZM?Ut?apG|O&tYNWtp0OMMXya$F+5JSwCxOh;TKl3B<+4 zSz20_ZCtxaoRgC?Gcz+`&c?pJz9makqAz(n|Kth|3Q|&5K0EE#i^cu7Zr%C-zL%o3 zwDen7<*f@B7}jxY&$*dYraN!y)X>=2-uGcWJv|yzy-rl0?VDt&@++So4GW~QY* zySUhWS!&dzWP{Z?0RaIK5i|Px`I`?$L`DjB9|dh5ZPH%1Zk=7l2Z!f=Y@+4Qf?G|r z^gJhZD;TH5q$miSQ?#{}6$xo;YkT$jweOLKg55_KyzSyM7Ygwa782T&e4MYmq;I>3 zHt2Mm;Gm$i^mJeL*aZO^D_5>mIm0|*_H6EBR+qE3`p>iJ?Cjj=XTKn9^}>jVBa=&) zEnV99^237PH<&V}J1q<_GB)m_<>0 zNrY>C{C+uM;mPyo@85P*)H_;BgzNp?-RajpNgp;?8}|Fx*Vlc0eSiMc#7>ZzbRcbW zzl>$k^K-H_g*sy0^KB}Vl%}lZWMgM{{LdxVFD@$Tx*^BS%`G)mb>E7nN$pXfomD^b ze*OL}e5Q(#w_)Q(!}2Zt?IN=;q;>ISESB2jTpa)9JD-iME$B|*9G_o5e#Gpl`1rp5 zzqQ`Z%&oU}?XvnV8qz0cyDR(px_R^FJ$#tBHY_?IAR&i2>G!v{iHV7ziy+t!|Nj17 zTwGl7dwIHD=!@kGS6tv=dC4NWGv?oiht8X)7w){H8@+AEB>eb!l@5{=|(^FGlrbSHkx_bNe?Ms&~-MzbZz6ewC>i4y7ZfyTnscK#o)3JME9etUbnva&L5bBe{}D_5?pTc>y7@T#3VEj2Yya{c93*&L~I zt;hm&71$jfPqoRteSNdOiWqV4xZCiOmC1~8$)*eD-`lS!Y_o84))G1K^wz~4`4T*r z9oE^2a6Nr-aq+VFEV=&j4-XtK*sff^-d}6#uKW^4z3ID4Ux#^IPn>Y!!iC4j`|s~6 z<^DfMQ>1Hq{(U*S8i_q;X8McnO2}m~a=jsViBpTid!vRFCzFz$UET9@a}(kU)`r~% zA4cl8_@V?)o72LEWp7@*cyaKcc7!Zo76~!%Ui4)aL;u_b$pr-; z`s@EFPi(qyd+q*-JS%-T+g=%Qh?E>Wc`9Oc@SRCA8UHnul$tu)Bf`S2eSUua;EEl8 z|Nd1A(z?lXQ?4{ADXFHWro7y|&dok(j`4i0UN>gn>pXcJO4p42?p}0kxRL!S%Gge5 z-J=r|mD$V}UCG+&qt>hxl6QL>uMv-NhRZv*xu+i%@X1=0JUt~E@LzADhn#&~&WEZK zCt4~N`AkpF^fu(t*4AduRY^)tULUhF$>1kL|8Z?CEl@f7!8mK{uY=9(OEzu)_U+rb zlP4L^pE-A~NluxiQKwtyYgxm$Pj8c6GWI&RIw`8MsZ_k^Pxt6D&IolC$S|<56ky%* zPxdc^IiNYwc~&-=uQ6E9x9VloewmXew@d9v=NFPkrRa76vO z?HaIgdYb?L+}1_OH-#o~2!+g%DbHT3_F&VkCO)sFOY^@zFS~3}_~_B2l5b4AoM(d8 z2J-NE9JdW^ZYY{K*;h&MNqb2X*W{C+9n;r89JN?*@BSiPmKT$IX3I@n(s<35clze! z<9%mmn_s_n?c3L{XV08@;B9C%S58D^%7h6UYJZpAUCh?&qakwYSg-Wg_i5kHl`;tm z3V!_fvBCG$_Jf{{1$0bg! z*X#vK7cxwKC7Smz`Zg^I^4(!7!>0}g?n{GSeqyews9<4bb(F8TkbC|3@#7D&4*Oc0 z>*?{u?@M+wlKK7fXJdPq`tw=y=CQfjna$4K?QUAwu|?!f23M<-!E29=`#HMO<;vQ}Rn9Ay5}RKSglFOfAGHdC)H5{8SyezSspZ_7=*x2~NCo3JD zGY?YpZtV>Cq1OCQbm78<4;Jce?GVjAJ8PDd!Q3)0uT#tC*JZu*UDM{_eXwA=kD9TD zM#qD*j*hH{H=I1_8N{h2(UyCA+uGHuxqWPc;^XJfnd5WeHjB~!%~$x@Kh0||DY?cN z>bdyhjn^}eA3fTbXJc$^{Q2|e0KMEMhffBDyX$vv2us#>eA^VZSIt1%VE0QCKY)hPgv!z)tod27|bHe4|f?f5Om-#+W_gxsUW$V_+K+h9A$9A33?aO}o>61~#rA0d; zE^NO!%_6W*+1_40MqtglbwZt5>khlAGNSDyTTbWtL|rso3l z6QE>vqW|d0ebF4BnoYFyn4@NLwmK;-1zo$h z$-6W!TdZ4}V>a7u@xx7BuB)wHBo!@V;OF7_^I~!TJe$g<`GQ=n`Sy znl25|;yhIZI<+-?E?cG+5dZM) z+uT^Ig7$49cetmVewy%#|FXmV*rKQv$)Gc>#5q>+5{Qn`uh66`7@j6t+ES< zQ`_>ltHGhE>of-^C!_th&!0apC|~bb5_##MaahV!w+Q#h$Vh*G{<;@WpKdLGAD1k? zdt0$0`|O7g6Pq@g9(0*D>1UeG>G0)h-e}%s zvcTn?jjb*3ET@YZCanmhJOm=_T8?iPbFq`}gnMH+?(pCVDM3&%3i??b@T~12m?976bEH zy*zZz*T;wDwc13FxP3L5+pau$qOzl7Nq~mhrd7^Pw~ib+(r^FIV?$MHYU+ZUo$c-I z2U}*l6l8cSW-n@MV^fl}U$tu00aeZU=ha^{ycYUV^KV`3?ll@al8^IUIO?h*WLy31 zOwP(rpNcNL(>5@;a73cH>HmzQwJQpA5`Ob1Wk(sC3W1(k zs*_LV-P_}NLG{74wb2u<3e1qWGBYCmv`bx3aIoXiLysOUx@oe^f4&{-{mVCQL^NlG zeyU%58MH0N-`Tl2^7!|E|LQzu8D$)Pv!m=pPB?5Wz;Z6eS&YFeLz)Hu3%-_AS+Qf% znl(BXd@55?j<`&EGjZa?S+k@*^nC7Rm+>tw{=C?|UrS5N;}dIaR8-ZcCnxLwJ+F64 zlYaT~W!he&nA8|SUdMo-my1I-Kw@jEhQ&L)*dtPRCwzi(0 z+1@GPD?|9@Y#PqAY}&lJ_h^K2)8nXF6DKn6ny#a#CnhdFyDV(w%9StQykR--uzQk% zisV~%ez`4&=FUBvmY$Z@lpeRY3N$Vx?E3ERZuZEdZ*Fftf8^_g{Qk)Ddk-EYWEfnz zemy)SWQN9~u+^a3@GgU{x~TpC_xmw6gZbz0Z%*g0NJ~t72-*a5<*tCz#22rwuAU&I zsj10nG_OQzf^1(lJ7`hWKOTn|=Tw0ecg4RP5Ng)zre`#>qh0<;#{md;a|Rv14s*ZL?<2UcGwteA{X>6B8ESU$f0}wY0R1 zW=}b_b*{Dm$E?}2KXNRQ>V5Y2_xGTcCK?(Z_qXrfx$`Gz`P20#x5aa6Q>UK|n< zlAf*}kvq}j%DsE*!dCzN`&ZFDab-wUe0=@?f3+uOt7>R;Y|%~K7;*aa=>;dh{`phm z@6SK|^i}zp!NI}&@^)+1uV??8@w28bF>&F+tlQ;V%FD`{;>-^oJb3JojYP}&=i9e! zb9(4y$g?EYJP6ovqz>V_tWRk*7g7PaGL+xxY6)~ zEGHM2(j+c<|@X%0>r(ce>?6(%?-rAyR zXm~M4^T@8Gw>rglr~Li>eSiIbxpKA3SzB{+bKl?J&(F>M_+v$hRjk(3zW#n^!Kf7> zS$TQuVuhAYWZ4*T=gyrTd9A6Z=GXtbnRT7@^^e>4|E1kJ+~~A0B{fx4L_~nc{NUJ-~M06c8|4T*RNhRH8W#lXaD{4ry=P6RMm+dYU=6>xdJq%9B${I{k7;> z(az`R=kG6jE49N(sQW1B-j#Lho_(y4;cNF>u07RjWyr1#8y4*6`}Xzg-hzirGoxos zo~$gwb@0fO;NW2MygMI0eth`(XO7uyucfD+7R`<4dLno*ZL|M8o6HZ}QY79gBqk=_ z-kxuseT~U+@kPIRHb2+b|K;xAwfbsSbab?}l@$w9f++!igwO9m=LqGh*j&*!vZdDZqVS%I&pS( z_V%{6KY#x=H#e8IH3@aPY}aO-_VvRDi^4}OFL$`5pP#q4@bR$=7X<3uR$u-06$GYE zo3;tG#b;%RR(Mz#Pnzb#j}_v2F$E9X3KJ3(W;}7%5Lp$n%5?MX(0~9?UzK_KtSwQw z#l^+$?(P{G8q-f-%`i#Y7@;BJ^nT^~_3uAEKJI&G+MoL`PMkP#cX#>zijPe8%0iua zcXohwN6ubm09r=%`0?X}h8$T?i0obYaKZ8}=6$|1=B<@wYE*PQ`gB9Y8sqeHHUIy9 ze~^`5S}Iyq4chwi@9*!}N8K+i($doxw(8tml>Y0-k0(!_M5JtfcCV=< zv!_n|dQ?1KfPc}Ww{QQxTt5HVlP3cIIql~E|9U+>Jw09c{`6F%nbqIk{Cu@~{hJ*b z#WCJDbG}X04p(r`y?o@zkw3q#?{8}gXq-^6uYP{>wc;_I#0iICq}7KLP1Gc8MNz2TH1SwmqZ&UOOy9>J;9pYwl+3hU0r_jY&=z# zxA6Jk9dxiv(atGNi4j>@T0bImcy;pJ6+HQ?l-DSmn0)#46m;Lm;>C;gH5x+Bxs+3Co+M(~${ zylBvar=V4OM-xCtV;JW9iFHq%HLL2^mzSn1rLRin^7He*PAib>FaPtSQ2Uz3wt(Q^ z#TPSPlvs5i{q*@WXh^N9>et1^?))+q0&;SB*EEkxta}@yHyyN1O{ z8-Qw)#>U3o*Y&gU3dRYhB31#AIY-#Kp}$ zdGch=ZMPQMX-Tvd?!0sFUR+IijE-3T{e5?*U0rz9PHTPq{$sD#7$4elx++%u*}>bl zt1~lCE@<)=H?%P~|9)bk@{!3KZr=n+T% zt=qPVT|X0`F{P=A>Cq?qq`wXuH69xs;_Pr)v~c0VpFb;i#;m)VWu9~6!P~dG0vwAL zFTVaK?eLc`TVNAk=gvRhyJydt1Ou6@jc;$An|k``-@kvACVJ>i*B0Tj0&Qfft*LqR z=+T==vN6YBym)cr#*7G^Yqgp)ebgqO{POv8cV}netkQkX(W^d3P4rMH+8ML>qQOib ze}Df*hlH193$opJHwS1K|!`Q>w`7mgM>ft?mY?Lm}d~;6z-v{=Zqvs!g ztoy$E{>{JY%a$)^XJdQz{JAI>Yp+}K#t1t*J5EkcGe4JY{*V1Kem{BgE^Z&KD&*tFe{rl_n`rI|rNxn@ikZmg0xU;tYI$!_K z_}yLw0gin?pGm7wHAR0c% zm22E4Qn}yX-Tm?K$Ptz)|ITwdoa~F48gWc@>)|CMG5i>f2jd6f{{Ac~l^GMr`c6 zu`O5noz%LkS*usCp8NB4(at@4_sZJyaB>zV=H#hwo_Cw?(#@NeHa2U1&vsfk|KG-qh6UBPFNTDMK9rN%<+0E2cjolX^KSPo4qL6Qt^H9z zq_eX#Tg}bvkRV*AtB;RQTAEs2L||Z|)$_K!GiJ|bZe8@{%a^Z{t&(lG%Pv{9ip&4m z;iQe9K7ERbmS;KX*u(|ib@RIK&Yc*WDI0v$v^6yg5B2~0`BT=q%x5~UfsM_d8yl1T zegsb1FzzzMy=unf3 zQeo3+7Y`56EkUhLmUVxA%;G%bJK^h{GVoz1dH46N?Viz-cmuRDzMSijj)sjP#5GgC zeftKw7V3QG&f@2ODP7G4Eb?|WKOVNrf2f(bapOjD{kWLVHy;XYYldD%60tnz-X2SP zd-?J;>({O=U6yQ{^fw?TrpH_J;lqc|&&_oX;%egX2yg^#b4vOyj2H=8i z;>3yT)(Ix@Hn|_^>+j!R@^Vt%9z}t)g}Zk#fxV>=<5^W@HT`t$hX;-A?e5?!)|w-l zRa8}Zd3kg1@3S>GzkapUafk2;cW?x9uq+E&+2WMw;?lBOyD6esLxgLhhlrfqyH{Nb zcVH<56w@4+8fzfC;Xr$xSYA3nBLifsf-Kav-~d^|%n1o%ko%iTpz#e-=P-c}n&uh} zjy`#^WcBKXh}kPbv`lshsKL!U+|%Fx|Lgkt+Al9Af}Ava%hs)bzt{i&-Yu>l6D!E# z={WPHAjq@=>1ora-^|%o%vDxaHf_q3HEY&fcv-SC#&WeTTC~VX zMMzXk>{5nF_;n6Py$K7z_x`X{PV`z@T3RY^S0m8r!qw`uHY|8$h#2U0oYHS^BHcx< zT)cECC@5%A&`JZI;FTeB=gz&oEq8PDY5@+O!=Qa~G2h*@vtNJu^yz4~_{23$46xLx z^7QNL>!zlrMl*SAR$k0l67=%Rmo3U%uU@=+r>CoX)l*ZVt+lmPRZT4_u9oExkGlUn z(0QPzPI0v*{{0I&>HX)I%l@&knk=0TOKd!E- zdhz9o(=w+I9B=^d`kVqQIwg3-x{p5pY@T;##~7R4KMhf)Hp9J`}ylvT3T9E;ryphpWeC^^=E?DQaPK7 z3w&Rrcl-GHZ3C|kID7W&OE#Oie(44hc6N4-j*gw3ouHEO&i*}n_H5f0w)(2nAN|QE zw^TdIDoq6KFTB)Sz;k%fqD6W!I}RimbX@)Q|H8d{_wL>W9UK1PLxFaeb>q^dOFKI| zTU%SFP8Dr++L(D+O}nahj&XD3n@eTM0(0`sb8nTry0Y^2_Wbqh)+I??yLj>AlarH` z-TQ8=mf|RH@5w*+Ysucde}8^{t~8OuYW;0~X?gkl%*@1%5!K({-QAqtudTJ?+sij^ zKpXInA3L_-v(e0)#6(985i>J0yXtQ`+S;!VG%}0by}5Pn?j1WKf`cz#yQVh%^ul^i zl}R^m-dwnF;q~?L?JX^DZf(`JwY|G5J~Ja@#p>0QLgxlM4r=2=%b#HHVy3>sV24`kGNho!c z)tdV1-QC?gw2s}s|NqU+&C|Rzg@uKCdwbvC-ya_nbHqSLQL!osU+T!Bkt5>aJ zV`BrYQ>(A9S28cpeg5ssmnqYxy}HJ=Z03v^KRzCpXJ=#UleJEpcqut4Y0;7;E*c_2 zJ0p}Pg1YWIcm6!mDa^^qd8GbmnVfAEOP#6ip}qG4wnoK+f^f=5R>J32TX?OznO8gx+!pCwnT5cn8d0SSo}VXLQ4n--xn zO_uwSP3k8Bs6HhsFZw6wLgb*t0Do8OPBuDJRte0|*B+TUS1Vz=we zx6hV*bEE8Xgw_3bx3*?yWUSb|Tl%oU)+o^R1|1z7B6}Dc6&+i7Y-)aNShue4$JfP+ z7n|qZ*-`RxQsh_LCI$PyUxKrt%V_*{}WW|1Jqz%^A1; zYS!%8vr~<39_<$A6wA!ZtNZd|;=XmqOoTe0Tw5Fc`}_O*`|J0+vaVgWaAD(vQ$h0O zHO{U|fvKsfd3ozrYb98pJ$p8xjP>@}6>kn5IB?+Z?s8S3PS>R_O5i=I%I z)%^JI;2?AD+xF5O*Uu!}-!}W$uAgT5`uPremGD=1!+f{ztE#G!v#;|>>AijB3d^qBkMU)9mmv#b7gX4j^7zuT@|y{f9NKKbmuHVa!@ zTUlAzABz3Qi+3(CvatAZnBV@zd*SM;sz zhaZ3Rn{UTk=2%ft5fyc7U+r(u3_kxfetA0+Q`6Lx6p1~XPg`%_vq$ES&c=u}$;bP0 z@9mM?qh@7grLCQvnfdbF-QCU2%|Cv&wY9B{-u~<7&zU>^xAV)(+0}4(YHr-P(Y;UR z;pd;fu7h?@*8JSGZXKWgqKg@)PMu<6Vv@1#Ieq%{!cb+$n0uYu76h%7v#a@W*8KjC zRZQ7EKY#vw^eD;0>*Lq2cXyZPM@7xrw>8Dx{rKtW`i_%5=6cTCzrVhuWXsL@vuDj> z;tviE=Dc?KRg*-Usk!-M@O>rQ^XGToP?VLGT_3mC=*3cJr+a&=!=s|OB){j~*r2GV zr)OnlrKs3={ITHv+0|!xzUA(YTr)4hjv!z32A2FTQx?$`w!p$LR9zNo{Ry zt*xwoE?mC+`OeN_wsPLRd-tB7Z!a$<);9lQ*4FiLdyCw3ubXV$y7j@S!?&hbFi|qa(?~4osOEUhYieT&z(KH`rRGN3)1ahX7ZrQ%Q zysRuL{Mz070Sf~%wrX)Q1_lK&>F&RD`SSk1-)_HolhbS$tEs7ZzvlDVeYL+eM7ZjL zmImG3Uq8QNrHYE6VEpx{Sb@U^2G$h;0Rd4_vpPW|tH+NW$c>{VR(lsLXz=>`e|JtnK|yBb$;PkI><(!{%XT-MOnLV7 zY2)d>l`A!q<2u*9y|Zqe-iHfs*ygpj9|vt-GQKdmamC7&Gw04d%C9MM>bQKp&yhnZ zmzVhl+&Ovi;>Bgl)HbuObyk~fTlYsI-aB$vMHF*>MsBXIgrZ2IENDB@DZ#@VwrtsQ zdAa}WQZozCb?VIQ2RuO=52mp9Eabkrs@ZF)(08qEyAr&;PoFu%Qa z&(rn4x7UCE`gQA;9nBL?rhI>YpIx52`>2+d)~_d%{h64U*6d!s`wUNC#_pH%H>d8q zx-t8@UcjgAC%8E_syQ}wou1&ebb+kk;3;5O)uBW*zdSBsIx=h<;#~3R%NH9rBznmd@%L&>C^f5 z_pzQ=QB!+&Z}04cyW8^aa=p_}l1K|wVeYQ@^n^3d%70;i4j2EcPkvjtxmq7RJlwu+ z?O`bfAzddYr;go{G8P32s;aCupWofJ-n`8);D%n){#5US-NHtW zpNGTJ$Y{}gV}_0EK=Y0-UcY9Roy*F^IB`X5KwitliGshc=iD_gH)k(noPPT2$B%~5 zT(>NZCH^1ZI(PMH+jjY1KYj>=ylbAlK&qE*OD+TW6ymr;DMq@!=U6#gl$DkHZp6QN z`!+W(?-;*%{=J-u={tY#TNv;G)cc;UA8)mj&ui(WEbCHs#i?FvxjnAlyT`W*bc@N- zhgajYv0uwGbA=|T)Q%4m4gB(W#rfYzJ1>Aw~n&% z;a4d;`jQh98EdYXNWFb>ax%-~8Ip%%)7ad%++{I4w_TyLv-8LOsI_9Z#GTiePcYtl zy5Ww3JcSFc{ZckkXK7d>{X&dGW6<%@~L?e9ms#dn!VmHiQ|CAf9SEC{r9$e>6h zqMqmQu3fth$Z>LUHT8({8d+G}xO2zG%xv3+4GV%+f>x3qOxPHam!^Y87k zEPmFrSePmA#s)^47N!VE=3QqV>|2~|J^lRi`kzmyhl#YzVv`DetfQyrl-TN1eMjoZ z;ls)r8W|N8686Tnwz)5TeS#w+Ijb(p*wx&)ef#zz_g5GEN)Wq+_@ruD< zn;*go%*@Q7!`|Cp1*{Aa0&N%S>FL>1@iFQ1v$O5|@@C7nzj^o0Y-3gPoMlN#Nj}_K z%F4=9r%rWtc7EWwHcWf^>8C|M|NNc@Uaap_`^R0Ded#`ga zS*<@re zZJb*@eR_CI%pB4EN1uOw$*@3i>)W25o`!2o8#itYTahhuz0*(P?Zk-_Z*R+GKF`C$ zV{t-v>!L-EZf(u}6~xuzwm364_wVWWe@vNAWDc$lU%&77J8KWGi|JKWzuM*NR;*cL zQs`S>Z@z|{Xyu7UO8f(M2+t!roa&vP(c-PFizu^0#_3Qa-ew*dqayhc& zx=xl?mV@^4)IH|{@8yYz6OlEV$y4%X@x_b_HC^#+a=Tog^YQUD$!}|DU}!dy zNSWZgCsTkG46aQz<(~1tRebf?uGtprgy+I{{ygtmwMuLE`fx8VF9-D;0j;TArox9e zOr1IvbY{z%H8Xf)5=})#MfKzNUE!a-`m;{^x$LdCX3dh?8kKwIJlCZsENpC1Z#xA= zL|9h!96NSQA@NcuXj5qa(ZW0)Kenj5PF~(yqioI1w{O{UB*mzuJ^>`kI4}@7{()=8V|fuUt2j zf`Wn$NPf7wI(+5Im1@5hEnCL+$II2#Rq{)4`SEkDLU|1b-#99?PFj3dZq0+6o6{2< zKr`o2;hx7!7Ztl%&-FWh{yeCM`tFDJ*vN`>{f~M>9qQ#$gef;)q z-n@Boa&qrpypWKQIdWZQm(LU%IsQvWWi5+XcrJZ-2jAlJ`P6NKTYUDNSRcQ?udB;w zMiigahX6Iz?gpkqPHl#nnVAc;7H`=iVlKQWXytOhxlQld^3O-d3a}TwxwoTm@y}yB zm>=9Zmtr(|(j)_(*)wNmW@Jdn$cS{hEKoT6v}p07McZ<2GF9$<{aEbs?&e$T`u9GI zhHcw%0dL!Bs$0@w$|e*N!zN+Y^229&z2S~Kh4B_L=l0e9UbT94X@BeS$Ff!>Cph=- zE`ELvRKp(Isxfiss;uZB6cKd zoRVC5X;-3znW14|bac0TTWhPM-svNSG3r*iTaF()mX?;*6eekFYwPRlyXoP zQ&T4^E32rOSkv#1jbL!|=1pB)-PF|79XSiaR(pGU@Bj5m`$8nsB;kAe>-pt={r)}s zYul_jb83El(bQOa(G6>sa~c=MopWptoNU=;E~aRljjy?e4o&5>?mIFX>-ZJhh}`%eHOX7B6OwVSamm z|NV$P;^wbl+jYb=ebhcr_O~-kyU$b`bI{~-%7crG-G5B4INZj&O+wLPi||~tTm3SY zm+s&1-_4M@^;TC`*Nqzy$x@u)QGyy5Mn=Z@wcloLbhz>I<;xti-{0Qe-m(Aqp+iog zp;tdXKAyXV%>%R@hp(H!cAU<8xrUP(PdSyBDK2Q2n0;1lp7NwKXU?2yIOiIp_x;w^ zY-VQWW!{-4v%Y=%wsPglZgG97(~+M4UfwOtZQt;?W;K7x5-Ur~PL`=(IfX**$khht ze0Sac|J4)u-Y)n?nVGdkMW4>iwO+b(sSIDc+v1ZcMjr0|3j@mD-vb@l;(qKVmOP6Td7_kP_Qs&sf$*HyE($W1@U%5(N-rH5W`fB5!w;db(O3r1Z z8%R`ER+{JEJECi=BIH?F`Sa%H^xU1f<>ls2)|5Uv!g={+)uTs`zP-B(GJSq#e!hLl z3xSC;A}$ir(#&@++uGWGT|3XgLgpN#i~7M>S6BB}6PL+@T)~h9C!Rg1y59PtC+mZA zljZai{7-z%4Gb7K*}#3{RadhvOz}Sc<;$0?+1K~|dZpcdF2C=0nf3Cwee?1a6FIL4 zDqa%>4Owq^@+3vBAJpe#I}xrS!nXAZbSsSEyh0;pW@fb*Ax#l4A0MB%xOp$H8b6WC zo%pobdFI@?Ygev3$j{8gR8&+H6CwX;!h{JErcGlzCi(is3lA@^O{$KjQ`Q@(s;U|p zUCLS6Z})2jXn4$E>!wXX;o<4)SFGga<$Z7}|MWE7wCi^wBO|X~y}BbPH6_JmWr$N? z`CE;d&Q5%uYswC;*d)<*(>t%kGN6I0V5yv(+`iP)(^^_s=EfCPRqa~3bm_u{j3v>t zX3nhq@?v6Uf&mR#zJ- z%_l~TcaMuXoEGD1oiuZ%=Ms?@3)Tm%d=nvGt6;1+N#pQBSKXB*OSWy;vu92Hq?0Lf z_H}=*@BjDp+S=&C*T)YWI520? ztSPq1K%xh2uf}1e7N>`MtG_Fh?sVJ|_4f7k_10EapFV#sEeyHF`-rmmF&M4%V{XQ{K88l5MemrU8kCT(t=huAd6fKvQkzx6(U11X! z5+ZVNlcc2N)TvW<#PNB_Wtj>K3op378`KDRBX%J`URpXjUzz>ZinceG?}*pd?pVJ3 z`OnYKdwWCW<>z;c>;L=vzW%tX`P#7P@bGk31)b@SUu?5Z-`866Ywf)V#~s#7ghQSb zSxRgYUX!-(eux5c@4b{OjDoVk5_w%1axr9le= zemp$PerHlOe8Y%}XS2hEo*te*hd1xqr8W6vT6+5O<;xGQzjffifvc;-&(E{lmYjY zsFod&jUszB_Fijr@4R4WVe#X*{lAGGjv1cI_lxdLJk0jt!nA)b7Qy3()~s3c{QUgpz{20ZfA^|R-6VM2HmiNx-OSIry>85tkG)FocU>dw zv2pQcyN%aXQcGv0u(TzD7JWW-&dGT*RXhC4QW2iR6*h68Gn`c7)`ra)ed*C-R+`O`RB*RgRd2xQ<^`r&GB@1XJ4UuV@u}by(Xo3S2|ffe*4xY z6PKQzKHsi3>t*c%kHTqHrViEL$~L}eIJVGf;RGROA)7D9ja801=5FW6Sf|j*FS_Ml zv~d&HlKo0TZyedDw3n2Wi0o?kW8D1s*1H`)uPH3JHc=(;lfb!l5n)x1xqj?>rF$1n zesK3=k_wfvzF8ylO0b98=we)3AW!lI%gHFfomK|-BR zj&_T?_sg~FZLWT9C1p3i{@a_ItHakn5`FRZtteOPFC*!cLwTonoh^eLTl8_gQTNeH z@3~hO?)Fo0a&vPF4-W@zx>>exp`xYbO(k!8>E6}_OZUgJh*oEQ`(iEC)s*V}LeV2Y z(X(dl)>$)7XPve(s8&lmAvNKTadY#ncNaiDIpQi5?Ah{JaqfacDMtJMd^&AfW5~DS z`}U0048K$!E9!e*a(F$j%{wD2i|P5nGiQ91yxW`E`M-Vr`jGYZ?b~0~vv-%T6Yl8f z=;-f1ez`Gw>#b|o!fG8^ybW!Ia;XQc}KFkkfOdm+SZOuoS>~8 z&ETyat>CR4p!-BXTRR$5B)#X%)Vn*=;gj*laEVvqfA>m!I?uzGwcGi5bnO%`)rex1 z6>FkB)K{#LKd{ne@kLNy(@?L6(YGumz;}n{0%p(+A~V92OiZrazc24^2f9JzJ@1=k zbEU<_+qt!7%san@@5SkqQlWJ(UuIrd-*7f9`c>fF>({SexxzB9^5dhU-QxN_B8@sq z&z?Q|_o3asAzd$i-7c=mi=WrpP4E}@^idT&$6mVU^n(J62j$sWSzQlO*l)>Q$T0D?jTE$a@JwLxNgggP zr3e9$5CfjsbLO;&-GpxGcxMh8^?LZ`%^IhL8gwvkU(6cM{MR{~&ro^Z*~;p5 z!>T10Gu}*9vDVY$D|tL~=FFM%=eL6{7@72^vzpIh%2ugp&MfgQuS^>w9cTS9ZdSha z?#0hAd5`&<)0ongby!zkieWSH6udKY+R2m$n+}{l-5nzKA@9hiPevBrQ6fJ$ewDm@ zud#bu@$+ZT+!!4y&zMZmY&y99#4_L62hx`YXxzGWYt0Ik6t-m7XJYQ`jghzWGwSN> zemsnija3y2jcM=oVmlEdAXK}Sc@pS?k!=T_e?G`_Gi$5Vt#CDu^mO$deqTR)Xpos6 z%Q_`2|7=Exg6Gs7@5H07%?{l(u^_F$<@Q|p67EkE6g&OJ5B&sfPIu5YUKrr9z zn=fCII(PoO^Zj!hHW+y4KgziFO3qzuLI&PT z_wVz|IT>0Bh#gEY_^@EiNJg8m?KSR9sxVJ@4)z{=a|zoSSRS9>?%*>bjri zCFkea-o1PG@ZrNhB%7MJ+7EMba2#+yed?4~a4_gV%+4vT*Iv6Qu?Q(zSj;&7_~EI; zPoF+LcI?=hGd{cT*jQWdUbv9)e&D>BGb{i7`T6hf@6P*)85tZsTiOyMqM~NSzDl#M zv73J|;lZWFv6pU5U}yOaYjs=v zGMhQ(_Ra~_k3M`bI4Cizxw-kl!j1l!pbZ*lFF-bEFrPm0^wY6pZXbM{oR|)7Qn0hL ztKn`m<5(G@Rl@jU{Z6@i7n+)wF6?TqPpk%B^UnbLYuB#%`S=Lz+3B^k>dz0u3`=1dnVjQoxA|6FnRGJcNUy6W z-;^~QR<1mmWASz6O3i?hZo833k_||=Chlhe_`^a*15B1%;2b+?V&Phx_sMG98h(7-Z!fea4s^*$+@psNH&rPPr`dJ z#0=AtyWig0%5Cy&&a7El`ugV4sUCX$p?*d zb90X#J-STQcBm8`GL?EEFWrmtGH>iz!z z_iive`~0)|+Z)F7IyyRkKF|Me@^*o$Q0Kb1yzZf<3zrH#9$KLmk9dwcu82k+dz9UT+Hv#amK(@$T%lq3fR zEMBze*zx0zx?M4P@87(Uk(CWy8N$fOxWI1t^5xH;o}Lc6x;48samM`l_kVtV-nrxA z{+gdc_bm+W3T_imF`BucT4<`**%K!eeiR=AUEEd*y7-Ib@&5glpVMk;V!rK9Nl6jl z`IkN6!i9hp*V)+FpFe-j%Eb7CtNZAqOP7L9xNBQl-kkC7w4-rz^p?36)6Q*IsI9Hl z)z$s+aGCFHAz|U%HT;KsBdt%zn5X{#_xJt%{m17X+Y*%<9ew-v_xFbn9jdUAo9j2- z3pA|~pdzLn>9x;hp+AVz1B4G`?T|-*(5X=-AlSdqDzR zt()rq*9HAdx^?c&8=Wl^O8utzSk0|_cW0-xd7i^XKQS>epX0?(3M|sk%`wb1evG`6 zq4#E3c=+*S#}4#5aA-~4m406CMA`ufrp5=K&)e^>{cV;qZS$^OR>sE3x5CtQbk=Ox zaADVx%5z5q=e}5VF%NWD;P-Vo+%PX|kM5;GL%XDI-zxji;C&Zt~JOXW3SR4S^u5b!@yTXGB5wWqX-j|`NPc4XR#~H zPtC$Y;!Eh!ITGCy&ZfohEMon1#MIZv=gj*0zu6k6COF32-WeGg8DH~}^<#qOy?giO z*Zs=$^W*zC|H0><@%4X8%gW3?{tZ`~yfgj$y!HEjb#3W3RAh~di;Ikm z|+J!MEj_1np#t(#Kou2nX~3% z#_N8P$Xx(l|$dgrX4OizbdwaXHO#ZFeuN5yY@CpUocDr!+ z;N{E4rlzJkIzH2@Zzt&Fh;>h$F(V=(V#d^|tZLmR)z5F-h?wZHMBZTf;fFc5x1Eh} zG@Ctl-aI)esa<>a=uAGz6V~arxV5cK&Z6MKkxt=hRZJ}{Euh1>FJBH`8RDfPlu_F$ zEFdsp;>5s+h#7O{`0TlAHRt8xrbLP9r{BJPd-VI=qe-B{NOB`(quwt5^y_POjQc`k z=dGu!V#WW#wh=t?7SFJQY$ISRzAJTPpK){b*1I}k=eKX&x^>67cBh3RA|e9!#U0kz zYKW;makF5Y=wV`FVq$NvKmGL9sJCsr(tGyqWo2?KDfu$%e#ne@^TfDXebkJNj4t(E zUb^(fo-h@m&KSMx874kzmoHxqRuH(cZ~fz2#O@#X$!P%EK=AVUb8%r|XQ$US+8e^v zC#7t;Ext79=H0ut=H}{?Pl|9IZR3@`kyDnDkx^2zMc0mBSy>r8conkxs?p3d4Gj$| zR%mD}-DMb}73%MQ{>zsyr%rXn=ql^HMn*17F9v!H;$hQh~g)3s0OELynm;lIDXe`*m}H zE@*&SfP*Dz@8Yo4|NlI*Dry$uC>BY@TKDF&vu$3bH5k zLzm3UO7(85{+{=zASsE-YuP)N1ttC|-WHDot`*;Ql#-JAu;1CqX~L8y_$ut2+uL$? zWbX)Dy>{KYvS;g0KmGLWTiG826_q2chP&sUsminVNKb$M;lqY^`CP3@R_Z!Qa~q&L z7z8BR65addj{f}zDu3VRx(A1bwpM4nQ2J^0c6sc%syyqysI}|XtU2NwtfHp2Zl=Ud zj%c{OJcl>Tm@(tb8J|BJ7A;~r)$>x}*|TR33pH$QYyU1e7jZt9edVfEhbI5r5V2;@ z9-Hge*d2u?Ko@jB`af~@?Cy4^5H{=Zr#3J`ZGdIOiV?nQ#eM= z$;l}wC`d!()W^riulpRxYg+SsTQX?Ut?>7^+*YTB)^~Q5YJc)`d;q^L(9H3>9hxzRv%+yFuPS%gxv*X$3V~QQHeE|-C71 zYuBtUZeNtFk#}CFC}`@e?K_L%+KH7(7+HL&c2b&)5}Xr zO6u0W+G@~>(AP~0$|s=v0$Kt?w5A4V^mKF-l)4IJ3$!{Z3UwYjd^i@o1RrJbKTHb? zQzOy}f6z98OO3EJ!NJ1hXfXvPVV4ed~d;*Bt3^i zdmFeJE-ew-VP5n~;TOl1H(mYrUa%e8$KWyboyaYFdD&i*X^Z*UKH5CxP6}&&aDLDG zC$sbLLTPxo3{{qJPeUORhx`Tpb2pFj7Hl4j8FTyQ9_^YM<` zZ|jPSufM*&e*SW~8%lv9Tcg%SzjwYDJV|A5+<8xf9o}1`)?R;IU0p4`^H+(LEDzh` zj}^+{?Iw<`v4XCF+i&w8{$S@X7V=@IVQ^_FlK- z%b^Yn6;^EE?mC*Z`s%NB|Nk{{)m(jB_WJ9u#rxmnm|5G{#H_#G|L@d>-bWVizW<)R z?vcGzZ=3b}CyfgZd6$*SER9=VpRcU%$ja5~v@zn(kB^US-#h#5f$8SIN90mUTdcA&Y)Z1(B{QUf1T~pIJwI+N6B}zF*5!cT@ZK@qk z742MeHS75CHu z?$}aQsa`k9+xNp)hc3RjB1CHzx8t_3)n70B+b_K?-Fr;=T%IVbV`wwRyGRQHT{qpN_3)`a7cH_CBi!@Fh zK48u8$sr(7`)J{w2%WsYL0_-tm}yTx{kH73i{*}fzvYwTWcb?sr+l7%`sv#6Hzij0 zt$%Pdh8dxZM^@!-)(UZqvq){jo&z zsn;&<`>{tEHe|DiZgXCJb=Qs^C+_X3D=Q1ro9^%DH*c+0g=E*!q+e^U7g)sTP4};T z`L*iq>#un_Y>p3>a4|G-Rc_zE-+uo2*=N&^#jU@Y6Sgv>ufJc`y|MlQsFkk2?DJt^ zNxt@%oZo-{{(ZiLmcrLzZVPR3xHoxxSQZN4m8NT-O zl}EH|mA6E#wF=_j@R&vPlLkjq-uB%QI{PYRmIkfNu;t+wWO0;eGZ&lxGq<#^ZeCvK z9J@RG2mAy>PRy;^yDvg#)9rsf#~){Httu)?S}$%BV8y>CZ1v5YZ*xr7Tz~zurY_m= zaXA-5S>pnyK9@j~nLfMj<{g{XzuK~}y}dn(|L|gu{zd-jZRr!}h(^f{U?W=#3J zG{r#T#tT+|#aiZK<>Zb_v(Luut@`>Wm0^N>6W46<yQK^adlH(s zW|v<-(4yjLHTT@lpFfSSGg~i>(8=4y!my+D@Rui1yOK2-7%f4^Suo!aXYUs@W`cMt5e@NaW*Zu|K49s`17iV zg0;WCygcSrwds_xN4!a_1cS9}fTH`d%b7c4^0wcW+`ptP(E^k<_l3EB(9qM@&tH@C zWP3x=&YEOZsN!PbQ|Z-Mhb>r|H4W&8OCepSj1!b)Z{) z#RT`)Uw{4hu_I_@N=-0l(}J5herl6f=bMTQ;#MEuD?EitwDw4Bo$BgW{bZ058a+#l{+Whz51$F?PT_bSmhNPOed*W z+S#qUnkBinp-JII+3wFjW4M!l=q+Eq{N>TQ{r|6A&)pjJ(l)L6;DeRxxgGv-YURv) zS@P@K+uLr7CvFs86Qb1%irOWuhIcNPSowZm$8q?B=VmXN<1eEZtiI|Mz_>tR#fGJA zhZA?ky!%=udA@T|#>R+@M4s-xv!sm`&*D~Z=$&@@>Dq_;@4vVIWv#(;c=P7XCEky2<~%FoVhCpu-4;Db zg`J&!Yn1Nd)KghCmAwaF!3k!!<_A3xq- zD$1~J?t(+!26O#RKP}pQ_ngHJp|*z^Ccl1sT->ZZ;o*xHFRp#R7`m(C!R_a-!kc#+ z`7gfsA<;P*OzfO92aj(+Cb&_wTFw`-}5+ z^PSzVc}`CKTJ`t1d_50a^Y1$hnp3^5W^IjIpWd@8-$aUS`G&`r=DW;(T0Frmll1q4 zeLHsS`0;Z2e6!f2^)YdA`)YreT@Gz9*4k5|uC9JH%k=jHu7cGno?25+34i6DcQ);Q zjy~V+$Dq?t^dA0yvPz=tW_|uHhKi!sUw{4iQ)4%Oy4TV-a}(lI`zN)`{RFz;Z}&aB z`%^&W>W{bE@BjPv`@MUmV+G^1)2S;%s&+}w_--!4SIaR;cw61Z=tmasO04eR;Y@oi zzQi@~O4e36qy86F!rThE_4WJX*5_xvx_WWeH{Z;$nwz)5kD=l1=Iz_f=bzsnV=UKy zwuyz|hDCYE0)gWn@7;?NV0r%hdD(g9!P6>c_+ap#`(WXRtlSx;k3r7zboFyt=akR{ E05%Ub3IG5A literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/screenshots/icon-web.png b/prebuilts/gradle/MidiScope/screenshots/icon-web.png new file mode 100644 index 0000000000000000000000000000000000000000..6daec5cd98e4ab0c948ca817bad8e149c6b8efea GIT binary patch literal 34730 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 W|2FH)!X*q03=E#GelF{r5}E*Hsm9j; literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiScope/settings.gradle b/prebuilts/gradle/MidiScope/settings.gradle new file mode 100644 index 00000000..0a5c310b --- /dev/null +++ b/prebuilts/gradle/MidiScope/settings.gradle @@ -0,0 +1,2 @@ + +include 'Application' diff --git a/prebuilts/gradle/MidiSynth/.google/packaging.yaml b/prebuilts/gradle/MidiSynth/.google/packaging.yaml new file mode 100644 index 00000000..baa258ca --- /dev/null +++ b/prebuilts/gradle/MidiSynth/.google/packaging.yaml @@ -0,0 +1,18 @@ + +# GOOGLE SAMPLE PACKAGING DATA +# +# This file is used by Google as part of our samples packaging process. +# End users may safely ignore this file. It has no relevance to other systems. +--- +status: PUBLISHED +technologies: [Android] +categories: [Media] +languages: [Java] +solutions: [Mobile] +github: android-MidiSynth +level: EXPERT +icon: screenshots/icon-web.png +apiRefs: + - android:android.media.midi.MidiManager + - android:android.media.midi.MidiReceiver +license: apache2 diff --git a/prebuilts/gradle/MidiSynth/Application/build.gradle b/prebuilts/gradle/MidiSynth/Application/build.gradle new file mode 100644 index 00000000..4e8f709c --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/build.gradle @@ -0,0 +1,73 @@ + +buildscript { + repositories { + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:1.2.3' + } +} + +apply plugin: 'com.android.application' + +repositories { + jcenter() +} + +dependencies { + compile "com.android.support:support-v4:23.0.0" + compile "com.android.support:support-v13:23.0.0" + compile "com.android.support:cardview-v7:23.0.0" +} + +// The sample build uses multiple directories to +// keep boilerplate and common code separate from +// the main sample code. +List dirs = [ + 'main', // main sample code; look here for the interesting stuff. + 'common', // components that are reused by multiple samples + 'template'] // boilerplate code that is generated by the sample template process + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.0" + + defaultConfig { + minSdkVersion 23 + targetSdkVersion 23 + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + sourceSets { + main { + dirs.each { dir -> + java.srcDirs "src/${dir}/java" + res.srcDirs "src/${dir}/res" + } + } + androidTest.setRoot('tests') + androidTest.java.srcDirs = ['tests/src'] + + } + +} + + + + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/MidiSynth/Application/src/main/AndroidManifest.xml new file mode 100644 index 00000000..10024192 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/AndroidManifest.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/EventScheduler.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/EventScheduler.java new file mode 100644 index 00000000..37c0140d --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/EventScheduler.java @@ -0,0 +1,243 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import java.util.SortedMap; +import java.util.TreeMap; + +/** + * Store SchedulableEvents in a timestamped buffer. + * Events may be written in any order. + * Events will be read in sorted order. + * Events with the same timestamp will be read in the order they were added. + * + * Only one Thread can write into the buffer. + * And only one Thread can read from the buffer. + */ +public class EventScheduler { + private static final long NANOS_PER_MILLI = 1000000; + + private final Object lock = new Object(); + private SortedMap mEventBuffer; + // This does not have to be guarded. It is only set by the writing thread. + // If the reader sees a null right before being set then that is OK. + private FastEventQueue mEventPool = null; + private static final int MAX_POOL_SIZE = 200; + + public EventScheduler() { + mEventBuffer = new TreeMap(); + } + + // If we keep at least one node in the list then it can be atomic + // and non-blocking. + private class FastEventQueue { + // One thread takes from the beginning of the list. + volatile SchedulableEvent mFirst; + // A second thread returns events to the end of the list. + volatile SchedulableEvent mLast; + volatile long mEventsAdded; + volatile long mEventsRemoved; + + FastEventQueue(SchedulableEvent event) { + mFirst = event; + mLast = mFirst; + mEventsAdded = 1; // Always created with one event added. Never empty. + mEventsRemoved = 0; // None removed yet. + } + + int size() { + return (int)(mEventsAdded - mEventsRemoved); + } + + /** + * Do not call this unless there is more than one event + * in the list. + * @return first event in the list + */ + public SchedulableEvent remove() { + // Take first event. + mEventsRemoved++; + SchedulableEvent event = mFirst; + mFirst = event.mNext; + return event; + } + + /** + * @param event + */ + public void add(SchedulableEvent event) { + event.mNext = null; + mLast.mNext = event; + mLast = event; + mEventsAdded++; + } + } + + /** + * Base class for events that can be stored in the EventScheduler. + */ + public static class SchedulableEvent { + private long mTimestamp; + private SchedulableEvent mNext = null; + + /** + * @param timestamp + */ + public SchedulableEvent(long timestamp) { + mTimestamp = timestamp; + } + + /** + * @return timestamp + */ + public long getTimestamp() { + return mTimestamp; + } + + /** + * The timestamp should not be modified when the event is in the + * scheduling buffer. + */ + public void setTimestamp(long timestamp) { + mTimestamp = timestamp; + } + } + + /** + * Get an event from the pool. + * Always leave at least one event in the pool. + * @return event or null + */ + public SchedulableEvent removeEventfromPool() { + SchedulableEvent event = null; + if (mEventPool != null && (mEventPool.size() > 1)) { + event = mEventPool.remove(); + } + return event; + } + + /** + * Return events to a pool so they can be reused. + * + * @param event + */ + public void addEventToPool(SchedulableEvent event) { + if (mEventPool == null) { + mEventPool = new FastEventQueue(event); + // If we already have enough items in the pool then just + // drop the event. This prevents unbounded memory leaks. + } else if (mEventPool.size() < MAX_POOL_SIZE) { + mEventPool.add(event); + } + } + + /** + * Add an event to the scheduler. Events with the same time will be + * processed in order. + * + * @param event + */ + public void add(SchedulableEvent event) { + synchronized (lock) { + FastEventQueue list = mEventBuffer.get(event.getTimestamp()); + if (list == null) { + long lowestTime = mEventBuffer.isEmpty() ? Long.MAX_VALUE + : mEventBuffer.firstKey(); + list = new FastEventQueue(event); + mEventBuffer.put(event.getTimestamp(), list); + // If the event we added is earlier than the previous earliest + // event then notify any threads waiting for the next event. + if (event.getTimestamp() < lowestTime) { + lock.notify(); + } + } else { + list.add(event); + } + } + } + + // Caller must synchronize on lock before calling. + private SchedulableEvent removeNextEventLocked(long lowestTime) { + SchedulableEvent event; + FastEventQueue list = mEventBuffer.get(lowestTime); + // Remove list from tree if this is the last node. + if ((list.size() == 1)) { + mEventBuffer.remove(lowestTime); + } + event = list.remove(); + return event; + } + + /** + * Check to see if any scheduled events are ready to be processed. + * + * @param timestamp + * @return next event or null if none ready + */ + public SchedulableEvent getNextEvent(long time) { + SchedulableEvent event = null; + synchronized (lock) { + if (!mEventBuffer.isEmpty()) { + long lowestTime = mEventBuffer.firstKey(); + // Is it time for this list to be processed? + if (lowestTime <= time) { + event = removeNextEventLocked(lowestTime); + } + } + } + // Log.i(TAG, "getNextEvent: event = " + event); + return event; + } + + /** + * Return the next available event or wait until there is an event ready to + * be processed. This method assumes that the timestamps are in nanoseconds + * and that the current time is System.nanoTime(). + * + * @return event + * @throws InterruptedException + */ + public SchedulableEvent waitNextEvent() throws InterruptedException { + SchedulableEvent event = null; + while (true) { + long millisToWait = Integer.MAX_VALUE; + synchronized (lock) { + if (!mEventBuffer.isEmpty()) { + long now = System.nanoTime(); + long lowestTime = mEventBuffer.firstKey(); + // Is it time for the earliest list to be processed? + if (lowestTime <= now) { + event = removeNextEventLocked(lowestTime); + break; + } else { + // Figure out how long to sleep until next event. + long nanosToWait = lowestTime - now; + // Add 1 millisecond so we don't wake up before it is + // ready. + millisToWait = 1 + (nanosToWait / NANOS_PER_MILLI); + // Clip 64-bit value to 32-bit max. + if (millisToWait > Integer.MAX_VALUE) { + millisToWait = Integer.MAX_VALUE; + } + } + } + lock.wait((int) millisToWait); + } + } + return event; + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiConstants.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiConstants.java new file mode 100644 index 00000000..38c25d50 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiConstants.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +/** + * MIDI related constants and static methods. + * These values are defined in the MIDI Standard 1.0 + * available from the MIDI Manufacturers Association. + */ +public class MidiConstants { + protected final static String TAG = "MidiTools"; + public static final byte STATUS_COMMAND_MASK = (byte) 0xF0; + public static final byte STATUS_CHANNEL_MASK = (byte) 0x0F; + + // Channel voice messages. + public static final byte STATUS_NOTE_OFF = (byte) 0x80; + public static final byte STATUS_NOTE_ON = (byte) 0x90; + public static final byte STATUS_POLYPHONIC_AFTERTOUCH = (byte) 0xA0; + public static final byte STATUS_CONTROL_CHANGE = (byte) 0xB0; + public static final byte STATUS_PROGRAM_CHANGE = (byte) 0xC0; + public static final byte STATUS_CHANNEL_PRESSURE = (byte) 0xD0; + public static final byte STATUS_PITCH_BEND = (byte) 0xE0; + + // System Common Messages. + public static final byte STATUS_SYSTEM_EXCLUSIVE = (byte) 0xF0; + public static final byte STATUS_MIDI_TIME_CODE = (byte) 0xF1; + public static final byte STATUS_SONG_POSITION = (byte) 0xF2; + public static final byte STATUS_SONG_SELECT = (byte) 0xF3; + public static final byte STATUS_TUNE_REQUEST = (byte) 0xF6; + public static final byte STATUS_END_SYSEX = (byte) 0xF7; + + // System Real-Time Messages + public static final byte STATUS_TIMING_CLOCK = (byte) 0xF8; + public static final byte STATUS_START = (byte) 0xFA; + public static final byte STATUS_CONTINUE = (byte) 0xFB; + public static final byte STATUS_STOP = (byte) 0xFC; + public static final byte STATUS_ACTIVE_SENSING = (byte) 0xFE; + public static final byte STATUS_RESET = (byte) 0xFF; + + /** Number of bytes in a message nc from 8c to Ec */ + public final static int CHANNEL_BYTE_LENGTHS[] = { 3, 3, 3, 3, 2, 2, 3 }; + + /** Number of bytes in a message Fn from F0 to FF */ + public final static int SYSTEM_BYTE_LENGTHS[] = { 1, 2, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1 }; + + /** + * MIDI messages, except for SysEx, are 1,2 or 3 bytes long. + * You can tell how long a MIDI message is from the first status byte. + * Do not call this for SysEx, which has variable length. + * @param statusByte + * @return number of bytes in a complete message, zero if data byte passed + */ + public static int getBytesPerMessage(byte statusByte) { + // Java bytes are signed so we need to mask off the high bits + // to get a value between 0 and 255. + int statusInt = statusByte & 0xFF; + if (statusInt >= 0xF0) { + // System messages use low nibble for size. + return SYSTEM_BYTE_LENGTHS[statusInt & 0x0F]; + } else if(statusInt >= 0x80) { + // Channel voice messages use high nibble for size. + return CHANNEL_BYTE_LENGTHS[(statusInt >> 4) - 8]; + } else { + return 0; // data byte + } + } + + /** + * @param msg + * @param offset + * @param count + * @return true if the entire message is ActiveSensing commands + */ + public static boolean isAllActiveSensing(byte[] msg, int offset, + int count) { + // Count bytes that are not active sensing. + int goodBytes = 0; + for (int i = 0; i < count; i++) { + byte b = msg[offset + i]; + if (b != MidiConstants.STATUS_ACTIVE_SENSING) { + goodBytes++; + } + } + return (goodBytes == 0); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiDispatcher.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiDispatcher.java new file mode 100644 index 00000000..b7f1fe1e --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiDispatcher.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiReceiver; +import android.media.midi.MidiSender; + +import java.io.IOException; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * Utility class for dispatching MIDI data to a list of {@link MidiReceiver}s. + * This class subclasses {@link MidiReceiver} and dispatches any data it receives + * to its receiver list. Any receivers that throw an exception upon receiving data will + * be automatically removed from the receiver list, but no IOException will be returned + * from the dispatcher's {@link MidiReceiver#onReceive} in that case. + */ +public final class MidiDispatcher extends MidiReceiver { + + private final CopyOnWriteArrayList mReceivers + = new CopyOnWriteArrayList(); + + private final MidiSender mSender = new MidiSender() { + /** + * Called to connect a {@link MidiReceiver} to the sender + * + * @param receiver the receiver to connect + */ + @Override + public void onConnect(MidiReceiver receiver) { + mReceivers.add(receiver); + } + + /** + * Called to disconnect a {@link MidiReceiver} from the sender + * + * @param receiver the receiver to disconnect + */ + @Override + public void onDisconnect(MidiReceiver receiver) { + mReceivers.remove(receiver); + } + }; + + /** + * Returns the number of {@link MidiReceiver}s this dispatcher contains. + * @return the number of receivers + */ + public int getReceiverCount() { + return mReceivers.size(); + } + + /** + * Returns a {@link MidiSender} which is used to add and remove + * {@link MidiReceiver}s + * to the dispatcher's receiver list. + * @return the dispatcher's MidiSender + */ + public MidiSender getSender() { + return mSender; + } + + @Override + public void onSend(byte[] msg, int offset, int count, long timestamp) throws IOException { + for (MidiReceiver receiver : mReceivers) { + try { + receiver.send(msg, offset, count, timestamp); + } catch (IOException e) { + // if the receiver fails we remove the receiver but do not propagate the exception + mReceivers.remove(receiver); + } + } + } + + @Override + public void flush() throws IOException { + for (MidiReceiver receiver : mReceivers) { + receiver.flush(); + } + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiEventScheduler.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiEventScheduler.java new file mode 100644 index 00000000..513d3939 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiEventScheduler.java @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiReceiver; + +import java.io.IOException; + +/** + * Add MIDI Events to an EventScheduler + */ +public class MidiEventScheduler extends EventScheduler { + private static final String TAG = "MidiEventScheduler"; + // Maintain a pool of scheduled events to reduce memory allocation. + // This pool increases performance by about 14%. + private final static int POOL_EVENT_SIZE = 16; + private MidiReceiver mReceiver = new SchedulingReceiver(); + + private class SchedulingReceiver extends MidiReceiver + { + /** + * Store these bytes in the EventScheduler to be delivered at the specified + * time. + */ + @Override + public void onSend(byte[] msg, int offset, int count, long timestamp) + throws IOException { + MidiEvent event = createScheduledEvent(msg, offset, count, timestamp); + if (event != null) { + add(event); + } + } + } + + public static class MidiEvent extends SchedulableEvent { + public int count = 0; + public byte[] data; + + private MidiEvent(int count) { + super(0); + data = new byte[count]; + } + + private MidiEvent(byte[] msg, int offset, int count, long timestamp) { + super(timestamp); + data = new byte[count]; + System.arraycopy(msg, offset, data, 0, count); + this.count = count; + } + + @Override + public String toString() { + String text = "Event: "; + for (int i = 0; i < count; i++) { + text += data[i] + ", "; + } + return text; + } + } + + /** + * Create an event that contains the message. + */ + private MidiEvent createScheduledEvent(byte[] msg, int offset, int count, + long timestamp) { + MidiEvent event; + if (count > POOL_EVENT_SIZE) { + event = new MidiEvent(msg, offset, count, timestamp); + } else { + event = (MidiEvent) removeEventfromPool(); + if (event == null) { + event = new MidiEvent(POOL_EVENT_SIZE); + } + System.arraycopy(msg, offset, event.data, 0, count); + event.count = count; + event.setTimestamp(timestamp); + } + return event; + } + + /** + * Return events to a pool so they can be reused. + * + * @param event + */ + @Override + public void addEventToPool(SchedulableEvent event) { + // Make sure the event is suitable for the pool. + if (event instanceof MidiEvent) { + MidiEvent midiEvent = (MidiEvent) event; + if (midiEvent.data.length == POOL_EVENT_SIZE) { + super.addEventToPool(event); + } + } + } + + /** + * This MidiReceiver will write date to the scheduling buffer. + * @return the MidiReceiver + */ + public MidiReceiver getReceiver() { + return mReceiver; + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiEventThread.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiEventThread.java new file mode 100644 index 00000000..626e83cf --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiEventThread.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiSender; +import android.util.Log; + +import java.io.IOException; + +public class MidiEventThread extends MidiEventScheduler { + protected static final String TAG = "MidiEventThread"; + + private EventThread mEventThread; + MidiDispatcher mDispatcher = new MidiDispatcher(); + + class EventThread extends Thread { + private boolean go = true; + + @Override + public void run() { + while (go) { + try { + MidiEvent event = (MidiEvent) waitNextEvent(); + try { + Log.i(TAG, "Fire event " + event.data[0] + " at " + + event.getTimestamp()); + mDispatcher.send(event.data, 0, + event.count, event.getTimestamp()); + } catch (IOException e) { + e.printStackTrace(); + } + // Put event back in the pool for future use. + addEventToPool(event); + } catch (InterruptedException e) { + // OK, this is how we stop the thread. + } + } + } + + /** + * Asynchronously tell the thread to stop. + */ + public void requestStop() { + go = false; + interrupt(); + } + } + + public void start() { + stop(); + mEventThread = new EventThread(); + mEventThread.start(); + } + + /** + * Asks the thread to stop then waits for it to stop. + */ + public void stop() { + if (mEventThread != null) { + mEventThread.requestStop(); + try { + mEventThread.join(500); + } catch (InterruptedException e) { + Log.e(TAG, + "Interrupted while waiting for MIDI EventScheduler thread to stop."); + } finally { + mEventThread = null; + } + } + } + + public MidiSender getSender() { + return mDispatcher.getSender(); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiFramer.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiFramer.java new file mode 100644 index 00000000..c274925a --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiFramer.java @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiReceiver; +import android.util.Log; + +import java.io.IOException; + +/** + * Convert stream of arbitrary MIDI bytes into discrete messages. + * + * Parses the incoming bytes and then posts individual messages to the receiver + * specified in the constructor. Short messages of 1-3 bytes will be complete. + * System Exclusive messages may be posted in pieces. + * + * Resolves Running Status and interleaved System Real-Time messages. + */ +public class MidiFramer extends MidiReceiver { + private MidiReceiver mReceiver; + private byte[] mBuffer = new byte[3]; + private int mCount; + private byte mRunningStatus; + private int mNeeded; + private boolean mInSysEx; + + public MidiFramer(MidiReceiver receiver) { + mReceiver = receiver; + } + + /* + * @see android.midi.MidiReceiver#onSend(byte[], int, int, long) + */ + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + int sysExStartOffset = (mInSysEx ? offset : -1); + + for (int i = 0; i < count; i++) { + final byte currentByte = data[offset]; + final int currentInt = currentByte & 0xFF; + if (currentInt >= 0x80) { // status byte? + if (currentInt < 0xF0) { // channel message? + mRunningStatus = currentByte; + mCount = 1; + mNeeded = MidiConstants.getBytesPerMessage(currentByte) - 1; + } else if (currentInt < 0xF8) { // system common? + if (currentInt == 0xF0 /* SysEx Start */) { + // Log.i(TAG, "SysEx Start"); + mInSysEx = true; + sysExStartOffset = offset; + } else if (currentInt == 0xF7 /* SysEx End */) { + // Log.i(TAG, "SysEx End"); + if (mInSysEx) { + mReceiver.send(data, sysExStartOffset, + offset - sysExStartOffset + 1, timestamp); + mInSysEx = false; + sysExStartOffset = -1; + } + } else { + mBuffer[0] = currentByte; + mRunningStatus = 0; + mCount = 1; + mNeeded = MidiConstants.getBytesPerMessage(currentByte) - 1; + } + } else { // real-time? + // Single byte message interleaved with other data. + if (mInSysEx) { + mReceiver.send(data, sysExStartOffset, + offset - sysExStartOffset, timestamp); + sysExStartOffset = offset + 1; + } + mReceiver.send(data, offset, 1, timestamp); + } + } else { // data byte + if (!mInSysEx) { + mBuffer[mCount++] = currentByte; + if (--mNeeded == 0) { + if (mRunningStatus != 0) { + mBuffer[0] = mRunningStatus; + } + mReceiver.send(mBuffer, 0, mCount, timestamp); + mNeeded = MidiConstants.getBytesPerMessage(mBuffer[0]) - 1; + mCount = 1; + } + } + } + ++offset; + } + + // send any accumulatedSysEx data + if (sysExStartOffset >= 0 && sysExStartOffset < offset) { + mReceiver.send(data, sysExStartOffset, + offset - sysExStartOffset, timestamp); + } + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiInputPortSelector.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiInputPortSelector.java new file mode 100644 index 00000000..7c665bac --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiInputPortSelector.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDevice; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiInputPort; +import android.media.midi.MidiManager; +import android.media.midi.MidiReceiver; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; + +import java.io.IOException; + +/** + * Manages a Spinner for selecting a MidiInputPort. + */ +public class MidiInputPortSelector extends MidiPortSelector { + + private MidiInputPort mInputPort; + private MidiDevice mOpenDevice; + + /** + * @param midiManager + * @param activity + * @param spinnerId ID from the layout resource + */ + public MidiInputPortSelector(MidiManager midiManager, Activity activity, + int spinnerId) { + super(midiManager, activity, spinnerId, MidiDeviceInfo.PortInfo.TYPE_INPUT); + } + + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + close(); + final MidiDeviceInfo info = wrapper.getDeviceInfo(); + if (info != null) { + mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { + @Override + public void onDeviceOpened(MidiDevice device) { + if (device == null) { + Log.e(MidiConstants.TAG, "could not open " + info); + } else { + mOpenDevice = device; + mInputPort = mOpenDevice.openInputPort( + wrapper.getPortIndex()); + if (mInputPort == null) { + Log.e(MidiConstants.TAG, "could not open input port on " + info); + } + } + } + }, null); + // Don't run the callback on the UI thread because openInputPort might take a while. + } + } + + public MidiReceiver getReceiver() { + return mInputPort; + } + + @Override + public void onClose() { + try { + if (mInputPort != null) { + Log.i(MidiConstants.TAG, "MidiInputPortSelector.onClose() - close port"); + mInputPort.close(); + } + mInputPort = null; + if (mOpenDevice != null) { + mOpenDevice.close(); + } + mOpenDevice = null; + } catch (IOException e) { + Log.e(MidiConstants.TAG, "cleanup failed", e); + } + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiOutputPortConnectionSelector.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiOutputPortConnectionSelector.java new file mode 100644 index 00000000..ca1ade48 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiOutputPortConnectionSelector.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; +import android.util.Log; + +import java.io.IOException; + +/** + * Select an output port and connect it to a destination input port. + */ +public class MidiOutputPortConnectionSelector extends MidiPortSelector { + + private MidiPortConnector mSynthConnector; + private MidiDeviceInfo mDestinationDeviceInfo; + private int mDestinationPortIndex; + private MidiPortConnector.OnPortsConnectedListener mConnectedListener; + + /** + * @param midiManager + * @param activity + * @param spinnerId + * @param type + */ + public MidiOutputPortConnectionSelector(MidiManager midiManager, + Activity activity, int spinnerId, + MidiDeviceInfo destinationDeviceInfo, int destinationPortIndex) { + super(midiManager, activity, spinnerId, + MidiDeviceInfo.PortInfo.TYPE_OUTPUT); + mDestinationDeviceInfo = destinationDeviceInfo; + mDestinationPortIndex = destinationPortIndex; + } + + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + Log.i(MidiConstants.TAG, "connectPortToSynth: " + wrapper); + onClose(); + if (wrapper.getDeviceInfo() != null) { + mSynthConnector = new MidiPortConnector(mMidiManager); + mSynthConnector.connectToDevicePort(wrapper.getDeviceInfo(), + wrapper.getPortIndex(), mDestinationDeviceInfo, + mDestinationPortIndex, + // not safe on UI thread + mConnectedListener, null); + } + } + + @Override + public void onClose() { + try { + if (mSynthConnector != null) { + mSynthConnector.close(); + mSynthConnector = null; + } + } catch (IOException e) { + Log.e(MidiConstants.TAG, "Exception in closeSynthResources()", e); + } + } + + /** + * @param myPortsConnectedListener + */ + public void setConnectedListener( + MidiPortConnector.OnPortsConnectedListener connectedListener) { + mConnectedListener = connectedListener; + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiOutputPortSelector.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiOutputPortSelector.java new file mode 100644 index 00000000..5aebf727 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiOutputPortSelector.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDevice; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; +import android.media.midi.MidiOutputPort; +import android.media.midi.MidiSender; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; + +import java.io.IOException; + +/** + * Manages a Spinner for selecting a MidiOutputPort. + */ +public class MidiOutputPortSelector extends MidiPortSelector { + private MidiOutputPort mOutputPort; + private MidiDispatcher mDispatcher = new MidiDispatcher(); + private MidiDevice mOpenDevice; + + /** + * @param midiManager + * @param activity + * @param spinnerId ID from the layout resource + */ + public MidiOutputPortSelector(MidiManager midiManager, Activity activity, + int spinnerId) { + super(midiManager, activity, spinnerId, MidiDeviceInfo.PortInfo.TYPE_OUTPUT); + } + + @Override + public void onPortSelected(final MidiPortWrapper wrapper) { + Log.i(MidiConstants.TAG, "onPortSelected: " + wrapper); + close(); + + final MidiDeviceInfo info = wrapper.getDeviceInfo(); + if (info != null) { + mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { + + @Override + public void onDeviceOpened(MidiDevice device) { + if (device == null) { + Log.e(MidiConstants.TAG, "could not open " + info); + } else { + mOpenDevice = device; + mOutputPort = device.openOutputPort(wrapper.getPortIndex()); + if (mOutputPort == null) { + Log.e(MidiConstants.TAG, + "could not open output port for " + info); + return; + } + mOutputPort.connect(mDispatcher); + } + } + }, null); + // Don't run the callback on the UI thread because openOutputPort might take a while. + } + } + + @Override + public void onClose() { + try { + if (mOutputPort != null) { + mOutputPort.disconnect(mDispatcher); + } + mOutputPort = null; + if (mOpenDevice != null) { + mOpenDevice.close(); + } + mOpenDevice = null; + } catch (IOException e) { + Log.e(MidiConstants.TAG, "cleanup failed", e); + } + } + + /** + * You can connect your MidiReceivers to this sender. The user will then select which output + * port will send messages through this MidiSender. + * @return a MidiSender that will send the messages from the selected port. + */ + public MidiSender getSender() { + return mDispatcher.getSender(); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortConnector.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortConnector.java new file mode 100644 index 00000000..457494d1 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortConnector.java @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiDevice; +import android.media.midi.MidiDevice.MidiConnection; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiInputPort; +import android.media.midi.MidiManager; +import android.os.Handler; +import android.util.Log; + +import java.io.IOException; + +/** + * Tool for connecting MIDI ports on two remote devices. + */ +public class MidiPortConnector { + private final MidiManager mMidiManager; + private MidiDevice mSourceDevice; + private MidiDevice mDestinationDevice; + private MidiConnection mConnection; + + /** + * @param mMidiManager + */ + public MidiPortConnector(MidiManager midiManager) { + mMidiManager = midiManager; + } + + public void close() throws IOException { + if (mConnection != null) { + Log.i(MidiConstants.TAG, + "MidiPortConnector closing connection " + mConnection); + mConnection.close(); + mConnection = null; + } + if (mSourceDevice != null) { + mSourceDevice.close(); + mSourceDevice = null; + } + if (mDestinationDevice != null) { + mDestinationDevice.close(); + mDestinationDevice = null; + } + } + + private void safeClose() { + try { + close(); + } catch (IOException e) { + Log.e(MidiConstants.TAG, "could not close resources", e); + } + } + + /** + * Listener class used for receiving the results of + * {@link #connectToDevicePort} + */ + public interface OnPortsConnectedListener { + /** + * Called to respond to a {@link #connectToDevicePort} request + * + * @param connection + * a {@link MidiConnection} that represents the connected + * ports, or null if connection failed + */ + abstract public void onPortsConnected(MidiConnection connection); + } + + /** + * Open two devices and connect their ports. + * + * @param sourceDeviceInfo + * @param sourcePortIndex + * @param destinationDeviceInfo + * @param destinationPortIndex + */ + public void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, + final int sourcePortIndex, + final MidiDeviceInfo destinationDeviceInfo, + final int destinationPortIndex) { + connectToDevicePort(sourceDeviceInfo, sourcePortIndex, + destinationDeviceInfo, destinationPortIndex, null, null); + } + + /** + * Open two devices and connect their ports. + * + * @param sourceDeviceInfo + * @param sourcePortIndex + * @param destinationDeviceInfo + * @param destinationPortIndex + */ + public void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, + final int sourcePortIndex, + final MidiDeviceInfo destinationDeviceInfo, + final int destinationPortIndex, + final OnPortsConnectedListener listener, final Handler handler) { + safeClose(); + mMidiManager.openDevice(destinationDeviceInfo, + new MidiManager.OnDeviceOpenedListener() { + @Override + public void onDeviceOpened(MidiDevice destinationDevice) { + if (destinationDevice == null) { + Log.e(MidiConstants.TAG, + "could not open " + destinationDeviceInfo); + if (listener != null) { + listener.onPortsConnected(null); + } + } else { + mDestinationDevice = destinationDevice; + Log.i(MidiConstants.TAG, + "connectToDevicePort opened " + + destinationDeviceInfo); + // Destination device was opened so go to next step. + MidiInputPort destinationInputPort = destinationDevice + .openInputPort(destinationPortIndex); + if (destinationInputPort != null) { + Log.i(MidiConstants.TAG, + "connectToDevicePort opened port on " + + destinationDeviceInfo); + connectToDevicePort(sourceDeviceInfo, + sourcePortIndex, + destinationInputPort, + listener, handler); + } else { + Log.e(MidiConstants.TAG, + "could not open port on " + + destinationDeviceInfo); + safeClose(); + if (listener != null) { + listener.onPortsConnected(null); + } + } + } + } + }, handler); + } + + + /** + * Open a source device and connect its output port to the + * destinationInputPort. + * + * @param sourceDeviceInfo + * @param sourcePortIndex + * @param destinationInputPort + */ + private void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, + final int sourcePortIndex, + final MidiInputPort destinationInputPort, + final OnPortsConnectedListener listener, final Handler handler) { + mMidiManager.openDevice(sourceDeviceInfo, + new MidiManager.OnDeviceOpenedListener() { + @Override + public void onDeviceOpened(MidiDevice device) { + if (device == null) { + Log.e(MidiConstants.TAG, + "could not open " + sourceDeviceInfo); + safeClose(); + if (listener != null) { + listener.onPortsConnected(null); + } + } else { + Log.i(MidiConstants.TAG, + "connectToDevicePort opened " + + sourceDeviceInfo); + // Device was opened so connect the ports. + mSourceDevice = device; + mConnection = device.connectPorts( + destinationInputPort, sourcePortIndex); + if (mConnection == null) { + Log.e(MidiConstants.TAG, "could not connect to " + + sourceDeviceInfo); + safeClose(); + } + if (listener != null) { + listener.onPortsConnected(mConnection); + } + } + } + }, handler); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortSelector.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortSelector.java new file mode 100644 index 00000000..39f983e3 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortSelector.java @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.app.Activity; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiDeviceStatus; +import android.media.midi.MidiManager; +import android.media.midi.MidiManager.DeviceCallback; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Spinner; + +import java.util.HashSet; + +/** + * Base class that uses a Spinner to select available MIDI ports. + */ +public abstract class MidiPortSelector extends DeviceCallback { + private int mType = MidiDeviceInfo.PortInfo.TYPE_INPUT; + protected ArrayAdapter mAdapter; + protected HashSet mBusyPorts = new HashSet(); + private Spinner mSpinner; + protected MidiManager mMidiManager; + protected Activity mActivity; + private MidiPortWrapper mCurrentWrapper; + + /** + * @param midiManager + * @param activity + * @param spinnerId + * ID from the layout resource + * @param type + * TYPE_INPUT or TYPE_OUTPUT + */ + public MidiPortSelector(MidiManager midiManager, Activity activity, + int spinnerId, int type) { + mMidiManager = midiManager; + mActivity = activity; + mType = type; + mAdapter = new ArrayAdapter(activity, + android.R.layout.simple_spinner_item); + mAdapter.setDropDownViewResource( + android.R.layout.simple_spinner_dropdown_item); + mAdapter.add(new MidiPortWrapper(null, 0, 0)); + + mSpinner = (Spinner) activity.findViewById(spinnerId); + mSpinner.setOnItemSelectedListener( + new AdapterView.OnItemSelectedListener() { + + public void onItemSelected(AdapterView parent, View view, + int pos, long id) { + mCurrentWrapper = mAdapter.getItem(pos); + onPortSelected(mCurrentWrapper); + } + + public void onNothingSelected(AdapterView parent) { + onPortSelected(null); + mCurrentWrapper = null; + } + }); + mSpinner.setAdapter(mAdapter); + + mMidiManager.registerDeviceCallback(this, + new Handler(Looper.getMainLooper())); + + MidiDeviceInfo[] infos = mMidiManager.getDevices(); + for (MidiDeviceInfo info : infos) { + onDeviceAdded(info); + } + } + + /** + * Set to no port selected. + */ + public void clearSelection() { + mSpinner.setSelection(0); + } + + private int getInfoPortCount(final MidiDeviceInfo info) { + int portCount = (mType == MidiDeviceInfo.PortInfo.TYPE_INPUT) + ? info.getInputPortCount() : info.getOutputPortCount(); + return portCount; + } + + @Override + public void onDeviceAdded(final MidiDeviceInfo info) { + int portCount = getInfoPortCount(info); + for (int i = 0; i < portCount; ++i) { + MidiPortWrapper wrapper = new MidiPortWrapper(info, mType, i); + mAdapter.add(wrapper); + Log.i(MidiConstants.TAG, wrapper + " was added"); + mAdapter.notifyDataSetChanged(); + } + } + + @Override + public void onDeviceRemoved(final MidiDeviceInfo info) { + int portCount = getInfoPortCount(info); + for (int i = 0; i < portCount; ++i) { + MidiPortWrapper wrapper = new MidiPortWrapper(info, mType, i); + MidiPortWrapper currentWrapper = mCurrentWrapper; + mAdapter.remove(wrapper); + // If the currently selected port was removed then select no port. + if (wrapper.equals(currentWrapper)) { + clearSelection(); + } + mAdapter.notifyDataSetChanged(); + Log.i(MidiConstants.TAG, wrapper + " was removed"); + } + } + + @Override + public void onDeviceStatusChanged(final MidiDeviceStatus status) { + // If an input port becomes busy then remove it from the menu. + // If it becomes free then add it back to the menu. + if (mType == MidiDeviceInfo.PortInfo.TYPE_INPUT) { + MidiDeviceInfo info = status.getDeviceInfo(); + Log.i(MidiConstants.TAG, "MidiPortSelector.onDeviceStatusChanged status = " + status + + ", mType = " + mType + + ", activity = " + mActivity.getPackageName() + + ", info = " + info); + // Look for transitions from free to busy. + int portCount = info.getInputPortCount(); + for (int i = 0; i < portCount; ++i) { + MidiPortWrapper wrapper = new MidiPortWrapper(info, mType, i); + if (!wrapper.equals(mCurrentWrapper)) { + if (status.isInputPortOpen(i)) { // busy? + if (!mBusyPorts.contains(wrapper)) { + // was free, now busy + mBusyPorts.add(wrapper); + mAdapter.remove(wrapper); + mAdapter.notifyDataSetChanged(); + } + } else { + if (mBusyPorts.remove(wrapper)) { + // was busy, now free + mAdapter.add(wrapper); + mAdapter.notifyDataSetChanged(); + } + } + } + } + } + } + + /** + * Implement this method to handle the user selecting a port on a device. + * + * @param wrapper + */ + public abstract void onPortSelected(MidiPortWrapper wrapper); + + /** + * Implement this method to clean up any open resources. + */ + public abstract void onClose(); + + /** + * + */ + public void close() { + onClose(); + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortWrapper.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortWrapper.java new file mode 100644 index 00000000..77aa7345 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiPortWrapper.java @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiDeviceInfo.PortInfo; +import android.util.Log; + +// Wrapper for a MIDI device and port description. +public class MidiPortWrapper { + private MidiDeviceInfo mInfo; + private int mPortIndex; + private int mType; + private String mString; + + /** + * Wrapper for a MIDI device and port description. + * @param info + * @param portType + * @param portIndex + */ + public MidiPortWrapper(MidiDeviceInfo info, int portType, int portIndex) { + mInfo = info; + mType = portType; + mPortIndex = portIndex; + } + + private void updateString() { + if (mInfo == null) { + mString = "- - - - - -"; + } else { + StringBuilder sb = new StringBuilder(); + String name = mInfo.getProperties() + .getString(MidiDeviceInfo.PROPERTY_NAME); + if (name == null) { + name = mInfo.getProperties() + .getString(MidiDeviceInfo.PROPERTY_MANUFACTURER) + ", " + + mInfo.getProperties() + .getString(MidiDeviceInfo.PROPERTY_PRODUCT); + } + sb.append("#" + mInfo.getId()); + sb.append(", ").append(name); + PortInfo portInfo = findPortInfo(); + sb.append("[" + mPortIndex + "]"); + if (portInfo != null) { + sb.append(", ").append(portInfo.getName()); + } else { + sb.append(", null"); + } + mString = sb.toString(); + } + } + + /** + * @param info + * @param portIndex + * @return + */ + private PortInfo findPortInfo() { + PortInfo[] ports = mInfo.getPorts(); + for (PortInfo portInfo : ports) { + if (portInfo.getPortNumber() == mPortIndex + && portInfo.getType() == mType) { + return portInfo; + } + } + return null; + } + + public int getPortIndex() { + return mPortIndex; + } + + public MidiDeviceInfo getDeviceInfo() { + return mInfo; + } + + @Override + public String toString() { + if (mString == null) { + updateString(); + } + return mString; + } + + @Override + public boolean equals(Object other) { + if (other == null) + return false; + if (!(other instanceof MidiPortWrapper)) + return false; + MidiPortWrapper otherWrapper = (MidiPortWrapper) other; + if (mPortIndex != otherWrapper.mPortIndex) + return false; + if (mType != otherWrapper.mType) + return false; + if (mInfo == null) + return (otherWrapper.mInfo == null); + return mInfo.equals(otherWrapper.mInfo); + } + + @Override + public int hashCode() { + int hashCode = 1; + hashCode = 31 * hashCode + mPortIndex; + hashCode = 31 * hashCode + mType; + hashCode = 31 * hashCode + mInfo.hashCode(); + return hashCode; + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiTools.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiTools.java new file mode 100644 index 00000000..82e3de4b --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/MidiTools.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi; + +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; + +/** + * Miscellaneous tools for Android MIDI. + */ +public class MidiTools { + + /** + * @return a device that matches the manufacturer and product or null + */ + public static MidiDeviceInfo findDevice(MidiManager midiManager, + String manufacturer, String product) { + for (MidiDeviceInfo info : midiManager.getDevices()) { + String deviceManufacturer = info.getProperties() + .getString(MidiDeviceInfo.PROPERTY_MANUFACTURER); + if ((manufacturer != null) + && manufacturer.equals(deviceManufacturer)) { + String deviceProduct = info.getProperties() + .getString(MidiDeviceInfo.PROPERTY_PRODUCT); + if ((product != null) && product.equals(deviceProduct)) { + return info; + } + } + } + return null; + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/EnvelopeADSR.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/EnvelopeADSR.java new file mode 100644 index 00000000..a29a1933 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/EnvelopeADSR.java @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Very simple Attack, Decay, Sustain, Release envelope with linear ramps. + * + * Times are in seconds. + */ +public class EnvelopeADSR extends SynthUnit { + private static final int IDLE = 0; + private static final int ATTACK = 1; + private static final int DECAY = 2; + private static final int SUSTAIN = 3; + private static final int RELEASE = 4; + private static final int FINISHED = 5; + private static final float MIN_TIME = 0.001f; + + private float mAttackRate; + private float mRreleaseRate; + private float mSustainLevel; + private float mDecayRate; + private float mCurrent; + private int mSstate = IDLE; + + public EnvelopeADSR() { + setAttackTime(0.003f); + setDecayTime(0.08f); + setSustainLevel(0.3f); + setReleaseTime(1.0f); + } + + public void setAttackTime(float time) { + if (time < MIN_TIME) + time = MIN_TIME; + mAttackRate = 1.0f / (SynthEngine.FRAME_RATE * time); + } + + public void setDecayTime(float time) { + if (time < MIN_TIME) + time = MIN_TIME; + mDecayRate = 1.0f / (SynthEngine.FRAME_RATE * time); + } + + public void setSustainLevel(float level) { + if (level < 0.0f) + level = 0.0f; + mSustainLevel = level; + } + + public void setReleaseTime(float time) { + if (time < MIN_TIME) + time = MIN_TIME; + mRreleaseRate = 1.0f / (SynthEngine.FRAME_RATE * time); + } + + public void on() { + mSstate = ATTACK; + } + + public void off() { + mSstate = RELEASE; + } + + @Override + public float render() { + switch (mSstate) { + case ATTACK: + mCurrent += mAttackRate; + if (mCurrent > 1.0f) { + mCurrent = 1.0f; + mSstate = DECAY; + } + break; + case DECAY: + mCurrent -= mDecayRate; + if (mCurrent < mSustainLevel) { + mCurrent = mSustainLevel; + mSstate = SUSTAIN; + } + break; + case RELEASE: + mCurrent -= mRreleaseRate; + if (mCurrent < 0.0f) { + mCurrent = 0.0f; + mSstate = FINISHED; + } + break; + } + return mCurrent; + } + + public boolean isDone() { + return mSstate == FINISHED; + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawOscillator.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawOscillator.java new file mode 100644 index 00000000..c02a6a1a --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawOscillator.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +public class SawOscillator extends SynthUnit { + private float mPhase = 0.0f; + private float mPhaseIncrement = 0.01f; + private float mFrequency = 0.0f; + private float mFrequencyScaler = 1.0f; + private float mAmplitude = 1.0f; + + public void setPitch(float pitch) { + float freq = (float) pitchToFrequency(pitch); + setFrequency(freq); + } + + public void setFrequency(float frequency) { + mFrequency = frequency; + updatePhaseIncrement(); + } + + private void updatePhaseIncrement() { + mPhaseIncrement = 2.0f * mFrequency * mFrequencyScaler / 48000.0f; + } + + public void setAmplitude(float amplitude) { + mAmplitude = amplitude; + } + + public float getAmplitude() { + return mAmplitude; + } + + public float getFrequencyScaler() { + return mFrequencyScaler; + } + + public void setFrequencyScaler(float frequencyScaler) { + mFrequencyScaler = frequencyScaler; + updatePhaseIncrement(); + } + + float incrementWrapPhase() { + mPhase += mPhaseIncrement; + while (mPhase > 1.0) { + mPhase -= 2.0; + } + while (mPhase < -1.0) { + mPhase += 2.0; + } + return mPhase; + } + + @Override + public float render() { + return incrementWrapPhase() * mAmplitude; + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawOscillatorDPW.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawOscillatorDPW.java new file mode 100644 index 00000000..e5d661d5 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawOscillatorDPW.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Band limited sawtooth oscillator. + * This will have very little aliasing at high frequencies. + */ +public class SawOscillatorDPW extends SawOscillator { + private float mZ1 = 0.0f; // delayed values + private float mZ2 = 0.0f; + private float mScaler; // frequency dependent scaler + private final static float VERY_LOW_FREQ = 0.0000001f; + + @Override + public void setFrequency(float freq) { + /* Calculate scaling based on frequency. */ + freq = Math.abs(freq); + super.setFrequency(freq); + if (freq < VERY_LOW_FREQ) { + mScaler = (float) (0.125 * 44100 / VERY_LOW_FREQ); + } else { + mScaler = (float) (0.125 * 44100 / freq); + } + } + + @Override + public float render() { + float phase = incrementWrapPhase(); + /* Square the raw sawtooth. */ + float squared = phase * phase; + float diffed = squared - mZ2; + mZ2 = mZ1; + mZ1 = squared; + return diffed * mScaler * getAmplitude(); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawVoice.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawVoice.java new file mode 100644 index 00000000..3b3e543e --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SawVoice.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Sawtooth oscillator with an ADSR. + */ +public class SawVoice extends SynthVoice { + private SawOscillator mOscillator; + private EnvelopeADSR mEnvelope; + + public SawVoice() { + mOscillator = createOscillator(); + mEnvelope = new EnvelopeADSR(); + } + + protected SawOscillator createOscillator() { + return new SawOscillator(); + } + + @Override + public void noteOn(int noteIndex, int velocity) { + super.noteOn(noteIndex, velocity); + mOscillator.setPitch(noteIndex); + mOscillator.setAmplitude(getAmplitude()); + mEnvelope.on(); + } + + @Override + public void noteOff() { + super.noteOff(); + mEnvelope.off(); + } + + @Override + public void setFrequencyScaler(float scaler) { + mOscillator.setFrequencyScaler(scaler); + } + + @Override + public float render() { + float output = mOscillator.render() * mEnvelope.render(); + return output; + } + + @Override + public boolean isDone() { + return mEnvelope.isDone(); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SimpleAudioOutput.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SimpleAudioOutput.java new file mode 100644 index 00000000..04aa19c0 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SimpleAudioOutput.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +import android.media.AudioFormat; +import android.media.AudioManager; +import android.media.AudioTrack; +import android.util.Log; + +/** + * Simple base class for implementing audio output for examples. + * This can be sub-classed for experimentation or to redirect audio output. + */ +public class SimpleAudioOutput { + + private static final String TAG = "AudioOutputTrack"; + public static final int SAMPLES_PER_FRAME = 2; + public static final int BYTES_PER_SAMPLE = 4; // float + public static final int BYTES_PER_FRAME = SAMPLES_PER_FRAME * BYTES_PER_SAMPLE; + private AudioTrack mAudioTrack; + private int mFrameRate; + + /** + * + */ + public SimpleAudioOutput() { + super(); + } + + /** + * Create an audio track then call play(). + * + * @param frameRate + */ + public void start(int frameRate) { + stop(); + mFrameRate = frameRate; + mAudioTrack = createAudioTrack(frameRate); + // AudioTrack will wait until it has enough data before starting. + mAudioTrack.play(); + } + + public AudioTrack createAudioTrack(int frameRate) { + int minBufferSizeBytes = AudioTrack.getMinBufferSize(frameRate, + AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_FLOAT); + Log.i(TAG, "AudioTrack.minBufferSize = " + minBufferSizeBytes + + " bytes = " + (minBufferSizeBytes / BYTES_PER_FRAME) + + " frames"); + int bufferSize = 8 * minBufferSizeBytes / 8; + int outputBufferSizeFrames = bufferSize / BYTES_PER_FRAME; + Log.i(TAG, "actual bufferSize = " + bufferSize + " bytes = " + + outputBufferSizeFrames + " frames"); + + AudioTrack player = new AudioTrack(AudioManager.STREAM_MUSIC, + mFrameRate, AudioFormat.CHANNEL_OUT_STEREO, + AudioFormat.ENCODING_PCM_FLOAT, bufferSize, + AudioTrack.MODE_STREAM); + Log.i(TAG, "created AudioTrack"); + return player; + } + + public int write(float[] buffer, int offset, int length) { + return mAudioTrack.write(buffer, offset, length, + AudioTrack.WRITE_BLOCKING); + } + + public void stop() { + if (mAudioTrack != null) { + mAudioTrack.stop(); + mAudioTrack = null; + } + } + + public int getFrameRate() { + return mFrameRate; + } + + public AudioTrack getAudioTrack() { + return mAudioTrack; + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SineOscillator.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SineOscillator.java new file mode 100644 index 00000000..c638c344 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SineOscillator.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Sinewave oscillator. + */ +public class SineOscillator extends SawOscillator { + // Factorial constants. + private static final float IF3 = 1.0f / (2 * 3); + private static final float IF5 = IF3 / (4 * 5); + private static final float IF7 = IF5 / (6 * 7); + private static final float IF9 = IF7 / (8 * 9); + private static final float IF11 = IF9 / (10 * 11); + + /** + * Calculate sine using Taylor expansion. Do not use values outside the range. + * + * @param currentPhase in the range of -1.0 to +1.0 for one cycle + */ + public static float fastSin(float currentPhase) { + + /* Wrap phase back into region where results are more accurate. */ + float yp = (currentPhase > 0.5f) ? 1.0f - currentPhase + : ((currentPhase < (-0.5f)) ? (-1.0f) - currentPhase : currentPhase); + + float x = (float) (yp * Math.PI); + float x2 = (x * x); + /* Taylor expansion out to x**11/11! factored into multiply-adds */ + return x * (x2 * (x2 * (x2 * (x2 * ((x2 * (-IF11)) + IF9) - IF7) + IF5) - IF3) + 1); + } + + @Override + public float render() { + // Convert raw sawtooth to sine. + float phase = incrementWrapPhase(); + return fastSin(phase) * getAmplitude(); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SineVoice.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SineVoice.java new file mode 100644 index 00000000..e80d2c7e --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SineVoice.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Replace sawtooth with a sine wave. + */ +public class SineVoice extends SawVoice { + @Override + protected SawOscillator createOscillator() { + return new SineOscillator(); + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthEngine.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthEngine.java new file mode 100644 index 00000000..6cd02a60 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthEngine.java @@ -0,0 +1,284 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +import android.media.midi.MidiReceiver; +import android.util.Log; + +import com.example.android.common.midi.MidiConstants; +import com.example.android.common.midi.MidiEventScheduler; +import com.example.android.common.midi.MidiEventScheduler.MidiEvent; +import com.example.android.common.midi.MidiFramer; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Iterator; + +/** + * Very simple polyphonic, single channel synthesizer. It runs a background + * thread that processes MIDI events and synthesizes audio. + */ +public class SynthEngine extends MidiReceiver { + + private static final String TAG = "SynthEngine"; + + public static final int FRAME_RATE = 48000; + private static final int FRAMES_PER_BUFFER = 240; + private static final int SAMPLES_PER_FRAME = 2; + + private boolean go; + private Thread mThread; + private float[] mBuffer = new float[FRAMES_PER_BUFFER * SAMPLES_PER_FRAME]; + private float mFrequencyScaler = 1.0f; + private float mBendRange = 2.0f; // semitones + private int mProgram; + + private ArrayList mFreeVoices = new ArrayList(); + private Hashtable + mVoices = new Hashtable(); + private MidiEventScheduler mEventScheduler; + private MidiFramer mFramer; + private MidiReceiver mReceiver = new MyReceiver(); + private SimpleAudioOutput mAudioOutput; + + public SynthEngine() { + this(new SimpleAudioOutput()); + } + + public SynthEngine(SimpleAudioOutput audioOutput) { + mReceiver = new MyReceiver(); + mFramer = new MidiFramer(mReceiver); + mAudioOutput = audioOutput; + } + + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + if (mEventScheduler != null) { + if (!MidiConstants.isAllActiveSensing(data, offset, count)) { + mEventScheduler.getReceiver().send(data, offset, count, + timestamp); + } + } + } + + private class MyReceiver extends MidiReceiver { + @Override + public void onSend(byte[] data, int offset, int count, long timestamp) + throws IOException { + byte command = (byte) (data[0] & MidiConstants.STATUS_COMMAND_MASK); + int channel = (byte) (data[0] & MidiConstants.STATUS_CHANNEL_MASK); + switch (command) { + case MidiConstants.STATUS_NOTE_OFF: + noteOff(channel, data[1], data[2]); + break; + case MidiConstants.STATUS_NOTE_ON: + noteOn(channel, data[1], data[2]); + break; + case MidiConstants.STATUS_PITCH_BEND: + int bend = (data[2] << 7) + data[1]; + pitchBend(channel, bend); + break; + case MidiConstants.STATUS_PROGRAM_CHANGE: + mProgram = data[1]; + mFreeVoices.clear(); + break; + default: + logMidiMessage(data, offset, count); + break; + } + } + } + + class MyRunnable implements Runnable { + @Override + public void run() { + try { + mAudioOutput.start(FRAME_RATE); + onLoopStarted(); + while (go) { + processMidiEvents(); + generateBuffer(); + mAudioOutput.write(mBuffer, 0, mBuffer.length); + onBufferCompleted(FRAMES_PER_BUFFER); + } + } catch (Exception e) { + Log.e(TAG, "SynthEngine background thread exception.", e); + } finally { + onLoopEnded(); + mAudioOutput.stop(); + } + } + } + + /** + * This is called form the synthesis thread before it starts looping. + */ + public void onLoopStarted() { + } + + /** + * This is called once at the end of each synthesis loop. + * + * @param framesPerBuffer + */ + public void onBufferCompleted(int framesPerBuffer) { + } + + /** + * This is called form the synthesis thread when it stop looping. + */ + public void onLoopEnded() { + } + + /** + * Assume message has been aligned to the start of a MIDI message. + * + * @param data + * @param offset + * @param count + */ + public void logMidiMessage(byte[] data, int offset, int count) { + String text = "Received: "; + for (int i = 0; i < count; i++) { + text += String.format("0x%02X, ", data[offset + i]); + } + Log.i(TAG, text); + } + + /** + * @throws IOException + * + */ + private void processMidiEvents() throws IOException { + long now = System.nanoTime(); // TODO use audio presentation time + MidiEvent event = (MidiEvent) mEventScheduler.getNextEvent(now); + while (event != null) { + mFramer.send(event.data, 0, event.count, event.getTimestamp()); + mEventScheduler.addEventToPool(event); + event = (MidiEvent) mEventScheduler.getNextEvent(now); + } + } + + /** + * + */ + private void generateBuffer() { + for (int i = 0; i < mBuffer.length; i++) { + mBuffer[i] = 0.0f; + } + Iterator iterator = mVoices.values().iterator(); + while (iterator.hasNext()) { + SynthVoice voice = iterator.next(); + if (voice.isDone()) { + iterator.remove(); + // mFreeVoices.add(voice); + } else { + voice.mix(mBuffer, SAMPLES_PER_FRAME, 0.25f); + } + } + } + + public void noteOff(int channel, int noteIndex, int velocity) { + SynthVoice voice = mVoices.get(noteIndex); + if (voice != null) { + voice.noteOff(); + } + } + + public void allNotesOff() { + Iterator iterator = mVoices.values().iterator(); + while (iterator.hasNext()) { + SynthVoice voice = iterator.next(); + voice.noteOff(); + } + } + + /** + * Create a SynthVoice. + */ + public SynthVoice createVoice(int program) { + // For every odd program number use a sine wave. + if ((program & 1) == 1) { + return new SineVoice(); + } else { + return new SawVoice(); + } + } + + /** + * + * @param channel + * @param noteIndex + * @param velocity + */ + public void noteOn(int channel, int noteIndex, int velocity) { + if (velocity == 0) { + noteOff(channel, noteIndex, velocity); + } else { + mVoices.remove(noteIndex); + SynthVoice voice; + if (mFreeVoices.size() > 0) { + voice = mFreeVoices.remove(mFreeVoices.size() - 1); + } else { + voice = createVoice(mProgram); + } + voice.setFrequencyScaler(mFrequencyScaler); + voice.noteOn(noteIndex, velocity); + mVoices.put(noteIndex, voice); + } + } + + public void pitchBend(int channel, int bend) { + double semitones = (mBendRange * (bend - 0x2000)) / 0x2000; + mFrequencyScaler = (float) Math.pow(2.0, semitones / 12.0); + Iterator iterator = mVoices.values().iterator(); + while (iterator.hasNext()) { + SynthVoice voice = iterator.next(); + voice.setFrequencyScaler(mFrequencyScaler); + } + } + + /** + * Start the synthesizer. + */ + public void start() { + stop(); + go = true; + mThread = new Thread(new MyRunnable()); + mEventScheduler = new MidiEventScheduler(); + mThread.start(); + } + + /** + * Stop the synthesizer. + */ + public void stop() { + go = false; + if (mThread != null) { + try { + mThread.interrupt(); + mThread.join(500); + } catch (InterruptedException e) { + // OK, just stopping safely. + } + mThread = null; + mEventScheduler = null; + } + } +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthUnit.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthUnit.java new file mode 100644 index 00000000..90599e28 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthUnit.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +public abstract class SynthUnit { + + private static final double CONCERT_A_PITCH = 69.0; + private static final double CONCERT_A_FREQUENCY = 440.0; + + /** + * @param pitch + * MIDI pitch in semitones + * @return frequency + */ + public static double pitchToFrequency(double pitch) { + double semitones = pitch - CONCERT_A_PITCH; + return CONCERT_A_FREQUENCY * Math.pow(2.0, semitones / 12.0); + } + + public abstract float render(); +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthVoice.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthVoice.java new file mode 100644 index 00000000..78ba09ac --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/common/midi/synth/SynthVoice.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.common.midi.synth; + +/** + * Base class for a polyphonic synthesizer voice. + */ +public abstract class SynthVoice { + private int mNoteIndex; + private float mAmplitude; + public static final int STATE_OFF = 0; + public static final int STATE_ON = 1; + private int mState = STATE_OFF; + + public SynthVoice() { + mNoteIndex = -1; + } + + public void noteOn(int noteIndex, int velocity) { + mState = STATE_ON; + this.mNoteIndex = noteIndex; + setAmplitude(velocity / 128.0f); + } + + public void noteOff() { + mState = STATE_OFF; + } + + /** + * Add the output of this voice to an output buffer. + * + * @param outputBuffer + * @param samplesPerFrame + * @param level + */ + public void mix(float[] outputBuffer, int samplesPerFrame, float level) { + int numFrames = outputBuffer.length / samplesPerFrame; + for (int i = 0; i < numFrames; i++) { + float output = render(); + int offset = i * samplesPerFrame; + for (int jf = 0; jf < samplesPerFrame; jf++) { + outputBuffer[offset + jf] += output * level; + } + } + } + + public abstract float render(); + + public boolean isDone() { + return mState == STATE_OFF; + } + + public int getNoteIndex() { + return mNoteIndex; + } + + public float getAmplitude() { + return mAmplitude; + } + + public void setAmplitude(float amplitude) { + this.mAmplitude = amplitude; + } + + /** + * @param scaler + */ + public void setFrequencyScaler(float scaler) { + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/midisynth/MainActivity.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/midisynth/MainActivity.java new file mode 100644 index 00000000..92964b48 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/midisynth/MainActivity.java @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midisynth; + +import android.app.ActionBar; +import android.app.Activity; +import android.content.pm.PackageManager; +import android.media.midi.MidiDevice.MidiConnection; +import android.media.midi.MidiDeviceInfo; +import android.media.midi.MidiManager; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; +import android.view.WindowManager; +import android.widget.Toast; +import android.widget.Toolbar; + +import com.example.android.common.midi.MidiOutputPortConnectionSelector; +import com.example.android.common.midi.MidiPortConnector; +import com.example.android.common.midi.MidiTools; + +/** + * Simple synthesizer as a MIDI Device. + */ +public class MainActivity extends Activity { + static final String TAG = "MidiSynthExample"; + + private MidiManager mMidiManager; + private MidiOutputPortConnectionSelector mPortSelector; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + setActionBar((Toolbar) findViewById(R.id.toolbar)); + ActionBar actionBar = getActionBar(); + if (actionBar != null) { + actionBar.setDisplayShowTitleEnabled(false); + } + + if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI)) { + setupMidi(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main, menu); + setKeepScreenOn(menu.findItem(R.id.action_keep_screen_on).isChecked()); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_keep_screen_on: + boolean checked = !item.isChecked(); + setKeepScreenOn(checked); + item.setChecked(checked); + break; + } + return super.onOptionsItemSelected(item); + } + + private void setKeepScreenOn(boolean keepScreenOn) { + if (keepScreenOn) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + private void setupMidi() { + // Setup MIDI + mMidiManager = (MidiManager) getSystemService(MIDI_SERVICE); + + MidiDeviceInfo synthInfo = MidiTools.findDevice(mMidiManager, "AndroidTest", + "SynthExample"); + int portIndex = 0; + mPortSelector = new MidiOutputPortConnectionSelector(mMidiManager, this, + R.id.spinner_synth_sender, synthInfo, portIndex); + mPortSelector.setConnectedListener(new MyPortsConnectedListener()); + } + + private void closeSynthResources() { + if (mPortSelector != null) { + mPortSelector.close(); + } + } + + // TODO A better way would be to listen to the synth server + // for open/close events and then disable/enable the spinner. + private class MyPortsConnectedListener + implements MidiPortConnector.OnPortsConnectedListener { + @Override + public void onPortsConnected(final MidiConnection connection) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (connection == null) { + Toast.makeText(MainActivity.this, + R.string.error_port_busy, Toast.LENGTH_SHORT) + .show(); + mPortSelector.clearSelection(); + } else { + Toast.makeText(MainActivity.this, + R.string.port_open_ok, Toast.LENGTH_SHORT) + .show(); + } + } + }); + } + } + + @Override + public void onDestroy() { + closeSynthResources(); + super.onDestroy(); + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/midisynth/MidiSynthDeviceService.java b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/midisynth/MidiSynthDeviceService.java new file mode 100644 index 00000000..b9f25eeb --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/java/com/example/android/midisynth/MidiSynthDeviceService.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.midisynth; + +import android.media.midi.MidiDeviceService; +import android.media.midi.MidiDeviceStatus; +import android.media.midi.MidiReceiver; + +import com.example.android.common.midi.synth.SynthEngine; + +public class MidiSynthDeviceService extends MidiDeviceService { + + private static final String TAG = MainActivity.TAG; + private SynthEngine mSynthEngine = new SynthEngine(); + private boolean mSynthStarted = false; + + @Override + public void onCreate() { + super.onCreate(); + } + + @Override + public void onDestroy() { + mSynthEngine.stop(); + super.onDestroy(); + } + + @Override + public MidiReceiver[] onGetInputPortReceivers() { + return new MidiReceiver[]{mSynthEngine}; + } + + /** + * This will get called when clients connect or disconnect. + */ + @Override + public void onDeviceStatusChanged(MidiDeviceStatus status) { + if (status.isInputPortOpen(0) && !mSynthStarted) { + mSynthEngine.start(); + mSynthStarted = true; + } else if (!status.isInputPortOpen(0) && mSynthStarted) { + mSynthEngine.stop(); + mSynthStarted = false; + } + } + +} diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/drawable-hdpi/tile.9.png b/prebuilts/gradle/MidiSynth/Application/src/main/res/drawable-hdpi/tile.9.png new file mode 100644 index 0000000000000000000000000000000000000000..135862883e26eddce2b19db021adf62e10357ad0 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0y~yVBlk5U=ZS9V_;y&j(Km$z`!6`;u=vBoS#-wo>-L1 z;Fyx1l&avFo0y&&l$w}QS$HzlhJk@0&C|s(q~cc6pa1{unavKIIKeTE;goUGRQAl2 zq$Hy>1;#(WzrWWB;1_0I$*`oI_3RR37LyqcbN|mTd7aQUVeLozbqPyn_8$0=v}Aqn zldP13V*V`*C#snR`kmdCz5WP$)t%^KWa44C{6H?Vv+L*@1_lNOPgg&ebxsLQ03X#y ARsaA1 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/layout/main.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/layout/main.xml new file mode 100644 index 00000000..6b9e2c7b --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/layout/main.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/menu/main.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/menu/main.xml new file mode 100644 index 00000000..33093f0a --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/menu/main.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/mipmap-hdpi/ic_launcher.png b/prebuilts/gradle/MidiSynth/Application/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..38250e7f20f5d75d97cbe7ae44dfb877096186b5 GIT binary patch literal 3961 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 literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values-sw600dp/template-dimens.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values-sw600dp/template-dimens.xml new file mode 100644 index 00000000..22074a2b --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values-sw600dp/template-dimens.xml @@ -0,0 +1,24 @@ + + + + + + + @dimen/margin_huge + @dimen/margin_medium + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values-sw600dp/template-styles.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values-sw600dp/template-styles.xml new file mode 100644 index 00000000..03d19741 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values-sw600dp/template-styles.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values-v11/template-styles.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values-v11/template-styles.xml new file mode 100644 index 00000000..8c1ea66f --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values-v11/template-styles.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values/base-strings.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/base-strings.xml new file mode 100644 index 00000000..d38815ff --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/base-strings.xml @@ -0,0 +1,30 @@ + + + + + MidiSynth + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values/colors.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/colors.xml new file mode 100644 index 00000000..4d2204f9 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/colors.xml @@ -0,0 +1,26 @@ + + + + #4CAF50 + #388E3C + #C8E6C9 + #FFEB3B + #212121 + #727272 + #FFFFFF + #B6B6B6 + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values/strings.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/strings.xml new file mode 100644 index 00000000..76a8fa26 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/strings.xml @@ -0,0 +1,25 @@ + + + + Select Sender for Synth + Selected port is in use or unavailable. + Port opened OK. + + "none" + + Keep screen on + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values/styles.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/styles.xml new file mode 100644 index 00000000..30d64556 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/styles.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values/template-dimens.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/template-dimens.xml new file mode 100644 index 00000000..39e710b5 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/template-dimens.xml @@ -0,0 +1,32 @@ + + + + + + + 4dp + 8dp + 16dp + 32dp + 64dp + + + + @dimen/margin_medium + @dimen/margin_medium + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/values/template-styles.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/template-styles.xml new file mode 100644 index 00000000..6e7d593d --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/values/template-styles.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/Application/src/main/res/xml/synth_device_info.xml b/prebuilts/gradle/MidiSynth/Application/src/main/res/xml/synth_device_info.xml new file mode 100644 index 00000000..405e87e1 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/Application/src/main/res/xml/synth_device_info.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/CONTRIBUTING.md b/prebuilts/gradle/MidiSynth/CONTRIBUTING.md new file mode 100644 index 00000000..faa8b5c6 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# How to become a contributor and submit your own code + +## Contributor License Agreements + +We'd love to accept your sample apps and patches! Before we can take them, we +have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement (CLA). + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual CLA] + (https://cla.developers.google.com). + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA] + (https://cla.developers.google.com). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The repo owner will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Ensure that your code adheres to the existing style in the sample to which + you are contributing. Refer to the + [Android Code Style Guide] + (https://source.android.com/source/code-style.html) for the + recommended coding standards for this organization. +1. Ensure that your code has an appropriate set of unit tests which all pass. +1. Submit a pull request. + diff --git a/prebuilts/gradle/MidiSynth/LICENSE b/prebuilts/gradle/MidiSynth/LICENSE new file mode 100644 index 00000000..4f229463 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/LICENSE @@ -0,0 +1,647 @@ +Apache License +-------------- + + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +All image and audio files (including *.png, *.jpg, *.svg, *.mp3, *.wav +and *.ogg) are licensed under the CC-BY-NC license. All other files are +licensed under the Apache 2 license. + +CC-BY-NC License +---------------- + +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the "Licensor." Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/prebuilts/gradle/MidiSynth/README.md b/prebuilts/gradle/MidiSynth/README.md new file mode 100644 index 00000000..e0d67335 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/README.md @@ -0,0 +1,72 @@ + +Android MidiSynth Sample +=================================== + +Sample demonstrating how to use the MIDI API to receive and play MIDI messages coming from an +attached input device (MIDI keyboard). + +Introduction +------------ + +The Android MIDI API ([android.media.midi][1]) allows developers to connect a MIDI device to +an Android device and process MIDI messages coming from it. + +This sample demonstrates some basic features of the MIDI API, such as: + +- Enumeration of currently available devices (including name, vendor, capabilities, etc) +- Notification when MIDI devices are plugged in or unplugged +- Receiving and processing MIDI messages + +This sample contains a simple implementation of an oscillator and note playback. + +[1]: https://developer.android.com/reference/android/media/midi/package-summary.html + +Pre-requisites +-------------- + +- Android SDK v23 +- Android Build Tools v23.0.0 +- Android Support Repository + +Screenshots +------------- + +Screenshot + +Getting Started +--------------- + +This sample uses the Gradle build system. To build this project, use the +"gradlew build" command or use "Import Project" in Android Studio. + +Support +------- + +- Google+ Community: https://plus.google.com/communities/105153134372062985968 +- Stack Overflow: http://stackoverflow.com/questions/tagged/android + +If you've found an error in this sample, please file an issue: +https://github.com/googlesamples/android-MidiSynth + +Patches are encouraged, and may be submitted by forking this project and +submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details. + +License +------- + +Copyright 2014 The Android Open Source Project, Inc. + +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. diff --git a/prebuilts/gradle/MidiSynth/build.gradle b/prebuilts/gradle/MidiSynth/build.gradle new file mode 100644 index 00000000..1901ba93 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/build.gradle @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 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 F#>hI#1eA}4;+Q?vY~ z7xjeg^a^++di%kW&eTh5*w$2DH1zm+D)SNh7P;8+w~V%Dr+JT37ha^q$Qxl3%R(uAM9(p33uZ5r^+FiEl18QzjnX*OO?s`0#@2 zpFHm;CA}3&6Rgbp+sP5!#v1M7c#Ki5Q{$Ayk>y5q&U5lk@Jh~q%*}Sy?*3fp5!`n>Gt~Fz{H{O#0=C~f61Pd-pI16n)@|12CG3rH7Rw(A z@h_akuDCMtkKVTHSrSdNqBB>TT+>;x>VV?7mJ0L zOC0J=^84_8p+nhqrF%gaQ+8%<<@)nwl6{}$#Ec)Z0(~ZzxW!*Ae#Y}-y=c$<>a6n@ zHQXlUDKRDcAE;Z_$N%@rHj7hvbJ+JU?PFvsU=(19laaA}aw<{pWE#u*oqnHF-l|&~ z$^DSs=lef`^WT+a4o)6Z1tR*UUDzbEbYX;3!Q-3j6gjSZyO@5{GVAxr&z0;49d1TT zHeT*dnDXtFBm33ag;Ba6E;&wmUpH07UFHw(+S&dJe?!EtCWMAKUVq+_eE8&oEa%;Y z_Vs}xx+>d`S^g8cT1m`1R37_6)M>72i7)G+M)?b(OA}vk ztpBm`qw={+C*=926zmG;U~gepZMnO$zOJ*Vq>eq--bH;|;-kVQrJA`(J;5cjMQ+w! zD!5YIlF?KWo@wSVE&oFOq($!!<@zMvdYHNT&}Ff84}I0o>Bb!AakYr&RQQmpzBf1; zeB#2k?YeK3md1!UYKSk?J=Gi z)P8f9JpV>-sfcII%(<4o=f1DGZ)v>$f6af!1VL@hlz@OhAH^mo{$B?37d>t3n(e8x zWJ1HdW4bzOh0%5ISM1Q<|NY6PC6D%Xv2zJkpUEi(9;!vJ$%wylP6hWYChx%Dg-)T&Df4_erT=6R#G?Zst<+ zTfJ_!n)!^#uQQHczjtlNdDo5xlkn|3XK&8Y-+uU8MPKA^%l}3?C!B({gm^4v`;_R*Y>VM`yT7w z=;c$}wB0w}v;3tnwZuI$A-0+8|H*x;55;Di?5*{=1R5<`)Ob?wQh9@)Adiw?b(ZDY z>6$@qQ_38cRd6h==s9ssaZ$YB?>CFrU(mX*sG;m;sl4Sflg+xME6?Q*Z=JAOvPf5S zzhYg(y=0Ybn_ekSvhR);uy*2?td(yIR)6?H@RH!4rf(}_3ul-#WvvWZJpae>l}>WP zvR9|yx_Vqw?&Ip$C6oR?n)G#w&O`R)){`D57G0Pib5zYxG^)Z)Ff)9z%4hc%y$?#u zwVzE;vsB&}ATRyt-T8X?iG}d1@P{4M3?5?+E8$}m3bR=my zopxWyHj!UcCCNj|WMyVk{`R*~;@fvWdv~pW{v-VlN7;Q{dR6{0)K4kQi_G%O7VFfX zJ9nn>bD#HT?*9Gx`Zqs=_l+LKK2KgNqfeP$i|0#AEi+uK*gdB!l2_|ls7^*lV&Kt9 zT};ks zsXDyH_r2cX!!r{qHq>l8vmnRXG|Nnpx%#ZzQ33yoql->BTwGbS`b?{4t^JA(X2&TZ)SX| z2#S5dx^jVXtFf#}mo`+n$$e_NBj`S#MX zx^*Q6elr)CFY$YSPJr!c7xT#_F;!hH3opp=UP#fO7_Q_LgS=nPlAWxu%~INL6nREa$<54vkNHU@ z$-lg)XtH{28Kvx1_n*ck{@aD2HKjj-bu0EhYdv9{L{AY`f0lVW7Ltbi?4dc zUrU?_5aHs|y_cTLBbloeY4s;J?g#Uqz@%wTntILOmYuBpyw9Ic-F|=keTD+=<7P59 z3OWw-72ByhDHY5~=z4y`+i>~4%_>a(L63HCeRMj-E9s^33)`AwPnRIc&oz5r6SZrSM`m8&iv$8xD4}1%_tFnw~Cq`zmp6T90Y>Ie~q@mo2mFVLSa` zV&SXAxQ-b%n?jz>zw+qVQ(>h?RS%sCcFl^Bb-nPv-=SdVtqT2&iGq5or(bt$Sisu7 zK36e<+57FStn`&t>^WPr4(ux)o zU1Io>nSr5(o5-WToKn;Bi&EV(i;7EvOOv2c1gVUVhP^Jj>?ZQ>TG%GXumgpKUbot2 zJ(%!A?5Luuc|s$`%}(UTO99U94!^6dqj z^9yRU)U;(*Gku%MBRSo29nV9ptgadQ1MF)gjaT@&`qozHFIi zZ(Wo0<2dZLIqurq+fh5+rg_|3m9f?Ltl5!0sZ&^D+g_}yJHP3xcH7;8uCqm_)tig% znv_fS&^aLeYrEP#%x!8=)d>0c_BwuS*XYLr~UipK7Hh=lK(*W!j=vBtG-F^ zcw4c=d6kp)vBaBC5{qP9*$iwdv{ybkZ}oav^n;IUGBz!mncVSxbHAfrl<#h*Or@fN zE!@V+Pr?eglDXVI>K)H*J2NpwWcGWF8%L(g#A|9Kb}K$pU)Z$!$E?JY=9gqYH)h%z zRjWK+**r~T&cT+1ud>ds9x!N^ZH>I{`~1`6u6w_}q(|u`uibLu3WxaTB0V$Hn=@u5 za=d?Xj*LgDy(<{&=JlyY6%Co#!p$t6xf(eqHu0K;(Qa zn^sEb-9(G)o|jKg39q*Ht>&4=(tNT`BByY|yoI%|{$25&x;>!ED!XL=thV@cC($`U zo7YX$@wTnFXB)G!Y-``Q8`_WlerHR)@%;LO|NKApAMuqxs-5&@LDwbgp4P*Q_FUHJ zXjt*>%lE4OwCfpiOX572)j2E7^m?!GgZnIV#r#{3lX`uV8&n07JZl`b1x6{`96M=# zM=&&cli{4BJEvW*H*8^i^)=RGX~?X%2?@$SwVC`4XZ(}3Y1nVDMW@%ZUitOR{=YpZ z^qvHDEnBGaaH{%l2|d?7@A^kBnlm)*Tr1d>&zB2ocFN8)d@1^Au6pjS^uQXM&aj z|6yWau*59IgDZm5@kVV5JV;uFNggY*Ml z*3FW;JW)kh?XuH7uka>r`2+1j>X`y79gjrLG5&o1|JgY^_tfv%$9RA-XSxD^uTqZ4 z!pN4hOgW+pTovk1*{Gf8Ou6-Ig2T4c$2}I@N|(Fmb62pd+Nx+u(EH+UD`%|;6Tc&C z=4@y<5ICRv_7+xI>x?KqWA;Rai+hFdxGPGs#lG8hMcTc)Y^Qm!QkO83sdQ=*SAOlu z9qtP*Ui;l&;^y04was!uQ{}cz+v*~!H8hJ0d=ku4^)|40hw1SC2#KgTxv1;w{wZlL ztRV{+T$z@*FOWGBa6DY3@iC)U?z)V+O>2+In^-!&&8k?t_2LHJwU>(zXM8)un|@{H zqC5eMKgUg1-i}?M=hi54WzzoQ4eXX*9|WFe>O8mT(I%;xTEbI{f9pHU3r*+r(t4J> zkuOzLySVw3w&6amt1RzS3YP8rvZcXn|H7I2CAzFicBoL7Sc`7%kAL!3Xm$I|$T1zESvUi3#Tx2SU)oEqv z_x5bx{O|Ac=lTrn1+o!0$|f8w;|pa!zcG1n-eSiS`}k4>_A92m>J@If+1VzSxK`TZ z{fD9}->+og1^@JPy$p6`L}Sr5~Iz;lIX}8^L=cj_ir}p|Eth)k2AW+j}{s z%1?Li6FPjMm_6}9*`kXcCl4!Cbx!oJ=q$d%-G^OQ}>FJp^hq6?bU&whQb+uX;Wxt+e&Z{qaR-xb3AzIFloe#6O^FEw#( znD{vI&GuPl-?(nLpLFZqu)W75?A!Z-zF*JpDX8s<`FDjgy1Vsm#x%dCgnkzri_6ou zZ{j$(=EMA{t#vsPQFi@nsuOz*I*{67iYlC zT&_#cw49yIPtSaBu>W3Dq-TQJr70q6AKyKa>tMY8QGv0p!}mq^#}~6=jXQttJ-f!_ zXiw0IMQt@knl(qS%{VbjbK9~X5!Y*UY+O|}tEWB5f5>;+H>F~ETj=G7T~hBh*PanO zdIznS-)}a@+=iKf;S?v<@lMPn1)j~q(aw19C+sNjKR4Q9hg^V`!aw&lEVmAARbUdk z5Tv8fniL@Pr!4n;RlvIwUj^b1vVX8OxVT`F#QvE-H0)XmzpZoFI7Q6q(e$}DXWqPj z?#$UUZ`a%3-^bkXXlF;*iL+Z=T(&rhd78aB$|1)gA^KrL_AytE83G?X4lLo&U*_6T zq4S`#!NPg*S2t}oC7!*ShtHg@3_d9uVi|qmNz2BqOJD4qvTU_>S7gXpiAevfU1`3? zXTDxH`+xnA*z;3wl9;o3=Cw==mb|qip)y^2@htr*K8-5>rc4aw%I;eEvDWj&!*@m{ zN8+Pb&Af7E(bip)H64vSxOc6a)!7uJvns_j?DFvgnHD0;&8u@Ny|T2F6Eh6IgnApU z{jzPT48^@ic* ztf0rDmqQbck6czh*sm>AlOg^g#7U@_>6xm|14(E9wK)bpS4y5N-M3PD_b*M=3$ebc z583jHj!#=rmL0btf_2~OSxFnt%__=j+qJUh^xddu-m?MG0oV^mh?aj&VWTeqOOqT)=m3wU~4K z&j}vsW>?mfR&0w=NoaMu+IivLe6u*cg|erg`|LftJL39^)#7izv$CDPDOxwJGV|5n z^;cTYH+RYXI=%g3b;Hk^ngxQ-+q%!2&$=$VW%lyDvsZ}l)V66$aJ@hLcj7m_l1sNv zmF5WX=5WQC_3BM3o!IxLQ1m+E?8PTtjM}10W;g$0^!*^v%Wi-0E9<-u;U+siF!!Er zwtr~fut84AH+aI^#g*?F9$9U-ZYZ}EQJZK|u_EWDb~hPod#=!EXz%`jbaZT95g2m7RHG@yxAm#?ey;T9peJnOTnK z=w-N{-6?RWEQ~$3M=?g(%2_gFsd%`#XP)rh$ATB#MfRy#2_BXB5v<)M@p7-r@&odj zfoCdWB2;F5>ZoT#E$6?r^c`|%U|?`%U|^7EU|@ir?Vg;IN%pz!+l&muu$=4uR15hu zcSa@=W-bN>4h{xh>lP;lr1Q)gJs`}|C5`PYSZ(x#`2o_uL^toYhpQGV8v{cCH)N_9VO}9CR`Xmd zl5=iHY60{T zZRh;Fw9NFLm9ckzSm8v3937#QX%Ffb^<3c}A$28OAe=s|0uh1E2t{QMHoMFj<*8_I)A5)s!EpeKv8=-VG1xfmF>ia}0p zhq-l0qoY1nqoJ|pT9KMuT9S_=EudedjxhCvC00{$T&s@mTJ$?J5$2k@U^N#Sthll@ z`fX_l^SZsTnuikgxb99vcQyK5TnJkx`(U*Ne@+fXyJG}l99IauR)Q96SZgL^_koV| zK))gcVc?t)+!uzRn*!3s1R@w17(f?oK$xKVVNNKDFG0tIple3Ib_1drRCt`m)C`;M zM`{M64SAv)kA6P^!g$6=47VW}8-Q|K0lKN^Hvu3_eM^j~cc<)F75?O?q&65e6sRABifJ8TR!7RF?(N`lPEU27D zgar_@A*B>{AD}M-Ls*bF6T<>nEkVp+D!Nb5S6Lt|%ASW|5k_)_cm%r_&}Xg@CKoQm zFc~v3L5#*ekB#mL^a(?RRjEtxSw)~OMV|yi82e%=K4ZbbRHTAuN(|it=wsywo3vM9 z*o5BXM+!Rv9zq|#MOgE1HHI}v#zH*=q41P_=!1C(^8?orVLmwDVIA5-4=?lq3WP<^ eHo_Z*xP~hNyg|J~1_pfweTEDH28OInAngFr(P@+b literal 0 HcmV?d00001 diff --git a/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..afb32963 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-bin.zip diff --git a/prebuilts/gradle/MidiSynth/gradlew b/prebuilts/gradle/MidiSynth/gradlew new file mode 100755 index 00000000..91a7e269 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/prebuilts/gradle/MidiSynth/gradlew.bat b/prebuilts/gradle/MidiSynth/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/prebuilts/gradle/MidiSynth/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/prebuilts/gradle/MidiSynth/screenshots/1-main.png b/prebuilts/gradle/MidiSynth/screenshots/1-main.png new file mode 100644 index 0000000000000000000000000000000000000000..43a4f804214855eee38a728c4cf06a66582150b9 GIT binary patch literal 38043 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

`STM~MF;$())k3Lj9`8wN#(c$5{ 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 + android:layout_height="match_parent" + tools:openDrawer="start" > @@ -44,5 +47,6 @@ android:layout_gravity="left|start" android:choiceMode="singleChoice" android:divider="@null" + app:layoutManager="LinearLayoutManager" /> - \ No newline at end of file + diff --git a/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml index 0acbb93b..050b0515 100644 --- a/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml +++ b/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:theme="@style/Theme.AppCompat.Light" > + android:theme="@style/AppTheme" > diff --git a/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml index bfae9b92..1f7ea6a1 100644 --- a/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml +++ b/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml @@ -28,7 +28,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:theme="@style/Theme.AppCompat.Light"> + android:theme="@style/AppTheme"> diff --git a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java index 28f91274..e86ac3f9 100644 --- a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java +++ b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java @@ -23,7 +23,6 @@ import android.location.Location; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; @@ -79,8 +78,6 @@ public class AttractionListFragment extends Fragment { (AttractionsRecyclerView) view.findViewById(android.R.id.list); recyclerView.setEmptyView(view.findViewById(android.R.id.empty)); recyclerView.setHasFixedSize(true); - recyclerView.setLayoutManager(new GridLayoutManager( - getActivity(), getResources().getInteger(R.integer.list_columns))); recyclerView.setAdapter(mAdapter); return view; diff --git a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/layout/fragment_main.xml b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/layout/fragment_main.xml index 94d110ab..c92a2a81 100644 --- a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/layout/fragment_main.xml +++ b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/res/layout/fragment_main.xml @@ -16,6 +16,7 @@ + android:scrollbars="vertical" + app:layoutManager="GridLayoutManager" + app:spanCount="@integer/list_columns" /> Date: Sat, 29 Aug 2015 00:23:59 -0700 Subject: [PATCH 05/25] Sync sample prebuilts for mnc-docs Synced to //developers/samples/android commit 7c1cbd61d1dea342322530bee4228d0d86bdeca1. Change-Id: I507ed2aea641db12e418dca4077a7af2cf407f3f --- .../Camera2Basic/Application/build.gradle | 3 +- .../camera2basic/Camera2BasicFragment.java | 173 ++++++++++---- .../src/main/res/values/strings.xml | 2 + .../Camera2Raw/Application/build.gradle | 3 +- .../camera2raw/Camera2RawFragment.java | 220 ++++++++++++++---- .../src/main/res/values/strings.xml | 1 + .../Camera2Video/Application/build.gradle | 3 +- .../camera2video/Camera2VideoFragment.java | 132 ++++++++++- .../src/main/res/values/strings.xml | 2 + 9 files changed, 430 insertions(+), 109 deletions(-) diff --git a/prebuilts/gradle/Camera2Basic/Application/build.gradle b/prebuilts/gradle/Camera2Basic/Application/build.gradle index 7292999f..77d3fd41 100644 --- a/prebuilts/gradle/Camera2Basic/Application/build.gradle +++ b/prebuilts/gradle/Camera2Basic/Application/build.gradle @@ -19,6 +19,7 @@ dependencies { compile "com.android.support:support-v4:23.0.0" compile "com.android.support:support-v13:23.0.0" compile "com.android.support:cardview-v7:23.0.0" + compile 'com.android.support:appcompat-v7:23.0.0' } // The sample build uses multiple directories to @@ -35,7 +36,7 @@ android { defaultConfig { minSdkVersion 21 - targetSdkVersion 22 + targetSdkVersion 23 } compileOptions { diff --git a/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java b/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java index 020ca14d..4bf85343 100644 --- a/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java +++ b/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java @@ -16,6 +16,7 @@ package com.example.android.camera2basic; +import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -23,6 +24,7 @@ import android.app.DialogFragment; import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.ImageFormat; import android.graphics.Matrix; @@ -43,7 +45,8 @@ import android.media.ImageReader; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; -import android.os.Message; +import android.support.annotation.NonNull; +import android.support.v13.app.FragmentCompat; import android.util.Log; import android.util.Size; import android.util.SparseIntArray; @@ -66,12 +69,15 @@ import java.util.List; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; -public class Camera2BasicFragment extends Fragment implements View.OnClickListener { +public class Camera2BasicFragment extends Fragment + implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback { /** * Conversion from screen rotation to JPEG orientation. */ private static final SparseIntArray ORIENTATIONS = new SparseIntArray(); + private static final int REQUEST_CAMERA_PERMISSION = 1; + private static final String FRAGMENT_DIALOG = "dialog"; static { ORIENTATIONS.append(Surface.ROTATION_0, 90); @@ -94,14 +100,17 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen * Camera state: Waiting for the focus to be locked. */ private static final int STATE_WAITING_LOCK = 1; + /** * Camera state: Waiting for the exposure to be precapture state. */ private static final int STATE_WAITING_PRECAPTURE = 2; + /** * Camera state: Waiting for the exposure state to be something other than precapture. */ private static final int STATE_WAITING_NON_PRECAPTURE = 3; + /** * Camera state: Picture was taken. */ @@ -148,17 +157,16 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen /** * A {@link CameraCaptureSession } for camera preview. */ - private CameraCaptureSession mCaptureSession; + /** * A reference to the opened {@link CameraDevice}. */ - private CameraDevice mCameraDevice; + /** * The {@link android.util.Size} of camera preview. */ - private Size mPreviewSize; /** @@ -167,7 +175,7 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen private final CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() { @Override - public void onOpened(CameraDevice cameraDevice) { + public void onOpened(@NonNull CameraDevice cameraDevice) { // This method is called when the camera is opened. We start camera preview here. mCameraOpenCloseLock.release(); mCameraDevice = cameraDevice; @@ -175,14 +183,14 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } @Override - public void onDisconnected(CameraDevice cameraDevice) { + public void onDisconnected(@NonNull CameraDevice cameraDevice) { mCameraOpenCloseLock.release(); cameraDevice.close(); mCameraDevice = null; } @Override - public void onError(CameraDevice cameraDevice, int error) { + public void onError(@NonNull CameraDevice cameraDevice, int error) { mCameraOpenCloseLock.release(); cameraDevice.close(); mCameraDevice = null; @@ -303,43 +311,36 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } @Override - public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, - CaptureResult partialResult) { + public void onCaptureProgressed(@NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull CaptureResult partialResult) { process(partialResult); } @Override - public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, - TotalCaptureResult result) { + public void onCaptureCompleted(@NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull TotalCaptureResult result) { process(result); } }; - /** - * A {@link Handler} for showing {@link Toast}s. - */ - private Handler mMessageHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - Activity activity = getActivity(); - if (activity != null) { - Toast.makeText(activity, (String) msg.obj, Toast.LENGTH_SHORT).show(); - } - } - }; - /** * Shows a {@link Toast} on the UI thread. * * @param text The message to show */ - private void showToast(String text) { - // We show a Toast by sending request message to mMessageHandler. This makes sure that the - // Toast is shown on the UI thread. - Message message = Message.obtain(); - message.obj = text; - mMessageHandler.sendMessage(message); + private void showToast(final String text) { + final Activity activity = getActivity(); + if (activity != null) { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(activity, text, Toast.LENGTH_SHORT).show(); + } + }); + } } /** @@ -355,7 +356,7 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen */ private static Size chooseOptimalSize(Size[] choices, int width, int height, Size aspectRatio) { // Collect the supported resolutions that are at least as big as the preview Surface - List bigEnough = new ArrayList(); + List bigEnough = new ArrayList<>(); int w = aspectRatio.getWidth(); int h = aspectRatio.getHeight(); for (Size option : choices) { @@ -375,9 +376,7 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } public static Camera2BasicFragment newInstance() { - Camera2BasicFragment fragment = new Camera2BasicFragment(); - fragment.setRetainInstance(true); - return fragment; + return new Camera2BasicFragment(); } @Override @@ -422,6 +421,28 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen super.onPause(); } + private void requestCameraPermission() { + if (FragmentCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { + new ConfirmationDialog().show(getChildFragmentManager(), FRAGMENT_DIALOG); + } else { + FragmentCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, + REQUEST_CAMERA_PERMISSION); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + if (requestCode == REQUEST_CAMERA_PERMISSION) { + if (grantResults.length != 1 || grantResults[0] != PackageManager.PERMISSION_GRANTED) { + ErrorDialog.newInstance(getString(R.string.request_permission)) + .show(getChildFragmentManager(), FRAGMENT_DIALOG); + } + } else { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + } + /** * Sets up member variables related to camera. * @@ -437,13 +458,16 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen = manager.getCameraCharacteristics(cameraId); // We don't use a front facing camera in this sample. - if (characteristics.get(CameraCharacteristics.LENS_FACING) - == CameraCharacteristics.LENS_FACING_FRONT) { + Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING); + if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) { continue; } StreamConfigurationMap map = characteristics.get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); + if (map == null) { + continue; + } // For still image captures, we use the largest available size. Size largest = Collections.max( @@ -478,7 +502,8 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } catch (NullPointerException e) { // Currently an NPE is thrown when the Camera2API is used but not supported on the // device this code runs. - new ErrorDialog().show(getFragmentManager(), "dialog"); + ErrorDialog.newInstance(getString(R.string.camera_error)) + .show(getChildFragmentManager(), FRAGMENT_DIALOG); } } @@ -486,6 +511,11 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen * Opens the camera specified by {@link Camera2BasicFragment#mCameraId}. */ private void openCamera(int width, int height) { + if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED) { + requestCameraPermission(); + return; + } setUpCameraOutputs(width, height); configureTransform(width, height); Activity activity = getActivity(); @@ -574,7 +604,7 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen new CameraCaptureSession.StateCallback() { @Override - public void onConfigured(CameraCaptureSession cameraCaptureSession) { + public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) { // The camera is already closed if (null == mCameraDevice) { return; @@ -600,7 +630,8 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } @Override - public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) { + public void onConfigureFailed( + @NonNull CameraCaptureSession cameraCaptureSession) { showToast("Failed"); } }, null @@ -668,8 +699,8 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } /** - * Run the precapture sequence for capturing a still image. This method should be called when we - * get a response in {@link #mCaptureCallback} from {@link #lockFocus()}. + * Run the precapture sequence for capturing a still image. This method should be called when + * we get a response in {@link #mCaptureCallback} from {@link #lockFocus()}. */ private void runPrecaptureSequence() { try { @@ -714,9 +745,11 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen = new CameraCaptureSession.CaptureCallback() { @Override - public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, - TotalCaptureResult result) { + public void onCaptureCompleted(@NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull TotalCaptureResult result) { showToast("Saved: " + mFile); + Log.d(TAG, mFile.toString()); unlockFocus(); } }; @@ -729,11 +762,12 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } /** - * Unlock the focus. This method should be called when still image capture sequence is finished. + * Unlock the focus. This method should be called when still image capture sequence is + * finished. */ private void unlockFocus() { try { - // Reset the autofucos trigger + // Reset the auto-focus trigger mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL); mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, @@ -827,13 +861,26 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } + /** + * Shows an error message dialog. + */ public static class ErrorDialog extends DialogFragment { + private static final String ARG_MESSAGE = "message"; + + public static ErrorDialog newInstance(String message) { + ErrorDialog dialog = new ErrorDialog(); + Bundle args = new Bundle(); + args.putString(ARG_MESSAGE, message); + dialog.setArguments(args); + return dialog; + } + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Activity activity = getActivity(); return new AlertDialog.Builder(activity) - .setMessage("This device doesn't support Camera2 API.") + .setMessage(getArguments().getString(ARG_MESSAGE)) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { @@ -845,4 +892,36 @@ public class Camera2BasicFragment extends Fragment implements View.OnClickListen } + /** + * Shows OK/Cancel confirmation dialog about camera permission. + */ + public static class ConfirmationDialog extends DialogFragment { + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Fragment parent = getParentFragment(); + return new AlertDialog.Builder(getActivity()) + .setMessage(R.string.request_permission) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + FragmentCompat.requestPermissions(parent, + new String[]{Manifest.permission.CAMERA}, + REQUEST_CAMERA_PERMISSION); + } + }) + .setNegativeButton(android.R.string.cancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Activity activity = parent.getActivity(); + if (activity != null) { + activity.finish(); + } + } + }) + .create(); + } + } + } diff --git a/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/strings.xml b/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/strings.xml index 66f10008..7fdf6e60 100644 --- a/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/strings.xml +++ b/prebuilts/gradle/Camera2Basic/Application/src/main/res/values/strings.xml @@ -16,4 +16,6 @@ Picture Info + This sample needs camera permission. + This device doesn\'t support Camera2 API. diff --git a/prebuilts/gradle/Camera2Raw/Application/build.gradle b/prebuilts/gradle/Camera2Raw/Application/build.gradle index 7292999f..77d3fd41 100644 --- a/prebuilts/gradle/Camera2Raw/Application/build.gradle +++ b/prebuilts/gradle/Camera2Raw/Application/build.gradle @@ -19,6 +19,7 @@ dependencies { compile "com.android.support:support-v4:23.0.0" compile "com.android.support:support-v13:23.0.0" compile "com.android.support:cardview-v7:23.0.0" + compile 'com.android.support:appcompat-v7:23.0.0' } // The sample build uses multiple directories to @@ -35,7 +36,7 @@ android { defaultConfig { minSdkVersion 21 - targetSdkVersion 22 + targetSdkVersion 23 } compileOptions { diff --git a/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java b/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java index 6460bf36..47cce388 100644 --- a/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java +++ b/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java @@ -16,6 +16,7 @@ package com.example.android.camera2raw; +import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -23,6 +24,7 @@ import android.app.DialogFragment; import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.graphics.ImageFormat; import android.graphics.Matrix; import android.graphics.RectF; @@ -52,6 +54,8 @@ import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.os.SystemClock; +import android.support.v13.app.FragmentCompat; +import android.support.v4.app.ActivityCompat; import android.util.Log; import android.util.Size; import android.util.SparseIntArray; @@ -84,7 +88,7 @@ import java.util.concurrent.atomic.AtomicInteger; /** * A fragment that demonstrates use of the Camera2 API to capture RAW and JPEG photos. - * + *

* In this example, the lifecycle of a single request to take a photo is: *

*/ -public class Camera2RawFragment extends Fragment implements View.OnClickListener { +public class Camera2RawFragment extends Fragment + implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback { + /** * Conversion from screen rotation to JPEG orientation. */ @@ -126,6 +132,20 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener ORIENTATIONS.append(Surface.ROTATION_270, 270); } + /** + * Request code for camera permissions. + */ + private static final int REQUEST_CAMERA_PERMISSIONS = 1; + + /** + * Permissions required to take a picture. + */ + private static final String[] CAMERA_PERMISSIONS = { + Manifest.permission.CAMERA, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + }; + /** * Timeout for the pre-capture sequence. */ @@ -264,9 +284,9 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener private Handler mBackgroundHandler; /** - * A reference counted holder wrapping the {@link ImageReader} that handles JPEG image captures. - * This is used to allow us to clean up the {@link ImageReader} when all background tasks using - * its {@link Image}s have completed. + * A reference counted holder wrapping the {@link ImageReader} that handles JPEG image + * captures. This is used to allow us to clean up the {@link ImageReader} when all background + * tasks using its {@link Image}s have completed. */ private RefCountedAutoCloseable mJpegImageReader; @@ -310,8 +330,8 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener private int mState = STATE_CLOSED; /** - * Timer to use with pre-capture sequence to ensure a timely capture if 3A convergence is taking - * too long. + * Timer to use with pre-capture sequence to ensure a timely capture if 3A convergence is + * taking too long. */ private long mCaptureTimer; @@ -352,7 +372,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener @Override public void onError(CameraDevice cameraDevice, int error) { Log.e(TAG, "Received camera device error: " + error); - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { mState = STATE_CLOSED; mCameraOpenCloseLock.release(); cameraDevice.close(); @@ -402,7 +422,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener = new CameraCaptureSession.CaptureCallback() { private void process(CaptureResult result) { - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { switch (mState) { case STATE_PREVIEW: { // We have nothing to do when the camera preview is running normally. @@ -416,7 +436,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener // If auto-focus has reached locked state, we are ready to capture readyToCapture = (afState == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED || - afState == CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED); + afState == CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED); } // If we are running on an non-legacy device, we should also wait until @@ -559,9 +579,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener }; public static Camera2RawFragment newInstance() { - Camera2RawFragment fragment = new Camera2RawFragment(); - fragment.setRetainInstance(true); - return fragment; + return new Camera2RawFragment(); } @Override @@ -620,6 +638,20 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener super.onPause(); } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + if (requestCode == REQUEST_CAMERA_PERMISSIONS) { + for (int result : grantResults) { + if (result != PackageManager.PERMISSION_GRANTED) { + showMissingPermissionError(); + return; + } + } + } else { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + } + @Override public void onClick(View view) { switch (view.getId()) { @@ -659,7 +691,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener // We only use a camera that supports RAW in this sample. if (!contains(characteristics.get( - CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES), + CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES), CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_RAW)) { continue; } @@ -676,14 +708,14 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener Arrays.asList(map.getOutputSizes(ImageFormat.RAW_SENSOR)), new CompareSizesByArea()); - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { // Set up ImageReaders for JPEG and RAW outputs. Place these in a reference // counted wrapper to ensure they are only closed when all background tasks // using them are finished. if (mJpegImageReader == null || mJpegImageReader.getAndRetain() == null) { mJpegImageReader = new RefCountedAutoCloseable<>( ImageReader.newInstance(largestJpeg.getWidth(), - largestJpeg.getHeight(), ImageFormat.JPEG, /*maxImages*/5)); + largestJpeg.getHeight(), ImageFormat.JPEG, /*maxImages*/5)); } mJpegImageReader.get().setOnImageAvailableListener( mOnJpegImageAvailableListener, mBackgroundHandler); @@ -691,7 +723,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener if (mRawImageReader == null || mRawImageReader.getAndRetain() == null) { mRawImageReader = new RefCountedAutoCloseable<>( ImageReader.newInstance(largestRaw.getWidth(), - largestRaw.getHeight(), ImageFormat.RAW_SENSOR, /*maxImages*/ 5)); + largestRaw.getHeight(), ImageFormat.RAW_SENSOR, /*maxImages*/ 5)); } mRawImageReader.get().setOnImageAvailableListener( mOnRawImageAvailableListener, mBackgroundHandler); @@ -718,6 +750,10 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener if (!setUpCameraOutputs()) { return; } + if (!hasAllPermissionsGranted()) { + requestCameraPermissions(); + return; + } Activity activity = getActivity(); CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); @@ -744,13 +780,64 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener } } + /** + * Requests permissions necessary to use camera and save pictures. + */ + private void requestCameraPermissions() { + if (shouldShowRationale()) { + PermissionConfirmationDialog.newInstance().show(getChildFragmentManager(), "dialog"); + } else { + FragmentCompat.requestPermissions(this, CAMERA_PERMISSIONS, REQUEST_CAMERA_PERMISSIONS); + } + } + + /** + * Tells whether all the necessary permissions are granted to this app. + * + * @return True if all the required permissions are granted. + */ + private boolean hasAllPermissionsGranted() { + for (String permission : CAMERA_PERMISSIONS) { + if (ActivityCompat.checkSelfPermission(getActivity(), permission) + != PackageManager.PERMISSION_GRANTED) { + return false; + } + } + return true; + } + + /** + * Gets whether you should show UI with rationale for requesting the permissions. + * + * @return True if the UI should be shown. + */ + private boolean shouldShowRationale() { + for (String permission : CAMERA_PERMISSIONS) { + if (FragmentCompat.shouldShowRequestPermissionRationale(this, permission)) { + return true; + } + } + return false; + } + + /** + * Shows that this app really needs the permission and finishes the app. + */ + private void showMissingPermissionError() { + Activity activity = getActivity(); + if (activity != null) { + Toast.makeText(activity, R.string.request_permission, Toast.LENGTH_SHORT).show(); + activity.finish(); + } + } + /** * Closes the current {@link CameraDevice}. */ private void closeCamera() { try { mCameraOpenCloseLock.acquire(); - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { // Reset state and clean up resources used by the camera. // Note: After calling this, the ImageReaders will be closed after any background @@ -787,7 +874,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener private void startBackgroundThread() { mBackgroundThread = new HandlerThread("CameraBackground"); mBackgroundThread.start(); - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { mBackgroundHandler = new Handler(mBackgroundThread.getLooper()); } } @@ -810,7 +897,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Creates a new {@link CameraCaptureSession} for camera preview. - * + *

* Call this only with {@link #mCameraStateLock} held. */ private void createCameraPreviewSessionLocked() { @@ -829,8 +916,8 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener // Here, we create a CameraCaptureSession for camera preview. mCameraDevice.createCaptureSession(Arrays.asList(surface, - mJpegImageReader.get().getSurface(), - mRawImageReader.get().getSurface()), new CameraCaptureSession.StateCallback() { + mJpegImageReader.get().getSurface(), + mRawImageReader.get().getSurface()), new CameraCaptureSession.StateCallback() { @Override public void onConfigured(CameraCaptureSession cameraCaptureSession) { synchronized (mCameraStateLock) { @@ -846,7 +933,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener mPreviewRequestBuilder.build(), mPreCaptureCallback, mBackgroundHandler); mState = STATE_PREVIEW; - } catch (CameraAccessException|IllegalStateException e) { + } catch (CameraAccessException | IllegalStateException e) { e.printStackTrace(); return; } @@ -869,7 +956,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Configure the given {@link CaptureRequest.Builder} to use auto-focus, auto-exposure, and * auto-white-balance controls if available. - * + *

* Call this only with {@link #mCameraStateLock} held. * * @param builder the builder to configure. @@ -923,7 +1010,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Configure the necessary {@link android.graphics.Matrix} transformation to `mTextureView`, * and start/restart the preview capture session if necessary. - * + *

* This method should be called after the camera state has been initialized in * setUpCameraOutputs. * @@ -932,7 +1019,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener */ private void configureTransform(int viewWidth, int viewHeight) { Activity activity = getActivity(); - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { if (null == mTextureView || null == activity) { return; } @@ -1027,14 +1114,14 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Initiate a still image capture. - * + *

* This function sends a capture request that initiates a pre-capture sequence in our state * machine that waits for auto-focus to finish, ending in a "locked" state where the lens is no * longer moving, waits for auto-exposure to choose a good exposure value, and waits for * auto-white-balance to converge. */ private void takePicture() { - synchronized(mCameraStateLock) { + synchronized (mCameraStateLock) { mPendingUserCaptures++; // If we already triggered a pre-capture sequence, or are in a state where we cannot @@ -1078,7 +1165,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Send a capture request to the camera device that initiates a capture targeting the JPEG and * RAW outputs. - * + *

* Call this only with {@link #mCameraStateLock} held. */ private void captureStillPictureLocked() { @@ -1127,7 +1214,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Called after a RAW/JPEG capture has completed; resets the AF trigger state for the * pre-capture sequence. - * + *

* Call this only with {@link #mCameraStateLock} held. */ private void finishedCaptureLocked() { @@ -1156,8 +1243,8 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener * thread. * * @param pendingQueue the currently active requests. - * @param reader a reference counted wrapper containing an {@link ImageReader} from which to - * acquire an image. + * @param reader a reference counted wrapper containing an {@link ImageReader} from which + * to acquire an image. */ private void dequeueAndSaveImage(TreeMap pendingQueue, RefCountedAutoCloseable reader) { @@ -1195,7 +1282,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Runnable that saves an {@link Image} into the specified {@link File}, and updates * {@link android.provider.MediaStore} to include the resulting file. - * + *

* This can be constructed through an {@link ImageSaverBuilder} as the necessary image and * result information becomes available. */ @@ -1231,8 +1318,8 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener private final RefCountedAutoCloseable mReader; private ImageSaver(Image image, File file, CaptureResult result, - CameraCharacteristics characteristics, Context context, - RefCountedAutoCloseable reader) { + CameraCharacteristics characteristics, Context context, + RefCountedAutoCloseable reader) { mImage = image; mFile = file; mCaptureResult = result; @@ -1245,7 +1332,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener public void run() { boolean success = false; int format = mImage.getFormat(); - switch(format) { + switch (format) { case ImageFormat.JPEG: { ByteBuffer buffer = mImage.getPlanes()[0].getBuffer(); byte[] bytes = new byte[buffer.remaining()]; @@ -1289,7 +1376,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener // If saving the file succeeded, update MediaStore. if (success) { - MediaScannerConnection.scanFile(mContext, new String[] { mFile.getPath()}, + MediaScannerConnection.scanFile(mContext, new String[]{mFile.getPath()}, /*mimeTypes*/null, new MediaScannerConnection.MediaScannerConnectionClient() { @Override public void onMediaScannerConnected() { @@ -1307,7 +1394,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Builder class for constructing {@link ImageSaver}s. - * + *

* This class is thread safe. */ public static class ImageSaverBuilder { @@ -1320,8 +1407,9 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Construct a new ImageSaverBuilder using the given {@link Context}. + * * @param context a {@link Context} to for accessing the - * {@link android.provider.MediaStore}. + * {@link android.provider.MediaStore}. */ public ImageSaverBuilder(final Context context) { mContext = context; @@ -1329,7 +1417,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener public synchronized ImageSaverBuilder setRefCountedReader( RefCountedAutoCloseable reader) { - if (reader == null ) throw new NullPointerException(); + if (reader == null) throw new NullPointerException(); mReader = reader; return this; @@ -1440,6 +1528,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Wrap the given object. + * * @param object an object to wrap. */ public RefCountedAutoCloseable(T object) { @@ -1551,7 +1640,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener * Return true if the given array contains the given integer. * * @param modes array to check. - * @param mode integer to get for. + * @param mode integer to get for. * @return true if the array contains the given integer, otherwise false. */ private static boolean contains(int[] modes, int mode) { @@ -1582,7 +1671,9 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Rotation need to transform from the camera sensor orientation to the device's current * orientation. - * @param c the {@link CameraCharacteristics} to query for the camera sensor orientation. + * + * @param c the {@link CameraCharacteristics} to query for the camera sensor + * orientation. * @param deviceOrientation the current device orientation relative to the native device * orientation. * @return the total rotation from the sensor orientation to the current device orientation. @@ -1620,12 +1711,12 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener * If the given request has been completed, remove it from the queue of active requests and * send an {@link ImageSaver} with the results from this request to a background thread to * save a file. - * + *

* Call this only with {@link #mCameraStateLock} held. * * @param requestId the ID of the {@link CaptureRequest} to handle. - * @param builder the {@link ImageSaver.ImageSaverBuilder} for this request. - * @param queue the queue to remove this request from, if completed. + * @param builder the {@link ImageSaver.ImageSaverBuilder} for this request. + * @param queue the queue to remove this request from, if completed. */ private void handleCompletionLocked(int requestId, ImageSaver.ImageSaverBuilder builder, TreeMap queue) { @@ -1639,7 +1730,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Check if we are using a device that only supports the LEGACY hardware level. - * + *

* Call this only with {@link #mCameraStateLock} held. * * @return true if this is a legacy device. @@ -1651,7 +1742,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Start the timer for the pre-capture sequence. - * + *

* Call this only with {@link #mCameraStateLock} held. */ private void startTimerLocked() { @@ -1660,7 +1751,7 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener /** * Check if the timer for the pre-capture sequence has been hit. - * + *

* Call this only with {@link #mCameraStateLock} held. * * @return true if the timeout occurred. @@ -1669,6 +1760,37 @@ public class Camera2RawFragment extends Fragment implements View.OnClickListener return (SystemClock.elapsedRealtime() - mCaptureTimer) > PRECAPTURE_TIMEOUT_MS; } - // ********************************************************************************************* + /** + * A dialog that explains about the necessary permissions. + */ + public static class PermissionConfirmationDialog extends DialogFragment { + + public static PermissionConfirmationDialog newInstance() { + return new PermissionConfirmationDialog(); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Fragment parent = getParentFragment(); + return new AlertDialog.Builder(getActivity()) + .setMessage(R.string.request_permission) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + FragmentCompat.requestPermissions(parent, CAMERA_PERMISSIONS, + REQUEST_CAMERA_PERMISSIONS); + } + }) + .setNegativeButton(android.R.string.cancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + getActivity().finish(); + } + }) + .create(); + } + + } } diff --git a/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/strings.xml b/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/strings.xml index 0f56ce9b..84672a08 100644 --- a/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/strings.xml +++ b/prebuilts/gradle/Camera2Raw/Application/src/main/res/values/strings.xml @@ -16,4 +16,5 @@ Picture Info + This app needs camera permission. diff --git a/prebuilts/gradle/Camera2Video/Application/build.gradle b/prebuilts/gradle/Camera2Video/Application/build.gradle index 7292999f..77d3fd41 100644 --- a/prebuilts/gradle/Camera2Video/Application/build.gradle +++ b/prebuilts/gradle/Camera2Video/Application/build.gradle @@ -19,6 +19,7 @@ dependencies { compile "com.android.support:support-v4:23.0.0" compile "com.android.support:support-v13:23.0.0" compile "com.android.support:cardview-v7:23.0.0" + compile 'com.android.support:appcompat-v7:23.0.0' } // The sample build uses multiple directories to @@ -35,7 +36,7 @@ android { defaultConfig { minSdkVersion 21 - targetSdkVersion 22 + targetSdkVersion 23 } compileOptions { diff --git a/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java b/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java index 78e276a9..1ea53187 100644 --- a/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java +++ b/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java @@ -16,6 +16,7 @@ package com.example.android.camera2video; +import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -23,6 +24,7 @@ import android.app.DialogFragment; import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Matrix; import android.graphics.RectF; @@ -39,6 +41,9 @@ import android.media.MediaRecorder; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; +import android.support.annotation.NonNull; +import android.support.v13.app.FragmentCompat; +import android.support.v4.app.ActivityCompat; import android.util.Log; import android.util.Size; import android.util.SparseIntArray; @@ -59,11 +64,19 @@ import java.util.List; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; -public class Camera2VideoFragment extends Fragment implements View.OnClickListener { +public class Camera2VideoFragment extends Fragment + implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback { private static final SparseIntArray ORIENTATIONS = new SparseIntArray(); private static final String TAG = "Camera2VideoFragment"; + private static final int REQUEST_VIDEO_PERMISSIONS = 1; + private static final String FRAGMENT_DIALOG = "dialog"; + + private static final String[] VIDEO_PERMISSIONS = { + Manifest.permission.CAMERA, + Manifest.permission.RECORD_AUDIO, + }; static { ORIENTATIONS.append(Surface.ROTATION_0, 90); @@ -88,7 +101,8 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen private CameraDevice mCameraDevice; /** - * A reference to the current {@link android.hardware.camera2.CameraCaptureSession} for preview. + * A reference to the current {@link android.hardware.camera2.CameraCaptureSession} for + * preview. */ private CameraCaptureSession mPreviewSession; @@ -198,14 +212,12 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen }; public static Camera2VideoFragment newInstance() { - Camera2VideoFragment fragment = new Camera2VideoFragment(); - fragment.setRetainInstance(true); - return fragment; + return new Camera2VideoFragment(); } /** - * In this sample, we choose a video size with 3x4 aspect ratio. Also, we don't use sizes larger - * than 1080p, since MediaRecorder cannot handle such a high-resolution video. + * In this sample, we choose a video size with 3x4 aspect ratio. Also, we don't use sizes + * larger than 1080p, since MediaRecorder cannot handle such a high-resolution video. * * @param choices The list of available sizes * @return The video size @@ -331,16 +343,79 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen } } + /** + * Gets whether you should show UI with rationale for requesting permissions. + * + * @param permissions The permissions your app wants to request. + * @return Whether you can show permission rationale UI. + */ + private boolean shouldShowRequestPermissionRationale(String[] permissions) { + for (String permission : permissions) { + if (FragmentCompat.shouldShowRequestPermissionRationale(this, permission)) { + return true; + } + } + return false; + } + + /** + * Requests permissions needed for recording video. + */ + private void requestVideoPermissions() { + if (shouldShowRequestPermissionRationale(VIDEO_PERMISSIONS)) { + new ConfirmationDialog().show(getChildFragmentManager(), FRAGMENT_DIALOG); + } else { + FragmentCompat.requestPermissions(this, VIDEO_PERMISSIONS, REQUEST_VIDEO_PERMISSIONS); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + Log.d(TAG, "onRequestPermissionsResult"); + if (requestCode == REQUEST_VIDEO_PERMISSIONS) { + if (grantResults.length == VIDEO_PERMISSIONS.length) { + for (int result : grantResults) { + if (result != PackageManager.PERMISSION_GRANTED) { + ErrorDialog.newInstance(getString(R.string.permission_request)) + .show(getChildFragmentManager(), FRAGMENT_DIALOG); + break; + } + } + } else { + ErrorDialog.newInstance(getString(R.string.permission_request)) + .show(getChildFragmentManager(), FRAGMENT_DIALOG); + } + } else { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + } + + private boolean hasPermissionsGranted(String[] permissions) { + for (String permission : permissions) { + if (ActivityCompat.checkSelfPermission(getActivity(), permission) + != PackageManager.PERMISSION_GRANTED) { + return false; + } + } + return true; + } + /** * Tries to open a {@link CameraDevice}. The result is listened by `mStateCallback`. */ private void openCamera(int width, int height) { + if (!hasPermissionsGranted(VIDEO_PERMISSIONS)) { + requestVideoPermissions(); + return; + } final Activity activity = getActivity(); if (null == activity || activity.isFinishing()) { return; } CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); try { + Log.d(TAG, "tryAcquire"); if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) { throw new RuntimeException("Time out waiting to lock camera opening."); } @@ -369,7 +444,8 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen } catch (NullPointerException e) { // Currently an NPE is thrown when the Camera2API is used but not supported on the // device this code runs. - new ErrorDialog().show(getFragmentManager(), "dialog"); + ErrorDialog.newInstance(getString(R.string.camera_error)) + .show(getChildFragmentManager(), FRAGMENT_DIALOG); } catch (InterruptedException e) { throw new RuntimeException("Interrupted while trying to lock camera opening."); } @@ -389,7 +465,7 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen } catch (InterruptedException e) { throw new RuntimeException("Interrupted while trying to lock camera closing."); } finally { - mCameraOpenCloseLock.release(); + mCameraOpenCloseLock.release(); } } @@ -559,11 +635,21 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen public static class ErrorDialog extends DialogFragment { + private static final String ARG_MESSAGE = "message"; + + public static ErrorDialog newInstance(String message) { + ErrorDialog dialog = new ErrorDialog(); + Bundle args = new Bundle(); + args.putString(ARG_MESSAGE, message); + dialog.setArguments(args); + return dialog; + } + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Activity activity = getActivity(); return new AlertDialog.Builder(activity) - .setMessage("This device doesn't support Camera2 API.") + .setMessage(getArguments().getString(ARG_MESSAGE)) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { @@ -575,4 +661,30 @@ public class Camera2VideoFragment extends Fragment implements View.OnClickListen } + public static class ConfirmationDialog extends DialogFragment { + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Fragment parent = getParentFragment(); + return new AlertDialog.Builder(getActivity()) + .setMessage(R.string.permission_request) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + FragmentCompat.requestPermissions(parent, VIDEO_PERMISSIONS, + REQUEST_VIDEO_PERMISSIONS); + } + }) + .setNegativeButton(android.R.string.cancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + parent.getActivity().finish(); + } + }) + .create(); + } + + } + } diff --git a/prebuilts/gradle/Camera2Video/Application/src/main/res/values/strings.xml b/prebuilts/gradle/Camera2Video/Application/src/main/res/values/strings.xml index bf5e439d..bce323f1 100644 --- a/prebuilts/gradle/Camera2Video/Application/src/main/res/values/strings.xml +++ b/prebuilts/gradle/Camera2Video/Application/src/main/res/values/strings.xml @@ -3,4 +3,6 @@ Record Stop Info + This sample needs permission for camera and audio recording. + This device doesn\'t support Camera2 API. \ No newline at end of file -- GitLab From f1e01a0e7dab6821e42a36eb7ef4ce5ed4604eec Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Fri, 4 Sep 2015 11:13:22 -0700 Subject: [PATCH 06/25] Sync samples prebuilts for mnc-docs Synced to //developers/samples/android commit ec5f8543a1e474570a257df386260ac8a206aded. Change-Id: I1fe6c1089089f4b97d1026756caf69d6484df478 --- .../RuntimePermissions/Application/src/main/AndroidManifest.xml | 2 +- .../Application/src/main/AndroidManifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml index 050b0515..0acbb93b 100644 --- a/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml +++ b/prebuilts/gradle/RuntimePermissions/Application/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:theme="@style/AppTheme" > + android:theme="@style/Theme.AppCompat.Light" > diff --git a/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml index 1f7ea6a1..bfae9b92 100644 --- a/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml +++ b/prebuilts/gradle/RuntimePermissionsBasic/Application/src/main/AndroidManifest.xml @@ -28,7 +28,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:theme="@style/AppTheme"> + android:theme="@style/Theme.AppCompat.Light"> -- GitLab From e5a4f000f8001ce8bf809a6137320ab89b8b447a Mon Sep 17 00:00:00 2001 From: Adam Koch Date: Tue, 8 Sep 2015 11:06:16 +1000 Subject: [PATCH 07/25] Update template gmscore version to 7.8 Change-Id: Ib2301a27cc7e4548f9accfb7ad2f57d2204b0472 --- templates/include/common.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/include/common.ftl b/templates/include/common.ftl index 38fdf3e6..a12a2010 100644 --- a/templates/include/common.ftl +++ b/templates/include/common.ftl @@ -80,7 +80,7 @@ <#-- Set the global build tools version --> <#assign build_tools_version='"23.0.0"'/> -<#assign play_services_version="7.3.0"/> +<#assign play_services_version="7.8.0"/> <#assign play_services_wearable_dependency="'com.google.android.gms:play-services-wearable:${play_services_version}'"/> <#assign android_support_v13_dependency="'com.android.support:support-v13:23.0.0'"/> -- GitLab From a462373bf2a3aec8bf91350e13f704c1d88c8174 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Thu, 1 Oct 2015 10:03:02 -0700 Subject: [PATCH 08/25] Update support library to v23.0.1 Change-Id: I619f78ee7edb70b10522e17d61bd01ce10a54ae8 --- templates/include/common.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/include/common.ftl b/templates/include/common.ftl index a12a2010..d9f74aa8 100644 --- a/templates/include/common.ftl +++ b/templates/include/common.ftl @@ -83,6 +83,6 @@ <#assign play_services_version="7.8.0"/> <#assign play_services_wearable_dependency="'com.google.android.gms:play-services-wearable:${play_services_version}'"/> -<#assign android_support_v13_dependency="'com.android.support:support-v13:23.0.0'"/> +<#assign android_support_v13_dependency="'com.android.support:support-v13:23.0.1'"/> <#assign wearable_support_dependency="'com.google.android.support:wearable:1.3.0'"/> -- GitLab From a0689a6e2e8c589f96af3645efaa8088dd35e782 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Thu, 1 Oct 2015 10:32:00 -0700 Subject: [PATCH 09/25] Update gradle wrapper to v2.4 Change-Id: I5fe40370342947c16eec8ee5474433d1f08123c3 --- gradle/wrapper/gradle-wrapper.properties | 2 +- templates/create/gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c9a5de6a..517394b3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -15,4 +15,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip diff --git a/templates/create/gradle/wrapper/gradle-wrapper.properties b/templates/create/gradle/wrapper/gradle-wrapper.properties index afb32963..aa75ae6c 100644 --- a/templates/create/gradle/wrapper/gradle-wrapper.properties +++ b/templates/create/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-bin.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-2.4-all.zip -- GitLab From 6e86209c1dfa14726202bed65f7780774e800478 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Thu, 1 Oct 2015 20:29:56 -0700 Subject: [PATCH 10/25] Update build tools to v23.0.1 Change-Id: I784cb9dbef86384370777c6e7ea8d28792a1cb34 --- templates/include/common.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/include/common.ftl b/templates/include/common.ftl index d9f74aa8..f26779fd 100644 --- a/templates/include/common.ftl +++ b/templates/include/common.ftl @@ -78,7 +78,7 @@ <#-- Set the global build tools version --> -<#assign build_tools_version='"23.0.0"'/> +<#assign build_tools_version='"23.0.1"'/> <#assign play_services_version="7.8.0"/> <#assign play_services_wearable_dependency="'com.google.android.gms:play-services-wearable:${play_services_version}'"/> -- GitLab From 6db46e84237297dcad8b66df29a95397100837c3 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Thu, 1 Oct 2015 20:35:40 -0700 Subject: [PATCH 11/25] Update gradle wrapper to v2.5 Change-Id: I243264c6077b35229cd922491371818752931db0 --- gradle/wrapper/gradle-wrapper.properties | 2 +- templates/create/gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 517394b3..7a3263e1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -15,4 +15,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/templates/create/gradle/wrapper/gradle-wrapper.properties b/templates/create/gradle/wrapper/gradle-wrapper.properties index aa75ae6c..9950d60e 100644 --- a/templates/create/gradle/wrapper/gradle-wrapper.properties +++ b/templates/create/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.4-all.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-2.5-all.zip -- GitLab From 73b644ba4e98cd62679a398344c545a2b9e769e4 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Thu, 1 Oct 2015 21:14:09 -0700 Subject: [PATCH 12/25] Change http->https in create template The default URL for the Gradle wrapper in new projects was using http instead of https. Existing projects fixed seperately in change I2824a6ff305b052ead3e88b0f55aa97dc6d686d7. Change-Id: I6715eda1539a62fccca70ed4bd205b90ad635bf5 --- templates/create/gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/create/gradle/wrapper/gradle-wrapper.properties b/templates/create/gradle/wrapper/gradle-wrapper.properties index 9950d60e..179dd799 100644 --- a/templates/create/gradle/wrapper/gradle-wrapper.properties +++ b/templates/create/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip -- GitLab From 5e07e1addf32d930e6d07b04f80523ae25a8a26e Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Fri, 2 Oct 2015 16:40:37 -0700 Subject: [PATCH 13/25] Update sample prebuilts for mnc-docs Synced to //developers/samples/android commit 1a0b1951b01698fe28a2fa59ba76a2e8076afc84. Change-Id: I9dfac6cad2b79f775c29bfa197d5adbc8f8c6ef7 --- .../Application/build.gradle | 2 +- .../gradle/ActionBarCompat-Basic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../ActionBarCompat-ListPopupMenu/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/ActionBarCompat-Styled/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/ActiveNotifications/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/ActivityInstrumentation/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../ActivitySceneTransitionBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/AdvancedImmersiveMode/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../AgendaData/Application/build.gradle | 9 +- .../Application/src/main/AndroidManifest.xml | 16 +- .../wearable/agendadata/MainActivity.java | 210 +++++- .../Application/src/main/res/layout/main.xml | 13 +- .../src/main/res/values/base-strings.xml | 8 +- .../src/main/res/values/strings.xml | 6 +- prebuilts/gradle/AgendaData/README.md | 2 +- .../gradle/AgendaData/Wearable/build.gradle | 6 +- .../agendadata/HomeListenerService.java | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- prebuilts/gradle/AlwaysOn/README.md | 2 +- .../gradle/AlwaysOn/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/AppRestrictionEnforcer/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/AppRestrictionSchema/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../AppRestrictions/Application/build.gradle | 2 +- prebuilts/gradle/AppRestrictions/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../AppUsageStatisticsFragment.java | 2 +- prebuilts/gradle/AppUsageStatistics/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../.google/packaging.yaml | 23 + .../Application/build.gradle | 77 +++ .../Application/src/main/AndroidManifest.xml | 43 ++ ...ngerprintAuthenticationDialogFragment.java | 316 +++++++++ .../FingerprintModule.java | 111 +++ .../FingerprintUiHelper.java | 165 +++++ .../InjectedApplication.java | 59 ++ .../MainActivity.java | 230 +++++++ .../SettingsActivity.java | 47 ++ .../server/StoreBackend.java | 61 ++ .../server/StoreBackendImpl.java | 69 ++ .../server/Transaction.java | 66 ++ .../src/main/res/drawable-hdpi/ic_fp_40px.png | Bin 0 -> 7011 bytes .../src/main/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../src/main/res/drawable-mdpi/ic_fp_40px.png | Bin 0 -> 4001 bytes .../main/res/drawable-nodpi/android_robot.png | Bin 0 -> 8288 bytes .../main/res/drawable-xhdpi/ic_fp_40px.png | Bin 0 -> 10524 bytes .../main/res/drawable-xxhdpi/ic_fp_40px.png | Bin 0 -> 18565 bytes .../main/res/drawable-xxxhdpi/ic_fp_40px.png | Bin 0 -> 16535 bytes .../src/main/res/drawable/card.xml | 24 + .../res/drawable/ic_fingerprint_error.xml | 28 + .../res/drawable/ic_fingerprint_success.xml | 28 + .../src/main/res/layout/activity_main.xml | 107 +++ .../res/layout/fingerprint_dialog_backup.xml | 78 +++ .../layout/fingerprint_dialog_container.xml | 65 ++ .../res/layout/fingerprint_dialog_content.xml | 58 ++ .../src/main/res/menu/menu_main.xml | 21 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3237 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2036 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4058 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6516 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9529 bytes .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../main/res/values-v11/template-styles.xml | 22 + .../src/main/res/values-v21/base-colors.xml | 21 + .../res/values-v21/base-template-styles.xml | 24 + .../src/main/res/values/base-strings.xml | 30 + .../src/main/res/values/colors.xml | 21 + .../src/main/res/values/strings.xml | 39 ++ .../src/main/res/values/template-dimens.xml | 32 + .../src/main/res/values/template-styles.xml | 42 ++ .../src/main/res/xml/preferences.xml | 23 + .../CONTRIBUTING.md | 35 + .../AsymmetricFingerprintDialog/LICENSE | 647 ++++++++++++++++++ .../AsymmetricFingerprintDialog/README.md | 86 +++ .../AsymmetricFingerprintDialog/build.gradle | 11 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../AsymmetricFingerprintDialog/gradlew | 164 +++++ .../AsymmetricFingerprintDialog/gradlew.bat | 90 +++ .../screenshots/1-purchase-screen.png | Bin 0 -> 99587 bytes .../screenshots/2-fingerprint-dialog.png | Bin 0 -> 104965 bytes .../3-fingerprint-authenticated.png | Bin 0 -> 92101 bytes .../4-new-fingerprint-enrolled.png | Bin 0 -> 103821 bytes .../screenshots/big-icon.png | Bin 0 -> 35440 bytes .../settings.gradle | 1 + .../Application/build.gradle | 2 +- prebuilts/gradle/AutoBackupForApps/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicAccessibility/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/BasicAndroidKeyStore/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicContactables/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicGestureDetect/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicImmersiveMode/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/BasicManagedProfile/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicMediaDecoder/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BasicMediaRouter/Application/build.gradle | 2 +- prebuilts/gradle/BasicMediaRouter/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BasicMultitouch/Application/build.gradle | 2 +- prebuilts/gradle/BasicMultitouch/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BasicNetworking/Application/build.gradle | 2 +- prebuilts/gradle/BasicNetworking/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicNotifications/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BasicRenderScript/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BasicSyncAdapter/Application/build.gradle | 2 +- prebuilts/gradle/BasicSyncAdapter/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BasicTransition/Application/build.gradle | 2 +- prebuilts/gradle/BasicTransition/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BatchStepSensor/Application/build.gradle | 2 +- prebuilts/gradle/BatchStepSensor/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BeamLargeFiles/Application/build.gradle | 2 +- prebuilts/gradle/BeamLargeFiles/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/BluetoothAdvertisements/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BluetoothChat/Application/build.gradle | 2 +- prebuilts/gradle/BluetoothChat/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../BluetoothLeGatt/Application/build.gradle | 2 +- prebuilts/gradle/BluetoothLeGatt/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/BorderlessButtons/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Camera2Basic/Application/build.gradle | 2 +- prebuilts/gradle/Camera2Basic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Camera2Raw/Application/build.gradle | 2 +- prebuilts/gradle/Camera2Raw/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Camera2Video/Application/build.gradle | 2 +- prebuilts/gradle/Camera2Video/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../CardEmulation/Application/build.gradle | 2 +- prebuilts/gradle/CardEmulation/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../CardReader/Application/build.gradle | 2 +- prebuilts/gradle/CardReader/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/CardView/Application/build.gradle | 2 +- prebuilts/gradle/CardView/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../ClippingBasic/Application/build.gradle | 2 +- prebuilts/gradle/ClippingBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/ConfirmCredential/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../CustomChoiceList/Application/build.gradle | 2 +- prebuilts/gradle/CustomChoiceList/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/CustomNotifications/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../CustomTransition/Application/build.gradle | 2 +- prebuilts/gradle/CustomTransition/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/DataLayer/Application/build.gradle | 6 +- prebuilts/gradle/DataLayer/README.md | 2 +- .../gradle/DataLayer/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 6 +- .../gradle/DelayedConfirmation/README.md | 2 +- .../DelayedConfirmation/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../DeviceOwner/Application/build.gradle | 2 +- prebuilts/gradle/DeviceOwner/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../DirectShare/Application/build.gradle | 2 +- .../src/main/res/layout/select_contact.xml | 25 + prebuilts/gradle/DirectShare/README.md | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/DirectorySelection/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/DisplayingBitmaps/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/DocumentCentricApps/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/DoneBar/Application/build.gradle | 2 +- prebuilts/gradle/DoneBar/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../DrawableTinting/Application/build.gradle | 2 +- prebuilts/gradle/DrawableTinting/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../ElevationBasic/Application/build.gradle | 2 +- prebuilts/gradle/ElevationBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../ElevationDrag/Application/build.gradle | 2 +- prebuilts/gradle/ElevationDrag/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/ElizaChat/Application/build.gradle | 2 +- prebuilts/gradle/ElizaChat/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../FindMyPhone/Application/build.gradle | 6 +- prebuilts/gradle/FindMyPhone/README.md | 2 +- .../gradle/FindMyPhone/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/FingerprintDialog/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- prebuilts/gradle/Flashlight/README.md | 2 +- .../gradle/Flashlight/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../FloatingActionButtonBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Geofencing/Application/build.gradle | 6 +- prebuilts/gradle/Geofencing/README.md | 2 +- .../gradle/Geofencing/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- prebuilts/gradle/GridViewPager/README.md | 2 +- .../GridViewPager/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../HdrViewfinder/Application/build.gradle | 2 +- prebuilts/gradle/HdrViewfinder/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../HorizontalPaging/Application/build.gradle | 2 +- prebuilts/gradle/HorizontalPaging/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../ImmersiveMode/Application/build.gradle | 2 +- prebuilts/gradle/ImmersiveMode/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Interpolator/Application/build.gradle | 2 +- prebuilts/gradle/Interpolator/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../JobScheduler/Application/build.gradle | 2 +- prebuilts/gradle/JobScheduler/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- prebuilts/gradle/JumpingJack/README.md | 2 +- .../gradle/JumpingJack/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../LNotifications/Application/build.gradle | 2 +- prebuilts/gradle/LNotifications/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/MediaBrowserService/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../MediaEffects/Application/build.gradle | 2 +- prebuilts/gradle/MediaEffects/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../MediaRecorder/Application/build.gradle | 2 +- prebuilts/gradle/MediaRecorder/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../MediaRouter/Application/build.gradle | 2 +- prebuilts/gradle/MediaRouter/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../MessagingService/Application/build.gradle | 2 +- prebuilts/gradle/MessagingService/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/MidiScope/Application/build.gradle | 2 +- prebuilts/gradle/MidiScope/README.md | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/MidiSynth/Application/build.gradle | 2 +- prebuilts/gradle/MidiSynth/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../NavigationDrawer/Application/build.gradle | 2 +- prebuilts/gradle/NavigationDrawer/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../NetworkConnect/Application/build.gradle | 2 +- prebuilts/gradle/NetworkConnect/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../NfcProvisioning/Application/build.gradle | 2 +- prebuilts/gradle/NfcProvisioning/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Notifications/Application/build.gradle | 6 +- prebuilts/gradle/Notifications/README.md | 2 +- .../Notifications/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../PdfRendererBasic/Application/build.gradle | 2 +- prebuilts/gradle/PdfRendererBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/PermissionRequest/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/Quiz/Application/build.gradle | 6 +- prebuilts/gradle/Quiz/README.md | 2 +- prebuilts/gradle/Quiz/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../RecipeAssistant/Application/build.gradle | 2 +- prebuilts/gradle/RecipeAssistant/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../RecyclerView/Application/build.gradle | 2 +- prebuilts/gradle/RecyclerView/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/RenderScriptIntrinsic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../RepeatingAlarm/Application/build.gradle | 2 +- prebuilts/gradle/RepeatingAlarm/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/RevealEffectBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- prebuilts/gradle/RuntimePermissions/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/RuntimePermissionsBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../ScreenCapture/Application/build.gradle | 2 +- prebuilts/gradle/ScreenCapture/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/SkeletonWearableApp/README.md | 2 +- .../SkeletonWearableApp/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../SlidingTabsBasic/Application/build.gradle | 2 +- prebuilts/gradle/SlidingTabsBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../Application/build.gradle | 2 +- prebuilts/gradle/SlidingTabsColors/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../SpeedTracker/Application/build.gradle | 6 +- prebuilts/gradle/SpeedTracker/README.md | 2 +- .../gradle/SpeedTracker/Shared/build.gradle | 2 +- .../gradle/SpeedTracker/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../StorageClient/Application/build.gradle | 2 +- prebuilts/gradle/StorageClient/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../StorageProvider/Application/build.gradle | 2 +- prebuilts/gradle/StorageProvider/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/SwipeRefreshLayoutBasic/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../gradle/SwipeRefreshListFragment/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 2 +- .../SwipeRefreshMultipleViews/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../Application/build.gradle | 6 +- .../SynchronizedNotifications/README.md | 2 +- .../Shared/build.gradle | 2 +- .../Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../TextLinkify/Application/build.gradle | 2 +- prebuilts/gradle/TextLinkify/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../TextSwitcher/Application/build.gradle | 2 +- prebuilts/gradle/TextSwitcher/README.md | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- prebuilts/gradle/Timer/README.md | 2 +- prebuilts/gradle/Timer/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/WatchFace/Application/build.gradle | 6 +- prebuilts/gradle/WatchFace/README.md | 2 +- .../gradle/WatchFace/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- prebuilts/gradle/WatchViewStub/README.md | 2 +- .../WatchViewStub/Wearable/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../.google/packaging.yaml | 2 + .../Application/build.gradle | 16 +- .../Application/src/main/AndroidManifest.xml | 8 +- .../provider/TouristAttractions.java | 8 +- .../service/UtilityService.java | 12 +- .../ui/AttractionListActivity.java | 73 +- .../ui/AttractionListFragment.java | 11 +- .../src/main/res/layout/activity_main.xml | 7 +- .../src/main/res/values/strings.xml | 2 + .../gradle/XYZTouristAttractions/README.md | 2 +- .../XYZTouristAttractions/Shared/build.gradle | 7 +- .../xyztouristattractions/common/Utils.java | 16 + .../Wearable/build.gradle | 8 +- .../Wearable/src/main/AndroidManifest.xml | 6 +- .../service/ListenerService.java | 15 +- .../src/main/res/layout/gridpager_action.xml | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 424 files changed, 3815 insertions(+), 486 deletions(-) create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/.google/packaging.yaml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/build.gradle create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/AndroidManifest.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/FingerprintAuthenticationDialogFragment.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/FingerprintModule.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/FingerprintUiHelper.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/InjectedApplication.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/MainActivity.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/SettingsActivity.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/server/StoreBackend.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/server/StoreBackendImpl.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/java/com/example/android/asymmetricfingerprintdialog/server/Transaction.java create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-hdpi/ic_fp_40px.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-hdpi/tile.9.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-mdpi/ic_fp_40px.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-nodpi/android_robot.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-xhdpi/ic_fp_40px.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-xxhdpi/ic_fp_40px.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable-xxxhdpi/ic_fp_40px.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable/card.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable/ic_fingerprint_error.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/drawable/ic_fingerprint_success.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/layout/activity_main.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_backup.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_container.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_content.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/menu/menu_main.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values-sw600dp/template-dimens.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values-sw600dp/template-styles.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values-v11/template-styles.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values-v21/base-colors.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values-v21/base-template-styles.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values/base-strings.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values/colors.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values/strings.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values/template-dimens.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/values/template-styles.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/Application/src/main/res/xml/preferences.xml create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/CONTRIBUTING.md create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/LICENSE create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/README.md create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/build.gradle create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/gradle/wrapper/gradle-wrapper.jar create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/gradle/wrapper/gradle-wrapper.properties create mode 100755 prebuilts/gradle/AsymmetricFingerprintDialog/gradlew create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/gradlew.bat create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/screenshots/1-purchase-screen.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/screenshots/2-fingerprint-dialog.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/screenshots/3-fingerprint-authenticated.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/screenshots/4-new-fingerprint-enrolled.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/screenshots/big-icon.png create mode 100644 prebuilts/gradle/AsymmetricFingerprintDialog/settings.gradle create mode 100644 prebuilts/gradle/DirectShare/Application/src/main/res/layout/select_contact.xml diff --git a/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle index cd73ee70..4715d686 100644 --- a/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle +++ b/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle @@ -32,7 +32,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 7 diff --git a/prebuilts/gradle/ActionBarCompat-Basic/README.md b/prebuilts/gradle/ActionBarCompat-Basic/README.md index bfa27c0e..40265a95 100644 --- a/prebuilts/gradle/ActionBarCompat-Basic/README.md +++ b/prebuilts/gradle/ActionBarCompat-Basic/README.md @@ -36,7 +36,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties index 0c71e760..179dd799 100644 --- a/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle index cd73ee70..4715d686 100644 --- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle +++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle @@ -32,7 +32,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 7 diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md index 35058430..a4627f68 100644 --- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md +++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md @@ -18,7 +18,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties index 0c71e760..179dd799 100644 --- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle index cd73ee70..4715d686 100644 --- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle +++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle @@ -32,7 +32,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 7 diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md index 664cef21..d7308120 100644 --- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md +++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md @@ -23,7 +23,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties index 0c71e760..179dd799 100644 --- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle index 86f809a2..bcfaa464 100644 --- a/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle +++ b/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle @@ -32,7 +32,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 7 diff --git a/prebuilts/gradle/ActionBarCompat-Styled/README.md b/prebuilts/gradle/ActionBarCompat-Styled/README.md index bf2a0e50..6793f877 100644 --- a/prebuilts/gradle/ActionBarCompat-Styled/README.md +++ b/prebuilts/gradle/ActionBarCompat-Styled/README.md @@ -24,7 +24,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties index 0c71e760..179dd799 100644 --- a/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/ActiveNotifications/Application/build.gradle b/prebuilts/gradle/ActiveNotifications/Application/build.gradle index 4e8f709c..6c68bc20 100644 --- a/prebuilts/gradle/ActiveNotifications/Application/build.gradle +++ b/prebuilts/gradle/ActiveNotifications/Application/build.gradle @@ -31,7 +31,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 23 diff --git a/prebuilts/gradle/ActiveNotifications/README.md b/prebuilts/gradle/ActiveNotifications/README.md index 20ca2c78..5285caac 100644 --- a/prebuilts/gradle/ActiveNotifications/README.md +++ b/prebuilts/gradle/ActiveNotifications/README.md @@ -25,7 +25,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/ActiveNotifications/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActiveNotifications/gradle/wrapper/gradle-wrapper.properties index afb32963..179dd799 100644 --- a/prebuilts/gradle/ActiveNotifications/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActiveNotifications/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle b/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle index 4990ebf1..2ebef208 100644 --- a/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle +++ b/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle @@ -29,7 +29,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 4 diff --git a/prebuilts/gradle/ActivityInstrumentation/README.md b/prebuilts/gradle/ActivityInstrumentation/README.md index dd9a1bb1..890e7814 100644 --- a/prebuilts/gradle/ActivityInstrumentation/README.md +++ b/prebuilts/gradle/ActivityInstrumentation/README.md @@ -9,7 +9,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Getting Started diff --git a/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties index 0c71e760..179dd799 100644 --- a/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle b/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle index 17ab99fb..59337494 100644 --- a/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle +++ b/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle @@ -32,7 +32,7 @@ List dirs = [ android { compileSdkVersion 21 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 21 diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/README.md b/prebuilts/gradle/ActivitySceneTransitionBasic/README.md index 0e930377..48c97fed 100644 --- a/prebuilts/gradle/ActivitySceneTransitionBasic/README.md +++ b/prebuilts/gradle/ActivitySceneTransitionBasic/README.md @@ -20,7 +20,7 @@ Pre-requisites -------------- - Android SDK v21 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties index 46b1748c..d01acdcd 100644 --- a/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle b/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle index e1395285..dc664882 100644 --- a/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle +++ b/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle @@ -31,7 +31,7 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 19 diff --git a/prebuilts/gradle/AdvancedImmersiveMode/README.md b/prebuilts/gradle/AdvancedImmersiveMode/README.md index a00087de..3244267e 100644 --- a/prebuilts/gradle/AdvancedImmersiveMode/README.md +++ b/prebuilts/gradle/AdvancedImmersiveMode/README.md @@ -27,7 +27,7 @@ Pre-requisites -------------- - Android SDK v23 -- Android Build Tools v23.0.0 +- Android Build Tools v23.0.1 - Android Support Repository Screenshots diff --git a/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties index faba5b7a..0cde43e8 100644 --- a/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties +++ b/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip diff --git a/prebuilts/gradle/AgendaData/Application/build.gradle b/prebuilts/gradle/AgendaData/Application/build.gradle index 5e284131..3ba274f2 100644 --- a/prebuilts/gradle/AgendaData/Application/build.gradle +++ b/prebuilts/gradle/AgendaData/Application/build.gradle @@ -19,8 +19,9 @@ dependencies { compile "com.android.support:support-v4:23.0.0" compile "com.android.support:support-v13:23.0.0" compile "com.android.support:cardview-v7:23.0.0" - compile 'com.google.android.gms:play-services-wearable:7.3.0' - compile 'com.android.support:support-v13:23.0.0' + compile 'com.android.support:design:23.0.0' + compile 'com.google.android.gms:play-services-wearable:7.8.0' + compile 'com.android.support:support-v13:23.0.1' wearApp project(':Wearable') } @@ -34,11 +35,11 @@ List dirs = [ android { compileSdkVersion 23 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 18 - targetSdkVersion 22 + targetSdkVersion 23 } compileOptions { diff --git a/prebuilts/gradle/AgendaData/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/AgendaData/Application/src/main/AndroidManifest.xml index aa8a14a0..ad6cccde 100644 --- a/prebuilts/gradle/AgendaData/Application/src/main/AndroidManifest.xml +++ b/prebuilts/gradle/AgendaData/Application/src/main/AndroidManifest.xml @@ -18,16 +18,22 @@ package="com.example.android.wearable.agendadata"> + android:targetSdkVersion="23" /> + + + + + + android:allowBackup="true" + android:icon="@drawable/ic_launcher" + android:label="@string/app_name" + android:theme="@style/Theme.AppCompat.Light"> () { @@ -100,9 +203,8 @@ public class MainActivity extends Activity implements NodeApi.NodeListener, Conn deleteDataItems(result); } else { if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG,"onDeleteEventsClicked(): failed to get Data " + Log.d(TAG, "onDeleteEventsClicked(): failed to get Data " + "Items"); - } } } finally { @@ -120,9 +222,11 @@ public class MainActivity extends Activity implements NodeApi.NodeListener, Conn if (mGoogleApiClient.isConnected()) { for (final DataItem dataItem : dataItemList) { final Uri dataItemUri = dataItem.getUri(); - // In a real calendar application, this might delete the corresponding calendar - // event from the calendar data provider. In this sample, we simply delete the - // DataItem, but leave the phone's calendar data intact. + /* + * In a real calendar application, this might delete the corresponding calendar + * events from the calendar data provider. However, we simply delete the DataItem, + * but leave the phone's calendar data intact for this simple sample. + */ Wearable.DataApi.deleteDataItems(mGoogleApiClient, dataItemUri) .setResultCallback(new ResultCallback() { @Override @@ -141,17 +245,6 @@ public class MainActivity extends Activity implements NodeApi.NodeListener, Conn } } - private void appendLog(final String s) { - mLogTextView.post(new Runnable() { - @Override - public void run() { - mLogTextView.append(s); - mLogTextView.append("\n"); - mScroller.fullScroll(View.FOCUS_DOWN); - } - }); - } - @Override public void onPeerConnected(Node peer) { appendLog("Device connected"); @@ -165,7 +258,7 @@ public class MainActivity extends Activity implements NodeApi.NodeListener, Conn @Override public void onConnected(Bundle connectionHint) { if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "Connected to Google Api Service"); + Log.d(TAG, "Connected to Google Api Service."); } mResolvingError = false; Wearable.NodeApi.addListener(mGoogleApiClient, this); @@ -193,10 +286,77 @@ public class MainActivity extends Activity implements NodeApi.NodeListener, Conn result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR); } catch (IntentSender.SendIntentException e) { // There was an error with the resolution intent. Try again. + mResolvingError = false; mGoogleApiClient.connect(); } } else { mResolvingError = false; } } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (Log.isLoggable(TAG, Log.DEBUG)) { + Log.d(TAG, "onActivityResult request/result codes: " + requestCode + "/" + resultCode); + } + + if (requestCode == REQUEST_RESOLVE_ERROR) { + mResolvingError = false; + if (resultCode == RESULT_OK) { + // Make sure the app is not already connected or attempting to connect + if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) { + mGoogleApiClient.connect(); + } + } + } + } + + /** + * Callback received when a permissions request has been completed. + */ + @Override + public void onRequestPermissionsResult( + int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + + if (Log.isLoggable(TAG, Log.DEBUG)) { + Log.d(TAG, "onRequestPermissionsResult(): " + permissions); + } + + if (requestCode == REQUEST_CALENDAR_AND_CONTACTS) { + // BEGIN_INCLUDE(permissions_result) + // Received permission result for calendar permission. + Log.i(TAG, "Received response for Calendar permission request."); + + // Check if all required permissions have been granted. + if ((grantResults.length == 2) + && (grantResults[0] == PackageManager.PERMISSION_GRANTED) + && (grantResults[1] == PackageManager.PERMISSION_GRANTED)) { + // Calendar/Contact permissions have been granted, pull all calendar events + Log.i(TAG, "All permission has now been granted. Showing preview."); + Snackbar.make(mLayout, R.string.permisions_granted, Snackbar.LENGTH_SHORT).show(); + + pushCalendarToWear(); + + } else { + Log.i(TAG, "CALENDAR and/or CONTACT permissions were NOT granted."); + Snackbar.make(mLayout, R.string.permissions_denied, Snackbar.LENGTH_SHORT).show(); + } + // END_INCLUDE(permissions_result) + + } else { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + } + + private void appendLog(final String s) { + mLogTextView.post(new Runnable() { + @Override + public void run() { + mLogTextView.append(s); + mLogTextView.append("\n"); + mScroller.fullScroll(View.FOCUS_DOWN); + } + }); + } } diff --git a/prebuilts/gradle/AgendaData/Application/src/main/res/layout/main.xml b/prebuilts/gradle/AgendaData/Application/src/main/res/layout/main.xml index 8e82cdd4..57fc99a6 100644 --- a/prebuilts/gradle/AgendaData/Application/src/main/res/layout/main.xml +++ b/prebuilts/gradle/AgendaData/Application/src/main/res/layout/main.xml @@ -15,10 +15,17 @@ --> + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingBottom="@dimen/vertical_page_margin" + android:paddingLeft="@dimen/horizontal_page_margin" + android:paddingRight="@dimen/horizontal_page_margin" + android:paddingTop="@dimen/vertical_page_margin" + tools:context=".MainActivity">