From 5527cd8ca1a7b83078404d1abe0303733e0e5a72 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 9 Apr 2018 12:15:50 +0100 Subject: [PATCH] Add Android and iOS support to AudioPluginHost --- extras/AudioPluginHost/AudioPluginHost.jucer | 131 +- .../Builds/Android/app/CMakeLists.txt | 2516 +++++++++++++++ .../Builds/Android/app/build.gradle | 94 + .../app/src/debug/res/values/string.xml | 5 + .../Android/app/src/main/AndroidManifest.xml | 24 + .../vending/billing/IInAppBillingService.java | 971 ++++++ .../roli/juce/pluginhost/AudioPluginHost.java | 2764 +++++++++++++++++ .../pluginhost/SharingContentProvider.java | 138 + .../app/src/main/res/drawable-hdpi/icon.png | Bin 0 -> 34761 bytes .../app/src/main/res/drawable-ldpi/icon.png | Bin 0 -> 15111 bytes .../app/src/main/res/drawable-mdpi/icon.png | Bin 0 -> 18428 bytes .../app/src/main/res/drawable-xhdpi/icon.png | Bin 0 -> 44823 bytes .../app/src/release/res/values/string.xml | 5 + .../Builds/Android/build.gradle | 15 + .../wrapper/LICENSE-for-gradlewrapper.txt | 202 ++ .../Android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 1 + extras/AudioPluginHost/Builds/Android/gradlew | 160 + .../Builds/Android/gradlew.bat | 90 + .../Builds/Android/settings.gradle | 1 + .../Builds/LinuxMakefile/Makefile | 40 +- .../AudioPluginHost.xcodeproj/project.pbxproj | 92 +- .../AudioPluginHost/Builds/MacOSX/Icon.icns | Bin 0 -> 89670 bytes .../Builds/MacOSX/Info-App.plist | 4 +- .../AudioPluginHost_App.vcxproj | 29 +- .../AudioPluginHost_App.vcxproj.filters | 74 +- .../Builds/VisualStudio2013/icon.ico | Bin 0 -> 33530 bytes .../Builds/VisualStudio2013/resources.rc | 3 + .../AudioPluginHost_App.vcxproj | 29 +- .../AudioPluginHost_App.vcxproj.filters | 74 +- .../Builds/VisualStudio2015/icon.ico | Bin 0 -> 33530 bytes .../Builds/VisualStudio2015/resources.rc | 3 + .../AudioPluginHost_App.vcxproj | 29 +- .../AudioPluginHost_App.vcxproj.filters | 74 +- .../Builds/VisualStudio2017/icon.ico | Bin 0 -> 33530 bytes .../Builds/VisualStudio2017/resources.rc | 3 + .../AudioPluginHost.xcodeproj/project.pbxproj | 398 +++ .../AppIcon.appiconset/Contents.json | 158 + .../AppIcon.appiconset/Icon-29.png | Bin 0 -> 1650 bytes .../AppIcon.appiconset/Icon-29@2x.png | Bin 0 -> 4395 bytes .../AppIcon.appiconset/Icon-29@3x.png | Bin 0 -> 6732 bytes .../AppIcon.appiconset/Icon-60@2x.png | Bin 0 -> 10478 bytes .../AppIcon.appiconset/Icon-72.png | Bin 0 -> 4708 bytes .../AppIcon.appiconset/Icon-72@2x.png | Bin 0 -> 9823 bytes .../AppIcon.appiconset/Icon-76.png | Bin 0 -> 5368 bytes .../AppIcon.appiconset/Icon-76@2x.png | Bin 0 -> 10888 bytes .../AppIcon.appiconset/Icon-83.5@2x.png | Bin 0 -> 12870 bytes .../AppIcon.appiconset/Icon-@3x.png | Bin 0 -> 14731 bytes .../AppIcon.appiconset/Icon-AppStore-1024.png | Bin 0 -> 49618 bytes .../Icon-Notification-20@2x.png | Bin 0 -> 2303 bytes .../Icon-Notification-20@3x.png | Bin 0 -> 4687 bytes .../Icon-Notifications-20.png | Bin 0 -> 912 bytes .../Icon-Notifications-20@2x.png | Bin 0 -> 2303 bytes .../AppIcon.appiconset/Icon-Small-1.png | Bin 0 -> 1650 bytes .../AppIcon.appiconset/Icon-Small-50.png | Bin 0 -> 3433 bytes .../AppIcon.appiconset/Icon-Small-50@2x.png | Bin 0 -> 8292 bytes .../AppIcon.appiconset/Icon-Small@2x-1.png | Bin 0 -> 4395 bytes .../AppIcon.appiconset/Icon-Spotlight-40.png | Bin 0 -> 2303 bytes .../Icon-Spotlight-40@2x-1.png | Bin 0 -> 5235 bytes .../Icon-Spotlight-40@2x.png | Bin 0 -> 5235 bytes .../Icon-Spotlight-40@3x.png | Bin 0 -> 10478 bytes .../AppIcon.appiconset/Icon.png | Bin 0 -> 4180 bytes .../AppIcon.appiconset/Icon@2x.png | Bin 0 -> 9928 bytes .../LaunchImage.launchimage/Contents.json | 57 + .../LaunchImage-ipad-landscape-1x.png | Bin 0 -> 4904 bytes .../LaunchImage-ipad-landscape-2x.png | Bin 0 -> 15969 bytes .../LaunchImage-ipad-portrait-1x.png | Bin 0 -> 5350 bytes .../LaunchImage-ipad-portrait-2x.png | Bin 0 -> 16897 bytes .../LaunchImage-iphone-2x.png | Bin 0 -> 4542 bytes .../LaunchImage-iphone-retina4.png | Bin 0 -> 5356 bytes extras/AudioPluginHost/Builds/iOS/Icon.icns | Bin 0 -> 89670 bytes .../AudioPluginHost/Builds/iOS/Info-App.plist | 48 + .../JuceLibraryCode/AppConfig.h | 4 +- .../JuceLibraryCode/BinaryData.cpp | 698 +++++ .../JuceLibraryCode/BinaryData.h | 30 + .../JuceLibraryCode/JuceHeader.h | 1 + .../Source/{ => Filters}/FilterGraph.cpp | 20 +- .../Source/{ => Filters}/FilterGraph.h | 4 +- .../{ => Filters}/FilterIOConfiguration.cpp | 4 +- .../{ => Filters}/FilterIOConfiguration.h | 0 .../Source/Filters/InternalFilters.cpp | 399 +++ .../Source/{ => Filters}/InternalFilters.h | 0 extras/AudioPluginHost/Source/HostStartup.cpp | 31 +- .../Source/InternalFilters.cpp | 81 - extras/AudioPluginHost/Source/JUCEAppIcon.png | Bin 0 -> 45854 bytes .../Source/{ => UI}/GraphEditorPanel.cpp | 466 ++- .../Source/{ => UI}/GraphEditorPanel.h | 64 +- .../Source/{ => UI}/MainHostWindow.cpp | 84 +- .../Source/{ => UI}/MainHostWindow.h | 5 +- .../Source/{ => UI}/PluginWindow.h | 13 +- 90 files changed, 9777 insertions(+), 359 deletions(-) create mode 100644 extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt create mode 100644 extras/AudioPluginHost/Builds/Android/app/build.gradle create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/debug/res/values/string.xml create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/java/com/android/vending/billing/IInAppBillingService.java create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/AudioPluginHost.java create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/SharingContentProvider.java create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-hdpi/icon.png create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-ldpi/icon.png create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-mdpi/icon.png create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-xhdpi/icon.png create mode 100644 extras/AudioPluginHost/Builds/Android/app/src/release/res/values/string.xml create mode 100644 extras/AudioPluginHost/Builds/Android/build.gradle create mode 100644 extras/AudioPluginHost/Builds/Android/gradle/wrapper/LICENSE-for-gradlewrapper.txt create mode 100644 extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.jar create mode 100644 extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.properties create mode 100755 extras/AudioPluginHost/Builds/Android/gradlew create mode 100644 extras/AudioPluginHost/Builds/Android/gradlew.bat create mode 100644 extras/AudioPluginHost/Builds/Android/settings.gradle create mode 100644 extras/AudioPluginHost/Builds/MacOSX/Icon.icns create mode 100644 extras/AudioPluginHost/Builds/VisualStudio2013/icon.ico create mode 100644 extras/AudioPluginHost/Builds/VisualStudio2015/icon.ico create mode 100644 extras/AudioPluginHost/Builds/VisualStudio2017/icon.ico create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-29.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-72.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-76.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-@3x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-AppStore-1024.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@3x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Notifications-20.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Notifications-20@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon@2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-1x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-1x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-2x.png create mode 100644 extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-retina4.png create mode 100644 extras/AudioPluginHost/Builds/iOS/Icon.icns create mode 100644 extras/AudioPluginHost/Builds/iOS/Info-App.plist create mode 100644 extras/AudioPluginHost/JuceLibraryCode/BinaryData.cpp create mode 100644 extras/AudioPluginHost/JuceLibraryCode/BinaryData.h rename extras/AudioPluginHost/Source/{ => Filters}/FilterGraph.cpp (93%) rename extras/AudioPluginHost/Source/{ => Filters}/FilterGraph.h (95%) rename extras/AudioPluginHost/Source/{ => Filters}/FilterIOConfiguration.cpp (96%) rename extras/AudioPluginHost/Source/{ => Filters}/FilterIOConfiguration.h (100%) create mode 100644 extras/AudioPluginHost/Source/Filters/InternalFilters.cpp rename extras/AudioPluginHost/Source/{ => Filters}/InternalFilters.h (100%) delete mode 100644 extras/AudioPluginHost/Source/InternalFilters.cpp create mode 100644 extras/AudioPluginHost/Source/JUCEAppIcon.png rename extras/AudioPluginHost/Source/{ => UI}/GraphEditorPanel.cpp (60%) rename extras/AudioPluginHost/Source/{ => UI}/GraphEditorPanel.h (61%) rename extras/AudioPluginHost/Source/{ => UI}/MainHostWindow.cpp (84%) rename extras/AudioPluginHost/Source/{ => UI}/MainHostWindow.h (94%) rename extras/AudioPluginHost/Source/{ => UI}/PluginWindow.h (89%) diff --git a/extras/AudioPluginHost/AudioPluginHost.jucer b/extras/AudioPluginHost/AudioPluginHost.jucer index 42af1229c4..2311b456f8 100644 --- a/extras/AudioPluginHost/AudioPluginHost.jucer +++ b/extras/AudioPluginHost/AudioPluginHost.jucer @@ -2,11 +2,13 @@ + bundleIdentifier="com.roli.juce.pluginhost" jucerVersion="5.3.0" + companyName="ROLI Ltd." displaySplashScreen="0" reportAppUsage="0" + companyCopyright="ROLI Ltd."> + objCExtraSuffix="M73TRi" vst3Folder="" extraCompilerFlags="-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi" + smallIcon="c97aUr" bigIcon="c97aUr"> @@ -28,7 +30,8 @@ - + - + @@ -75,7 +79,8 @@ - + @@ -97,7 +102,8 @@ - + @@ -119,36 +125,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt new file mode 100644 index 0000000000..11a1f09e18 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt @@ -0,0 +1,2516 @@ +# Automatically generated makefile, created by the Projucer +# Don't edit this file! Your changes will be overwritten when you re-save the Projucer project! + +cmake_minimum_required(VERSION 3.4.1) + +SET(BINARY_NAME "juce_jni") + +add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") +set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") + +add_definitions("-DJUCE_ANDROID=1" "-DJUCE_ANDROID_API_VERSION=23" "-DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_roli_juce_pluginhost_AudioPluginHost" "-DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/roli/juce/pluginhost/AudioPluginHost\"" "-DJUCE_ANDROID_SHARING_CONTENT_PROVIDER_CLASSNAME=com_roli_juce_pluginhost_SharingContentProvider" "-DJUCE_ANDROID_SHARING_CONTENT_PROVIDER_CLASSPATH=\"com/roli/juce/pluginhost/SharingContentProvider\"" "-DJUCE_PUSH_NOTIFICATIONS=1" "-DJUCE_ANDROID_GL_ES_VERSION_3_0=1" "-DJUCER_ANDROIDSTUDIO_7F0E4A25=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000") + +include_directories( AFTER + "../../../JuceLibraryCode" + "../../../../../modules" + "${ANDROID_NDK}/sources/android/cpufeatures" +) + +enable_language(ASM) + +IF(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") + add_definitions("-DDEBUG=1" "-D_DEBUG=1") +ELSEIF(JUCE_BUILD_CONFIGURATION MATCHES "RELEASE") + add_definitions("-DNDEBUG=1") + if(NOT (ANDROID_ABI STREQUAL "mips" OR ANDROID_ABI STREQUAL "mips64")) + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto") + SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto") + ENDIF(NOT (ANDROID_ABI STREQUAL "mips" OR ANDROID_ABI STREQUAL "mips64")) +ELSE(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") + MESSAGE( FATAL_ERROR "No matching build-configuration found." ) +ENDIF(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") + +add_library( ${BINARY_NAME} + + SHARED + + "../../../Source/Filters/FilterGraph.cpp" + "../../../Source/Filters/FilterGraph.h" + "../../../Source/Filters/FilterIOConfiguration.cpp" + "../../../Source/Filters/FilterIOConfiguration.h" + "../../../Source/Filters/InternalFilters.cpp" + "../../../Source/Filters/InternalFilters.h" + "../../../Source/UI/GraphEditorPanel.cpp" + "../../../Source/UI/GraphEditorPanel.h" + "../../../Source/UI/MainHostWindow.cpp" + "../../../Source/UI/MainHostWindow.h" + "../../../Source/UI/PluginWindow.h" + "../../../Source/HostStartup.cpp" + "../../../Source/JUCEAppIcon.png" + "../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.h" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.cpp" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.h" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h" + "../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp" + "../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h" + "../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.cpp" + "../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.h" + "../../../../../modules/juce_audio_basics/effects/juce_Decibels.h" + "../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp" + "../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h" + "../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp" + "../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h" + "../../../../../modules/juce_audio_basics/effects/juce_LinearSmoothedValue.h" + "../../../../../modules/juce_audio_basics/effects/juce_Reverb.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiFile.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPENote.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" + "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" + "../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h" + "../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" + "../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" + "../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" + "../../../../../modules/juce_audio_basics/juce_audio_basics.mm" + "../../../../../modules/juce_audio_basics/juce_audio_basics.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h" + "../../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_android_Oboe.cpp" + "../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp" + "../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_ios_Audio.h" + "../../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp" + "../../../../../modules/juce_audio_devices/native/juce_linux_Bela.cpp" + "../../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h" + "../../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp" + "../../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp" + "../../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp" + "../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp" + "../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h" + "../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp" + "../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h" + "../../../../../modules/juce_audio_devices/juce_audio_devices.cpp" + "../../../../../modules/juce_audio_devices/juce_audio_devices.mm" + "../../../../../modules/juce_audio_devices/juce_audio_devices.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/crc.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/float.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/lpc.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder_framing.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/window.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitwriter.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/crc.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/float.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/format.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/memory.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder_framing.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/window_flac.c" + "../../../../../modules/juce_audio_formats/codecs/flac/all.h" + "../../../../../modules/juce_audio_formats/codecs/flac/alloc.h" + "../../../../../modules/juce_audio_formats/codecs/flac/assert.h" + "../../../../../modules/juce_audio_formats/codecs/flac/callback.h" + "../../../../../modules/juce_audio_formats/codecs/flac/compat.h" + "../../../../../modules/juce_audio_formats/codecs/flac/endswap.h" + "../../../../../modules/juce_audio_formats/codecs/flac/export.h" + "../../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt" + "../../../../../modules/juce_audio_formats/codecs/flac/format.h" + "../../../../../modules/juce_audio_formats/codecs/flac/metadata.h" + "../../../../../modules/juce_audio_formats/codecs/flac/ordinals.h" + "../../../../../modules/juce_audio_formats/codecs/flac/stream_decoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/stream_encoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/win_utf8_io.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_stereo.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/floor/floor_books.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/uncoupled/res_books_uncoupled.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44p51.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44u.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_8.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_16.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/block.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/info.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/masking.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/res0.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/sharedbook.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/codec.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/Ogg Vorbis Licence.txt" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/ogg.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/os_types.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisenc.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h" + "../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h" + "../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp" + "../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h" + "../../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h" + "../../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp" + "../../../../../modules/juce_audio_formats/sampler/juce_Sampler.h" + "../../../../../modules/juce_audio_formats/juce_audio_formats.cpp" + "../../../../../modules/juce_audio_formats/juce_audio_formats.mm" + "../../../../../modules/juce_audio_formats/juce_audio_formats.h" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" + "../../../../../modules/juce_audio_processors/format_types/juce_AU_Shared.h" + "../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm" + "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTCommon.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h" + "../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h" + "../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h" + "../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp" + "../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" + "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" + "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" + "../../../../../modules/juce_audio_processors/juce_audio_processors.h" + "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" + "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" + "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" + "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" + "../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" + "../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" + "../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" + "../../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp" + "../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDBurner.mm" + "../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDReader.mm" + "../../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm" + "../../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp" + "../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDBurner.cpp" + "../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDReader.cpp" + "../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp" + "../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h" + "../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.cpp" + "../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.h" + "../../../../../modules/juce_audio_utils/juce_audio_utils.cpp" + "../../../../../modules/juce_audio_utils/juce_audio_utils.mm" + "../../../../../modules/juce_audio_utils/juce_audio_utils.h" + "../../../../../modules/juce_core/containers/juce_AbstractFifo.cpp" + "../../../../../modules/juce_core/containers/juce_AbstractFifo.h" + "../../../../../modules/juce_core/containers/juce_Array.h" + "../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h" + "../../../../../modules/juce_core/containers/juce_DynamicObject.cpp" + "../../../../../modules/juce_core/containers/juce_DynamicObject.h" + "../../../../../modules/juce_core/containers/juce_ElementComparator.h" + "../../../../../modules/juce_core/containers/juce_HashMap.h" + "../../../../../modules/juce_core/containers/juce_HashMap_test.cpp" + "../../../../../modules/juce_core/containers/juce_LinkedListPointer.h" + "../../../../../modules/juce_core/containers/juce_ListenerList.h" + "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" + "../../../../../modules/juce_core/containers/juce_NamedValueSet.h" + "../../../../../modules/juce_core/containers/juce_OwnedArray.h" + "../../../../../modules/juce_core/containers/juce_PropertySet.cpp" + "../../../../../modules/juce_core/containers/juce_PropertySet.h" + "../../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h" + "../../../../../modules/juce_core/containers/juce_ScopedValueSetter.h" + "../../../../../modules/juce_core/containers/juce_SortedSet.h" + "../../../../../modules/juce_core/containers/juce_SparseSet.h" + "../../../../../modules/juce_core/containers/juce_Variant.cpp" + "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/files/juce_DirectoryIterator.cpp" + "../../../../../modules/juce_core/files/juce_DirectoryIterator.h" + "../../../../../modules/juce_core/files/juce_File.cpp" + "../../../../../modules/juce_core/files/juce_File.h" + "../../../../../modules/juce_core/files/juce_FileFilter.cpp" + "../../../../../modules/juce_core/files/juce_FileFilter.h" + "../../../../../modules/juce_core/files/juce_FileInputStream.cpp" + "../../../../../modules/juce_core/files/juce_FileInputStream.h" + "../../../../../modules/juce_core/files/juce_FileOutputStream.cpp" + "../../../../../modules/juce_core/files/juce_FileOutputStream.h" + "../../../../../modules/juce_core/files/juce_FileSearchPath.cpp" + "../../../../../modules/juce_core/files/juce_FileSearchPath.h" + "../../../../../modules/juce_core/files/juce_MemoryMappedFile.h" + "../../../../../modules/juce_core/files/juce_TemporaryFile.cpp" + "../../../../../modules/juce_core/files/juce_TemporaryFile.h" + "../../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp" + "../../../../../modules/juce_core/files/juce_WildcardFileFilter.h" + "../../../../../modules/juce_core/javascript/juce_Javascript.cpp" + "../../../../../modules/juce_core/javascript/juce_Javascript.h" + "../../../../../modules/juce_core/javascript/juce_JSON.cpp" + "../../../../../modules/juce_core/javascript/juce_JSON.h" + "../../../../../modules/juce_core/logging/juce_FileLogger.cpp" + "../../../../../modules/juce_core/logging/juce_FileLogger.h" + "../../../../../modules/juce_core/logging/juce_Logger.cpp" + "../../../../../modules/juce_core/logging/juce_Logger.h" + "../../../../../modules/juce_core/maths/juce_BigInteger.cpp" + "../../../../../modules/juce_core/maths/juce_BigInteger.h" + "../../../../../modules/juce_core/maths/juce_Expression.cpp" + "../../../../../modules/juce_core/maths/juce_Expression.h" + "../../../../../modules/juce_core/maths/juce_MathsFunctions.h" + "../../../../../modules/juce_core/maths/juce_NormalisableRange.h" + "../../../../../modules/juce_core/maths/juce_Random.cpp" + "../../../../../modules/juce_core/maths/juce_Random.h" + "../../../../../modules/juce_core/maths/juce_Range.h" + "../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" + "../../../../../modules/juce_core/memory/juce_Atomic.h" + "../../../../../modules/juce_core/memory/juce_ByteOrder.h" + "../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" + "../../../../../modules/juce_core/memory/juce_HeapBlock.h" + "../../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h" + "../../../../../modules/juce_core/memory/juce_Memory.h" + "../../../../../modules/juce_core/memory/juce_MemoryBlock.cpp" + "../../../../../modules/juce_core/memory/juce_MemoryBlock.h" + "../../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h" + "../../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h" + "../../../../../modules/juce_core/memory/juce_ScopedPointer.h" + "../../../../../modules/juce_core/memory/juce_SharedResourcePointer.h" + "../../../../../modules/juce_core/memory/juce_Singleton.h" + "../../../../../modules/juce_core/memory/juce_WeakReference.h" + "../../../../../modules/juce_core/misc/juce_Result.cpp" + "../../../../../modules/juce_core/misc/juce_Result.h" + "../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp" + "../../../../../modules/juce_core/misc/juce_RuntimePermissions.h" + "../../../../../modules/juce_core/misc/juce_StdFunctionCompat.cpp" + "../../../../../modules/juce_core/misc/juce_StdFunctionCompat.h" + "../../../../../modules/juce_core/misc/juce_Uuid.cpp" + "../../../../../modules/juce_core/misc/juce_Uuid.h" + "../../../../../modules/juce_core/misc/juce_WindowsRegistry.h" + "../../../../../modules/juce_core/native/juce_android_Files.cpp" + "../../../../../modules/juce_core/native/juce_android_JNIHelpers.h" + "../../../../../modules/juce_core/native/juce_android_Misc.cpp" + "../../../../../modules/juce_core/native/juce_android_Network.cpp" + "../../../../../modules/juce_core/native/juce_android_RuntimePermissions.cpp" + "../../../../../modules/juce_core/native/juce_android_SystemStats.cpp" + "../../../../../modules/juce_core/native/juce_android_Threads.cpp" + "../../../../../modules/juce_core/native/juce_BasicNativeHeaders.h" + "../../../../../modules/juce_core/native/juce_curl_Network.cpp" + "../../../../../modules/juce_core/native/juce_linux_CommonFile.cpp" + "../../../../../modules/juce_core/native/juce_linux_Files.cpp" + "../../../../../modules/juce_core/native/juce_linux_Network.cpp" + "../../../../../modules/juce_core/native/juce_linux_SystemStats.cpp" + "../../../../../modules/juce_core/native/juce_linux_Threads.cpp" + "../../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h" + "../../../../../modules/juce_core/native/juce_mac_Files.mm" + "../../../../../modules/juce_core/native/juce_mac_Network.mm" + "../../../../../modules/juce_core/native/juce_mac_Strings.mm" + "../../../../../modules/juce_core/native/juce_mac_SystemStats.mm" + "../../../../../modules/juce_core/native/juce_mac_Threads.mm" + "../../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h" + "../../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp" + "../../../../../modules/juce_core/native/juce_posix_SharedCode.h" + "../../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h" + "../../../../../modules/juce_core/native/juce_win32_Files.cpp" + "../../../../../modules/juce_core/native/juce_win32_Network.cpp" + "../../../../../modules/juce_core/native/juce_win32_Registry.cpp" + "../../../../../modules/juce_core/native/juce_win32_SystemStats.cpp" + "../../../../../modules/juce_core/native/juce_win32_Threads.cpp" + "../../../../../modules/juce_core/network/juce_IPAddress.cpp" + "../../../../../modules/juce_core/network/juce_IPAddress.h" + "../../../../../modules/juce_core/network/juce_MACAddress.cpp" + "../../../../../modules/juce_core/network/juce_MACAddress.h" + "../../../../../modules/juce_core/network/juce_NamedPipe.cpp" + "../../../../../modules/juce_core/network/juce_NamedPipe.h" + "../../../../../modules/juce_core/network/juce_Socket.cpp" + "../../../../../modules/juce_core/network/juce_Socket.h" + "../../../../../modules/juce_core/network/juce_URL.cpp" + "../../../../../modules/juce_core/network/juce_URL.h" + "../../../../../modules/juce_core/network/juce_WebInputStream.cpp" + "../../../../../modules/juce_core/network/juce_WebInputStream.h" + "../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp" + "../../../../../modules/juce_core/streams/juce_BufferedInputStream.h" + "../../../../../modules/juce_core/streams/juce_FileInputSource.cpp" + "../../../../../modules/juce_core/streams/juce_FileInputSource.h" + "../../../../../modules/juce_core/streams/juce_InputSource.h" + "../../../../../modules/juce_core/streams/juce_InputStream.cpp" + "../../../../../modules/juce_core/streams/juce_InputStream.h" + "../../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp" + "../../../../../modules/juce_core/streams/juce_MemoryInputStream.h" + "../../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp" + "../../../../../modules/juce_core/streams/juce_MemoryOutputStream.h" + "../../../../../modules/juce_core/streams/juce_OutputStream.cpp" + "../../../../../modules/juce_core/streams/juce_OutputStream.h" + "../../../../../modules/juce_core/streams/juce_SubregionStream.cpp" + "../../../../../modules/juce_core/streams/juce_SubregionStream.h" + "../../../../../modules/juce_core/streams/juce_URLInputSource.cpp" + "../../../../../modules/juce_core/streams/juce_URLInputSource.h" + "../../../../../modules/juce_core/system/juce_CompilerSupport.h" + "../../../../../modules/juce_core/system/juce_PlatformDefs.h" + "../../../../../modules/juce_core/system/juce_StandardHeader.h" + "../../../../../modules/juce_core/system/juce_SystemStats.cpp" + "../../../../../modules/juce_core/system/juce_SystemStats.h" + "../../../../../modules/juce_core/system/juce_TargetPlatform.h" + "../../../../../modules/juce_core/text/juce_Base64.cpp" + "../../../../../modules/juce_core/text/juce_Base64.h" + "../../../../../modules/juce_core/text/juce_CharacterFunctions.cpp" + "../../../../../modules/juce_core/text/juce_CharacterFunctions.h" + "../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h" + "../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h" + "../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h" + "../../../../../modules/juce_core/text/juce_CharPointer_UTF32.h" + "../../../../../modules/juce_core/text/juce_Identifier.cpp" + "../../../../../modules/juce_core/text/juce_Identifier.h" + "../../../../../modules/juce_core/text/juce_LocalisedStrings.cpp" + "../../../../../modules/juce_core/text/juce_LocalisedStrings.h" + "../../../../../modules/juce_core/text/juce_NewLine.h" + "../../../../../modules/juce_core/text/juce_String.cpp" + "../../../../../modules/juce_core/text/juce_String.h" + "../../../../../modules/juce_core/text/juce_StringArray.cpp" + "../../../../../modules/juce_core/text/juce_StringArray.h" + "../../../../../modules/juce_core/text/juce_StringPairArray.cpp" + "../../../../../modules/juce_core/text/juce_StringPairArray.h" + "../../../../../modules/juce_core/text/juce_StringPool.cpp" + "../../../../../modules/juce_core/text/juce_StringPool.h" + "../../../../../modules/juce_core/text/juce_StringRef.h" + "../../../../../modules/juce_core/text/juce_TextDiff.cpp" + "../../../../../modules/juce_core/text/juce_TextDiff.h" + "../../../../../modules/juce_core/threads/juce_ChildProcess.cpp" + "../../../../../modules/juce_core/threads/juce_ChildProcess.h" + "../../../../../modules/juce_core/threads/juce_CriticalSection.h" + "../../../../../modules/juce_core/threads/juce_DynamicLibrary.h" + "../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp" + "../../../../../modules/juce_core/threads/juce_HighResolutionTimer.h" + "../../../../../modules/juce_core/threads/juce_InterProcessLock.h" + "../../../../../modules/juce_core/threads/juce_Process.h" + "../../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp" + "../../../../../modules/juce_core/threads/juce_ReadWriteLock.h" + "../../../../../modules/juce_core/threads/juce_ScopedLock.h" + "../../../../../modules/juce_core/threads/juce_ScopedReadLock.h" + "../../../../../modules/juce_core/threads/juce_ScopedWriteLock.h" + "../../../../../modules/juce_core/threads/juce_SpinLock.h" + "../../../../../modules/juce_core/threads/juce_Thread.cpp" + "../../../../../modules/juce_core/threads/juce_Thread.h" + "../../../../../modules/juce_core/threads/juce_ThreadLocalValue.h" + "../../../../../modules/juce_core/threads/juce_ThreadPool.cpp" + "../../../../../modules/juce_core/threads/juce_ThreadPool.h" + "../../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp" + "../../../../../modules/juce_core/threads/juce_TimeSliceThread.h" + "../../../../../modules/juce_core/threads/juce_WaitableEvent.h" + "../../../../../modules/juce_core/time/juce_PerformanceCounter.cpp" + "../../../../../modules/juce_core/time/juce_PerformanceCounter.h" + "../../../../../modules/juce_core/time/juce_RelativeTime.cpp" + "../../../../../modules/juce_core/time/juce_RelativeTime.h" + "../../../../../modules/juce_core/time/juce_Time.cpp" + "../../../../../modules/juce_core/time/juce_Time.h" + "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp" + "../../../../../modules/juce_core/unit_tests/juce_UnitTest.h" + "../../../../../modules/juce_core/xml/juce_XmlDocument.cpp" + "../../../../../modules/juce_core/xml/juce_XmlDocument.h" + "../../../../../modules/juce_core/xml/juce_XmlElement.cpp" + "../../../../../modules/juce_core/xml/juce_XmlElement.h" + "../../../../../modules/juce_core/zip/zlib/adler32.c" + "../../../../../modules/juce_core/zip/zlib/compress.c" + "../../../../../modules/juce_core/zip/zlib/crc32.c" + "../../../../../modules/juce_core/zip/zlib/crc32.h" + "../../../../../modules/juce_core/zip/zlib/deflate.c" + "../../../../../modules/juce_core/zip/zlib/deflate.h" + "../../../../../modules/juce_core/zip/zlib/infback.c" + "../../../../../modules/juce_core/zip/zlib/inffast.c" + "../../../../../modules/juce_core/zip/zlib/inffast.h" + "../../../../../modules/juce_core/zip/zlib/inffixed.h" + "../../../../../modules/juce_core/zip/zlib/inflate.c" + "../../../../../modules/juce_core/zip/zlib/inflate.h" + "../../../../../modules/juce_core/zip/zlib/inftrees.c" + "../../../../../modules/juce_core/zip/zlib/inftrees.h" + "../../../../../modules/juce_core/zip/zlib/trees.c" + "../../../../../modules/juce_core/zip/zlib/trees.h" + "../../../../../modules/juce_core/zip/zlib/uncompr.c" + "../../../../../modules/juce_core/zip/zlib/zconf.h" + "../../../../../modules/juce_core/zip/zlib/zconf.in.h" + "../../../../../modules/juce_core/zip/zlib/zlib.h" + "../../../../../modules/juce_core/zip/zlib/zutil.c" + "../../../../../modules/juce_core/zip/zlib/zutil.h" + "../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp" + "../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h" + "../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp" + "../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h" + "../../../../../modules/juce_core/zip/juce_ZipFile.cpp" + "../../../../../modules/juce_core/zip/juce_ZipFile.h" + "../../../../../modules/juce_core/juce_core.cpp" + "../../../../../modules/juce_core/juce_core.mm" + "../../../../../modules/juce_core/juce_core.h" + "../../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp" + "../../../../../modules/juce_cryptography/encryption/juce_BlowFish.h" + "../../../../../modules/juce_cryptography/encryption/juce_Primes.cpp" + "../../../../../modules/juce_cryptography/encryption/juce_Primes.h" + "../../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp" + "../../../../../modules/juce_cryptography/encryption/juce_RSAKey.h" + "../../../../../modules/juce_cryptography/hashing/juce_MD5.cpp" + "../../../../../modules/juce_cryptography/hashing/juce_MD5.h" + "../../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp" + "../../../../../modules/juce_cryptography/hashing/juce_SHA256.h" + "../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp" + "../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h" + "../../../../../modules/juce_cryptography/juce_cryptography.cpp" + "../../../../../modules/juce_cryptography/juce_cryptography.mm" + "../../../../../modules/juce_cryptography/juce_cryptography.h" + "../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp" + "../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h" + "../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp" + "../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h" + "../../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h" + "../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp" + "../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h" + "../../../../../modules/juce_data_structures/values/juce_CachedValue.cpp" + "../../../../../modules/juce_data_structures/values/juce_CachedValue.h" + "../../../../../modules/juce_data_structures/values/juce_Value.cpp" + "../../../../../modules/juce_data_structures/values/juce_Value.h" + "../../../../../modules/juce_data_structures/values/juce_ValueTree.cpp" + "../../../../../modules/juce_data_structures/values/juce_ValueTree.h" + "../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp" + "../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h" + "../../../../../modules/juce_data_structures/values/juce_ValueWithDefault.h" + "../../../../../modules/juce_data_structures/juce_data_structures.cpp" + "../../../../../modules/juce_data_structures/juce_data_structures.mm" + "../../../../../modules/juce_data_structures/juce_data_structures.h" + "../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp" + "../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h" + "../../../../../modules/juce_events/broadcasters/juce_ActionListener.h" + "../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp" + "../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h" + "../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp" + "../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h" + "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" + "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" + "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h" + "../../../../../modules/juce_events/messages/juce_ApplicationBase.cpp" + "../../../../../modules/juce_events/messages/juce_ApplicationBase.h" + "../../../../../modules/juce_events/messages/juce_CallbackMessage.h" + "../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp" + "../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h" + "../../../../../modules/juce_events/messages/juce_Initialisation.h" + "../../../../../modules/juce_events/messages/juce_Message.h" + "../../../../../modules/juce_events/messages/juce_MessageListener.cpp" + "../../../../../modules/juce_events/messages/juce_MessageListener.h" + "../../../../../modules/juce_events/messages/juce_MessageManager.cpp" + "../../../../../modules/juce_events/messages/juce_MessageManager.h" + "../../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h" + "../../../../../modules/juce_events/messages/juce_NotificationType.h" + "../../../../../modules/juce_events/native/juce_android_Messaging.cpp" + "../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" + "../../../../../modules/juce_events/native/juce_linux_EventLoop.h" + "../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" + "../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" + "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" + "../../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h" + "../../../../../modules/juce_events/native/juce_win32_Messaging.cpp" + "../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.cpp" + "../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.h" + "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" + "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_Timer.cpp" + "../../../../../modules/juce_events/timers/juce_Timer.h" + "../../../../../modules/juce_events/juce_events.cpp" + "../../../../../modules/juce_events/juce_events.mm" + "../../../../../modules/juce_events/juce_events.h" + "../../../../../modules/juce_graphics/colour/juce_Colour.cpp" + "../../../../../modules/juce_graphics/colour/juce_Colour.h" + "../../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp" + "../../../../../modules/juce_graphics/colour/juce_ColourGradient.h" + "../../../../../modules/juce_graphics/colour/juce_Colours.cpp" + "../../../../../modules/juce_graphics/colour/juce_Colours.h" + "../../../../../modules/juce_graphics/colour/juce_FillType.cpp" + "../../../../../modules/juce_graphics/colour/juce_FillType.h" + "../../../../../modules/juce_graphics/colour/juce_PixelFormats.h" + "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp" + "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h" + "../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp" + "../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h" + "../../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp" + "../../../../../modules/juce_graphics/effects/juce_GlowEffect.h" + "../../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h" + "../../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp" + "../../../../../modules/juce_graphics/fonts/juce_AttributedString.h" + "../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp" + "../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h" + "../../../../../modules/juce_graphics/fonts/juce_Font.cpp" + "../../../../../modules/juce_graphics/fonts/juce_Font.h" + "../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp" + "../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h" + "../../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp" + "../../../../../modules/juce_graphics/fonts/juce_TextLayout.h" + "../../../../../modules/juce_graphics/fonts/juce_Typeface.cpp" + "../../../../../modules/juce_graphics/fonts/juce_Typeface.h" + "../../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp" + "../../../../../modules/juce_graphics/geometry/juce_AffineTransform.h" + "../../../../../modules/juce_graphics/geometry/juce_BorderSize.h" + "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp" + "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" + "../../../../../modules/juce_graphics/geometry/juce_Line.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" + "../../../../../modules/juce_graphics/geometry/juce_Path.h" + "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" + "../../../../../modules/juce_graphics/geometry/juce_PathIterator.h" + "../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp" + "../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h" + "../../../../../modules/juce_graphics/geometry/juce_Point.h" + "../../../../../modules/juce_graphics/geometry/juce_Rectangle.h" + "../../../../../modules/juce_graphics/geometry/juce_RectangleList.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/cderror.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcapimin.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jccoefct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcdctmgr.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcinit.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcmainct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcmarker.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcmaster.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jconfig.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcprepct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcsample.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jctrans.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdapistd.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdcoefct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdcolor.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdct.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdinput.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmainct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmarker.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmaster.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmerge.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdphuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdsample.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdtrans.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jerror.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jerror.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jfdctflt.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jfdctfst.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jfdctint.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctfst.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctint.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctred.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jinclude.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmemmgr.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmemnobs.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmemsys.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmorecfg.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jpegint.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jpeglib.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jquant1.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jutils.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jversion.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/transupp.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/transupp.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/libpng_readme.txt" + "../../../../../modules/juce_graphics/image_formats/pnglib/png.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/png.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngerror.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngget.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngmem.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngpread.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngpriv.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngread.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngrtran.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngset.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngstruct.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwio.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwrite.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwtran.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwutil.c" + "../../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp" + "../../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp" + "../../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp" + "../../../../../modules/juce_graphics/images/juce_Image.cpp" + "../../../../../modules/juce_graphics/images/juce_Image.h" + "../../../../../modules/juce_graphics/images/juce_ImageCache.cpp" + "../../../../../modules/juce_graphics/images/juce_ImageCache.h" + "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp" + "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h" + "../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp" + "../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h" + "../../../../../modules/juce_graphics/native/juce_android_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp" + "../../../../../modules/juce_graphics/native/juce_android_IconHelpers.cpp" + "../../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_linux_IconHelpers.cpp" + "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h" + "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm" + "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h" + "../../../../../modules/juce_graphics/native/juce_mac_Fonts.mm" + "../../../../../modules/juce_graphics/native/juce_mac_IconHelpers.cpp" + "../../../../../modules/juce_graphics/native/juce_RenderingHelpers.h" + "../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h" + "../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_IconHelpers.cpp" + "../../../../../modules/juce_graphics/placement/juce_Justification.h" + "../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp" + "../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h" + "../../../../../modules/juce_graphics/juce_graphics.cpp" + "../../../../../modules/juce_graphics/juce_graphics.mm" + "../../../../../modules/juce_graphics/juce_graphics.h" + "../../../../../modules/juce_gui_basics/application/juce_Application.cpp" + "../../../../../modules/juce_gui_basics/application/juce_Application.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_Button.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_Button.h" + "../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_TextButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h" + "../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h" + "../../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h" + "../../../../../modules/juce_gui_basics/components/juce_Component.cpp" + "../../../../../modules/juce_gui_basics/components/juce_Component.h" + "../../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp" + "../../../../../modules/juce_gui_basics/components/juce_ComponentListener.h" + "../../../../../modules/juce_gui_basics/components/juce_Desktop.cpp" + "../../../../../modules/juce_gui_basics/components/juce_Desktop.h" + "../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp" + "../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h" + "../../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_Drawable.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h" + "../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h" + "../../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h" + "../../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h" + "../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h" + "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h" + "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h" + "../../../../../modules/juce_gui_basics/layout/juce_Grid.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_Grid.h" + "../../../../../modules/juce_gui_basics/layout/juce_GridItem.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_GridItem.h" + "../../../../../modules/juce_gui_basics/layout/juce_GridUnitTests.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h" + "../../../../../modules/juce_gui_basics/layout/juce_SidePanel.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_SidePanel.h" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_Viewport.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h" + "../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h" + "../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h" + "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" + "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" + "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" + "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h" + "../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h" + "../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h" + "../../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h" + "../../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h" + "../../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h" + "../../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h" + "../../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h" + "../../../../../modules/juce_gui_basics/native/juce_android_ContentSharer.cpp" + "../../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp" + "../../../../../modules/juce_gui_basics/native/juce_common_MimeTypes.cpp" + "../../../../../modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp" + "../../../../../modules/juce_gui_basics/native/juce_ios_FileChooser.mm" + "../../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm" + "../../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm" + "../../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11.cpp" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11.h" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11_Clipboard.cpp" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp" + "../../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm" + "../../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h" + "../../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp" + "../../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h" + "../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h" + "../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_Label.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_Label.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ListBox.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h" + "../../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_Slider.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h" + "../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TreeView.h" + "../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h" + "../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h" + "../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h" + "../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h" + "../../../../../modules/juce_gui_basics/juce_gui_basics.cpp" + "../../../../../modules/juce_gui_basics/juce_gui_basics.mm" + "../../../../../modules/juce_gui_basics/juce_gui_basics.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h" + "../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp" + "../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h" + "../../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_XEmbedComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h" + "../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h" + "../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h" + "../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h" + "../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.h" + "../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h" + "../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h" + "../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h" + "../../../../../modules/juce_gui_extra/native/juce_android_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm" + "../../../../../modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp" + "../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" + "../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" + "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" + "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp" + "../../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm" + "../../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp" + "../../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp" + "../../../../../modules/juce_gui_extra/juce_gui_extra.cpp" + "../../../../../modules/juce_gui_extra/juce_gui_extra.mm" + "../../../../../modules/juce_gui_extra/juce_gui_extra.h" + "../../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h" + "../../../../../modules/juce_opengl/geometry/juce_Matrix3D.h" + "../../../../../modules/juce_opengl/geometry/juce_Quaternion.h" + "../../../../../modules/juce_opengl/geometry/juce_Vector3D.h" + "../../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_android.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_ios.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_linux_X11.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_win32.h" + "../../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h" + "../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp" + "../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h" + "../../../../../modules/juce_opengl/juce_opengl.cpp" + "../../../../../modules/juce_opengl/juce_opengl.mm" + "../../../../../modules/juce_opengl/juce_opengl.h" + "../../../../../modules/juce_video/capture/juce_CameraDevice.cpp" + "../../../../../modules/juce_video/capture/juce_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_android_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_mac_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_mac_Video.h" + "../../../../../modules/juce_video/native/juce_win32_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_win32_Video.h" + "../../../../../modules/juce_video/playback/juce_VideoComponent.cpp" + "../../../../../modules/juce_video/playback/juce_VideoComponent.h" + "../../../../../modules/juce_video/juce_video.cpp" + "../../../../../modules/juce_video/juce_video.mm" + "../../../../../modules/juce_video/juce_video.h" + "../../../JuceLibraryCode/AppConfig.h" + "../../../JuceLibraryCode/BinaryData.cpp" + "../../../JuceLibraryCode/BinaryData.h" + "../../../JuceLibraryCode/include_juce_audio_basics.cpp" + "../../../JuceLibraryCode/include_juce_audio_devices.cpp" + "../../../JuceLibraryCode/include_juce_audio_formats.cpp" + "../../../JuceLibraryCode/include_juce_audio_processors.cpp" + "../../../JuceLibraryCode/include_juce_audio_utils.cpp" + "../../../JuceLibraryCode/include_juce_core.cpp" + "../../../JuceLibraryCode/include_juce_cryptography.cpp" + "../../../JuceLibraryCode/include_juce_data_structures.cpp" + "../../../JuceLibraryCode/include_juce_events.cpp" + "../../../JuceLibraryCode/include_juce_graphics.cpp" + "../../../JuceLibraryCode/include_juce_gui_basics.cpp" + "../../../JuceLibraryCode/include_juce_gui_extra.cpp" + "../../../JuceLibraryCode/include_juce_opengl.cpp" + "../../../JuceLibraryCode/include_juce_video.cpp" + "../../../JuceLibraryCode/JuceHeader.h" +) + +set_source_files_properties("../../../Source/Filters/FilterGraph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/Filters/FilterIOConfiguration.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/Filters/InternalFilters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/UI/GraphEditorPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/UI/MainHostWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/UI/PluginWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/JUCEAppIcon.png" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_LinearSmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPENote.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_Oboe.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_ios_Audio.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_Bela.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/juce_audio_devices.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/juce_audio_devices.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/juce_audio_devices.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/crc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/float.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/lpc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder_framing.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/window.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitwriter.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/crc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/float.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/format.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/memory.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder_framing.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/window_flac.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/alloc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/assert.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/callback.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/compat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/endswap.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/export.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/format.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/metadata.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/ordinals.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/stream_decoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/stream_encoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/win_utf8_io.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_stereo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/floor/floor_books.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/uncoupled/res_books_uncoupled.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44p51.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44u.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/block.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/info.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/masking.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/res0.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/sharedbook.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/codec.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/Ogg Vorbis Licence.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/ogg.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/os_types.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisenc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/sampler/juce_Sampler.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/juce_audio_formats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/juce_audio_formats.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/juce_audio_formats.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_AU_Shared.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTCommon.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDBurner.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDReader.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDBurner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/juce_audio_utils.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/juce_audio_utils.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/juce_audio_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_AbstractFifo.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_AbstractFifo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Array.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_DynamicObject.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_DynamicObject.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ElementComparator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_HashMap.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_HashMap_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_LinkedListPointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ListenerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ScopedValueSetter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_SortedSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_SparseSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Variant.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Variant.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_DirectoryIterator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_DirectoryIterator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_File.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_File.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileOutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileOutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileSearchPath.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileSearchPath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_MemoryMappedFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_TemporaryFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_TemporaryFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_WildcardFileFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_Javascript.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_Javascript.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_JSON.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_JSON.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_FileLogger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_FileLogger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_Logger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_Logger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_BigInteger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_BigInteger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Expression.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Expression.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_MathsFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_NormalisableRange.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_HeapBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_Memory.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_MemoryBlock.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_MemoryBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ScopedPointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_SharedResourcePointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_Singleton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_WeakReference.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Result.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Result.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_RuntimePermissions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_StdFunctionCompat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_StdFunctionCompat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Uuid.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Uuid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_WindowsRegistry.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Files.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_JNIHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Misc.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_RuntimePermissions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Threads.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_BasicNativeHeaders.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_curl_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_CommonFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_Files.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_Threads.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Files.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Network.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Strings.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_SystemStats.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Threads.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_posix_SharedCode.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Files.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Registry.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Threads.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_IPAddress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_IPAddress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_MACAddress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_MACAddress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_NamedPipe.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_NamedPipe.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_Socket.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_Socket.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_URL.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_URL.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_WebInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_WebInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_BufferedInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_FileInputSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_FileInputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_InputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_InputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_InputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryOutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_OutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_OutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_SubregionStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_SubregionStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_URLInputSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_URLInputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_CompilerSupport.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_PlatformDefs.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_StandardHeader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_SystemStats.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_TargetPlatform.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Base64.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Base64.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharacterFunctions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharacterFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_UTF32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Identifier.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Identifier.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_LocalisedStrings.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_LocalisedStrings.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_NewLine.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_String.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_String.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPairArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPairArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPool.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringRef.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_TextDiff.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_TextDiff.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ChildProcess.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ChildProcess.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_CriticalSection.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_DynamicLibrary.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_HighResolutionTimer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_InterProcessLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_Process.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ReadWriteLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ScopedLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ScopedReadLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ScopedWriteLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_SpinLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_Thread.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_Thread.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ThreadLocalValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ThreadPool.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ThreadPool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_TimeSliceThread.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_WaitableEvent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_PerformanceCounter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_PerformanceCounter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_RelativeTime.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_RelativeTime.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_Time.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_Time.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/unit_tests/juce_UnitTest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlDocument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlDocument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlElement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlElement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/adler32.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/compress.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/crc32.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/crc32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/deflate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/deflate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/infback.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inffast.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inffast.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inffixed.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inflate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inflate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inftrees.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inftrees.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/trees.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/trees.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/uncompr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zconf.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zconf.in.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zlib.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zutil.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zutil.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_ZipFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_ZipFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/juce_core.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/juce_core.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/juce_core.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_BlowFish.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_Primes.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_Primes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_RSAKey.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_MD5.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_MD5.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_SHA256.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/juce_cryptography.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/juce_cryptography.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/juce_cryptography.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_CachedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_CachedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_Value.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_Value.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTree.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueWithDefault.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ActionListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_ApplicationBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_ApplicationBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_CallbackMessage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_Initialisation.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_Message.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_NotificationType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_android_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_MultiTimer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_Timer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_Timer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/juce_events.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/juce_events.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/juce_events.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colour.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colour.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_ColourGradient.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colours.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colours.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_FillType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_FillType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_PixelFormats.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_GlowEffect.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_AttributedString.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Font.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Font.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_TextLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Typeface.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Typeface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_AffineTransform.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_BorderSize.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Line.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Path.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Path.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathIterator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Point.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Rectangle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_RectangleList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/cderror.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcapimin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jccoefct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcdctmgr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcinit.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcmainct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcmarker.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcmaster.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jconfig.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcprepct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcsample.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jctrans.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdapistd.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdcoefct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdcolor.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdct.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdinput.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmainct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmarker.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmaster.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmerge.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdphuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdsample.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdtrans.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jerror.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jerror.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jfdctflt.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jfdctfst.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jfdctint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctfst.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctred.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jinclude.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmemmgr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmemnobs.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmemsys.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmorecfg.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jpegint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jpeglib.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jquant1.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jutils.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jversion.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/transupp.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/transupp.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/libpng_readme.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/png.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/png.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngerror.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngget.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngmem.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngpread.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngpriv.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngread.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngrtran.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngset.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngstruct.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwio.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwrite.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwtran.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwutil.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_Image.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_Image.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageCache.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_android_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_android_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_linux_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_Fonts.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_RenderingHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/placement/juce_Justification.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/juce_graphics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/juce_graphics.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/juce_graphics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/application/juce_Application.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/application/juce_Application.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_Button.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_Button.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_TextButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Component.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Component.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ComponentListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Desktop.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Desktop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_Drawable.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Grid.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Grid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GridItem.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GridItem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GridUnitTests.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_SidePanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_SidePanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Viewport.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_android_ContentSharer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_common_MimeTypes.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_FileChooser.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11_Clipboard.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Label.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Label.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ListBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Slider.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TreeView.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/juce_gui_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/juce_gui_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/juce_gui_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_XEmbedComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_android_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/juce_gui_extra.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/juce_gui_extra.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/juce_gui_extra.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Matrix3D.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Quaternion.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Vector3D.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_android.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_ios.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_linux_X11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_win32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/juce_opengl.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/juce_opengl.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/juce_opengl.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/capture/juce_CameraDevice.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/capture/juce_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_android_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_mac_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_mac_Video.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_Video.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/playback/juce_VideoComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/playback/juce_VideoComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/juce_video.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/juce_video.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/juce_video.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../JuceLibraryCode/AppConfig.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../JuceLibraryCode/BinaryData.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../JuceLibraryCode/JuceHeader.h" PROPERTIES HEADER_FILE_ONLY TRUE) + +find_library(log "log") +find_library(android "android") +find_library(glesv3 "GLESv3") +find_library(egl "EGL") + +target_link_libraries( ${BINARY_NAME} + + ${log} + ${android} + ${glesv3} + ${egl} + "cpufeatures" +) diff --git a/extras/AudioPluginHost/Builds/Android/app/build.gradle b/extras/AudioPluginHost/Builds/Android/app/build.gradle new file mode 100644 index 0000000000..763b18fd05 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/build.gradle @@ -0,0 +1,94 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "27.0.0" + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } + signingConfigs { + juceSigning { + storeFile file("${System.properties['user.home']}${File.separator}.android${File.separator}debug.keystore") + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" + storeType "jks" + } + } + + defaultConfig { + applicationId "com.roli.juce.pluginhost" + minSdkVersion 23 + targetSdkVersion 23 + externalNativeBuild { + cmake { + arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE" + cFlags "-fsigned-char" + cppFlags "-fsigned-char", "-std=c++14" + } + } + } + + buildTypes { + debug { + initWith debug + debuggable true + jniDebuggable true + signingConfig signingConfigs.juceSigning + } + release { + initWith release + debuggable false + jniDebuggable false + signingConfig signingConfigs.juceSigning + } + } + + flavorDimensions "default" + productFlavors { + debug_ { + ndk { + abiFilters "armeabi", "x86" + } + externalNativeBuild { + cmake { + arguments "-DJUCE_BUILD_CONFIGURATION=DEBUG", "-DCMAKE_CXX_FLAGS_DEBUG=-O0", "-DCMAKE_C_FLAGS_DEBUG=-O0" + } + } + + dimension "default" + } + release_ { + externalNativeBuild { + cmake { + arguments "-DJUCE_BUILD_CONFIGURATION=RELEASE", "-DCMAKE_CXX_FLAGS_RELEASE=-O3", "-DCMAKE_C_FLAGS_RELEASE=-O3" + } + } + + dimension "default" + } + } + + variantFilter { variant -> + def names = variant.flavors*.name + if (names.contains ("debug_") + && variant.buildType.name != "debug") { + setIgnore(true) + } + if (names.contains ("release_") + && variant.buildType.name != "release") { + setIgnore(true) + } + } + +repositories { +} + +dependencies { +} + + +} + diff --git a/extras/AudioPluginHost/Builds/Android/app/src/debug/res/values/string.xml b/extras/AudioPluginHost/Builds/Android/app/src/debug/res/values/string.xml new file mode 100644 index 0000000000..bed17a5290 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/src/debug/res/values/string.xml @@ -0,0 +1,5 @@ + + + + AudioPluginHost + diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml b/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..df2ca3d5e2 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/android/vending/billing/IInAppBillingService.java b/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/android/vending/billing/IInAppBillingService.java new file mode 100644 index 0000000000..0bb31cb5d3 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/android/vending/billing/IInAppBillingService.java @@ -0,0 +1,971 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2017 - ROLI Ltd. + + JUCE is an open source library subject to commercial or open-source + licensing. + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +package com.android.vending.billing; +/** + * InAppBillingService is the service that provides in-app billing version 3 and beyond. + * This service provides the following features: + * 1. Provides a new API to get details of in-app items published for the app including + * price, type, title and description. + * 2. The purchase flow is synchronous and purchase information is available immediately + * after it completes. + * 3. Purchase information of in-app purchases is maintained within the Google Play system + * till the purchase is consumed. + * 4. An API to consume a purchase of an inapp item. All purchases of one-time + * in-app items are consumable and thereafter can be purchased again. + * 5. An API to get current purchases of the user immediately. This will not contain any + * consumed purchases. + * + * All calls will give a response code with the following possible values + * RESULT_OK = 0 - success + * RESULT_USER_CANCELED = 1 - User pressed back or canceled a dialog + * RESULT_SERVICE_UNAVAILABLE = 2 - The network connection is down + * RESULT_BILLING_UNAVAILABLE = 3 - This billing API version is not supported for the type requested + * RESULT_ITEM_UNAVAILABLE = 4 - Requested SKU is not available for purchase + * RESULT_DEVELOPER_ERROR = 5 - Invalid arguments provided to the API + * RESULT_ERROR = 6 - Fatal error during the API action + * RESULT_ITEM_ALREADY_OWNED = 7 - Failure to purchase since item is already owned + * RESULT_ITEM_NOT_OWNED = 8 - Failure to consume since item is not owned + */ +public interface IInAppBillingService extends android.os.IInterface + { + /** Local-side IPC implementation stub class. */ + public static abstract class Stub extends android.os.Binder implements com.android.vending.billing.IInAppBillingService + { + private static final java.lang.String DESCRIPTOR = "com.android.vending.billing.IInAppBillingService"; + /** Construct the stub at attach it to the interface. */ + public Stub() + { + this.attachInterface(this, DESCRIPTOR); + } + /** + * Cast an IBinder object into an com.android.vending.billing.IInAppBillingService interface, + * generating a proxy if needed. + */ + public static com.android.vending.billing.IInAppBillingService asInterface(android.os.IBinder obj) + { + if ((obj==null)) { + return null; + } + android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); + if (((iin!=null)&&(iin instanceof com.android.vending.billing.IInAppBillingService))) { + return ((com.android.vending.billing.IInAppBillingService)iin); + } + return new com.android.vending.billing.IInAppBillingService.Stub.Proxy(obj); + } + @Override public android.os.IBinder asBinder() + { + return this; + } + @Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException + { + switch (code) + { + case INTERFACE_TRANSACTION: + { + reply.writeString(DESCRIPTOR); + return true; + } + case TRANSACTION_isBillingSupported: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + int _result = this.isBillingSupported(_arg0, _arg1, _arg2); + reply.writeNoException(); + reply.writeInt(_result); + return true; + } + case TRANSACTION_getSkuDetails: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + android.os.Bundle _arg3; + if ((0!=data.readInt())) { + _arg3 = android.os.Bundle.CREATOR.createFromParcel(data); + } + else { + _arg3 = null; + } + android.os.Bundle _result = this.getSkuDetails(_arg0, _arg1, _arg2, _arg3); + reply.writeNoException(); + if ((_result!=null)) { + reply.writeInt(1); + _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); + } + else { + reply.writeInt(0); + } + return true; + } + case TRANSACTION_getBuyIntent: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + java.lang.String _arg3; + _arg3 = data.readString(); + java.lang.String _arg4; + _arg4 = data.readString(); + android.os.Bundle _result = this.getBuyIntent(_arg0, _arg1, _arg2, _arg3, _arg4); + reply.writeNoException(); + if ((_result!=null)) { + reply.writeInt(1); + _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); + } + else { + reply.writeInt(0); + } + return true; + } + case TRANSACTION_getPurchases: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + java.lang.String _arg3; + _arg3 = data.readString(); + android.os.Bundle _result = this.getPurchases(_arg0, _arg1, _arg2, _arg3); + reply.writeNoException(); + if ((_result!=null)) { + reply.writeInt(1); + _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); + } + else { + reply.writeInt(0); + } + return true; + } + case TRANSACTION_consumePurchase: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + int _result = this.consumePurchase(_arg0, _arg1, _arg2); + reply.writeNoException(); + reply.writeInt(_result); + return true; + } + case TRANSACTION_stub: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + int _result = this.stub(_arg0, _arg1, _arg2); + reply.writeNoException(); + reply.writeInt(_result); + return true; + } + case TRANSACTION_getBuyIntentToReplaceSkus: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.util.List _arg2; + _arg2 = data.createStringArrayList(); + java.lang.String _arg3; + _arg3 = data.readString(); + java.lang.String _arg4; + _arg4 = data.readString(); + java.lang.String _arg5; + _arg5 = data.readString(); + android.os.Bundle _result = this.getBuyIntentToReplaceSkus(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); + reply.writeNoException(); + if ((_result!=null)) { + reply.writeInt(1); + _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); + } + else { + reply.writeInt(0); + } + return true; + } + case TRANSACTION_getBuyIntentExtraParams: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + java.lang.String _arg3; + _arg3 = data.readString(); + java.lang.String _arg4; + _arg4 = data.readString(); + android.os.Bundle _arg5; + if ((0!=data.readInt())) { + _arg5 = android.os.Bundle.CREATOR.createFromParcel(data); + } + else { + _arg5 = null; + } + android.os.Bundle _result = this.getBuyIntentExtraParams(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); + reply.writeNoException(); + if ((_result!=null)) { + reply.writeInt(1); + _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); + } + else { + reply.writeInt(0); + } + return true; + } + case TRANSACTION_getPurchaseHistory: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + java.lang.String _arg3; + _arg3 = data.readString(); + android.os.Bundle _arg4; + if ((0!=data.readInt())) { + _arg4 = android.os.Bundle.CREATOR.createFromParcel(data); + } + else { + _arg4 = null; + } + android.os.Bundle _result = this.getPurchaseHistory(_arg0, _arg1, _arg2, _arg3, _arg4); + reply.writeNoException(); + if ((_result!=null)) { + reply.writeInt(1); + _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); + } + else { + reply.writeInt(0); + } + return true; + } + case TRANSACTION_isBillingSupportedExtraParams: + { + data.enforceInterface(DESCRIPTOR); + int _arg0; + _arg0 = data.readInt(); + java.lang.String _arg1; + _arg1 = data.readString(); + java.lang.String _arg2; + _arg2 = data.readString(); + android.os.Bundle _arg3; + if ((0!=data.readInt())) { + _arg3 = android.os.Bundle.CREATOR.createFromParcel(data); + } + else { + _arg3 = null; + } + int _result = this.isBillingSupportedExtraParams(_arg0, _arg1, _arg2, _arg3); + reply.writeNoException(); + reply.writeInt(_result); + return true; + } + } + return super.onTransact(code, data, reply, flags); + } + private static class Proxy implements com.android.vending.billing.IInAppBillingService + { + private android.os.IBinder mRemote; + Proxy(android.os.IBinder remote) + { + mRemote = remote; + } + @Override public android.os.IBinder asBinder() + { + return mRemote; + } + public java.lang.String getInterfaceDescriptor() + { + return DESCRIPTOR; + } + @Override public int isBillingSupported(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + int _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(type); + mRemote.transact(Stub.TRANSACTION_isBillingSupported, _data, _reply, 0); + _reply.readException(); + _result = _reply.readInt(); + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + /** + * Provides details of a list of SKUs + * Given a list of SKUs of a valid type in the skusBundle, this returns a bundle + * with a list JSON strings containing the productId, price, title and description. + * This API can be called with a maximum of 20 SKUs. + * @param apiVersion billing API version that the app is using + * @param packageName the package name of the calling app + * @param type of the in-app items ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param skusBundle bundle containing a StringArrayList of SKUs with key "ITEM_ID_LIST" + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + * on failures. + * "DETAILS_LIST" with a StringArrayList containing purchase information + * in JSON format similar to: + * '{ "productId" : "exampleSku", + * "type" : "inapp", + * "price" : "$5.00", + * "price_currency": "USD", + * "price_amount_micros": 5000000, + * "title : "Example Title", + * "description" : "This is an example description" }' + */ + @Override public android.os.Bundle getSkuDetails(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle skusBundle) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + android.os.Bundle _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(type); + if ((skusBundle!=null)) { + _data.writeInt(1); + skusBundle.writeToParcel(_data, 0); + } + else { + _data.writeInt(0); + } + mRemote.transact(Stub.TRANSACTION_getSkuDetails, _data, _reply, 0); + _reply.readException(); + if ((0!=_reply.readInt())) { + _result = android.os.Bundle.CREATOR.createFromParcel(_reply); + } + else { + _result = null; + } + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + /** + * Returns a pending intent to launch the purchase flow for an in-app item by providing a SKU, + * the type, a unique purchase token and an optional developer payload. + * @param apiVersion billing API version that the app is using + * @param packageName package name of the calling app + * @param sku the SKU of the in-app item as published in the developer console + * @param type of the in-app item being purchased ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param developerPayload optional argument to be sent back with the purchase information + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + * on failures. + * "BUY_INTENT" - PendingIntent to start the purchase flow + * + * The Pending intent should be launched with startIntentSenderForResult. When purchase flow + * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. + * If the purchase is successful, the result data will contain the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response + * codes on failures. + * "INAPP_PURCHASE_DATA" - String in JSON format similar to + * '{"orderId":"12999763169054705758.1371079406387615", + * "packageName":"com.example.app", + * "productId":"exampleSku", + * "purchaseTime":1345678900000, + * "purchaseToken" : "122333444455555", + * "developerPayload":"example developer payload" }' + * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that + * was signed with the private key of the developer + */ + @Override public android.os.Bundle getBuyIntent(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + android.os.Bundle _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(sku); + _data.writeString(type); + _data.writeString(developerPayload); + mRemote.transact(Stub.TRANSACTION_getBuyIntent, _data, _reply, 0); + _reply.readException(); + if ((0!=_reply.readInt())) { + _result = android.os.Bundle.CREATOR.createFromParcel(_reply); + } + else { + _result = null; + } + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + /** + * Returns the current SKUs owned by the user of the type and package name specified along with + * purchase information and a signature of the data to be validated. + * This will return all SKUs that have been purchased in V3 and managed items purchased using + * V1 and V2 that have not been consumed. + * @param apiVersion billing API version that the app is using + * @param packageName package name of the calling app + * @param type of the in-app items being requested ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param continuationToken to be set as null for the first call, if the number of owned + * skus are too many, a continuationToken is returned in the response bundle. + * This method can be called again with the continuation token to get the next set of + * owned skus. + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + on failures. + * "INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs + * "INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information + * "INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures + * of the purchase information + * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the + * next set of in-app purchases. Only set if the + * user has more owned skus than the current list. + */ + @Override public android.os.Bundle getPurchases(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + android.os.Bundle _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(type); + _data.writeString(continuationToken); + mRemote.transact(Stub.TRANSACTION_getPurchases, _data, _reply, 0); + _reply.readException(); + if ((0!=_reply.readInt())) { + _result = android.os.Bundle.CREATOR.createFromParcel(_reply); + } + else { + _result = null; + } + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + @Override public int consumePurchase(int apiVersion, java.lang.String packageName, java.lang.String purchaseToken) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + int _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(purchaseToken); + mRemote.transact(Stub.TRANSACTION_consumePurchase, _data, _reply, 0); + _reply.readException(); + _result = _reply.readInt(); + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + @Override public int stub(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + int _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(type); + mRemote.transact(Stub.TRANSACTION_stub, _data, _reply, 0); + _reply.readException(); + _result = _reply.readInt(); + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + /** + * Returns a pending intent to launch the purchase flow for upgrading or downgrading a + * subscription. The existing owned SKU(s) should be provided along with the new SKU that + * the user is upgrading or downgrading to. + * @param apiVersion billing API version that the app is using, must be 5 or later + * @param packageName package name of the calling app + * @param oldSkus the SKU(s) that the user is upgrading or downgrading from, + * if null or empty this method will behave like {@link #getBuyIntent} + * @param newSku the SKU that the user is upgrading or downgrading to + * @param type of the item being purchased, currently must be "subs" + * @param developerPayload optional argument to be sent back with the purchase information + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + * on failures. + * "BUY_INTENT" - PendingIntent to start the purchase flow + * + * The Pending intent should be launched with startIntentSenderForResult. When purchase flow + * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. + * If the purchase is successful, the result data will contain the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response + * codes on failures. + * "INAPP_PURCHASE_DATA" - String in JSON format similar to + * '{"orderId":"12999763169054705758.1371079406387615", + * "packageName":"com.example.app", + * "productId":"exampleSku", + * "purchaseTime":1345678900000, + * "purchaseToken" : "122333444455555", + * "developerPayload":"example developer payload" }' + * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that + * was signed with the private key of the developer + */ + @Override public android.os.Bundle getBuyIntentToReplaceSkus(int apiVersion, java.lang.String packageName, java.util.List oldSkus, java.lang.String newSku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + android.os.Bundle _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeStringList(oldSkus); + _data.writeString(newSku); + _data.writeString(type); + _data.writeString(developerPayload); + mRemote.transact(Stub.TRANSACTION_getBuyIntentToReplaceSkus, _data, _reply, 0); + _reply.readException(); + if ((0!=_reply.readInt())) { + _result = android.os.Bundle.CREATOR.createFromParcel(_reply); + } + else { + _result = null; + } + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + /** + * Returns a pending intent to launch the purchase flow for an in-app item. This method is + * a variant of the {@link #getBuyIntent} method and takes an additional {@code extraParams} + * parameter. This parameter is a Bundle of optional keys and values that affect the + * operation of the method. + * @param apiVersion billing API version that the app is using, must be 6 or later + * @param packageName package name of the calling app + * @param sku the SKU of the in-app item as published in the developer console + * @param type of the in-app item being purchased ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param developerPayload optional argument to be sent back with the purchase information + * @extraParams a Bundle with the following optional keys: + * "skusToReplace" - List - an optional list of SKUs that the user is + * upgrading or downgrading from. + * Pass this field if the purchase is upgrading or downgrading + * existing subscriptions. + * The specified SKUs are replaced with the SKUs that the user is + * purchasing. Google Play replaces the specified SKUs at the start of + * the next billing cycle. + * "replaceSkusProration" - Boolean - whether the user should be credited for any unused + * subscription time on the SKUs they are upgrading or downgrading. + * If you set this field to true, Google Play swaps out the old SKUs + * and credits the user with the unused value of their subscription + * time on a pro-rated basis. + * Google Play applies this credit to the new subscription, and does + * not begin billing the user for the new subscription until after + * the credit is used up. + * If you set this field to false, the user does not receive credit for + * any unused subscription time and the recurrence date does not + * change. + * Default value is true. Ignored if you do not pass skusToReplace. + * "accountId" - String - an optional obfuscated string that is uniquely + * associated with the user's account in your app. + * If you pass this value, Google Play can use it to detect irregular + * activity, such as many devices making purchases on the same + * account in a short period of time. + * Do not use the developer ID or the user's Google ID for this field. + * In addition, this field should not contain the user's ID in + * cleartext. + * We recommend that you use a one-way hash to generate a string from + * the user's ID, and store the hashed string in this field. + * "vr" - Boolean - an optional flag indicating whether the returned intent + * should start a VR purchase flow. The apiVersion must also be 7 or + * later to use this flag. + */ + @Override public android.os.Bundle getBuyIntentExtraParams(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload, android.os.Bundle extraParams) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + android.os.Bundle _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(sku); + _data.writeString(type); + _data.writeString(developerPayload); + if ((extraParams!=null)) { + _data.writeInt(1); + extraParams.writeToParcel(_data, 0); + } + else { + _data.writeInt(0); + } + mRemote.transact(Stub.TRANSACTION_getBuyIntentExtraParams, _data, _reply, 0); + _reply.readException(); + if ((0!=_reply.readInt())) { + _result = android.os.Bundle.CREATOR.createFromParcel(_reply); + } + else { + _result = null; + } + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + /** + * Returns the most recent purchase made by the user for each SKU, even if that purchase is + * expired, canceled, or consumed. + * @param apiVersion billing API version that the app is using, must be 6 or later + * @param packageName package name of the calling app + * @param type of the in-app items being requested ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param continuationToken to be set as null for the first call, if the number of owned + * skus is too large, a continuationToken is returned in the response bundle. + * This method can be called again with the continuation token to get the next set of + * owned skus. + * @param extraParams a Bundle with extra params that would be appended into http request + * query string. Not used at this moment. Reserved for future functionality. + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value: RESULT_OK(0) if success, + * {@link IabHelper#BILLING_RESPONSE_RESULT_*} response codes on failures. + * + * "INAPP_PURCHASE_ITEM_LIST" - ArrayList containing the list of SKUs + * "INAPP_PURCHASE_DATA_LIST" - ArrayList containing the purchase information + * "INAPP_DATA_SIGNATURE_LIST"- ArrayList containing the signatures + * of the purchase information + * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the + * next set of in-app purchases. Only set if the + * user has more owned skus than the current list. + */ + @Override public android.os.Bundle getPurchaseHistory(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken, android.os.Bundle extraParams) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + android.os.Bundle _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(type); + _data.writeString(continuationToken); + if ((extraParams!=null)) { + _data.writeInt(1); + extraParams.writeToParcel(_data, 0); + } + else { + _data.writeInt(0); + } + mRemote.transact(Stub.TRANSACTION_getPurchaseHistory, _data, _reply, 0); + _reply.readException(); + if ((0!=_reply.readInt())) { + _result = android.os.Bundle.CREATOR.createFromParcel(_reply); + } + else { + _result = null; + } + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + @Override public int isBillingSupportedExtraParams(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle extraParams) throws android.os.RemoteException + { + android.os.Parcel _data = android.os.Parcel.obtain(); + android.os.Parcel _reply = android.os.Parcel.obtain(); + int _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + _data.writeInt(apiVersion); + _data.writeString(packageName); + _data.writeString(type); + if ((extraParams!=null)) { + _data.writeInt(1); + extraParams.writeToParcel(_data, 0); + } + else { + _data.writeInt(0); + } + mRemote.transact(Stub.TRANSACTION_isBillingSupportedExtraParams, _data, _reply, 0); + _reply.readException(); + _result = _reply.readInt(); + } + finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } + } + static final int TRANSACTION_isBillingSupported = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); + static final int TRANSACTION_getSkuDetails = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); + static final int TRANSACTION_getBuyIntent = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); + static final int TRANSACTION_getPurchases = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); + static final int TRANSACTION_consumePurchase = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); + static final int TRANSACTION_stub = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); + static final int TRANSACTION_getBuyIntentToReplaceSkus = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); + static final int TRANSACTION_getBuyIntentExtraParams = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7); + static final int TRANSACTION_getPurchaseHistory = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8); + static final int TRANSACTION_isBillingSupportedExtraParams = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9); + } + public int isBillingSupported(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException; + /** + * Provides details of a list of SKUs + * Given a list of SKUs of a valid type in the skusBundle, this returns a bundle + * with a list JSON strings containing the productId, price, title and description. + * This API can be called with a maximum of 20 SKUs. + * @param apiVersion billing API version that the app is using + * @param packageName the package name of the calling app + * @param type of the in-app items ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param skusBundle bundle containing a StringArrayList of SKUs with key "ITEM_ID_LIST" + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + * on failures. + * "DETAILS_LIST" with a StringArrayList containing purchase information + * in JSON format similar to: + * '{ "productId" : "exampleSku", + * "type" : "inapp", + * "price" : "$5.00", + * "price_currency": "USD", + * "price_amount_micros": 5000000, + * "title : "Example Title", + * "description" : "This is an example description" }' + */ + public android.os.Bundle getSkuDetails(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle skusBundle) throws android.os.RemoteException; + /** + * Returns a pending intent to launch the purchase flow for an in-app item by providing a SKU, + * the type, a unique purchase token and an optional developer payload. + * @param apiVersion billing API version that the app is using + * @param packageName package name of the calling app + * @param sku the SKU of the in-app item as published in the developer console + * @param type of the in-app item being purchased ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param developerPayload optional argument to be sent back with the purchase information + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + * on failures. + * "BUY_INTENT" - PendingIntent to start the purchase flow + * + * The Pending intent should be launched with startIntentSenderForResult. When purchase flow + * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. + * If the purchase is successful, the result data will contain the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response + * codes on failures. + * "INAPP_PURCHASE_DATA" - String in JSON format similar to + * '{"orderId":"12999763169054705758.1371079406387615", + * "packageName":"com.example.app", + * "productId":"exampleSku", + * "purchaseTime":1345678900000, + * "purchaseToken" : "122333444455555", + * "developerPayload":"example developer payload" }' + * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that + * was signed with the private key of the developer + */ + public android.os.Bundle getBuyIntent(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException; + /** + * Returns the current SKUs owned by the user of the type and package name specified along with + * purchase information and a signature of the data to be validated. + * This will return all SKUs that have been purchased in V3 and managed items purchased using + * V1 and V2 that have not been consumed. + * @param apiVersion billing API version that the app is using + * @param packageName package name of the calling app + * @param type of the in-app items being requested ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param continuationToken to be set as null for the first call, if the number of owned + * skus are too many, a continuationToken is returned in the response bundle. + * This method can be called again with the continuation token to get the next set of + * owned skus. + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + on failures. + * "INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs + * "INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information + * "INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures + * of the purchase information + * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the + * next set of in-app purchases. Only set if the + * user has more owned skus than the current list. + */ + public android.os.Bundle getPurchases(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken) throws android.os.RemoteException; + public int consumePurchase(int apiVersion, java.lang.String packageName, java.lang.String purchaseToken) throws android.os.RemoteException; + public int stub(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException; + /** + * Returns a pending intent to launch the purchase flow for upgrading or downgrading a + * subscription. The existing owned SKU(s) should be provided along with the new SKU that + * the user is upgrading or downgrading to. + * @param apiVersion billing API version that the app is using, must be 5 or later + * @param packageName package name of the calling app + * @param oldSkus the SKU(s) that the user is upgrading or downgrading from, + * if null or empty this method will behave like {@link #getBuyIntent} + * @param newSku the SKU that the user is upgrading or downgrading to + * @param type of the item being purchased, currently must be "subs" + * @param developerPayload optional argument to be sent back with the purchase information + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes + * on failures. + * "BUY_INTENT" - PendingIntent to start the purchase flow + * + * The Pending intent should be launched with startIntentSenderForResult. When purchase flow + * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. + * If the purchase is successful, the result data will contain the following key-value pairs + * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response + * codes on failures. + * "INAPP_PURCHASE_DATA" - String in JSON format similar to + * '{"orderId":"12999763169054705758.1371079406387615", + * "packageName":"com.example.app", + * "productId":"exampleSku", + * "purchaseTime":1345678900000, + * "purchaseToken" : "122333444455555", + * "developerPayload":"example developer payload" }' + * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that + * was signed with the private key of the developer + */ + public android.os.Bundle getBuyIntentToReplaceSkus(int apiVersion, java.lang.String packageName, java.util.List oldSkus, java.lang.String newSku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException; + /** + * Returns a pending intent to launch the purchase flow for an in-app item. This method is + * a variant of the {@link #getBuyIntent} method and takes an additional {@code extraParams} + * parameter. This parameter is a Bundle of optional keys and values that affect the + * operation of the method. + * @param apiVersion billing API version that the app is using, must be 6 or later + * @param packageName package name of the calling app + * @param sku the SKU of the in-app item as published in the developer console + * @param type of the in-app item being purchased ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param developerPayload optional argument to be sent back with the purchase information + * @extraParams a Bundle with the following optional keys: + * "skusToReplace" - List - an optional list of SKUs that the user is + * upgrading or downgrading from. + * Pass this field if the purchase is upgrading or downgrading + * existing subscriptions. + * The specified SKUs are replaced with the SKUs that the user is + * purchasing. Google Play replaces the specified SKUs at the start of + * the next billing cycle. + * "replaceSkusProration" - Boolean - whether the user should be credited for any unused + * subscription time on the SKUs they are upgrading or downgrading. + * If you set this field to true, Google Play swaps out the old SKUs + * and credits the user with the unused value of their subscription + * time on a pro-rated basis. + * Google Play applies this credit to the new subscription, and does + * not begin billing the user for the new subscription until after + * the credit is used up. + * If you set this field to false, the user does not receive credit for + * any unused subscription time and the recurrence date does not + * change. + * Default value is true. Ignored if you do not pass skusToReplace. + * "accountId" - String - an optional obfuscated string that is uniquely + * associated with the user's account in your app. + * If you pass this value, Google Play can use it to detect irregular + * activity, such as many devices making purchases on the same + * account in a short period of time. + * Do not use the developer ID or the user's Google ID for this field. + * In addition, this field should not contain the user's ID in + * cleartext. + * We recommend that you use a one-way hash to generate a string from + * the user's ID, and store the hashed string in this field. + * "vr" - Boolean - an optional flag indicating whether the returned intent + * should start a VR purchase flow. The apiVersion must also be 7 or + * later to use this flag. + */ + public android.os.Bundle getBuyIntentExtraParams(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload, android.os.Bundle extraParams) throws android.os.RemoteException; + /** + * Returns the most recent purchase made by the user for each SKU, even if that purchase is + * expired, canceled, or consumed. + * @param apiVersion billing API version that the app is using, must be 6 or later + * @param packageName package name of the calling app + * @param type of the in-app items being requested ("inapp" for one-time purchases + * and "subs" for subscriptions) + * @param continuationToken to be set as null for the first call, if the number of owned + * skus is too large, a continuationToken is returned in the response bundle. + * This method can be called again with the continuation token to get the next set of + * owned skus. + * @param extraParams a Bundle with extra params that would be appended into http request + * query string. Not used at this moment. Reserved for future functionality. + * @return Bundle containing the following key-value pairs + * "RESPONSE_CODE" with int value: RESULT_OK(0) if success, + * {@link IabHelper#BILLING_RESPONSE_RESULT_*} response codes on failures. + * + * "INAPP_PURCHASE_ITEM_LIST" - ArrayList containing the list of SKUs + * "INAPP_PURCHASE_DATA_LIST" - ArrayList containing the purchase information + * "INAPP_DATA_SIGNATURE_LIST"- ArrayList containing the signatures + * of the purchase information + * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the + * next set of in-app purchases. Only set if the + * user has more owned skus than the current list. + */ + public android.os.Bundle getPurchaseHistory(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken, android.os.Bundle extraParams) throws android.os.RemoteException; + public int isBillingSupportedExtraParams(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle extraParams) throws android.os.RemoteException; + } diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/AudioPluginHost.java b/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/AudioPluginHost.java new file mode 100644 index 0000000000..29ce00d9c0 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/AudioPluginHost.java @@ -0,0 +1,2764 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2017 - ROLI Ltd. + + JUCE is an open source library subject to commercial or open-source + licensing. + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +package com.roli.juce.pluginhost; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.net.http.SslError; +import android.net.Uri; +import android.os.Bundle; +import android.os.Looper; +import android.os.Handler; +import android.os.Message; +import android.os.ParcelUuid; +import android.os.Environment; +import android.view.*; +import android.view.inputmethod.BaseInputConnection; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; +import android.view.inputmethod.InputMethodManager; +import android.graphics.*; +import android.text.ClipboardManager; +import android.text.InputType; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.Pair; +import android.webkit.SslErrorHandler; +import android.webkit.WebChromeClient; +import android.webkit.WebResourceError; +import android.webkit.WebResourceRequest; +import android.webkit.WebResourceResponse; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import java.lang.Runnable; +import java.lang.ref.WeakReference; +import java.lang.reflect.*; +import java.util.*; +import java.io.*; +import java.net.URL; +import java.net.HttpURLConnection; +import android.media.AudioManager; +import android.Manifest; +import java.util.concurrent.CancellationException; +import java.util.concurrent.Future; +import java.util.concurrent.Executors; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.Callable; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.locks.ReentrantLock; +import java.util.concurrent.atomic.*; + +import android.media.midi.*; +import android.bluetooth.*; +import android.bluetooth.le.*; + + +//============================================================================== +public class AudioPluginHost extends Activity +{ + //============================================================================== + static + { + System.loadLibrary ("juce_jni"); + } + + //============================================================================== + public boolean isPermissionDeclaredInManifest (int permissionID) + { + String permissionToCheck = getAndroidPermissionName(permissionID); + + try + { + PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_PERMISSIONS); + + if (info.requestedPermissions != null) + for (String permission : info.requestedPermissions) + if (permission.equals (permissionToCheck)) + return true; + } + catch (PackageManager.NameNotFoundException e) + { + Log.d ("JUCE", "isPermissionDeclaredInManifest: PackageManager.NameNotFoundException = " + e.toString()); + } + + Log.d ("JUCE", "isPermissionDeclaredInManifest: could not find requested permission " + permissionToCheck); + return false; + } + + //============================================================================== + // these have to match the values of enum PermissionID in C++ class RuntimePermissions: + private static final int JUCE_PERMISSIONS_RECORD_AUDIO = 1; + private static final int JUCE_PERMISSIONS_BLUETOOTH_MIDI = 2; + private static final int JUCE_PERMISSIONS_READ_EXTERNAL_STORAGE = 3; + private static final int JUCE_PERMISSIONS_WRITE_EXTERNAL_STORAGE = 4; + + private static String getAndroidPermissionName (int permissionID) + { + switch (permissionID) + { + case JUCE_PERMISSIONS_RECORD_AUDIO: return Manifest.permission.RECORD_AUDIO; + case JUCE_PERMISSIONS_BLUETOOTH_MIDI: return Manifest.permission.ACCESS_COARSE_LOCATION; + // use string value as this is not defined in SDKs < 16 + case JUCE_PERMISSIONS_READ_EXTERNAL_STORAGE: return "android.permission.READ_EXTERNAL_STORAGE"; + case JUCE_PERMISSIONS_WRITE_EXTERNAL_STORAGE: return Manifest.permission.WRITE_EXTERNAL_STORAGE; + } + + // unknown permission ID! + assert false; + return new String(); + } + + public boolean isPermissionGranted (int permissionID) + { + return getApplicationContext().checkCallingOrSelfPermission (getAndroidPermissionName (permissionID)) == PackageManager.PERMISSION_GRANTED; + } + + private Map permissionCallbackPtrMap; + + public void requestRuntimePermission (int permissionID, long ptrToCallback) + { + String permissionName = getAndroidPermissionName (permissionID); + + if (getApplicationContext().checkCallingOrSelfPermission (permissionName) != PackageManager.PERMISSION_GRANTED) + { + // remember callbackPtr, request permissions, and let onRequestPermissionResult call callback asynchronously + permissionCallbackPtrMap.put (permissionID, ptrToCallback); + requestPermissionsCompat (new String[]{permissionName}, permissionID); + } + else + { + // permissions were already granted before, we can call callback directly + androidRuntimePermissionsCallback (true, ptrToCallback); + } + } + + private native void androidRuntimePermissionsCallback (boolean permissionWasGranted, long ptrToCallback); + + @Override + public void onRequestPermissionsResult (int permissionID, String permissions[], int[] grantResults) + { + boolean permissionsGranted = (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED); + + if (! permissionsGranted) + Log.d ("JUCE", "onRequestPermissionsResult: runtime permission was DENIED: " + getAndroidPermissionName (permissionID)); + + Long ptrToCallback = permissionCallbackPtrMap.get (permissionID); + permissionCallbackPtrMap.remove (permissionID); + androidRuntimePermissionsCallback (permissionsGranted, ptrToCallback); + } + + //============================================================================== + public interface JuceMidiPort + { + boolean isInputPort(); + + // start, stop does nothing on an output port + void start(); + void stop(); + + void close(); + + // send will do nothing on an input port + void sendMidi (byte[] msg, int offset, int count); + } + + //============================================================================== + //============================================================================== + public class BluetoothManager extends ScanCallback + { + BluetoothManager() + { + } + + public String[] getMidiBluetoothAddresses() + { + return bluetoothMidiDevices.toArray (new String[bluetoothMidiDevices.size()]); + } + + public String getHumanReadableStringForBluetoothAddress (String address) + { + BluetoothDevice btDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice (address); + return btDevice.getName(); + } + + public int getBluetoothDeviceStatus (String address) + { + return getAndroidMidiDeviceManager().getBluetoothDeviceStatus (address); + } + + public void startStopScan (boolean shouldStart) + { + BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + + if (bluetoothAdapter == null) + { + Log.d ("JUCE", "BluetoothManager error: could not get default Bluetooth adapter"); + return; + } + + BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner(); + + if (bluetoothLeScanner == null) + { + Log.d ("JUCE", "BluetoothManager error: could not get Bluetooth LE scanner"); + return; + } + + if (shouldStart) + { + ScanFilter.Builder scanFilterBuilder = new ScanFilter.Builder(); + scanFilterBuilder.setServiceUuid (ParcelUuid.fromString (bluetoothLEMidiServiceUUID)); + + ScanSettings.Builder scanSettingsBuilder = new ScanSettings.Builder(); + scanSettingsBuilder.setCallbackType (ScanSettings.CALLBACK_TYPE_ALL_MATCHES) + .setScanMode (ScanSettings.SCAN_MODE_LOW_POWER) + .setScanMode (ScanSettings.MATCH_MODE_STICKY); + + bluetoothLeScanner.startScan (Arrays.asList (scanFilterBuilder.build()), + scanSettingsBuilder.build(), + this); + } + else + { + bluetoothLeScanner.stopScan (this); + } + } + + public boolean pairBluetoothMidiDevice(String address) + { + BluetoothDevice btDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice (address); + + if (btDevice == null) + { + Log.d ("JUCE", "failed to create buletooth device from address"); + return false; + } + + return getAndroidMidiDeviceManager().pairBluetoothDevice (btDevice); + } + + public void unpairBluetoothMidiDevice (String address) + { + getAndroidMidiDeviceManager().unpairBluetoothDevice (address); + } + + public void onScanFailed (int errorCode) + { + } + + public void onScanResult (int callbackType, ScanResult result) + { + if (callbackType == ScanSettings.CALLBACK_TYPE_ALL_MATCHES + || callbackType == ScanSettings.CALLBACK_TYPE_FIRST_MATCH) + { + BluetoothDevice device = result.getDevice(); + + if (device != null) + bluetoothMidiDevices.add (device.getAddress()); + } + + if (callbackType == ScanSettings.CALLBACK_TYPE_MATCH_LOST) + { + Log.d ("JUCE", "ScanSettings.CALLBACK_TYPE_MATCH_LOST"); + BluetoothDevice device = result.getDevice(); + + if (device != null) + { + bluetoothMidiDevices.remove (device.getAddress()); + unpairBluetoothMidiDevice (device.getAddress()); + } + } + } + + public void onBatchScanResults (List results) + { + for (ScanResult result : results) + onScanResult (ScanSettings.CALLBACK_TYPE_ALL_MATCHES, result); + } + + private BluetoothLeScanner scanner; + private static final String bluetoothLEMidiServiceUUID = "03B80E5A-EDE8-4B33-A751-6CE34EC4C700"; + + private HashSet bluetoothMidiDevices = new HashSet(); + } + + public static class JuceMidiInputPort extends MidiReceiver implements JuceMidiPort + { + private native void handleReceive (long host, byte[] msg, int offset, int count, long timestamp); + + public JuceMidiInputPort (MidiDeviceManager mm, MidiOutputPort actualPort, MidiPortPath portPathToUse, long hostToUse) + { + owner = mm; + androidPort = actualPort; + portPath = portPathToUse; + juceHost = hostToUse; + isConnected = false; + } + + @Override + protected void finalize() throws Throwable + { + close(); + super.finalize(); + } + + @Override + public boolean isInputPort() + { + return true; + } + + @Override + public void start() + { + if (owner != null && androidPort != null && ! isConnected) { + androidPort.connect(this); + isConnected = true; + } + } + + @Override + public void stop() + { + if (owner != null && androidPort != null && isConnected) { + androidPort.disconnect(this); + isConnected = false; + } + } + + @Override + public void close() + { + if (androidPort != null) { + try { + androidPort.close(); + } catch (IOException exception) { + Log.d("JUCE", "IO Exception while closing port"); + } + } + + if (owner != null) + owner.removePort (portPath); + + owner = null; + androidPort = null; + } + + @Override + public void onSend (byte[] msg, int offset, int count, long timestamp) + { + if (count > 0) + handleReceive (juceHost, msg, offset, count, timestamp); + } + + @Override + public void onFlush() + {} + + @Override + public void sendMidi (byte[] msg, int offset, int count) + { + } + + MidiDeviceManager owner; + MidiOutputPort androidPort; + MidiPortPath portPath; + long juceHost; + boolean isConnected; + } + + public static class JuceMidiOutputPort implements JuceMidiPort + { + public JuceMidiOutputPort (MidiDeviceManager mm, MidiInputPort actualPort, MidiPortPath portPathToUse) + { + owner = mm; + androidPort = actualPort; + portPath = portPathToUse; + } + + @Override + protected void finalize() throws Throwable + { + close(); + super.finalize(); + } + + @Override + public boolean isInputPort() + { + return false; + } + + @Override + public void start() + { + } + + @Override + public void stop() + { + } + + @Override + public void sendMidi (byte[] msg, int offset, int count) + { + if (androidPort != null) + { + try { + androidPort.send(msg, offset, count); + } catch (IOException exception) + { + Log.d ("JUCE", "send midi had IO exception"); + } + } + } + + @Override + public void close() + { + if (androidPort != null) { + try { + androidPort.close(); + } catch (IOException exception) { + Log.d("JUCE", "IO Exception while closing port"); + } + } + + if (owner != null) + owner.removePort (portPath); + + owner = null; + androidPort = null; + } + + MidiDeviceManager owner; + MidiInputPort androidPort; + MidiPortPath portPath; + } + + private static class MidiPortPath extends Object + { + public MidiPortPath (int deviceIdToUse, boolean direction, int androidIndex) + { + deviceId = deviceIdToUse; + isInput = direction; + portIndex = androidIndex; + + } + + public int deviceId; + public int portIndex; + public boolean isInput; + + @Override + public int hashCode() + { + Integer i = new Integer ((deviceId * 128) + (portIndex < 128 ? portIndex : 127)); + return i.hashCode() * (isInput ? -1 : 1); + } + + @Override + public boolean equals (Object obj) + { + if (obj == null) + return false; + + if (getClass() != obj.getClass()) + return false; + + MidiPortPath other = (MidiPortPath) obj; + return (portIndex == other.portIndex && isInput == other.isInput && deviceId == other.deviceId); + } + } + + //============================================================================== + public class MidiDeviceManager extends MidiManager.DeviceCallback implements MidiManager.OnDeviceOpenedListener + { + //============================================================================== + private class DummyBluetoothGattCallback extends BluetoothGattCallback + { + public DummyBluetoothGattCallback (MidiDeviceManager mm) + { + super(); + owner = mm; + } + + public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) + { + if (newState == BluetoothProfile.STATE_CONNECTED) + { + gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH); + owner.pairBluetoothDeviceStepTwo (gatt.getDevice()); + } + } + public void onServicesDiscovered(BluetoothGatt gatt, int status) {} + public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {} + public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {} + public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {} + public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {} + public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {} + public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {} + public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {} + public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {} + + private MidiDeviceManager owner; + } + + //============================================================================== + private class MidiDeviceOpenTask extends java.util.TimerTask + { + public MidiDeviceOpenTask (MidiDeviceManager deviceManager, MidiDevice device, BluetoothGatt gattToUse) + { + owner = deviceManager; + midiDevice = device; + btGatt = gattToUse; + } + + @Override + public boolean cancel() + { + synchronized (MidiDeviceOpenTask.class) + { + owner = null; + boolean retval = super.cancel(); + + if (btGatt != null) + { + btGatt.disconnect(); + btGatt.close(); + + btGatt = null; + } + + if (midiDevice != null) + { + try + { + midiDevice.close(); + } + catch (IOException e) + {} + + midiDevice = null; + } + + return retval; + } + } + + public String getBluetoothAddress() + { + synchronized (MidiDeviceOpenTask.class) + { + if (midiDevice != null) + { + MidiDeviceInfo info = midiDevice.getInfo(); + if (info.getType() == MidiDeviceInfo.TYPE_BLUETOOTH) + { + BluetoothDevice btDevice = (BluetoothDevice) info.getProperties().get (info.PROPERTY_BLUETOOTH_DEVICE); + if (btDevice != null) + return btDevice.getAddress(); + } + } + } + + return ""; + } + + public BluetoothGatt getGatt() { return btGatt; } + + public int getID() + { + return midiDevice.getInfo().getId(); + } + + @Override + public void run() + { + synchronized (MidiDeviceOpenTask.class) + { + if (owner != null && midiDevice != null) + owner.onDeviceOpenedDelayed (midiDevice); + } + } + + private MidiDeviceManager owner; + private MidiDevice midiDevice; + private BluetoothGatt btGatt; + } + + //============================================================================== + public MidiDeviceManager() + { + manager = (MidiManager) getSystemService (MIDI_SERVICE); + + if (manager == null) + { + Log.d ("JUCE", "MidiDeviceManager error: could not get MidiManager system service"); + return; + } + + openPorts = new HashMap> (); + midiDevices = new ArrayList>(); + openTasks = new HashMap(); + btDevicesPairing = new HashMap(); + + MidiDeviceInfo[] foundDevices = manager.getDevices(); + for (MidiDeviceInfo info : foundDevices) + onDeviceAdded (info); + + manager.registerDeviceCallback (this, null); + } + + protected void finalize() throws Throwable + { + manager.unregisterDeviceCallback (this); + + synchronized (MidiDeviceManager.class) + { + btDevicesPairing.clear(); + + for (Integer deviceID : openTasks.keySet()) + openTasks.get (deviceID).cancel(); + + openTasks = null; + } + + for (MidiPortPath key : openPorts.keySet()) + openPorts.get (key).get().close(); + + openPorts = null; + + for (Pair device : midiDevices) + { + if (device.second != null) + { + device.second.disconnect(); + device.second.close(); + } + + device.first.close(); + } + + midiDevices.clear(); + + super.finalize(); + } + + public String[] getJuceAndroidMidiInputDevices() + { + return getJuceAndroidMidiDevices (MidiDeviceInfo.PortInfo.TYPE_OUTPUT); + } + + public String[] getJuceAndroidMidiOutputDevices() + { + return getJuceAndroidMidiDevices (MidiDeviceInfo.PortInfo.TYPE_INPUT); + } + + private String[] getJuceAndroidMidiDevices (int portType) + { + // only update the list when JUCE asks for a new list + synchronized (MidiDeviceManager.class) + { + deviceInfos = getDeviceInfos(); + } + + ArrayList portNames = new ArrayList(); + + int index = 0; + for (MidiPortPath portInfo = getPortPathForJuceIndex (portType, index); portInfo != null; portInfo = getPortPathForJuceIndex (portType, ++index)) + portNames.add (getPortName (portInfo)); + + String[] names = new String[portNames.size()]; + return portNames.toArray (names); + } + + private JuceMidiPort openMidiPortWithJuceIndex (int index, long host, boolean isInput) + { + synchronized (MidiDeviceManager.class) + { + int portTypeToFind = (isInput ? MidiDeviceInfo.PortInfo.TYPE_OUTPUT : MidiDeviceInfo.PortInfo.TYPE_INPUT); + MidiPortPath portInfo = getPortPathForJuceIndex (portTypeToFind, index); + + if (portInfo != null) + { + // ports must be opened exclusively! + if (openPorts.containsKey (portInfo)) + return null; + + Pair devicePair = getMidiDevicePairForId (portInfo.deviceId); + + if (devicePair != null) + { + MidiDevice device = devicePair.first; + if (device != null) + { + JuceMidiPort juceMidiPort = null; + + if (isInput) + { + MidiOutputPort outputPort = device.openOutputPort(portInfo.portIndex); + + if (outputPort != null) + juceMidiPort = new JuceMidiInputPort(this, outputPort, portInfo, host); + } + else + { + MidiInputPort inputPort = device.openInputPort(portInfo.portIndex); + + if (inputPort != null) + juceMidiPort = new JuceMidiOutputPort(this, inputPort, portInfo); + } + + if (juceMidiPort != null) + { + openPorts.put(portInfo, new WeakReference(juceMidiPort)); + + return juceMidiPort; + } + } + } + } + } + + return null; + } + + public JuceMidiPort openMidiInputPortWithJuceIndex (int index, long host) + { + return openMidiPortWithJuceIndex (index, host, true); + } + + public JuceMidiPort openMidiOutputPortWithJuceIndex (int index) + { + return openMidiPortWithJuceIndex (index, 0, false); + } + + /* 0: unpaired, 1: paired, 2: pairing */ + public int getBluetoothDeviceStatus (String address) + { + synchronized (MidiDeviceManager.class) + { + if (! address.isEmpty()) + { + if (findMidiDeviceForBluetoothAddress (address) != null) + return 1; + + if (btDevicesPairing.containsKey (address)) + return 2; + + if (findOpenTaskForBluetoothAddress (address) != null) + return 2; + } + } + + return 0; + } + + public boolean pairBluetoothDevice (BluetoothDevice btDevice) + { + String btAddress = btDevice.getAddress(); + if (btAddress.isEmpty()) + return false; + + synchronized (MidiDeviceManager.class) + { + if (getBluetoothDeviceStatus (btAddress) != 0) + return false; + + + btDevicesPairing.put (btDevice.getAddress(), null); + BluetoothGatt gatt = btDevice.connectGatt (getApplicationContext(), true, new DummyBluetoothGattCallback (this)); + + if (gatt != null) + { + btDevicesPairing.put (btDevice.getAddress(), gatt); + } + else + { + pairBluetoothDeviceStepTwo (btDevice); + } + } + + return true; + } + + public void pairBluetoothDeviceStepTwo (BluetoothDevice btDevice) + { + manager.openBluetoothDevice(btDevice, this, null); + } + + public void unpairBluetoothDevice (String address) + { + if (address.isEmpty()) + return; + + synchronized (MidiDeviceManager.class) + { + if (btDevicesPairing.containsKey (address)) + { + BluetoothGatt gatt = btDevicesPairing.get (address); + if (gatt != null) + { + gatt.disconnect(); + gatt.close(); + } + + btDevicesPairing.remove (address); + } + + MidiDeviceOpenTask openTask = findOpenTaskForBluetoothAddress (address); + if (openTask != null) + { + int deviceID = openTask.getID(); + openTask.cancel(); + openTasks.remove (deviceID); + } + + Pair midiDevicePair = findMidiDeviceForBluetoothAddress (address); + if (midiDevicePair != null) + { + MidiDevice midiDevice = midiDevicePair.first; + onDeviceRemoved (midiDevice.getInfo()); + + try { + midiDevice.close(); + } + catch (IOException exception) + { + Log.d ("JUCE", "IOException while closing midi device"); + } + } + } + } + + private Pair findMidiDeviceForBluetoothAddress (String address) + { + for (Pair midiDevice : midiDevices) + { + MidiDeviceInfo info = midiDevice.first.getInfo(); + if (info.getType() == MidiDeviceInfo.TYPE_BLUETOOTH) + { + BluetoothDevice btDevice = (BluetoothDevice) info.getProperties().get (info.PROPERTY_BLUETOOTH_DEVICE); + if (btDevice != null && btDevice.getAddress().equals (address)) + return midiDevice; + } + } + + return null; + } + + private MidiDeviceOpenTask findOpenTaskForBluetoothAddress (String address) + { + for (Integer deviceID : openTasks.keySet()) + { + MidiDeviceOpenTask openTask = openTasks.get (deviceID); + if (openTask.getBluetoothAddress().equals (address)) + return openTask; + } + + return null; + } + + public void removePort (MidiPortPath path) + { + openPorts.remove (path); + } + + public String getInputPortNameForJuceIndex (int index) + { + MidiPortPath portInfo = getPortPathForJuceIndex (MidiDeviceInfo.PortInfo.TYPE_OUTPUT, index); + if (portInfo != null) + return getPortName (portInfo); + + return ""; + } + + public String getOutputPortNameForJuceIndex (int index) + { + MidiPortPath portInfo = getPortPathForJuceIndex (MidiDeviceInfo.PortInfo.TYPE_INPUT, index); + if (portInfo != null) + return getPortName (portInfo); + + return ""; + } + + public void onDeviceAdded (MidiDeviceInfo info) + { + // only add standard midi devices + if (info.getType() == info.TYPE_BLUETOOTH) + return; + + manager.openDevice (info, this, null); + } + + public void onDeviceRemoved (MidiDeviceInfo info) + { + synchronized (MidiDeviceManager.class) + { + Pair devicePair = getMidiDevicePairForId (info.getId()); + + if (devicePair != null) + { + MidiDevice midiDevice = devicePair.first; + BluetoothGatt gatt = devicePair.second; + + // close all ports that use this device + boolean removedPort = true; + + while (removedPort == true) + { + removedPort = false; + for (MidiPortPath key : openPorts.keySet()) + { + if (key.deviceId == info.getId()) + { + openPorts.get(key).get().close(); + removedPort = true; + break; + } + } + } + + if (gatt != null) + { + gatt.disconnect(); + gatt.close(); + } + + midiDevices.remove (devicePair); + } + } + } + + public void onDeviceStatusChanged (MidiDeviceStatus status) + { + } + + @Override + public void onDeviceOpened (MidiDevice theDevice) + { + synchronized (MidiDeviceManager.class) + { + MidiDeviceInfo info = theDevice.getInfo(); + int deviceID = info.getId(); + BluetoothGatt gatt = null; + boolean isBluetooth = false; + + if (! openTasks.containsKey (deviceID)) + { + if (info.getType() == MidiDeviceInfo.TYPE_BLUETOOTH) + { + isBluetooth = true; + BluetoothDevice btDevice = (BluetoothDevice) info.getProperties().get (info.PROPERTY_BLUETOOTH_DEVICE); + if (btDevice != null) + { + String btAddress = btDevice.getAddress(); + if (btDevicesPairing.containsKey (btAddress)) + { + gatt = btDevicesPairing.get (btAddress); + btDevicesPairing.remove (btAddress); + } + else + { + // unpair was called in the mean time + try + { + Pair midiDevicePair = findMidiDeviceForBluetoothAddress (btDevice.getAddress()); + if (midiDevicePair != null) + { + gatt = midiDevicePair.second; + + if (gatt != null) + { + gatt.disconnect(); + gatt.close(); + } + } + + theDevice.close(); + } + catch (IOException e) + {} + + return; + } + } + } + + MidiDeviceOpenTask openTask = new MidiDeviceOpenTask (this, theDevice, gatt); + openTasks.put (deviceID, openTask); + + new java.util.Timer().schedule (openTask, (isBluetooth ? 2000 : 100)); + } + } + } + + public void onDeviceOpenedDelayed (MidiDevice theDevice) + { + synchronized (MidiDeviceManager.class) + { + int deviceID = theDevice.getInfo().getId(); + + if (openTasks.containsKey (deviceID)) + { + if (! midiDevices.contains(theDevice)) + { + BluetoothGatt gatt = openTasks.get (deviceID).getGatt(); + openTasks.remove (deviceID); + midiDevices.add (new Pair (theDevice, gatt)); + } + } + else + { + // unpair was called in the mean time + MidiDeviceInfo info = theDevice.getInfo(); + BluetoothDevice btDevice = (BluetoothDevice) info.getProperties().get (info.PROPERTY_BLUETOOTH_DEVICE); + if (btDevice != null) + { + String btAddress = btDevice.getAddress(); + Pair midiDevicePair = findMidiDeviceForBluetoothAddress (btDevice.getAddress()); + if (midiDevicePair != null) + { + BluetoothGatt gatt = midiDevicePair.second; + + if (gatt != null) + { + gatt.disconnect(); + gatt.close(); + } + } + } + + try + { + theDevice.close(); + } + catch (IOException e) + {} + } + } + } + + public String getPortName(MidiPortPath path) + { + int portTypeToFind = (path.isInput ? MidiDeviceInfo.PortInfo.TYPE_INPUT : MidiDeviceInfo.PortInfo.TYPE_OUTPUT); + + synchronized (MidiDeviceManager.class) + { + for (MidiDeviceInfo info : deviceInfos) + { + int localIndex = 0; + if (info.getId() == path.deviceId) + { + for (MidiDeviceInfo.PortInfo portInfo : info.getPorts()) + { + int portType = portInfo.getType(); + if (portType == portTypeToFind) + { + int portIndex = portInfo.getPortNumber(); + if (portIndex == path.portIndex) + { + String portName = portInfo.getName(); + if (portName.isEmpty()) + portName = (String) info.getProperties().get(info.PROPERTY_NAME); + + return portName; + } + } + } + } + } + } + + return ""; + } + + public MidiPortPath getPortPathForJuceIndex (int portType, int juceIndex) + { + int portIdx = 0; + for (MidiDeviceInfo info : deviceInfos) + { + for (MidiDeviceInfo.PortInfo portInfo : info.getPorts()) + { + if (portInfo.getType() == portType) + { + if (portIdx == juceIndex) + return new MidiPortPath (info.getId(), + (portType == MidiDeviceInfo.PortInfo.TYPE_INPUT), + portInfo.getPortNumber()); + + portIdx++; + } + } + } + + return null; + } + + private MidiDeviceInfo[] getDeviceInfos() + { + synchronized (MidiDeviceManager.class) + { + MidiDeviceInfo[] infos = new MidiDeviceInfo[midiDevices.size()]; + + int idx = 0; + for (Pair midiDevice : midiDevices) + infos[idx++] = midiDevice.first.getInfo(); + + return infos; + } + } + + private Pair getMidiDevicePairForId (int deviceId) + { + synchronized (MidiDeviceManager.class) + { + for (Pair midiDevice : midiDevices) + if (midiDevice.first.getInfo().getId() == deviceId) + return midiDevice; + } + + return null; + } + + private MidiManager manager; + private HashMap btDevicesPairing; + private HashMap openTasks; + private ArrayList> midiDevices; + private MidiDeviceInfo[] deviceInfos; + private HashMap> openPorts; + } + + public MidiDeviceManager getAndroidMidiDeviceManager() + { + if (getSystemService (MIDI_SERVICE) == null) + return null; + + synchronized (AudioPluginHost.class) + { + if (midiDeviceManager == null) + midiDeviceManager = new MidiDeviceManager(); + } + + return midiDeviceManager; + } + + public BluetoothManager getAndroidBluetoothManager() + { + BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); + + if (adapter == null) + return null; + + if (adapter.getBluetoothLeScanner() == null) + return null; + + synchronized (AudioPluginHost.class) + { + if (bluetoothManager == null) + bluetoothManager = new BluetoothManager(); + } + + return bluetoothManager; + } + + //============================================================================== + @Override + public void onCreate (Bundle savedInstanceState) + { + super.onCreate (savedInstanceState); + + isScreenSaverEnabled = true; + hideActionBar(); + viewHolder = new ViewHolder (this); + setContentView (viewHolder); + + setVolumeControlStream (AudioManager.STREAM_MUSIC); + + permissionCallbackPtrMap = new HashMap(); + } + + @Override + protected void onDestroy() + { + quitApp(); + super.onDestroy(); + + clearDataCache(); + } + + @Override + protected void onPause() + { + suspendApp(); + + try + { + Thread.sleep (1000); // This is a bit of a hack to avoid some hard-to-track-down + // openGL glitches when pausing/resuming apps.. + } catch (InterruptedException e) {} + + super.onPause(); + } + + @Override + protected void onResume() + { + super.onResume(); + resumeApp(); + + // Ensure that navigation/status bar visibility is correctly restored. + for (int i = 0; i < viewHolder.getChildCount(); ++i) + { + if (viewHolder.getChildAt (i) instanceof ComponentPeerView) + ((ComponentPeerView) viewHolder.getChildAt (i)).appResumed(); + } + } + + @Override + public void onConfigurationChanged (Configuration cfg) + { + super.onConfigurationChanged (cfg); + setContentView (viewHolder); + } + + private void callAppLauncher() + { + launchApp (getApplicationInfo().publicSourceDir, + getApplicationInfo().dataDir); + } + + // Need to override this as the default implementation always finishes the activity. + @Override + public void onBackPressed() + { + ComponentPeerView focusedView = getViewWithFocusOrDefaultView(); + + if (focusedView == null) + return; + + focusedView.backButtonPressed(); + } + + private ComponentPeerView getViewWithFocusOrDefaultView() + { + for (int i = 0; i < viewHolder.getChildCount(); ++i) + { + if (viewHolder.getChildAt (i).hasFocus()) + return (ComponentPeerView) viewHolder.getChildAt (i); + } + + if (viewHolder.getChildCount() > 0) + return (ComponentPeerView) viewHolder.getChildAt (0); + + return null; + } + + //============================================================================== + private void hideActionBar() + { + // get "getActionBar" method + java.lang.reflect.Method getActionBarMethod = null; + try + { + getActionBarMethod = this.getClass().getMethod ("getActionBar"); + } + catch (SecurityException e) { return; } + catch (NoSuchMethodException e) { return; } + if (getActionBarMethod == null) return; + + // invoke "getActionBar" method + Object actionBar = null; + try + { + actionBar = getActionBarMethod.invoke (this); + } + catch (java.lang.IllegalArgumentException e) { return; } + catch (java.lang.IllegalAccessException e) { return; } + catch (java.lang.reflect.InvocationTargetException e) { return; } + if (actionBar == null) return; + + // get "hide" method + java.lang.reflect.Method actionBarHideMethod = null; + try + { + actionBarHideMethod = actionBar.getClass().getMethod ("hide"); + } + catch (SecurityException e) { return; } + catch (NoSuchMethodException e) { return; } + if (actionBarHideMethod == null) return; + + // invoke "hide" method + try + { + actionBarHideMethod.invoke (actionBar); + } + catch (java.lang.IllegalArgumentException e) {} + catch (java.lang.IllegalAccessException e) {} + catch (java.lang.reflect.InvocationTargetException e) {} + } + + void requestPermissionsCompat (String[] permissions, int requestCode) + { + Method requestPermissionsMethod = null; + try + { + requestPermissionsMethod = this.getClass().getMethod ("requestPermissions", + String[].class, int.class); + } + catch (SecurityException e) { return; } + catch (NoSuchMethodException e) { return; } + if (requestPermissionsMethod == null) return; + + try + { + requestPermissionsMethod.invoke (this, permissions, requestCode); + } + catch (java.lang.IllegalArgumentException e) {} + catch (java.lang.IllegalAccessException e) {} + catch (java.lang.reflect.InvocationTargetException e) {} + } + + //============================================================================== + private native void launchApp (String appFile, String appDataDir); + private native void quitApp(); + private native void suspendApp(); + private native void resumeApp(); + private native void setScreenSize (int screenWidth, int screenHeight, int dpi); + private native void appActivityResult (int requestCode, int resultCode, Intent data); + private native void appNewIntent (Intent intent); + + //============================================================================== + private ViewHolder viewHolder; + private MidiDeviceManager midiDeviceManager = null; + private BluetoothManager bluetoothManager = null; + private boolean isScreenSaverEnabled; + private java.util.Timer keepAliveTimer; + + public final ComponentPeerView createNewView (boolean opaque, long host) + { + ComponentPeerView v = new ComponentPeerView (this, opaque, host); + viewHolder.addView (v); + return v; + } + + public final void deleteView (ComponentPeerView view) + { + view.host = 0; + + ViewGroup group = (ViewGroup) (view.getParent()); + + if (group != null) + group.removeView (view); + } + + public final void deleteNativeSurfaceView (NativeSurfaceView view) + { + ViewGroup group = (ViewGroup) (view.getParent()); + + if (group != null) + group.removeView (view); + } + + final class ViewHolder extends ViewGroup + { + public ViewHolder (Context context) + { + super (context); + setDescendantFocusability (ViewGroup.FOCUS_AFTER_DESCENDANTS); + setFocusable (false); + } + + protected final void onLayout (boolean changed, int left, int top, int right, int bottom) + { + setScreenSize (getWidth(), getHeight(), getDPI()); + + if (isFirstResize) + { + isFirstResize = false; + callAppLauncher(); + } + } + + private final int getDPI() + { + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics (metrics); + return metrics.densityDpi; + } + + private boolean isFirstResize = true; + } + + public final void excludeClipRegion (android.graphics.Canvas canvas, float left, float top, float right, float bottom) + { + canvas.clipRect (left, top, right, bottom, android.graphics.Region.Op.DIFFERENCE); + } + + //============================================================================== + public final void setScreenSaver (boolean enabled) + { + if (isScreenSaverEnabled != enabled) + { + isScreenSaverEnabled = enabled; + + if (keepAliveTimer != null) + { + keepAliveTimer.cancel(); + keepAliveTimer = null; + } + + if (enabled) + { + getWindow().clearFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + else + { + getWindow().addFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + + // If no user input is received after about 3 seconds, the OS will lower the + // task's priority, so this timer forces it to be kept active. + keepAliveTimer = new java.util.Timer(); + + keepAliveTimer.scheduleAtFixedRate (new TimerTask() + { + @Override + public void run() + { + android.app.Instrumentation instrumentation = new android.app.Instrumentation(); + + try + { + instrumentation.sendKeyDownUpSync (KeyEvent.KEYCODE_UNKNOWN); + } + catch (Exception e) + { + } + } + }, 2000, 2000); + } + } + } + + public final boolean getScreenSaver() + { + return isScreenSaverEnabled; + } + + //============================================================================== + public final String getClipboardContent() + { + ClipboardManager clipboard = (ClipboardManager) getSystemService (CLIPBOARD_SERVICE); + return clipboard.getText().toString(); + } + + public final void setClipboardContent (String newText) + { + ClipboardManager clipboard = (ClipboardManager) getSystemService (CLIPBOARD_SERVICE); + clipboard.setText (newText); + } + + //============================================================================== + public final void showMessageBox (String title, String message, final long callback) + { + AlertDialog.Builder builder = new AlertDialog.Builder (this); + builder.setTitle (title) + .setMessage (message) + .setCancelable (true) + .setOnCancelListener (new DialogInterface.OnCancelListener() + { + public void onCancel (DialogInterface dialog) + { + AudioPluginHost.this.alertDismissed (callback, 0); + } + }) + .setPositiveButton ("OK", new DialogInterface.OnClickListener() + { + public void onClick (DialogInterface dialog, int id) + { + dialog.dismiss(); + AudioPluginHost.this.alertDismissed (callback, 0); + } + }); + + builder.create().show(); + } + + public final void showOkCancelBox (String title, String message, final long callback, + String okButtonText, String cancelButtonText) + { + AlertDialog.Builder builder = new AlertDialog.Builder (this); + builder.setTitle (title) + .setMessage (message) + .setCancelable (true) + .setOnCancelListener (new DialogInterface.OnCancelListener() + { + public void onCancel (DialogInterface dialog) + { + AudioPluginHost.this.alertDismissed (callback, 0); + } + }) + .setPositiveButton (okButtonText.isEmpty() ? "OK" : okButtonText, new DialogInterface.OnClickListener() + { + public void onClick (DialogInterface dialog, int id) + { + dialog.dismiss(); + AudioPluginHost.this.alertDismissed (callback, 1); + } + }) + .setNegativeButton (cancelButtonText.isEmpty() ? "Cancel" : cancelButtonText, new DialogInterface.OnClickListener() + { + public void onClick (DialogInterface dialog, int id) + { + dialog.dismiss(); + AudioPluginHost.this.alertDismissed (callback, 0); + } + }); + + builder.create().show(); + } + + public final void showYesNoCancelBox (String title, String message, final long callback) + { + AlertDialog.Builder builder = new AlertDialog.Builder (this); + builder.setTitle (title) + .setMessage (message) + .setCancelable (true) + .setOnCancelListener (new DialogInterface.OnCancelListener() + { + public void onCancel (DialogInterface dialog) + { + AudioPluginHost.this.alertDismissed (callback, 0); + } + }) + .setPositiveButton ("Yes", new DialogInterface.OnClickListener() + { + public void onClick (DialogInterface dialog, int id) + { + dialog.dismiss(); + AudioPluginHost.this.alertDismissed (callback, 1); + } + }) + .setNegativeButton ("No", new DialogInterface.OnClickListener() + { + public void onClick (DialogInterface dialog, int id) + { + dialog.dismiss(); + AudioPluginHost.this.alertDismissed (callback, 2); + } + }) + .setNeutralButton ("Cancel", new DialogInterface.OnClickListener() + { + public void onClick (DialogInterface dialog, int id) + { + dialog.dismiss(); + AudioPluginHost.this.alertDismissed (callback, 0); + } + }); + + builder.create().show(); + } + + public native void alertDismissed (long callback, int id); + + //============================================================================== + public final class ComponentPeerView extends ViewGroup + implements View.OnFocusChangeListener + { + public ComponentPeerView (Context context, boolean opaque_, long host) + { + super (context); + this.host = host; + setWillNotDraw (false); + opaque = opaque_; + + setFocusable (true); + setFocusableInTouchMode (true); + setOnFocusChangeListener (this); + + // swap red and blue colours to match internal opengl texture format + ColorMatrix colorMatrix = new ColorMatrix(); + + float[] colorTransform = { 0, 0, 1.0f, 0, 0, + 0, 1.0f, 0, 0, 0, + 1.0f, 0, 0, 0, 0, + 0, 0, 0, 1.0f, 0 }; + + colorMatrix.set (colorTransform); + paint.setColorFilter (new ColorMatrixColorFilter (colorMatrix)); + + java.lang.reflect.Method method = null; + + try + { + method = getClass().getMethod ("setLayerType", int.class, Paint.class); + } + catch (SecurityException e) {} + catch (NoSuchMethodException e) {} + + if (method != null) + { + try + { + int layerTypeNone = 0; + method.invoke (this, layerTypeNone, null); + } + catch (java.lang.IllegalArgumentException e) {} + catch (java.lang.IllegalAccessException e) {} + catch (java.lang.reflect.InvocationTargetException e) {} + } + } + + //============================================================================== + private native void handlePaint (long host, Canvas canvas, Paint paint); + + @Override + public void onDraw (Canvas canvas) + { + if (host == 0) + return; + + handlePaint (host, canvas, paint); + } + + @Override + public boolean isOpaque() + { + return opaque; + } + + private boolean opaque; + private long host; + private Paint paint = new Paint(); + + //============================================================================== + private native void handleMouseDown (long host, int index, float x, float y, long time); + private native void handleMouseDrag (long host, int index, float x, float y, long time); + private native void handleMouseUp (long host, int index, float x, float y, long time); + + @Override + public boolean onTouchEvent (MotionEvent event) + { + if (host == 0) + return false; + + int action = event.getAction(); + long time = event.getEventTime(); + + switch (action & MotionEvent.ACTION_MASK) + { + case MotionEvent.ACTION_DOWN: + handleMouseDown (host, event.getPointerId(0), event.getX(), event.getY(), time); + return true; + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + handleMouseUp (host, event.getPointerId(0), event.getX(), event.getY(), time); + return true; + + case MotionEvent.ACTION_MOVE: + { + int n = event.getPointerCount(); + for (int i = 0; i < n; ++i) + handleMouseDrag (host, event.getPointerId(i), event.getX(i), event.getY(i), time); + + return true; + } + + case MotionEvent.ACTION_POINTER_UP: + { + int i = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; + handleMouseUp (host, event.getPointerId(i), event.getX(i), event.getY(i), time); + return true; + } + + case MotionEvent.ACTION_POINTER_DOWN: + { + int i = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; + handleMouseDown (host, event.getPointerId(i), event.getX(i), event.getY(i), time); + return true; + } + + default: + break; + } + + return false; + } + + //============================================================================== + private native void handleKeyDown (long host, int keycode, int textchar); + private native void handleKeyUp (long host, int keycode, int textchar); + private native void handleBackButton (long host); + private native void handleKeyboardHidden (long host); + + public void showKeyboard (String type) + { + InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); + + if (imm != null) + { + if (type.length() > 0) + { + imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT); + imm.setInputMethod (getWindowToken(), type); + keyboardDismissListener.startListening(); + } + else + { + imm.hideSoftInputFromWindow (getWindowToken(), 0); + keyboardDismissListener.stopListening(); + } + } + } + + public void backButtonPressed() + { + if (host == 0) + return; + + handleBackButton (host); + } + + @Override + public boolean onKeyDown (int keyCode, KeyEvent event) + { + if (host == 0) + return false; + + switch (keyCode) + { + case KeyEvent.KEYCODE_VOLUME_UP: + case KeyEvent.KEYCODE_VOLUME_DOWN: + return super.onKeyDown (keyCode, event); + case KeyEvent.KEYCODE_BACK: + { + ((Activity) getContext()).onBackPressed(); + return true; + } + + default: + break; + } + + handleKeyDown (host, keyCode, event.getUnicodeChar()); + return true; + } + + @Override + public boolean onKeyUp (int keyCode, KeyEvent event) + { + if (host == 0) + return false; + + handleKeyUp (host, keyCode, event.getUnicodeChar()); + return true; + } + + @Override + public boolean onKeyMultiple (int keyCode, int count, KeyEvent event) + { + if (host == 0) + return false; + + if (keyCode != KeyEvent.KEYCODE_UNKNOWN || event.getAction() != KeyEvent.ACTION_MULTIPLE) + return super.onKeyMultiple (keyCode, count, event); + + if (event.getCharacters() != null) + { + int utf8Char = event.getCharacters().codePointAt (0); + handleKeyDown (host, utf8Char, utf8Char); + return true; + } + + return false; + } + + //============================================================================== + private final class KeyboardDismissListener + { + public KeyboardDismissListener (ComponentPeerView viewToUse) + { + view = viewToUse; + } + + private void startListening() + { + view.getViewTreeObserver().addOnGlobalLayoutListener(viewTreeObserver); + } + + private void stopListening() + { + view.getViewTreeObserver().removeGlobalOnLayoutListener(viewTreeObserver); + } + + private class TreeObserver implements ViewTreeObserver.OnGlobalLayoutListener + { + @Override + public void onGlobalLayout() + { + Rect r = new Rect(); + + view.getWindowVisibleDisplayFrame(r); + + int diff = view.getHeight() - (r.bottom - r.top); + + // Arbitrary threshold, surely keyboard would take more than 20 pix. + if (diff < 20) + handleKeyboardHidden (view.host); + }; + }; + + private ComponentPeerView view; + private TreeObserver viewTreeObserver = new TreeObserver(); + } + + private KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this); + + // this is here to make keyboard entry work on a Galaxy Tab2 10.1 + @Override + public InputConnection onCreateInputConnection (EditorInfo outAttrs) + { + outAttrs.actionLabel = ""; + outAttrs.hintText = ""; + outAttrs.initialCapsMode = 0; + outAttrs.initialSelEnd = outAttrs.initialSelStart = -1; + outAttrs.label = ""; + outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI; + outAttrs.inputType = InputType.TYPE_NULL; + + return new BaseInputConnection (this, false); + } + + //============================================================================== + @Override + protected void onSizeChanged (int w, int h, int oldw, int oldh) + { + if (host == 0) + return; + + super.onSizeChanged (w, h, oldw, oldh); + viewSizeChanged (host); + } + + @Override + protected void onLayout (boolean changed, int left, int top, int right, int bottom) + { + for (int i = getChildCount(); --i >= 0;) + requestTransparentRegion (getChildAt (i)); + } + + private native void viewSizeChanged (long host); + + @Override + public void onFocusChange (View v, boolean hasFocus) + { + if (host == 0) + return; + + if (v == this) + focusChanged (host, hasFocus); + } + + private native void focusChanged (long host, boolean hasFocus); + + public void setViewName (String newName) {} + + public void setSystemUiVisibilityCompat (int visibility) + { + Method systemUIVisibilityMethod = null; + try + { + systemUIVisibilityMethod = this.getClass().getMethod ("setSystemUiVisibility", int.class); + } + catch (SecurityException e) { return; } + catch (NoSuchMethodException e) { return; } + if (systemUIVisibilityMethod == null) return; + + try + { + systemUIVisibilityMethod.invoke (this, visibility); + } + catch (java.lang.IllegalArgumentException e) {} + catch (java.lang.IllegalAccessException e) {} + catch (java.lang.reflect.InvocationTargetException e) {} + } + + public boolean isVisible() { return getVisibility() == VISIBLE; } + public void setVisible (boolean b) { setVisibility (b ? VISIBLE : INVISIBLE); } + + public boolean containsPoint (int x, int y) + { + return true; //xxx needs to check overlapping views + } + + //============================================================================== + private native void handleAppResumed (long host); + + public void appResumed() + { + if (host == 0) + return; + + handleAppResumed (host); + } + } + + //============================================================================== + public static class NativeSurfaceView extends SurfaceView + implements SurfaceHolder.Callback + { + private long nativeContext = 0; + + NativeSurfaceView (Context context, long nativeContextPtr) + { + super (context); + nativeContext = nativeContextPtr; + } + + public Surface getNativeSurface() + { + Surface retval = null; + + SurfaceHolder holder = getHolder(); + if (holder != null) + retval = holder.getSurface(); + + return retval; + } + + //============================================================================== + @Override + public void surfaceChanged (SurfaceHolder holder, int format, int width, int height) + { + surfaceChangedNative (nativeContext, holder, format, width, height); + } + + @Override + public void surfaceCreated (SurfaceHolder holder) + { + surfaceCreatedNative (nativeContext, holder); + } + + @Override + public void surfaceDestroyed (SurfaceHolder holder) + { + surfaceDestroyedNative (nativeContext, holder); + } + + @Override + protected void dispatchDraw (Canvas canvas) + { + super.dispatchDraw (canvas); + dispatchDrawNative (nativeContext, canvas); + } + + //============================================================================== + @Override + protected void onAttachedToWindow () + { + super.onAttachedToWindow(); + getHolder().addCallback (this); + } + + @Override + protected void onDetachedFromWindow () + { + super.onDetachedFromWindow(); + getHolder().removeCallback (this); + } + + //============================================================================== + private native void dispatchDrawNative (long nativeContextPtr, Canvas canvas); + private native void surfaceCreatedNative (long nativeContextptr, SurfaceHolder holder); + private native void surfaceDestroyedNative (long nativeContextptr, SurfaceHolder holder); + private native void surfaceChangedNative (long nativeContextptr, SurfaceHolder holder, + int format, int width, int height); + } + + public NativeSurfaceView createNativeSurfaceView (long nativeSurfacePtr) + { + return new NativeSurfaceView (this, nativeSurfacePtr); + } + + //============================================================================== + public final int[] renderGlyph (char glyph1, char glyph2, Paint paint, android.graphics.Matrix matrix, Rect bounds) + { + Path p = new Path(); + + char[] str = { glyph1, glyph2 }; + paint.getTextPath (str, 0, (glyph2 != 0 ? 2 : 1), 0.0f, 0.0f, p); + + RectF boundsF = new RectF(); + p.computeBounds (boundsF, true); + matrix.mapRect (boundsF); + + boundsF.roundOut (bounds); + bounds.left--; + bounds.right++; + + final int w = bounds.width(); + final int h = Math.max (1, bounds.height()); + + Bitmap bm = Bitmap.createBitmap (w, h, Bitmap.Config.ARGB_8888); + + Canvas c = new Canvas (bm); + matrix.postTranslate (-bounds.left, -bounds.top); + c.setMatrix (matrix); + c.drawPath (p, paint); + + final int sizeNeeded = w * h; + if (cachedRenderArray.length < sizeNeeded) + cachedRenderArray = new int [sizeNeeded]; + + bm.getPixels (cachedRenderArray, 0, w, 0, 0, w, h); + bm.recycle(); + return cachedRenderArray; + } + + private int[] cachedRenderArray = new int [256]; + + //============================================================================== + public static class NativeInvocationHandler implements InvocationHandler + { + public NativeInvocationHandler (Activity activityToUse, long nativeContextRef) + { + activity = activityToUse; + nativeContext = nativeContextRef; + } + + public void nativeContextDeleted() + { + nativeContext = 0; + } + + @Override + public void finalize() + { + activity.runOnUiThread (new Runnable() + { + @Override + public void run() + { + if (nativeContext != 0) + dispatchFinalize (nativeContext); + } + }); + } + + @Override + public Object invoke (Object proxy, Method method, Object[] args) throws Throwable + { + return dispatchInvoke (nativeContext, proxy, method, args); + } + + //============================================================================== + Activity activity; + private long nativeContext = 0; + + private native void dispatchFinalize (long nativeContextRef); + private native Object dispatchInvoke (long nativeContextRef, Object proxy, Method method, Object[] args); + } + + public InvocationHandler createInvocationHandler (long nativeContextRef) + { + return new NativeInvocationHandler (this, nativeContextRef); + } + + public void invocationHandlerContextDeleted (InvocationHandler handler) + { + ((NativeInvocationHandler) handler).nativeContextDeleted(); + } + + //============================================================================== + public static class HTTPStream + { + public HTTPStream (String address, boolean isPostToUse, byte[] postDataToUse, + String headersToUse, int timeOutMsToUse, + int[] statusCodeToUse, StringBuffer responseHeadersToUse, + int numRedirectsToFollowToUse, String httpRequestCmdToUse) throws IOException + { + isPost = isPostToUse; + postData = postDataToUse; + headers = headersToUse; + timeOutMs = timeOutMsToUse; + statusCode = statusCodeToUse; + responseHeaders = responseHeadersToUse; + totalLength = -1; + numRedirectsToFollow = numRedirectsToFollowToUse; + httpRequestCmd = httpRequestCmdToUse; + + connection = createConnection (address, isPost, postData, headers, timeOutMs, httpRequestCmd); + } + + private final HttpURLConnection createConnection (String address, boolean isPost, byte[] postData, + String headers, int timeOutMs, String httpRequestCmdToUse) throws IOException + { + HttpURLConnection newConnection = (HttpURLConnection) (new URL(address).openConnection()); + + try + { + newConnection.setInstanceFollowRedirects (false); + newConnection.setConnectTimeout (timeOutMs); + newConnection.setReadTimeout (timeOutMs); + + // headers - if not empty, this string is appended onto the headers that are used for the request. It must therefore be a valid set of HTML header directives, separated by newlines. + // So convert headers string to an array, with an element for each line + String headerLines[] = headers.split("\\n"); + + // Set request headers + for (int i = 0; i < headerLines.length; ++i) + { + int pos = headerLines[i].indexOf (":"); + + if (pos > 0 && pos < headerLines[i].length()) + { + String field = headerLines[i].substring (0, pos); + String value = headerLines[i].substring (pos + 1); + + if (value.length() > 0) + newConnection.setRequestProperty (field, value); + } + } + + newConnection.setRequestMethod (httpRequestCmd); + + if (isPost) + { + newConnection.setDoOutput (true); + + if (postData != null) + { + OutputStream out = newConnection.getOutputStream(); + out.write(postData); + out.flush(); + } + } + + return newConnection; + } + catch (Throwable e) + { + newConnection.disconnect(); + throw new IOException ("Connection error"); + } + } + + private final InputStream getCancellableStream (final boolean isInput) throws ExecutionException + { + synchronized (createFutureLock) + { + if (hasBeenCancelled.get()) + return null; + + streamFuture = executor.submit (new Callable() + { + @Override + public BufferedInputStream call() throws IOException + { + return new BufferedInputStream (isInput ? connection.getInputStream() + : connection.getErrorStream()); + } + }); + } + + try + { + return streamFuture.get(); + } + catch (InterruptedException e) + { + return null; + } + catch (CancellationException e) + { + return null; + } + } + + public final boolean connect() + { + boolean result = false; + int numFollowedRedirects = 0; + + while (true) + { + result = doConnect(); + + if (! result) + return false; + + if (++numFollowedRedirects > numRedirectsToFollow) + break; + + int status = statusCode[0]; + + if (status == 301 || status == 302 || status == 303 || status == 307) + { + // Assumes only one occurrence of "Location" + int pos1 = responseHeaders.indexOf ("Location:") + 10; + int pos2 = responseHeaders.indexOf ("\n", pos1); + + if (pos2 > pos1) + { + String currentLocation = connection.getURL().toString(); + String newLocation = responseHeaders.substring (pos1, pos2); + + try + { + // Handle newLocation whether it's absolute or relative + URL baseUrl = new URL (currentLocation); + URL newUrl = new URL (baseUrl, newLocation); + String transformedNewLocation = newUrl.toString(); + + if (transformedNewLocation != currentLocation) + { + // Clear responseHeaders before next iteration + responseHeaders.delete (0, responseHeaders.length()); + + synchronized (createStreamLock) + { + if (hasBeenCancelled.get()) + return false; + + connection.disconnect(); + + try + { + connection = createConnection (transformedNewLocation, isPost, + postData, headers, timeOutMs, + httpRequestCmd); + } + catch (Throwable e) + { + return false; + } + } + } + else + { + break; + } + } + catch (Throwable e) + { + return false; + } + } + else + { + break; + } + } + else + { + break; + } + } + + return result; + } + + private final boolean doConnect() + { + synchronized (createStreamLock) + { + if (hasBeenCancelled.get()) + return false; + + try + { + try + { + inputStream = getCancellableStream (true); + } + catch (ExecutionException e) + { + if (connection.getResponseCode() < 400) + { + statusCode[0] = connection.getResponseCode(); + connection.disconnect(); + return false; + } + } + finally + { + statusCode[0] = connection.getResponseCode(); + } + + try + { + if (statusCode[0] >= 400) + inputStream = getCancellableStream (false); + else + inputStream = getCancellableStream (true); + } + catch (ExecutionException e) + {} + + for (java.util.Map.Entry> entry : connection.getHeaderFields().entrySet()) + { + if (entry.getKey() != null && entry.getValue() != null) + { + responseHeaders.append(entry.getKey() + ": " + + android.text.TextUtils.join(",", entry.getValue()) + "\n"); + + if (entry.getKey().compareTo ("Content-Length") == 0) + totalLength = Integer.decode (entry.getValue().get (0)); + } + } + + return true; + } + catch (IOException e) + { + return false; + } + } + } + + static class DisconnectionRunnable implements Runnable + { + public DisconnectionRunnable (HttpURLConnection theConnection, + InputStream theInputStream, + ReentrantLock theCreateStreamLock, + Object theCreateFutureLock, + Future theStreamFuture) + { + connectionToDisconnect = theConnection; + inputStream = theInputStream; + createStreamLock = theCreateStreamLock; + createFutureLock = theCreateFutureLock; + streamFuture = theStreamFuture; + } + + public void run() + { + try + { + if (! createStreamLock.tryLock()) + { + synchronized (createFutureLock) + { + if (streamFuture != null) + streamFuture.cancel (true); + } + + createStreamLock.lock(); + } + + if (connectionToDisconnect != null) + connectionToDisconnect.disconnect(); + + if (inputStream != null) + inputStream.close(); + } + catch (IOException e) + {} + finally + { + createStreamLock.unlock(); + } + } + + private HttpURLConnection connectionToDisconnect; + private InputStream inputStream; + private ReentrantLock createStreamLock; + private Object createFutureLock; + Future streamFuture; + } + + public final void release() + { + DisconnectionRunnable disconnectionRunnable = new DisconnectionRunnable (connection, + inputStream, + createStreamLock, + createFutureLock, + streamFuture); + + synchronized (createStreamLock) + { + hasBeenCancelled.set (true); + + connection = null; + } + + Thread disconnectionThread = new Thread(disconnectionRunnable); + disconnectionThread.start(); + } + + public final int read (byte[] buffer, int numBytes) + { + int num = 0; + + try + { + synchronized (createStreamLock) + { + if (inputStream != null) + num = inputStream.read (buffer, 0, numBytes); + } + } + catch (IOException e) + {} + + if (num > 0) + position += num; + + return num; + } + + public final long getPosition() { return position; } + public final long getTotalLength() { return totalLength; } + public final boolean isExhausted() { return false; } + public final boolean setPosition (long newPos) { return false; } + + private boolean isPost; + private byte[] postData; + private String headers; + private int timeOutMs; + String httpRequestCmd; + private HttpURLConnection connection; + private int[] statusCode; + private StringBuffer responseHeaders; + private int totalLength; + private int numRedirectsToFollow; + private InputStream inputStream; + private long position; + private final ReentrantLock createStreamLock = new ReentrantLock(); + private final Object createFutureLock = new Object(); + private AtomicBoolean hasBeenCancelled = new AtomicBoolean(); + + private final ExecutorService executor = Executors.newCachedThreadPool (Executors.defaultThreadFactory()); + Future streamFuture; + } + + public static final HTTPStream createHTTPStream (String address, boolean isPost, byte[] postData, + String headers, int timeOutMs, int[] statusCode, + StringBuffer responseHeaders, int numRedirectsToFollow, + String httpRequestCmd) + { + // timeout parameter of zero for HttpUrlConnection is a blocking connect (negative value for juce::URL) + if (timeOutMs < 0) + timeOutMs = 0; + else if (timeOutMs == 0) + timeOutMs = 30000; + + for (;;) + { + try + { + HTTPStream httpStream = new HTTPStream (address, isPost, postData, headers, + timeOutMs, statusCode, responseHeaders, + numRedirectsToFollow, httpRequestCmd); + + return httpStream; + } + catch (Throwable e) {} + + return null; + } + } + + public final void launchURL (String url) + { + startActivity (new Intent (Intent.ACTION_VIEW, Uri.parse (url))); + } + + private native boolean webViewPageLoadStarted (long host, WebView view, String url); + private native void webViewPageLoadFinished (long host, WebView view, String url); + private native void webViewReceivedError (long host, WebView view, WebResourceRequest request, WebResourceError error); private native void webViewReceivedHttpError (long host, WebView view, WebResourceRequest request, WebResourceResponse errorResponse); private native void webViewReceivedSslError (long host, WebView view, SslErrorHandler handler, SslError error); + private native void webViewCloseWindowRequest (long host, WebView view); + private native void webViewCreateWindowRequest (long host, WebView view); + + //============================================================================== + public class JuceWebViewClient extends WebViewClient + { + public JuceWebViewClient (long hostToUse) + { + host = hostToUse; + } + + public void hostDeleted() + { + synchronized (hostLock) + { + host = 0; + } + } + + @Override + public void onPageFinished (WebView view, String url) + { + if (host == 0) + return; + + webViewPageLoadFinished (host, view, url); + } + + @Override + public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) + { + if (host == 0) + return; + + webViewReceivedSslError (host, view, handler, error); + } + + @Override + public void onReceivedError (WebView view, WebResourceRequest request, WebResourceError error) + { + if (host == 0) + return; + + webViewReceivedError (host, view, request, error); + } + + @Override + public void onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) + { + if (host == 0) + return; + + webViewReceivedHttpError (host, view, request, errorResponse); + } + + @Override + public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) + { + synchronized (hostLock) + { + if (host != 0) + { + boolean shouldLoad = webViewPageLoadStarted (host, view, request.getUrl().toString()); + + if (shouldLoad) + return null; + } + } + + return new WebResourceResponse ("text/html", null, null); + } + + private long host; + private final Object hostLock = new Object(); + } + + public class JuceWebChromeClient extends WebChromeClient + { + public JuceWebChromeClient (long hostToUse) + { + host = hostToUse; + } + + @Override + public void onCloseWindow (WebView window) + { + webViewCloseWindowRequest (host, window); + } + + @Override + public boolean onCreateWindow (WebView view, boolean isDialog, + boolean isUserGesture, Message resultMsg) + { + webViewCreateWindowRequest (host, view); + return false; + } + + private long host; + private final Object hostLock = new Object(); + } + + //============================================================================== + public static final String getLocaleValue (boolean isRegion) + { + java.util.Locale locale = java.util.Locale.getDefault(); + + return isRegion ? locale.getCountry() + : locale.getLanguage(); + } + + private static final String getFileLocation (String type) + { + return Environment.getExternalStoragePublicDirectory (type).getAbsolutePath(); + } + + public static final String getDocumentsFolder() + { + if (getAndroidSDKVersion() >= 19) + return getFileLocation ("Documents"); + + return Environment.getDataDirectory().getAbsolutePath(); + } + + public static final String getPicturesFolder() { return getFileLocation (Environment.DIRECTORY_PICTURES); } + public static final String getMusicFolder() { return getFileLocation (Environment.DIRECTORY_MUSIC); } + public static final String getMoviesFolder() { return getFileLocation (Environment.DIRECTORY_MOVIES); } + public static final String getDownloadsFolder() { return getFileLocation (Environment.DIRECTORY_DOWNLOADS); } + + //============================================================================== + @Override + protected void onActivityResult (int requestCode, int resultCode, Intent data) + { + appActivityResult (requestCode, resultCode, data); + } + + @Override + protected void onNewIntent (Intent intent) + { + super.onNewIntent(intent); + setIntent(intent); + + appNewIntent (intent); + } + + //============================================================================== + public final Typeface getTypeFaceFromAsset (String assetName) + { + try + { + return Typeface.createFromAsset (this.getResources().getAssets(), assetName); + } + catch (Throwable e) {} + + return null; + } + + final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); + + public static String bytesToHex (byte[] bytes) + { + char[] hexChars = new char[bytes.length * 2]; + + for (int j = 0; j < bytes.length; ++j) + { + int v = bytes[j] & 0xff; + hexChars[j * 2] = hexArray[v >>> 4]; + hexChars[j * 2 + 1] = hexArray[v & 0x0f]; + } + + return new String (hexChars); + } + + final private java.util.Map dataCache = new java.util.HashMap(); + + synchronized private final File getDataCacheFile (byte[] data) + { + try + { + java.security.MessageDigest digest = java.security.MessageDigest.getInstance ("MD5"); + digest.update (data); + + String key = bytesToHex (digest.digest()); + + if (dataCache.containsKey (key)) + return (File) dataCache.get (key); + + File f = new File (this.getCacheDir(), "bindata_" + key); + f.delete(); + FileOutputStream os = new FileOutputStream (f); + os.write (data, 0, data.length); + dataCache.put (key, f); + return f; + } + catch (Throwable e) {} + + return null; + } + + private final void clearDataCache() + { + java.util.Iterator it = dataCache.values().iterator(); + + while (it.hasNext()) + { + File f = (File) it.next(); + f.delete(); + } + } + + public final Typeface getTypeFaceFromByteArray (byte[] data) + { + try + { + File f = getDataCacheFile (data); + + if (f != null) + return Typeface.createFromFile (f); + } + catch (Exception e) + { + Log.e ("JUCE", e.toString()); + } + + return null; + } + + public static final int getAndroidSDKVersion() + { + return android.os.Build.VERSION.SDK_INT; + } + + public final String audioManagerGetProperty (String property) + { + Object obj = getSystemService (AUDIO_SERVICE); + if (obj == null) + return null; + + java.lang.reflect.Method method; + + try + { + method = obj.getClass().getMethod ("getProperty", String.class); + } + catch (SecurityException e) { return null; } + catch (NoSuchMethodException e) { return null; } + + if (method == null) + return null; + + try + { + return (String) method.invoke (obj, property); + } + catch (java.lang.IllegalArgumentException e) {} + catch (java.lang.IllegalAccessException e) {} + catch (java.lang.reflect.InvocationTargetException e) {} + + return null; + } + + public final boolean hasSystemFeature (String property) + { + return getPackageManager().hasSystemFeature (property); + } +} diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/SharingContentProvider.java b/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/SharingContentProvider.java new file mode 100644 index 0000000000..f8dd82b0d5 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/src/main/java/com/roli/juce/pluginhost/SharingContentProvider.java @@ -0,0 +1,138 @@ +package com.roli.juce.pluginhost; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.content.res.AssetFileDescriptor; +import android.content.res.Resources; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.net.Uri; +import android.os.FileObserver; +import android.os.ParcelFileDescriptor; +import java.lang.String; + +public final class SharingContentProvider extends ContentProvider +{ + private Object lock = new Object(); + + private native void contentSharerFileObserverEvent (long host, int event, String path); + + private native Cursor contentSharerQuery (Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder); + + private native void contentSharerCursorClosed (long host); + + private native AssetFileDescriptor contentSharerOpenFile (Uri uri, String mode); + private native String[] contentSharerGetStreamTypes (Uri uri, String mimeTypeFilter); + + public final class ProviderFileObserver extends FileObserver + { + public ProviderFileObserver (long hostToUse, String path, int mask) + { + super (path, mask); + + host = hostToUse; + } + + public void onEvent (int event, String path) + { + contentSharerFileObserverEvent (host, event, path); + } + + private long host; + } + + public final class ProviderCursor extends MatrixCursor + { + ProviderCursor (long hostToUse, String[] columnNames) + { + super (columnNames); + + host = hostToUse; + } + + @Override + public void close() + { + super.close(); + + contentSharerCursorClosed (host); + } + + private long host; + } + + @Override + public boolean onCreate() + { + return true; + } + + @Override + public Cursor query (Uri url, String[] projection, String selection, + String[] selectionArgs, String sortOrder) + { + synchronized (lock) + { + return contentSharerQuery (url, projection, selection, selectionArgs, sortOrder); + } + } + + @Override + public Uri insert (Uri uri, ContentValues values) + { + return null; + } + + @Override + public int update (Uri uri, ContentValues values, String selection, + String[] selectionArgs) + { + return 0; + } + + @Override + public int delete (Uri uri, String selection, String[] selectionArgs) + { + return 0; + } + + @Override + public String getType (Uri uri) + { + return null; + } + + @Override + public AssetFileDescriptor openAssetFile (Uri uri, String mode) + { + synchronized (lock) + { + return contentSharerOpenFile (uri, mode); + } + } + + @Override + public ParcelFileDescriptor openFile (Uri uri, String mode) + { + synchronized (lock) + { + AssetFileDescriptor result = contentSharerOpenFile (uri, mode); + + if (result != null) + return result.getParcelFileDescriptor(); + + return null; + } + } + + @Override + public String[] getStreamTypes (Uri uri, String mimeTypeFilter) + { + synchronized (lock) + { + return contentSharerGetStreamTypes (uri, mimeTypeFilter); + } + } + +} diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-hdpi/icon.png b/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-hdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e551340cfb9cec7af90a789f6a24997379f37e46 GIT binary patch literal 34761 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-ldpi/icon.png b/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..475d142e3535e0e8609f31fc4ecdf93c0ce81189 GIT binary patch literal 15111 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 z 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-mdpi/icon.png b/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb13005911312450beed323cdc7498410e9ac661 GIT binary patch literal 18428 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 ZfN^A+W{bp& literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-xhdpi/icon.png b/extras/AudioPluginHost/Builds/Android/app/src/main/res/drawable-xhdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dddc79015e7f57a6cafaaedc9fc0d978a64b94fb GIT binary patch literal 44823 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 Um%~c~?fXHJqH^D=g!Kdd2bwhvF8}}l literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/Android/app/src/release/res/values/string.xml b/extras/AudioPluginHost/Builds/Android/app/src/release/res/values/string.xml new file mode 100644 index 0000000000..bed17a5290 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/app/src/release/res/values/string.xml @@ -0,0 +1,5 @@ + + + + AudioPluginHost + diff --git a/extras/AudioPluginHost/Builds/Android/build.gradle b/extras/AudioPluginHost/Builds/Android/build.gradle new file mode 100644 index 0000000000..07b77dd931 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/build.gradle @@ -0,0 +1,15 @@ +buildscript { + repositories { + jcenter() + google() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.0.1' + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/extras/AudioPluginHost/Builds/Android/gradle/wrapper/LICENSE-for-gradlewrapper.txt b/extras/AudioPluginHost/Builds/Android/gradle/wrapper/LICENSE-for-gradlewrapper.txt new file mode 100644 index 0000000000..e06d208186 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/gradle/wrapper/LICENSE-for-gradlewrapper.txt @@ -0,0 +1,202 @@ +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. + diff --git a/extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.jar b/extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 GIT binary patch literal 53636 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ⅅ8zCNKueM5c!$)^mKpZNR!eIlFST57ePGQcqCqedAQ3UaUEzpjM--5V4YO zY22VxQm%$2NDnwfK+jkz=i2>NjAM6&P1DdcO<*Xs1-lzdXWn#LGSxwhPH7N%D8-zCgpFWt@`LgNYI+Fh^~nSiQmwH0^>E>*O$47MqfQza@Ce z1wBw;igLc#V2@y-*~Hp?jA1)+MYYyAt|DV_8RQCrRY@sAviO}wv;3gFdO>TE(=9o? z=S(r=0oT`w24=ihA=~iFV5z$ZG74?rmYn#eanx(!Hkxcr$*^KRFJKYYB&l6$WVsJ^ z-Iz#HYmE)Da@&seqG1fXsTER#adA&OrD2-T(z}Cwby|mQf{0v*v3hq~pzF`U`jenT z=XHXeB|fa?Ws$+9ADO0rco{#~+`VM?IXg7N>M0w1fyW1iiKTA@p$y zSiAJ%-Mg{m>&S4r#Tw@?@7ck}#oFo-iZJCWc`hw_J$=rw?omE{^tc59ftd`xq?jzf zo0bFUI=$>O!45{!c4?0KsJmZ#$vuYpZLo_O^oHTmmLMm0J_a{Nn`q5tG1m=0ecv$T z5H7r0DZGl6be@aJ+;26EGw9JENj0oJ5K0=^f-yBW2I0jqVIU};NBp*gF7_KlQnhB6 z##d$H({^HXj@il`*4^kC42&3)(A|tuhs;LygA-EWFSqpe+%#?6HG6}mE215Z4mjO2 zY2^?5$<8&k`O~#~sSc5Fy`5hg5#e{kG>SAbTxCh{y32fHkNryU_c0_6h&$zbWc63T z7|r?X7_H!9XK!HfZ+r?FvBQ$x{HTGS=1VN<>Ss-7M3z|vQG|N}Frv{h-q623@Jz*@ ziXlZIpAuY^RPlu&=nO)pFhML5=ut~&zWDSsn%>mv)!P1|^M!d5AwmSPIckoY|0u9I zTDAzG*U&5SPf+@c_tE_I!~Npfi$?gX(kn=zZd|tUZ_ez(xP+)xS!8=k(<{9@<+EUx zYQgZhjn(0qA#?~Q+EA9oh_Jx5PMfE3#KIh#*cFIFQGi)-40NHbJO&%ZvL|LAqU=Rw zf?Vr4qkUcKtLr^g-6*N-tfk+v8@#Lpl~SgKyH!+m9?T8B>WDWK22;!i5&_N=%f{__ z-LHb`v-LvKqTJZCx~z|Yg;U_f)VZu~q7trb%C6fOKs#eJosw&b$nmwGwP;Bz`=zK4 z>U3;}T_ptP)w=vJaL8EhW;J#SHA;fr13f=r#{o)`dRMOs-T;lp&Toi@u^oB_^pw=P zp#8Geo2?@!h2EYHY?L;ayT}-Df0?TeUCe8Cto{W0_a>!7Gxmi5G-nIIS;X{flm2De z{SjFG%knZoVa;mtHR_`*6)KEf=dvOT3OgT7C7&-4P#4X^B%VI&_57cBbli()(%zZC?Y0b;?5!f22UleQ=9h4_LkcA!Xsqx@q{ko&tvP_V@7epFs}AIpM{g??PA>U(sk$Gum>2Eu zD{Oy{$OF%~?B6>ixQeK9I}!$O0!T3#Ir8MW)j2V*qyJ z8Bg17L`rg^B_#rkny-=<3fr}Y42+x0@q6POk$H^*p3~Dc@5uYTQ$pfaRnIT}Wxb;- zl!@kkZkS=l)&=y|21veY8yz$t-&7ecA)TR|=51BKh(@n|d$EN>18)9kSQ|GqP?aeM ztXd9C&Md$PPF*FVs*GhoHM2L@D$(Qf%%x zwQBUt!jM~GgwluBcwkgwQ!249uPkNz3u@LSYZgmpHgX|P#8!iKk^vSKZ;?)KE$92d z2U>y}VWJ0&zjrIqddM3dz-nU%>bL&KU%SA|LiiUU7Ka|c=jF|vQ1V)Jz`JZe*j<5U6~RVuBEVJoY~ z&GE+F$f>4lN=X4-|9v*5O*Os>>r87u z!_1NSV?_X&HeFR1fOFb8_P)4lybJ6?1BWK`Tv2;4t|x1<#@17UO|hLGnrB%nu)fDk zfstJ4{X4^Y<8Lj<}g2^kksSefQTMuTo?tJLCh zC~>CR#a0hADw!_Vg*5fJwV{~S(j8)~sn>Oyt(ud2$1YfGck77}xN@3U_#T`q)f9!2 zf>Ia;Gwp2_C>WokU%(z2ec8z94pZyhaK+e>3a9sj^-&*V494;p9-xk+u1Jn#N_&xs z59OI2w=PuTErv|aNcK*>3l^W*p3}fjXJjJAXtBA#%B(-0--s;1U#f8gFYW!JL+iVG zV0SSx5w8eVgE?3Sg@eQv)=x<+-JgpVixZQNaZr}3b8sVyVs$@ndkF5FYKka@b+YAh z#nq_gzlIDKEs_i}H4f)(VQ!FSB}j>5znkVD&W0bOA{UZ7h!(FXrBbtdGA|PE1db>s z$!X)WY)u#7P8>^7Pjjj-kXNBuJX3(pJVetTZRNOnR5|RT5D>xmwxhAn)9KF3J05J; z-Mfb~dc?LUGqozC2p!1VjRqUwwDBnJhOua3vCCB-%ykW_ohSe?$R#dz%@Gym-8-RA zjMa_SJSzIl8{9dV+&63e9$4;{=1}w2=l+_j_Dtt@<(SYMbV-18&%F@Zl7F_5! z@xwJ0wiDdO%{}j9PW1(t+8P7Ud79yjY>x>aZYWJL_NI?bI6Y02`;@?qPz_PRqz(7v``20`- z033Dy|4;y6di|>cz|P-z|6c&3f&g^OAt8aN0Zd&0yZ>dq2aFCsE<~Ucf$v{sL=*++ zBxFSa2lfA+Y%U@B&3D=&CBO&u`#*nNc|PCY7XO<}MnG0VR764XrHtrb5zwC*2F!Lp zE<~Vj0;z!S-|3M4DFxuQ=`ShTf28<9p!81(0hFbGNqF%0gg*orez9!qt8e%o@Yfl@ zhvY}{@3&f??}7<`p>FyU;7?VkKbh8_=csozU=|fH&szgZ{=NDCylQ>EH^x5!K3~-V z)_2Y>0uJ`Z0Pb58y`RL+&n@m9tJ)O<%q#&u#DAIt+-rRt0eSe1MTtMl@W)H$b3D)@ z*A-1bUgZI)>HdcI4&W>P4W5{-j=s5p5`cbQ+{(g0+RDnz!TR^mxSLu_y#SDVKrj8i zA^hi6>jMGM;`$9Vfb-Yf!47b)Ow`2OKtNB=z|Kxa$5O}WPo;(Dc^`q(7X8kkeFyO8 z{XOq^07=u|7*P2`m;>PIFf=i80MKUxsN{d2cX0M+REsE*20+WQ79T9&cqT>=I_U% z{=8~^Isg(Nzo~`4iQfIb_#CVCD>#5h>=-Z#5dH}WxYzn%0)GAm6L2WdUdP=0_h>7f z(jh&7%1i(ZOn+}D8$iGK4Vs{pmHl_w4Qm-46H9>4^{3dz^DZDh+dw)6Xd@CpQNK$j z{CU;-cmpK=egplZ3y3%y=sEnCJ^eYVKXzV8H2_r*fJ*%*B;a1_lOpt6)IT1IAK2eB z{rie|uDJUrbgfUE>~C>@RO|m5ex55F{=~Bb4Cucp{ok7Yf9V}QuZ`#Gc|WaqsQlK- zKaV)iMRR__&Ak2Z=IM9R9g5$WM4u{a^C-7uX*!myEym z#_#p^T!P~#Dx$%^K>Y_nj_3J*E_LwJ60-5Xu=LkJAwcP@|0;a&+|+ZX`Jbj9P5;T% z|KOc}4*#4o{U?09`9Hz`Xo-I!P=9XfIrr*MQ}y=$!qgv?_J38^bNb4kM&_OVg^_=Eu-qG5U(fw0KMgH){C8pazq~51rN97hf#20-7=aK0)N|UM H-+%o-(+5aQ literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.properties b/extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..6654a817a2 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip \ No newline at end of file diff --git a/extras/AudioPluginHost/Builds/Android/gradlew b/extras/AudioPluginHost/Builds/Android/gradlew new file mode 100755 index 0000000000..9d82f78915 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/gradlew @@ -0,0 +1,160 @@ +#!/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 + +# 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\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +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"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # 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/extras/AudioPluginHost/Builds/Android/gradlew.bat b/extras/AudioPluginHost/Builds/Android/gradlew.bat new file mode 100644 index 0000000000..aec99730b4 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/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/extras/AudioPluginHost/Builds/Android/settings.gradle b/extras/AudioPluginHost/Builds/Android/settings.gradle new file mode 100644 index 0000000000..9d495b34f8 --- /dev/null +++ b/extras/AudioPluginHost/Builds/Android/settings.gradle @@ -0,0 +1 @@ +include ':app' \ No newline at end of file diff --git a/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile b/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile index f22468b4dd..2d619282be 100644 --- a/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile +++ b/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile @@ -35,7 +35,7 @@ ifeq ($(CONFIG),Debug) TARGET_ARCH := -march=native endif - JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I$(HOME)/SDKs/VST_SDK/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 JUCE_TARGET_APP := AudioPluginHost @@ -56,7 +56,7 @@ ifeq ($(CONFIG),Release) TARGET_ARCH := -march=native endif - JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I$(HOME)/SDKs/VST_SDK/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) + JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 JUCE_TARGET_APP := AudioPluginHost @@ -68,12 +68,13 @@ ifeq ($(CONFIG),Release) endif OBJECTS_APP := \ - $(JUCE_OBJDIR)/FilterGraph_62e9c017.o \ - $(JUCE_OBJDIR)/FilterIOConfiguration_1cc9b659.o \ - $(JUCE_OBJDIR)/GraphEditorPanel_3dbd4872.o \ + $(JUCE_OBJDIR)/FilterGraph_769715e3.o \ + $(JUCE_OBJDIR)/FilterIOConfiguration_d1cf3d25.o \ + $(JUCE_OBJDIR)/InternalFilters_eceadbab.o \ + $(JUCE_OBJDIR)/GraphEditorPanel_2223d925.o \ + $(JUCE_OBJDIR)/MainHostWindow_b3494acd.o \ $(JUCE_OBJDIR)/HostStartup_5ce96f96.o \ - $(JUCE_OBJDIR)/InternalFilters_beb54bdf.o \ - $(JUCE_OBJDIR)/MainHostWindow_e920295a.o \ + $(JUCE_OBJDIR)/BinaryData_ce4232d4.o \ $(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o \ $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ @@ -100,34 +101,39 @@ $(JUCE_OUTDIR)/$(JUCE_TARGET_APP) : check-pkg-config $(OBJECTS_APP) $(RESOURCES) -$(V_AT)mkdir -p $(JUCE_OUTDIR) $(V_AT)$(CXX) -o $(JUCE_OUTDIR)/$(JUCE_TARGET_APP) $(OBJECTS_APP) $(JUCE_LDFLAGS) $(JUCE_LDFLAGS_APP) $(RESOURCES) $(TARGET_ARCH) -$(JUCE_OBJDIR)/FilterGraph_62e9c017.o: ../../Source/FilterGraph.cpp +$(JUCE_OBJDIR)/FilterGraph_769715e3.o: ../../Source/Filters/FilterGraph.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling FilterGraph.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" -$(JUCE_OBJDIR)/FilterIOConfiguration_1cc9b659.o: ../../Source/FilterIOConfiguration.cpp +$(JUCE_OBJDIR)/FilterIOConfiguration_d1cf3d25.o: ../../Source/Filters/FilterIOConfiguration.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling FilterIOConfiguration.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" -$(JUCE_OBJDIR)/GraphEditorPanel_3dbd4872.o: ../../Source/GraphEditorPanel.cpp +$(JUCE_OBJDIR)/InternalFilters_eceadbab.o: ../../Source/Filters/InternalFilters.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling InternalFilters.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" + +$(JUCE_OBJDIR)/GraphEditorPanel_2223d925.o: ../../Source/UI/GraphEditorPanel.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling GraphEditorPanel.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" +$(JUCE_OBJDIR)/MainHostWindow_b3494acd.o: ../../Source/UI/MainHostWindow.cpp + -$(V_AT)mkdir -p $(JUCE_OBJDIR) + @echo "Compiling MainHostWindow.cpp" + $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" + $(JUCE_OBJDIR)/HostStartup_5ce96f96.o: ../../Source/HostStartup.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) @echo "Compiling HostStartup.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" -$(JUCE_OBJDIR)/InternalFilters_beb54bdf.o: ../../Source/InternalFilters.cpp +$(JUCE_OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp -$(V_AT)mkdir -p $(JUCE_OBJDIR) - @echo "Compiling InternalFilters.cpp" - $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" - -$(JUCE_OBJDIR)/MainHostWindow_e920295a.o: ../../Source/MainHostWindow.cpp - -$(V_AT)mkdir -p $(JUCE_OBJDIR) - @echo "Compiling MainHostWindow.cpp" + @echo "Compiling BinaryData.cpp" $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" $(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o: ../../JuceLibraryCode/include_juce_audio_basics.cpp diff --git a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj index 741092696b..8fe60e8220 100644 --- a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj @@ -24,12 +24,14 @@ A02C9F4C4B840C27B6CAFEBD = {isa = PBXBuildFile; fileRef = 89309C0C5F3269BD06BE7F27; }; 4DB15177DDC357F4503F88CF = {isa = PBXBuildFile; fileRef = B457EE687507BF1DEEA7581F; }; D92C7BF86C9CCF6B4D14F809 = {isa = PBXBuildFile; fileRef = 7DA35787B5F6F7440D667CC8; }; - 4C88899EB7993A76A97643FE = {isa = PBXBuildFile; fileRef = 9BA1DD697B98005D24F7EC3C; }; - 485A37478F7EAA352DD1A86A = {isa = PBXBuildFile; fileRef = 01FE7ED58992BC9683BA3C94; }; - 040EB574807E8A86F124D851 = {isa = PBXBuildFile; fileRef = B1C6B9E4B9FDC17AA298E541; }; + 443244451A0F2064D4767337 = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; }; + 2E74188531792924F0C73142 = {isa = PBXBuildFile; fileRef = 05863BDFC582C9552A86DF49; }; + C8423A9611C8AAF27468847D = {isa = PBXBuildFile; fileRef = 336FD30C38BD0A176161B8AE; }; + 786AF545C1C1E4D11140C3DF = {isa = PBXBuildFile; fileRef = 43647951ECC7F030B9953965; }; + 3E1689E23B9C85F03209DCEF = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; }; + F635D974599DEC2ED91E6A88 = {isa = PBXBuildFile; fileRef = 04AABCD3491318FB32E844B4; }; A1B0416DA378BB0C3AD6F74B = {isa = PBXBuildFile; fileRef = A66EFAC64B1B67B536C73415; }; - D493393499E0822C70009A63 = {isa = PBXBuildFile; fileRef = 362BB539489999164C3A3D5B; }; - 6CD3B433544911DA879170AE = {isa = PBXBuildFile; fileRef = 1EC0F33A3BABE58138317375; }; + A0144A682BF4843C8CF53FE4 = {isa = PBXBuildFile; fileRef = 6D107D7946DC5976B766345B; }; 15CCE43D7DCFC649638919D4 = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; }; 5C4D406B924230F83E3580AD = {isa = PBXBuildFile; fileRef = 65968EA1B476D71F14DE1D58; }; F4DD98B9310B679D50A2C8A6 = {isa = PBXBuildFile; fileRef = 5D250A57C7DEA80248F30EED; }; @@ -44,21 +46,25 @@ C38D14DC58F1941DD5E4BF60 = {isa = PBXBuildFile; fileRef = 2BE6C2DFD6EBB9A89109AEB5; }; 2727A191DB1BAAC9C04B9081 = {isa = PBXBuildFile; fileRef = 37E4D5C341406B7072120006; }; 84BAFE82A102D9C350672689 = {isa = PBXBuildFile; fileRef = 29D746FC68F69751796671A2; }; - 01FE7ED58992BC9683BA3C94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterIOConfiguration.cpp; path = ../../Source/FilterIOConfiguration.cpp; sourceTree = "SOURCE_ROOT"; }; - 18DD15714443AFC3BAAE211C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterIOConfiguration.h; path = ../../Source/FilterIOConfiguration.h; sourceTree = "SOURCE_ROOT"; }; - 1EC0F33A3BABE58138317375 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainHostWindow.cpp; path = ../../Source/MainHostWindow.cpp; sourceTree = "SOURCE_ROOT"; }; + 04AABCD3491318FB32E844B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainHostWindow.cpp; path = ../../Source/UI/MainHostWindow.cpp; sourceTree = "SOURCE_ROOT"; }; + 04DB9A49969ECC740CC25665 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GraphEditorPanel.h; path = ../../Source/UI/GraphEditorPanel.h; sourceTree = "SOURCE_ROOT"; }; + 05863BDFC582C9552A86DF49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterGraph.cpp; path = ../../Source/Filters/FilterGraph.cpp; sourceTree = "SOURCE_ROOT"; }; + 1DADAD8E34AAF4AFF1C69DC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; }; 29D746FC68F69751796671A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_video.mm"; path = "../../JuceLibraryCode/include_juce_video.mm"; sourceTree = "SOURCE_ROOT"; }; - 2B143B5431318DDB2104B46E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterGraph.h; path = ../../Source/FilterGraph.h; sourceTree = "SOURCE_ROOT"; }; + 2A6983F82B13F9E8B10299AE = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = "SOURCE_ROOT"; }; 2BE6C2DFD6EBB9A89109AEB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_gui_extra.mm"; path = "../../JuceLibraryCode/include_juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; 30F22843EFEBF7AA841EB4D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; 31D55A751C790CB81F58DDB7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; - 362BB539489999164C3A3D5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InternalFilters.cpp; path = ../../Source/InternalFilters.cpp; sourceTree = "SOURCE_ROOT"; }; + 336FD30C38BD0A176161B8AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterIOConfiguration.cpp; path = ../../Source/Filters/FilterIOConfiguration.cpp; sourceTree = "SOURCE_ROOT"; }; 37E4D5C341406B7072120006 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_opengl.mm"; path = "../../JuceLibraryCode/include_juce_opengl.mm"; sourceTree = "SOURCE_ROOT"; }; 3C070DD522CDD11FFC87425D = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_utils"; path = "../../../../modules/juce_audio_utils"; sourceTree = "SOURCE_ROOT"; }; 3D57FE2A8877F12A61054726 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_core"; path = "../../../../modules/juce_core"; sourceTree = "SOURCE_ROOT"; }; + 3D78A731234A833CA112AE45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphEditorPanel.cpp; path = ../../Source/UI/GraphEditorPanel.cpp; sourceTree = "SOURCE_ROOT"; }; + 43647951ECC7F030B9953965 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InternalFilters.cpp; path = ../../Source/Filters/InternalFilters.cpp; sourceTree = "SOURCE_ROOT"; }; 4C7D82F9274A4F9DBF11235C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_basics.mm"; path = "../../JuceLibraryCode/include_juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 4DF6E6E41E10965AD169143B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 5313EB852E41EE58B199B9A2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_devices"; path = "../../../../modules/juce_audio_devices"; sourceTree = "SOURCE_ROOT"; }; + 545D57A6AA801B38548B0CAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterGraph.h; path = ../../Source/Filters/FilterGraph.h; sourceTree = "SOURCE_ROOT"; }; 57DF618F1DE781556B7AFC32 = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = "SOURCE_ROOT"; }; 59842A98E5EBBC54B50C04CD = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_events"; path = "../../../../modules/juce_events"; sourceTree = "SOURCE_ROOT"; }; 5ACC21AA45BBF48C3C64D56D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; @@ -67,10 +73,10 @@ 5EF1D381F42AA8764597F189 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_data_structures.mm"; path = "../../JuceLibraryCode/include_juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; 5FBD6C402617272052BB4D81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_processors.mm"; path = "../../JuceLibraryCode/include_juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; }; 65968EA1B476D71F14DE1D58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_devices.mm"; path = "../../JuceLibraryCode/include_juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; }; - 6692043E22BB181F01767845 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainHostWindow.h; path = ../../Source/MainHostWindow.h; sourceTree = "SOURCE_ROOT"; }; 683CEE986A2467C850FE99E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_core.mm"; path = "../../JuceLibraryCode/include_juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; 6A71B2BCAC4239072BC2BD7E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_basics"; path = "../../../../modules/juce_audio_basics"; sourceTree = "SOURCE_ROOT"; }; - 714C53257417E615916687E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginWindow.h; path = ../../Source/PluginWindow.h; sourceTree = "SOURCE_ROOT"; }; + 6D107D7946DC5976B766345B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; + 725D0D9C8C7FF7B3FB3020ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterIOConfiguration.h; path = ../../Source/Filters/FilterIOConfiguration.h; sourceTree = "SOURCE_ROOT"; }; 7DA35787B5F6F7440D667CC8 = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; 81C1A7770E082F56FE5A90A7 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_opengl"; path = "../../../../modules/juce_opengl"; sourceTree = "SOURCE_ROOT"; }; 82800DBA287EF4BAB13B42FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_graphics.mm"; path = "../../JuceLibraryCode/include_juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; @@ -82,42 +88,49 @@ 938AE72315C6C93949F6220E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_gui_basics"; path = "../../../../modules/juce_gui_basics"; sourceTree = "SOURCE_ROOT"; }; 942A0F04EFB8D0B2FF9780BA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 94CB96C8E4B51F52776C2638 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_graphics"; path = "../../../../modules/juce_graphics"; sourceTree = "SOURCE_ROOT"; }; + 97918AB43AD460AFA8FA2FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginWindow.h; path = ../../Source/UI/PluginWindow.h; sourceTree = "SOURCE_ROOT"; }; 9794142D24966F93FFDE51A1 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 9BA1DD697B98005D24F7EC3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterGraph.cpp; path = ../../Source/FilterGraph.cpp; sourceTree = "SOURCE_ROOT"; }; + 9EBEE3AE5856E877478607C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InternalFilters.h; path = ../../Source/Filters/InternalFilters.h; sourceTree = "SOURCE_ROOT"; }; 9F9B445E6755CAA19E4344ED = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; A4B568E26157FC282214976F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; }; + A5DFC13E4F09134B0D226A3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainHostWindow.h; path = ../../Source/UI/MainHostWindow.h; sourceTree = "SOURCE_ROOT"; }; A5E7CA8A71D049BE2BD33861 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; A66EFAC64B1B67B536C73415 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostStartup.cpp; path = ../../Source/HostStartup.cpp; sourceTree = "SOURCE_ROOT"; }; B0935EBBA4F6E2B05F3D1C0A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - B1C6B9E4B9FDC17AA298E541 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphEditorPanel.cpp; path = ../../Source/GraphEditorPanel.cpp; sourceTree = "SOURCE_ROOT"; }; B285CAB91AE928C476CA4F9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_utils.mm"; path = "../../JuceLibraryCode/include_juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; + B2A1E626CC120982805754F6 = {isa = PBXFileReference; lastKnownFileType = image.png; name = JUCEAppIcon.png; path = ../../Source/JUCEAppIcon.png; sourceTree = "SOURCE_ROOT"; }; B457EE687507BF1DEEA7581F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; B86B918291E1090C6A720971 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_data_structures"; path = "../../../../modules/juce_data_structures"; sourceTree = "SOURCE_ROOT"; }; B8774D8AD307D798831C0DF7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; B8E24A5CEE6B7055537725CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_cryptography.mm"; path = "../../JuceLibraryCode/include_juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; D313CF37B25D7FD313C4F336 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; D4EBC17BDB7F88CCBC76730B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - DD8E5D0C88FA2C287F824357 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GraphEditorPanel.h; path = ../../Source/GraphEditorPanel.h; sourceTree = "SOURCE_ROOT"; }; DDE115D3084ACA6DD6AA4471 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_video"; path = "../../../../modules/juce_video"; sourceTree = "SOURCE_ROOT"; }; E68018DE199135B7F738FB17 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; - EE1BEF4055936CD0C543687C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InternalFilters.h; path = ../../Source/InternalFilters.h; sourceTree = "SOURCE_ROOT"; }; F299BECFB2AEA6105F014848 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_gui_extra"; path = "../../../../modules/juce_gui_extra"; sourceTree = "SOURCE_ROOT"; }; F9AC862E9A3583B6C1488EE0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_formats"; path = "../../../../modules/juce_audio_formats"; sourceTree = "SOURCE_ROOT"; }; FA21631C5536EA3DF55C7FA6 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_cryptography"; path = "../../../../modules/juce_cryptography"; sourceTree = "SOURCE_ROOT"; }; FAF867E9E731D0880D40511F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_processors"; path = "../../../../modules/juce_audio_processors"; sourceTree = "SOURCE_ROOT"; }; - 97790EAEA01CFA5C3CA9737A = {isa = PBXGroup; children = ( - 9BA1DD697B98005D24F7EC3C, - 2B143B5431318DDB2104B46E, - 01FE7ED58992BC9683BA3C94, - 18DD15714443AFC3BAAE211C, - B1C6B9E4B9FDC17AA298E541, - DD8E5D0C88FA2C287F824357, + AA37F82D57C9BB4BE78FCCB9 = {isa = PBXGroup; children = ( + 05863BDFC582C9552A86DF49, + 545D57A6AA801B38548B0CAC, + 336FD30C38BD0A176161B8AE, + 725D0D9C8C7FF7B3FB3020ED, + 43647951ECC7F030B9953965, + 9EBEE3AE5856E877478607C7, ); name = Filters; sourceTree = ""; }; + DE7B77306553B1204071B39A = {isa = PBXGroup; children = ( + 3D78A731234A833CA112AE45, + 04DB9A49969ECC740CC25665, + 04AABCD3491318FB32E844B4, + A5DFC13E4F09134B0D226A3E, + 97918AB43AD460AFA8FA2FFE, ); name = UI; sourceTree = ""; }; + B225B7F2CAABD28A41E7C339 = {isa = PBXGroup; children = ( + AA37F82D57C9BB4BE78FCCB9, + DE7B77306553B1204071B39A, A66EFAC64B1B67B536C73415, - 362BB539489999164C3A3D5B, - EE1BEF4055936CD0C543687C, - 1EC0F33A3BABE58138317375, - 6692043E22BB181F01767845, - 714C53257417E615916687E5, ); name = AudioPluginHost; sourceTree = ""; }; + B2A1E626CC120982805754F6, ); name = Source; sourceTree = ""; }; + 97790EAEA01CFA5C3CA9737A = {isa = PBXGroup; children = ( + B225B7F2CAABD28A41E7C339, ); name = AudioPluginHost; sourceTree = ""; }; 9D8FE1F65CAD416AA606C47A = {isa = PBXGroup; children = ( 6A71B2BCAC4239072BC2BD7E, 5313EB852E41EE58B199B9A2, @@ -135,6 +148,8 @@ DDE115D3084ACA6DD6AA4471, ); name = "JUCE Modules"; sourceTree = ""; }; 7E30376DDAD775FEFE64944C = {isa = PBXGroup; children = ( 30F22843EFEBF7AA841EB4D6, + 6D107D7946DC5976B766345B, + 1DADAD8E34AAF4AFF1C69DC4, 4C7D82F9274A4F9DBF11235C, 65968EA1B476D71F14DE1D58, 5D250A57C7DEA80248F30EED, @@ -152,7 +167,8 @@ A5E7CA8A71D049BE2BD33861, ); name = "JUCE Library Code"; sourceTree = ""; }; A97EE73C79DA3F729D46AF48 = {isa = PBXGroup; children = ( 57DF618F1DE781556B7AFC32, - 7DA35787B5F6F7440D667CC8, ); name = Resources; sourceTree = ""; }; + 7DA35787B5F6F7440D667CC8, + 2A6983F82B13F9E8B10299AE, ); name = Resources; sourceTree = ""; }; D1C4804CD275CB57A5C89A2D = {isa = PBXGroup; children = ( 86CA337014D3F67E906FFD28, D4EBC17BDB7F88CCBC76730B, @@ -208,7 +224,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi"; - PRODUCT_BUNDLE_IDENTIFIER = com.roli.pluginhost; + PRODUCT_BUNDLE_IDENTIFIER = com.roli.juce.pluginhost; SDKROOT_ppc = macosx10.5; USE_HEADERMAP = NO; }; name = Debug; }; 49453CC5AD9F08D2738464AC = {isa = XCBuildConfiguration; buildSettings = { @@ -242,7 +258,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi"; - PRODUCT_BUNDLE_IDENTIFIER = com.roli.pluginhost; + PRODUCT_BUNDLE_IDENTIFIER = com.roli.juce.pluginhost; SDKROOT_ppc = macosx10.5; USE_HEADERMAP = NO; }; name = Release; }; 8D1CA827F1EFD443BDCF198A = {isa = XCBuildConfiguration; buildSettings = { @@ -327,14 +343,16 @@ C8B793AC1BEFBE7A99BE8352, 49453CC5AD9F08D2738464AC, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 2429BB4D705CC57F49418CFB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D92C7BF86C9CCF6B4D14F809, ); runOnlyForDeploymentPostprocessing = 0; }; + D92C7BF86C9CCF6B4D14F809, + 443244451A0F2064D4767337, ); runOnlyForDeploymentPostprocessing = 0; }; E8E94B3C187DA578BFCBDA98 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4C88899EB7993A76A97643FE, - 485A37478F7EAA352DD1A86A, - 040EB574807E8A86F124D851, + 2E74188531792924F0C73142, + C8423A9611C8AAF27468847D, + 786AF545C1C1E4D11140C3DF, + 3E1689E23B9C85F03209DCEF, + F635D974599DEC2ED91E6A88, A1B0416DA378BB0C3AD6F74B, - D493393499E0822C70009A63, - 6CD3B433544911DA879170AE, + A0144A682BF4843C8CF53FE4, 15CCE43D7DCFC649638919D4, 5C4D406B924230F83E3580AD, F4DD98B9310B679D50A2C8A6, diff --git a/extras/AudioPluginHost/Builds/MacOSX/Icon.icns b/extras/AudioPluginHost/Builds/MacOSX/Icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..6ab6915802b8cc41702a02e8527aec517d379e77 GIT binary patch literal 89670 zcmd3NWm{D57w#~0Bhrnuh_rNfH%NE4fOLaMNQrcJOLsTYCEfh!?igmy_J5u89S$#M zcr(w6z3REwy=~2%+(2+f(zfPod?3(o%1BjZ8B8=1G!O`cDJLtb4g!IJf59LWB;f1T zYyKJdLU0q8(?kLO{7@{ugFsXuIY}{1ugueR&s2lKUp!mJ>%IaH1KHV`1@!U-nebr5 zkjQr==DU(EAkqWF&_&xtTgPO>-~9(+{rsegY)F#via5k{s*|%eUk+U)wEP2aQP5+= zj=RVYI;LpQFF8Hp`rNbhJ&y52QK-Xk#Q#70pp7aL0Ex?9%P|o{p|9236WtFifWORR zA~gr4QRJ}YK`5i(v1FDxEEz0cbY=s@^gO(0g$~4xFV3}ibt7kLXbO7Q=(OgD>VN!( z;tyEwygCLyHsj5X(Q1xvna5**3d685{)h-lzQY*$fHX?`86iFyOlKzP?f%%~g^;Ku zJHjqyYTl15PP1+5kAe2B%GJ%qX6muDFSDSSn1p!4S?P48Q9Wo&(7kOT_gF2eGYZ{7Mm^^%un@&TeRy2U zC2-~-4OljwD0l`4v|Cj#h0Ugf60B~nmfFCv%bQSS8kt#gX6m#kT#&fYlo~hB(hOUP zm#vh_)%6ZP%t0lgLR$^aNzR3{DJJLS<#zcy6Gr(^F0UB_!7Zwr`=03Gf4i$P6atW) z=>nOi@N7yUQN(XynWCtmwCku0p@oI|KLiWojKUQi?Jf!3OY6n__(LqjzWoPWtJVd9 zvM56_1@P_k+5C??Jrc+{M}d&(`uhbk;ieh7aGcMA7SXTDE8d$U# z&HAJ+s+Ic&Y+rGZT**{VG%L9FI_GHN5mE&=wsrtxb*z0a=+eb zzk6wJ9x?Q7mi!&{s5B~Q)N=BE0sn?1MW?HvuH?`maC#jM$weY4qv2Wss;tJKgRF^| zz+P~%)U+-0;K&Od&Wghp6m)erqguaulZcT7iqF*OZgDVLjjBVpCrr*dV0HBn1t(A1 zvgTys7PHw@k6M__9||=2Klb{Q#=*XB!oN_EQViL&?a~Z<{P%0sWpW#PeJxkD*S@Vm zM6C^7Ma!Ce4gc8`XGY7^4xX(XNOH}hFeVgQ+p}?bp@FGE#8m>8(qMBH{IYea(Erf! ze7U`O>T|e+qzXqp`bFbGAj6`w<4=d^>Tz9T6*F@++WY~_;#yS3No#8d>zfm9Dr%z_ zT}3FymWMwIUU5)xuo4slsZ=qv4^MOm8W?W-=vzb+8U`XH=rJ>QwavO!L}ePZ7oqv& zQ|Y$3=Y}`1@?5tV5c?xT0q>WXTUk6v8cV68!Py+<{8i9>%TvaPVl&}<2_;g-$v+~I zDbLpSD8$yjyt+J1-zTqmT6a_l%jtWiQ?0Mr7kqV5SuA$G8Tg=b8`U(VlH(BlyPhha z?FGoCo%ba_ec)e+i@k6QH|ttC;l~BUlAUi7u3{QoHc{~J=cuUj>Xy25{N}~vQ8f;E z6EITOg5t^AzW3oFVNgiTM~NPoN_r8Q+JmXxFy1iVu87EZ6YH($yb;iz<}e{-<1 zIcgn+lOO!;C@CFkj%P>GIEdG68elC73Ie5&iGPu0%40*s8btiPAG)a<1hxiARa2oE zis7|~jCkS~^yp&b&`?rLAjchNWcF|(rx3VPNDZWmE~WRRvd5^IqtHBqz7-6!S7Mt; zQueg)h176kh02≦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 N(-HnBW#udDa{=M)M_ge~C`hbK&c`jI)N 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 ${EXECUTABLE_NAME} CFBundleIconFile - + Icon.icns CFBundleIdentifier - com.roli.pluginhost + com.roli.juce.pluginhost CFBundleName AudioPluginHost CFBundleDisplayName diff --git a/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj index 3e48f10f9d..dcc1d5dd8a 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj @@ -148,12 +148,12 @@ - - - + + + + + - - true @@ -493,6 +493,9 @@ true + + true + true @@ -1795,6 +1798,7 @@ true + @@ -1811,12 +1815,12 @@ - - - - - - + + + + + + @@ -2436,13 +2440,16 @@ + + + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj.filters index 48e9f4b10c..7415956798 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2013/AudioPluginHost_App.vcxproj.filters @@ -2,6 +2,15 @@ + + {01436C03-42F4-5952-30EF-7F9E81D997C6} + + + {8C61EB30-11E6-7029-4CC8-56C52EB1F1C3} + + + {57E59C1B-8971-243F-9A1A-8EABFD456232} + {297DEAC9-184C-CA1D-D75C-DAA34116691C} @@ -370,23 +379,23 @@ - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters + + + AudioPluginHost\Source\UI + + + AudioPluginHost\Source\UI - AudioPluginHost - - - AudioPluginHost - - - AudioPluginHost + AudioPluginHost\Source JUCE Modules\juce_audio_basics\buffers @@ -739,6 +748,9 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -2149,6 +2161,9 @@ JUCE Modules\juce_video + + JUCE Library Code + JUCE Library Code @@ -2193,23 +2208,23 @@ - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\UI - - AudioPluginHost + + AudioPluginHost\Source\UI - - AudioPluginHost + + AudioPluginHost\Source\UI JUCE Modules\juce_audio_basics\audio_play_head @@ -4068,11 +4083,17 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code + + AudioPluginHost\Source + JUCE Modules\juce_audio_formats\codecs\flac @@ -4085,6 +4106,9 @@ JUCE Modules\juce_graphics\image_formats\pnglib + + JUCE Library Code + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2013/icon.ico b/extras/AudioPluginHost/Builds/VisualStudio2013/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..09d32ad703e414097a17e969e7d765325e912c77 GIT binary patch literal 33530 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

(u1;L6(cQ?)GnM#vbq;}_8j8w4Fi2^0KYHDQh@ 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 - - - + + + + + - - true @@ -493,6 +493,9 @@ true + + true + true @@ -1795,6 +1798,7 @@ true + @@ -1811,12 +1815,12 @@ - - - - - - + + + + + + @@ -2436,13 +2440,16 @@ + + + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters index 2261d36b12..87f7846b1a 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters @@ -2,6 +2,15 @@ + + {01436C03-42F4-5952-30EF-7F9E81D997C6} + + + {8C61EB30-11E6-7029-4CC8-56C52EB1F1C3} + + + {57E59C1B-8971-243F-9A1A-8EABFD456232} + {297DEAC9-184C-CA1D-D75C-DAA34116691C} @@ -370,23 +379,23 @@ - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters + + + AudioPluginHost\Source\UI + + + AudioPluginHost\Source\UI - AudioPluginHost - - - AudioPluginHost - - - AudioPluginHost + AudioPluginHost\Source JUCE Modules\juce_audio_basics\buffers @@ -739,6 +748,9 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -2149,6 +2161,9 @@ JUCE Modules\juce_video + + JUCE Library Code + JUCE Library Code @@ -2193,23 +2208,23 @@ - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\UI - - AudioPluginHost + + AudioPluginHost\Source\UI - - AudioPluginHost + + AudioPluginHost\Source\UI JUCE Modules\juce_audio_basics\audio_play_head @@ -4068,11 +4083,17 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code + + AudioPluginHost\Source + JUCE Modules\juce_audio_formats\codecs\flac @@ -4085,6 +4106,9 @@ JUCE Modules\juce_graphics\image_formats\pnglib + + JUCE Library Code + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/icon.ico b/extras/AudioPluginHost/Builds/VisualStudio2015/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..09d32ad703e414097a17e969e7d765325e912c77 GIT binary patch literal 33530 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

(u1;L6(cQ?)GnM#vbq;}_8j8w4Fi2^0KYHDQh@ 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 - - - + + + + + - - true @@ -493,6 +493,9 @@ true + + true + true @@ -1795,6 +1798,7 @@ true + @@ -1811,12 +1815,12 @@ - - - - - - + + + + + + @@ -2436,13 +2440,16 @@ + + + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters index 8a072543fe..87a6356e2b 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters @@ -2,6 +2,15 @@ + + {01436C03-42F4-5952-30EF-7F9E81D997C6} + + + {8C61EB30-11E6-7029-4CC8-56C52EB1F1C3} + + + {57E59C1B-8971-243F-9A1A-8EABFD456232} + {297DEAC9-184C-CA1D-D75C-DAA34116691C} @@ -370,23 +379,23 @@ - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters + + + AudioPluginHost\Source\UI + + + AudioPluginHost\Source\UI - AudioPluginHost - - - AudioPluginHost - - - AudioPluginHost + AudioPluginHost\Source JUCE Modules\juce_audio_basics\buffers @@ -739,6 +748,9 @@ JUCE Modules\juce_audio_processors\format_types + + JUCE Modules\juce_audio_processors\format_types + JUCE Modules\juce_audio_processors\format_types @@ -2149,6 +2161,9 @@ JUCE Modules\juce_video + + JUCE Library Code + JUCE Library Code @@ -2193,23 +2208,23 @@ - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\Filters - - AudioPluginHost + + AudioPluginHost\Source\UI - - AudioPluginHost + + AudioPluginHost\Source\UI - - AudioPluginHost + + AudioPluginHost\Source\UI JUCE Modules\juce_audio_basics\audio_play_head @@ -4068,11 +4083,17 @@ JUCE Library Code + + JUCE Library Code + JUCE Library Code + + AudioPluginHost\Source + JUCE Modules\juce_audio_formats\codecs\flac @@ -4085,6 +4106,9 @@ JUCE Modules\juce_graphics\image_formats\pnglib + + JUCE Library Code + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/icon.ico b/extras/AudioPluginHost/Builds/VisualStudio2017/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..09d32ad703e414097a17e969e7d765325e912c77 GIT binary patch literal 33530 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

(u1;L6(cQ?)GnM#vbq;}_8j8w4Fi2^0KYHDQh@ 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 wR}FL}KtK)dzQd#EsbfJ8JIHZk literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..84a06c0479f40f8a0f1fbc9f77b3c3fa99f6ff8f GIT binary patch literal 4395 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-72.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-72.png new file mode 100644 index 0000000000000000000000000000000000000000..52ec77a646f593f384468a65115d5b52b17a87fe GIT binary patch literal 4708 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-76.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-76.png new file mode 100644 index 0000000000000000000000000000000000000000..1d84eb4b92262eaa900e9f22355e4b736e3e0411 GIT binary patch literal 5368 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c2cfbef3f20d48558f0ef8b62c59a2e69066fea5 GIT binary patch literal 12870 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 IGG;;l0~$)J1^@s6 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-@3x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..15deee7ec5b04b061e5d44138e9e1eb8cce1b2b2 GIT binary patch literal 14731 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 Z|1WY;t(?UdCT#!!002ovPDHLkV1nj6Wf1@X literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@3x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ad988c8094c4553d451cf1f806ba34f835a4b99b GIT binary patch literal 4687 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 Z|1WY;t(?UdCT#!!002ovPDHLkV1nj6Wf1@X literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9344000d603583145f6345e3fde84ab3f1653174 GIT binary patch literal 1650 zcmV-&295cNP) zn9WG+7zu_)7R5DPX4iCqN}Xv7L3$^r>SEzFb7bcR+<(@yJeUKxdlDfS^xm%>r%v0`eP`9`7q>H9#c+y2dBN`Yc9ULP!G)3CX5i=49 zp&Y6z4oh#(?XucjW~H%A)hdzG(oBd1DZ-e+1WGiGv^VM6RVrSGCr+KUUYSH7&2)5u z>F7K`Ep&Wn)2{K~%KL0});JLuW8Mm4Y_H;N=kXg`sL?F?>5I6Hckw%GC}tKVGK)QQ zlKax(Nq3Xc&^^r}(Y%-X1kEi8gy4uk#Up z^YPxg63ify7pcS-xzjBYR7@_8ym|ncOURY=J!hY zTQ|t`%Dggi1R+W7HKI2-3*uBqa-}pVv8-Kt!_g&P~$zuW4p&5+RZ_w@i8LRO& z3I8q=L!+!T?o+q7_d_L;N^g@LyUeMYhW+qEe5;MUdYAg&enaq^KSWJV9|1f`@WNYk z+P}lK?jrp*UhfujA&t7dO}Se{BA-DmuScPkXG}?=tv|x6ZSG1*oZOO7?A@&bV0&FkodPG^C{A(tKosuA zLu%K5jehzn>c|49{hA_#h8jDIKKmM-)-_!F!2w^-dBllOjB>Y#<@JEwie!5>HG7*R zGg#H)!1OtVC7S>K6XCC2Mf6GtBa9k6kBH~!+1GKc`vd)aXMehK9+R@>9kReiGe;s1PN*hK;n42P$?z8bkP(Y zH8O@deg(f#8z=xEoCvZfP}5U%dKGHcBCdDp(EXZbqKj!Xq2o!fzb1r02o=|N@zyHz zuHQy>x`!!XeB~_mnE<8D27WM1p*F#0wTLj92>gCCWr!aT>s{$Ypq|GdeK$?eBJ@iX2Awnklxq0*-y~)kr-efyp8koMP zcE8l*`+r$t{$z%cL>OID7*B_(Da*u+Bxy6p)5ftkuEdOCrlSii?R?DWw-!i_W^iWb zxb@d1Dn|gH+ES^>&u`}W$>m8VoG@yr%EQ(p&J4dyJdoPkw^vAoP?(O+Gh*hr7hR|O zol9&~9IC68r=|2rlfZJh#jTA7<6}PS)+eOREK||>eUsz9>K)WVoKIaQpqTt;>m8W! znYc7VC^>X2=;%;@t8*!4GYxKS{S#dnTu5KW)WZAr4V;ncR+T%I4=8mDjEV`88(Es4 z*Qu_QX>B!#WaB8Wp5@wRhx~Sj@wmy^%n*xNo%qmW>ds@*W|j--%fyW2fy2FE8tkyr zSl(;E8JQ#5%@VN^ghLV3u{e*~E<3#zzNp|UtF+wz5i^pUj4dz~oj(xakx=MQ@lP9Y zp|wJ}Tcly{fRJdSU)qomF@{N-S#sh2+#3(1UO4@~5V{9PVtHM9ZWqV5a6B7ddMH9g wR}FL}KtK)dzQd#EsbfJ8JIHZk literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png new file mode 100644 index 0000000000000000000000000000000000000000..3328c84262e0e2cf2a308574a2e629805b9aed10 GIT binary patch literal 3433 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 LNkvXXu0mjfWofeY literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..66506473afdf2bab8d5742dd1259c48ba550253d GIT binary patch literal 8292 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 Z|1WY;t(?UdCT#!!002ovPDHLkV1nj6Wf1@X literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..680ebe06bf95967d1430693b306bd5b6a4009a61 GIT binary patch literal 5235 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..680ebe06bf95967d1430693b306bd5b6a4009a61 GIT binary patch literal 5235 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..635a47187aac9b4a1a18568cd7e534c6e54d398d GIT binary patch literal 10478 zcmY+KWmH>D*M?~eEm|n<8j8D>LMg?A7m9mv4enChEkJO055c{-LxJKB0gAiZo9FxY zowagizW`v-Swv~1SVhfC~kIS>L${nN;%%BO)@OfKn$d7qVfyL|T zw=_moJ&E*bzL*P1>+xAM_o3Zw&FAF6>!f*C=tdWaN^^@!r9H@^=N}7gyA4~%78Ieq z6_1HUeU96r3-}6G)@XS>f;Ix8>q0BGps(8~_R;t2pi?TtltY>`vs zrS6Z$1tb$v;bg|W(Zozn8Hw=#>q0IY3RPm%Au(zkF={z(Zgg&DcCDU#_cKP{NA0*@ zJaNZnj4LA+u3=3gvfacCmQe`}Dkh`&gi;+d z6O0qZu81F!f9rFO6luL2{0G%8`tY$v6(lD%<77B6a>PqCBtMpgA`>>=jl4 zY$F963zF8C__pB~n8gp_rqVLn4k?AE=*VScUL`EG=~;G#yRih8R0j znRF(wSyaJ?fx0VQCV|)iFkmC;3Ez@F(VfK-)#j(Mi2z^M+aIP^u0iEs!Eh)wOeKJj6n@#4paDcUB2YGY9#I;;TRKZUl5+yJc! z4yGp;mv7{WIxvnZcp#Q>n@&E=`8p#xE4${bqy;`>e$}mwR_|}-ntWW$)rJx~(%Qyh zhNh{8e4q}op1f!ix@D#~Q{U_-ZmHy{uSZAz;3h~$yJX3}sHk8_A;K5-vDJZzw5&i- z{S33xo*h-9%9M=Qm9S?Dn2zQN7HA?AnntJwv;Ed+JCSz;pB0MX~_~!Kl2 z7dwb=n~{kii!*{WLygRvKhJg_tbE<@JQOba;-gJCJA5nulsvEIa1v3!v!n<$)#+aP3jcjO>)G@Uufrl9^IJNKv(J;SELlHVwRB*82V}Ph2>r~^WSWNzvh0`=8%hlnU4vX zezM=U8#ZJ+j4m9``>4>4&JZ9gECq|4>`)ArPT&*T+Maa26$D^xG;LlXgmtnRJ z7+co6L%aSV946}(nxJ>PG$g&)f z@{vhDaWk{T^dUZypQd%hai#IiH2Z7_KL;Kg)j)8vjfl%q41NWDYGhix9@4g`$vaB32@(l2 zZ^7~=6I7OHL1%pH3KV)6S^cAaVqT?UB*f&$LSNQ-XbDEe*41&gz1=M%nsG)&(#GFG z8t~4icl%jIxfUM9sv}ZROOm=ic1P#~N>%T;A$<84eHQw)nn?GXnb&bC=(3$6|Yh0`~`0bXWdz>_Vh|jZ)igKshKE|n0>50%Fad-y{!M+vt|L%td#H@VY1Jq2Y&PKR{OOcLrJJaf$rOc zUuCtSYvymo_e3q98;Kgi30i|PNq#H3u9w}J5Bj@MGckgP$6;P)tzvDfPp^~n7;0)P zVjIt`=3?XGw5S&R<(O>T^ppdFaS;2}8osR1=XNTy!c&1^n<`fIo3umfdKA0nEj!Jq z4NW;L4`+eV?B!s-RKG4{SD97_2~ASP@;yjgRk+C{+KKMuCt3p8R?;blG6u(y9ggqxBX*_9$ zgsHQudr1*<-6l3HgAc!Mlt)y)|BB5_7FFC(_!fPZEM!5=mRsmu$v!AbIHAWIn)Y~hi5jA+KNeOBoPI$+DrZ8(tAKx2DXT8 zp?mI8H3<-F)sw<*`{y+OoyWt?zX|70Nl9uANrzkhX-Z1tPQjunpJ!!=W-U0nGn{{q zc3X8MDLDIzRcQ(p0>!ddS%NPUE;; zvi41z^V5=tmsx33q2*NJMgpShqu2)p^7)%lmU-ZIrd=qbk+l~m^>%@B*FJ?qS?fad zf~a2D5~u2^fs7k`?#EAVCNaKv)^!(wAZH*qtnuwlNHuLJKfK?--}XJ2^y#hCeahCb zGpJYR66MDYzi5BHyGO|m@U7|>-ROGips|G-x{Sk>fsV8{a)cit%K-z^#=>jYV{Jex z*JMYxZHA&-2+EHAyKsSLh|Ll($Tkp=+n7yr|MJYz|Jx;09w^0R+g*Di$4Gx*n3{Pq zf)13ruIyWR1Sxmxkc;E`+g`^JKU2MLM(XY#)df&IutR(^!y&pG<)(gD#)+QH@o_k> zpGz;6BtW_4`nX*XTLKRk6({q|$y&=hF zGaFhN|LC?PcVcEeq+hq(M8T8y2-|ufmUCWX4_`k%<6lLre$X^u@`KfXp>=mAPOQaE zv_?C9&)+>bsu?1<+;uDG7qYqlrqlXXIUnFPP|H}TK*b8CN1^`{HhU_VxGCi5(pYm@ zUXb_lj>XHge4JieVGWZQa%GEoXtR~9pvyMV zMcLOmOqADZHfHS5>hH|!Wj2omtx$djL z?oXgU)!Cx+MdFTE@9S)pDt!O@&+}o{W3?rS)-TS>-}z7|WkC+ZaVMqU%9^xOQiN z0EIS^4Mu)rQg3djbf+u1kwRP>p6yZsqiK0v>$uBE6<=qFw&xtaqt0M&M{MdB?4SNy zMNrPE6C*Qi(N8C1<+tu7*J!%UHJ_{tJwT^3l3q=OlJ;H|N!PvGZJ~uCP4R4fUgraq zXEfZ&?~P-w$JKkIa3JB6)3TeVZfnx#?-A=dPNH8v*aE>%6n#^5@5j}?ZKgdK^?m*PQwH2r{#1rH;xt6O%R4x{!%{$YJWL zaU13Q2m1n(DkdFH5?WK`9c@fqG@z1*+hf1bRI>+EvEY zZWWlh*v4$i>j3{ume9Q-vw z+tIOJUwb+DYgD1&tj|#?+_qMzwgoj7WJrV`zYOuWY|Rnr?gXIOMQ8nF6$+~TC2p^@ z&ET-R83Sb-?Q(_9#jxG>*Ba$9$h6(rUXm4`t1=dP(`B{3xQtgebH{xlXcF)yD0DaX zWi~O>0SYljU(NoU;XQ^A_3dS!S{>f1!inG*A27wtL8U~jr12fjG zD2&%#$FQfnCK{uClO@HU3{pf7i-PS3DX6&~i!~QUSk0Fk zQhnbYl6T1;=L-&?x2I@WwE?&o~e0go=B4g;r`;Ct*R- zn&hML>{6XCYn-8<&)Gc0tbRny5xSz&4-Ix`FQ<20iwuE&^$t>vF_Pnx7OjTZD!hFu zhxPXljz6Ap`2;=R^m&d2d8`eKmZdxRIEsRp7t@FcaQHnDFBzAE*)1`{7-#PLr!_tO zQU|efov#V-8)?mjZH77j--G1l-Crw*+0(k0&ZUhP{#D}HV5D!zQ=MfviK{OEeM|cN zqi$$}LcNbCq&hrXQXMsBp*wAd0vrRfN^c zj?7RofJZ8A@(`!R9?*$6c#H6T5`5PFEHyV}QlaB7xIBcY{`#7w4&mT6$L_z?G`;XL z*~ZPn#Wkc~^dwQHp+J*eSJpA0y)KohF4fp>PRV7pWIFe=cD|41S^NUKfe5NUmwmgv z$`+ff?+A)fF*J(oZi0P5!Dal9nCLPwo!RIYs;q?d6v{Daxd1$s%`{w^k{j019|nZ* z!hX<7+FwoTA&>{Pkr~JC*Jk`^M*~|CdFI>!;NG#L9vxZPk{TKpHzn!`D$AnaO;YgfDfj^IlWR{MiqoEi{X{|6rJ+ zGp4`5vgaRN2rV1~r0Nc%bdpM_3Qs%!U{k-*W0#kWUZbN1S}1tMnGn=l2@Rt6&j`eM z_X!#sh&cu;vrzV`JsXbaFlWFuEarEDu)94@*tO^iBxTZpn7Ikuc$y7-2NAtmXbm=z z6`5V#cLWc5x#^HxneuPhV@4`gkL<62Qr2yFObmR({^%wKTzDM7scs7_gTd{Y6y;z? zu)+0X84Z!>PpcROWqLj;H+JY?3X?Nkd+g{WhRgVjuyhi&1?6tylTSVzC8vZj{7FbhPA?4$JJ!#P9^m6la!5qX|kRPA?2X zGv8>APZ1&K9fSv+yS0dpWy;(@%N=u;TRi2n=MDW-v7bL_sT5OH>V@|bDNXw4uy|W7 z0^?(30I+Ynl}KsQX}Tks9z{tpl;~Hmf8U|iYy~pLP`??sp>4WkljZ z2etq&8v_Ntt~gvGH$e{#V&6|Gn__>1yx$j^9ajlt@(KFbhRs%eKTMj4&I&DJ=AFTJ zkaiN(w*`MBBQvH&D@Vp1&LFWdr`LoeTG|0uhJSWWFr+^ZaR8sUlrk;ec_fX76QF2p zX$w;=#j5CkKH1Z6loeMCvk>n2<4(GyPXQo<^c9XXMzA{F6b(_8va!ONS(|ZVLcgaP z7i1<8sJRNxY9D({o8cZjA$K}55)H#XQ`pjBI0%+dtI1v&+fF39i`$;L5JsBwEDqh)Y>+e?rsYj8P_Pa=8K^*Jfd%MX!#Nbw zw(g=z@o?_2Zyc z56#f~y7EI*D6exXXu-BiX8VIiXn`iz{FKo39KuxHhsa*h7BAAS#UeA!($Zkot+Hym(?Y)( z*SX{LL5jBJP}9+`jeM->PEP^}x_X>b%Wd;YJ6TMXeWAI&ti~Q>}o|O!|g6|#R91qusG@xg70wV z)Y>RPv}-GoZfz#^A(D6Zs(J-u$aqc+LzNqg%ib8VP~MUx(;(ji77I6<5v5?MDlGfw zU_8w6X|{>CJuu5Xs$Gt?qxJSGO<#01k~4=jh!w5>l9D5EFmNZ$`R70NwABKrkR+8ETm#jTVc75{zPcy#BqGRIBkrrEpJPZep^^rI&&DQVq$E(B*&8 zG~|y5QBZM+w39b0#P}jdI@NA#YF!B=i>s>Yr9Zk$4 zuP`#jxXd+zyipwydw|M!S$M23*<6vC zGCod#rbeRbnnyY!nCEvYAG#HE>>W6}s5(6|A)MB6t8k{Nh|<%s>h&=tXk$!RvGCXT29!dPT&ATFy14!IrcWySos5jzg%ZyLp!_P3 z^K#zn%_puHp96)E>i5(Y-DngL99>Gq)7H+G?(JMagZ*;A#;=ElcyhEBv^xglKMFd# z=ku1kfyk1_D$H%xJ8b6q0qtqAR-i9g8K=S-$N2&?BF*%fOVQ>p9fiU@-H5Wcby!FkFc#e4#^7i{(jc5{ z`nSbOtn=a|(@t>CF+qHb{O+D5YPspkx%DE~hqn*Z;p{*<)b|Se22`F4s1sIYREsbE zfatbV#Y2nXC~UbRO-A2L*}~TOy3AzTlkQ{!oO({c<9%{;z`;JF<(s3_{2+Q!hn?o! zwMX2=YlS;50TIsr`0AI4c(PzQudh^gQAM}=azxF-8Kbd7rjnG$t3QC2C8y(Yi&IFi zs#&N)a&)xDF{xf<$jpYdwn32}R=(}ONk3(d(O@Z(wj}Wd!Qw=bCZ2s{I$j@nS28w{ z9-w*O3D&JFUCf>%0>bV2{Ax+|82P_xDzo+S3ctoTR4(}xSM z2XvZG^A`!;ED&AqA)fS=NuUCHuHLV!l38e!Z&NdDmBnE znpieMi|D9 zjC7n!pO-JmFRhPdW$)BZ$g&gIKA0`v9Dj3Ur;TAMq1&F*q{4B}QrE4X7Xhw5^N78m{ougPwx7fQtz!K%0=Bzv=8xFl-D z$&a5r6q}u*%0tVte^;}urq&f`&fTBBy@m*Ctp-E)lw8i$C*(Ymfajj4!p_)P88y6k z5b^)kOU){gK0FQgYxIny#eTuuzRbzUC1COV)v*w*TWzk%Zj|Y0DE)_uVRn&@9WB~4 zWBEPEc|JB>)({{Brwuz8Jndm}Eeg0}Tn)OtC z0(PlbC)ZoXg=Kz!5xzm=tL$tZM@M#6LGAWI)$ZasU#7WA)VzgntH%#0KBclW&Qg0UkE`y`cZx^VvBfeww{odjJzhu)z;aoCv3>)r z?@WHN4li_Ol~ab#{rN$!RAprDQM=ps*l>bG7SP&MytBnqwXe%)XW1Uk-0JSVLd4{t zvCVAxAM%j)^y6=KDgw~l`84qhY%R`*!LQ)0hj5t;w~jN?o;i(KaWxD1BvMdR(Rn<) zY_nH0DYU&wZ#dBcE8XqEVEgYMBUrQL_d&JMX$6B+2$3^W(>97^->OQM_Kj&P+o2lwGc|7qp2H3xqH-MfIIRTxV>DK z%s|>9k=l6=*&fu^=12auwAq05~<;ukI*-`r17)_?Pbsem5*qdHru48(n z_joNBT+Fwz5E4cNRNi4)(+lg~0LUU-w+V{nCKJdHJ+rEAuhM0%laU#1^=&Qj&||Mm zeMuvV58&^cDgI+6yCJc(IE>)#mUS}`^#{zt)$aD>fDf!d+@xnd@)EDKkaaT?eB=NG z_dw7T?7b+1Oexr*%KY=8{;+_0?r1IgOCYKmWd1t={OhW!(w{GP-Vo?N;Oe^JO{^dS zJ2gP#>4W+Fue>XcwPu4zF&1kHoF_g>s#`EF4kAF4Ax7l&Ej_D|17iD&Y)|cvRC$9N z^JJL8fbShO5qc9VBQqKk(_Re;@-{m)`+*_QxxRMm9&bBoKA|!(kI61VLW;AIJBT#~ z8A)o3C>{cVgzOA9SeDXa_y>T{OAtCl&(eqa$Fd9Qx&fV$bt9 z$y!uoSb_2`Xj61-+9v8SYqY>Xly#&kmR-`=$DIK+HE`u?5u5LaX?_c`PMNYVio86% zJ~OeK-^uIyG!BdRHpYVH692eVL}yJO734*($-2;g-=CW|pxQ_{7-`CH3HzOBw*ajr zKk`dL(8q6X-9wb+@Rsd2^%Kx$c+6wSpWuF&?ZKW3FF*c?gz9qJ?3M9C zG1^uM;D`T~Oe!(ajH8U7s<{&PH#+vEi(M8vz(_7$WK8-RZ+6S`uyCopD z`D6eF8Z940=gWOd33_~8*q+q3a6`+)gXrZEgoHDV0^WZsd0hR>YpOp`TGfOvre^d= z|7uu3jcZXvey)b!bHdrs1OiclDZ7?RCpA}#bPuGD%8xGcqBzbHTT*)fd>^oT{b;9LA!#v&q}+3(BE z4_`3ieSTIpt-7^X6r42*j`+AIxbkfxoJ>MUny~Fw7fet2kT8K;=I|QlzQ0!Z{)Rz@ zLkwcWeCCi-nix7qph|JB4F5ivxQD#w`tc<41i_=N3opt)MAYGmv|k&*>TN(>8N?V} zw)DimVG4PBG`^lsAVD5iKz0!jY=YpaA%CPOE1ob9B3+jgvq@<-fHL7mh!aOnl;7ycE4CgA3tmCKm zF!_~CEE}(VMeja;%co0w+1(e)gU#*PZ_cX91kTf%o5td$*+**M_>)jjTL|!hVvquo zX@9Nm0v?CxxmNugmrDQ%3lAGvjsezL>Edov<27Chtbw*_fq;%U1A?o7bsiaW;$#KK z2^myOz%m6Qnk1Hoa!O;>GrQ#oA|RNkAQqj5@KP+;>HM`pM*@RNBTP3sbIbl@M3?f5 z(3m&_kh|>gr`IhzrS+|_X-65sSX5^oveIuT=AsnGspp9jf|(#ZQ^keWxTvyUk`5W$ zLszzMRCh|HlK2>+*T_9cF<$9trZo5)9YmRhe&TaZ;pve^0Ai(w+#zs)&YAMA^-gXY z!@M%gXM{Zzb|CnLWm5^pVA4{IokxU zG~qK;X1Dbc8e@>D5~m=%OnZn^V3#w;+)p;dvx~cJ-Ybx}5diy6&=FoKbESn>4N1p( zDwkW1Mrt2~{S)KYtuD!nLu3DBTG187#?`0@n6{!YXh=qP`dhtd5Bt<3updG>Y%;-8 zQ~3@c&{Bz`7hJ=_pn=vPyiBG#n%$PUK)P?dJikR-(mPDveHkJHMAfAG8iD~^kam2_ z4`okSHnGb+MPNPTWl4b z0{lhZpI6Wt9GBUf)w~?*TOXFAE-|ks8{Qg$ZosD2QIF3?&CqYv^A5aT3bl!p;FlT= z!<`$DAvOlMgu?4myP-TO-M#%8aLrFvF#!=p?x$rU!Vy&2EHcVYQ*Q_@>5*49JT8Zozwm6erEu@qb;Qo%QYQP^x$N%L-7#NX&l8O>lVuk_#10Im2wEzGB literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/AppIcon.appiconset/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce58cfebe877876235e7431bfe82d49db187c60 GIT binary patch literal 4180 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 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-2x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..817cdf80576586c17f9ff786be3295e5fda14dd6 GIT binary patch literal 15969 zcmeI2Jxc>Y7=+)Lcpl**Nf$-rf>u_R76y|L(QBee!1fBU5k(M1(BiaGD@zLt%T%I; ztp@xLB9;NcLamI7O5*P2*544}*=DE62h7dP&c58?d}St;988Kx%9|}Oh}a5RVq0o! zoYYp;me?qHRa>oHd+9*L6|Y>ZZl69s6f=@b*DoG_cC5_g+S6!q>}+NEU40{5bKk9g zgI@;>a_a_3O#er?>~Vt%LCnA&$Dp)tP#|#w6Ip}!Nr6ixTttL>M2HO`FNK3bo!gv{ zR0FDks)-Sf2J*y0gt-FuUqY(*W ze*;M?q1nMzVDn;1a|oDDuL;O*YbuG$YMI2CzaGS;5_UDd;yQ{o|Wv{<>i^nna#mBu_On zXH;&U2V+0O1ft+Z5NUxM0b{>N3gjdC7%@PJGg2TQ$w%@rWB@B*1+0J-6a!o!yYm8B j%TKsEq|$Hg&8bqa1bcGpIPIb4VoU4Ro3514OaA^ZRUk+h literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-1x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f3685597a1db3978e4081a1ff5b538679b85f0cb GIT binary patch literal 5350 zcmeAS@N?(olHy`uVBq!ia0y~yUBhlnw?4k-45O zjv*Cu-d;CkWKiHau%WU3`~#*wHLhP}XU|A7FeoJc=L71xX9y$&l7NK55g_5v!N|bS zAOJF55oER#50Ge)01_Od3P*!yG*OIZh0&5?w0s<`6-Fz~(Wb&^18KBbINE9+?JJD- ykVZR@quu7w!Gh5t65u$|XtQv%SxC59sK>{|@qgLJC=pn#1V;TDOc2iDSdVQAuB@ZY8IN*a4U|pC8aDamnV81XA-~b0lfIiAJfCC(q0By5* z00%fI0orEs01j|a0<_KM0UY4q2>fu{9A53VN9Vbzx8swGxwe@5$yCC~w>De$WG&|l zmZw{mVTV5LuJJm{^|&Qp07Nwb4`6@?)I|0L5g5QgE5WaMFxzzPh6ZdFfR4?*3A$Do z=!(Px7~p{tzylaW8c-8i3y}!yjensgo_{~X?d7~yII|WQxDtj3FwmV04`6@?N&pXF z5NSY7WGzG@us2c@sfpA?=DkE<00XTA|J#GT$I6RHY+wHuAgX(ea=J;|Umj;Y7#Z?) hpf>aVxjdR{kgzI~-I>p(bmykNqhO+#Kg`XSzW|b=YWn~H literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-2x.png b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..efe9e82a3257662a9e069038e1cc7cbcb64e0f90 GIT binary patch literal 4542 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sU_QXX1{7KP=)`Xz#Zv6#8NvYsH5@4&3=D#$ zo-U3d6?5KRGh}2?;5o3NvHtu6ram>UsMUNa9goaOh!VVdyX%RWup|qp4stBaD^>qs8H9jWAj%j5-}9PKQRju(s$nT(DajSifVICiM#G==lNaOBfjz>!D>Pgg&ebxsLQ E006gcSO5S3 literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Builds/iOS/Icon.icns b/extras/AudioPluginHost/Builds/iOS/Icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..6ab6915802b8cc41702a02e8527aec517d379e77 GIT binary patch literal 89670 zcmd3NWm{D57w#~0Bhrnuh_rNfH%NE4fOLaMNQrcJOLsTYCEfh!?igmy_J5u89S$#M zcr(w6z3REwy=~2%+(2+f(zfPod?3(o%1BjZ8B8=1G!O`cDJLtb4g!IJf59LWB;f1T zYyKJdLU0q8(?kLO{7@{ugFsXuIY}{1ugueR&s2lKUp!mJ>%IaH1KHV`1@!U-nebr5 zkjQr==DU(EAkqWF&_&xtTgPO>-~9(+{rsegY)F#via5k{s*|%eUk+U)wEP2aQP5+= zj=RVYI;LpQFF8Hp`rNbhJ&y52QK-Xk#Q#70pp7aL0Ex?9%P|o{p|9236WtFifWORR zA~gr4QRJ}YK`5i(v1FDxEEz0cbY=s@^gO(0g$~4xFV3}ibt7kLXbO7Q=(OgD>VN!( z;tyEwygCLyHsj5X(Q1xvna5**3d685{)h-lzQY*$fHX?`86iFyOlKzP?f%%~g^;Ku zJHjqyYTl15PP1+5kAe2B%GJ%qX6muDFSDSSn1p!4S?P48Q9Wo&(7kOT_gF2eGYZ{7Mm^^%un@&TeRy2U zC2-~-4OljwD0l`4v|Cj#h0Ugf60B~nmfFCv%bQSS8kt#gX6m#kT#&fYlo~hB(hOUP zm#vh_)%6ZP%t0lgLR$^aNzR3{DJJLS<#zcy6Gr(^F0UB_!7Zwr`=03Gf4i$P6atW) z=>nOi@N7yUQN(XynWCtmwCku0p@oI|KLiWojKUQi?Jf!3OY6n__(LqjzWoPWtJVd9 zvM56_1@P_k+5C??Jrc+{M}d&(`uhbk;ieh7aGcMA7SXTDE8d$U# z&HAJ+s+Ic&Y+rGZT**{VG%L9FI_GHN5mE&=wsrtxb*z0a=+eb zzk6wJ9x?Q7mi!&{s5B~Q)N=BE0sn?1MW?HvuH?`maC#jM$weY4qv2Wss;tJKgRF^| zz+P~%)U+-0;K&Od&Wghp6m)erqguaulZcT7iqF*OZgDVLjjBVpCrr*dV0HBn1t(A1 zvgTys7PHw@k6M__9||=2Klb{Q#=*XB!oN_EQViL&?a~Z<{P%0sWpW#PeJxkD*S@Vm zM6C^7Ma!Ce4gc8`XGY7^4xX(XNOH}hFeVgQ+p}?bp@FGE#8m>8(qMBH{IYea(Erf! ze7U`O>T|e+qzXqp`bFbGAj6`w<4=d^>Tz9T6*F@++WY~_;#yS3No#8d>zfm9Dr%z_ zT}3FymWMwIUU5)xuo4slsZ=qv4^MOm8W?W-=vzb+8U`XH=rJ>QwavO!L}ePZ7oqv& zQ|Y$3=Y}`1@?5tV5c?xT0q>WXTUk6v8cV68!Py+<{8i9>%TvaPVl&}<2_;g-$v+~I zDbLpSD8$yjyt+J1-zTqmT6a_l%jtWiQ?0Mr7kqV5SuA$G8Tg=b8`U(VlH(BlyPhha z?FGoCo%ba_ec)e+i@k6QH|ttC;l~BUlAUi7u3{QoHc{~J=cuUj>Xy25{N}~vQ8f;E z6EITOg5t^AzW3oFVNgiTM~NPoN_r8Q+JmXxFy1iVu87EZ6YH($yb;iz<}e{-<1 zIcgn+lOO!;C@CFkj%P>GIEdG68elC73Ie5&iGPu0%40*s8btiPAG)a<1hxiARa2oE zis7|~jCkS~^yp&b&`?rLAjchNWcF|(rx3VPNDZWmE~WRRvd5^IqtHBqz7-6!S7Mt; zQueg)h176kh02≦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 N(-HnBW#udDa{=M)M_ge~C`hbK&c`jI)N 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 + + + + + LSRequiresIPhoneOS + + NSMicrophoneUsageDescription + This is an audio app which requires audio input. If you do not have a USB audio interface connected it will use the microphone. + UIViewControllerBasedStatusBarAppearance + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.roli.juce.pluginhost + CFBundleName + AudioPluginHost + CFBundleDisplayName + AudioPluginHost + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0.0 + CFBundleVersion + 1.0.0 + NSHumanReadableCopyright + ROLI Ltd. + NSHighResolutionCapable + + UIRequiresFullScreen + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIBackgroundModes + + audio + bluetooth-central + + + diff --git a/extras/AudioPluginHost/JuceLibraryCode/AppConfig.h b/extras/AudioPluginHost/JuceLibraryCode/AppConfig.h index 574e67c77c..a319a11eb7 100644 --- a/extras/AudioPluginHost/JuceLibraryCode/AppConfig.h +++ b/extras/AudioPluginHost/JuceLibraryCode/AppConfig.h @@ -16,7 +16,9 @@ //============================================================================== // [BEGIN_USER_CODE_SECTION] -// (You can add your own code in this section, and the Projucer will not overwrite it) +#ifndef JUCE_ANDROID + #define JUCE_MODAL_LOOPS_PERMITTED (! JUCE_IOS) +#endif // [END_USER_CODE_SECTION] diff --git a/extras/AudioPluginHost/JuceLibraryCode/BinaryData.cpp b/extras/AudioPluginHost/JuceLibraryCode/BinaryData.cpp new file mode 100644 index 0000000000..8d0192f8da --- /dev/null +++ b/extras/AudioPluginHost/JuceLibraryCode/BinaryData.cpp @@ -0,0 +1,698 @@ +/* ==================================== JUCER_BINARY_RESOURCE ==================================== + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +namespace BinaryData +{ + +//================== JUCEAppIcon.png ================== +static const unsigned char temp_binary_data_0[] = +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,40,105,84,88,116,88,77,76,58, +99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,120, +58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,54,55,32,55,57,46,49,53,55, +55,52,55,44,32,50,48,49,53,47,48,51,47,51,48,45,50,51,58,52,48,58,52,50,32,32,32,32,32,32,32,32,34,62,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114,100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57, +57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,32,114,100,102,58,97,98,111,117,116,61,34,34,32,120,109,108,110,115,58,120,109,112,61,34,104,116,116,112, +58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,34,32,120,109,108,110,115,58,120,109,112,77,77,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,109,109,47,34,32,120, +109,108,110,115,58,115,116,82,101,102,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,115,84,121,112,101,47,82,101,115,111,117,114,99,101,82,101,102,35,34,32,120,109,112,58,67,114,101,97,116,111, +114,84,111,111,108,61,34,65,100,111,98,101,32,80,104,111,116,111,115,104,111,112,32,67,67,32,50,48,49,53,32,40,77,97,99,105,110,116,111,115,104,41,34,32,120,109,112,77,77,58,73,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,53,52, +53,66,70,48,69,70,55,66,48,54,49,49,69,53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34,32,120,109,112,77,77,58,68,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,53,52,53,66,70,48,70,48,55,66,48,54,49,49,69,53,66,51,49,53,69, +69,54,51,67,65,56,68,70,50,56,48,34,62,32,60,120,109,112,77,77,58,68,101,114,105,118,101,100,70,114,111,109,32,115,116,82,101,102,58,105,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,53,52,53,66,70,48,69,68,55,66,48,54,49,49,69, +53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34,32,115,116,82,101,102,58,100,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,53,52,53,66,70,48,69,69,55,66,48,54,49,49,69,53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34, +47,62,32,60,47,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,62,32,60,47,114,100,102,58,82,68,70,62,32,60,47,120,58,120,109,112,109,101,116,97,62,32,60,63,120,112,97,99,107,101,116,32,101,110,100,61,34,114,34,63,62,115,115,54,90,0,0,175,140, +73,68,65,84,120,218,236,157,7,128,92,117,181,255,207,45,211,251,236,204,246,94,179,61,189,247,144,70,11,45,244,14,74,81,154,20,17,241,1,239,161,40,54,44,207,191,138,138,62,124,2,250,176,32,85,233,32,37,72,9,9,73,72,239,61,219,119,218,109,255,223,239, +55,155,80,4,201,220,123,103,167,157,79,24,118,179,73,238,220,185,237,124,207,249,157,194,105,154,6,8,130,32,8,130,20,22,60,30,2,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16, +4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16,4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,40,0,16,4,65,16,4,65, +1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16,4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,204,70,204,228,155,39,18,9,60,3,8,242,41,104,154,70, +254,207,129,166,210,175,26,249,10,160,42,90,242,207,200,207,52,250,61,151,252,187,28,207,125,228,223,90,28,2,136,86,129,254,171,195,63,226,224,200,223,102,247,61,247,9,111,41,147,151,58,242,103,106,242,31,113,228,61,85,136,15,201,255,186,111,201,221, +98,239,205,9,220,200,126,16,175,66,224,217,31,28,222,39,186,141,79,124,55,4,65,64,20,69,224,249,204,248,226,25,19,0,146,36,193,130,5,11,96,231,206,157,120,5,32,5,13,51,234,228,63,85,86,129,218,85,250,123,142,163,134,52,105,53,109,30,11,8,22,94,180,186, +69,167,59,108,247,17,227,239,119,23,59,124,158,18,71,144,124,31,176,216,5,127,184,217,235,35,127,213,71,254,185,151,124,245,120,74,236,14,103,192,102,39,127,238,36,191,23,200,203,245,33,163,79,191,255,164,39,78,100,68,4,208,191,23,165,223,115,28,23,149, +98,74,172,103,219,16,253,253,16,121,13,240,60,55,208,187,125,184,47,210,19,31,32,6,191,55,62,40,31,234,217,58,216,79,12,126,127,124,64,234,27,58,24,31,34,251,31,143,13,74,160,74,42,168,106,82,188,80,113,64,182,199,62,23,21,12,60,143,194,0,65,238,186, +235,46,56,243,204,51,11,75,0,80,15,98,243,230,205,176,123,247,110,188,2,144,2,119,1,136,53,182,130,215,95,233,12,19,207,189,44,212,228,173,180,58,197,202,80,163,183,130,220,41,85,254,74,23,253,121,88,180,11,1,135,207,234,34,247,142,155,23,121,142,136, +2,96,138,129,69,4,134,142,184,249,148,65,101,16,6,134,52,115,246,143,108,84,168,251,168,94,8,212,2,4,57,203,72,132,194,2,85,9,43,48,177,16,149,135,163,253,210,0,177,243,251,251,119,69,14,202,49,101,119,223,206,200,174,72,111,124,199,240,193,248,142,129, +61,145,61,145,158,196,190,200,65,169,15,18,32,227,201,71,10,157,190,190,190,76,62,122,50,135,213,106,197,179,143,20,4,212,163,119,4,108,78,95,133,179,212,225,183,214,16,35,223,20,168,118,53,187,66,182,6,242,179,42,209,42,148,147,159,7,136,23,109,103, +134,29,52,226,57,143,68,8,104,100,64,101,170,153,121,211,28,36,163,239,144,248,136,141,254,8,212,229,55,53,195,71,249,183,250,0,172,34,93,110,0,135,197,99,117,184,253,92,136,236,106,125,113,93,128,236,3,199,62,59,93,14,160,75,22,170,162,41,137,136,220, +79,94,123,7,118,69,118,70,251,19,27,15,109,26,220,60,180,63,182,190,111,199,240,150,222,29,195,187,162,125,137,94,37,161,226,69,131,20,4,130,32,20,166,0,64,144,124,196,234,18,121,111,153,163,140,24,246,70,226,197,183,133,155,188,157,158,18,71,139,167, +212,81,103,243,136,101,196,192,219,233,58,57,91,199,39,47,69,214,152,113,87,228,164,209,147,227,202,191,221,190,150,133,159,121,36,16,193,34,123,138,170,141,8,151,79,121,222,89,248,160,51,96,13,186,195,246,54,142,227,22,53,31,83,206,142,131,42,107,74, +108,80,58,56,124,48,182,131,8,130,181,68,24,172,233,221,54,188,234,224,166,129,13,228,247,59,134,14,196,162,120,117,33,8,10,0,4,201,10,44,78,17,136,177,175,40,170,115,183,21,143,241,141,35,6,127,188,191,202,213,78,60,251,26,171,67,244,208,117,111,234, +201,51,239,151,122,242,228,171,36,43,255,222,165,206,115,180,145,156,0,85,86,62,30,74,16,44,14,161,36,88,235,46,9,53,120,38,214,207,44,97,130,66,142,41,82,124,88,222,49,176,59,178,238,208,150,161,119,14,174,31,120,107,207,234,222,213,253,187,34,91,163, +125,137,56,94,133,8,130,2,0,65,210,14,241,226,93,129,42,87,115,89,87,96,2,49,246,83,194,77,158,241,174,176,189,145,24,123,47,13,185,39,13,125,242,149,136,224,18,119,106,202,32,121,252,20,250,98,63,72,254,159,227,192,98,115,137,245,37,173,254,250,178, +206,192,177,116,73,65,138,169,82,164,55,190,109,96,119,116,21,17,3,43,14,172,31,120,125,255,218,190,247,250,118,70,246,107,170,134,199,18,65,80,0,32,136,97,131,239,41,110,241,117,86,116,7,166,149,118,4,102,4,106,220,227,236,94,177,150,174,211,83,207, +158,101,185,163,177,79,175,46,24,17,6,170,66,4,193,136,191,79,69,129,51,96,109,116,19,241,85,57,33,120,50,21,15,241,65,233,16,17,0,171,247,173,233,123,109,247,202,158,151,247,174,233,127,171,127,231,240,238,195,165,147,8,130,160,0,64,144,79,197,225,179, +90,66,77,158,182,154,41,225,217,229,221,193,185,129,26,215,68,135,223,86,205,11,192,214,234,21,98,240,229,4,121,197,49,73,45,227,162,128,69,90,62,88,70,224,69,190,40,220,232,153,83,210,234,155,211,117,106,205,151,227,67,82,127,255,142,200,187,251,214, +246,189,176,107,101,239,243,68,24,188,213,179,117,168,23,143,30,130,160,0,64,16,98,52,56,8,84,187,43,171,38,21,205,168,28,87,180,176,180,195,63,195,85,100,107,33,30,62,71,13,62,245,240,165,40,122,247,57,33,10,84,141,136,51,162,12,70,42,8,120,129,247, +133,26,61,179,138,91,125,179,58,79,169,185,53,62,40,237,57,184,113,240,181,157,111,31,122,122,199,138,131,47,238,93,219,191,70,138,200,168,228,16,20,0,8,82,40,208,44,125,226,221,119,86,79,14,45,168,28,31,92,66,4,192,100,155,91,244,209,144,190,146,80, +208,195,207,87,65,32,242,101,101,93,129,147,43,198,7,79,158,116,126,163,210,191,43,178,234,192,250,254,167,55,191,180,239,137,237,111,28,92,49,124,48,62,132,71,13,65,1,128,32,121,6,241,234,173,229,93,129,201,213,147,195,75,171,38,135,150,248,43,156,99, +137,65,224,169,193,167,158,254,199,91,221,34,121,42,8,98,35,75,6,28,8,222,50,199,216,64,181,107,108,243,194,242,27,134,246,199,182,31,218,52,248,236,150,87,246,63,178,245,213,3,47,244,110,27,234,193,35,134,160,0,64,144,92,53,250,33,155,181,106,98,104, +74,195,156,210,19,43,186,3,199,186,66,246,54,218,181,134,54,153,145,98,133,93,138,135,106,0,88,62,7,125,81,236,94,75,117,245,148,208,133,181,211,139,47,140,13,36,246,237,93,211,247,252,150,151,247,255,105,235,43,251,159,233,221,62,124,16,15,24,130,2, +0,65,178,28,171,75,132,138,238,224,148,230,99,202,78,174,153,86,124,2,17,1,109,244,97,79,155,235,96,166,62,242,105,208,74,1,53,154,20,133,188,200,151,84,79,10,157,81,59,181,248,140,88,63,17,3,107,251,254,78,196,192,31,54,60,179,231,133,161,3,177,126, +60,90,8,10,0,4,201,18,232,112,153,146,86,127,203,152,37,21,167,212,78,15,159,234,43,119,78,160,195,102,104,184,55,49,92,200,70,95,251,88,215,192,145,185,1,159,82,21,199,29,233,39,252,65,99,97,238,99,191,47,136,163,166,106,32,29,22,3,22,34,6,38,134,206, +37,98,224,220,73,231,55,108,223,181,178,247,209,13,207,238,249,253,214,127,236,127,41,129,9,132,8,10,0,4,201,12,129,106,87,81,211,130,178,165,228,117,78,176,214,51,87,180,243,118,37,126,56,188,159,127,166,156,118,197,35,126,234,145,175,234,200,215,164, +81,255,192,170,243,28,207,70,240,114,35,95,217,48,31,78,36,63,23,152,6,160,163,71,121,78,132,15,154,10,115,108,59,10,237,221,203,141,180,243,213,228,15,189,39,253,170,30,249,154,28,240,155,220,238,225,247,161,191,232,164,63,238,200,215,252,16,14,76,12, +140,44,23,217,60,150,234,230,5,101,87,146,235,237,202,254,157,195,43,183,188,178,255,247,239,63,185,235,255,246,174,233,95,143,205,135,16,20,0,8,146,102,104,136,191,114,124,209,180,214,165,21,231,84,79,14,159,236,240,91,203,21,73,97,235,250,137,161,220, +117,200,14,27,87,149,189,20,106,222,143,24,117,129,23,153,1,183,10,54,176,11,14,242,114,130,83,116,147,151,7,156,150,145,175,228,247,118,209,69,94,78,246,231,54,242,119,173,188,29,44,188,13,68,242,239,69,222,194,182,65,223,135,126,165,191,255,240,84, +1,250,94,146,26,63,34,6,36,37,193,246,35,174,198,200,207,19,144,80,98,16,147,163,16,87,34,16,37,175,136,60,4,195,210,0,68,229,225,35,223,199,200,207,227,74,148,189,36,34,38,152,136,208,180,35,194,128,10,147,195,47,14,248,156,59,71,116,153,224,240,50, +146,167,196,209,61,238,140,186,238,174,147,107,110,221,255,126,255,51,235,158,220,245,155,141,207,237,125,98,232,64,108,24,239,82,4,5,0,130,152,136,159,120,251,205,243,203,78,110,59,190,234,34,127,149,115,58,53,42,82,156,24,168,33,41,183,12,61,53,240, +212,219,166,70,158,188,168,129,164,6,145,26,106,106,196,221,86,31,248,172,69,16,176,133,193,79,94,65,242,242,218,130,228,103,65,112,89,188,224,32,70,222,33,184,70,12,120,246,64,141,125,156,136,132,40,17,3,84,16,12,36,122,161,63,209,3,125,241,131,208, +27,219,15,189,228,43,253,126,80,234,35,127,62,200,4,133,60,50,45,136,70,38,4,242,226,217,139,203,137,200,193,225,4,66,178,187,142,146,86,255,241,229,93,129,227,39,95,212,180,113,203,203,251,126,191,246,137,93,191,221,245,78,207,90,140,10,32,40,0,16,68, +39,116,132,108,221,244,240,216,214,99,43,47,172,158,28,90,238,8,216,202,233,186,126,114,125,54,55,60,122,106,232,15,123,194,2,47,48,239,220,111,13,16,195,94,12,197,142,10,40,118,86,64,152,124,45,178,151,48,35,239,182,248,178,206,184,31,13,52,170,144, +140,74,184,161,232,83,143,137,10,195,210,32,19,1,135,162,251,224,96,108,15,236,143,238,130,253,145,157,228,251,189,76,48,68,165,33,34,12,164,145,72,133,192,162,31,84,24,112,89,42,10,180,145,4,83,57,14,96,115,139,141,29,39,85,223,66,68,234,151,246,172, +234,125,226,189,191,238,248,229,166,23,246,254,45,54,32,73,120,55,35,40,0,16,228,40,176,185,45,98,219,241,149,75,90,22,149,127,190,180,221,191,132,120,251,22,230,237,15,102,239,115,84,101,198,254,131,176,183,133,183,18,99,238,133,32,49,236,165,206,106, +40,119,213,66,133,187,142,25,123,191,173,136,9,129,130,19,116,192,51,129,67,95,101,206,154,143,252,25,53,250,3,82,47,28,136,238,134,189,195,219,97,247,240,86,216,51,188,13,14,196,118,195,64,188,7,98,106,116,68,68,37,151,67,4,58,102,49,203,68,1,91,34, +24,102,121,20,118,218,112,168,114,124,240,228,254,221,205,239,110,120,102,207,47,222,125,120,219,3,125,59,177,156,16,65,1,128,32,159,136,183,220,233,239,62,181,230,204,134,185,165,159,11,214,184,199,43,172,13,111,118,122,251,204,179,39,70,139,126,165, +30,170,203,226,33,94,124,13,51,242,53,238,102,168,242,52,66,137,163,146,133,239,185,2,203,162,215,245,32,226,45,44,42,66,95,45,254,177,71,126,78,151,19,168,40,216,53,180,25,182,15,109,128,29,67,155,96,127,100,23,12,38,122,89,110,2,93,62,17,88,126,67, +22,69,9,104,84,32,166,0,93,224,112,6,109,93,19,207,171,255,97,251,9,85,55,111,123,253,192,253,111,63,184,229,87,123,86,245,174,199,51,142,160,0,64,16,66,105,135,191,178,109,105,229,197,77,11,202,46,118,133,237,53,244,225,153,109,107,251,116,189,94,30, +49,248,52,169,206,107,13,66,153,171,6,106,61,45,80,231,109,133,74,119,3,11,227,179,76,123,196,52,232,146,66,141,167,153,189,166,195,18,246,51,154,95,176,39,178,13,182,13,188,15,91,6,214,18,81,176,17,122,98,7,88,18,98,182,9,2,85,86,201,181,172,130,96, +227,203,91,22,149,127,185,97,78,201,23,247,174,238,123,248,173,7,54,255,100,211,11,251,94,199,51,140,160,0,64,10,211,240,183,251,155,198,159,93,127,69,195,236,146,243,45,78,177,72,138,200,89,19,230,167,235,213,52,73,141,26,125,106,76,168,193,167,222, +125,189,183,13,26,253,29,196,224,55,178,53,123,100,244,241,90,3,236,117,56,82,64,171,14,246,68,182,195,150,254,181,176,190,111,37,108,31,92,15,61,241,253,144,80,226,236,220,209,232,66,166,133,153,54,178,60,192,113,224,170,24,23,60,159,188,206,221,249, +86,207,99,171,255,188,253,135,155,95,218,247,52,54,169,66,80,0,32,5,65,205,212,112,71,251,241,85,95,32,222,208,121,162,93,112,209,48,127,54,24,126,133,121,249,9,182,158,79,203,235,106,60,245,196,216,119,194,24,255,56,168,246,52,129,223,22,194,147,151, +133,216,4,7,139,196,208,215,188,202,147,32,38,71,96,231,240,38,34,6,222,133,245,189,239,176,101,131,129,68,15,75,44,20,57,11,203,35,200,84,116,128,38,13,178,101,45,14,120,34,2,78,168,158,20,58,225,208,230,193,103,222,249,195,214,123,214,60,182,243,81, +9,133,0,50,138,112,154,150,153,82,149,68,34,1,45,45,45,176,117,235,86,60,11,5,66,195,220,210,174,241,103,213,93,91,49,54,120,54,199,113,54,250,32,204,212,245,119,24,234,225,203,154,196,18,212,168,129,175,243,142,129,214,224,4,104,246,119,67,185,179,134, +53,185,65,114,27,90,126,184,169,255,61,88,211,243,79,216,208,255,46,171,60,160,125,14,104,100,128,190,50,189,84,32,88,121,16,201,235,208,166,161,23,222,249,195,150,239,172,121,124,23,10,129,2,226,231,63,255,57,124,238,115,159,195,8,0,146,159,148,119, +7,219,102,92,209,114,35,241,120,206,38,191,181,102,58,177,143,26,125,154,64,70,215,242,195,142,114,102,236,59,138,166,64,163,175,147,133,150,145,252,130,10,187,9,197,115,216,139,246,31,216,54,180,1,222,59,180,130,9,130,93,195,91,88,51,35,26,21,160,149, +27,153,16,3,180,137,21,125,249,170,156,115,22,220,220,57,167,251,244,186,231,87,254,97,235,119,215,62,182,243,81,92,26,64,48,2,128,228,36,165,29,254,134,241,103,213,95,223,48,187,228,2,226,229,56,89,75,213,12,57,252,180,60,143,173,9,147,7,61,205,206, +111,13,142,135,238,208,116,104,240,117,20,100,73,30,146,204,243,216,49,184,9,222,235,89,1,239,30,122,141,124,191,145,137,129,100,231,68,107,198,34,3,201,136,128,0,135,182,12,254,253,173,223,109,254,214,170,63,109,127,6,207,22,70,0,48,2,128,228,4,197, +99,124,165,147,206,111,184,174,126,86,201,101,162,93,240,81,143,63,19,94,63,205,220,79,168,113,22,222,15,59,202,160,189,104,50,51,250,77,196,211,167,235,198,72,129,123,63,228,186,160,185,29,244,181,180,230,28,216,57,180,9,222,57,248,50,188,123,240,53, +246,125,76,137,177,168,192,104,55,102,58,28,17,240,87,56,23,30,243,149,174,133,99,22,87,252,133,8,129,187,54,189,136,85,3,8,10,0,36,75,241,150,59,61,99,151,215,94,209,177,172,234,58,187,215,82,154,136,140,254,52,62,154,232,37,17,79,159,38,244,209,208, +239,184,192,108,152,88,60,7,90,2,227,88,73,25,130,124,26,180,148,147,190,142,171,61,15,54,247,175,133,183,15,190,68,196,192,171,176,55,178,157,37,134,90,121,219,168,86,19,200,68,4,16,5,11,21,227,130,203,42,199,23,29,183,253,141,131,247,255,227,255,173, +251,230,222,213,125,216,71,0,49,71,4,227,18,0,98,20,155,91,228,186,79,171,61,103,252,57,245,95,117,6,108,99,18,81,153,149,61,141,38,178,38,51,195,111,23,29,172,84,111,66,241,92,230,237,211,158,250,8,162,23,90,98,248,126,239,219,176,98,255,179,176,166, +231,77,232,143,31,202,204,18,1,121,43,139,93,160,145,129,193,141,47,236,253,241,171,63,93,255,253,190,157,195,7,240,12,229,62,184,4,128,228,166,122,228,57,104,154,95,58,119,218,101,45,183,23,213,185,231,176,114,190,81,108,224,115,216,219,167,195,117, +104,95,253,113,225,153,48,169,100,1,43,7,67,16,83,196,173,224,128,46,34,36,233,235,80,108,31,91,34,88,177,239,89,216,54,248,62,200,138,196,38,52,142,74,84,96,164,124,144,220,115,158,49,139,43,190,82,51,37,124,206,170,63,109,187,235,141,223,108,250,69, +98,88,198,76,65,4,35,0,200,232,81,214,17,168,159,126,69,203,127,84,79,14,93,192,38,163,37,70,111,20,47,13,239,211,108,110,155,96,103,117,250,211,75,23,179,7,52,134,248,145,209,17,158,42,235,49,240,234,158,167,88,242,96,50,42,96,97,249,2,163,5,47,112, +32,58,4,232,219,54,252,218,235,247,109,188,109,237,99,59,254,166,225,240,65,140,0,96,4,0,73,39,142,128,213,49,229,162,166,171,59,78,170,190,73,180,241,193,209,92,227,167,165,123,180,132,143,134,245,103,150,45,133,105,101,139,89,184,31,65,70,213,107,2, +158,117,33,164,47,26,21,120,99,223,179,240,218,190,191,179,121,5,244,79,105,84,32,221,203,3,108,240,208,144,12,158,50,199,212,197,183,117,63,53,102,113,249,111,95,253,217,250,219,247,172,238,221,132,103,8,65,1,128,152,251,208,35,207,179,182,227,171,142, +157,114,73,211,157,254,42,215,56,106,248,71,35,179,255,112,152,159,122,93,229,174,122,152,78,140,254,228,146,5,184,182,143,100,5,116,254,195,146,154,179,96,126,213,41,176,234,224,171,240,210,158,199,224,253,222,149,68,172,198,193,202,219,217,108,130, +116,114,184,98,160,102,74,248,220,242,238,224,177,171,254,180,237,155,43,126,181,241,135,209,254,68,28,207,14,130,2,0,49,76,121,87,160,102,234,231,155,255,139,60,100,206,163,15,155,209,104,219,75,13,63,13,243,211,245,213,38,127,23,204,174,56,1,198,133, +102,18,239,202,158,215,199,90,147,162,160,197,7,65,27,62,8,234,240,33,80,135,246,147,239,15,145,159,13,177,68,48,206,230,1,222,83,10,66,184,9,132,162,6,0,193,146,241,125,86,135,183,129,58,176,46,249,53,222,75,63,4,112,130,131,236,107,17,112,116,64,146, +189,152,124,31,6,206,234,7,206,226,205,203,243,70,43,4,104,226,41,125,109,236,95,5,47,238,250,43,188,115,240,21,24,150,6,216,53,43,164,57,79,128,54,12,226,120,46,56,225,156,134,187,27,102,151,158,241,218,47,215,223,180,230,177,157,207,2,46,11,32,40,0, +16,61,216,189,22,24,127,78,253,149,19,206,174,191,77,176,9,197,163,17,238,215,52,34,48,212,24,123,160,142,13,207,132,121,21,203,160,45,56,41,255,12,61,49,242,42,49,242,218,192,94,80,250,119,18,3,186,135,188,246,130,22,33,198,62,54,64,108,104,12,52,37, +145,108,30,127,56,4,147,60,64,201,223,138,86,224,125,149,96,169,39,162,168,101,49,112,206,81,238,96,72,206,147,188,239,89,144,118,61,6,10,49,254,154,52,4,201,46,79,28,251,239,200,126,211,96,56,79,30,51,196,8,82,227,207,89,131,192,59,136,40,112,84,0,231, +170,6,222,89,65,4,66,25,17,8,116,255,243,163,237,50,237,40,73,95,123,134,183,194,139,187,31,101,73,131,180,29,49,93,26,16,56,49,141,167,68,99,73,184,238,98,251,132,37,183,143,125,166,101,81,197,207,94,188,103,205,109,135,54,15,238,195,167,25,242,73,96, +18,32,242,137,212,207,44,233,158,117,117,235,119,138,26,60,199,80,195,79,31,46,105,245,34,137,65,97,137,125,162,131,101,243,207,175,56,25,234,125,237,249,97,236,35,61,160,246,239,2,165,119,27,40,61,196,75,238,219,65,60,251,3,196,208,247,3,80,67,79,62, +59,179,155,212,75,228,5,90,94,49,98,240,185,127,27,35,1,69,102,34,129,247,148,128,109,220,153,96,29,179,100,84,62,143,210,255,30,36,214,255,63,80,250,86,38,141,54,77,126,251,183,161,110,109,68,16,168,116,44,30,19,15,236,51,83,113,32,88,147,194,192,22, +38,98,160,18,120,119,29,8,238,6,224,220,181,192,211,101,30,222,146,243,231,159,230,9,188,188,231,49,120,101,207,147,112,48,186,55,237,66,224,72,84,194,41,66,180,47,177,253,205,255,221,124,243,91,15,108,126,96,52,19,117,145,163,39,147,73,128,40,0,144, +143,123,253,214,233,151,183,220,216,121,114,205,45,228,183,78,57,158,222,117,126,106,8,98,74,148,77,223,155,24,158,11,243,42,79,102,157,217,114,214,216,75,81,98,236,119,131,122,104,19,40,7,55,18,131,191,37,233,217,83,175,94,145,62,102,232,133,15,60,123, +67,22,89,34,54,85,2,107,203,66,112,76,191,18,64,180,165,237,243,73,59,31,129,248,250,255,38,239,25,37,94,189,25,221,20,53,38,8,168,48,208,52,153,9,5,118,124,200,245,192,219,138,153,32,224,189,77,32,120,90,200,247,181,44,130,144,171,208,137,132,47,239, +126,156,69,5,14,68,119,131,133,8,1,49,205,66,128,86,11,88,93,34,236,124,187,231,15,47,222,179,230,166,61,171,122,241,129,139,2,0,5,0,242,137,94,255,100,226,245,255,128,120,253,83,105,134,113,58,175,13,186,198,31,87,34,96,23,92,48,169,120,30,44,168,58, +149,117,97,203,57,131,31,31,2,149,122,246,251,215,129,188,255,125,80,123,182,38,67,251,114,44,121,131,209,7,188,48,226,213,167,53,51,92,99,251,98,169,159,5,206,121,55,166,69,4,72,219,30,76,26,127,230,241,167,217,131,61,34,10,164,164,40,160,83,251,172, +1,224,93,213,32,120,199,0,239,239,32,162,160,25,56,123,113,206,93,51,131,137,62,120,137,136,128,164,16,216,53,146,35,144,222,227,105,113,8,32,199,213,253,111,254,118,211,87,87,220,183,241,23,180,116,23,65,1,128,2,0,1,187,207,98,153,126,89,203,87,70,188, +126,91,58,189,254,164,225,143,178,53,254,241,197,179,97,97,213,114,168,201,165,198,61,74,130,133,241,149,189,239,129,188,119,53,40,135,182,36,215,237,229,4,51,242,156,32,154,231,217,235,20,36,214,214,165,224,152,125,141,169,219,149,247,62,3,177,85,119, +16,227,111,251,140,112,127,250,174,28,38,10,84,137,232,1,133,69,9,104,82,33,239,170,1,193,215,14,66,112,44,240,222,22,224,44,254,220,17,2,82,31,60,191,243,47,68,8,60,2,61,177,253,172,233,80,58,155,10,113,52,26,224,20,97,247,59,61,15,191,112,207,154,27, +48,26,128,2,0,5,64,129,83,55,163,120,236,236,107,218,126,72,188,254,89,233,246,250,233,26,63,71,140,71,87,104,42,44,169,57,27,26,188,185,177,198,175,13,29,0,121,223,26,144,119,175,4,101,223,58,80,7,247,178,36,189,35,6,159,134,243,51,60,83,254,35,18,43, +17,1,231,220,47,129,165,121,161,41,91,84,163,187,33,186,226,242,100,162,95,54,173,201,211,124,2,85,102,75,7,52,209,144,179,133,88,84,64,8,78,0,33,48,150,45,25,192,40,246,238,215,75,111,252,0,60,179,227,97,120,121,207,227,44,58,64,219,89,115,105,76,136, +28,137,6,236,253,231,253,155,110,124,237,222,245,191,197,167,96,225,10,0,172,2,40,80,68,27,15,51,174,28,115,245,184,51,234,190,78,108,190,59,157,165,125,180,129,15,29,199,75,27,167,44,37,134,191,163,104,74,182,155,124,22,202,151,119,173,36,175,183,217, +90,190,26,237,99,63,167,161,104,160,198,198,154,173,35,132,147,137,117,177,55,127,7,98,245,100,224,236,62,227,194,109,211,175,64,139,31,34,23,77,150,117,90,164,198,93,16,200,39,78,46,119,104,137,94,144,15,188,12,210,254,23,129,19,93,44,58,32,6,199,129, +16,154,2,130,183,213,164,156,5,243,161,61,45,78,107,188,28,102,149,31,7,79,110,127,16,86,236,125,26,98,106,20,236,172,228,213,124,97,73,251,119,240,2,87,58,253,242,150,251,203,58,252,139,94,184,103,205,245,61,91,134,112,174,64,33,218,1,60,4,133,71,73, +171,175,122,254,151,59,127,76,110,254,19,232,196,190,116,101,248,83,163,159,80,226,80,233,174,103,134,127,74,233,49,105,245,108,140,217,124,149,24,250,13,32,239,124,27,228,29,255,4,133,8,0,234,73,3,207,143,100,170,231,208,248,96,193,194,202,10,19,239, +255,13,108,221,203,141,121,255,131,27,65,38,6,21,68,103,246,127,110,150,111,33,142,152,76,34,226,6,55,64,188,127,13,112,219,126,207,202,13,133,192,56,16,195,211,129,247,119,146,191,154,125,109,163,75,156,85,112,193,152,27,153,16,120,108,235,253,176,234, +224,107,108,41,137,46,151,153,13,237,36,72,69,127,237,180,226,243,74,59,2,211,94,250,193,154,47,174,126,100,199,83,248,116,68,1,128,228,49,227,207,170,63,101,202,165,77,63,178,185,197,242,248,80,122,234,250,233,58,127,76,142,128,223,86,4,39,212,93,0, +243,43,79,33,222,76,118,26,16,229,208,38,144,183,173,32,70,255,13,150,177,79,67,251,28,109,174,195,146,206,156,57,123,158,105,159,0,105,211,11,96,235,56,201,80,179,32,105,207,83,160,201,195,89,105,48,63,43,18,66,147,21,57,214,159,159,136,129,200,110, +80,134,182,178,42,6,206,81,14,98,209,4,16,139,103,131,64,196,64,182,69,6,104,123,235,171,186,238,130,183,15,188,4,143,18,33,176,117,96,93,218,74,7,105,3,33,209,198,55,46,188,181,235,137,170,201,161,187,158,251,246,123,183,199,250,19,18,32,40,0,144,252, +193,225,183,218,231,223,216,241,141,150,197,21,215,73,177,244,181,241,165,235,252,2,47,194,236,242,227,225,184,186,243,32,100,47,203,186,99,65,203,242,228,109,175,129,180,237,85,22,222,167,158,254,7,70,223,149,31,39,156,70,1,250,118,50,81,35,132,155, +117,30,40,137,252,251,55,71,140,104,46,195,37,207,237,72,254,130,22,223,15,137,29,127,6,105,215,163,192,19,175,91,12,77,5,161,120,14,17,3,237,144,61,185,28,0,227,194,179,160,189,104,50,188,176,235,47,240,212,246,135,160,55,118,0,236,162,211,244,57,3, +170,76,187,110,42,92,235,146,202,91,194,77,222,25,79,127,227,221,203,118,175,236,125,31,159,154,40,0,144,60,160,118,122,113,251,220,47,181,221,27,172,245,76,75,215,184,222,195,225,254,102,127,55,156,84,127,49,180,4,198,101,213,49,208,18,195,32,239,124, +139,121,197,52,131,95,141,246,19,131,64,215,144,173,249,99,244,63,102,244,104,101,130,114,96,131,110,1,160,198,246,146,227,180,55,253,37,127,163,31,30,33,255,137,35,145,129,93,16,223,250,0,112,59,254,200,18,8,197,146,57,44,50,64,163,4,217,0,13,255,47, +172,58,29,198,135,231,192,163,91,255,7,94,221,251,20,168,170,98,126,75,108,13,88,23,193,64,181,123,206,169,255,61,245,229,21,247,109,188,122,197,125,27,30,208,176,90,16,5,0,146,187,76,185,164,233,28,242,250,33,199,113,193,116,24,255,195,225,254,160,189, +24,150,54,158,13,115,42,78,28,149,46,103,71,45,76,136,135,79,141,190,188,245,53,80,6,118,143,60,255,109,57,29,222,79,197,241,165,29,8,117,159,219,216,62,114,0,35,201,210,191,124,61,64,71,34,3,26,185,62,214,130,220,183,10,248,45,191,101,149,4,98,217,98, +16,139,38,101,69,229,3,29,58,68,243,3,166,148,44,128,63,111,254,37,108,32,251,153,142,101,1,90,2,204,9,92,104,198,149,99,126,87,60,198,55,245,239,119,190,123,83,12,7,11,161,0,64,114,11,135,223,106,157,119,99,199,183,90,22,149,95,43,199,20,80,20,243,165, +60,157,120,70,153,89,126,44,156,88,119,17,123,72,101,133,183,47,69,147,33,254,13,207,129,76,188,125,250,123,186,38,158,83,137,124,102,69,1,232,16,33,221,81,147,129,100,169,93,129,28,43,42,116,56,242,210,148,56,155,115,32,239,123,30,120,119,61,136,165, +11,192,82,58,63,43,162,2,99,2,227,225,134,241,157,240,236,142,63,194,147,219,126,7,3,82,31,216,89,14,131,121,203,2,218,72,130,96,227,220,210,171,3,213,174,113,79,127,99,213,37,187,87,246,108,192,167,42,10,0,36,7,168,24,27,172,59,230,150,174,95,21,213, +187,231,198,233,0,31,147,147,252,105,223,126,218,197,175,202,211,4,167,212,127,14,186,66,211,178,226,115,171,196,195,151,54,60,11,210,230,151,64,233,219,201,50,168,57,161,64,188,253,127,19,163,49,160,164,14,143,247,41,48,221,196,3,140,36,173,170,195, +91,33,190,225,167,32,109,123,8,132,240,116,176,16,177,43,4,186,51,251,208,230,44,176,168,250,12,232,14,205,128,63,110,190,23,222,218,255,2,139,4,136,38,71,42,232,12,144,64,141,123,214,41,63,156,242,210,63,254,223,186,207,191,253,224,150,71,240,233,138, +2,0,201,98,58,150,85,47,154,115,93,219,175,68,187,80,145,142,44,127,154,228,39,242,86,88,90,123,46,28,87,115,46,56,196,204,175,159,43,251,214,66,98,221,147,32,109,127,29,52,186,182,95,144,222,126,154,188,226,66,103,164,146,64,83,162,32,239,122,28,228, +189,127,7,193,223,5,150,138,227,64,12,207,98,83,14,51,69,137,179,18,174,232,184,3,94,223,251,52,252,105,243,47,216,124,1,179,147,4,105,244,144,23,185,146,185,215,183,255,185,168,222,243,181,231,190,189,250,235,216,70,24,5,0,146,109,207,41,145,135,89, +95,28,115,237,248,115,234,239,150,227,138,133,222,184,230,123,253,81,168,247,181,193,233,141,87,66,19,121,8,102,214,177,85,65,222,190,2,18,107,159,0,121,247,187,44,108,203,137,246,60,77,232,67,50,175,133,132,145,94,8,26,40,61,111,131,220,243,38,155,90, +200,132,64,233,66,214,150,56,83,208,254,26,99,130,227,224,143,155,238,101,73,130,60,249,37,154,88,185,65,171,4,36,69,230,186,78,173,185,51,80,227,234,122,234,246,149,151,13,236,137,244,225,69,129,2,0,201,2,188,101,14,251,130,155,59,127,84,63,171,228, +82,186,118,103,118,55,223,195,94,63,173,233,63,150,120,254,214,76,38,133,201,9,144,182,188,76,12,255,227,108,0,15,11,81,211,48,191,197,137,23,2,50,58,81,17,226,245,83,31,91,29,222,6,241,117,63,128,196,182,63,128,165,124,9,17,3,199,103,108,56,145,207, +90,4,23,181,222,12,93,69,83,225,255,54,253,12,246,71,118,153,26,13,160,207,20,250,108,169,28,95,116,250,242,159,78,107,122,250,27,239,158,187,237,245,3,107,240,122,64,1,128,100,144,146,86,95,213,226,219,198,222,31,106,242,206,137,13,152,155,229,175,129, +10,81,57,2,245,222,86,56,189,233,139,208,156,65,175,159,38,242,73,27,95,32,134,255,49,80,14,109,102,51,5,64,180,99,144,26,201,28,212,203,166,203,3,137,67,16,223,244,75,144,118,253,21,68,226,141,91,171,78,206,88,194,224,132,226,185,208,232,239,132,255, +219,248,51,120,109,239,223,76,207,13,160,121,1,238,98,251,184,19,190,61,241,185,127,252,100,221,69,111,63,184,229,113,188,16,80,0,32,25,128,120,252,83,150,220,49,246,119,86,167,88,111,118,47,127,218,191,159,178,184,250,76,88,86,127,81,230,58,249,73,49, +72,108,120,6,18,107,30,99,237,121,233,240,29,92,223,71,178,43,40,32,178,78,137,154,52,8,137,173,191,3,121,207,83,172,132,48,83,66,128,70,3,46,105,187,5,218,130,19,225,225,77,63,131,190,248,65,83,239,95,90,42,200,139,92,241,156,235,218,30,241,150,57,174, +123,233,135,107,127,68,91,11,35,40,0,144,209,82,250,231,212,47,159,117,85,235,47,21,89,243,72,38,175,247,71,229,97,150,96,116,102,243,85,208,85,148,161,12,127,69,34,30,255,243,16,95,253,103,80,15,109,97,157,237,10,59,155,31,201,126,33,32,36,133,128,28, +25,17,2,79,130,165,108,41,88,170,79,203,200,210,192,180,210,69,208,232,235,128,7,214,255,16,86,30,124,5,108,130,221,180,113,195,52,47,64,83,20,97,210,249,141,63,116,6,109,245,207,222,189,250,122,226,132,96,118,32,10,0,36,189,207,24,14,230,94,215,126, +67,247,242,154,111,43,9,21,204,84,222,138,166,176,218,254,201,37,11,136,241,255,34,243,36,70,29,77,3,105,243,139,16,95,245,39,80,14,172,103,99,94,1,13,63,146,147,66,32,202,132,128,180,247,239,96,169,60,145,188,78,30,245,100,193,176,163,28,174,234,190, +11,158,218,246,32,252,117,235,111,32,65,238,111,179,114,120,104,94,64,180,63,1,173,75,43,175,13,84,187,106,30,185,225,159,23,13,29,136,245,227,5,128,2,0,73,3,118,175,133,159,127,83,231,247,91,143,171,184,58,62,64,231,160,155,103,252,227,74,140,205,33, +95,222,120,57,27,222,147,9,104,171,222,248,59,191,39,158,211,106,182,198,143,137,125,72,174,11,1,16,93,160,73,3,144,216,248,11,144,118,63,9,214,154,211,193,82,126,220,168,150,15,210,68,192,37,53,103,65,131,191,29,254,247,253,123,96,251,224,6,112,178, +242,93,115,50,104,104,135,209,226,86,255,201,167,253,116,90,249,223,239,92,121,250,174,183,123,182,227,201,207,13,120,60,4,185,129,59,108,119,157,242,227,169,15,142,89,90,113,117,172,95,50,209,248,107,16,149,135,160,202,211,0,95,26,251,221,140,24,127, +58,145,47,242,204,93,16,121,234,14,144,247,18,227,111,33,15,71,209,138,39,29,201,19,33,64,252,44,26,17,136,29,128,216,218,239,67,228,141,47,176,78,131,163,77,147,175,11,110,28,119,15,235,220,25,83,34,44,226,103,22,82,68,6,127,165,115,202,9,119,79,124, +174,122,82,104,44,158,116,20,0,136,73,132,155,188,37,203,190,63,249,177,146,86,223,114,51,147,253,84,242,0,136,42,81,242,64,56,14,110,32,15,134,58,111,235,168,126,46,45,210,3,177,87,127,14,195,127,253,50,72,155,95,78,206,114,23,237,120,194,145,60,125, +218,90,200,245,237,2,117,104,19,196,222,189,29,162,111,221,0,74,223,234,81,221,5,151,197,11,23,183,126,5,206,105,254,18,155,218,153,80,205,107,243,79,39,140,210,132,228,147,238,153,252,247,238,229,181,199,224,9,207,126,112,9,32,203,169,28,23,108,56,225, +219,19,255,100,243,88,58,105,9,142,105,55,43,185,241,45,188,141,60,8,174,37,94,255,201,163,251,161,84,5,18,235,158,128,248,202,135,65,29,220,203,178,250,49,179,31,41,28,33,144,92,131,87,14,173,128,104,239,59,96,169,88,10,214,186,243,129,179,133,71,109, +23,230,85,158,4,213,158,70,248,205,186,239,192,174,161,205,166,117,244,164,93,2,121,145,11,205,187,161,227,17,14,224,194,119,254,176,245,247,120,194,49,2,128,232,160,98,92,81,55,49,254,127,183,186,44,157,84,93,155,5,205,242,15,59,42,224,154,238,111,141, +186,241,151,119,175,132,225,71,111,134,232,203,63,1,45,218,155,236,220,199,225,101,136,20,32,35,67,124,18,219,255,4,145,215,47,7,105,251,195,163,58,124,169,193,215,1,55,142,191,7,38,22,207,101,203,128,180,239,135,41,250,94,214,64,73,40,142,57,215,183, +63,48,235,170,214,203,56,108,214,129,17,0,36,53,58,150,85,205,156,117,117,219,195,22,135,80,76,235,110,205,64,99,235,253,195,48,54,60,19,206,111,185,30,252,182,208,168,125,30,109,248,16,196,222,126,0,164,245,79,211,39,4,150,244,33,8,133,38,187,178,68, +193,62,136,173,251,62,155,64,104,109,188,116,212,6,14,121,44,126,184,162,243,14,248,235,150,122,120,116,235,253,192,17,107,77,135,13,25,22,1,10,121,218,104,42,63,229,226,166,159,218,125,22,223,223,191,254,238,221,128,173,2,80,0,32,159,77,247,242,218, +197,243,111,236,120,72,145,84,31,45,245,51,3,154,240,35,171,9,88,90,115,54,156,210,240,121,16,76,170,7,62,26,18,239,255,13,226,111,61,48,18,238,39,134,95,196,203,14,65,62,42,4,104,254,139,8,74,223,187,16,125,235,122,176,84,46,3,107,253,249,228,126,241, +141,198,155,195,9,117,23,66,185,187,22,126,75,68,200,176,52,0,86,19,170,20,52,85,99,101,130,93,167,212,124,139,24,127,239,211,223,120,247,86,13,69,0,10,0,228,223,26,255,147,231,221,208,254,91,41,174,56,53,83,106,252,57,144,212,88,114,189,127,204,141, +44,225,111,180,80,123,183,65,108,197,175,217,148,62,78,176,226,160,30,4,249,44,168,225,213,84,72,108,123,16,148,131,175,129,181,241,115,32,150,204,29,149,183,158,16,158,203,150,6,127,181,230,27,176,99,112,147,105,121,1,180,69,121,215,169,53,95,37,143, +34,247,211,223,88,117,45,21,6,72,118,128,139,175,217,101,252,151,207,163,158,127,66,53,201,248,211,250,254,8,4,108,197,112,117,247,55,71,207,248,107,10,36,86,253,41,153,221,191,125,69,210,235,231,81,107,34,200,209,105,118,158,53,18,82,163,187,33,246, +238,109,16,91,125,39,104,241,3,163,242,214,213,238,38,248,210,216,239,65,119,104,58,68,88,94,128,57,207,161,216,160,68,71,149,95,115,242,15,38,255,212,25,176,98,86,0,10,0,228,99,198,255,2,98,252,31,160,163,124,205,234,238,71,215,251,233,248,222,235,199, +125,15,154,253,163,179,166,72,7,245,12,63,126,43,68,95,189,23,52,57,142,217,253,8,162,251,233,108,5,16,108,172,129,80,100,197,149,32,239,125,122,84,222,214,107,13,192,23,186,238,132,133,85,203,217,8,112,58,10,220,184,83,144,28,36,84,55,189,248,178,19, +191,59,233,94,103,192,134,34,0,5,0,242,33,227,255,43,37,174,8,102,120,254,84,181,83,245,62,177,100,46,92,219,125,55,107,7,58,10,110,63,107,223,27,121,236,43,32,239,94,149,76,242,227,5,60,185,8,98,44,28,144,76,18,140,31,130,216,170,255,76,70,3,18,135, +210,254,174,116,138,224,89,205,87,195,233,141,87,178,126,33,138,102,78,9,50,141,4,148,119,5,47,57,241,187,19,239,117,96,36,0,5,0,26,127,98,252,111,104,167,198,159,55,195,243,167,106,61,70,84,251,162,234,51,224,178,246,219,193,33,186,211,254,25,212,254, +221,16,121,242,118,214,212,71,147,19,201,78,126,8,130,152,248,164,182,176,252,128,100,52,224,11,32,31,120,105,84,222,150,62,71,46,109,191,21,44,188,245,200,132,80,163,208,214,193,101,157,129,75,150,125,119,18,21,1,120,110,81,0,20,184,231,159,80,77,49, +254,84,165,203,154,68,84,251,21,112,102,211,23,129,31,133,250,122,105,195,51,48,252,232,77,32,237,248,103,50,201,15,189,126,4,73,111,52,32,182,15,98,43,191,6,241,247,127,72,110,250,104,218,223,149,246,9,248,98,215,93,224,179,6,217,146,128,25,208,229, +128,178,46,38,2,126,225,12,226,114,0,10,128,194,51,254,203,169,231,47,155,228,249,203,170,68,78,38,15,23,181,222,12,139,171,207,76,251,254,107,241,65,136,190,120,15,68,158,255,30,249,126,8,215,250,17,100,212,158,218,86,246,74,108,123,8,34,255,188,26, +148,129,117,105,127,203,102,127,23,92,59,246,219,80,238,170,101,115,4,76,17,1,67,50,148,19,17,112,252,55,39,220,43,88,208,20,161,0,40,28,227,127,242,188,27,58,126,75,61,127,227,107,254,28,107,235,107,23,157,112,69,231,127,178,25,224,233,70,217,183,134, +117,243,75,172,123,42,25,238,199,12,127,4,201,64,52,192,13,234,192,122,136,190,121,45,72,59,254,152,246,119,164,198,255,186,177,223,129,38,95,39,75,48,54,131,56,17,1,21,227,139,46,153,255,229,142,31,112,216,50,16,5,64,1,24,255,197,243,110,236,248,173, +156,80,172,170,9,198,159,134,228,104,104,142,206,252,238,40,154,146,246,253,79,172,250,51,12,63,241,31,160,246,110,31,169,235,199,155,22,65,50,6,237,27,160,202,16,91,251,61,150,36,168,73,253,105,125,59,218,61,244,170,238,111,30,41,19,52,39,18,32,209, +102,65,87,31,115,75,231,93,40,2,80,0,228,45,237,39,84,205,156,127,83,199,239,21,83,154,252,112,172,198,191,216,81,1,87,119,223,13,13,222,246,180,238,187,22,27,128,232,179,223,134,232,171,63,79,246,43,23,109,120,66,17,36,43,130,1,2,203,13,144,246,60,5, +81,186,36,208,255,94,90,223,206,41,186,225,242,142,59,96,106,233,66,211,68,192,72,179,160,155,137,8,248,42,138,0,20,0,121,71,197,184,96,215,156,107,219,30,86,18,170,215,140,53,255,152,50,12,149,238,6,184,102,236,183,200,215,250,180,238,187,114,96,61, +12,63,118,11,36,54,62,155,44,239,227,48,209,15,65,178,78,7,208,37,129,161,109,172,149,176,180,243,47,105,125,47,171,96,131,75,218,110,129,185,21,39,154,214,48,136,150,8,118,157,82,115,231,130,175,116,94,133,103,19,5,64,62,25,255,134,19,191,61,241,17, +209,33,20,211,113,153,198,141,127,4,234,188,99,88,119,63,26,1,72,39,52,203,63,242,196,215,88,91,95,108,229,139,32,89,14,49,204,160,74,16,95,251,29,136,175,251,46,251,62,109,111,197,137,112,222,152,27,96,81,245,233,16,147,35,198,69,0,249,231,177,33,22, +9,248,225,184,51,235,206,193,147,137,2,32,231,41,170,247,20,19,227,255,103,171,75,172,49,99,176,15,77,190,105,244,117,16,227,255,45,8,164,121,126,120,124,229,31,32,242,194,247,89,71,63,12,249,35,72,206,132,2,216,168,225,196,246,135,33,186,242,86,114, +255,14,167,239,173,200,175,51,155,174,98,149,71,102,137,0,90,34,56,231,186,182,95,117,47,175,93,130,39,19,5,64,206,226,14,219,93,75,254,115,220,255,217,60,150,14,57,110,134,231,63,12,77,254,78,248,66,231,215,217,24,207,116,146,120,239,175,16,123,253, +62,54,196,7,179,252,17,36,231,84,0,209,1,30,144,247,191,4,177,213,95,39,134,85,78,235,187,157,222,116,37,156,88,119,33,139,78,26,21,1,116,88,16,113,150,172,243,110,236,120,176,110,102,241,100,60,151,40,0,114,14,98,244,249,101,223,155,244,235,226,22,239, +44,41,170,24,247,252,21,234,249,19,227,223,69,140,191,53,189,198,95,217,179,138,24,255,95,2,103,177,177,193,36,8,130,228,168,12,176,16,17,176,239,121,72,108,186,47,237,239,181,172,254,98,56,177,246,66,83,34,1,52,79,138,142,67,95,124,219,216,135,43,198, +21,213,227,153,68,1,144,51,208,166,22,243,191,220,241,253,146,54,255,105,52,156,101,134,241,111,58,108,252,211,236,249,131,28,135,232,107,247,210,59,16,147,253,16,36,31,68,128,232,74,142,23,78,115,117,192,17,17,80,119,33,43,79,54,44,2,36,21,236,30,75, +229,177,119,142,251,163,167,196,17,196,51,137,2,32,39,152,117,77,235,245,237,199,85,93,29,31,52,158,128,67,67,106,204,248,119,222,153,126,227,79,72,108,120,22,148,3,27,112,205,31,65,242,70,1,144,199,188,154,128,196,230,251,71,229,237,168,8,88,82,115, +22,203,87,50,42,2,164,152,2,174,144,173,251,196,239,76,124,192,21,182,227,224,0,20,0,217,205,248,179,235,79,27,123,90,237,183,105,93,171,193,187,246,72,182,63,29,205,233,177,6,210,191,243,196,235,151,222,255,27,113,252,45,120,34,17,36,159,16,236,160, +244,188,9,234,224,134,81,121,187,211,26,46,135,37,35,137,129,96,84,4,68,21,40,105,243,47,90,116,107,215,127,243,34,246,8,64,1,144,165,212,205,40,158,52,251,154,214,251,20,73,229,52,205,200,69,159,108,242,83,229,110,128,43,153,231,31,24,149,253,87,122, +54,147,215,86,186,134,129,39,19,65,242,236,81,175,145,103,138,124,224,31,163,246,142,167,55,125,1,230,86,158,4,17,19,170,16,104,52,181,110,102,201,165,243,111,234,188,25,207,37,10,128,172,35,220,226,173,88,250,95,227,126,175,72,154,219,104,163,159,184, +26,133,98,103,37,49,254,255,149,246,82,191,143,8,128,125,235,146,37,127,216,222,23,65,242,14,142,19,65,233,95,51,170,239,121,110,203,117,48,163,108,137,41,29,3,105,203,224,142,147,170,239,162,81,86,60,155,40,0,178,6,79,137,195,190,244,142,113,15,88,157, +98,173,42,27,43,247,163,131,125,252,214,16,92,217,241,95,16,78,115,147,159,127,17,0,125,59,209,246,35,72,222,42,0,1,180,232,94,114,163,199,71,239,45,201,175,11,198,220,4,227,195,179,13,15,16,162,65,85,37,174,192,172,171,90,127,89,59,45,60,14,79,40,10, +128,140,35,218,4,56,230,150,206,31,135,154,188,179,104,194,138,17,232,72,95,135,232,130,43,58,238,128,10,119,221,168,127,22,45,62,128,222,63,130,228,111,8,0,52,37,6,154,26,31,213,183,21,121,11,92,218,254,85,24,19,24,103,120,148,48,141,174,106,170,230, +93,124,251,216,223,251,43,93,97,60,169,40,0,50,202,244,43,90,174,169,159,85,122,137,209,140,127,69,147,65,224,5,184,180,237,107,80,239,107,203,208,167,209,240,132,34,72,94,147,153,123,220,46,56,225,178,142,219,161,202,221,196,74,4,141,56,26,180,157,186, +195,103,109,60,225,238,137,247,219,125,86,172,85,70,1,144,25,218,79,168,58,102,226,185,13,223,137,15,38,140,169,90,77,37,2,64,129,243,90,110,128,142,162,204,53,190,226,44,46,20,1,8,146,207,182,159,120,227,92,134,58,123,122,173,1,184,162,243,14,8,217, +75,33,161,198,12,109,139,70,91,195,45,222,197,243,110,104,255,22,158,88,20,0,163,78,121,87,160,122,238,245,237,247,75,49,89,52,146,240,79,235,100,105,210,223,169,13,159,103,227,53,51,122,49,120,203,146,11,109,8,130,228,33,10,240,182,34,54,39,32,83,208, +225,101,151,117,222,14,78,209,5,178,102,44,106,26,31,146,96,204,146,138,235,39,158,223,112,54,158,91,20,0,163,134,221,103,177,46,188,181,251,126,209,46,148,170,178,49,131,73,19,99,22,85,157,206,134,105,100,26,33,220,8,156,128,125,255,17,36,47,3,0,170, +76,68,126,11,100,58,207,167,214,51,6,46,110,189,133,37,8,170,154,129,188,41,242,232,149,99,10,76,191,172,229,167,181,51,138,187,240,12,163,0,24,21,230,223,212,249,237,162,122,207,108,217,96,210,31,53,254,147,74,230,193,242,198,43,178,226,115,9,225,102, +224,61,165,0,170,140,39,25,65,242,12,142,19,64,44,154,146,21,251,210,21,154,198,166,8,74,106,194,80,183,64,86,114,205,129,103,209,215,186,255,215,87,225,244,226,89,70,1,144,86,38,95,220,116,86,203,162,138,171,227,195,198,194,87,49,37,202,198,250,94,56, +230,203,192,103,73,207,125,206,226,4,75,237,140,145,94,0,8,130,228,13,106,156,120,255,77,32,4,186,179,102,151,230,84,156,8,75,106,206,54,92,30,72,199,172,187,130,182,142,133,183,118,255,183,96,69,147,134,2,32,77,212,76,13,143,153,122,105,211,79,228,152, +108,40,87,142,214,250,135,236,37,240,185,246,91,89,217,95,54,97,105,59,22,120,103,32,57,12,8,65,144,188,64,83,37,176,86,47,39,79,252,236,106,167,127,74,253,165,48,181,228,24,195,34,32,17,145,161,122,74,232,220,105,159,111,190,2,207,54,10,0,211,113,248, +172,246,121,55,118,252,134,227,192,111,164,211,31,45,247,179,240,54,184,164,237,171,16,114,148,103,223,5,225,46,6,91,247,114,208,164,40,158,116,4,201,7,227,47,71,88,232,95,44,61,38,235,246,141,227,120,56,111,204,13,172,244,217,104,121,32,237,20,56,241, +220,134,239,54,206,45,29,143,103,29,5,128,169,204,187,169,227,174,96,141,123,178,28,215,223,233,143,174,117,209,102,63,103,53,95,13,77,254,236,205,89,177,118,156,8,150,186,233,160,37,134,241,196,35,72,46,163,38,88,230,191,173,245,186,172,29,239,77,163, +160,151,182,221,10,126,91,136,60,31,245,47,63,106,228,209,172,170,154,131,58,106,238,176,221,131,39,31,5,128,41,140,61,163,110,217,152,37,21,215,210,178,19,35,208,48,23,205,246,159,81,182,52,187,63,48,121,80,56,102,95,11,98,113,11,70,2,16,36,103,141, +191,196,66,254,246,206,175,2,239,172,202,234,93,45,113,86,194,69,173,95,102,17,1,218,23,69,47,52,31,192,93,108,239,88,112,115,231,247,104,231,67,4,5,128,33,194,77,222,138,105,159,111,254,169,20,53,150,25,79,141,255,216,240,76,56,185,225,115,57,241,185, +57,187,23,28,199,124,21,132,162,122,20,1,8,146,147,198,223,66,140,255,109,32,4,39,229,196,46,183,145,253,60,181,225,50,214,23,197,72,146,85,98,88,134,134,185,165,151,78,190,176,225,12,188,16,80,0,232,134,102,148,30,243,213,174,159,217,220,162,161,122, +255,132,26,135,82,87,53,92,48,230,6,16,184,220,233,92,201,187,195,224,90,244,31,40,2,16,36,23,141,127,215,109,32,134,167,231,212,174,31,83,117,26,204,42,59,206,112,82,160,20,145,105,197,214,143,75,90,125,181,120,65,160,0,208,197,140,43,199,92,85,214, +17,56,78,138,234,207,136,167,45,126,173,188,21,46,106,189,25,124,214,162,156,59,6,28,17,1,206,17,17,0,40,2,16,36,103,60,127,49,52,61,39,63,194,153,205,87,65,189,175,99,36,41,80,231,97,80,52,16,173,124,104,254,151,59,127,110,117,137,184,22,128,2,32,53, +106,166,134,59,198,159,89,127,23,45,47,209,143,198,122,94,159,214,120,5,171,249,207,217,139,100,36,18,192,99,36,0,65,114,195,248,135,167,231,236,199,160,131,131,104,62,128,219,226,3,89,211,255,252,165,142,91,121,87,112,225,244,203,91,174,197,139,3,5, +192,81,99,243,88,196,185,215,183,255,92,211,52,151,166,234,15,253,71,228,97,22,206,154,91,177,44,231,143,9,139,4,44,190,13,151,3,16,4,141,127,218,41,119,213,194,217,205,215,130,162,202,134,58,5,210,65,109,221,167,213,222,89,61,57,212,137,23,9,10,128, +163,130,40,198,175,20,213,123,166,201,113,253,161,127,234,249,215,122,91,224,140,230,47,230,207,197,226,10,97,78,0,130,160,241,31,21,104,155,244,99,170,78,53,148,15,144,156,109,166,57,169,67,103,115,91,44,120,177,124,20,156,252,242,49,106,167,134,39, +116,157,90,115,107,194,64,171,95,58,224,194,198,59,224,130,49,55,130,67,72,83,167,63,162,140,19,187,214,129,180,125,53,200,7,182,129,26,237,103,87,59,103,119,131,24,172,0,75,101,27,88,171,218,129,179,153,251,254,135,115,2,34,127,251,79,80,14,109,6,206, +226,192,139,6,65,242,214,248,107,160,36,54,130,28,95,3,138,180,13,52,181,47,89,112,207,59,129,23,75,65,180,182,128,104,107,3,142,79,79,217,253,41,13,159,135,173,3,239,195,198,254,85,96,211,57,197,144,246,110,9,53,122,167,78,251,124,243,77,207,127,239, +189,175,227,69,131,2,224,19,177,123,45,214,57,95,106,255,41,185,230,173,6,74,81,153,247,127,78,203,151,160,198,211,98,254,237,40,197,32,242,207,191,146,215,95,64,222,183,25,180,196,72,247,44,158,251,64,242,210,151,96,97,66,192,222,49,15,92,83,78,5,129, +124,111,90,36,96,36,39,96,24,69,0,130,100,222,248,119,165,33,225,79,75,64,124,248,41,136,15,61,193,4,128,166,142,68,252,56,254,67,174,181,198,122,134,240,98,9,88,157,51,193,238,57,133,124,95,97,234,110,88,120,43,156,63,230,6,248,214,91,87,177,164,64, +129,211,103,178,168,67,215,189,188,246,107,155,95,222,247,232,246,21,7,87,226,197,51,242,44,199,67,240,1,211,46,107,185,161,168,193,51,209,72,232,159,134,171,38,23,47,128,121,21,39,153,190,127,241,141,43,224,224,79,46,134,254,63,125,3,164,221,235,217, +205,72,61,126,206,238,2,206,234,76,190,136,199,207,126,102,177,129,210,183,7,134,158,253,21,28,248,201,133,48,244,226,253,73,229,110,114,36,0,171,3,16,36,195,158,191,201,198,95,138,189,1,3,123,175,132,225,131,119,19,239,121,45,115,48,56,222,149,124,113, +142,228,139,119,142,252,222,14,154,124,8,98,253,15,193,192,158,43,32,54,240,144,233,31,181,204,85,3,167,55,94,105,104,114,224,200,163,207,54,247,250,246,159,216,220,22,116,124,81,0,124,148,154,105,225,14,22,250,31,50,144,117,74,46,80,218,209,234,204, +230,171,77,223,191,225,127,60,0,61,247,93,3,210,222,13,71,12,252,103,118,186,18,44,192,57,60,160,69,135,96,224,175,223,133,158,255,185,30,212,225,94,115,35,1,139,147,213,1,40,2,16,36,3,198,223,228,176,127,172,255,127,96,104,223,205,32,19,175,63,105,224, +109,240,153,253,249,137,87,206,241,110,208,180,8,68,122,126,4,195,7,238,32,6,55,98,234,126,77,47,91,66,94,75,33,38,235,223,46,117,236,66,141,222,233,211,46,107,190,6,47,34,20,0,71,176,185,69,126,238,117,237,63,34,226,210,161,105,58,21,230,136,50,61,155, +92,91,94,107,192,212,253,27,122,238,62,232,255,203,221,204,224,115,22,123,234,27,16,68,38,4,98,171,159,131,67,191,186,10,148,190,189,230,69,2,92,88,29,128,32,249,96,252,35,189,63,38,175,159,177,176,62,245,236,83,39,41,4,226,195,127,131,161,3,255,65,4, +129,185,207,131,211,27,175,96,209,0,201,192,188,0,218,37,176,251,180,218,219,202,187,2,77,120,49,161,0,96,76,56,167,254,243,161,6,207,92,163,161,255,5,85,167,66,71,209,20,83,247,45,250,246,227,48,240,212,127,3,103,115,146,179,101,172,139,32,21,1,210, +206,53,208,243,155,235,76,21,1,180,58,192,137,213,1,8,146,211,198,63,214,255,32,51,224,70,205,2,77,8,148,162,175,66,228,208,247,76,221,71,218,23,224,236,150,107,128,35,251,167,129,190,229,76,90,214,77,252,40,207,236,107,218,126,32,88,208,252,21,252,17, +40,105,245,87,78,56,183,241,206,248,176,254,208,63,109,245,91,231,109,133,101,117,23,153,186,111,210,174,181,196,243,255,22,17,228,150,15,146,111,140,122,236,54,23,203,31,48,91,4,124,56,39,0,69,0,130,228,162,241,167,21,67,230,52,205,163,34,128,38,16, +198,6,30,52,117,95,219,2,19,89,187,224,168,129,165,0,41,166,64,197,216,224,210,73,23,52,158,131,2,160,144,63,188,192,193,140,47,180,124,75,180,241,69,122,27,254,208,201,85,34,39,178,208,191,222,50,149,79,220,110,164,31,250,254,112,59,168,241,8,11,225, +155,9,141,38,164,67,4,240,40,2,16,36,125,198,191,43,93,198,255,33,83,141,255,7,34,192,1,209,222,95,128,28,251,167,169,219,61,161,238,66,226,112,141,129,132,18,211,239,180,69,100,24,127,118,221,55,131,53,238,162,66,190,180,10,90,0,140,89,92,177,168,102, +106,248,108,35,237,126,227,74,4,22,215,156,5,13,190,118,83,247,173,255,145,187,153,145,214,181,230,159,37,34,0,19,3,17,196,68,207,223,228,108,255,72,207,97,207,223,105,186,241,79,66,151,44,85,86,77,160,42,251,77,219,170,77,176,195,89,205,87,131,200,91, +65,211,89,217,68,103,5,216,60,150,202,233,87,182,220,129,2,160,0,113,248,172,182,169,151,53,127,151,206,143,214,173,34,137,2,173,39,134,255,216,26,115,35,73,195,47,255,14,162,111,61,206,178,253,211,73,186,150,3,62,92,29,128,145,0,4,49,193,248,135,211, +96,252,7,30,76,139,231,255,209,135,140,21,20,101,15,68,14,125,151,252,70,49,109,179,141,190,78,88,88,181,28,162,138,254,165,0,234,248,53,205,43,187,188,97,78,233,100,20,0,5,198,228,139,27,175,241,87,186,58,244,10,0,170,60,69,114,115,158,217,116,21,107, +86,97,22,137,237,171,96,224,169,159,144,251,102,52,154,235,104,35,34,224,253,17,17,176,207,188,251,158,85,7,224,114,0,130,100,157,241,239,29,37,227,127,248,89,192,185,136,177,253,7,196,250,127,107,234,118,143,173,61,151,229,94,37,244,86,5,104,44,18,32, +204,184,162,229,123,22,135,80,144,182,176,32,63,116,73,171,175,186,235,148,154,175,36,12,36,254,81,229,73,179,254,205,12,253,171,209,65,232,123,248,191,64,147,227,134,51,254,83,19,1,238,17,17,112,173,201,213,1,97,156,29,128,32,217,102,252,251,71,207, +248,31,17,1,188,19,162,125,255,99,106,62,0,93,10,56,163,233,11,196,136,241,186,27,4,177,222,0,77,222,25,19,206,109,56,31,5,64,1,192,241,52,241,175,245,78,193,38,248,245,38,254,209,58,212,106,79,35,28,87,123,158,169,251,54,240,216,61,32,239,73,223,186, +255,103,71,2,176,58,0,65,50,138,150,127,198,255,3,83,163,193,240,161,239,131,166,244,153,182,213,102,127,55,204,173,92,102,104,96,16,29,27,60,246,244,218,59,189,165,142,64,161,93,110,5,39,0,26,231,150,206,172,153,26,58,71,210,153,248,167,141,104,205, +211,26,175,96,115,171,205,34,250,246,19,16,121,227,207,105,95,247,255,183,198,58,141,137,129,24,9,64,144,163,240,252,185,220,203,246,63,250,7,140,21,20,121,59,217,151,31,153,186,217,19,106,47,132,50,103,53,235,196,170,235,176,203,42,56,252,214,138,233, +87,180,220,140,2,32,143,161,235,60,228,36,127,83,77,168,186,63,55,109,69,57,189,116,49,116,4,205,203,27,81,14,237,132,254,199,190,7,156,104,201,220,205,153,102,17,128,179,3,16,228,51,140,127,206,102,251,167,240,28,224,92,16,31,250,59,36,134,30,55,109, +155,46,139,135,77,13,164,83,88,65,231,82,0,141,2,52,47,40,255,98,121,119,160,25,5,64,158,210,189,188,246,204,162,58,207,12,89,103,226,159,172,201,16,180,23,195,178,250,139,77,188,241,85,232,123,228,110,80,7,15,177,222,253,217,192,104,84,7,160,8,64,144, +79,48,254,185,154,237,159,202,243,133,183,178,150,195,170,188,211,180,109,78,40,158,3,227,195,179,33,166,232,123,174,208,229,96,222,202,59,103,92,57,166,160,198,5,23,140,0,240,20,219,93,19,207,107,184,67,138,25,24,246,163,196,217,186,127,192,22,54,109, +191,134,95,121,8,226,107,95,98,70,55,123,248,120,78,0,86,7,32,8,26,127,179,16,137,223,211,11,195,61,63,160,7,192,180,173,158,210,240,57,112,137,222,145,72,128,158,40,128,12,149,227,138,78,109,61,182,114,54,10,128,60,99,236,25,117,87,56,131,182,70,85, +214,23,34,138,43,49,150,112,50,171,252,56,211,246,73,222,187,17,6,159,254,217,40,149,252,233,21,1,35,213,1,253,230,86,7,56,23,225,0,33,4,141,127,190,148,250,165,236,8,112,78,144,34,175,65,108,240,143,166,109,179,196,89,5,139,170,79,39,207,106,157,207, +20,141,229,3,112,147,47,106,252,186,197,33,114,133,112,9,22,132,0,8,55,121,139,59,79,169,185,73,26,214,159,248,39,242,34,83,152,2,103,82,91,94,85,129,254,71,190,205,74,255,70,175,228,207,64,36,224,215,102,231,4,224,0,33,4,141,127,254,101,251,167,240, +12,224,237,16,237,187,15,20,105,171,105,219,164,115,2,170,60,77,186,19,2,233,242,112,81,189,103,102,235,146,138,83,80,0,228,9,19,47,104,184,222,238,17,195,170,206,178,63,154,248,55,181,116,17,52,249,187,76,219,39,22,250,223,184,34,57,229,47,203,193,217, +1,8,146,6,227,159,175,217,254,71,141,0,154,58,8,209,158,31,131,89,75,1,116,30,203,178,186,139,117,47,3,48,17,16,83,96,194,249,245,183,59,131,54,107,190,95,138,121,47,0,138,91,124,53,141,115,74,175,212,219,239,95,33,23,146,223,86,4,39,212,154,215,39,66, +62,176,21,6,159,190,55,75,67,255,153,19,1,152,24,136,20,138,241,119,164,35,219,191,55,123,178,253,143,250,185,194,57,33,17,125,29,226,131,143,152,182,205,113,225,153,208,77,142,109,76,103,155,96,69,82,33,88,227,233,24,119,70,221,121,249,126,57,230,189, +0,152,112,94,253,205,162,93,112,235,156,25,193,214,147,142,169,90,14,65,123,137,57,59,164,105,172,225,143,26,237,207,226,208,255,167,137,0,156,29,128,32,134,61,127,98,252,133,112,186,74,253,114,193,243,255,216,115,133,183,177,165,0,85,222,99,218,54,79, +172,191,136,69,3,84,157,15,254,68,68,130,246,101,85,183,184,66,25,108,204,130,2,192,24,165,29,254,230,198,185,165,23,208,236,78,61,208,117,164,42,119,3,204,175,60,217,188,27,245,173,71,33,182,246,197,44,203,250,63,106,245,130,213,1,8,98,208,248,23,78, +182,255,209,34,130,170,244,176,210,64,179,168,118,55,193,204,178,99,217,180,86,93,167,75,214,192,29,182,215,143,61,189,230,226,124,190,44,243,86,0,208,150,191,179,190,216,122,139,96,21,28,122,189,127,69,149,89,217,31,85,146,166,60,3,6,15,193,224,223, +126,10,156,152,203,75,75,31,171,14,192,217,1,8,146,57,227,223,155,235,198,255,240,243,218,73,188,238,231,64,138,188,104,218,54,151,214,158,205,74,182,21,77,167,3,24,85,160,253,196,234,47,17,33,224,65,1,144,99,212,78,15,183,85,140,15,158,165,215,251,167, +101,127,45,129,177,48,177,120,158,105,251,68,75,254,148,222,221,89,211,240,199,188,72,0,206,14,64,144,140,24,255,254,220,55,254,35,119,62,249,37,64,164,239,94,208,212,33,83,182,232,183,134,96,65,213,105,108,108,187,190,40,128,74,163,0,53,221,167,213, +92,142,2,32,151,62,20,241,254,39,158,219,240,101,98,167,172,122,58,67,210,178,63,158,227,224,248,218,243,201,87,115,14,81,98,203,91,16,249,231,35,57,26,250,255,148,91,22,103,7,32,200,103,27,255,130,207,246,63,218,7,138,21,148,196,22,136,13,252,206,180, +77,206,173,88,6,229,174,90,144,232,185,208,21,5,144,161,99,89,245,181,238,144,221,139,2,32,71,168,156,80,52,134,120,255,103,208,16,142,94,239,191,43,52,29,90,131,19,204,217,33,69,134,129,39,127,12,154,162,208,180,215,188,58,214,56,59,0,65,62,221,248, +99,182,127,138,247,61,249,76,177,129,63,130,34,109,50,101,123,14,209,5,139,170,207,0,89,247,160,32,13,92,97,123,121,247,233,53,23,162,0,200,17,218,79,172,186,142,227,56,155,158,127,171,129,10,86,222,10,199,214,156,107,218,254,12,191,241,103,72,108,121, +155,8,92,123,62,30,110,172,14,64,144,79,242,252,49,219,95,151,73,210,180,8,68,123,127,97,218,22,167,149,46,130,90,111,11,27,227,174,43,10,16,145,161,131,230,2,228,97,69,64,222,9,128,226,22,95,125,227,220,178,243,164,136,94,239,63,202,6,75,212,121,199, +152,243,44,24,234,129,161,231,238,3,206,98,131,252,229,99,57,1,253,88,29,128,160,241,199,108,127,157,247,60,235,13,240,10,36,76,74,8,20,137,67,183,184,250,44,80,84,125,54,65,85,88,20,160,166,123,121,237,57,40,0,178,156,9,231,214,95,101,177,243,14,77, +75,125,241,95,211,84,176,11,46,114,177,156,105,218,254,12,61,255,107,80,122,119,229,65,226,223,209,138,128,247,161,231,215,105,168,14,64,17,128,228,140,241,255,15,204,246,55,42,2,64,128,88,223,125,228,153,28,51,101,123,19,137,83,215,224,239,128,132,129, +40,0,141,44,187,66,246,188,242,228,242,74,0,148,140,241,149,53,206,45,189,80,111,215,191,152,26,133,201,37,243,161,210,221,96,202,254,208,97,63,195,43,254,148,87,137,127,41,69,2,204,204,9,112,97,117,0,146,205,151,254,135,61,255,25,230,27,255,254,194, +49,254,201,27,222,10,114,98,3,196,7,255,98,142,161,227,4,54,40,72,111,99,32,26,5,112,23,219,91,154,230,149,230,213,140,128,188,18,0,109,199,87,93,106,113,138,126,77,87,230,191,10,78,193,13,11,171,150,155,182,63,131,207,220,11,90,124,152,102,182,20,212, +179,16,103,7,32,5,231,249,115,233,44,245,123,168,176,140,255,225,231,8,111,135,216,192,239,65,83,14,154,178,189,113,161,153,208,232,107,215,29,5,144,227,10,116,157,86,123,157,197,33,228,205,3,61,111,62,136,167,212,225,105,94,88,246,121,73,175,247,47, +71,97,82,201,60,40,115,213,154,178,63,241,77,43,32,186,250,57,34,100,157,80,136,224,236,0,164,96,140,255,225,108,255,48,102,251,155,139,8,170,188,143,136,128,135,76,139,2,44,172,210,31,5,80,18,42,132,26,60,147,90,151,86,30,131,2,32,203,232,58,165,230, +44,87,200,94,73,67,53,169,123,255,26,216,69,39,204,175,52,41,186,67,46,176,193,103,126,193,190,230,91,217,95,106,34,192,149,214,62,1,60,138,0,36,11,140,63,102,251,167,51,10,224,132,216,224,99,160,72,219,77,217,222,216,176,177,40,128,34,171,208,122,92, +229,181,180,211,44,10,128,44,193,230,22,197,166,5,101,95,160,99,28,117,121,235,114,4,198,135,103,155,182,246,31,91,253,44,36,54,189,153,83,211,254,210,67,26,171,3,104,36,96,241,109,184,28,128,100,220,248,155,237,249,71,123,10,43,225,239,179,76,20,29, +25,28,27,248,95,83,182,38,112,2,235,14,168,119,92,176,18,87,160,172,195,191,176,110,70,113,55,10,128,44,161,97,110,233,194,96,173,187,139,142,113,212,227,253,91,5,59,185,40,78,53,199,228,201,9,24,124,254,55,57,55,233,47,253,34,224,112,117,128,121,34, +128,119,133,176,68,16,201,43,227,79,61,255,40,26,255,143,69,1,28,144,24,126,22,148,196,251,166,108,143,230,2,212,120,154,217,176,183,148,159,102,26,155,51,35,118,44,171,186,18,5,64,54,124,0,145,167,77,26,190,168,199,248,83,104,159,232,142,162,201,80, +235,105,49,71,189,175,124,10,164,29,239,229,121,221,191,145,72,192,181,88,29,128,228,240,165,140,131,125,50,19,5,136,67,180,255,183,166,108,77,36,231,111,94,197,73,32,235,109,15,28,81,160,122,114,248,140,112,179,183,20,5,64,134,169,158,84,212,81,62,46, +184,72,79,248,63,217,243,95,48,109,237,95,75,68,97,232,69,114,145,138,22,188,103,63,201,88,99,117,0,146,235,158,63,102,251,103,44,10,32,69,95,1,57,254,158,41,219,155,84,50,31,202,92,53,32,107,169,139,0,218,99,198,234,18,124,173,199,86,158,143,2,32,195, +180,29,87,117,9,167,129,168,75,201,17,85,217,228,235,132,150,192,56,115,188,255,183,31,7,121,207,250,28,31,247,155,251,34,0,19,3,145,180,24,127,204,246,207,228,147,131,24,94,217,180,92,0,58,226,125,86,217,177,32,41,122,27,3,41,48,102,113,197,37,206,128, +45,167,67,189,57,45,0,188,101,142,64,205,212,240,217,180,62,83,215,61,173,169,48,167,98,25,27,68,105,138,247,255,202,67,104,252,143,74,4,96,117,0,146,123,198,31,179,253,51,252,220,224,236,196,240,190,6,114,124,181,41,219,155,86,182,24,2,246,98,80,116, +36,4,178,198,64,97,91,115,227,252,210,69,40,0,50,68,243,194,242,83,156,1,107,177,158,210,63,58,29,170,210,93,15,99,77,186,161,233,218,191,188,103,3,0,10,128,163,145,75,31,36,6,178,234,0,147,167,8,98,117,0,146,6,227,143,189,253,179,32,10,0,178,105,125, +1,188,214,32,76,42,158,199,242,192,244,160,200,26,180,46,169,184,44,151,75,2,115,86,0,88,157,34,215,113,98,245,231,36,157,165,127,116,62,244,244,210,165,96,225,141,71,112,52,57,14,195,175,254,30,215,254,83,22,1,238,100,36,224,215,215,97,117,0,146,181, +198,223,129,9,127,89,20,5,112,128,20,121,21,228,248,26,83,182,55,171,252,120,54,50,152,118,130,77,217,137,140,43,80,210,30,56,166,172,35,208,132,2,96,148,41,31,27,156,228,175,118,77,214,147,253,79,107,64,3,182,16,76,41,53,167,161,19,173,251,151,118,173, +3,78,196,204,255,212,69,128,51,125,213,1,40,2,16,19,60,127,1,141,127,150,69,1,18,16,31,252,63,115,236,136,171,22,218,139,38,65,92,79,46,128,70,3,190,188,173,245,184,138,243,80,0,140,50,109,199,85,94,192,233,188,123,226,106,12,198,23,207,6,159,53,104, +194,131,66,129,225,87,254,128,117,255,70,110,233,116,37,6,162,8,64,12,26,255,180,101,251,115,104,252,245,71,1,236,144,136,188,2,138,180,217,156,40,64,217,113,196,16,234,59,23,82,84,134,250,89,37,231,56,131,182,156,236,250,150,147,2,192,87,238,244,87, +79,9,157,42,233,44,253,179,241,118,152,81,182,212,148,125,137,175,127,5,18,219,223,5,206,98,199,59,51,75,69,128,11,171,3,144,20,141,63,102,251,103,183,217,210,212,97,136,15,254,217,148,173,141,9,78,128,106,79,147,174,198,64,52,255,204,83,236,168,111, +154,95,186,0,5,192,40,209,188,176,252,56,103,192,86,162,169,169,39,255,209,178,143,38,127,23,212,152,212,248,103,248,213,63,224,253,104,154,8,72,211,40,97,172,14,64,82,244,252,49,219,63,203,159,21,196,137,75,12,63,79,12,176,241,220,33,145,19,97,106,233, +34,150,24,174,235,178,81,84,104,156,91,118,65,46,158,214,156,19,0,180,243,95,243,49,101,23,40,9,157,165,127,228,215,244,178,37,166,236,139,180,99,53,196,55,190,129,222,191,105,124,124,118,128,217,213,1,73,17,128,203,1,200,167,26,255,46,204,246,207,13, +4,98,120,123,32,62,248,184,41,91,155,88,60,15,252,182,176,174,25,1,82,92,129,242,238,192,226,226,102,95,5,10,128,52,19,110,242,54,6,235,61,179,229,68,234,201,127,138,38,67,177,163,2,186,138,166,153,227,253,191,254,48,171,0,40,228,137,127,105,21,1,191, +78,223,114,0,138,0,228,227,198,159,133,253,67,104,252,115,43,10,240,55,208,212,33,195,219,242,219,138,160,43,52,77,95,73,32,49,69,22,135,232,105,152,83,114,50,10,128,52,211,118,92,197,105,162,77,176,65,234,209,127,114,114,227,108,234,31,45,251,48,138, +210,187,27,98,107,94,64,239,63,109,34,192,153,182,229,0,108,27,140,252,139,231,143,217,254,57,136,8,138,180,19,18,145,231,77,217,218,212,210,133,32,240,22,246,252,73,21,57,161,208,165,233,179,45,14,33,167,78,116,78,9,0,139,83,224,107,166,21,159,174,196, +117,38,255,137,14,152,108,82,174,70,228,205,71,65,29,234,197,236,255,116,42,252,116,182,13,198,234,0,36,237,217,254,104,252,211,254,140,224,68,136,15,209,101,0,197,240,182,104,91,248,100,50,160,164,227,82,82,33,80,229,154,92,218,17,232,64,1,144,38,202, +58,2,227,253,149,206,110,85,78,61,252,79,147,255,26,188,237,80,237,54,222,179,65,75,68,32,250,206,83,56,241,47,151,69,128,11,103,7,160,241,79,119,182,63,26,255,244,63,32,172,160,196,215,130,28,91,105,252,153,192,9,48,177,120,174,174,100,64,58,38,152, +23,121,161,97,78,201,105,40,0,210,68,203,226,138,229,28,207,241,154,142,240,63,237,247,76,39,64,153,65,108,237,203,32,31,216,2,32,96,231,191,209,17,1,31,106,27,140,179,3,16,19,61,127,204,246,207,249,167,3,49,190,202,72,20,192,56,19,138,231,128,219,234, +103,115,98,82,118,50,99,10,237,9,112,138,221,103,21,115,229,232,229,140,0,112,6,108,150,186,233,197,39,233,25,251,75,51,59,253,182,16,116,135,204,73,254,139,188,249,87,154,129,130,247,222,168,241,161,182,193,105,154,29,128,213,1,133,103,252,205,246,252, +163,152,240,151,25,9,192,219,136,126,127,29,84,217,248,115,33,100,47,131,22,255,88,54,41,54,229,75,75,86,193,87,225,236,168,158,84,52,1,5,128,201,84,77,42,154,228,10,217,154,245,12,254,73,144,147,217,26,156,0,62,107,145,225,253,160,70,40,177,229,45,76, +254,203,136,8,72,87,117,64,8,171,3,10,200,248,59,210,52,216,39,138,198,63,67,208,146,192,62,72,68,158,53,101,107,180,36,80,211,147,101,206,174,49,128,134,57,165,57,83,13,144,51,2,160,97,46,57,168,58,207,9,29,247,75,215,118,76,81,249,239,60,1,90,60,130, +165,127,25,19,1,88,29,128,232,185,116,48,219,63,175,163,0,156,5,18,195,207,38,207,179,65,58,138,38,65,145,189,148,149,141,167,10,173,6,168,28,95,116,162,195,103,205,137,245,225,156,16,0,206,160,205,90,49,54,120,130,172,35,251,159,158,196,176,163,2,198, +4,198,25,127,134,196,135,33,250,222,115,152,252,151,233,155,29,171,3,144,84,61,127,14,179,253,243,251,161,96,37,198,119,19,72,241,119,140,219,27,209,3,109,193,137,250,90,3,203,26,184,139,237,173,85,147,67,227,81,0,152,68,121,87,96,130,59,108,111,209, +27,254,239,40,154,12,118,193,105,120,63,226,235,95,3,229,224,14,76,254,203,10,17,224,194,217,1,200,209,25,127,44,245,43,16,20,72,12,61,109,202,150,38,132,103,179,170,0,125,209,8,128,234,137,161,147,80,0,152,68,245,164,208,9,122,35,238,2,39,194,184,208, +12,115,110,248,119,158,196,251,60,107,208,62,90,29,208,143,179,3,16,52,254,5,237,20,112,54,144,98,111,128,166,244,24,222,22,157,23,19,118,148,235,91,6,136,171,80,49,46,120,172,197,46,100,125,147,152,172,23,0,22,135,40,84,79,13,31,75,15,106,202,39,66, +147,160,196,81,1,13,62,227,189,25,148,222,61,144,216,242,38,112,34,134,255,179,75,4,184,147,34,128,37,6,238,51,239,97,50,82,29,128,203,1,104,252,63,78,20,75,253,178,20,1,84,249,0,36,162,175,24,222,146,77,112,64,107,96,2,235,30,155,178,173,144,84,240, +87,187,218,203,58,3,237,40,0,12,82,49,54,216,230,175,116,117,208,131,154,42,146,146,128,214,224,68,176,10,198,51,246,99,107,158,199,206,127,89,45,2,232,114,192,181,166,87,7,124,52,49,16,31,246,185,100,252,49,219,191,16,195,0,2,155,18,104,6,99,195,51, +64,224,245,149,244,11,34,47,212,207,41,93,154,237,135,43,235,5,64,213,164,162,69,188,160,111,49,70,36,39,111,108,104,166,41,70,38,186,250,89,122,86,241,6,203,90,17,224,76,75,179,32,238,35,137,129,17,60,212,57,228,249,11,56,213,175,240,236,63,77,6,140, +191,71,188,240,237,134,183,69,91,3,211,101,0,89,213,87,13,80,222,21,56,150,207,242,209,0,89,45,0,232,232,223,202,241,69,75,21,41,245,236,127,26,254,15,179,240,127,155,225,253,144,246,110,4,105,231,90,224,68,43,222,97,217,124,243,167,49,49,16,171,3,114, +203,248,139,88,234,87,160,240,108,58,160,20,125,217,240,150,232,50,0,173,30,147,53,29,213,0,146,10,69,117,238,137,225,102,111,21,10,0,157,248,43,157,101,193,90,247,100,61,225,127,153,60,12,104,71,39,122,18,141,18,95,243,34,104,241,33,236,254,87,224,34, +192,133,34,32,235,141,191,163,11,19,254,48,10,32,130,20,161,121,0,154,225,109,209,209,241,156,142,115,78,219,213,91,156,162,179,122,114,104,46,10,0,157,84,77,10,205,180,185,45,30,29,109,153,217,73,235,44,154,98,194,131,69,129,216,218,23,1,4,244,254,115, +3,45,109,34,128,195,18,193,236,246,252,137,241,23,66,104,252,81,1,208,158,0,27,64,73,108,50,188,169,70,95,7,4,236,197,108,150,76,202,151,165,172,66,213,132,208,98,46,139,155,198,101,183,0,24,95,180,88,83,83,87,113,201,222,255,97,104,244,119,26,222,7, +105,207,122,242,218,128,225,255,156,20,1,135,115,2,176,58,32,239,141,63,13,251,135,48,219,31,73,186,127,154,58,76,52,186,241,106,0,151,197,11,13,190,118,93,77,129,228,132,10,225,22,239,44,103,145,205,153,173,71,42,107,5,128,221,107,181,148,118,6,102, +209,100,138,148,141,54,57,89,245,222,86,112,91,124,134,247,35,254,254,43,160,37,162,216,250,55,39,69,192,72,137,32,171,14,48,79,4,252,107,117,0,146,113,227,143,217,254,200,135,37,0,109,13,28,93,1,102,44,3,180,7,39,147,205,164,30,134,166,206,171,195,111, +173,14,55,123,187,81,0,164,72,81,131,167,205,85,100,109,212,211,253,143,142,114,164,173,28,141,219,16,21,98,239,255,3,64,196,206,127,185,29,9,48,191,68,144,195,182,193,121,109,252,49,225,47,215,21,128,21,148,196,70,80,164,173,134,55,213,226,239,6,151, +213,11,42,164,40,2,52,90,149,200,67,221,140,226,249,217,122,152,178,86,0,212,78,13,205,17,44,228,232,105,169,30,115,21,156,22,55,52,251,141,139,46,121,255,150,100,248,31,91,255,230,246,179,32,93,179,3,92,56,64,40,239,140,63,203,246,127,8,141,127,238, +223,245,35,203,0,43,12,111,41,228,40,131,10,87,61,75,44,79,253,82,85,161,180,221,63,143,23,179,243,90,202,74,1,64,147,237,203,199,6,231,41,178,158,236,127,25,202,156,53,80,226,50,94,125,17,223,176,2,180,24,102,255,231,135,8,112,165,109,128,208,225,234, +0,76,12,204,3,227,207,214,252,157,104,252,243,225,158,231,4,83,4,0,77,40,167,21,101,138,142,126,0,106,178,43,224,120,111,137,163,40,27,143,81,86,90,54,87,145,221,21,172,117,79,84,117,150,255,209,228,63,222,132,143,22,219,240,10,118,254,203,27,210,95, +29,128,179,3,70,201,248,99,169,31,114,84,55,38,93,6,216,0,170,98,60,255,135,246,3,16,121,11,164,154,83,160,170,26,216,61,150,64,73,155,127,98,54,30,162,172,20,0,197,45,222,46,71,192,86,169,103,253,159,78,112,106,13,24,159,196,168,14,236,7,105,231,58, +204,254,207,75,17,144,190,234,0,30,151,3,210,111,252,49,219,31,57,74,243,166,42,125,32,199,86,26,222,82,181,167,9,2,182,176,174,114,64,26,65,40,31,27,156,141,2,224,40,33,7,107,58,207,167,126,35,210,242,63,159,53,8,53,158,102,195,251,16,223,186,18,212, +161,30,140,0,228,165,8,248,208,236,128,126,115,171,3,176,89,80,250,140,191,35,13,165,126,152,237,159,255,72,209,55,12,111,195,33,186,153,93,145,116,228,1,208,78,182,165,237,254,153,217,216,22,56,235,4,0,173,182,43,235,12,204,212,53,252,71,147,160,210, +93,15,94,34,2,140,146,216,104,78,9,9,146,205,145,0,34,2,126,125,173,233,203,1,88,29,96,230,169,250,80,147,31,204,246,71,82,189,31,249,228,108,0,77,51,126,47,54,5,186,200,118,82,183,75,138,172,65,160,218,213,233,41,115,134,80,0,124,6,174,34,187,35,88, +235,30,175,103,253,95,85,21,168,247,25,159,192,168,201,113,136,111,91,137,221,255,242,94,4,96,117,64,214,123,254,92,122,154,252,96,182,127,161,64,71,4,239,99,185,0,70,105,244,117,130,77,176,147,39,71,106,142,33,237,7,96,243,88,2,165,109,190,172,235,7, +144,117,2,192,95,237,106,177,123,45,149,122,218,255,210,233,127,180,117,163,81,228,125,155,65,233,217,9,28,78,255,203,127,15,33,93,34,192,141,34,192,176,241,199,108,127,196,248,29,78,188,246,4,200,177,119,12,111,169,220,89,3,65,123,9,168,154,172,103, +55,104,100,123,42,10,128,207,58,200,221,129,137,188,149,231,83,85,89,116,253,159,134,254,171,220,141,134,247,33,177,229,109,208,226,216,253,175,112,68,128,43,45,163,132,89,137,32,206,14,200,82,227,143,158,127,225,220,224,2,72,38,36,2,90,137,247,95,229, +110,208,53,30,88,149,53,218,220,14,5,192,103,17,110,242,77,213,145,104,201,198,255,150,187,106,193,99,245,27,222,135,248,230,183,200,145,193,218,255,194,225,195,109,131,175,51,53,49,240,112,199,64,172,14,64,227,143,100,200,254,115,22,80,164,205,160,41, +135,12,111,139,206,5,80,117,132,167,217,120,224,122,79,151,51,104,115,100,211,177,201,42,43,103,177,139,92,168,201,51,94,79,2,160,162,42,80,235,29,99,220,20,196,134,216,0,32,14,215,255,11,87,4,252,218,236,234,0,28,37,156,138,241,119,164,171,189,47,26, +255,2,69,0,85,233,5,57,177,209,240,150,106,189,173,96,101,182,33,245,126,0,14,175,165,50,80,237,106,66,1,240,41,120,203,29,101,158,98,123,147,166,163,254,95,224,4,54,0,200,40,210,222,141,172,7,0,8,88,254,87,152,34,32,141,213,1,152,19,240,111,14,61,102, +251,35,233,188,190,20,144,227,171,12,111,166,204,85,3,94,107,81,234,253,0,136,73,19,108,60,95,222,21,28,139,2,224,83,40,170,247,180,91,156,162,59,213,17,192,52,36,227,180,120,160,210,221,96,120,31,18,219,87,145,103,81,28,31,20,5,12,38,6,102,192,243,199, +108,127,36,173,55,181,192,202,1,141,226,18,61,80,230,172,214,151,7,160,2,132,154,188,89,213,17,48,171,4,64,184,217,59,78,207,61,170,104,50,132,236,165,172,83,147,25,2,0,123,255,35,40,2,70,209,248,167,189,189,47,102,251,23,252,253,204,242,0,182,129,166, +244,26,222,86,181,167,153,37,157,167,126,169,107,16,172,115,143,203,166,193,64,89,101,233,66,141,222,241,122,194,255,84,0,84,184,235,89,27,96,35,104,137,40,200,123,55,0,135,227,127,17,72,115,117,192,71,6,8,21,168,113,74,99,123,95,76,248,67,62,138,64, +140,127,31,75,6,52,74,173,183,133,216,154,212,77,167,42,171,224,45,177,183,184,195,14,127,182,28,149,172,17,0,22,135,40,4,170,93,109,84,37,165,108,184,53,13,106,60,198,115,43,228,131,219,65,233,223,79,142,10,214,255,35,236,202,250,88,117,128,217,29,3, +15,207,14,136,20,174,241,239,68,227,143,140,210,221,172,73,32,199,215,26,222,78,185,171,14,28,162,139,141,158,79,233,253,85,13,172,94,107,40,80,227,170,71,1,240,49,124,229,206,18,87,216,86,167,103,0,144,69,176,66,149,219,184,0,144,118,175,99,81,0,172, +255,71,254,85,4,208,196,64,115,69,64,193,206,14,192,108,127,36,19,16,175,93,78,188,111,120,51,69,246,18,240,219,66,186,6,3,9,2,199,133,155,189,29,217,114,72,178,71,0,84,58,27,89,2,160,150,122,3,32,183,197,7,197,206,74,227,2,96,231,90,188,73,144,79,17, +1,174,15,68,0,86,7,24,56,148,152,237,143,100,200,254,131,8,138,180,149,214,122,27,218,142,133,183,66,169,179,26,20,29,137,128,212,190,249,43,93,89,211,18,56,107,4,64,176,222,221,206,235,240,188,169,10,11,218,74,192,99,49,186,172,162,177,250,127,12,255, +35,159,46,2,48,49,208,176,231,159,174,108,255,30,204,246,71,62,75,1,136,160,202,7,64,145,247,24,222,20,29,58,167,171,33,144,172,65,168,193,211,158,45,147,1,179,70,0,20,55,123,59,85,85,95,2,96,153,171,90,87,82,198,71,78,204,96,15,40,61,187,176,255,63, +242,239,159,33,163,32,2,242,178,109,112,186,179,253,7,48,219,31,249,236,24,128,166,69,64,73,24,79,4,76,38,157,235,75,4,244,148,58,26,109,30,139,13,5,192,225,157,16,121,240,150,58,199,168,74,234,138,138,134,84,104,82,134,81,104,2,160,58,220,135,45,128, +145,163,16,1,31,174,14,48,177,99,224,200,236,0,62,223,68,64,58,179,253,113,205,31,73,205,96,152,50,25,144,46,1,216,4,135,222,201,128,21,222,50,71,25,10,128,17,236,30,139,195,83,98,175,211,100,29,29,0,121,129,8,128,26,227,2,96,223,70,208,228,4,62,68,144, +163,185,141,63,36,2,174,53,183,58,32,223,102,7,28,78,248,75,87,169,31,174,249,35,41,221,96,66,50,15,192,32,65,91,49,120,172,129,148,251,1,208,20,55,209,46,216,189,229,206,172,168,4,200,10,1,224,173,112,148,217,188,150,178,84,59,0,210,50,12,187,224,132, +98,71,133,225,125,144,246,108,196,236,127,36,197,72,192,135,171,3,112,118,192,167,26,255,206,219,64,192,82,63,36,27,238,89,160,2,96,39,49,196,198,18,1,105,25,32,173,6,208,83,9,192,243,28,109,8,212,130,2,96,4,103,192,86,43,88,4,91,138,5,0,44,9,195,75, +84,24,45,201,48,44,0,14,108,33,71,3,251,255,35,122,34,1,233,153,29,224,202,229,196,192,116,103,251,163,241,71,116,70,0,52,181,7,52,249,128,225,77,81,199,83,85,83,23,0,212,209,45,170,243,160,0,56,76,81,189,167,81,79,86,36,157,0,24,176,21,179,181,24,67, +207,170,216,32,40,189,123,201,3,5,19,0,17,61,34,32,61,137,129,92,174,86,7,96,182,63,146,181,240,196,104,71,64,145,119,26,222,18,77,62,79,53,7,224,176,0,32,78,111,19,199,115,89,112,52,178,128,96,173,187,89,211,81,1,160,130,98,74,248,95,38,15,109,117,184, +23,35,0,136,126,99,141,213,1,31,24,255,195,29,254,48,219,31,201,74,205,174,176,185,0,198,35,0,149,108,10,109,202,142,43,109,9,92,225,168,177,56,50,63,114,54,43,4,128,43,100,111,72,181,1,16,59,143,228,223,148,152,208,0,72,57,180,19,59,0,34,38,136,128, +52,206,14,200,133,234,128,81,25,236,131,158,63,98,244,70,229,76,17,0,33,71,41,88,5,123,234,149,0,228,175,91,157,98,153,35,96,11,20,180,0,96,109,127,45,192,249,42,156,213,84,21,165,188,243,28,15,97,71,185,241,8,192,193,237,116,103,240,198,64,140,186,22, +31,21,1,38,38,6,102,125,117,0,14,246,65,114,6,1,84,121,183,225,173,248,172,69,224,178,120,82,175,4,160,165,128,110,209,239,10,217,202,51,125,36,50,27,1,208,232,51,131,115,139,54,190,44,213,165,20,170,186,44,188,13,130,246,18,227,2,224,192,118,244,254, +17,19,35,1,238,15,37,6,154,91,29,64,7,8,101,93,78,0,14,246,65,114,233,254,100,2,224,0,107,10,100,4,151,197,11,94,107,48,245,142,128,26,235,125,195,23,213,186,43,51,125,44,50,27,1,32,94,191,175,194,81,108,247,91,131,169,14,1,210,200,65,119,90,220,224, +183,21,25,222,15,165,119,23,174,255,35,105,136,4,172,79,246,9,232,51,121,128,80,54,37,6,166,115,205,31,179,253,145,180,40,0,158,120,225,253,160,201,61,6,133,4,7,1,91,56,229,8,0,251,183,196,225,180,121,44,181,5,31,1,160,107,33,60,207,165,220,22,81,37, +191,220,68,129,185,68,175,177,93,72,68,65,25,56,128,2,0,73,131,8,200,243,234,128,116,27,127,108,242,131,164,41,6,160,169,81,80,149,253,134,183,68,123,1,232,201,95,83,201,191,41,106,240,212,100,250,72,100,84,0,40,10,29,140,224,174,20,44,60,164,186,4,64, +235,47,233,26,140,72,30,64,134,158,97,195,189,236,197,113,40,0,144,52,60,106,142,68,2,242,108,128,208,168,100,251,163,241,71,210,36,0,52,25,20,217,248,253,88,100,47,213,85,10,72,255,137,205,37,86,23,180,0,160,203,238,54,183,69,215,58,8,141,0,208,240, +139,97,17,50,112,16,180,120,148,102,20,226,125,129,164,41,18,144,198,234,128,197,25,40,17,196,176,63,146,243,168,166,36,2,210,62,52,122,135,2,249,171,93,44,9,80,79,9,124,206,11,0,26,53,161,205,127,138,26,61,149,122,166,0,210,176,75,192,94,108,92,0,244, +239,3,77,193,25,0,72,186,69,128,59,61,213,1,174,207,168,14,208,49,178,244,35,110,202,199,189,27,244,252,145,188,8,2,240,196,8,27,95,2,240,219,67,44,10,173,165,158,197,78,19,1,75,129,214,193,21,106,4,96,228,64,232,238,228,19,48,161,5,48,243,200,84,21, +111,8,100,148,68,64,122,170,3,92,135,171,3,18,31,202,108,150,19,192,123,74,245,63,35,29,149,44,99,26,14,39,57,169,137,35,189,253,177,206,31,201,109,136,0,80,140,183,3,246,90,252,96,163,189,0,82,204,3,208,20,218,13,208,26,180,20,129,71,149,11,50,2,64, +199,34,90,193,95,229,42,81,83,238,1,160,129,192,139,44,7,192,120,4,96,63,150,0,34,163,40,2,210,83,29,192,141,84,7,136,101,29,201,72,0,121,137,85,19,193,218,113,162,238,109,10,254,54,176,212,158,149,20,0,242,48,112,86,31,246,246,71,242,35,0,64,132,173, +166,244,209,44,112,67,219,161,125,0,232,96,32,58,152,46,85,251,39,216,120,15,103,129,160,158,36,66,179,200,92,243,123,141,206,101,224,4,209,46,132,116,68,79,64,224,68,86,131,105,120,55,162,3,248,208,65,70,89,4,124,80,29,16,188,224,251,196,208,150,154, +178,101,90,29,224,58,246,235,32,239,89,197,68,173,88,218,65,110,20,35,17,70,14,108,77,151,131,165,100,30,168,177,125,32,248,218,200,190,135,76,61,26,81,204,246,71,50,36,1,52,45,78,94,18,185,85,172,186,183,66,167,209,58,69,15,244,196,14,64,170,227,108, +104,245,27,141,2,104,25,12,64,103,46,2,160,106,96,247,138,46,139,67,8,164,60,6,152,40,38,171,96,99,101,128,8,146,147,143,159,52,149,8,82,131,47,86,142,7,177,98,156,65,227,255,161,135,132,183,5,196,226,217,166,27,127,26,246,143,162,241,71,114,24,158,19, +192,101,241,233,106,7,44,88,5,26,1,47,214,148,2,92,2,160,141,127,220,97,187,207,225,183,186,83,22,0,228,151,93,112,128,67,116,26,127,16,59,168,136,192,28,0,36,19,34,32,61,213,1,185,0,174,249,35,153,69,35,158,191,205,144,247,127,24,15,17,0,122,154,1,81, +205,160,72,106,56,147,71,33,179,125,0,36,213,71,140,127,202,86,156,118,1,164,161,23,155,224,50,188,15,98,168,10,64,195,219,1,201,208,67,40,77,213,1,104,252,17,228,223,221,121,10,240,98,152,141,173,54,44,0,172,126,0,157,189,0,124,101,142,112,38,199,2, +103,116,9,192,87,238,244,11,34,207,167,126,220,52,112,90,60,134,155,0,81,44,21,173,228,26,176,3,170,0,36,179,34,192,252,234,128,172,52,254,152,240,135,100,197,109,167,128,96,29,99,202,166,220,116,9,64,143,253,39,255,200,87,225,12,101,242,54,200,168,0, +240,148,56,130,188,133,75,249,224,209,225,11,14,209,109,202,113,179,150,183,128,24,174,1,144,37,188,41,144,12,138,128,244,84,7,100,157,241,199,53,127,36,27,238,55,222,10,22,199,20,147,4,128,254,92,52,69,82,139,50,233,123,102,122,9,32,160,47,114,162,130, +139,8,0,83,16,173,224,24,187,24,52,41,142,247,5,146,97,17,144,166,196,192,44,0,179,253,145,172,185,211,180,56,121,236,183,129,104,51,39,2,224,20,189,186,186,1,82,39,216,225,183,6,5,107,230,204,112,70,5,128,213,37,250,117,31,116,139,199,180,253,112,78, +58,9,132,162,10,162,72,18,120,119,32,25,37,31,69,0,245,252,49,219,31,201,22,161,77,95,118,223,25,228,171,57,243,95,92,22,247,136,0,72,205,155,165,137,240,222,114,151,215,234,204,220,28,154,140,9,0,154,248,16,106,242,250,245,212,64,210,181,19,167,224, +54,239,32,184,2,224,57,230,50,208,164,4,96,46,0,146,121,17,144,63,213,1,216,222,23,201,42,243,175,14,131,213,57,15,44,142,153,166,109,147,46,71,211,114,64,77,215,254,104,30,173,80,151,0,8,58,23,79,136,130,51,161,4,240,35,81,128,137,39,130,115,242,201, +160,70,7,241,46,65,50,238,165,164,107,138,224,104,126,134,40,102,251,35,217,35,171,137,227,24,5,193,82,7,174,224,85,166,110,153,182,2,166,141,233,244,56,143,196,248,187,105,83,192,66,21,0,250,226,248,28,199,218,47,154,141,111,217,151,193,209,185,16,212, +200,0,128,134,145,0,36,11,34,1,187,214,65,239,131,183,130,150,136,230,212,190,71,251,239,39,175,223,161,241,71,178,198,243,23,196,82,112,23,255,39,112,66,145,169,219,166,77,233,216,64,160,84,59,218,146,191,111,113,8,46,171,83,176,102,234,184,100,78,0, +104,201,240,135,190,157,230,137,234,114,154,190,75,156,197,6,129,179,190,14,174,105,167,177,161,42,154,140,57,1,72,134,35,1,118,55,36,182,188,5,137,109,239,228,208,110,199,32,49,244,4,209,233,14,52,254,72,134,81,137,157,25,4,209,214,66,140,255,221,44, +2,96,54,22,142,8,0,78,76,189,27,160,162,129,171,200,106,245,20,59,108,5,39,0,44,78,1,188,101,14,151,170,163,13,34,71,123,148,11,233,57,102,84,4,248,79,253,26,4,206,184,19,196,64,25,121,150,13,38,43,4,52,236,22,136,100,44,22,192,198,151,230,142,108,249, +215,239,16,100,116,189,75,137,60,178,135,128,142,187,113,248,206,5,79,201,61,196,248,215,164,199,150,17,91,36,232,236,73,67,103,226,105,154,102,207,212,145,202,216,48,32,209,198,131,51,96,179,15,12,105,41,202,16,218,194,145,7,171,144,222,99,230,24,127, +44,216,90,103,66,244,237,199,33,250,206,147,32,237,221,4,90,124,56,25,183,97,211,3,209,179,65,70,225,81,38,199,193,222,50,29,172,53,221,185,35,87,56,59,216,220,75,33,210,251,19,250,1,112,218,38,50,74,70,95,27,185,254,172,192,139,101,196,201,156,70,174, +195,99,211,226,245,127,196,150,113,22,22,1,208,41,120,173,35,175,194,18,0,90,114,9,192,161,239,1,195,129,133,79,127,212,132,119,120,193,53,253,76,112,77,59,3,228,125,155,32,177,123,29,200,251,183,130,58,116,136,60,215,254,63,123,231,1,47,71,89,245,255, +179,51,179,237,246,126,211,147,155,222,72,2,161,6,233,72,145,162,2,214,191,149,87,254,250,250,250,170,20,11,254,241,125,21,21,21,20,17,20,72,40,210,91,66,73,40,161,164,87,82,110,239,189,238,189,119,123,239,51,187,255,231,121,54,137,160,160,185,179,51, +91,207,55,159,225,134,36,187,59,59,237,252,206,121,78,17,81,3,32,234,18,139,129,80,49,19,10,63,241,229,99,221,42,179,7,67,233,87,217,90,171,24,106,252,123,20,3,65,212,50,254,196,139,212,240,37,204,240,11,186,69,192,147,45,177,4,165,62,188,134,7,45,175, +99,213,105,50,46,115,33,47,5,192,241,99,39,231,84,211,37,0,65,163,77,221,94,178,209,170,11,217,134,32,200,73,221,52,196,251,186,138,109,8,146,211,87,58,177,15,84,4,36,97,131,243,48,9,48,241,217,178,82,249,105,205,165,192,9,120,229,33,8,130,32,105,37, +97,143,244,172,67,173,28,39,56,30,139,167,205,152,165,59,179,72,70,92,48,206,170,0,18,107,46,8,130,32,8,146,165,226,129,215,128,177,52,125,189,128,185,108,61,112,113,204,48,70,16,4,65,210,238,197,106,64,199,233,166,94,6,24,143,131,96,224,161,108,78,81, +81,186,246,61,157,2,128,186,240,83,95,2,160,69,3,26,14,120,92,2,64,16,4,65,50,65,4,208,50,93,89,189,128,19,67,129,242,81,0,208,240,191,172,36,64,186,230,194,167,50,9,16,65,16,4,65,114,140,116,47,1,196,211,242,82,4,65,16,4,65,1,128,32,8,130,32,8,10,0, +4,65,16,4,65,80,0,100,34,52,219,50,142,189,249,17,4,65,16,36,43,5,128,72,182,192,84,95,68,219,138,75,49,17,162,49,156,212,135,32,8,130,100,49,26,214,11,32,109,125,178,211,41,0,104,22,159,132,87,0,130,32,8,146,173,208,136,116,68,10,179,150,192,83,118, +102,163,49,240,89,67,193,124,20,0,199,244,143,188,3,142,141,128,16,4,65,144,76,17,1,114,204,159,20,142,129,103,60,16,206,215,8,128,95,214,65,139,139,16,149,162,120,213,33,8,130,32,233,53,254,241,56,196,226,146,60,127,86,3,113,13,159,190,73,153,233,108, +167,151,212,18,128,20,79,253,234,129,100,182,129,52,97,134,152,211,13,241,96,16,175,124,68,237,39,11,8,179,103,130,118,213,178,172,220,125,79,32,2,102,103,128,60,28,227,56,12,24,81,213,144,240,28,7,6,29,15,69,6,45,20,23,232,200,255,167,238,138,163,198, +95,140,69,88,75,96,25,80,79,54,148,127,2,64,195,198,40,6,101,188,140,28,240,24,68,98,169,49,192,226,192,8,132,182,237,133,240,251,13,32,142,154,32,230,245,147,83,134,209,7,36,53,2,0,200,131,173,232,107,55,64,241,247,255,35,171,118,125,216,236,133,109, +77,228,222,137,72,104,252,145,212,152,20,141,6,116,2,7,133,70,45,76,47,47,132,5,51,74,97,86,149,250,109,246,99,228,151,24,139,78,57,7,224,184,95,9,137,132,248,252,18,0,113,49,14,209,144,20,158,250,49,211,176,7,163,218,85,0,212,211,247,61,250,60,4,223, +219,3,113,143,15,200,149,5,26,65,75,54,30,64,139,115,8,144,20,33,73,224,123,246,85,48,92,118,1,104,151,46,204,138,93,142,197,226,112,184,103,18,194,196,248,211,7,50,130,164,236,118,33,215,158,203,23,6,187,39,4,29,163,14,152,81,81,8,107,23,214,192,172, +234,34,21,63,83,100,2,64,38,212,144,165,45,7,32,109,150,44,236,19,193,49,236,11,112,117,220,148,23,2,168,226,138,72,234,69,77,168,199,239,249,195,195,32,77,90,65,83,104,4,77,113,33,222,89,72,122,224,137,224,12,133,137,32,181,100,141,0,16,165,24,4,194, +98,74,195,176,8,146,136,2,144,91,134,252,231,248,181,103,178,251,96,194,225,135,85,117,85,112,246,178,105,192,169,80,113,71,157,81,49,46,130,156,28,0,13,167,9,211,45,93,199,43,221,242,220,39,43,122,64,4,64,72,82,103,9,192,255,236,43,224,188,253,183,32, +57,221,9,195,207,161,7,131,164,143,120,56,2,124,117,37,232,86,44,206,154,125,214,106,121,168,45,43,128,168,132,205,186,144,52,95,139,60,199,140,126,67,159,5,222,173,31,97,226,84,121,1,16,78,44,1,76,81,0,16,195,15,33,79,52,18,116,69,210,150,3,144,110, +235,230,145,245,80,140,199,33,44,6,20,223,153,192,150,119,192,243,199,13,160,209,10,160,209,225,180,65,36,205,198,63,74,30,42,122,29,148,222,241,67,224,106,170,178,199,11,35,219,39,86,204,128,26,42,2,68,20,1,72,250,163,2,122,34,74,251,198,93,176,179, +121,140,165,214,40,9,141,70,211,101,128,169,6,23,232,4,225,16,49,254,1,71,56,109,93,237,210,42,0,56,94,227,145,121,74,33,40,249,21,221,151,104,103,47,120,239,121,152,60,112,181,137,176,43,130,164,19,106,252,181,90,40,191,235,167,160,63,239,204,172,219, +253,34,163,22,62,117,198,60,168,42,53,160,8,64,50,2,42,2,186,199,156,208,216,111,85,244,125,195,82,24,196,120,20,100,46,1,120,201,150,182,36,192,244,9,0,162,194,156,35,126,183,220,37,153,128,168,160,0,16,37,240,222,187,1,98,129,32,128,128,9,126,72,250, +141,63,156,48,254,103,101,237,215,72,136,128,58,34,2,140,40,2,144,140,64,43,240,208,208,107,6,135,87,185,168,123,136,56,163,180,44,93,142,41,99,2,64,147,190,174,118,105,19,0,52,140,239,183,132,220,178,122,39,144,35,22,136,122,149,59,129,59,247,67,184, +190,5,52,5,70,188,67,144,12,242,252,207,202,250,175,243,247,72,128,17,115,2,144,180,67,115,3,195,68,140,54,244,41,23,5,8,136,190,99,195,233,166,158,3,16,116,134,189,98,36,125,247,69,122,151,0,180,156,67,206,235,104,178,5,61,232,10,41,17,8,188,178,21, +147,253,144,140,241,252,203,114,196,248,255,147,8,40,193,72,0,146,1,81,0,158,131,97,139,135,53,170,82,2,191,232,133,152,140,158,118,28,175,1,207,68,192,25,13,164,111,36,78,218,172,30,245,226,195,222,168,51,30,139,203,120,45,167,152,0,144,70,199,33,218, +209,195,146,173,16,36,221,198,191,60,199,140,255,71,70,2,80,4,32,105,132,46,59,135,194,34,17,1,202,68,145,253,17,183,236,196,66,34,2,236,233,236,148,149,62,1,64,212,143,125,208,227,20,35,177,248,84,243,0,56,22,1,240,42,210,14,56,210,218,5,49,175,15,35, +0,72,218,136,231,184,241,71,17,128,100,158,8,208,192,132,93,25,39,210,23,245,200,126,173,20,141,217,210,121,28,210,92,5,192,121,104,32,64,78,4,32,40,250,33,162,64,47,0,113,104,4,20,175,11,65,144,41,120,254,154,60,48,254,255,44,2,176,58,0,73,163,237,225, +52,224,14,68,88,46,90,178,120,163,46,89,109,128,105,14,128,185,203,99,139,75,233,179,63,233,139,0,112,108,9,192,21,9,74,126,205,20,59,134,209,28,128,48,49,254,74,84,2,196,236,46,244,254,145,180,25,127,200,35,227,255,97,17,128,213,1,72,26,35,0,100,139, +68,37,69,18,83,189,17,34,0,228,152,210,132,217,179,228,101,4,128,38,64,120,205,33,111,208,21,117,77,89,0,104,184,99,2,32,249,16,78,92,20,241,110,64,114,202,248,139,225,40,217,148,187,174,105,154,142,39,172,236,125,130,213,1,72,46,64,35,8,190,168,27,56, +205,212,77,105,140,136,95,191,61,108,213,164,209,255,76,107,209,187,134,215,68,136,16,160,107,32,11,166,42,156,162,49,145,40,47,103,242,66,196,104,196,37,0,36,103,140,127,203,198,195,208,183,179,147,37,58,45,184,112,25,156,114,253,25,160,73,162,39,255, +246,126,59,220,187,119,16,108,129,8,172,153,94,2,191,252,228,34,152,86,164,87,84,4,188,117,100,8,108,238,32,104,113,112,16,146,74,39,148,220,36,154,36,103,3,68,98,33,86,5,48,85,1,64,63,86,138,198,36,247,88,192,78,243,225,242,46,2,64,31,74,17,111,20,220, +99,126,171,70,152,234,1,208,128,20,23,193,29,177,39,127,0,170,42,80,0,32,105,48,254,183,43,110,252,143,252,109,15,52,60,115,0,2,54,47,248,173,94,168,127,106,31,244,19,49,32,151,17,87,8,126,248,122,39,52,79,122,193,30,136,194,150,78,11,124,125,99,11,140, +123,148,155,93,130,37,130,72,58,160,81,45,189,78,96,37,129,201,224,143,122,89,62,154,70,70,42,127,60,30,247,145,87,57,210,121,28,210,42,185,165,72,12,162,1,113,92,142,10,163,161,23,103,56,249,4,74,126,90,53,128,6,167,150,33,234,243,225,108,127,101,219, +251,82,227,223,190,185,1,116,133,122,224,180,252,137,109,162,117,84,246,123,54,78,120,192,17,140,64,145,142,7,129,8,246,50,131,0,237,102,31,124,115,19,17,1,94,133,69,192,153,243,160,18,115,2,144,84,221,139,228,87,161,33,249,0,56,173,0,8,75,1,182,44,61, +37,195,43,112,224,183,69,92,17,43,184,120,109,250,204,112,26,251,0,80,21,22,7,247,120,208,36,43,131,146,188,198,25,74,62,127,130,9,0,173,0,128,65,0,68,101,207,95,173,108,255,19,198,191,64,247,225,102,100,52,196,153,68,145,177,72,220,164,15,142,79,165, +183,8,21,3,237,22,34,2,88,36,64,185,118,170,84,4,92,133,213,1,72,170,4,0,177,61,244,154,75,22,26,133,142,178,73,128,50,246,33,22,55,199,99,16,74,231,113,72,107,4,128,118,79,244,219,66,163,26,89,9,148,156,34,17,0,174,186,10,52,6,67,98,103,16,68,37,227, +15,170,25,255,189,208,190,165,145,24,127,253,71,71,178,146,8,110,125,220,75,139,143,139,128,151,91,85,88,14,192,234,0,36,37,46,40,148,24,147,111,254,230,12,91,217,36,192,169,222,104,52,2,224,26,241,79,178,61,225,242,48,7,32,241,197,1,2,206,200,104,76, +70,29,36,77,186,112,19,1,16,135,228,30,20,92,69,25,112,37,197,137,69,33,4,201,42,227,191,7,58,182,212,131,206,168,131,84,118,19,139,31,19,1,29,116,57,224,101,117,114,2,42,177,58,0,81,211,246,144,251,165,184,32,121,1,96,15,77,202,86,215,209,160,56,146, +238,227,144,222,70,64,180,25,131,41,48,17,151,98,83,30,165,68,5,128,39,234,2,127,52,185,82,64,174,184,16,248,170,114,136,75,18,222,21,72,118,121,254,155,27,64,107,212,67,58,90,137,158,88,14,80,73,4,92,133,137,129,136,138,215,46,77,254,43,86,32,2,96,15, +78,202,170,36,160,182,207,214,231,25,206,107,1,192,166,33,185,162,230,72,64,154,242,88,96,142,205,3,240,130,55,154,100,41,32,249,96,126,122,45,0,10,0,68,201,135,140,202,158,127,59,245,252,11,210,99,252,255,49,18,208,174,98,36,0,151,3,16,197,175,219,120, +28,116,90,94,145,36,64,71,216,2,188,134,151,245,218,136,95,204,115,1,192,107,32,64,51,33,253,162,121,234,221,0,57,136,72,97,112,40,145,8,56,107,58,46,1,32,138,26,127,213,19,254,140,233,53,254,31,41,2,212,168,14,56,3,171,3,16,165,5,0,16,227,175,5,189, +54,57,1,16,146,130,224,14,219,137,51,58,69,1,64,123,0,144,235,217,214,239,195,37,0,144,64,244,140,7,70,57,25,77,64,196,88,20,108,193,137,164,247,67,152,59,43,35,30,166,72,14,144,142,108,255,12,16,1,234,87,7,160,8,64,148,33,70,156,189,18,114,15,37,91, +253,237,137,56,192,39,122,100,53,1,138,134,36,127,192,25,49,229,181,0,96,15,49,242,244,8,58,35,253,114,219,33,154,131,163,73,239,134,48,103,102,98,28,48,54,4,66,146,52,254,106,133,253,143,50,227,255,47,178,253,51,0,117,171,3,80,4,32,202,9,214,178,194, +228,187,89,58,66,102,8,139,129,41,155,209,99,77,240,38,189,230,160,53,191,5,192,49,236,131,222,62,78,198,64,30,26,122,177,4,146,23,81,252,244,26,208,176,74,0,124,184,32,153,103,252,19,165,126,153,231,249,127,212,131,245,131,213,1,38,172,14,64,50,16,122, +11,149,43,208,206,218,18,52,177,40,244,84,111,73,54,7,199,18,26,147,194,82,56,221,199,34,35,4,0,57,24,189,114,198,50,210,228,11,90,134,65,79,66,82,7,161,162,12,248,218,106,172,4,64,50,208,248,239,73,107,182,191,28,17,112,188,58,224,70,172,14,64,50,16, +129,231,160,76,1,1,48,225,31,145,213,63,142,230,190,5,29,145,62,41,154,254,107,56,35,4,128,115,216,55,40,137,177,41,91,95,26,1,112,71,28,224,73,182,18,128,227,216,50,0,136,40,0,144,12,51,254,172,201,143,46,171,114,84,254,185,58,64,217,156,0,92,14,64, +228,66,187,207,26,245,2,203,1,72,22,186,252,204,201,168,0,160,209,110,251,160,183,59,19,142,71,70,8,0,183,41,48,22,241,68,237,220,20,167,34,209,54,165,129,168,79,153,68,192,5,115,177,18,0,153,154,161,75,129,231,159,234,38,63,170,136,128,77,152,19,128, +100,136,0,136,209,6,64,180,2,128,79,234,125,162,177,8,235,1,32,167,4,144,205,177,25,241,161,0,56,78,200,29,117,251,109,225,145,169,143,69,212,64,52,30,129,201,64,242,213,20,218,69,117,0,60,143,119,8,114,210,158,127,190,101,251,203,17,1,39,170,3,54,97, +159,0,36,51,34,0,229,133,134,228,157,214,136,29,220,97,135,172,8,0,29,3,236,26,245,247,163,0,56,134,24,150,226,30,115,176,139,147,49,23,89,67,158,50,227,190,193,228,35,0,117,179,129,43,41,196,68,64,228,164,140,191,250,97,127,125,206,76,169,252,123,117, +0,77,12,84,97,57,160,196,8,17,20,1,200,73,66,69,99,178,152,3,99,16,148,124,83,46,1,164,54,46,236,137,90,220,166,224,72,38,28,11,46,83,78,138,99,200,215,206,201,152,205,204,113,2,140,7,146,111,168,68,147,0,89,34,32,230,1,32,105,52,254,29,91,178,55,236, +255,175,34,1,199,171,3,110,84,163,68,240,204,99,145,0,172,14,64,254,157,163,71,12,112,101,73,242,17,0,147,127,16,68,54,4,104,138,14,43,249,124,191,53,52,24,242,68,188,40,0,62,44,0,218,228,172,192,211,53,24,107,112,28,130,162,63,201,43,67,0,97,254,28, +0,81,196,187,4,73,143,231,191,185,49,107,178,253,229,136,128,34,21,19,3,177,58,0,249,119,176,4,64,157,160,72,5,128,201,55,32,111,6,0,113,114,61,230,96,135,20,201,140,235,52,99,4,128,173,215,219,45,6,197,232,212,135,2,241,224,9,59,192,26,26,79,122,31, +180,203,22,225,18,0,146,30,227,191,37,251,215,252,79,54,18,144,16,1,152,24,136,164,88,0,196,226,204,248,27,146,76,0,164,19,104,39,252,195,196,249,156,122,43,97,186,4,96,237,245,182,100,202,49,201,24,1,224,53,7,71,195,62,113,108,234,51,1,52,16,142,133, +136,34,75,62,15,128,9,0,157,22,59,2,34,31,190,225,213,14,251,103,80,111,255,212,138,0,117,102,7,160,8,64,62,46,2,160,196,250,191,43,108,7,91,72,94,5,0,221,7,107,143,7,5,192,63,18,116,134,67,158,137,96,23,47,99,38,0,53,216,35,222,158,164,247,65,152,63, +23,248,138,114,0,92,75,68,62,224,249,171,157,237,175,205,113,207,255,163,68,192,137,229,128,141,88,29,128,164,6,26,178,175,45,43,72,250,125,104,213,153,63,234,158,114,5,0,253,252,168,79,244,57,6,189,189,40,0,254,217,134,131,99,192,219,200,9,114,102,43, +11,48,234,235,75,254,96,148,151,130,48,111,22,196,49,15,0,57,102,252,213,15,251,231,78,182,255,84,249,96,117,0,54,11,66,212,22,157,180,246,191,74,129,4,192,17,98,191,229,36,0,82,219,230,179,134,6,60,147,193,73,20,0,31,129,165,199,211,32,231,89,40,104, +4,54,19,192,27,117,37,189,15,218,21,75,48,17,16,73,81,182,191,62,175,167,80,126,120,118,128,90,57,1,6,172,14,64,78,76,0,84,162,3,224,144,167,123,202,229,127,9,1,192,129,115,196,223,34,134,50,231,130,204,40,1,96,235,243,180,73,209,184,140,68,64,14,60, +17,39,75,204,72,22,221,234,229,216,16,8,141,63,102,251,167,80,4,20,169,218,54,184,14,171,3,16,38,0,170,75,141,178,50,247,63,244,104,136,69,192,228,31,0,158,155,122,2,32,93,49,176,245,122,142,102,210,113,201,44,1,208,235,25,242,89,67,35,156,156,142,128, +228,196,12,121,186,146,143,0,44,89,192,150,2,48,15,0,141,63,118,248,75,109,36,0,171,3,16,53,175,177,233,21,133,73,191,143,53,104,2,71,200,34,171,2,128,238,4,141,114,163,0,248,24,66,222,104,216,61,30,104,230,4,57,163,129,57,24,244,116,38,127,64,106,170, +64,168,155,147,200,252,70,242,235,33,145,18,227,143,158,255,191,21,1,216,54,24,81,242,218,138,39,214,255,107,203,147,79,0,28,242,244,64,72,10,176,234,179,41,185,168,156,6,66,158,168,131,56,185,157,153,116,108,184,76,59,89,147,173,206,195,114,18,1,121, +78,11,163,190,126,8,75,201,135,16,217,50,0,118,4,204,59,207,31,123,251,167,95,4,224,236,0,68,105,104,233,93,89,161,30,74,11,146,111,0,52,224,105,151,103,104,137,77,243,76,4,59,137,131,107,67,1,240,47,176,244,184,15,201,25,178,76,107,50,29,97,139,34,131, +129,116,107,87,17,79,16,243,0,242,201,248,99,182,127,230,80,252,1,17,96,82,169,58,0,103,7,228,15,82,44,206,188,255,100,111,191,88,92,98,9,128,114,194,255,180,188,221,222,239,61,28,207,176,137,179,25,39,0,172,221,158,214,176,55,234,144,213,16,72,12,194, +160,167,35,233,125,160,13,129,248,234,74,140,2,160,241,79,138,163,152,237,47,59,18,192,170,3,44,42,205,14,32,34,160,26,171,3,242,6,106,248,103,86,21,37,111,155,130,19,96,9,154,100,37,0,82,75,107,106,178,31,200,180,99,147,113,2,192,109,10,216,93,99,129, +86,94,198,50,128,70,195,65,175,171,53,249,131,82,90,12,218,165,139,48,15,32,231,141,191,168,162,231,191,23,218,48,219,63,41,17,80,164,106,78,0,86,7,228,197,117,68,46,164,2,189,22,166,41,177,254,239,237,130,128,232,37,70,115,106,102,147,86,30,136,33,41, +108,238,112,215,163,0,248,55,196,164,56,76,182,59,15,242,50,66,240,2,167,37,39,169,27,194,82,48,233,253,208,159,185,6,64,194,8,64,110,123,254,130,138,107,254,245,184,230,175,80,36,224,239,205,130,48,39,0,153,26,82,44,198,162,61,5,122,33,233,247,234,113, +53,201,139,64,208,9,128,246,112,55,113,110,71,50,237,248,112,153,120,210,198,155,156,123,227,50,18,1,88,30,64,208,204,234,52,147,69,119,250,42,208,20,21,210,133,31,188,139,114,205,176,164,160,206,31,179,253,21,22,1,102,20,1,136,12,135,50,30,135,153,149, +201,135,255,197,184,8,3,238,78,214,116,110,202,118,73,203,209,254,255,7,195,190,104,198,121,148,25,41,0,204,29,174,6,114,176,60,156,140,60,128,72,44,76,148,90,115,210,251,32,204,155,147,40,7,20,113,25,32,215,60,127,13,78,245,67,17,128,34,32,47,208,242, +60,204,170,78,94,0,76,250,135,143,173,255,107,167,110,100,121,13,140,55,59,118,103,226,241,201,72,1,224,158,8,76,186,70,3,205,156,118,234,187,71,163,0,93,206,166,228,119,130,231,64,127,198,106,128,8,10,128,92,50,254,170,103,251,227,154,191,250,34,96, +147,122,179,3,176,58,32,119,160,217,255,229,197,122,168,40,78,190,255,127,143,171,5,66,162,140,250,127,242,207,165,168,20,158,104,113,30,70,1,112,146,196,196,56,152,219,93,187,228,8,0,129,245,3,232,3,79,196,145,244,126,232,215,157,14,26,28,15,140,198, +255,36,140,63,102,251,167,78,4,116,88,212,235,24,136,213,1,185,37,0,102,85,21,1,167,64,249,109,151,179,65,118,255,127,151,41,208,97,235,247,14,102,226,49,226,50,245,228,153,154,29,187,228,24,94,58,162,209,19,118,64,159,187,61,233,125,160,131,129,248, +217,51,176,28,48,235,141,191,186,217,254,108,164,47,26,255,148,137,128,34,85,151,3,176,58,32,87,224,57,13,204,169,41,73,250,125,124,81,15,171,255,23,184,169,15,18,226,117,28,76,182,185,246,68,252,153,121,65,101,172,0,152,108,119,53,132,188,81,139,12, +209,5,177,120,12,58,28,71,146,222,7,141,65,15,186,211,87,67,60,18,193,187,41,171,61,127,181,179,253,209,248,167,35,18,160,110,78,128,1,69,64,150,123,255,37,133,58,168,45,51,38,253,94,180,251,159,51,108,101,203,203,83,182,33,26,13,76,180,56,183,103,234, +113,202,88,1,224,30,243,187,108,189,222,131,188,110,234,7,93,203,235,216,154,13,29,16,148,44,6,98,52,52,56,29,48,59,13,5,102,251,231,135,8,80,171,79,0,38,6,102,181,0,152,85,89,4,2,159,188,137,107,183,31,97,93,0,167,108,252,201,71,135,60,17,215,200,17, +219,33,20,0,83,189,193,201,29,62,214,96,223,198,203,24,12,68,75,53,44,193,49,24,246,246,36,189,31,186,83,87,2,63,115,90,34,140,140,100,149,231,143,189,253,243,68,4,96,159,0,228,31,13,27,241,188,235,166,37,31,254,23,227,81,232,118,53,129,86,78,248,95, +203,129,99,200,127,196,51,17,176,160,0,144,193,200,17,235,118,73,140,201,176,188,26,136,74,17,162,220,146,79,188,212,20,24,65,119,230,169,184,12,144,101,198,31,167,250,229,107,36,0,171,3,242,157,24,241,254,75,11,117,48,77,129,241,191,35,222,94,48,7,70, +101,181,255,165,205,236,70,143,218,222,165,73,237,40,0,100,96,237,246,116,187,77,254,118,94,86,53,128,0,29,206,163,44,31,32,89,140,151,156,75,206,38,143,213,0,104,252,19,217,254,104,252,51,82,4,168,94,29,128,34,32,43,16,137,0,152,83,83,12,90,5,194,255, +109,246,67,16,145,194,83,46,255,163,72,209,88,140,8,128,247,50,58,82,146,201,59,71,51,39,205,157,238,247,104,38,229,212,5,128,14,198,124,3,48,238,79,190,250,66,187,122,5,8,115,103,65,92,196,101,128,204,54,254,152,237,159,207,34,224,131,213,1,38,204,9, +200,91,104,246,255,252,105,165,201,71,18,136,243,216,102,63,194,156,201,41,27,86,65,3,126,107,168,139,216,175,246,76,62,86,92,166,159,204,129,61,150,183,228,60,113,169,98,163,141,27,218,28,10,44,3,24,244,96,56,239,76,128,48,46,3,100,182,231,47,168,104, +252,49,219,63,91,34,1,84,4,220,168,70,78,192,153,88,29,144,233,208,228,63,218,248,71,137,225,63,212,121,164,109,229,229,148,255,9,122,158,150,178,191,23,246,102,118,242,88,198,11,128,209,35,182,195,62,75,112,140,182,83,156,186,18,20,160,197,118,16,228, +204,21,248,71,12,151,158,71,132,128,1,151,1,50,214,248,171,24,246,199,53,255,172,20,1,44,39,192,171,160,8,48,96,36,32,27,4,0,77,254,155,106,27,249,143,162,197,126,80,86,247,191,227,23,98,223,174,201,55,50,253,120,101,188,0,8,56,195,126,91,159,119,155, +156,101,0,154,185,73,147,56,38,252,67,73,239,135,118,217,34,208,46,93,136,201,128,121,102,252,105,123,95,45,102,251,103,167,8,176,168,85,34,136,213,1,153,122,222,117,2,7,11,166,39,31,254,143,199,99,204,121,148,19,254,215,16,241,17,116,69,76,227,205,206, +247,81,0,40,192,224,126,203,102,186,166,50,229,19,65,126,5,69,63,52,89,247,43,112,164,56,22,5,192,114,192,204,50,254,170,151,250,225,154,127,86,139,128,14,172,14,200,31,239,95,138,65,109,121,161,34,189,255,71,125,253,196,121,236,147,25,254,231,192,220, +233,222,230,183,133,124,40,0,20,17,0,230,93,33,119,212,170,145,17,214,161,179,1,154,108,7,20,169,6,48,92,114,46,112,21,101,52,206,132,119,91,134,120,254,101,152,237,143,252,11,17,80,132,213,1,121,3,157,220,190,104,102,169,34,239,213,100,219,7,97,41,40, +43,252,79,157,213,254,61,147,175,102,195,49,203,10,1,224,54,5,92,147,237,174,93,130,78,222,112,160,49,95,31,81,115,201,55,5,226,167,213,128,254,172,211,32,30,14,227,221,150,86,227,175,118,182,127,35,102,251,231,152,8,80,179,99,96,37,46,7,100,128,241, +143,67,49,57,31,117,181,201,11,0,218,122,166,153,56,141,90,25,163,127,19,225,255,168,109,232,128,117,15,10,0,5,25,216,107,222,164,209,202,91,6,8,75,33,168,183,42,51,142,217,120,213,37,180,205,20,222,113,105,245,252,213,206,246,199,53,255,92,19,1,106, +118,12,188,10,103,7,164,29,81,138,195,188,218,18,48,232,146,111,219,62,232,233,32,78,227,32,240,50,4,0,13,255,79,182,185,182,121,38,2,78,20,0,10,50,184,223,242,158,220,101,0,58,27,128,42,186,72,44,249,27,95,127,198,26,16,22,214,97,50,96,58,30,228,152, +237,143,36,43,2,84,157,29,128,34,32,93,8,196,46,44,153,85,174,204,179,192,178,19,196,88,68,86,248,95,147,8,255,191,152,45,199,45,107,4,128,219,20,112,154,219,93,239,81,133,53,229,139,67,163,133,73,255,8,116,59,155,146,223,17,157,22,10,46,191,16,32,18, +197,187,46,197,198,95,131,217,254,136,82,145,0,28,32,148,67,222,63,77,254,43,128,26,5,106,255,105,210,120,171,253,125,208,241,250,169,27,127,34,66,66,174,168,121,232,128,117,7,10,0,21,232,223,99,126,145,19,228,237,114,140,252,58,108,222,166,200,126,24, +174,184,16,184,138,114,76,6,76,21,152,237,143,40,44,2,58,44,88,29,144,43,208,228,191,165,179,43,20,185,125,105,235,95,107,112,28,120,205,212,203,255,104,243,159,201,118,215,155,158,137,128,7,5,128,10,244,237,152,216,225,179,4,77,114,74,2,117,156,30,218, +29,71,193,21,182,37,189,31,44,25,144,24,162,120,40,132,119,95,10,140,63,246,246,71,148,22,1,88,29,144,43,198,63,49,248,71,137,214,191,148,67,230,237,242,26,255,64,98,252,111,215,214,177,23,178,233,248,101,149,0,240,219,195,62,83,163,99,11,85,90,83,254, +162,26,30,220,97,59,52,40,148,156,89,240,153,203,65,163,211,98,103,64,85,141,191,168,242,84,63,204,246,207,119,17,160,110,78,0,46,7,168,13,77,254,91,52,163,12,116,218,228,77,25,157,250,215,195,70,255,78,61,252,79,157,82,175,37,52,48,120,192,178,23,5, +128,138,244,108,159,120,142,217,92,25,15,109,218,26,248,176,121,135,34,61,1,116,171,151,131,110,205,74,136,227,124,0,21,61,127,65,213,193,62,152,237,143,34,64,205,234,0,236,24,168,242,249,35,39,208,160,229,97,233,108,101,146,255,14,19,239,223,31,245, +16,103,81,70,158,25,237,253,95,111,127,37,228,142,102,85,88,56,235,4,192,208,1,235,251,238,49,127,27,47,99,25,128,182,6,30,242,116,65,191,187,45,249,29,209,104,160,224,186,79,97,30,128,26,55,182,218,237,125,49,219,31,249,71,17,96,70,17,144,117,62,2,121, +246,206,173,45,129,210,66,125,210,239,69,43,196,142,88,118,201,242,254,233,115,36,38,197,165,246,55,70,159,203,182,99,152,117,2,32,26,20,197,193,125,150,231,229,44,3,208,181,157,104,44,2,7,38,222,86,100,95,12,23,156,13,194,162,58,114,245,96,20,64,73, +227,175,118,182,63,122,254,200,199,138,0,156,29,144,53,208,177,191,43,231,85,42,242,94,237,246,35,108,102,140,32,163,246,159,215,114,224,26,241,31,153,104,85,162,204,12,5,192,191,165,115,235,216,139,98,36,22,210,200,120,136,235,121,3,52,219,15,42,146, +12,8,122,29,20,124,246,10,136,99,73,160,66,234,14,179,253,145,244,138,0,172,14,200,14,104,233,223,172,170,34,69,198,254,82,246,79,188,37,251,181,212,25,237,126,111,252,153,104,80,202,186,132,176,172,20,0,214,94,111,191,185,211,189,157,215,201,75,6,116, +133,237,44,219,83,9,140,159,186,24,248,89,211,201,21,137,67,130,146,53,254,152,237,143,164,91,4,124,184,58,64,121,17,128,213,1,202,157,171,149,243,170,20,121,47,147,127,16,186,156,141,160,227,167,62,68,136,58,161,17,191,232,238,223,51,185,41,27,143,99, +86,10,128,24,185,129,186,182,154,30,231,101,102,126,210,30,207,7,39,223,97,203,1,73,31,192,146,98,40,184,230,50,136,135,112,62,128,124,227,127,60,219,255,118,204,246,71,50,66,4,36,114,2,90,177,58,32,19,189,255,88,156,120,254,133,48,167,166,88,33,239, +127,43,107,0,36,167,252,79,48,240,96,106,118,188,110,237,246,152,81,0,164,144,222,29,19,111,251,172,161,33,142,151,151,12,104,242,13,176,166,15,74,64,151,1,184,234,74,58,143,18,239,78,89,158,255,241,108,255,51,85,48,254,184,230,143,76,93,4,96,78,64,6, +159,31,34,0,78,153,87,169,200,72,22,95,212,13,71,205,59,101,117,254,99,17,0,158,131,206,55,199,30,203,214,99,153,181,2,32,224,8,7,6,246,154,159,211,26,229,15,127,216,109,122,93,153,131,72,140,127,193,85,151,64,60,136,141,129,166,116,35,171,26,246,223, +139,189,253,145,228,69,192,241,156,0,47,138,128,76,241,254,171,201,113,91,48,93,153,198,63,180,244,207,30,154,148,213,249,143,23,56,112,143,249,91,6,247,89,246,161,0,72,3,29,111,142,61,41,69,99,97,57,15,120,186,222,211,237,106,132,65,79,167,50,81,128, +47,92,11,92,101,57,70,1,166,224,249,171,155,237,95,15,90,52,254,136,82,34,96,163,58,145,0,28,37,60,53,98,212,251,175,171,2,78,1,247,159,14,252,217,55,254,22,8,156,78,214,235,5,3,7,61,219,198,31,11,251,162,89,155,0,150,213,2,96,178,205,217,51,209,234, +122,71,118,73,160,20,134,93,166,205,138,236,11,109,15,92,112,245,39,49,10,144,9,198,31,179,253,17,133,69,64,199,137,102,65,202,38,6,94,133,213,1,39,141,68,140,127,85,137,1,22,206,80,198,251,111,182,29,132,17,95,31,91,18,158,178,253,32,2,36,236,19,157, +109,175,141,190,144,205,199,52,171,5,64,76,138,67,235,107,35,15,201,153,13,144,136,2,24,161,209,186,15,44,193,49,101,162,0,95,196,40,192,201,24,127,26,246,47,195,108,127,36,139,68,0,171,14,56,150,24,104,194,234,128,52,9,128,24,172,158,95,13,2,207,41, +112,78,227,204,249,147,219,247,95,107,224,97,228,176,109,163,107,204,111,65,1,144,70,6,246,154,183,123,198,131,109,188,140,41,129,180,229,163,63,234,38,23,194,22,229,162,0,215,94,134,81,128,143,53,254,216,219,31,201,110,17,64,19,3,111,196,234,128,148, +67,215,254,107,202,10,96,209,204,50,69,222,175,199,217,4,61,174,102,217,201,127,177,88,92,106,223,50,250,112,182,31,215,172,23,0,97,111,52,218,179,109,124,61,45,199,144,3,109,12,116,104,114,27,184,34,118,69,246,167,240,203,159,5,190,166,138,118,170,192, +187,246,159,60,127,65,229,246,190,152,237,143,168,43,2,212,175,14,192,72,192,71,30,123,34,0,214,16,239,159,231,148,185,193,183,143,189,2,82,92,146,87,250,167,231,193,214,231,221,53,116,208,210,136,2,32,3,104,122,105,232,217,160,59,98,145,83,18,200,105, +4,112,133,173,176,87,169,138,128,170,10,40,184,225,42,140,2,124,240,230,197,222,254,72,174,137,128,227,57,1,94,21,34,1,37,24,9,248,144,247,47,197,96,90,69,33,44,80,104,237,127,200,219,5,173,246,247,153,243,39,235,25,47,104,160,245,213,225,251,99,82,246, +79,130,205,9,1,224,157,12,58,135,14,88,158,148,27,5,160,21,1,251,38,222,98,53,161,74,80,240,249,107,129,159,51,35,225,245,162,241,79,65,111,127,52,254,72,14,69,2,206,196,18,193,127,100,237,162,26,226,172,41,115,147,191,55,178,145,53,129,147,227,253,211, +230,115,158,137,96,123,215,86,211,214,92,56,174,92,174,92,32,13,207,13,60,44,134,99,65,57,223,136,214,128,218,130,147,176,119,252,77,101,14,106,105,49,20,125,245,122,28,21,140,217,254,72,62,136,0,21,167,8,230,123,117,0,157,248,71,59,254,205,85,168,235, +223,152,175,31,154,108,251,137,247,111,148,245,122,234,100,118,189,109,122,48,18,16,115,194,187,203,25,1,96,233,242,12,76,180,58,55,105,245,242,162,0,90,94,15,187,77,91,192,47,122,20,217,31,227,181,151,129,118,217,162,252,21,1,216,219,31,201,51,17,128, +213,1,202,67,215,252,79,95,92,171,216,251,189,55,186,17,194,98,64,150,247,79,67,255,62,75,104,188,121,227,208,179,185,114,124,115,70,0,196,227,113,104,120,118,224,62,208,104,100,101,223,9,26,1,172,65,19,236,49,189,161,200,254,104,244,122,40,250,214,151, +243,179,36,16,179,253,145,60,20,1,88,29,160,44,52,250,177,104,102,57,212,150,41,51,241,207,228,31,128,122,203,110,208,11,242,188,127,173,65,128,193,125,150,13,62,107,200,157,43,199,152,203,165,11,102,240,128,165,97,172,222,254,182,214,32,55,10,96,72, +68,1,162,202,68,1,12,23,173,3,253,186,211,33,30,8,230,207,3,17,179,253,145,124,142,4,168,84,29,80,153,103,137,129,49,114,80,141,228,152,158,190,168,70,177,247,124,123,248,5,8,73,212,251,159,186,217,163,141,127,34,1,209,213,244,210,224,250,92,58,206,57, +37,0,104,169,72,203,166,225,123,56,65,222,215,58,30,5,216,105,122,77,153,29,210,104,160,248,59,95,3,141,94,151,184,162,243,192,248,171,185,230,143,189,253,145,140,23,1,22,117,68,192,85,52,49,48,143,68,0,93,251,95,85,87,5,37,5,58,69,222,111,216,219,67, +188,255,93,178,51,255,117,70,129,14,160,251,155,181,215,51,137,2,32,131,25,58,104,217,109,31,240,238,226,117,242,190,154,238,88,20,192,29,113,40,178,63,218,21,139,193,120,237,229,16,15,4,114,252,142,85,63,219,31,123,251,35,249,44,2,242,165,58,128,182, +252,173,44,54,192,170,249,213,138,189,231,214,225,103,33,194,198,198,200,240,254,53,204,251,247,55,60,51,240,64,174,29,235,156,19,0,228,68,65,227,11,131,119,11,50,147,1,105,69,128,35,100,134,109,163,155,20,219,167,226,111,125,137,117,9,132,236,157,25, +241,111,141,191,154,83,253,48,219,31,201,86,17,96,194,234,128,41,19,139,199,225,204,197,181,160,19,148,49,79,189,174,22,104,178,202,207,252,167,19,103,199,26,237,207,90,251,60,131,40,0,178,128,206,183,198,222,182,247,123,247,9,50,163,0,244,66,217,59, +254,6,88,131,227,202,28,228,170,10,40,186,241,139,185,89,17,160,246,72,223,45,245,24,246,71,178,82,4,208,1,66,55,170,48,64,40,151,171,3,168,176,153,87,91,162,88,211,31,122,54,222,28,122,26,164,184,40,175,239,191,134,37,152,135,154,94,28,252,99,46,94, +171,57,41,0,162,33,41,222,248,194,224,93,188,94,222,215,227,52,60,120,35,46,216,58,252,156,98,251,84,240,217,43,65,183,246,148,220,234,16,168,122,182,127,3,102,251,35,89,43,2,138,78,148,8,170,83,29,144,107,163,132,137,227,15,122,45,15,103,45,157,166, +216,123,54,217,14,64,187,227,136,124,239,223,192,195,232,81,251,179,67,7,173,61,40,0,178,41,10,176,213,244,182,173,223,183,79,174,8,48,8,70,120,127,242,61,150,60,162,8,2,15,37,223,255,15,182,78,14,177,28,184,105,49,219,31,65,78,42,18,160,86,179,160,227, +163,132,115,69,4,68,164,24,172,174,171,98,235,255,74,32,198,163,204,251,215,104,100,154,57,13,243,6,67,71,159,238,191,59,87,175,209,156,21,0,209,160,24,111,122,97,240,46,65,199,203,60,247,28,68,98,33,120,125,240,9,197,246,73,187,106,89,98,78,128,63,187, +203,2,213,238,237,143,217,254,72,78,138,128,77,106,204,14,200,13,17,32,74,113,168,46,49,192,154,133,202,37,254,237,31,223,10,3,238,14,208,113,242,38,254,209,204,255,129,221,147,79,142,28,178,245,228,234,245,201,229,242,205,215,185,117,108,171,125,192, +187,83,110,66,32,13,27,53,219,14,66,139,253,160,114,55,237,77,95,6,161,110,54,196,35,217,153,15,16,199,108,127,4,145,39,2,104,98,224,70,245,218,6,103,179,8,160,183,251,186,229,211,65,203,43,99,146,104,47,151,183,135,159,39,239,39,175,140,144,214,253, +71,195,146,255,192,67,221,191,163,77,230,80,0,100,101,20,64,130,163,79,245,223,73,91,56,202,187,40,53,172,4,100,203,192,223,216,240,8,69,14,120,73,49,91,10,0,41,150,88,244,202,170,3,170,158,241,63,138,189,253,145,124,17,1,155,80,4,124,144,136,40,193, +210,57,21,48,187,186,88,177,247,124,103,228,5,176,4,199,64,208,104,101,189,94,91,32,64,239,246,137,13,182,126,239,80,46,95,151,92,174,223,120,29,111,140,237,26,171,183,191,65,75,57,228,64,195,71,131,158,78,216,99,218,162,216,62,233,47,90,7,198,79,93, +12,113,127,22,245,6,80,123,164,47,246,246,71,242,73,4,168,84,29,144,109,34,128,214,252,151,146,251,254,172,37,202,245,251,31,247,15,193,46,211,102,208,243,242,90,8,211,148,129,104,64,116,214,63,51,112,79,174,95,147,57,47,0,104,248,134,156,200,95,16,79, +94,118,17,62,109,14,180,117,248,121,112,134,173,138,237,23,141,2,240,51,167,101,199,200,96,149,179,253,59,176,183,63,146,111,34,64,181,234,128,121,89,85,29,64,107,254,105,232,223,168,23,20,123,207,205,3,143,65,64,244,1,39,51,249,79,87,192,186,254,221, +103,235,243,76,160,0,200,1,6,15,88,234,71,142,216,158,211,26,229,93,100,180,57,16,53,254,175,15,62,169,220,129,175,170,128,146,31,124,11,226,162,152,217,75,1,41,200,246,215,98,182,63,146,183,34,32,127,171,3,104,205,255,210,89,229,48,127,122,169,98,239, +73,71,253,54,88,247,129,65,102,217,31,199,107,192,111,11,143,29,92,223,115,127,62,92,139,121,33,0,232,140,128,189,15,116,222,41,69,99,126,154,220,33,7,131,80,0,7,38,222,134,30,87,139,98,251,101,248,228,249,96,188,242,146,140,93,10,192,108,127,4,73,129, +8,200,195,234,128,68,232,95,7,103,47,155,174,216,123,134,165,32,188,54,240,232,49,207,95,222,67,69,87,168,133,182,205,163,191,241,76,4,92,40,0,114,8,75,151,187,191,111,231,196,3,186,2,185,101,129,26,136,197,37,120,165,127,61,171,47,85,138,146,31,126, +11,132,217,51,32,30,201,172,165,0,204,246,71,144,20,137,0,21,171,3,50,117,57,128,6,61,207,93,57,3,10,20,12,253,191,59,242,34,140,120,251,64,203,201,203,252,167,243,99,236,131,222,214,250,231,6,30,207,151,107,144,203,167,27,110,255,131,93,247,4,156,145, +113,26,230,145,165,14,121,3,244,186,90,97,215,216,107,202,157,128,202,114,40,249,209,127,38,154,3,101,202,82,64,74,178,253,49,236,143,32,255,156,24,152,251,203,1,225,168,4,43,230,86,64,93,109,137,98,239,57,238,31,132,119,71,55,202,14,253,83,104,215,191, +134,103,7,110,15,185,35,145,124,185,254,242,74,0,120,38,130,142,230,77,195,191,20,100,86,4,36,68,128,30,222,28,122,70,177,57,1,20,106,100,11,191,112,45,196,125,25,176,20,144,178,108,127,180,254,8,242,33,17,112,44,39,192,148,195,213,1,172,225,15,217,151, +179,151,77,83,244,8,110,234,123,24,130,162,159,181,113,151,131,64,140,255,120,179,115,107,231,91,99,111,230,211,181,199,229,219,205,86,255,116,255,227,174,17,127,189,220,113,193,52,33,208,27,117,193,203,253,235,21,221,175,226,239,126,29,180,167,44,73, +239,172,0,236,237,143,32,105,23,1,55,170,84,29,144,110,17,64,3,156,60,167,129,11,86,205,2,157,192,43,246,190,251,39,222,97,205,218,146,241,254,53,188,38,242,254,163,61,63,137,134,164,188,186,238,242,78,0,68,2,162,248,254,35,61,63,230,181,242,191,186, +129,47,128,122,203,110,56,98,217,169,216,126,105,10,140,80,250,179,239,179,159,32,165,225,34,76,73,111,127,52,254,8,114,178,145,128,92,19,1,81,242,92,59,99,73,45,76,43,47,80,236,61,157,97,27,75,252,147,187,238,79,209,23,105,161,111,219,196,131,131,7, +44,173,249,118,205,113,249,120,163,117,189,109,218,49,124,208,250,60,173,247,148,11,141,4,208,40,128,39,226,84,108,191,180,203,22,65,201,247,190,9,241,96,56,165,199,3,179,253,17,36,3,69,64,14,85,7,208,146,191,186,105,165,176,102,65,181,162,239,75,147, +178,29,33,11,121,30,203,235,248,71,187,196,6,221,145,241,253,15,119,255,26,226,249,119,189,229,165,0,160,161,168,125,15,118,221,30,13,73,110,185,101,129,2,167,5,107,96,156,92,128,27,20,221,183,130,207,95,147,232,18,232,243,167,196,96,98,182,63,130,100, +166,8,232,200,145,217,1,180,228,175,164,64,7,23,156,50,83,209,199,0,141,194,190,63,185,141,149,104,203,118,186,140,2,52,60,55,112,135,115,216,103,207,199,107,141,203,215,155,204,210,229,30,110,121,101,248,215,186,66,249,81,0,122,225,237,159,120,27,26, +172,123,21,221,183,146,31,255,39,8,11,235,212,143,4,168,109,252,177,183,63,130,200,22,1,133,42,86,7,164,74,4,28,47,108,186,112,213,44,40,52,104,21,123,95,119,196,1,27,251,30,34,158,63,207,74,180,101,57,113,122,14,172,61,238,61,13,207,41,216,225,13,5, +64,246,112,248,241,222,251,93,163,254,38,185,249,0,244,194,227,53,28,108,236,125,144,37,6,42,118,82,74,75,160,236,127,111,1,141,65,79,211,102,85,51,254,234,133,253,247,66,7,246,246,71,144,164,249,112,78,64,246,85,7,68,201,243,235,140,197,181,48,187,186, +72,209,247,125,185,111,61,171,196,162,145,88,153,15,111,224,4,46,122,224,161,238,155,163,193,44,159,165,140,2,64,30,33,79,52,114,240,225,238,155,5,61,47,123,245,71,224,116,96,9,154,152,26,85,18,237,202,37,80,114,243,255,133,120,56,172,124,127,0,85,179, +253,137,241,223,92,143,217,254,8,162,80,36,64,237,217,1,85,37,234,136,0,186,238,191,112,70,25,172,93,84,163,236,51,198,178,19,14,78,190,3,198,36,66,255,250,2,1,58,223,26,187,191,127,143,185,33,159,175,47,46,223,111,176,174,119,199,119,13,238,183,60,154, +204,82,0,189,16,15,78,188,3,135,205,219,21,221,183,130,235,174,132,130,207,95,11,113,175,95,97,207,95,205,108,255,122,92,243,71,16,213,68,128,10,203,1,103,38,34,1,17,5,69,64,84,138,65,101,177,1,46,88,53,83,209,99,65,19,254,94,234,253,43,240,156,0,114, +31,50,196,243,135,128,51,50,176,255,161,238,59,243,253,218,202,123,1,64,231,4,236,250,99,219,207,130,174,136,73,110,135,64,122,33,210,11,242,165,222,7,193,30,154,84,116,255,74,110,185,9,244,23,156,77,68,128,47,249,239,26,142,96,182,63,130,100,187,8,80, +169,58,160,154,137,128,228,151,28,69,98,252,11,244,90,248,228,105,115,192,160,19,20,61,14,47,244,62,0,142,176,5,4,141,252,124,2,173,129,131,3,15,119,255,208,59,25,244,160,0,64,192,57,226,183,29,125,170,255,182,100,162,0,244,130,116,69,108,240,108,207, +125,228,102,85,46,100,175,209,233,152,193,54,92,124,46,196,61,222,68,203,96,57,15,16,127,0,184,242,82,40,191,231,231,152,237,143,32,217,44,2,44,199,68,128,194,145,128,171,207,170,131,89,85,197,172,85,175,220,85,71,42,32,78,204,33,40,49,40,250,253,119, +140,189,202,50,255,141,124,161,124,227,111,228,97,172,193,241,124,235,107,195,175,227,21,133,2,224,4,77,47,14,189,96,106,116,188,170,77,162,77,48,109,16,212,108,61,192,134,82,40,137,166,168,16,202,239,190,3,138,190,245,101,58,64,27,226,129,224,73,231, +5,80,175,159,182,24,214,159,125,26,84,109,184,155,253,84,220,248,99,111,127,4,73,125,36,64,225,229,0,58,152,231,42,34,2,78,91,88,195,62,135,46,9,156,172,16,160,165,126,244,223,207,169,41,129,79,159,179,0,106,202,140,138,126,239,17,111,47,188,218,255, +40,155,199,34,219,216,241,26,136,134,36,203,174,123,219,111,141,199,240,90,66,1,240,1,196,136,4,59,255,208,254,3,49,28,179,201,95,10,0,208,243,70,216,50,248,4,12,120,58,148,221,65,65,128,226,255,190,17,42,30,188,11,244,231,158,145,16,2,62,63,107,29,204, +26,249,208,208,29,221,162,34,196,67,225,196,223,145,159,218,69,117,80,118,231,109,80,241,215,187,128,159,59,75,97,227,255,193,108,127,180,254,8,146,30,17,160,92,117,128,192,105,96,221,242,233,112,237,217,243,97,254,180,18,118,91,71,162,18,91,211,167, +70,62,22,63,182,145,223,211,80,63,53,250,244,239,202,139,12,112,241,234,217,112,245,153,117,172,230,95,73,232,152,223,167,187,255,0,33,41,192,202,254,228,66,27,191,29,121,162,255,86,75,151,123,2,175,162,99,231,27,15,193,223,49,119,186,70,143,60,217,255, +147,115,191,187,228,177,176,87,222,120,94,58,139,58,34,133,225,169,174,123,224,199,167,221,15,5,66,177,162,251,168,59,117,37,84,144,45,218,209,11,225,125,135,32,210,218,5,210,132,133,24,251,196,67,128,214,245,115,213,149,160,93,186,0,244,231,156,14,250, +211,87,179,164,63,165,57,145,237,143,97,127,4,73,179,8,104,133,191,93,191,10,102,148,232,21,123,255,233,21,5,100,155,7,118,34,46,134,45,94,152,116,248,193,19,136,48,99,79,195,2,28,17,10,116,157,191,178,212,0,115,170,139,97,54,217,120,78,157,7,193,43, +253,143,64,191,187,131,60,75,229,151,18,210,134,63,99,13,142,205,245,207,244,63,131,87,15,10,128,143,165,254,233,190,199,235,206,173,190,118,218,138,178,79,71,131,242,18,98,232,196,192,81,111,31,188,216,251,87,248,230,178,159,170,178,159,218,229,139, +216,198,30,6,212,227,103,229,130,84,0,8,160,41,44,80,245,24,97,111,127,4,201,188,72,128,210,34,128,66,215,241,19,107,249,213,44,2,112,188,92,144,227,64,209,129,62,31,7,173,172,218,49,246,10,24,5,249,235,254,26,94,3,98,72,180,236,252,67,219,247,164,40, +198,254,63,228,176,226,33,248,48,98,36,70,151,2,190,151,236,82,0,189,96,247,143,111,133,221,227,91,84,223,103,218,48,136,54,15,226,202,74,82,96,252,247,98,182,63,130,100,168,8,80,178,58,224,31,161,30,190,129,124,22,221,82,97,252,39,2,35,240,124,207,253, +228,115,181,178,187,253,49,135,172,64,128,195,79,244,221,98,233,118,143,225,21,131,2,224,223,98,238,112,141,29,121,178,239,7,218,130,100,2,36,26,208,242,122,216,216,251,144,242,249,0,105,34,145,237,143,97,127,4,201,88,17,160,112,117,64,186,8,75,33,120, +162,243,247,224,139,186,65,208,200,127,14,83,227,111,106,114,188,80,255,204,192,179,120,165,160,0,56,105,14,63,222,251,220,224,62,243,179,201,148,6,210,132,149,72,44,124,226,66,206,122,227,143,189,253,17,36,59,34,1,89,46,2,54,246,61,8,189,174,22,150, +84,45,219,184,9,28,157,244,55,186,237,174,150,31,96,232,31,5,192,212,110,40,114,71,237,250,99,251,15,66,158,232,16,29,25,41,91,129,114,122,48,249,6,225,233,238,123,21,237,15,144,90,227,191,151,213,249,99,216,31,65,178,41,18,16,202,202,239,177,119,252, +13,216,101,218,156,212,186,63,133,150,116,31,120,168,235,59,246,126,175,5,175,14,20,0,83,198,57,226,183,239,190,183,253,38,65,199,199,146,49,124,244,66,62,98,222,1,111,14,61,149,149,198,159,102,251,163,231,143,32,89,36,2,88,179,160,86,48,101,89,36,160, +207,221,198,146,167,169,227,148,204,186,191,190,88,11,29,111,142,221,215,242,202,200,91,120,85,160,0,144,13,185,136,182,117,189,99,250,189,190,40,185,81,150,116,94,192,235,131,79,66,131,117,79,118,121,254,88,234,135,32,89,43,2,254,227,229,86,176,248, +35,89,177,223,174,176,13,254,214,241,91,136,198,194,192,37,81,239,47,232,121,234,188,213,239,189,191,243,103,120,53,160,0,72,154,157,247,180,253,175,173,207,187,95,48,200,191,40,53,228,80,107,52,28,60,221,245,71,24,243,245,103,252,119,110,125,249,8,51, +254,186,2,236,240,135,32,217,40,2,138,136,8,104,157,244,192,247,183,116,64,40,195,39,222,70,99,17,120,188,243,183,96,14,140,129,150,147,95,202,168,225,52,180,121,145,111,251,111,91,190,225,183,133,130,120,37,160,0,72,154,144,39,26,125,239,215,205,223, +136,137,49,135,38,137,210,64,58,47,192,39,122,224,209,142,95,131,55,234,202,216,239,59,209,58,10,77,47,30,2,45,107,239,139,214,31,65,178,149,98,189,0,187,7,29,240,199,189,131,25,189,159,47,245,61,8,109,246,195,96,16,146,43,99,214,23,9,112,228,169,254, +91,70,14,219,218,240,236,163,0,80,208,40,58,251,14,61,214,251,93,93,65,114,189,147,244,156,1,70,125,253,240,183,142,223,129,20,23,51,238,123,74,17,17,234,159,218,199,166,36,106,56,52,254,8,146,11,34,224,241,250,49,104,24,207,204,225,119,219,70,55,178, +65,63,201,38,253,209,138,173,161,131,214,167,223,127,164,231,17,60,235,40,0,20,231,200,147,125,47,246,238,152,120,32,153,210,64,10,157,102,213,100,219,207,198,7,103,26,131,123,187,193,222,103,6,65,143,77,34,17,36,39,30,242,68,199,135,197,24,252,245,253, +225,140,219,183,102,242,28,220,212,191,158,56,70,201,37,253,241,90,14,124,214,80,251,123,119,181,96,183,63,20,0,234,64,39,72,189,123,103,243,143,236,3,190,131,201,228,3,48,17,64,212,238,182,177,77,240,222,232,75,153,243,253,164,24,244,110,107,7,142,231, +241,100,35,72,14,81,160,229,97,239,160,19,186,172,254,140,217,39,58,225,239,111,157,191,103,9,11,201,36,253,209,72,37,39,112,254,237,191,107,253,170,199,20,240,224,217,70,1,160,26,97,111,52,252,222,175,155,191,34,69,98,214,100,90,5,83,181,75,151,3,54, +245,173,135,122,235,238,140,248,110,206,17,59,56,134,108,192,235,208,251,71,144,92,139,2,248,34,34,108,235,179,101,196,254,56,66,22,88,223,254,75,8,136,94,16,184,228,42,172,104,68,246,224,134,238,239,13,236,49,55,226,153,70,1,160,58,19,173,206,129,125, +127,233,252,166,96,224,227,201,228,200,81,213,75,43,3,158,236,188,27,122,221,173,105,255,94,214,158,73,16,67,81,204,250,71,144,28,132,142,250,61,58,150,254,142,164,65,209,15,27,218,239,4,115,96,20,116,156,252,78,127,52,114,64,235,253,123,119,76,60,120, +232,241,222,39,240,12,163,0,72,25,77,47,13,189,217,242,202,240,255,232,146,236,15,64,251,92,211,190,215,27,218,126,201,134,95,164,19,247,152,3,79,44,130,228,176,0,24,243,132,210,90,18,72,19,159,105,185,31,109,243,107,224,11,18,86,92,38,218,2,30,108,253, +222,125,59,126,223,118,75,150,54,89,69,1,144,205,236,190,183,227,215,163,71,237,155,244,73,38,5,210,186,87,218,4,227,225,214,255,97,63,211,69,216,19,196,204,127,4,201,213,135,189,70,3,254,136,4,193,168,148,182,125,120,182,251,62,168,183,236,78,58,227, +159,23,56,136,248,37,211,187,191,108,250,178,223,22,10,227,217,69,1,144,114,196,176,4,239,252,162,233,91,238,137,96,179,160,79,230,80,198,217,208,11,147,127,16,30,110,251,5,4,68,95,90,190,79,28,147,103,17,36,167,137,39,229,115,39,199,171,3,143,192,110, +211,102,40,16,138,146,122,31,186,236,202,235,184,200,206,63,180,253,159,201,118,215,40,158,85,20,0,105,195,51,17,112,191,251,171,230,47,74,209,184,45,153,161,65,20,26,18,163,161,177,71,219,127,197,166,8,166,26,193,40,64,60,142,177,52,4,201,73,227,31, +167,209,70,13,232,210,16,229,123,103,228,69,120,115,232,25,48,36,233,249,179,231,100,137,142,54,251,249,126,231,91,99,187,241,172,162,0,72,59,163,71,108,93,251,254,210,249,53,94,203,75,201,54,206,163,161,177,38,219,1,54,66,56,22,79,109,168,174,168,166, +20,112,45,13,65,114,19,137,40,128,234,66,29,20,166,184,199,199,158,241,55,224,229,190,135,137,240,48,36,85,235,207,140,63,29,242,179,117,236,190,131,235,187,215,227,25,69,1,144,49,52,189,52,180,181,225,249,129,155,13,165,186,164,223,139,134,200,222,159, +124,15,158,233,254,19,164,210,34,87,45,172,5,13,143,151,4,130,228,34,81,41,6,43,107,139,83,90,228,115,216,188,13,158,35,207,49,158,211,2,167,73,238,217,66,199,251,78,116,184,222,216,241,251,214,219,176,217,15,10,128,140,99,223,95,187,30,104,127,125,244, +207,180,31,181,18,34,128,206,196,166,163,49,83,69,245,226,90,40,170,46,134,152,136,55,23,130,228,26,60,199,193,69,11,42,83,246,121,116,242,233,19,93,247,176,82,103,94,147,92,115,49,58,225,47,232,138,180,188,249,211,250,175,134,220,105,204,98,68,1,128, +124,28,49,162,74,183,255,182,245,150,201,118,215,230,100,103,6,80,232,114,192,187,35,47,178,65,25,169,128,142,253,157,123,206,66,16,195,81,60,153,8,146,67,208,210,191,101,213,133,112,206,156,178,148,124,30,29,236,243,88,199,93,16,139,199,136,241,79,238, +89,72,219,252,70,2,226,196,27,63,173,191,222,109,10,184,240,108,162,0,200,88,200,133,26,219,114,219,209,175,186,70,253,135,105,200,42,25,232,122,25,77,154,121,103,248,5,216,60,240,120,74,246,127,233,149,171,193,88,94,8,49,9,163,0,8,146,51,207,37,114, +63,127,235,204,217,228,121,162,254,35,191,205,113,24,214,183,255,2,164,152,200,250,156,36,245,12,228,52,52,227,63,176,231,190,142,207,155,26,29,125,120,38,81,0,100,60,62,107,200,251,206,157,205,55,132,189,209,1,170,94,147,23,1,5,176,101,240,137,148,136, +128,194,234,98,88,245,185,51,18,29,1,17,4,201,122,188,97,9,46,93,88,5,215,173,168,77,137,231,191,190,245,23,16,149,34,73,183,248,165,9,213,196,137,138,239,188,167,237,27,237,175,143,238,195,51,137,2,32,107,24,111,118,140,190,241,211,250,235,136,253,182, +39,51,51,224,67,34,96,40,53,34,96,217,149,171,97,193,249,75,33,226,199,254,26,8,146,173,208,167,78,32,42,193,156,50,3,220,117,217,98,224,53,234,166,255,29,247,252,163,177,228,141,63,133,182,249,109,121,121,248,135,77,47,13,109,196,179,137,2,32,235,24, +61,106,111,222,125,111,251,231,121,29,31,212,40,33,2,248,2,120,125,232,73,216,212,247,176,202,79,14,13,156,253,159,151,192,172,181,117,40,2,16,36,75,241,19,227,95,83,168,131,245,159,89,9,179,74,13,42,123,254,135,96,125,219,47,21,241,252,41,116,192,15, +49,254,119,237,184,187,237,126,60,147,40,0,178,150,230,77,195,59,118,254,161,237,27,188,150,139,37,219,102,151,77,16,228,141,176,117,248,89,213,171,3,180,70,45,92,248,163,79,193,194,139,150,65,36,16,134,120,12,27,4,32,72,182,64,195,254,75,170,10,225, +169,207,175,134,85,211,139,85,253,44,154,237,255,80,219,255,18,207,63,172,152,231,63,124,200,246,200,182,187,90,254,31,62,119,80,0,100,191,8,216,56,244,82,253,51,3,223,165,77,44,146,45,194,61,158,24,248,238,200,11,240,116,247,31,33,14,234,37,235,9,6, +45,124,226,7,151,195,25,95,63,143,117,8,148,34,88,125,131,32,153,76,140,220,167,158,176,8,87,47,173,134,23,190,116,42,44,175,41,82,245,243,14,153,183,193,163,29,191,97,67,126,4,141,50,158,255,120,179,99,211,219,255,211,248,159,216,148,20,5,64,206,176, +255,161,174,245,205,155,134,126,202,68,64,146,28,23,1,187,198,94,131,199,59,126,11,98,44,162,234,190,175,248,204,90,184,248,167,215,64,65,101,17,68,131,17,60,153,8,146,97,80,191,34,44,198,128,22,239,220,126,193,2,88,255,217,149,80,89,160,85,245,51,247, +140,191,14,127,235,248,29,113,14,98,202,24,255,2,129,142,90,127,119,243,173,71,190,22,112,132,209,219,64,1,144,59,196,165,56,108,187,171,245,247,45,47,15,255,198,80,162,76,36,192,40,20,193,254,137,183,217,218,91,72,10,168,186,255,51,214,204,129,203,127, +117,253,137,188,0,12,205,33,72,230,224,33,246,114,122,137,30,30,189,254,20,248,239,117,115,85,255,188,119,70,94,128,103,186,238,101,221,253,146,173,243,63,110,252,29,67,190,3,91,110,61,250,185,160,51,18,196,51,138,2,32,247,68,64,156,137,128,59,90,94, +25,254,179,18,141,130,40,180,99,96,131,117,47,252,165,229,103,224,137,56,84,221,127,218,37,240,226,219,175,129,83,191,116,14,19,0,82,68,196,147,138,32,105,68,138,197,153,241,191,124,113,21,108,250,242,169,112,209,252,10,213,63,243,149,129,71,96,99,223, +67,32,112,58,34,0,248,164,223,143,118,249,11,56,195,245,239,252,162,233,51,228,167,7,207,42,10,128,220,22,1,191,105,249,225,240,251,214,13,74,44,7,80,104,199,192,46,103,35,252,169,249,199,96,14,142,169,186,255,52,145,113,245,23,206,34,66,224,106,40,174, +45,133,72,0,151,4,16,36,29,4,163,49,208,104,52,240,255,46,156,15,143,17,207,127,70,137,186,153,254,116,157,255,169,174,63,192,27,131,79,177,100,228,100,123,251,31,55,254,33,79,164,117,243,173,71,62,61,217,225,178,226,89,69,1,144,7,34,0,224,237,255,109, +250,142,169,217,241,152,174,72,153,72,0,45,17,28,245,246,193,125,141,183,193,160,167,83,245,239,48,99,205,92,184,252,215,55,192,130,243,151,64,52,24,197,249,1,8,146,194,231,7,77,244,91,82,93,8,207,124,97,53,252,215,57,115,85,31,240,19,20,125,240,112, +219,47,216,124,18,26,117,212,40,240,137,204,248,187,35,237,196,248,127,106,178,205,101,194,51,139,2,32,111,8,56,194,113,114,225,127,107,162,197,249,24,205,124,85,74,4,216,195,22,248,115,243,79,160,217,118,64,245,239,96,44,43,128,243,110,190,2,214,125, +247,18,208,21,234,48,65,16,65,84,38,44,197,32,68,182,111,172,157,197,66,254,103,206,42,85,253,51,237,33,51,121,166,252,20,26,44,187,153,241,87,130,99,158,127,223,230,219,142,92,75,140,255,24,158,89,20,0,121,71,208,25,1,34,2,110,154,104,117,62,166,47, +82,98,57,32,14,58,78,15,33,49,192,212,250,110,211,150,148,124,143,69,151,174,128,203,127,117,3,204,60,117,30,68,3,17,156,35,128,32,74,123,253,64,107,251,69,152,81,108,128,245,159,89,193,58,251,149,24,4,213,63,119,216,219,13,127,106,186,21,250,220,173, +44,233,88,17,227,111,96,158,127,31,121,246,93,73,140,255,0,158,93,20,0,249,44,2,226,91,110,61,122,211,120,139,67,33,17,0,172,25,7,13,208,61,211,125,47,188,220,191,158,60,60,212,207,216,47,157,89,14,151,222,241,105,56,227,155,231,131,160,19,216,178,0, +130,32,201,67,7,249,208,245,254,207,175,154,14,175,126,229,52,184,98,113,117,74,62,183,201,182,15,238,107,250,17,88,130,38,48,240,133,202,121,254,238,72,219,230,219,142,94,65,140,63,14,247,65,1,128,4,156,97,34,2,142,220,52,214,104,87,44,39,128,102,231, +234,120,3,188,53,244,12,108,104,187,19,2,162,79,253,47,66,84,199,242,107,79,133,203,239,188,30,102,174,153,131,209,0,4,73,198,235,143,39,188,254,233,197,122,248,235,181,203,225,79,87,45,131,154,34,93,74,62,251,189,209,151,224,225,182,95,66,80,12,128, +142,51,28,139,65,40,96,252,19,9,127,196,243,119,246,227,25,70,1,128,156,16,1,145,248,43,223,123,255,91,109,175,141,254,89,169,234,128,227,189,2,14,155,183,49,37,111,14,140,166,228,187,148,207,171,130,75,127,254,105,56,235,166,11,65,87,160,99,66,0,176, +109,0,130,156,52,33,49,198,214,251,255,207,154,153,240,234,87,215,194,53,203,106,82,242,185,98,44,10,207,246,252,137,181,26,231,200,243,67,137,214,190,20,109,129,64,141,255,209,99,9,127,184,230,143,2,0,249,167,155,47,28,131,109,191,105,254,97,203,43, +195,191,99,205,130,20,130,138,0,90,25,240,135,198,91,216,208,142,148,160,209,192,210,79,173,134,43,126,243,57,152,119,238,98,16,35,81,144,162,216,220,11,65,254,21,137,186,126,17,22,87,21,178,210,190,187,175,92,194,6,250,164,2,71,216,10,247,55,255,20, +182,143,190,114,172,204,143,87,228,125,89,147,159,65,239,62,52,254,40,0,144,127,3,13,251,189,119,87,203,237,68,4,252,92,137,217,1,199,161,55,52,109,20,244,215,214,59,88,120,47,85,148,76,47,131,11,110,187,18,46,184,229,74,40,158,86,138,93,4,17,228,163, +238,123,178,249,35,18,104,121,14,110,62,183,14,94,249,202,105,112,201,130,202,148,125,126,175,171,5,254,216,120,51,116,56,143,42,86,230,199,140,127,161,0,19,109,206,119,55,126,231,224,213,196,248,99,157,127,134,33,224,33,200,204,167,193,182,223,180,252, +154,136,1,247,170,235,230,222,31,241,139,138,24,77,45,167,131,88,92,130,23,122,255,2,38,223,32,124,113,209,247,216,76,129,84,48,119,221,34,152,182,106,54,180,191,90,15,93,239,180,178,101,1,58,113,16,65,242,29,218,195,95,36,55,251,165,11,171,224,182,243, +234,96,69,109,81,74,63,159,86,11,209,206,126,116,154,31,45,37,86,10,58,213,143,14,246,161,189,253,177,189,47,10,0,100,138,145,0,34,2,30,112,12,120,29,231,255,112,249,99,98,36,166,167,243,4,146,133,134,245,140,124,33,236,25,127,3,76,254,65,248,198,178, +31,195,204,194,249,41,249,78,250,34,3,156,246,213,115,97,238,185,139,160,249,133,67,48,86,63,200,58,11,242,58,188,12,145,252,67,36,162,62,16,149,88,67,159,31,174,171,131,79,47,175,73,233,231,135,165,32,188,212,247,32,19,0,90,78,207,54,69,208,36,194,254, +195,7,45,27,182,254,188,233,187,196,248,227,218,95,134,130,75,0,25,78,195,243,131,207,238,252,67,251,117,130,158,119,241,130,114,167,139,134,249,134,60,93,240,199,134,155,225,176,121,123,74,191,83,229,252,26,184,248,103,215,192,249,183,94,9,101,179,43, +33,26,8,99,39,65,36,111,136,29,203,238,47,212,241,240,163,243,231,195,230,175,174,77,185,241,31,39,226,255,222,166,219,96,231,216,107,108,121,144,87,104,189,95,67,140,63,93,186,108,123,109,228,174,87,126,112,248,219,1,39,78,245,195,8,0,146,20,205,27, +135,222,242,154,131,87,92,118,199,234,141,250,18,237,108,49,164,204,61,69,111,252,160,228,135,71,219,127,13,3,158,78,184,126,193,77,202,121,1,39,193,188,117,139,96,214,105,243,160,251,237,22,232,120,179,9,2,54,47,8,6,29,139,10,32,72,174,65,227,119,1, +226,12,235,137,144,255,194,170,25,108,106,95,93,185,49,229,251,241,190,249,61,120,177,231,175,224,139,186,20,235,236,199,140,63,185,111,181,70,62,222,180,113,248,230,29,191,107,249,115,28,83,125,80,0,32,202,48,176,199,124,232,245,159,28,189,232,83,191, +62,109,83,97,165,126,77,84,33,17,192,107,180,192,241,2,188,59,242,34,235,250,245,149,197,55,195,204,162,249,169,187,0,13,90,88,241,153,181,48,239,19,139,161,227,245,70,232,219,209,1,17,95,24,4,163,150,13,58,65,144,92,128,54,242,161,92,180,160,18,254, +251,156,185,112,70,10,90,248,254,35,52,228,255,114,255,6,230,245,243,156,192,28,0,165,224,181,28,221,252,59,239,105,187,177,233,165,161,151,240,140,103,7,184,4,144,69,152,26,29,253,47,126,107,255,165,214,94,207,219,74,150,9,210,140,95,234,9,244,185,90, +225,15,141,55,195,190,137,183,82,254,221,10,171,138,89,23,193,43,127,243,57,88,120,209,50,230,46,177,110,130,232,70,32,89,12,173,231,167,217,253,167,205,44,129,71,174,91,9,79,125,110,85,90,140,255,144,183,139,221,219,219,70,55,129,142,215,131,160,81, +206,247,163,13,126,196,144,100,122,239,55,205,87,162,241,71,1,128,168,136,103,34,104,223,124,203,145,79,15,236,53,111,160,173,131,149,116,146,169,71,16,146,2,240,68,231,221,240,120,231,111,193,27,117,165,252,251,149,205,169,132,115,191,127,25,92,246, +203,235,96,238,217,11,32,38,197,201,195,37,138,141,132,144,172,130,102,246,123,195,18,44,175,41,130,63,95,179,140,13,238,185,108,81,85,90,246,133,26,253,123,27,111,133,33,79,183,162,37,126,20,173,129,117,247,107,220,114,219,145,139,219,54,143,238,197, +51,159,93,224,18,64,22,226,179,134,34,175,221,114,228,219,151,252,244,148,193,149,215,206,249,173,68,60,140,152,164,140,133,228,137,103,192,243,60,236,31,223,10,3,238,14,248,226,162,255,134,149,149,103,166,252,59,86,47,158,6,23,254,248,42,48,119,152, +160,125,115,3,152,26,135,89,91,97,173,94,0,192,165,1,36,131,61,126,154,221,79,13,255,55,215,206,130,235,86,214,18,97,157,30,63,203,30,154,132,23,123,255,2,245,214,61,172,157,175,158,55,40,250,254,180,204,207,220,238,218,242,214,29,13,223,112,142,248, +157,120,246,81,0,32,41,130,150,4,110,251,77,203,239,156,195,190,254,79,252,215,178,71,52,92,188,84,138,42,149,73,79,91,8,23,130,53,56,14,127,105,253,25,92,50,235,122,184,182,238,27,138,174,25,158,44,181,203,103,178,109,178,109,12,58,223,106,6,83,195, +16,72,145,40,8,122,45,38,11,34,25,101,248,105,23,191,149,211,138,225,171,167,206,128,207,46,159,6,70,109,250,2,172,135,204,219,96,83,223,122,112,134,45,172,236,87,73,88,166,127,137,14,58,182,142,221,183,235,158,182,219,2,88,230,135,2,0,73,15,245,207, +12,108,116,12,250,6,47,251,249,234,103,140,101,186,37,74,37,7,82,104,227,160,56,196,224,237,225,231,160,203,217,0,95,88,244,61,88,92,182,58,45,223,115,218,202,89,108,51,119,142,67,247,214,102,24,171,31,98,205,132,4,131,64,132,0,174,100,33,105,16,225, +113,128,160,152,184,223,78,155,81,202,12,63,237,217,175,227,211,119,61,186,194,54,120,165,127,3,28,156,124,143,149,246,41,217,216,135,194,9,28,240,58,46,124,232,241,222,31,238,251,107,215,195,216,213,19,5,0,146,102,6,247,91,142,190,120,211,129,11,174, +249,253,218,191,85,47,41,189,50,236,83,110,205,92,3,28,155,37,48,234,235,131,63,55,255,24,46,153,117,3,92,53,239,43,105,137,6,176,136,192,178,25,108,115,12,88,161,251,221,86,24,121,191,31,130,110,63,8,58,45,123,56,33,136,218,72,196,242,211,172,126,26, +218,63,191,174,2,190,186,102,38,92,186,176,18,248,52,71,164,14,91,118,192,43,125,27,88,228,206,32,20,40,186,214,207,28,2,35,15,17,191,56,178,253,119,45,223,232,120,99,108,39,94,9,40,0,144,12,193,53,234,55,111,250,238,251,215,92,120,219,138,223,45,189, +124,230,109,180,87,128,82,121,1,20,186,134,24,139,199,224,141,161,167,160,221,113,4,110,88,248,29,88,86,126,90,218,190,111,197,252,106,56,231,59,23,195,202,207,172,133,254,157,157,48,176,183,27,188,19,174,132,135,162,21,0,112,117,0,81,152,40,185,159, +66,196,227,47,51,106,225,138,197,213,240,21,98,248,207,154,93,154,246,253,114,132,204,196,235,127,4,14,89,182,3,79,126,25,85,104,239,77,215,251,109,253,222,221,219,126,221,252,245,241,22,231,48,94,13,40,0,144,12,35,232,138,72,91,239,104,252,145,189,207, +219,124,246,77,139,255,194,243,154,82,41,162,92,135,61,78,195,177,44,226,68,52,224,39,112,193,204,107,224,154,121,95,131,34,109,89,218,190,51,29,48,180,230,75,103,195,242,107,214,192,208,129,94,38,6,108,125,22,34,126,36,204,19,64,146,134,134,249,143, +175,239,207,45,55,192,213,75,107,224,115,167,76,135,133,149,5,25,177,127,123,199,223,132,45,131,79,48,17,160,134,215,79,239,31,218,214,183,111,231,228,95,119,220,221,122,171,207,18,10,227,85,129,2,0,201,96,14,63,209,247,140,109,192,219,126,233,237,171, +254,86,88,165,95,77,135,9,41,137,142,211,179,220,128,109,35,155,160,221,126,24,62,61,255,70,56,163,230,226,180,126,103,93,145,1,22,95,118,10,44,186,116,37,76,180,140,66,255,174,78,24,111,26,134,144,59,8,156,150,248,69,90,62,63,47,6,77,90,94,154,245,208, +76,254,96,84,34,70,149,103,117,251,55,172,156,198,188,254,50,99,102,60,50,169,8,127,149,120,253,45,246,247,65,224,116,170,120,253,188,142,3,142,215,120,15,172,239,254,225,161,199,122,30,143,99,183,110,20,0,72,118,48,176,199,220,184,113,232,192,5,151, +220,190,234,254,57,103,86,125,77,169,137,130,127,55,14,28,123,232,216,130,19,176,161,237,78,56,90,189,11,62,51,255,63,96,122,225,220,244,218,59,226,177,204,88,51,135,109,222,73,55,139,10,12,147,205,57,108,99,101,132,130,78,0,13,159,39,185,2,196,125,165, +3,152,228,82,162,23,242,170,226,146,222,30,97,81,2,186,114,54,163,88,15,151,18,79,255,51,43,106,225,204,89,165,25,179,143,180,79,199,59,35,47,192,246,209,151,33,32,250,20,79,242,59,33,168,11,5,32,222,126,203,206,63,180,221,72,188,255,122,124,162,162, +0,64,178,12,231,136,223,253,234,15,14,125,125,221,119,150,28,90,251,229,249,247,196,98,241,2,37,151,4,216,5,68,188,15,1,226,80,111,221,13,93,174,70,184,116,246,13,240,201,217,159,83,237,193,52,21,232,242,192,41,215,157,14,43,174,61,149,69,5,134,246,245, +194,120,243,48,4,28,126,34,2,52,44,87,32,167,151,8,136,33,43,154,38,223,120,213,18,35,104,16,56,22,6,207,85,33,64,37,113,68,140,65,132,136,195,34,34,120,214,205,45,135,107,151,213,178,164,190,234,66,93,70,237,107,3,185,199,104,184,127,212,219,199,146, +112,213,184,199,232,253,160,47,18,96,232,160,245,201,237,191,107,253,129,107,212,239,198,39,41,10,0,36,75,161,6,127,239,253,157,15,78,182,187,234,47,188,121,197,250,162,90,131,226,75,2,52,30,64,31,70,81,41,12,175,245,63,10,245,150,221,112,205,188,175, +195,218,154,11,50,226,24,112,2,15,51,79,155,199,182,128,221,199,74,8,135,15,246,129,173,119,18,34,254,48,75,28,164,203,4,185,54,123,128,126,167,202,186,106,217,175,159,87,110,132,154,34,61,76,120,195,160,205,161,99,67,141,62,77,232,163,222,190,142,156, +251,197,213,133,240,201,133,85,112,229,146,106,88,81,83,148,113,251,59,234,235,135,215,137,225,111,178,238,35,215,104,162,42,71,13,88,200,159,211,120,15,61,222,123,219,193,13,61,27,148,118,22,16,20,0,72,154,232,221,62,113,104,178,205,121,254,197,63,57, +229,158,5,23,76,251,191,209,128,168,104,149,0,51,56,26,158,61,156,38,252,195,240,112,251,47,96,213,228,57,44,73,112,94,201,210,140,57,14,5,149,69,176,248,178,149,108,115,141,218,97,244,200,32,17,4,131,172,172,48,26,140,228,140,24,160,227,149,139,170, +139,161,124,158,124,1,80,164,227,225,212,233,37,48,228,52,131,86,151,221,57,20,39,140,62,237,38,73,188,220,185,101,70,184,96,126,5,92,177,168,10,78,159,85,154,214,218,253,143,195,19,113,194,123,163,47,193,110,211,150,99,225,126,35,168,149,153,65,179, +252,157,35,190,195,59,239,110,251,54,241,254,155,240,137,137,2,0,201,49,188,230,144,103,243,45,71,190,125,214,127,44,218,117,198,215,23,222,167,53,242,53,209,160,242,77,188,104,3,33,250,200,109,182,237,135,110,103,3,172,155,126,37,92,62,231,139,80,105, +168,205,168,227,81,54,187,146,109,116,153,192,222,111,97,93,6,105,203,97,154,47,64,155,12,209,92,1,154,60,152,141,203,4,98,88,132,89,107,235,64,107,76,110,104,20,157,83,255,90,135,57,59,141,62,177,250,52,180,79,55,106,224,231,150,27,97,221,156,114,214, +147,159,26,253,162,12,21,53,98,44,10,123,39,222,100,19,58,45,1,147,106,225,126,38,218,137,224,165,253,252,59,223,28,187,119,239,3,157,63,247,89,67,1,124,82,162,0,64,114,152,67,143,245,62,63,114,216,118,248,194,91,87,60,48,99,85,249,149,97,175,72,30,150, +74,119,244,74,44,11,208,222,1,52,97,169,193,178,7,46,158,245,89,184,112,214,103,20,157,65,174,20,149,11,106,216,182,234,115,103,130,99,200,6,19,45,35,48,78,196,128,99,208,10,33,79,144,125,31,42,6,56,234,41,102,184,30,160,201,158,250,34,61,44,190,252, +148,164,223,235,130,186,10,56,117,70,9,52,79,120,192,152,5,149,20,180,92,143,122,249,244,103,161,78,128,165,53,69,112,238,220,114,184,136,120,251,107,166,151,144,63,203,236,239,208,96,221,3,91,135,159,99,115,56,180,42,101,247,31,135,150,247,5,221,145, +161,189,127,238,248,126,211,198,161,215,241,201,152,127,104,226,105,26,183,26,137,68,96,201,146,37,48,52,52,132,103,33,77,208,100,159,117,223,89,114,203,170,235,230,253,138,78,4,22,195,234,181,244,150,226,34,241,196,194,48,163,112,46,92,58,251,115,176, +110,250,229,228,1,167,207,130,168,137,27,44,29,227,48,78,4,129,173,199,12,126,155,7,232,240,37,22,29,32,222,83,38,86,20,68,124,97,88,249,217,181,112,250,55,206,83,228,253,118,15,58,224,107,27,91,88,231,187,76,11,134,196,200,243,139,134,246,169,151,79, +59,241,85,21,232,96,101,109,17,75,230,163,134,159,10,0,109,22,68,112,104,171,109,106,248,59,28,245,108,249,73,167,226,189,193,241,26,208,18,227,111,106,180,63,183,243,158,182,91,45,221,158,73,124,26,166,143,13,27,54,192,77,55,221,132,2,0,73,15,243,214, +213,156,122,254,15,150,61,80,181,176,228,220,136,79,141,104,192,223,161,225,205,104,60,2,243,138,151,194,101,115,62,199,250,7,208,220,129,108,128,46,11,56,134,172,108,48,17,157,73,224,26,177,179,62,3,113,98,124,50,69,16,68,67,81,150,248,119,217,157,215, +17,15,79,57,35,242,203,237,125,240,208,161,17,40,51,164,55,104,120,220,224,71,143,149,180,210,82,197,186,10,35,235,197,127,206,156,50,22,173,152,94,172,207,154,123,143,122,250,239,142,190,8,77,214,253,76,36,39,38,246,169,39,88,104,59,223,104,72,154,60, +250,84,255,79,142,60,217,255,20,205,21,65,80,0,160,0,200,247,104,64,177,86,183,238,255,46,254,241,170,235,231,254,140,184,32,70,53,163,1,204,80,197,194,108,121,96,126,233,10,184,116,246,245,176,182,250,66,214,105,48,155,160,21,5,116,137,128,138,1,123, +159,25,220,99,78,8,121,2,32,145,135,42,71,188,78,238,152,32,72,85,66,161,72,140,127,97,117,49,92,122,199,167,161,116,86,133,178,247,43,17,57,255,181,185,3,222,232,178,64,105,138,68,0,125,52,73,199,12,190,24,35,199,148,28,71,250,217,115,202,140,112,202, +180,98,214,160,135,134,245,235,202,141,105,239,195,63,85,70,188,61,196,240,191,196,150,198,34,228,94,160,235,252,26,21,13,255,9,175,191,193,254,202,238,251,58,110,157,108,119,225,131,23,5,0,10,0,228,159,162,1,167,159,255,253,101,127,172,90,84,114,190, +210,205,131,62,242,58,32,15,191,248,9,33,112,3,17,2,231,103,77,68,224,159,4,129,195,207,162,2,54,34,6,236,3,22,112,143,58,200,159,249,152,87,78,187,204,208,222,3,52,135,128,78,47,84,52,177,144,38,187,5,195,80,54,171,18,46,184,237,83,80,62,183,82,149, +239,71,59,227,221,250,86,23,188,218,110,102,9,116,74,26,221,227,198,158,118,224,163,27,253,127,131,150,131,170,2,45,204,43,47,96,97,125,234,221,175,168,45,134,57,165,134,172,51,248,31,52,252,219,198,18,57,49,180,169,143,218,134,63,225,245,11,228,26,20, +39,234,159,238,255,201,225,39,250,159,70,175,31,5,0,10,0,228,95,69,3,248,117,223,94,124,243,170,235,230,222,65,172,113,169,24,82,127,220,247,7,133,0,77,22,92,91,125,1,8,156,54,171,143,35,245,200,125,22,15,56,137,40,160,101,134,180,236,144,118,39,12,186, +252,16,13,70,217,210,1,125,246,127,80,20,76,73,24,144,91,87,140,136,204,122,206,57,123,33,156,245,173,11,192,88,94,168,234,119,162,79,139,251,15,12,195,67,135,134,193,75,174,139,2,29,7,252,20,34,28,84,79,210,48,190,116,204,208,211,223,83,207,222,72,140, +125,185,81,203,188,251,69,149,133,176,172,166,136,108,133,196,187,47,128,202,2,109,214,223,83,253,158,118,150,12,219,98,59,64,12,127,16,244,156,129,213,244,171,9,39,104,64,208,243,96,106,114,60,179,231,79,29,183,79,118,184,198,240,233,134,2,0,5,0,114, +82,204,60,181,114,217,39,190,183,244,247,51,215,84,92,163,70,223,128,143,19,2,177,184,4,115,139,23,195,5,51,175,101,57,2,106,102,66,167,26,26,13,8,218,125,224,153,116,129,107,196,1,158,113,39,75,52,164,203,9,33,111,8,196,96,132,181,44,102,150,86,147, +16,4,116,57,225,120,43,62,122,191,198,99,177,19,109,141,171,22,77,131,101,87,175,129,185,68,0,164,146,118,179,15,30,62,60,2,59,251,137,184,33,98,134,138,0,129,238,43,221,79,77,66,41,80,143,254,184,177,167,80,175,157,86,18,148,234,5,214,101,112,22,241, +228,23,84,20,16,131,95,0,117,228,231,172,18,3,84,228,128,177,255,32,29,142,163,176,211,244,26,155,153,145,8,245,27,88,27,109,117,159,234,199,50,252,157,145,158,131,143,244,252,164,245,149,225,215,82,113,239,34,40,0,80,0,228,24,212,131,56,253,107,11,190, +118,218,151,234,238,212,23,107,231,70,2,98,194,56,169,109,40,99,17,98,64,162,48,173,96,46,156,59,253,74,56,103,218,101,80,166,175,202,217,227,28,9,132,33,228,10,130,223,230,5,159,213,3,126,139,135,252,244,38,132,129,39,200,234,250,169,93,229,137,241, +44,172,44,130,202,133,181,48,99,205,92,168,89,58,61,173,251,61,224,8,176,42,129,35,99,110,24,38,251,239,9,137,236,242,160,98,128,122,244,53,133,58,152,73,12,253,76,98,220,231,150,25,96,6,249,89,91,164,135,10,242,119,185,218,94,152,94,187,180,107,223, +238,241,215,161,215,213,66,174,99,233,152,225,215,164,228,126,229,120,77,164,115,171,233,254,131,27,186,239,114,155,2,78,124,138,161,0,64,1,128,36,69,213,130,226,234,115,190,189,248,127,23,92,56,253,59,113,41,198,139,225,212,172,35,178,170,1,242,64,45, +55,84,195,233,53,23,50,49,48,187,104,97,94,29,123,41,34,130,36,74,204,124,112,90,33,99,39,27,82,143,63,16,137,17,1,16,103,17,129,66,93,126,77,96,244,68,28,112,200,188,29,14,78,190,195,250,245,83,131,175,229,245,41,49,252,199,147,252,172,61,158,157,196, +240,255,180,111,231,228,97,124,106,161,0,64,1,128,40,202,162,139,167,175,35,66,224,174,170,5,37,23,68,137,183,23,19,83,115,253,80,47,42,34,133,216,114,192,242,138,51,224,19,68,8,172,168,60,131,24,26,236,101,133,164,23,58,154,247,224,196,59,112,212,178, +27,236,161,73,150,187,146,232,134,153,138,39,120,34,220,31,114,71,71,27,95,28,252,101,195,115,3,143,71,252,34,198,251,81,0,156,20,248,244,68,166,68,239,142,137,3,195,135,172,23,157,254,149,5,223,92,117,195,220,255,49,150,233,230,210,118,194,106,87,11, +240,108,206,64,33,241,45,99,208,104,221,3,77,182,125,48,167,104,17,156,53,237,18,86,66,88,97,168,193,147,131,164,206,129,33,98,180,213,126,136,121,251,93,206,70,8,138,126,208,17,111,63,149,249,42,130,129,167,249,33,225,222,237,19,15,30,220,208,243,59, +251,128,215,130,103,6,65,1,128,168,251,240,35,30,198,129,245,221,143,183,191,62,186,101,221,119,150,220,182,240,226,105,223,19,244,124,161,26,115,5,254,217,225,225,88,233,212,113,207,107,176,167,19,222,30,126,1,78,169,60,155,136,129,75,97,113,217,106, +38,22,16,68,13,198,253,67,112,196,178,19,26,136,183,63,238,31,6,154,16,147,106,195,79,167,246,209,181,254,137,22,199,235,71,158,232,255,69,223,238,201,6,60,51,136,172,231,41,46,1,32,201,50,235,180,202,229,68,8,252,124,198,234,138,47,210,210,54,49,197, +99,68,105,213,0,205,176,22,52,2,204,46,94,8,107,107,46,132,211,170,206,131,154,130,89,120,114,144,164,241,139,94,104,35,222,254,17,243,14,232,113,53,131,63,234,101,33,254,84,151,169,210,178,62,26,238,183,15,250,26,27,95,24,252,69,251,150,145,45,169,202, +197,65,212,3,115,0,144,156,96,197,53,179,47,62,253,107,11,126,94,89,87,124,33,237,36,40,69,83,251,112,162,201,103,52,105,144,110,197,186,82,88,84,182,10,78,175,185,8,150,87,156,14,197,218,50,60,65,200,73,35,198,69,232,119,181,194,81,235,110,102,252,173, +193,9,150,202,71,123,244,107,82,220,177,146,150,130,234,10,120,240,217,194,67,29,111,140,221,93,255,108,255,99,65,39,121,128,34,40,0,146,4,151,0,16,197,104,127,125,116,71,239,246,137,29,203,175,154,245,185,83,191,84,119,123,197,188,162,83,105,217,96, +170,18,5,89,214,53,241,204,232,22,145,34,172,191,122,163,117,31,27,67,76,69,192,169,213,231,193,162,210,85,57,213,87,0,81,86,64,14,123,186,161,201,182,31,90,236,239,195,184,111,144,85,160,208,16,191,225,216,178,83,170,13,63,235,221,31,148,108,29,111, +154,30,56,248,72,207,95,220,99,126,7,158,41,4,5,0,146,145,80,131,223,180,113,104,99,207,246,137,45,167,125,185,238,235,203,175,158,125,107,81,181,97,113,52,152,58,33,64,161,115,5,142,231,10,120,34,78,216,59,254,38,236,159,120,27,170,13,51,136,24,88,11, +171,170,214,193,162,178,83,84,155,179,142,100,7,116,30,133,201,63,0,45,182,131,208,74,140,254,136,183,15,194,82,144,133,247,143,111,169,183,252,0,58,214,190,87,242,118,110,29,219,208,248,252,224,159,205,157,238,81,60,91,136,226,151,26,46,1,32,106,82, +60,205,88,188,250,250,185,55,18,33,240,125,34,4,230,167,178,116,240,163,160,161,93,81,138,0,199,241,80,99,156,1,139,203,214,192,41,149,103,193,66,34,6,112,153,32,63,160,94,253,136,183,151,133,246,219,29,71,136,0,24,132,144,24,32,198,94,32,155,46,37,117, +251,31,103,248,181,6,158,118,125,12,14,236,49,63,121,232,177,158,123,137,225,239,197,51,150,219,96,14,0,146,15,66,160,116,245,13,243,190,189,226,234,89,223,45,172,50,204,77,183,16,56,33,6,136,49,160,149,5,21,134,106,168,43,89,14,43,42,78,103,162,160, +22,19,8,115,10,111,196,5,3,158,14,98,240,15,179,68,62,115,96,12,34,82,248,132,151,159,54,163,15,137,80,63,45,233,131,88,60,56,86,111,127,166,254,249,193,251,6,247,153,59,240,172,161,0,64,1,128,228,154,16,40,95,125,253,220,175,46,191,102,246,127,23,85, +27,22,166,122,105,224,227,160,141,134,168,24,160,235,192,133,66,49,204,44,170,99,66,96,73,249,26,214,111,160,80,91,130,39,47,139,160,137,160,180,100,175,215,221,2,93,142,70,24,246,118,131,43,108,99,21,35,212,203,231,137,183,159,78,163,127,220,240,211, +53,254,72,64,244,142,55,57,158,109,222,56,252,192,0,26,126,20,0,40,0,144,60,16,2,37,171,111,152,251,229,229,87,207,254,175,162,42,195,74,49,34,129,20,201,140,146,38,186,46,44,198,163,32,197,68,230,29,150,235,171,97,78,241,34,86,85,176,176,116,37,204, +40,156,119,34,191,0,129,140,57,103,150,160,137,24,250,46,232,118,54,195,160,167,147,253,63,13,237,211,124,16,102,244,51,164,63,4,107,219,203,12,191,100,239,219,57,249,100,195,243,3,15,89,186,220,125,120,22,81,0,160,0,64,242,75,8,212,26,13,11,47,154,118, +253,170,207,206,249,110,229,130,146,117,146,72,140,111,88,74,201,192,161,147,35,126,44,58,16,101,70,134,14,117,169,48,212,194,172,162,5,176,160,116,5,212,149,44,133,105,5,115,160,72,91,138,39,51,149,207,143,88,24,44,1,106,240,123,136,177,239,128,33,79, +55,51,248,196,153,102,127,47,104,180,25,225,229,127,200,240,11,28,51,252,62,75,112,116,232,128,245,177,166,141,67,143,17,195,143,35,122,81,0,96,25,32,146,159,120,205,193,80,227,11,131,207,182,111,25,125,118,249,85,179,174,88,122,197,204,255,154,182,162, +236,83,26,226,182,69,67,234,183,24,62,9,141,204,230,13,240,188,112,76,14,196,193,22,156,0,115,96,148,53,134,209,242,58,40,213,85,194,116,34,2,102,23,47,130,121,197,75,88,132,128,150,30,234,136,88,64,148,144,96,113,112,134,173,48,233,31,129,17,95,47,43, +213,163,137,123,142,144,5,66,82,128,253,27,122,142,104,35,168,140,171,234,32,250,67,208,113,204,248,123,38,130,205,221,239,152,30,109,222,52,252,28,185,238,177,156,15,73,59,40,0,144,204,240,232,18,229,131,111,55,109,26,122,123,193,249,211,78,95,113,237, +236,155,230,156,81,121,131,190,72,91,193,242,4,50,100,158,57,245,40,89,226,24,104,79,24,39,58,5,206,73,140,17,237,13,79,195,205,180,207,0,29,93,92,107,156,77,68,193,2,152,89,56,159,37,21,210,121,5,5,66,49,158,236,127,227,217,187,195,118,230,205,155,124, +3,48,70,182,201,192,8,216,66,19,172,3,31,141,196,208,99,204,68,25,39,100,108,25,39,91,223,55,240,16,139,197,99,246,126,239,123,173,175,141,172,39,198,255,141,144,39,26,197,179,140,160,0,64,144,143,118,247,160,127,247,228,81,186,77,91,81,246,171,37,151, +207,252,210,146,79,206,248,122,97,181,126,5,77,22,204,172,229,129,132,32,248,96,132,128,66,115,7,104,120,122,194,63,12,13,214,61,39,122,18,20,235,202,88,100,160,198,56,11,166,21,204,102,173,138,171,13,211,161,68,95,193,150,16,50,41,92,173,54,116,109, +222,19,117,130,61,56,9,214,208,56,57,86,35,44,170,66,167,233,185,35,118,54,92,71,36,199,81,163,57,118,124,53,252,137,38,79,153,12,175,229,88,175,254,176,79,180,145,107,248,229,246,55,198,30,27,220,111,57,18,19,177,101,47,130,2,0,65,78,154,201,118,215, +24,217,238,57,250,84,223,253,139,46,158,254,169,37,151,205,252,70,237,242,210,203,4,29,103,160,131,135,50,37,42,240,79,162,128,38,157,209,13,180,31,208,53,113,150,133,110,15,153,217,244,56,154,123,67,141,26,93,38,40,212,22,67,137,174,130,37,27,82,129, +64,55,250,123,186,21,17,209,80,164,45,33,2,162,32,107,134,28,209,137,141,180,196,206,23,245,128,95,244,144,239,109,103,223,157,46,157,56,194,102,22,186,167,94,62,253,123,26,194,167,94,61,133,35,223,143,126,71,142,25,123,61,219,178,1,42,82,4,3,199,188, +126,183,41,208,208,187,115,226,201,246,45,163,27,29,131,190,9,188,139,17,20,0,8,146,4,126,91,56,220,244,210,208,171,205,155,134,95,157,177,186,98,233,178,43,102,126,121,254,121,53,95,44,170,49,46,138,209,225,67,52,87,32,195,39,160,159,136,20,104,132, +127,48,150,116,9,193,197,140,228,144,167,139,9,3,250,43,145,185,174,101,73,135,6,190,16,10,180,69,172,81,17,141,20,208,173,88,151,248,61,93,82,40,20,138,192,72,54,42,38,244,124,194,112,106,201,79,186,38,206,49,131,202,177,159,199,247,227,223,27,112,242, +43,30,99,73,143,180,108,142,38,65,70,99,97,136,196,34,108,12,46,13,211,135,136,135,30,16,125,224,167,70,62,234,5,111,212,77,54,39,248,34,110,98,216,221,108,128,14,245,226,195,196,211,143,30,171,168,56,110,44,143,27,122,218,127,65,75,190,99,166,123,245, +31,115,66,129,23,18,83,249,34,1,209,49,114,196,246,70,231,155,99,79,15,236,179,236,12,123,163,18,222,181,8,10,0,4,81,210,179,140,197,193,212,104,239,34,219,255,20,62,98,248,237,162,139,166,125,114,193,133,211,190,50,99,85,249,101,58,163,80,202,6,16,209, +80,107,60,123,190,83,66,24,240,31,233,221,83,67,76,103,26,132,137,209,117,133,173,9,131,12,137,80,242,241,234,157,132,113,39,222,39,121,61,53,248,44,63,225,88,6,60,21,27,58,98,92,57,46,241,147,190,130,14,179,161,255,62,254,15,7,137,238,71,226,243,194, +240,247,202,135,8,49,252,137,225,74,18,107,154,36,178,242,200,68,69,132,116,66,36,28,127,47,106,220,169,81,63,177,79,244,23,249,169,211,16,79,62,75,188,249,127,7,157,200,71,141,126,92,138,199,157,35,254,3,61,219,39,94,24,216,61,249,170,185,203,109,194, +59,20,65,1,128,32,41,137,10,132,130,77,27,135,182,208,173,118,121,217,156,249,231,213,126,122,241,165,211,63,95,54,187,240,28,242,144,230,197,16,49,78,89,190,238,154,48,160,212,99,231,224,95,59,238,9,19,124,220,128,71,32,116,194,40,31,143,40,36,84,81, +194,200,255,171,112,73,226,243,78,124,58,253,131,99,31,173,57,254,39,199,146,240,56,128,60,201,89,96,157,250,244,28,59,54,62,107,168,119,172,97,242,53,226,237,191,100,106,118,28,165,75,81,8,130,2,0,65,210,132,185,195,53,66,182,7,142,62,213,247,192,140, +213,21,107,136,24,184,110,254,39,106,62,93,50,163,96,21,181,119,180,201,80,38,116,27,84,87,42,252,163,1,63,241,87,72,18,70,159,227,57,8,186,34,227,227,205,142,173,93,239,140,111,28,58,104,217,19,176,135,131,120,132,16,20,0,8,146,65,80,111,108,248,125, +107,19,221,222,127,84,119,231,156,51,170,206,92,112,193,180,107,103,174,169,184,170,168,218,176,146,26,67,218,109,48,219,150,9,144,20,25,125,94,147,168,217,39,63,131,238,168,217,212,228,216,62,184,215,188,105,232,160,117,151,107,204,239,196,35,132,160, +0,64,144,44,32,232,140,136,221,239,142,31,160,91,65,185,238,231,179,207,168,58,131,8,130,171,103,172,174,184,162,108,78,225,26,242,144,215,72,209,24,196,200,22,71,49,144,167,22,63,209,150,87,208,241,76,15,134,92,145,81,83,3,49,250,251,204,155,135,222, +183,238,117,141,250,237,120,144,16,20,0,8,146,197,4,156,145,232,113,49,160,53,242,119,204,88,85,177,122,193,5,181,159,156,190,170,252,138,138,185,69,103,234,10,132,66,42,4,152,32,144,80,13,228,180,205,231,52,137,90,125,178,145,243,29,247,89,67,29,19, +45,206,247,250,247,76,190,57,222,236,60,228,53,7,189,120,148,16,20,0,8,146,131,68,131,82,108,248,144,181,145,110,196,251,187,187,122,113,233,188,185,103,85,157,63,107,109,229,39,171,23,151,156,107,44,211,213,81,35,193,4,129,24,207,128,86,196,72,178,94, +62,45,215,163,205,121,104,126,68,200,19,113,216,7,188,71,71,143,218,223,29,61,106,219,110,238,112,181,133,60,81,17,15,20,130,2,0,65,242,8,234,237,155,59,93,67,116,59,252,68,223,83,197,53,134,130,234,37,165,107,230,173,171,190,104,218,242,178,11,203,102, +23,158,170,47,214,86,178,127,43,210,8,1,10,130,140,183,247,180,112,129,167,30,190,134,37,240,17,47,63,228,54,249,59,38,219,93,251,198,91,156,59,136,225,63,228,26,245,79,226,121,68,16,20,0,8,114,2,175,37,20,32,219,129,129,189,230,3,26,78,243,155,178,89, +5,181,181,203,203,78,155,177,186,226,188,218,229,165,231,150,207,42,92,161,47,33,130,64,3,172,170,128,70,9,98,212,144,160,45,73,159,193,231,52,172,54,159,122,249,244,188,136,97,41,24,176,135,186,173,189,222,131,19,45,142,61,227,173,174,163,214,30,119, +95,196,143,78,62,130,160,0,64,144,147,128,122,136,206,17,191,153,108,91,187,222,54,109,165,225,227,210,89,5,53,181,203,74,87,17,65,112,118,229,252,162,179,43,235,138,79,33,130,96,182,160,227,53,244,223,211,234,130,24,46,27,168,107,236,249,132,193,167, +63,227,49,128,144,55,98,115,141,132,58,109,3,222,195,227,77,142,131,230,78,87,163,219,20,24,12,121,162,120,18,16,4,5,0,130,40,32,8,226,113,112,141,250,45,100,219,214,253,238,248,54,250,103,69,53,134,162,178,217,133,11,103,172,42,95,93,181,176,120,109, +249,220,226,53,197,181,134,197,134,98,109,45,53,82,180,186,128,69,10,136,48,160,162,0,171,13,78,214,210,3,112,196,216,211,178,60,142,255,187,177,39,94,188,199,109,14,14,146,115,208,102,235,243,28,181,116,121,26,172,189,158,78,207,120,192,138,201,155, +8,130,2,0,65,82,134,207,18,242,145,173,105,172,222,222,68,254,247,73,106,244,139,170,141,21,21,117,133,117,53,139,75,87,150,204,44,56,165,106,126,241,138,226,233,198,133,250,98,237,76,157,158,55,82,163,70,141,21,21,4,9,97,0,121,27,49,160,30,61,109,40, +72,215,234,143,255,164,66,75,138,198,164,176,55,106,38,199,118,208,103,13,117,90,123,60,45,150,110,119,171,99,200,215,235,157,12,142,71,131,104,237,17,4,5,0,130,100,16,212,219,247,76,4,28,116,27,58,96,173,63,254,231,5,21,122,67,201,116,227,180,226,105, +198,186,202,249,197,75,43,235,138,150,24,203,117,139,74,103,22,206,209,26,249,25,250,34,109,57,17,15,26,106,16,227,82,252,88,228,32,209,159,32,17,57,56,102,239,178,105,198,193,177,14,132,52,33,143,254,158,138,35,250,27,234,217,179,89,3,116,180,115,72, +242,134,60,81,139,215,28,26,11,185,34,189,182,126,111,47,241,238,187,220,166,192,128,115,196,63,26,116,133,221,185,221,193,17,65,80,0,32,72,78,19,112,132,67,100,27,154,108,119,13,245,110,159,216,121,252,207,245,197,90,222,88,170,171,40,172,54,204,168, +152,91,56,147,252,127,93,213,130,226,217,186,66,97,94,217,156,194,105,188,150,155,110,44,211,149,11,122,190,152,136,3,3,45,101,75,180,242,255,123,226,33,253,253,7,141,36,251,43,137,206,64,248,168,30,192,39,177,12,161,249,184,137,129,241,99,30,187,230, +67,30,60,13,207,159,120,29,75,193,63,81,49,33,17,241,226,241,91,67,110,242,211,236,28,245,155,137,231,62,108,235,245,140,68,2,226,144,173,207,75,12,124,196,228,179,4,109,33,111,52,132,137,148,8,146,103,2,192,235,197,158,27,72,254,66,199,198,146,205,234, +26,243,91,77,141,246,230,143,248,39,58,190,2,138,180,70,168,48,148,232,42,202,231,20,86,199,164,120,109,113,141,161,178,100,102,65,53,49,177,85,134,18,109,25,249,125,105,92,130,98,242,239,139,5,3,103,44,252,255,236,221,75,106,194,64,0,128,225,104,226, +139,90,104,233,190,208,131,120,75,47,215,19,20,173,90,84,218,196,81,155,206,152,62,20,234,174,208,133,223,7,1,5,31,193,133,243,79,72,50,119,189,126,28,232,211,26,187,157,163,173,125,184,235,93,63,63,123,36,33,141,223,233,102,72,187,240,189,136,82,136, +91,90,237,38,196,193,61,196,125,173,226,140,61,45,23,184,110,229,217,186,92,132,213,122,82,46,227,27,103,241,125,207,211,199,229,60,126,196,244,117,182,153,174,158,222,94,222,247,217,60,76,178,101,124,189,123,231,195,25,33,132,203,11,128,162,40,178,241, +120,44,2,224,183,249,118,115,121,97,136,3,254,34,62,94,52,51,251,250,103,182,253,57,19,79,119,180,235,118,138,172,46,234,230,105,63,239,12,175,6,131,56,213,79,235,239,118,143,182,162,119,221,105,223,222,15,135,231,206,57,72,231,39,196,25,123,21,7,245, +144,53,153,80,197,45,93,63,183,137,223,183,41,119,161,42,55,135,127,171,109,154,237,239,110,246,217,182,191,255,58,64,144,213,15,205,145,137,195,145,130,188,217,209,188,104,157,236,47,112,106,52,26,253,219,119,183,106,167,38,3,192,197,105,251,9,0,64, +0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,128,191,246,33,192,0,100,235,173,153,70,62,64, +37,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; + +const char* JUCEAppIcon_png = (const char*) temp_binary_data_0; + + +const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) noexcept +{ + unsigned int hash = 0; + if (resourceNameUTF8 != 0) + while (*resourceNameUTF8 != 0) + hash = 31 * hash + (unsigned int) *resourceNameUTF8++; + + switch (hash) + { + case 0xdb43fd77: numBytes = 45854; return JUCEAppIcon_png; + default: break; + } + + numBytes = 0; + return nullptr; +} + +const char* namedResourceList[] = +{ + "JUCEAppIcon_png" +}; + +const char* originalFilenames[] = +{ + "JUCEAppIcon.png" +}; + +const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept +{ + for (unsigned int i = 0; i < (sizeof (namedResourceList) / sizeof (namedResourceList[0])); ++i) + { + if (namedResourceList[i] == resourceNameUTF8) + return originalFilenames[i]; + } + + return nullptr; +} + +} diff --git a/extras/AudioPluginHost/JuceLibraryCode/BinaryData.h b/extras/AudioPluginHost/JuceLibraryCode/BinaryData.h new file mode 100644 index 0000000000..60258e0ad0 --- /dev/null +++ b/extras/AudioPluginHost/JuceLibraryCode/BinaryData.h @@ -0,0 +1,30 @@ +/* ========================================================================================= + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#pragma once + +namespace BinaryData +{ + extern const char* JUCEAppIcon_png; + const int JUCEAppIcon_pngSize = 45854; + + // Number of elements in the namedResourceList and originalFileNames arrays. + const int namedResourceListSize = 1; + + // Points to the start of a list of resource names. + extern const char* namedResourceList[]; + + // Points to the start of a list of resource filenames. + extern const char* originalFilenames[]; + + // If you provide the name of one of the binary resource variables above, this function will + // return the corresponding data and its size (or a null pointer if the name isn't found). + const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) noexcept; + + // If you provide the name of one of the binary resource variables above, this function will + // return the corresponding original, non-mangled filename (or a null pointer if the name isn't found). + const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept; +} diff --git a/extras/AudioPluginHost/JuceLibraryCode/JuceHeader.h b/extras/AudioPluginHost/JuceLibraryCode/JuceHeader.h index f4dadd2669..9d236c74b2 100644 --- a/extras/AudioPluginHost/JuceLibraryCode/JuceHeader.h +++ b/extras/AudioPluginHost/JuceLibraryCode/JuceHeader.h @@ -29,6 +29,7 @@ #include #include +#include "BinaryData.h" #if ! DONT_SET_USING_JUCE_NAMESPACE // If your code uses a lot of JUCE classes, then this will obviously save you diff --git a/extras/AudioPluginHost/Source/FilterGraph.cpp b/extras/AudioPluginHost/Source/Filters/FilterGraph.cpp similarity index 93% rename from extras/AudioPluginHost/Source/FilterGraph.cpp rename to extras/AudioPluginHost/Source/Filters/FilterGraph.cpp index de33ad33a9..c894505d22 100644 --- a/extras/AudioPluginHost/Source/FilterGraph.cpp +++ b/extras/AudioPluginHost/Source/Filters/FilterGraph.cpp @@ -25,10 +25,10 @@ */ #include "../JuceLibraryCode/JuceHeader.h" -#include "MainHostWindow.h" +#include "../UI/MainHostWindow.h" #include "FilterGraph.h" #include "InternalFilters.h" -#include "GraphEditorPanel.h" +#include "../UI/GraphEditorPanel.h" //============================================================================== @@ -105,9 +105,9 @@ void FilterGraph::addFilterCallback (AudioPluginInstance* instance, const String { if (instance == nullptr) { - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - TRANS("Couldn't create filter"), - error); + AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon, + TRANS("Couldn't create filter"), + error); } else { @@ -152,9 +152,13 @@ PluginWindow* FilterGraph::getOrCreateWindowFor (AudioProcessorGraph::Node* node { jassert (node != nullptr); + #if JUCE_IOS || JUCE_ANDROID + closeAnyOpenPluginWindows(); + #else for (auto* w : activePluginWindows) if (w->node == node && w->type == type) return w; + #endif if (auto* processor = node->getProcessor()) { @@ -454,3 +458,9 @@ void FilterGraph::restoreFromXml (const XmlElement& xml) graph.removeIllegalConnections(); } + +File FilterGraph::getDefaultGraphDocumentOnMobile() +{ + auto persistantStorageLocation = File::getSpecialLocation (File::userApplicationDataDirectory); + return persistantStorageLocation.getChildFile ("state.filtergraph"); +} diff --git a/extras/AudioPluginHost/Source/FilterGraph.h b/extras/AudioPluginHost/Source/Filters/FilterGraph.h similarity index 95% rename from extras/AudioPluginHost/Source/FilterGraph.h rename to extras/AudioPluginHost/Source/Filters/FilterGraph.h index 5a260931fb..62661b5283 100644 --- a/extras/AudioPluginHost/Source/FilterGraph.h +++ b/extras/AudioPluginHost/Source/Filters/FilterGraph.h @@ -26,7 +26,7 @@ #pragma once -#include "PluginWindow.h" +#include "../UI/PluginWindow.h" //============================================================================== @@ -78,6 +78,8 @@ public: File getLastDocumentOpened() override; void setLastDocumentOpened (const File& file) override; + static File getDefaultGraphDocumentOnMobile(); + //============================================================================== AudioProcessorGraph graph; diff --git a/extras/AudioPluginHost/Source/FilterIOConfiguration.cpp b/extras/AudioPluginHost/Source/Filters/FilterIOConfiguration.cpp similarity index 96% rename from extras/AudioPluginHost/Source/FilterIOConfiguration.cpp rename to extras/AudioPluginHost/Source/Filters/FilterIOConfiguration.cpp index 646e8dc5aa..3261ba9ede 100644 --- a/extras/AudioPluginHost/Source/FilterIOConfiguration.cpp +++ b/extras/AudioPluginHost/Source/Filters/FilterIOConfiguration.cpp @@ -25,9 +25,9 @@ */ #include "../JuceLibraryCode/JuceHeader.h" -#include "GraphEditorPanel.h" +#include "../UI/GraphEditorPanel.h" #include "InternalFilters.h" -#include "MainHostWindow.h" +#include "../UI/MainHostWindow.h" #include "FilterIOConfiguration.h" diff --git a/extras/AudioPluginHost/Source/FilterIOConfiguration.h b/extras/AudioPluginHost/Source/Filters/FilterIOConfiguration.h similarity index 100% rename from extras/AudioPluginHost/Source/FilterIOConfiguration.h rename to extras/AudioPluginHost/Source/Filters/FilterIOConfiguration.h diff --git a/extras/AudioPluginHost/Source/Filters/InternalFilters.cpp b/extras/AudioPluginHost/Source/Filters/InternalFilters.cpp new file mode 100644 index 0000000000..0b1f2c8d84 --- /dev/null +++ b/extras/AudioPluginHost/Source/Filters/InternalFilters.cpp @@ -0,0 +1,399 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2017 - ROLI Ltd. + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 5 End-User License + Agreement and JUCE 5 Privacy Policy (both updated and effective as of the + 27th April 2017). + + End User License Agreement: www.juce.com/juce-5-licence + Privacy Policy: www.juce.com/juce-5-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "InternalFilters.h" +#include "FilterGraph.h" + +//============================================================================== +class InternalPlugin : public AudioPluginInstance +{ +protected: + InternalPlugin (const PluginDescription& descr, + const AudioChannelSet& channelSetToUse = AudioChannelSet::stereo()) + : AudioPluginInstance (getBusProperties (descr.numInputChannels == 0, channelSetToUse)), + name (descr.fileOrIdentifier.upToFirstOccurrenceOf (":", false, false)), + state (descr.fileOrIdentifier.fromFirstOccurrenceOf (":", false, false)), + isGenerator (descr.numInputChannels == 0), + hasMidi (descr.isInstrument), + channelSet (channelSetToUse) + { + jassert (channelSetToUse.size() == descr.numOutputChannels); + } + +public: + //============================================================================== + const String getName() const override { return name; } + double getTailLengthSeconds() const override { return 0.0; } + bool acceptsMidi() const override { return hasMidi; } + bool producesMidi() const override { return hasMidi; } + AudioProcessorEditor* createEditor() override { return nullptr; } + bool hasEditor() const override { return false; } + int getNumPrograms() override { return 0; } + int getCurrentProgram() override { return 0; } + void setCurrentProgram (int) override {} + const String getProgramName (int) override { return {}; } + void changeProgramName (int, const String&) override {} + void getStateInformation (juce::MemoryBlock&) override {} + void setStateInformation (const void*, int) override {} + + //============================================================================== + bool isBusesLayoutSupported (const BusesLayout& layout) const override + { + if (! isGenerator) + { + if (layout.getMainOutputChannelSet() != channelSet) + return false; + } + + if (layout.getMainInputChannelSet() != channelSet) + return false; + + return true; + } + + //============================================================================== + void fillInPluginDescription (PluginDescription& description) const override + { + description = getPluginDescription (name + ":" + state, + isGenerator, + hasMidi, + channelSet); + } + + static PluginDescription getPluginDescription (const String& identifier, + bool registerAsGenerator, + bool acceptsMidi, + const AudioChannelSet& channelSetToUse + = AudioChannelSet::stereo()) + { + PluginDescription descr; + auto pluginName = identifier.upToFirstOccurrenceOf (":", false, false); + auto pluginState = identifier.fromFirstOccurrenceOf (":", false, false); + + descr.name = pluginName; + descr.descriptiveName = pluginName; + descr.pluginFormatName = "Internal"; + descr.category = (registerAsGenerator ? (acceptsMidi ? "Synth" : "Generator") : "Effect"); + descr.manufacturerName = "ROLI Ltd."; + descr.version = ProjectInfo::versionString; + descr.fileOrIdentifier = pluginName + ":" + pluginState; + descr.uid = pluginName.hashCode(); + descr.isInstrument = (acceptsMidi && registerAsGenerator); + descr.numInputChannels = (registerAsGenerator ? 0 : channelSetToUse.size()); + descr.numOutputChannels = channelSetToUse.size(); + + return descr; + } +private: + static BusesProperties getBusProperties (bool registerAsGenerator, + const AudioChannelSet& channelSetToUse) + { + return registerAsGenerator ? BusesProperties().withOutput ("Output", channelSetToUse) + : BusesProperties().withInput ("Input", channelSetToUse) + .withOutput ("Output", channelSetToUse); + } + + //============================================================================== + String name, state; + bool isGenerator, hasMidi; + AudioChannelSet channelSet; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InternalPlugin) +}; + +//============================================================================== +class SineWaveSynth : public InternalPlugin +{ +public: + SineWaveSynth (const PluginDescription& descr) : InternalPlugin (descr) + { + const int numVoices = 8; + + // Add some voices... + for (int i = numVoices; --i >= 0;) + synth.addVoice (new SineWaveVoice()); + + // ..and give the synth a sound to play + synth.addSound (new SineWaveSound()); + } + + static String getIdentifier() + { + return "Sine Wave Synth"; + } + + static PluginDescription getPluginDescription() + { + return InternalPlugin::getPluginDescription (getIdentifier(), true, true); + } + + //============================================================================== + void prepareToPlay (double newSampleRate, int) override + { + synth.setCurrentPlaybackSampleRate (newSampleRate); + } + + void releaseResources() override {} + + //============================================================================== + void processBlock (AudioBuffer& buffer, MidiBuffer& midiMessages) override + { + const int numSamples = buffer.getNumSamples(); + + buffer.clear(); + synth.renderNextBlock (buffer, midiMessages, 0, numSamples); + buffer.applyGain (0.8f); + } + +private: + //============================================================================== + class SineWaveSound : public SynthesiserSound + { + public: + SineWaveSound() {} + + bool appliesToNote (int /*midiNoteNumber*/) override { return true; } + bool appliesToChannel (int /*midiChannel*/) override { return true; } + }; + + class SineWaveVoice : public SynthesiserVoice + { + public: + SineWaveVoice() + : currentAngle (0), angleDelta (0), level (0), tailOff (0) + { + } + + bool canPlaySound (SynthesiserSound* sound) override + { + return dynamic_cast (sound) != nullptr; + } + + void startNote (int midiNoteNumber, float velocity, + SynthesiserSound* /*sound*/, + int /*currentPitchWheelPosition*/) override + { + currentAngle = 0.0; + level = velocity * 0.15; + tailOff = 0.0; + + double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber); + double cyclesPerSample = cyclesPerSecond / getSampleRate(); + + angleDelta = cyclesPerSample * 2.0 * double_Pi; + } + + void stopNote (float /*velocity*/, bool allowTailOff) override + { + if (allowTailOff) + { + // start a tail-off by setting this flag. The render callback will pick up on + // this and do a fade out, calling clearCurrentNote() when it's finished. + + if (tailOff == 0.0) // we only need to begin a tail-off if it's not already doing so - the + // stopNote method could be called more than once. + tailOff = 1.0; + } + else + { + // we're being told to stop playing immediately, so reset everything.. + + clearCurrentNote(); + angleDelta = 0.0; + } + } + + void pitchWheelMoved (int /*newValue*/) override + { + // not implemented for the purposes of this demo! + } + + void controllerMoved (int /*controllerNumber*/, int /*newValue*/) override + { + // not implemented for the purposes of this demo! + } + + void renderNextBlock (AudioBuffer& outputBuffer, int startSample, int numSamples) override + { + if (angleDelta != 0.0) + { + if (tailOff > 0) + { + while (--numSamples >= 0) + { + const float currentSample = (float) (sin (currentAngle) * level * tailOff); + + for (int i = outputBuffer.getNumChannels(); --i >= 0;) + outputBuffer.addSample (i, startSample, currentSample); + + currentAngle += angleDelta; + ++startSample; + + tailOff *= 0.99; + + if (tailOff <= 0.005) + { + // tells the synth that this voice has stopped + clearCurrentNote(); + + angleDelta = 0.0; + break; + } + } + } + else + { + while (--numSamples >= 0) + { + const float currentSample = (float) (sin (currentAngle) * level); + + for (int i = outputBuffer.getNumChannels(); --i >= 0;) + outputBuffer.addSample (i, startSample, currentSample); + + currentAngle += angleDelta; + ++startSample; + } + } + } + } + + private: + double currentAngle, angleDelta, level, tailOff; + }; + + //============================================================================== + Synthesiser synth; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SineWaveSynth) +}; + +//============================================================================== +class ReverbFilter : public InternalPlugin +{ +public: + ReverbFilter (const PluginDescription& descr) : InternalPlugin (descr) + {} + + static String getIdentifier() + { + return "Reverb"; + } + + static PluginDescription getPluginDescription() + { + return InternalPlugin::getPluginDescription (getIdentifier(), false, false); + } + + void prepareToPlay (double newSampleRate, int) override + { + reverb.setSampleRate (newSampleRate); + } + + void reset() override + { + reverb.reset(); + } + + void releaseResources() override {} + + void processBlock (AudioBuffer& buffer, MidiBuffer&) override + { + auto numChannels = buffer.getNumChannels(); + + if (numChannels == 1) + reverb.processMono (buffer.getWritePointer (0), buffer.getNumSamples()); + else + reverb.processStereo (buffer.getWritePointer (0), + buffer.getWritePointer (1), + buffer.getNumSamples()); + + for (int ch = 2; ch < numChannels; ++ch) + buffer.clear (ch, 0, buffer.getNumSamples()); + } + +private: + Reverb reverb; +}; + +//============================================================================== +InternalPluginFormat::InternalPluginFormat() +{ + { + AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); + p.fillInPluginDescription (audioOutDesc); + } + + { + AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); + p.fillInPluginDescription (audioInDesc); + } + + { + AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); + p.fillInPluginDescription (midiInDesc); + } +} + +AudioPluginInstance* InternalPluginFormat::createInstance (const String& name) +{ + if (name == audioOutDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); + if (name == audioInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); + if (name == midiInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); + + + if (name == SineWaveSynth::getIdentifier()) return new SineWaveSynth (SineWaveSynth::getPluginDescription()); + if (name == ReverbFilter::getIdentifier()) return new ReverbFilter (ReverbFilter::getPluginDescription()); + + return nullptr; +} + +void InternalPluginFormat::createPluginInstance (const PluginDescription& desc, + double /*initialSampleRate*/, + int /*initialBufferSize*/, + void* userData, + void (*callback) (void*, AudioPluginInstance*, const String&)) +{ + auto* p = createInstance (desc.name); + + callback (userData, p, p == nullptr ? NEEDS_TRANS ("Invalid internal filter name") : String()); +} + +bool InternalPluginFormat::requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept +{ + return false; +} + +void InternalPluginFormat::getAllTypes (OwnedArray& results) +{ + results.add (new PluginDescription (audioInDesc)); + results.add (new PluginDescription (audioOutDesc)); + results.add (new PluginDescription (midiInDesc)); + results.add (new PluginDescription (SineWaveSynth::getPluginDescription())); + results.add (new PluginDescription (ReverbFilter::getPluginDescription())); +} diff --git a/extras/AudioPluginHost/Source/InternalFilters.h b/extras/AudioPluginHost/Source/Filters/InternalFilters.h similarity index 100% rename from extras/AudioPluginHost/Source/InternalFilters.h rename to extras/AudioPluginHost/Source/Filters/InternalFilters.h diff --git a/extras/AudioPluginHost/Source/HostStartup.cpp b/extras/AudioPluginHost/Source/HostStartup.cpp index 9cfe5b465f..b350f6420e 100644 --- a/extras/AudioPluginHost/Source/HostStartup.cpp +++ b/extras/AudioPluginHost/Source/HostStartup.cpp @@ -25,8 +25,8 @@ */ #include "../JuceLibraryCode/JuceHeader.h" -#include "MainHostWindow.h" -#include "InternalFilters.h" +#include "UI/MainHostWindow.h" +#include "Filters/InternalFilters.h" #if ! (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_AU) #error "If you're building the audio plugin host, you probably want to enable VST and/or AU support" @@ -75,6 +75,9 @@ public: { File fileToOpen; + #if JUCE_ANDROID || JUCE_IOS + fileToOpen = FilterGraph::getDefaultGraphDocumentOnMobile(); + #else for (int i = 0; i < getCommandLineParameterArray().size(); ++i) { fileToOpen = File::getCurrentWorkingDirectory().getChildFile (getCommandLineParameterArray()[i]); @@ -82,6 +85,7 @@ public: if (fileToOpen.existsAsFile()) break; } + #endif if (! fileToOpen.existsAsFile()) { @@ -105,6 +109,15 @@ public: LookAndFeel::setDefaultLookAndFeel (nullptr); } + void suspended() override + { + #if JUCE_ANDROID || JUCE_IOS + if (GraphDocumentComponent* graph = mainWindow->graphHolder.get()) + if (FilterGraph* ioGraph = graph->graph.get()) + ioGraph->saveDocument (FilterGraph::getDefaultGraphDocumentOnMobile()); + #endif + } + void systemRequestedQuit() override { if (mainWindow != nullptr) @@ -113,6 +126,12 @@ public: JUCEApplicationBase::quit(); } + void backButtonPressed() override + { + if (mainWindow->graphHolder != nullptr) + mainWindow->graphHolder->hideLastSidePanel(); + } + const String getApplicationName() override { return "Juce Plug-In Host"; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return true; } @@ -124,10 +143,12 @@ private: ScopedPointer mainWindow; }; -static PluginHostApp& getApp() { return *dynamic_cast(JUCEApplication::getInstance()); } -ApplicationCommandManager& getCommandManager() { return getApp().commandManager; } -ApplicationProperties& getAppProperties() { return *getApp().appProperties; } +static PluginHostApp& getApp() { return *dynamic_cast(JUCEApplication::getInstance()); } +ApplicationProperties& getAppProperties() { return *getApp().appProperties; } +ApplicationCommandManager& getCommandManager() { return getApp().commandManager; } + +bool isOnTouchDevice() { return Desktop::getInstance().getMainMouseSource().isTouch(); } // This kicks the whole thing off.. START_JUCE_APPLICATION (PluginHostApp) diff --git a/extras/AudioPluginHost/Source/InternalFilters.cpp b/extras/AudioPluginHost/Source/InternalFilters.cpp deleted file mode 100644 index 497c82827e..0000000000 --- a/extras/AudioPluginHost/Source/InternalFilters.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library. - Copyright (c) 2017 - ROLI Ltd. - - JUCE is an open source library subject to commercial or open-source - licensing. - - By using JUCE, you agree to the terms of both the JUCE 5 End-User License - Agreement and JUCE 5 Privacy Policy (both updated and effective as of the - 27th April 2017). - - End User License Agreement: www.juce.com/juce-5-licence - Privacy Policy: www.juce.com/juce-5-privacy-policy - - Or: You may also use this code under the terms of the GPL v3 (see - www.gnu.org/licenses). - - JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER - EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE - DISCLAIMED. - - ============================================================================== -*/ - -#include "../JuceLibraryCode/JuceHeader.h" -#include "InternalFilters.h" -#include "FilterGraph.h" - - -//============================================================================== -InternalPluginFormat::InternalPluginFormat() -{ - { - AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); - p.fillInPluginDescription (audioOutDesc); - } - - { - AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); - p.fillInPluginDescription (audioInDesc); - } - - { - AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); - p.fillInPluginDescription (midiInDesc); - } -} - -AudioPluginInstance* InternalPluginFormat::createInstance (const String& name) -{ - if (name == audioOutDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); - if (name == audioInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); - if (name == midiInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); - - return nullptr; -} - -void InternalPluginFormat::createPluginInstance (const PluginDescription& desc, - double /*initialSampleRate*/, - int /*initialBufferSize*/, - void* userData, - void (*callback) (void*, AudioPluginInstance*, const String&)) -{ - auto* p = createInstance (desc.name); - - callback (userData, p, p == nullptr ? NEEDS_TRANS ("Invalid internal filter name") : String()); -} - -bool InternalPluginFormat::requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept -{ - return false; -} - -void InternalPluginFormat::getAllTypes (OwnedArray& results) -{ - results.add (new PluginDescription (audioInDesc)); - results.add (new PluginDescription (audioOutDesc)); - results.add (new PluginDescription (midiInDesc)); -} diff --git a/extras/AudioPluginHost/Source/JUCEAppIcon.png b/extras/AudioPluginHost/Source/JUCEAppIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2564a24f7846d841e57b35b191bd8fa82ce648aa GIT binary patch literal 45854 zcmb@tWk6fOw+9$Pa0^b+;Iz0q0g4uFad+3^9;CPy3KS_?3dOCs7AvK=yB2qf6iGJy z?|X0e!@m8p%a`1_%sF%B%x{j(+*nO@MLcXuYybd&r>rFR1^@seAAtZ&bmY$;znOdF z&oeK1eJ?FHTQ6S=4;z4twVS04MA^l{&gPAcg|+|NVH*hm0F})_Ti;7xO;yaw&4tV2 zUmq?%7k4Bz03ZSNbGNW^vhjjg+Soa`N-~_acQZg7tR)%r1l4%d++W(*J17Ns*k}c) zYg+|4S&3RRK&2oOequ-lE;e2k5I+}ZS5GlNNrwOM6+=G%d(F)N`A-)wCrO6?Qz(5k zO~^|(4;zRemk_5FkB~4#Sd@!bP*_+%m;=Jc!z;+m!_Upn!^y`lCcq;mzz6xSKL+Gz z9@e&EZ{!sIYb<0-lEL1~%Uz6{+t=5Z%a@Ugl+rtXEaJG#9hH@8s>0x8x z<>sO7=H~q0TGX_6^K$dFcXNlleEA=(LD9(e^}Sso!?UU@-TeqKR&c_IFnG9q#cd?GymO)KYSh<5W z*8fAR!1KS-{sV-IJ91<>8xIE`8*2p*Hy6l%CNAdizsn-`zw-MpTI>H+7J2#qm6jVR z4EMj~{l6{uf4@Rv=-=c2fEU^LANbq2A~ElQ1h=QBkRbq2lb|doqwTkJ{0Sq}*!vq| zoOAl&_}7hTgJkDziUJPjAN*IZvq=aqP|gb3ggC~#5DbG5uaJr zt>r)y-Q*?fp48;&mai)9mcdU?V1K-G3E_$M;1=#FVmb(Vx3Cl&-Ql9xf(C8~EJ*s0 zN{oVz;ejq0?^VI87iErbIyB!(Hw{UVlj2Gwe+S5%wjFVaT>aw5Q2}TYSYGXp)&}0X zb^ud=z9=z*P2uxq2e`!Jog6beRgGc;KQ)V+!&jc`z+aI+`Rh00phS-!GTbKRkozaa z0L|mVQ^q;-@J<-POZ` zuRQ)wUK`)_u^-h+Zb3umy?04rlJ6zo=k<5}koihL1lb-|#QxOP)uk#Gz!yF1IM9$x z0-7oI1v#smMK;WAHqU_>*GbBJ1lwhs&@UTaOuqP#mX8rb?qU~3Bd{f!EQe`tEp1bt zB_BZo3Wtz<0Z69= z^&b-XyJZz8P~0eN4KzpQbbLatZ+z*@YrCr$oBp2V12IvfAy#hrxsPx4c0Nz0ZU5|E z?aGME_h$n4G6cqzCt_x5_^%n<74Vzmwe{TyC2f-l(rJw)MZ9o&<*X?t62#LKff@cy zj-v8lRjA`|<4YLc&aHS9et(glH~l~G4`Xwv6UNllu$6l@lO|szGNQvex_{29OFU3k zy!Y05~>8x-|n&WjJ;;Ag5TGV_0)MO%fx+s z^I5pd#oX76ln|92zmm=`7_roKd+(!g<5V6sL?nYWM==%=XU|!y{b+xfyXmZTvN^kw zqv)7z@Gc`yrv1krY$+gusol%~)3J7mPi}Mp0Yh;S+@~hX-3oC(%69&l z<~M8;9Kl#l~v$lPO)PniGBFdNPnp8yl0bH1-utG?VRV)i!Fp*GnYp`~w8LRs%EBTeF>9Rd1M7{RZPO;xl}7b0Q! zpB+QA@1B*a3mf^!Oj$+7nBp&v5E?R6G6r;(s4-^CjTPlRVdwR4^|zCFG1lJ9dGs8IexvyD<9?%k&b-Wmt3C##*oAJHHSauKfgxwlwVPgE1Y{Unl19ssWU;z zKcW{DEBdRyBgn?~bQZ@xSsh7iyqeu1=wy8=r~R8veV(&&x_MjJz5f|{`eXhPjIWBD zz(Kw!k#V?-W}}ySbn+AasgJ$6qaJa425mh;+*BW!C67k`!%V8JeN4AU&}8FW3F)4; z27dnWxzPxzvc=JTY~hOc4}2=U^iC4TwPXtKF!C&vW^AEa9Q;dNk5rm%ddUG#njxa+hcFYu}q>)}up8x)JBvDEFqRlu!nACg$E7#_GWzW(BvNq27 zQcL?MB~KIDPOHzqImFt|u@snW7eQ9Tkvp4_Zk&iL?eh;HpBkHc=U55;? zbWbtC7jJSY%IKdr<4Ovi&n$mY$m=Kz`;7jc($TShRhRCrQXX6z*{fkHb9uQGzGElj zZqTs-QCOpIQNZ=PkxmTGjd{mLh^h_7WeO;SPND{1L`+aE6LjvdKZR%>GQy;OfFdRM zIAau8K$lyK@guQ6dN)C`_3cTix`+$p{@G?Vn`wMIGV&18eG_Zay?U)aZkT}mFJ_Ws z^?K*L`saLM&WfG8GLPEu6m#L{L0gDNu#m7sfa5+v;CCQ5&)JF_9=OjGcOVIy%|}=I zV-RP3CJ*CT(_Q^o3mu+7c}l{omco6lg+zf`~8Ld2F@u2 zQT7vNM9R3sR@=&HxqOkXVn~(_>uOx>e&_cFd9F(DqWKv+Cr=?J?8KJ`4gL0f+71?pZ`5Ai4cv+lAE(cSef z4!;M~aDH<6M4kx#+01frdhqHrrRBX7_&VlsrD9OALJ?%O)(Kj_&Zc%5d}T5hLVEv|6YS zliyaK2HsU+2qCPeaUM*E_!E#aU{9YnKjaMNo51Azj#IBV)$5evei#t%mLAOtC?`?| zJF1rTmaYYNHset~(e!T!*9!((|G6+kJ@yuPBVB=iBiGcI0smIp<;LtxXG|b@@sy&u zb-XgUFZ(4jOQ>F==j}#01-V3i$Jpv$-Epf5M8{Kfj@i)rR_Gq` zYv$UQ;&5{$yPs&LEUe}#DQs>7WPjuPvb7;fuvNx`$}ptmD?(C#`buMA0>M=wQ4ox8 zZynmj*QpKB_XiIjO?)XNM~<9vR_Px^jvWTv+JhoQgHAp3`!E5i`5$~SmTiqEJs2CE6iW^C3)B$i^qMDF0M(7%y|D8j@^zm;JFZgL$@H*h_WW$7>*Tg z(r2X4&qzsHkWQ5aMs18G4gOo6>q)k$ix3$}FzvW1~cJ6;>LCP2{wIc(R zGunW}pzimvVb*(cPJ;}n!!e0j! zJ8V;Aa{f9QN^A-pUC}6eOSVQJ{z zWzL&U)>R&gwa>rFj!A$ENM-Lc6KdqM{F$6MYw2=GR4Tp3)eB{LtIZg9ZV#FVcG@&5B<&tWug$#CovnyoXQfLfvedKi_qmbNRBF4)UKsD5Oy}KW z7LglT-i4ek*IFVPYQOBM?I+Xy{6&P~&mM15@II_Jk^A`Rq5^7ycf+0)z2ES|5{DC`(7!CL)Q8=+hb zOb17r&U8i$`gLap3qp5NKjQjX1d?89n|}^US@F!{jc4zA!_OQvhFq)mqr`RRdwEO! zK~)(LBjCsW>p8-*{1EvO7}BSk^sp2&E4YzxQUi3~HZ61$b~!df<37D-@9;b)rN}^E5M=)>su3!LyXD6vvY8vz zPGy^!cd^7hzuvf8_h}r+h4U|bkX+~_qkySDr4x@;cdON64HOfe&I>T`%uoatB;k#} z^CulC;1qd|z?I~^e8GFU)MKi7?@NT*7Ts|ZPDVc{B_!=^k1N3Z-kBCA0!ovR9$t^r z-3U%M|H@iaX2a_~_WIOZX)LYd%pk=_5*?cto-F_x=F*^kIQtPYZ7!lg%ioXrW_#Qq zqDMT2&0QO?SB}1BAOn(pMu_Q!xGFy3J7H5c3yf<19^X!9qa4vl!)rnb7U4}Sm9tWA zIkkLv$K0G8{Ke+=z_@9L-Ka~n5W#6*>9b2^b0WxP?94dFL7unwk#8KO#E@p61|65f zHAAe7MQm_Ugw54>jmWdZ;FG@=$BdE%H)p^SUn(}qewEW@8Hoqf{)t;u&6gTd;te@7 zDm!R~ro5KttuQJ^6nR^Qu-gxzE-P8)G!53;Qpr;YTBbP!RP$b!B~eH%wopUrrhJ5QVN ziR^}w_V?$qjofulqlnd@DcR4BKH8YS@E3WI(lV_oC2aSibTLAb z0sHf3wgRn(N|X(gS%}{d;Oq=iRPanB@a>ohe?+X5Uu;b1XYhhxDr3spw!>RY$k6PQ z8{B7FPj999g1pg-9BC(j0F?G|%d8NC5j};D5F@cp_~*^!dO`TbK!b(FtVh{!$)Mz` z@W_kw&ahc++4}V$Kb@T%jvgLsC7EN;BB{u1b5hd zH8l&icI-Y%Br^VcLw{C|(mRhY>&|h$Mz+BLUm*m(p_Ayo;+Dgd07}+9RUT-HPN=4bx zS~pmOM+5L*r%ds!0okmJX=2>gGj%ee=SN-fOK8CviP#BI_ExyVO8g6-8)+A})3!+ZKNQw1lHkTL0-7Ne zs!|T-sP1C>S4}xVWIr=~tC(t<7Y(~8PpqJ&h4ux5gV|M#@6uwu>x5w#metrVw=CPQl5;h)p=eAm~G3;A~)c^X%tbw5vi% zPIadaYTI-=3=LNpSob)X($bOSxN>JU$U^zS_Z+Av_H>!?Fe3ICZ`xuvdM#-bU0ybKTE+RATbc*ec2Tfb2fPl~&IyY_=@j>Pkh37F z9U25E5)*K!j5?ldUA{MQXWsk$CpPgJ0?!$lRr@0%sAO2sN#*QrV6GW%^hqC88Me@c zr8{7F?#m(LKk*`aM8JL1VYj}i-Pyq|#VWZv?!6z8k(!_L(G$}5I5|I$<;u*$J7H3i zhn+NTUA+$wQ{czQcYN~&MKK2^lauNiNw~LVOmu`|rw+}q3XgdvW zCg=bq6Vcato0}}X!f-&PpBxnC>iBjPTRvRap7(GQ*gSMkOoa3@DUZFI%}aah3m1tQ z1EllHb$`BHlpH+*xxXJ@Zf~}%bja3_jMcTm_VS zAHLU&?{d6p* z_VAbO>}{<58$|H`j04TxoW%X3*)2IpGM!+)}Cp=wpT}dYL0{H^0SeG zN)-46ynR^V{VcXBzARN3u>bKBugM% zL}}JE1};iyFun7a7opxZg6I2$U|0=4T>S~7nZU8V7gU^p2VQ=^_g#1pcXC$P9Z?r11Eaj@sqFB zP%|>QH)9_n(ImMlk@)1NkYy0Uk*n`Z7^q|u*~~4UMi0ju4^!<3z7K3;$zb{ir0%vMBQ~F?en6FHSKly@i(1coUG+)8pH)gBhc1lma-O--LWNW_c>Kss|a!yK)urm z!{}W{%ZS^S#vQlR!snNdZ6K=NZ$UL(e-LZ%u8TZ$`A1tzCWF z>*~BeT2P=s!pLR(`TJ-CGiuM1JI}+jjP1C{wU*t$r`Kh--+B)c^<;_tF>UASbY#}L zfJ9FD0RP)|4(E~B8ws`jmwYvm@7|kYQnE?9MXX%0VCw(A0mm#7x0jIPI-`+^h zIkiy^m-x$^t=}qB0b-KhZBwsm<=5Ok3^=?=&%`^9{j(__hExQw!v_B$JVzX+4XxOD z)8=F6BfQ>c3avVTX86J9R9Pa2u~M2kRB;j8&Hw_O*V8=R1F_^lKC#z?Ti052Ml@^a z7v9j&{w8Q>Ne~tx>X4nY$op|a5c#(?ToZY%O@z=B?v0{P7A0Q6ILW>9S86k_`^$WF zr+|B^v%L0`YgDK60BMv^>y%Vov)QfX!8JO^%duFzk2$|wpGsmvfz2wqKm7h8Tb=|-y*%3 z*gt!RSia-;b2(dA9mgy1M?r?GEyP`t7p<^I>s9%GRiC#VU}U-DS*YKmR>lhNjjwL0 zzMBs>Y^giHzU5w3Ul;azSM0AcuadJLI*}8t)rtSXIgRnUVm&(>q+UHXTL3e*svFgR zT&waOkCtqx0xFk7JK9n>@#dx)G@|QHM(fPX@WqdK%Im zhi*889>NqEO8txws1aV`{9M0WW8}wFPveyQ#Qsqz#vB5yOB;md9KPE4woiatT8qSD z>Te>{3*F^FCP^Z1N?yW7Ru0HI-$y>UC zJbE9wL1a$d8a({$O{E*5C{-%#HF(e_?M}R#HE-InX)rl9Sg9HZ1#D8FjGD4=hm+z1 z#hS~W?tK%oQkFq5CD+3&XeSfVO#{Du3N(M%KzFadH1XuKw~wCO(nSoHK6x4bT|YDS zzpri%Y}y_k$Mcf_wT6j1`+mCI{z{N!VEER%(u{BN&Ix&lS@3fjU`F|{nm_>)d(VCO z%LMFyh@WyxwCzSupg0-FN;6DMFa5|tNf<*Dy0CQiawn0yRz0FvEv*K}mD-o!Xyus} z1ILyf*&8`@Sc&IPEMJYF>VP-)9C=IUUR+UC_UEsk-YP{Ao|xmw=cTuP>!V z@LeGUQDSaKWg%RgQ>b-%F#JB)6Q5F!nfjOq`HA26_Y%QNhCi-PfZq1R{cD{xMQ*Er zSL=tbSJ5&DaLAiO(8e6#L^(@Ynxjrv8mtLZ?{?BovmS3xe}5a=z#0#6$AXM}r6zY4 z*<2<@SYPRjIbbC@2(!0daCRh0U{*7mB8H0}3boOQj`Bk9en!jCtc=v(^ES{ur>0La zj?lxe3bj8IH~*@SJ=b;>))1-aLcXh$2b#@OxEpOd>!~gr{o?)SvkB1uJLC+n~~7Qv*_pdrgPHD zY)PW?%}}1B^0^Ta=eaOK0Fxlns*mP+doTBqMQf@axsFO(9X<8&2uTo+xwXmR|Fk$M5LhsR^ST5ksj9|hEE zbD=st{oM(iQB z0XyrIh_t=c3AoYoY7s##$4AkW8GVmV*sny6O}9qPz-Afefttk+QtGu^1+<{Q9A%rc z+DguW;13ZsVc#x1AsN4D(wpO^8WK*1W%fV=mtu;Tcg6E>6X)AOv=?qK<;qrKNo3_m6v zeDVZ|-XPPQn^PCCQ826h1#0o--0UgK-PFRFjIX_zoW5zO=y>5mft+Hxndc<|3u5M3 zt)=e2Nm&gdfR>MR1;s(5ho_434+nQ^M?=8`*-ym{Uz9MeaiJmXa%P?60-{NaPnbmy z2hM0<=gKfm>w$F0S#W^%+ME+!4|&_^yGWgpMND@w?3EU+6lx}I;m*5y;%@N+Q@frh zhJSf6{WgM~xf;{f53c=9>sqSLn#*`OSl9_e4BHjzv`*!J%nms-O;^3#Mw4j8wB(>p zQ6);C3tuQls4AcmMNh%2z2Y_uM)mrT4!b^tKF(Ghi!TxM!558N^rD^k%-fs^IS3`p z^3lz{bTD7I@2b>MQbGHn=#YP-{${zCzHJ)*YzDpx_P_L*n^8<79##**4F7odxvBOs z)LLKz2SVrPpuLtMrO4&dP0G=6{o|cx@x)xO&8IMxj9_0PQWQVe*8q~1y?jkIUbuG2 zNVc5z1F5_1G-Gpfd!d>?QzdBCurdM!&d)DY@R;FRiEF zVBJ~Hn`|_oFQ$e*oA@1C&&2`^*~H!Q0APoH=ZBAc-Q&*L`8!fBr_Ms~&#lK-jH^Dt zoi1czy8H;_@({FtLony>39V=HmUM4kIR|1gAUY^Ngn2u_Mr>i^#^N{2ny2M9o*-31 zl$U%ThzZ>vg;`hF^(ROQ0c_OUu*(iAu@DtW*tQd#+UdxN{FA%<9<2V^#(~0ObCma$ zN@d`SXQxBBFwn5HKo8zwPe4qUKc|v7{Ns)9=RrhU-Fg^{8LJA9P=p8}3h8z{R~F)T z5}o@39~eyGPmYsU@q)~a#j|;t^E4Xo``+78# zLngzAenM676KwP#nZZ=1{NxZUz9jjl{M3#1Ik5mM5oFRPgu1_ zb75LTXQW!$kM5O&-3zZ#^nBOx@YZe`Put0;LiZciqxLJH8aM3ZE`G9vOzhz(z!AKZ z8ws@6ZA=pgQ^WPK=WUypN#f>?2eQ+0JxUD)IkA{`FX8|s0Dr}S7W4UBr)64QqVo9! zLBvNs-1JlQ7Te?IAM^J}{vPI%xKJM)CLyUDj&U(2b!3g2d)Px7q@{}_qC5y=C7|0z-f$w z@_@g4b@XIdcbhHzM`OKdu|UY)^YU8~;%$Uog-Ru_RV{&9m%|@#@HT=I^Rs`5U(jzl z$mRE214StAUq+>|cff_R&HkHc`nF454+MVcS=Emk{+w#dbVb`(fFXm(9y0j$=B_ab zXGMxVwuQfJq5}6^K_Jh>@kL#u_Mo_GaP>Rcz4=9oaj#Urvl?*Vlax?DM#Cc^)1Ee9 z5`{M9wi{G8YsMO-qkh!>Y0ZlnnGn&(t5cGqcg{};#ccxdtoh+$p-MixBT~@wMN(%qP7qYAFm5ZlTA%ufKu1(a1 zo0#+C^zq*a>gau^+bMBy+7pZX40U9O z_U}F@{yr(g)PLhiHloM(0{HnOusWscq5n)ZsE4#^djpBN#nHQlBMquR!;@wQlZxK< z8>J>F&FDcL`c(H-|54@|g6i!frym0$Q$F~(;7&3kSPBa82uri?|iBC+clIuYmbg1{YfuCC~aQ1 zEh>zaSmyHhbK>aXHvt;G3)MaLJY1VaKy^X6(>P#+9uq z{d=?RkQ$}zW&7g%7RpFVJ7!)uBK_t~cQR&Z@KGu=Y+;RD<`O@NSmwZtzx>SKb;O&e z*g5t&4XVS)Mp9b&Sm1EUR8nvELR)1V7G!jTbM>!0Mi9 z`7lC2u=wN+qte<707~P&sYmgU;u+^~4bI>SXuGcgj{saGqr+U?Q(0jMGZ5#Lz}H~I z4ozTO0*UNqjL}7BcQn|4k0abyGK=01XBRsS#r9n-gOPDcg|0!vcib=m0?g>ylytMr zr2aU@OK=?uVhTII4?Kz0j^(>1K@SV-59}ru5?|Q>d_VuN8&-eK*9nN7On}L!$!wst zG@dwVo;i(7lun+%V^A_p%L-gU9x~J?Ef@Y=?SBPI6rpVV)YfO`BC&ZId%GO0Td9LY z!?PugGBMk&R=o9C0+xiYhHA_}>98w9*U+S*UxHm*99$$Qn5pAU`F`8RQDT7sRVe@B zAk0M-`ock6mv{xEKF&3yO|?gm<>`|Eiq(xbvd<6rCVE?bUAYy44YqM49|gE*O=9YhotQzoTDT8p_>mz!1N@z}8x_UfsG=i3fN9|MH&ePO_>{S}9N zw=Uqg5H?`??Oo-Kzp&3^)OL^C=V?05+lF(Ymd_^@V2=-W>u8%?=tj356Q9}gyg?#yDw`?P$CM(OcBg7m}YgZ#!>Ci%-CrB2%E+X$}%}>=6Gfwc3kKW|JZW3sR^7w0t z*qY&3zQs`hf|=|RyZdF~H)A!xv&x@`CY*0|zspyd*%G2Gk;`)n(Dj%&pXs}M?%mq& zy#%3!(j)7MaY%K*zmf=MJkv--ES#%~v~GHeUbKp~lT!}`k-jSm_y_T{!FAaLgbM`3 z`n#X2`Tdi`w@tn|@&Tn(9ZUTvg#n0nl+kbW z1dVxi(ZMY%2gbwgeH(^<=-7~wk|)CET_91Vdo$H^THchuUWkvmzbPPj?=UcztYR4a z%}=HPFfow8K4h#jM<}8mcQ_tX${AACLCWRW`7CIzC|4Yvnh<4-kPz^Xo1FxVS3r^# z`aNq@Po}fRis`xLo`t3WxGKp0Uya<=JGO-^6bKP?{1PQTm~Q|h=j5JD9t<$epYubj z_&dHBZ_Py1W5ooJ@#wpYF5NpGDu{@%mkM3pLN%C1JeDLG`RloF{uwc<9*9Rp>v?T; zrQiRrNM$@Nkoo11;7M`Ef^00?sE%VV87m&d(S?_Z3I-*@mY)00eqS7&4=?%|C5AR7 zG8_11`0Z06?C|e=fYC<6F8A*Ez!tWJIv~8@f{xTa z=Z{sny5I+blw6lDqF-Oyc^Yx})di8{K3?)VmPWC9eKPcP`Yv5zCbsc?P<$htS2+Bo zl2$3SD1o?rF03(F@CQay80Cqbp17TF1Vtr4#fD11VkxX4>j56^31omhXduf&=wn+w z@#r#_b9YV!OhVz*W~gzEcmm(J4cy1Y!^l-+8k<7xoluiBG!~zpC351a|_v?HC_T^Ep@c8AU8uMb0$`E3VA@d_1c|p z3H_#qigeK3^B4ljUQplV~46;F+<}awsm1s%@|R6Po&g$!;w6H zww{!KyLvDIDp0{peRfsP^Z@L6mcKzeAfriLEvym&Gq+zKg%H<39X4Ffv!4FO>Wy8vPBdc51%!b5Fis)p!j^|2YTQP$ zrYiI-N9$bP$FhlQ2S_b-p>s2k02FImud z&{iKTq7W4!0}5*$kC>*aF`ons_jCZ3m}?&zmzICF1J(R^3jyY;BBk)FLiBOt;z9(P zPN}ToB#G87=l#t#&-n}t)y^}u!KN}ELW(jqCOC1GbEHa&(kRvwJBu`1(}U1C1cZM> zVHBu_`Jt#rc4y*NbyabReB(I7DU|V{G_32ls^Og4Bis1Db4rN*#3Sh=A)CXsp1Mf$ z#n@dfd;;onZG^nEX5&qs)#f%;{jL8BK}NWfL6GW}5O6F+K0?Q11PT&i1t6iiQ*=>E z`f^ubw3s231w4pOE8uOm3?w#a-zWnFO`_|i32TtCy@!`;QpE--O6bFdOwKEDK=|69u7!ESbwK?J>4A_9Y< z2W4{2ER_18^y{)@;i>GFdt%r-qUp0nd20%o&#G{Q;AxR;S0lC|Ai==6uFTf)&YAHf zWcw9}Y(5tauggd4whHmSJ?s74x7~bZ1^_WCVZYq?`i?U~Y20Fb-J$J5LpGB`M^~-j z#e>>%xms->GHs9eVI(tcuqbDTwjh!5^FXg@B@9>qKswQ;ubG0d%(3LTDu!5K6>Ah? zfzp#vxsMxxU*sk^R{u1u+?IhVWlR(L9suI)y^EeUf5f0wjo(8|MkkPx*bvC!2WLJi z@VYc4cB$*@f1@sngO>mf?*vEL+dC}O53ET5XoEZPR5cfRZDN100p$|%9-euNUZhUC z7G$v}73LdX^HUyd1+tIq85uU72nlP)J09|MFg84p_T$sV84dF`?9QO4HKy(fqyHY} zbm)^@C7Jo#l=+V?nmq>*y}R2j^c-F5u=Ch3PbPyK>Bdi>y04CTX#RoY3 zF&AxApt>~x^3;xa%teF_nPm4|2wc=$tM{_pU9-R^#bz8e7^(FF^S(X^oi9j2&Xm{N z5O#{dS}}kOUt9)k5P_;y+#j7>esr3$#@w@Fl;Qq{80^12?qGI{XdVN&*m)TzDk0!vxb(D{F%a zyU2@ndhvRJMn|Y#=t)x;pETYFmUvDd~Zz(jtdzyoj1KFR-i71>;$(O2Fv-RPpumWPVWEa<=N2Ubt~ zHedTGZf7j|rC<<^JOOY{vW&d9>eTWw?is~RasOf)tcOg>WDLnW+^pLy$v zL^LVr%#kz1vGZoQ^Hn^GOy4N4wG*P}!x!1o9}h@T7-vzQc6BjC$TtD>$S|Pm!+psy zrn`CyLye5{dGZ&RhJFLI_;L-_amP>NB#FOK-P5=oAKM1#JtEz)$ld`kh5h5jk)J&% zQ_khzv0gH0eFWOQF*4N&gDZB8zCtL}?2Jn@ZOq&5fj0ibA8vzGIPS&?_@teH#G%4r z`LidmTtcml7qjH8aa+X7uE#|2fRho@bSnswG9w?-EvdiO3>G`A88%5_jSInQ^&W zII#XH`M&kLC_P~?%~nM6$EH!_6~GC#Bo|e?9CP_M^!nQe6ut_p{(nP6cRK+e-A$iH zkvD3Oa-a3ir6qke#Fq(-6&3&NP`Q~*c{08=fhdgy{M&|6lE}hgqYYF+pvAX1h_vaVB zsK06?7CWe}s}$**ZU#6;?xBv?;Ye3vIdMm>-h`NB2rvIrJ0;yv<|EwutKMp{QP-qY zWv+*&X+Bx9b9XDKi{nZcFp<&S(6tZ{Z%#@b&=by4gx7Txy1`+31OUfOmd(v?o_De#Ub9tk$nn=}3Q7Lo^p85~D3F$XvP*SXr zUuQJyBoO44%s-Ucz&OL|c>MyhO z=QGoZ8G5az{pKihnOO&C=k_kP&{xF(L1ZjyoCJhqN|9W^S@V|9Z7fSG1H@iV)kE{P zH}00MhV?x0Ut5kCf&cC?ic;PqJ{XbNVL*P^Q6a*|Z=g#Uaikym$zt#x#~Rhfs`Sx+ zR~x46w@#3vr4(8jTz@-FS&aum6w7io1)}^Ab`#(v)3a`N0UE;y;$MsO^2jO%3^%)I zqH(@MY)(WRAS1PUXVnCYyOsQ_S{DWlXK>-O3B;d7?vinU!EFHq&)6c+|MozTya@1v za7m-GEooaMCl6K;hON7XJv5i=v;@cPzOYkr_RqmI4wRyGtwicUaOtBRDv(ernPHvxIF4|9gtE=BAhe>e1FSqtxv{<-WKl7JCxx| z6Nc_2Tp$R3-3Y$`N{8yN2k&H2^V z52qp{rwJM{zJg;I^wGA7WTpX(1OnRLU(W-M>%g+w1jObZrd#wv&zX!Ces+E5+rq4g zeW!UEw3KaZuTQ#xp9bi6Mo}f*q+&{EHXTg$Z~T>OZn+gL-V95ydCq3nLod|WA#L}f z4A!4CV>XTfpUsgRoe?~?4>|FeG7vx!g)d)Oqd&yPXYZubnwQIC!=E%^KJ|~4D5eHzxNq{0f6F>IG zyM+y_0;OfO#kGanI<`=TiirT@-`^UiIj}=HdUweNzM$Ed6H|aA;>3iy{avEGm4!{lu{0 z?j7pS5b7IQD+eBC-`0>suu&qC0S^gn!YPTmF1_+>BFHh;*srOe@H^x>#z zBSMoF3Ie<@Rio@G8@ki7&)-if8rD2=;8pCb3BvwNbN1VRwfntN&o?B3cg{-^B7*sd z(PCaUBAUNAt1<1lnGPsJj$8<+Ul#;;+$Fd-G?So7M}5uHo_Q_B)uN2!WiYPqq`ErgnAKg!5L5S1Wc)*g?;2}{^ z)sSvpG7!?&NTcVCRT@^NGEAtmxO4O_qesNE1JO)};Xi&)O?R8~@GlB|-$()bbu+$` z7C~XU*k}w8+X~iQtb;rcphA7lWBYc1c`TH(^kt_gC!oV7NqThVe6dkVYhJSID^IEA zGb%ZUxLd@}m-dgzuR!KV=>iAo8lLzcS2m9O&%4k)g1#Z;(`}*v-dJjSF@fp_r7es+ zw;!kEkrhKZpiAVB``0k zKYyl5%r_Gi-33JP`)c5{^KdOPlv8V@BcK1bQNInYhhf1CNYLCvN&HE7?kKgIgexBX zg!n%CgsUyaCa`Nx(TaSjWSn>hH2?6Njw*Mj#z$=~?McH)8np?m`dqNIkhtn0)29km zz5f?tMn053_&*6Cu>=ey5tbp3LIkFJgnAywRFEyjv&a~0a3QZ>bahl+x5Qm(0uuOK zhICAO4mtw29B~K9$IL%k6St_NPs=tY>)xRi)Sn+H$($7@BDtUPhsC^W%>(MRx`jr(iS)Yu&r9Sh2aP{5sRQ~V(_c;!Zy=6OAh-|VQ*~#8T z_6m`ek#g>p1Ek*a_K!#{bseVm;vmX_A zQ|)6Rv?Z=2d*!+VCsqLntj40;86X|{i@rb{u)5Nd|LPiaT0bGuy*uDt-8FwOABPc= z(zDe;h-)xL|8dVU@s$9d`Yq7rqvrsOKs_tz%@;!T!3 zN*MC1y8~|GV=1#djjJ_RhqYAMH@|M<{cm0QH&XO$0=zr3IJc{BxP&G37^-n+;Okza z+ru*_2~5$7u`!q7T8{M`%^z@radSW(x^n$`POm(#rQvPPvjo|m7(92x_m{1@5 z6}QGVx}TG@r?PW;pC6g6>bWzB;GBUX?AANRX&{`BSrfp*gHGumZk(4Ah<_f?rpLqct-=ph|keA~H2 zPI$!WLfQWN#!mMfcJvhFmFv~;$yH(2UM4dMc0T3>irsYf%#X`SG?Ec-DI+MermJh- zX|cRrmS-vjAw>6^>fOp&C7sPVCdcWdq|dVC0?Hn#%hwo9fsbpq@8bqz;Mx`eNO%PS zY2TT`gwzawT#t&{SQ=JYTRl(O*`tBi@LRg`NVPaRO0HPWgd#-}im?}wE0Z53VL#QK z4!m!4zN-j%pcqk%Vy1(DSpKKkUu<5brVz*_r0p8LIa;qOA9qtVwLRl?Vkv1AQ5nb| zE9i0^jy+z^r3OYY!w*0$SVSeyWqw|FZ6UM=*29d7>W=2RSn$ib%G`L%4u+zs5{k0^ z`tb6-9beBgI_>>u3G=Mu1YVu77Y_&qSw6+@RGFo#tr!7W>cJLv5elB({Ut6{WYfF^io08HjeVK*yjWeT!kA1NO0G(5O;4!X0`anG^?abjcCZ0^_?Ibb%RL z4~b$b48=u)D!+<2g{5az-T)Y*1xyVnICZHW5Afej$8;M(D3n*)nKKrYQf3Zr`fx|# z>vdtD(z(%mM1LiB?In!a!EkoFQqiZ^y{@B&n4SZ?1vN|yX?i|L4?E}<$J@H96w^J6 z*117>f*k>X+*n*@=68*Mz*uC?t+X`s_a*gO(jLhZM~}ST5tP+!=pSF~eg&!xnv zIZv9MK=A3H?gF51Y2An%yCjiI$FGmbxJ4&N1#NP6qJ_2ykyAwl8f_SFaZO%+Z%?-p zLCu>j7gizW`$U5eXqN8l)+7FcLqZzGNx9W?GTEt`y=@geqJ$2uw!NLGCXI&#-<$!f zDGLh21qRtSqX*-F)otL+ChY|p~n*B>mY3oY2sK0hoK z7pJZu@Etshx7@VA?0L##=)-3B-u#gOsyNc6*{6UsQjLJWvCA&r45YxjGog3Roexf( zl$KH1isWuu{2{c7w6=%bZu?x@IEy82>?>}>R$@mX868fH6cIuHJ{ZVZ_8K4G&rR~v zpPzb|TTmb3>m~v|$yASYxS{zr2fJ7Htj?Bjj>DHojqsVd8xYtL&X3@>7dN_#wsZUB zDt7iOpWKxT2}-Km#j4kGbydz_m9Cff!}6BCQ4 z{R?<|x1(n)3&ifDAqR8lWqd9@1ng|r$|H6YRVXf_#pXG6T2MLi_oZ6)9|Ir*4D5Z` z=!LJoBwYq4)~>0;*;QJ%JP6T0J^srGByt&dipxlpk+TAsls*riN1gKEa6%Zqf|-ju z{2Ey8SVRS-m;vm{1H7-Fu7D8R7tIHFQLx!ST!aZ4i22ipi#Vc6Mk>0zt0?b;wi*FN z+D4J3!)8uili#kBlYEP+*b?Wd860-;1jz0YR5Lq?SciH_S7T?e*OmCP=rjWwtf@2& zi>jjTO#Rv=%A6v*RU`nFdhohW?PtQT^VyKBI&)xBpJJFsc=eC_2M#}mT*f<6mx=Kr z!T2{$XPgi5zfbBBHuVJ7vPgm51eL)P6g(02ck!5K5D+5w7F-pGB(+e|6*jmwHhbUj zQziLE{o#Xwdk|#$&R{Rmx?o-2Hi~&5SK9EG#G^2p#ad_slM8-58tzlEK+|mR0bHB2E4(K zuc|D(OlF+lBMrn2vQF5tgN-81{xio9oW7=aZrTvd0Obyf_~;V?>R_^>91~1A%Z$<+ zq|RHEgA7MOB|Y%<_JW8O*8GF(b-upOV+yAH?lQ`4V)u3VA>61gP0Hs@fFqM&!W)b_ zPPu!BCAY#5z2+3ULwbjX@Bo?S6l_Fihth zI?*z2=R9Ba1oR|dh{_PQ^aUC>>Bd#6V&1FO1~fssNQ7Q(I=|NAB(5D|yF*K8 zvDfFyE#i~_DAso8F*uER9WsZX*g!P|6dJ9Dy;a?qC1KOY52C2JY`C$B+}PTGRc-ef zyMEgVtncG9a_66UGKO#h2A1XkIMJ`43BMly>4P=<$s+Yg{%0H7)#pFZ4m|sqNa6F=-CV*V1!8C<(Ey zG*1rnrc&Mdd+={sA9p$)vo1uR{ch?@?VQ7ZS?=?j1iuXc+LabT()y#2{1B&CluE$NpPFt{>yA%laiB89*@ww+y$~9e>bwN6i2T z%4s~A1?*~WdlO*e%l+4Vs%RHw!9z6wvkgMIkK=o99=BK7IX7}0zW^v}iX{wp9^ZxR z2?htjRGW=cnJ(Cy%eVNl{HAN#<0YiS8RnQ+*DtD83xm{do zlFkeTLh(ETP|fkP()M;ym&+Sh*Fy(DV|d9C%YylTrP+M%N?&~Npsw^w9xUlZS~+ik zgPi@4FL+bH^wX9Vs~wM9tUzDr9UyuIMWYQ8XS9gm3}sL6IfmNaKT}hVLnfd&b%~_z zRW-eu$(htEy;ZSv`(x9mE=p7*+v`f2f0r$++{Vk4uh{dGG{s}Z9zUVg$a&R`MS~>L z?|7c=feXt3^ej68)hJ~Qef9pX`bu)b#Lr3{MDH}qf_`%aC0jv!VxGaqwHZa_BM$+? zm2xe}p7`^%5n78G^HNtJMWgoa>-kSWN??tn5m1TO!kNLwx{-bw$j%W;EO=IQ)HOEx zZQenW8Yi@S^LJZ_2uPs4uimz^&-!ZDX#uA4tX5FWn-Bs-(^ulJBllLIcIyw?bW#jx zAk|drV8541HY022pJPRW`SI)TA*^#C%i!*ZdKP;2SoGxQb0Hh6Z?v)=Fl6n*&ylUY zwhyFabN8^0;w_a0A1_ekc%FO_sF?Uz?RtK-C!PZgYGqwW3}%2BnR?2!K+i5;TEUf4 zsan?gE$?ksA~v z|0DV~I<=4*!dXoz_R(>vZyQivR7c9!Uq2n@)ETzRl3-2|fy}_77y8i*3ldt)q-dIL zj`%JUhnjCr?4bNE9FArIk7!YIY!#-go>JJHsKN`amTrZ0>7VIZeBi7;=MnsA zcUOW6i%@+i9#k2gaS0itzcVf})4n!RSqAGPg)CM1WX!g`sWVjoCM3vPmtHz(y;=@S zIq~e?M)7{t#zt2V_yl6X3Tk8?i8WT?W&LY~f!gtlclXdj+?f$oL}Ml-*h4li_+$js z4hEKZLYA5r3eWUhLBLj2ZcK}l@L;ZhDYNO>d2!Zy{egZ-|fJTWM zp%fc#U2RTm*Qk>A-(I(y7BUsgC1~}O4Wx;eY5|14H(jrvm5)>%8f@EGeKUe!A{_3W z+1{k`3ixz`2Z(v$2*Lp;C~9KIfyV2u z&_Yh$+W$eQ6_QsMGqT12ZMgDn2Efh>bsKwrD|gD2p}6gkjmloDc^{7L-0^qa>p>>8Fmf_LZi0{! z764G5sQMB?OoN-2tH4DsOLalUH84yu`pNh%>Fj`H7_S5?WbBV*q+h(uXW^-0`tlZV zflb5-?Fw`W8+e4Hq2q!4r2@%T5808#aAzC+|2=O5=LB5>JV>2jU>fzvL+m&S&9W8N zbz`bUNHR_JpNsdSS()78r6%bb}>9n*$k@XW!Mn{q-p*Es;`uoTLst@I;T5IsNmf z30^>onSS={+R{mM%8XPSA3Mxvexm`v4E~jA(wLTqCjw)8@%A(lKGY3C87}m{!orIL zX;XSO(O;PbXu4}v(hkc?c%c)@QX$dM^9mbb5<>%$=ObhQi}d?pR2+-a>yQ#)qE;9C z$kQ4)+9lBIWCpZbG|&o4Q;_P>GRiUWx+9(^1HJ96M^~wBaOhq)oYfY(H?Jm4T2-9) zRi6%`8~(kM;W5l^75V4yDxKJSLb1a>QwDFiQ-(S+q@2JSj5k`&0nayd*wA~&Dm?73 zg&kQa`Q<*u^0Z%n9O3NuiUAB0ng~uFT-g=21I9xHWAt+rV=N8y;aacBB%sJ%?gyQ= zYqyL{{z5R}*mz-LY!J*&VaFz#62~~R_iF>ev1W9gb59HYdXeH}YA5qv z(*p-$KIWV!Ct3$Q0P;bh{`n_lgE3vzR&tFG;zdv z2{tbB(qG*Gxuk9$=^k{afZ%LQRnrRg+>o8RZRxUm>`hLc^8@xJ`I9ZguGLrdD$6<5 zC-gitnv|Y;nUTd#9AzKF5NC6JpQG<9u^54nEWrzrx~>0+w%M$*rRi?zxV#3{Q8y*B ze8to4m^BgV#!QZM6@g+N+nvUV#H+!J6p69~ZdTYiI-^0dQ*yr4Yq)WwsCg3cM~7V1 z75w|?mraD-zh+BVQ7k9P1^ZgQOnG!z=lzYx#KM+@ED+J}8Bl8|CK2_+zIAlDsl|j5 zSk1KYL96+*pr{qfVz6ugFC7RrQ;=o=#L{dHp1h9Xlv5NF6%7!Q12G!LXg`)s*W#)V z19+#j5>Nx?xq*qy7)7gbk89xu}Vf5sC)su zYX_b?C;8m$g}VBa{Oh@qaf3geZOoZfn*dC7&I+j1e@1P%}NxUzj zD)G0t$Rlpa?M0LTm}jNbCD447HPC zOo9XY_uE-91>qHakB{jUJPG*$VSNZFc+4y>q~O*H%^=&5b1{XT8C&7b9MWd5ipPr2n8uTl5pG_C_zM*-@`)6B6 z&Gnaij?3s|>cET`V!S6((ypG0++A>hdhSaqaYf34<8LOE@XQ0(yGJ{{To)thh@GFX z2hU}ho9w?4jMuAbE*stK?Oc#xuay4T%wr*|F!Mu~YvPjb0^&1wQ{tYcEo(Eb5*zQ_ z-Jh#j-R1c0*D-#=>3It$b zg!mZB-gns)A@3ifIE_;YU5AKjSsml+CF^%iUVKY`yPyqyPqd+(S^)jt@!A4+adA;j zPlnqMV_;yQr=iytn0RmdUE9iCSFD|{OLQ7Wt*-R!C4^K?i|6Wn(@@%QUvWba1FBO<2cNV}!?p87^c zEhkFvpy-x86I&=ogMfuH$Qt@@QLcn4Y)rz&svS+I7Jgs^-k2SgyvUZ{UrHrNsQ<0i z^-b^>g>-*AF#g}l-T!|9uM@Y_yhKv_ISu$%ULiuXb|co*R((EBSDdCmJa;l0+`#K3 z&hniM;T2Z*O%QNn%ztU|Z!d3J)mV(bI%)kItVy6tq4=JaTIX|mp!X=bjUXuz4gT8{ zP+Q|Wluw@&?y5*VG7U%Depii;r+!@!H1+RXHozqsvfaPZ6j9~`Pbu<0>tt_umS#@U zqUjB;H^ZG8!=>z_vc6I5+fmm%SKr|$gV(!81Wwge{s=QbKwVtXifk*gJA^ovA?kJmyJ8G z_AV(9NjZq$$LS_fW{}AAb-kM6LWV_Cm@mBO|!SjqljXO>PDi6DKJ0=449oZDNGi8{uubPVsFr zpMW13H=t#|;PQrp;-1dHDmT57v)Ldg9j=^A}c99fhcBny2W!1u>ocqAw6`{UrU+d}BFm%}Y7 zQnvAmy$LVW@(CBJIPHI#21BUzg(3Hi0O~F(E(0lAe~pPZ1SwCpey1KACiHR%6VWeb zW8XXjD|QOZI4Nd)xj~h8xJTt4$E^_djD>x*rN`xUy<|M|{N_VwmRnGDdWiN#AvA>h z-er$XZGCV;@pl1|M9pu`=nq6U{=k;0#c>cVSudNNiCci|qm|U)dt3tN3_mm7Tt$O+ zgR>NU{)?>@iYTIceD&W0fsUCGLR@isdO z>oR8Q4x)DwfduuxY2?KokpKl>a(P}f{ou<+mtg>EzP*K3h(kC6jV5`aeUYe=D~5A* z-kH{pLCb@UD*BEG)A_tLD(iq&=HDE|6CpDP6tRO>^8mpQ5V9W z!owI7@>(HW;Z*I@XF@4L%{H|Z@`J0-=Mo1>mkgGPbJJm?s&yHT&Q5fAuyl3*D~?!6eMSBM&CLyL*y?wLZnw?&R{sSV7iKAsi4Jq^i5>YFqiijLx7$Y;P%N8ia4j%x2E5Jg7h6Y zi(eL)&1kK5&q?C1+ztbIOxhwy9{A@nR@vc6J@NO)Cx82s4|A^XH8V!1fFFPILg7d2GiuLp zcxCn@Xvftmcb0jPg(<8pzzOd87vc8QhdS*Zf5s2q99~xfbq6kULNPN4QpG&3hxgPH ztADtBAOb~l-lOrR|Ka$eLNjX(09brNae`x~yZ=dgP(9!R5!O5bp89xi*L zoaZl%R~A1vL;PQbEHzxkdKCnio`lNi2VrRvkf}+;;qViQNMOf>^SK`#4dl@)4Q%!y zh8FaD)1UFH7Vo*v0of`5t_x`tR^sat@>y!qu%;3E6y$X=iRlmtCBsy0g_&KWhIdqDnF-Zh|uq>@adeEqRg6 zf#s$!>sO#X%VEGrrK22OMwVAebvkH?6E4O(y^hrP)}Ly7z|esPNAq_JS*%Dha=B@M z>K0NdA~gqBYIVL9s&Zz0``G8=R3_B5mR4OF{7Kjk-T35qbml`dOG+#_^5qi|$Y4tM z#{DLLILnLuu;3;IU1Hfcs8d=#5Ff^_`b$! zaKZX-t#lB}H%>;5ltr2b(#3PqLD>D}mYf58p|?KD14iFYQZ9=>A%Y=xRC)vE)8iP~ zw7)AU3!2CV=14&?noI{1j$(B}H2)?PCDm+y+1l(AP=Q*d_^|lc!d|I9jkWW1wiq}*P8htHvb2YQhAYDGtjoE z%;UKj+aW&))&qf**3oh&UG16df)B%pN!ep_65lvIL+c zpqLP#Ua28$myv@|r$sDL&c{m1Ye0~pK+4wa_uVc&AO(4pK&&aptcUEjr1$KMEjm@p zQV`~q9$xRn%3}FLoTMRfQM@QDv-sM7fE|_i z!4X`Z=h}CkD<`s0XE#dB)y08LOa^v0O$zt;)pfGO3SPACS`rATAOHbzfaH7Km(^A) z`MWOg_;A6uq&o<);@go6%KAM>4wjIQu(TUSS4S*kwfBJMpAgxuS9HZM zve(a1laa@fQ;?frgIDRn$j{~;SHh4IV`sZM9*rGrG(K(eOPc?CRQNjPJ_I7R%$Yi+lJxsC zA$zK_U=GehmIsFRo4F$p`%&2O-*wEmuSRWdLUU$t9*qfi6i)6Am;9iZSl1@BE-Iut)fQonnBPaUx^`6m75>R`3zN1woX;QieY=@4p9R z_50WZF1?mhKO}2RBBeOO`;iAz^m7^kfMW79xbH+B>a+9ZAPt1SoIu7tAK;bb2G(9h zt-kvn!~VlQx)Khs6Kt~_pB4hLQA}@saro87r;FdPQp=NA`P{k60|eBE3ki0sBUg(O zIxg%{VI%iHT!jVzdgP||a+q#74Lzh!=dOlhT^4~Ob;ffO5lE4Y$ad_5A01ybWpNsb@=GT8m;zUUD0Bz~y!w%MnyVe=le)}U4+QQHn((fb{UxwV&071;#7c~%heRs z2UjzlBAIL$7Ktt-^2TThHmQqSX2i8y|5Nx<#_ab+c z#CpV#0K{(Vut8`1Q-V5@QjvyVcSxJ@=jPfBHT)k5tJDxi|6xw%6D0^koPtOim(x{Jq}57nRwbS3>n*EKCn{b$<0kduXd9Mx1=Ql!dBQfP%$bX zQ6=z9*Xw_}DCwGy8w{^>I+CT`pjv(06;SkFSfXzsaK?0Z!EHu~!|gXrt}tAV>B#>k z3i-GkS@t%)?@IGviz}5D93dESKnR zURk7U^Sf++&rkOitkSDSx_rTvwEAR)pI^Xr`=hC6C4fNKkisZu=w+!b4CI%pySr`J zSiR@CN0#OdNG-W%y1K>c9o~m2#726kLH0yzk3LcLGuPeskYKlu=Z*~b_pqQbpgsf+ zz?pR;>bKz)gvQSJgFN6$yh>#(Jko}D^6s#-b|69fe!(}i{an~pVjHcEt!L&3Du3pE zuf4OGGDWRT{smLYvk``&2tV7rmjDGBP;rG>JE97-*m45lTf>wHZVbpPJs^5~=4#Hs z=lwQ<&W|#z+1KEh{uGM!BAu~u3^#w&BZ1cJQmv_wK94khKt5L-FGht} zPwXfwSns$o2Qq>LX$*@V|C2VXehp9;DT1~$mI!{t?e0XN|L|%0J$6Yq=ZN7F^!)2H z4O-z&caiMHc`+7zz5s=g!k7S`s^FKG{JNJ#TYES0rd5mK?~jp-riD zjb|6P#^@O)UU9a?`wrI@VMf5-KLaDgg&q<^9xcHUo&CB$8vpeZoZzqicmF2?fjWcZ zI6QIJXSbf<3}!)Kh`pM~w^lJXK@qJjd_UuX-^3+i=xw?HG5u3!#Iz!cLjPEe2F;BS z9Xn7QD%XDm+`ouUuEKkiK5+`BNVuaA==y8FUmLQN2fyEz2-u92tUila zN1}Qjqv51zYYAMr>*Y#L#|5`tdPqG1NFsTLnZ>Vt4Ji}Q|BOc^R}kJUNVq^9j24&C z=ea%Q(1iG;b$82V&D*rD!h!H(f;k8`XK^S7MbVu}I# zzkGm;83UvgdG3{2uNsI)WeSejZ=F)Q{1X2qalD$H!``~e^hmy7oGuWV->L*UOl0`k ztYj^l7)Z5gnZ{WUmC=Ap$r z(MLlxkZ(fqe6QroZcE<0e$;T8FX`z#IB3$y#X@nvLAJ?t^XY&kWQpUj)w6vevhB$x zvCZJtOb!J*b%rpJgOrpkyO;t6q01%68ZoRe0KjR~e?XR*6%3l+7VFW(X>S9RdS3Nw zMJv)w_tDIA(E}#!o&D^}-|ZHA2ARm!b)|(n#hFe{c-uK!Oe~-(eh;`45}aPIgKXPF zb(mc~u*ylny5F`{!pDibv10TmP&(XP|IBtU+_4YUElE?00a7~qXtn}%68dY~SYqzc z6#PgtXq%*GQhoOO!zc0-=N`_|i#3mbxODK2X&Jq@$j~0 z^4vnP4#@j*vfDZFZ`H#EJ~Ed^1MDM(!kh@Jgv?ysk(p63K& ze+@og+-(gZg!{RwT6a66hh%Ud=VX+7>0f>|MAG-r?F4`2Ufi!m8*@10qVgrTUy#*Y zmEeU(S^P}R$$e#W>yrGTaHTg*tBOxQI20zb&asgS6EGdw$?o1qi-{08HLi=6xq%IH zm51CAQ`nC(O?_;(C40)o*s99hnO5ww%4Ben*V7-X0Ur7%U=EqiG;9_>X2v(2~ zgnRp#^*p)Y>kC8k(~gxJ4vW?OcO?2v^3C^1aerla z?vFgLhLnrSuw?F7ZKd z9xg*@oxW3T6QRH0gAupoH1g}eL-?z73XQA$hTx!F`T53tr6#Zu#RG;)7TmDj(T-1q z*a^L#tR^nU8Sq~}888=8k}aF~fVmJww~R0I`hyOjA_WMUXFL{)#s?k}!F9RHnr=xZ z%?3^JH4M`)Jas?5ni~0M5oGXGPy?(H1^uwMF%?P&0nFm#~xPSOwphR|snQ?w^O- zz`I3+v(2i9>alfn-InU+XSV5Zd`H&p-rHcYIZyACGjFqN^h$ayUajzz4j%5W@HTCc z<{cxcNC!27_G_!i*B;x*SzL^9D!_)wP+L#|D>gI>;bXk}L{P1`SUR;@uAO`va%n=Eb6k3DKlSJ6SW!^)Nl(d(ePfjyZO%PKHLlc1~gD z6sCe8ftSy0NfT7Sk!1!WNY_dc>QNB~gX4QghT89)0~S0I+(B!G$Ku85dh|9q34-cgZ z$^GY6^_bsXOm}JG{}H6$8Q1Vhi3MTnZV;m5jy&^&l4h-$sl4V`&T50Bxs@RP6`7Gw zhVR9!JO>z*P^wd%%HTV5BZoJEZKkq=a~}RN%$og%r*j&fl5TgA^O)MzNHdRl=i1gA z#kZQ|VrB_a)Uacat;@gSC{|HNW^^MF$AQ0UN9*l#_Hj4NQj38-2b$$hilzXl@MHCZyYGlOOYP?*derTcI)8L z&IymFO9G?v?&yO|XXkrQG&iv6}`;vIMyC;Eb7wt@+y=BaL_k;6mS>7SpF z#yIL=?rwtI{Qk(h zqxoC=yXk&iBL7!A!t*913HdEdXI9_(8DiBU(xgG8O)dh}+n?l-!T(xp1MezcAC}Vx zi-M(3OKu`&rBqoxM*clb$DhB8lFfpw$&TivXr|`ymc|^8b!V3s6C9(&{EPO35FJiz znuEZn-x4v=KFa9lD=5WzeBi$!^j#RQFZ97jc?4ZM-ZD1`_e!j^#FA?lCFB9{mR=c% z?b$sJYN+l+Kjf76k5Xy&H*?_8n9vIa!QvzfN7%!0zV)qH*Z^`?!k!rw_$! zvU^k-jz&3hGN#UxZ^-&2pFbozwK{nZXcMq|Cn*VPINHlm1+^@E+j;y_)u2?u2rX(& zX6-De2`K@qq_;b^R1c)UQ0KNQln29|Pf^-o^0KA^st-BMr@WfIgJXo}>VMxNBp_Cr z@8Kl7EU zTOK@A{n->LF;J%W<1JKRs^MG!*metG`&Fu8r%L`#vNnJV*a zDWIc*KKd&|=jrpOwjN9NtF>N*9z))sB2yDQ+NRK+NUyd8!SIH)LY2*%H@+~g6#&zZ zqKweV(zqFLQ2m4kNk`z_y@}3Ho5pzzklKw8NoXw8^v=SRs$FLLQ6DX>A1_K=_%w1( zgH(2VZ>hO@ujfj)ds7I!$o<`XSwC?HYMhkr4dxSmE{O{)$F`p2E231_PCkR~TP6gZ ztf9neW3@O!xqePU_0I3>Kc)T0CSsrn0=E$NKeHGGhg1{V zK6jYUtEyUy4{_*nQh`s)w-TVw_kMp}z-d>a{5Bay4McpvRQ_Gi*VCY2*lR%cM(vO9Fz{M&bH z*=p-*YXrq8g`#kjqpI9u%y;x$M0)MBD?Mk*$L`|vVaFkC3<r9b|^sZ5)u_Z;-#^etb{>Ja|Oa zs`n5p8bUwIx$<9Tc;IZo66)bPr>Zf(IU zWA)9x&;2xk?v#dT@%Hz9IJct^fs5~%hxNSFAY3WZgI5Yh zSnA@Vn~U7!8$rqa(N#`#$l#MPvV%5Ml`0y9Q3_>`zIQ^sS%bx7E_>)=`^p7e<9Eaz zQaf#RNWp+Qg#1Po!F9_wE)MwbQ34w9q0f_GWv1+g*{-qS;=YE7t66!U%QQcpJ`X)3 zgzHRR=C{liCZf0@<5NcyOBdGiBXWFz+XwBzlI2iY)rDz!4#FAt5WQ^n2{+7{f-OPf zqfBsd751#6`8SworzYHhFb1e&&7{P|lGOp5OItGwLOw!yjRo(Sd9^mYO`Rk@Kr@^Y zbNTka>3_@BBAMmgX1zG~{{9L$_?+|Ck{-+cRG>~}jv>A?XlIR@3g&y2WTr9?7T`SR z!q9_ad357dm9Px9{Cp~|ef|5gE7zBvp1wVt^w8z$9Yx7KWHtL1sLWbbS6v~Cd`2db z4sq8&^EgF$6~3jPFa6~m78^kFa{C?gzIS3rj>+{u=AAi>9T>2Jbn(5*Ltp>H&}E1l zv{y5_)eVeZmD0KPf7r#o~luw@*~?PckmWh)xSlHF|Wt06u$J+fTb z^7TZg^|6(MK3b)95IXgD2b4N!>&Kz>9uHCWQP3dnJuMRv$L72m;KS{3E|L=br5t;D z0Istb!iWD%H%MZuJ6_#9?q53?o^B5CtO&!lnmoCSpkS4rr@R|~jq$y+qi0L>{)tRC z&ulgoHAsJkrSe1F9F{bX=ZIYE;h3h&mbGuHgF=pJZlak@(fRx!Cnh1~`?XeA8Xl|m zv!hV&w;|xVi`!dh4_a?H)S{n0}Na`z;bqVdJ9p@?m!b@gHp zyLZA4OGQ(Ms;=BBvP&y6Pk+X7u3$!aL-YZ0kAV&OQxxMdkzr_&=s&KT&cA?60ktgO zuQJmvag}@n$CsR^RGlKBk4gu5aAzpF_47*yM)%ZUPRXHmI*w$uiX0%?@J zC>sLKf_B+A<6b`r( zf-aGR{exGfhmPRz;`_xq5yxnzN6KI+>l1vW%_%H5^(o8m)MCnDf}@rP_R}*S1MkoS zz5?gtsGB(i&I88Cdv(|1+sO!gE>qU!AY{1=CiL4JY2y{^uq*eM^W`(GI|G#0CT`Om zQLe;KsG50FpEu(`9e&Wwh@{_oT^;mJ<}hA$GzSO^njhsL^pBm$I(%+-hcVaEr__0( z8gTFfE*c-ONY3b*f>bV3&1TkT>X{tDpKOLQMHJ-!_cSvSnSc+f_w!hP=;;0X+kd@l z^TXzNfBZ@{4XXXe(@rU_G1h?2!RsxCpEbXBU$8fn3hV4v0^2*u2=^P1JLRC?fk_5I zu3~98nfWmE9aiY%^Cka+{qS7cK2Eyr<^iryNhLO_sIBGifj*!PEjYvRD5?DZ@1Ub4 zT=d^fBRzR{{xulC;r`xxzB@9KSh(suaQNwYP+>s3*PQtCu?xkj(+sji*q8vC|Cgy}2iVqE z?LYlYvTr9_+)Dr^al8Z?NJ=x}v9yjB_u^U?)&B~1b<^wExyXV!2Di?%TDysUrtV); zJ;Ss7I)B!_Rt#X?mxWOU{^X$0c>=l#w3N`pF4r2(O8>JdV$?SM5AC1B(r!D@rz4z7 z;D7p3XCV!%HAP6`8@UoDuRB&dQf)IJ)bGE;5X;X;1*?bNh zeOZxa^V|+g;Ul^gXnao>vyJkGB&r&Gb1{>|ZN9oby-N&YNlMYVk3RCmj99(@a4X^K ze;`!QR;st=;6JKzkovI7g<_6P|3|)`8A>&w8Ix{B2Uq88Qaisj2ka2%?AQ z!Gns}s(uNYf$V9Gt^KI&uqQsm`cR8{N*zr)2ywm14WS{_K$^y>I)8+SSW26WJF3#* z9&KI=?d1Z#oD$uK(P&ADTKxOJ3WwKo1ECP)I&AyGaeg$SI!5P7G%|#1g6yDpfw+?+ z$J8Hx?@2Ss(T!X^b+qXDE=v+f+>dZ-g&Tg5$K=GKS2Ni(9InWY9-OVZ`(ZJ3^h%VX zN6J7_Eg>xN>N&J3Jdyx(sWAoSBMgAV%Kd6$4=cwvIu!s%5&jyUd!FF;&|S<#oNC55 zvN~m~pNn)WEvOIL$x%_GfKLa;0v+q?V9t%06^07;s-wT8qANzrBdyH7R+`oPFw?q) z&>!Lw5Er<(ewNTaAc0SO{{H!j_o{tm=l=68kFJ^(hF8!fn4TzQyWL~|wsO4!Juxrp zNlztgl(9f;Ng4IP?q`Cy&&SU4NY-EBOFHX>hBf((OyBdvSWLY>y}dU5apvd^LTeZ= za(NAq&sx6)eh~7ZWtVca2uW@wHKzE*(cv^fvP-PVl_92$@u`%|a1>D_g%iW8q`QV__FmT<=aDTcLov)y4zk=`lAJ(OD z&|s_s&{%i7p9dR0JF|!OxCYw5hgt=+55JXaDl@7yrY?RnRFS?o+8u}|_u1c^^*PQC zsQhiK^CxSuv=t9<31SCut9MyD*n9Si5{r%W) z>NUou1vpyIrM&oNQD3A|ESI{IY!9AlJ>2b8hfN2mOU56DQ2Yi1q0?L9KyHz!+mEvR z&pPR1#2gK}plmeYK9i2RNx-i>-d<)lNdFyir_gmWvZFOpQFkqqb|Ol}ks@jMc=Sjm z(t?TUJ z>qAkRtav~6Z8O9VVe5m6L0yhJrOLwPk0s^9`u+@}iI=ang`fYrI}-A5sRj+N0yo4; z1S)f)1P4?2H>S7eKasG#JG#@dQ~ie1?hhv+cJhgUuh!0m<0aMIyg$_J%z_WYeM7{~ ziIzA1hBE9>r94>a$ecQNoZ(ch6Qrdc7})*z?22N>c`kRdMdj5Sf6kz?ErpX8HH0;k z;P{~jgn`}9P1iS7dwbKwpC8>-c36Ob^1j!vd-7c_3)hnoR=iNldW^Z4vlTC9^k+|6 z>4%k!p_Y!%mSkWf{g_~-N*m~kg;O9 z8I1rle%#8MdF>gG)yKu^S_<6v{f990cgIjeixSeMfHczGNP|dsC`dO0 zGtAuMcmIHUe}d;>o|kjpn!VRvdo7_|Ek{9m$+c@`>dR|egs)5R9gYC94gKgWhIxq# zJuViVW>^V?BRjc@s`D2dd|f=4(WX5y*} zA@ijhp(T5yl7|2;zxU%~Fz?MtrXTa?pE7v4?*Y7hYUq(IEhMnLcik3SHd!4|+2&-t zP#BIGq()pnY$dETzrUbg{nec(sx-p>aBf5tG_M5@^lh|g22+3zWH?ni18pypk1)C* zBfEg2nar<~raJYr^?kL^mk%Y>S1yi^lJ?Huv8fPg1NiD`0eM>`GGU2ReCyOTx7!vM zf8@!-j0!ua8}hi@@!{Jr#o6YP5?TQ*fZQO~YqGmp6|Lsq8DZ%*s%2mZUsuHh9G)b= zTqa2+M5CR04yWPDDJJpgFjiKl!|yf&NKrXTgAJq_POKS8%kHyEJB6Fg=#x{zBYu(X z&%mhSdVNVMr11F`Sz_$&X@EA$ z6ztaomo95Q(h%RtrxJ~YvCp=5JKfiBP~z<@0fTuA)MB0@ivAj(KrOx(X#UX}TAIcO z&{#$nI2NXYxlxxU{YP8UC#6u%-=3TRbtSpSW%fN6NnC0GQ`^z#Vatz6aKpnt)SoL) zj{*evIgq+_!z=#qzM5&_`CKSVK}%L#Sf{)aI`|dmD{U{AjAT+BVD729!&Ew>M7aNx zz?#cQ};*X1Mt7ebfax zY+u-+0p6Eiuv4(1aqBKToA66p$wqwikM;Z@;=I2|@{*sd`aG3bgvlA05xcC~PqCjn z#_JmGdMun>hZ!e-VV@0SUb^&YAUPb(8x;Oq_7k|l3Z)XSdBv0^blkJ;~C9<0F8QV7CrNObrbqGt)kb!42K`L7=)85Fvacx4m})S z+Vw9&vUN|mQ_nY}09pPY_c>3l33deqcfhrKT}e~fv<$(19NM6Fk^rCvpUj;QiR_#~ z`)2l$3Jt5)<_!8NHmvW!%HXMZW7T`fYE$UoD~jP3QCzp12##vHbN2U##Q>+zdEh%R;vuz^gX?;* zD}2wNf$0|)3pxzlFL+;d@z-tbs3s9%&O?4iPi3R`Kj~MsbMhT?-7?5^z9H`SSA@?3 zkues*E4+`-5l_8(i20Ge$1Uy0A(9^fpeP;4NhN%cg~xOq>GA9ud}1{ShA@AAov>P(SBs<1TNO>!<@Joa=Bdv0CDG^R-eQJsOZgDY#Fu$M z{%bwEf|`ZpFMa~l$0mV%p!#|uJ33@kK_-=+3ax#}3^FVcf^WrLbkJ1;8#ii!l`hE0 z+K?(hNdN6WORa8J?x8Ts)76k(bOY2BW!d=YhOueiSD;Uz{5X%)SG(!)j3i-a~WEgP%gm9?P+=EuXwLcJfL z9Uy`U7L`AnEH@qjP)5d1Bn9l$+fxtK;j3g8X4`gRv-Xf$bqRJsFvxdd7`sT_w-yMH z4G6@cGv6x6ncc)$L9mjIWFJ5qrvLiieJQY8 z`e+IeX;`I1>$bn!I)l#>zT$qQWjEaO!j=tDem87ElvLh^68zwPO*P3Xx9PxD%@d^p z%D^Of!hl)KKW!&?hI)}hoJ=|usswHOjP%Myl~;p%=pdSP?{?n>!kI*nESe?Wz{E*Q zEp63r|GW4fv4S>_QO@^CL+aa1OO39R~*qkcaN=5$D+YI>WLt|SD1_alrYar&4MK#nd?&v?&o2bE?wyJ!M9}7 zj}Q1{No3z}a1SyoG`Uvh4$2{IC!gs(2pqEr_nMhoNn1#RR*S*VZ`lp~|#f<7OU>jhJOL{XZV36jp zg)zShe2{U3D`sjtg#o9sR~(*3jX4MQU0fjyb!dBhzgorp*MM}#)gmvH$^XVwH30?6 zGo=6l0QferI|63?;^kRLL6tO*2&biHgLykvyYnO^e@!j&<{A=Zte@M9?qu&l3dk4h zfu5!j`A2ut*T|`wETWo_--0bx?%uDYn@5_6PaN+_4I()B&Z0*BktZrEz&n}ACV+`< z0f%7B97|U8q*cLrJAH1>u=jfhei$7>R|HOW?d0f1nh(5kZ-y@%HKWE(I~dF} zFja>RlQ}z(e+L6#hmB)fn)*DDELPK3((ulijLoekb2%-7up|Nccv&tB1UYW#z@_ia z4vi98SPlu=2iWtCK$J01ZbKTDAB636q7!8|^Rv4WC4Aj&|1?z*p%#j?7d`xnFRNc* zEeEP~21VouvhWYh!%W{MAVEm zZYWUqLin&(`#M`zDqmVihR=76HM7Y;c;a)(L^p*%^LHmN9_U@%KY1EPHv&I~J(Sy>wbhfarI(ngQPI~4K`ci! zp%|}`vaq3grvCB1yQg;=_pBH>H*=nrC#~@XcTw_uZ^1vr@h`+X2tFX>pA<=xq#4NP zGgVhWGhWJLG^v3adI#>ZRP(BKkvGe@~hjc z0TNz{!=vE@aI0&hlJt6mJM0fbx8t2By>2kj&oataI~=rsoloDnuiGu{tZVrtMEwm5 zX^&$=&pCPrfMg%uU#AU<^p6+amA8WkjSS8|H}aj5#~1EgEA6k$pplwWV-}|qip!>$ zgb801nlu!UA>lc#Zc2DY0HiCpi}FBW|GB=*0s76qY&O!bAtX-i+w1;*Da<%auzl2m znWC6U%kaP(;)wb(Z#K2^DjoM{g82dNRjbh!aiU0n7qnRixrSE}XGqoiJoHk`z;EW| zpBHs55&KHah6Gi6rArT`6Wrm-)yBA*!7h4638<9j__Y-vbqh~gfD~v?-WC&v45YjZ zI2D=D2fF0Z!pdT8S?xB0#y)5g9|^e@R6)|bQp=S|Qqj*8_SVk)_FQ}EyuTpeX%pp< zp537|CO2b;7AH&i%p8Lw{p@jxktvlC?{5P8$$*F<0&M<0f$*f&Nn6k8CW`hUkj^!V zMYFkxJ%pkv-22vX)nnyD{EBe$$)G^K=_Z*B<@Wbz)|xes-IWZ))u-OHg~_`r1<8cW zl7y&TsBO=sRUiuedS0qBwmJ!KKDBzXd@;{JxZ#!r z%k{g_1~EU4NXK-6tB;-L^midO5exOof+ihr;-00cY8vBEMF@!!h1x&Rn7lj;XlXj3 zi>s!|<8BCJ^6nz}D?2QTf1y6TriP&q`whv#07#n~mG5D4h(OdXbN<JAUd#lytP*_wgfUaxRNq3X%gqz@LV1>bQ17QlE0mQPhG)eH4%vkk%Vpn$ZXlr$krYu03R>a?9BQ~we<-DMH>wIoS@{io2N^QF@3o7XW}n{fQ*yr z1n#)dzc@z@SoprjzBNwj@|z9EufBU&?$+ad+WGQG*JZ*4gFc%b;KoD1A}Hz?pS>|m zgifE^L$PaPd+KSNJP8a6;cIWH{kxeWT);TuJb|JtvCAq07qgWiw9DY`YV@wQ_Z%i| zwPY|s|d@WtPs< zB9j;?js80BZ3V$iPPg81$IUE%a|o-m;c}M%17E`*HQW9R$N8S=a5D~Ur(jCfkSF8h zGO5wgcgZ!UQ#>L)b83#8o~5s2qSCNv>OupDHzIi;ntY@M(F>ZVOw04lu6w)YzN>2i z6;ot*J9^=O!LbDqc;+_2xo0Kh?{Nk4t-%*_^%&fz(4^V#t6|P;*#&DM)Y4KYCDGzP z+YKSMrXSEK&3*8=+q~FcHzdfRsx_!xX`@plaB|XNibm34UTk$Ev#jgs*GP*utV(IN z-f)r1oS_cnOY8TNFUxU4)BGNIZf<2ay}tQ9bR=OUE%*^vo+7sjhXWXst(#paKq@}K zjk((5zTbnDvD$Tj6tjIBtX>X{2o)is58PjjAg?Vv)(|!7#FrL8fh_{IRsm0h?YeOT zff(m?Rgri+f{znoPS!S&5gH)Ee9l(%f#5F~nY%hgR2Sd2Q`Z?Swb9!=go_P`GsrYi z0?!?`#tpyFd{1uB9F}0??YWuBU}3(e(7cdfDZ|HNUJn@q;Dt4n4pcx;Q4vU{o?tI_ zBB!0H^GJp*$QOQC}pZClHAjnK4Osm1Gt@N8r$U-!6I@bUgd z&r^UM{=8Z$O%W^l=DN@Ck`I$UgcV(oTc5c!11FZ{c^1cp-y9j69f>F<_LLrr47
`~**oW5!&4N!Nj#snW3{M(eO$OX#na;Z(P|mf`(}0$wtU{etU}f5=q0 zLg>-06ZiH@57 z@2+h;PEHe92gmd}{P1W0Cu|FLMbDH8 z4SwX$`VmX52d?xIO3{7tp(FtoJ8OSU+TE^x!XG&Z7Wmir&hO~)}VwiuP!A?zm7d+}QKWfNsP+QRLr&R(B;)?F=4vF*n! zvv_5)31&>tvLrJT$1tr7A`Kl6WgK6-*iq!_qKsn1Bod|T?gbk(MI1Kw(&;SMay;fg z=F>hD5j++G;^aWi^>^grJZK*swn8|Tp_^YG5E2{o?Y^fNx!_wvd9)xMV3&Gi$|qk- zgFO~~V135=l6=;BcWIV2Dvar`e6L<{<4>=n30ju-)<1fYcWv0>Hg8LjD_c#GhVQW0 zbl_ZWJ`{F_p1?w8hYA0e0w(V(~X`u=hBdP3sf`XB@Eb7zm^1U|ZKhn_-7f12ep8m>?wk(f%1bB?I%i zF2`F6g&<3VyQN0Adyz@q-3K3H@l8iMV}rf+*Z9!`KQ7~=Z^|F8?_1b7ldAnG zj?TveIa4aQ*;P0@z$ECeo$gdiw>x{!X{P~`YljAK^JQL>G0$3_Y7p($WI{UO9(9qm z$bVn9m-BNu0Z8I>DXqrZ-PKslM7y4i!mSBAN%YIOj6NGr>EZiF)2rc5VK4ASqbr^G zNOM&;Y3sgAW4K!dy;LMokk?L!`7Y%ykP>T(v0aQE2cJzBl5z=@h}ik9ZYn3IHT={W zY{O$a91NYzc}ZE7X;wLv6_^}wf11>Vqdx!e`Uxk;O*yB5oy3NnN|xmP80WN$o-e!L zF_srJEDkL&pJvrs1IHho`9sVz=LAIhLY$en z8-~l`hCzzHXREHTnU5LXKUIV-%!+-4LFtw({v-b`Q(vQfe0m*2FeXfc_l;m(3P(Fu zzm{+Xkh&e~YDqWiq@5~D?5y3trRrFAd5`P$igs;hD9>lJnC>AIk`DQX&NKd;*TORR zV6CQ%2T)~>t`vYV2_ja8$i(;?%9EF)!CTk(yR;OX2l*$ckuA>qe5D$u|DM-e5d-GE zVHR}xFQ1dGbT6mY30=K?6a`YJG%*fF!^sh@NM^hK5ll%e3gs%WiEcPb@!=$BLy!Q-RkjY+Z6 zMp!aAdR+^qXFOFumOzb-7`nrIxl&qMLY(E`&Cg!pjss|U?wo3ZC1bcOt~di0k&WE% z)8Bq1!SoW_@_Q~F&^=^bNA8?hL8%V0(XRpY+(0F%KHrHMr6tiN;LsKptLQjT_{sA% zO?A1aTFJBv0+_z+(4zT8J+$hg?soqeKK+HkjyL**n7;kpN>QKxKNyW9ZSG3um zKj2)`8PGX<=N}BeMC5+RgCt)eO0Ltk7IfTCS-C)f0S@&qi0FeOK2VO$I5_!5<+!JW zZq+AR?#yLPY9&*|S7q@cN8;g?sO_?i*4LWRr5$?QNS0l^h>bs3`EwW{@iB-ij>vG% z9|!m4roW-*+?CuBqfw3jaIP{#aj7b})Fw{tvv4+R7itdpDK7NrqQELF;7TY;JX4k6 z;kDK3UOJ5h_MM?|NeteFZ|kyIrdfM~Ls2Pe~}Qn zwo{L6bd8|6LXZqv*b~LMi0uQ!?2e}!sSaZ_pB!fwyq-Z3zq~UU=A?g-a3iNJ2Iv4<+NB{k`E~Mu7 z^;3St@JB?YR9^1D8L9z@3N3>i{`;p~qebzhHEeR5)!(q#sT82iROGsz4_ds>Sfds_ zdM@GwHpvxmD$67x)U-!7Q6*I3S+|=55^lfh>5d9j)7w+`qd&)S`mwGuc_=H>nbRX| z`aLm{l@Y8%aBWZy1?)=UtHNm#6r(?;k}4OOhP7eh-M@7)`)T*x%3D>&`$Swwj0 z9n04GF*z~g>hz@qJZvEXs1pL&DEy3#aVY$HExEZ{y3GcN+E$y+w(U2_uYw9`J+Y8W zTU!Qyf4NUN)|Qg5GlrmPluKsEhO1e+FF9~fk|+=kJ;=Ka)RWW3HiJ)?u(L=$I`nIn z-pn*2p_Idi%6a=J#f_5@Y)OIG%Dtz6BEZPY!-mn{3OIdq?DY;o7u6gBS|lb_T7ab-~$^L^G9C+oZvs#y$9&v!@ced0g z53nBBOi@lKYgtbJFyP#zVrGCy27#KAmomVQWEiW-x^C6&e&ZWB*iocwzhv=^49jp{ z=zM&i@&jvScR;Z>6P^5P#h&uHz22gqdSY|>Anms@M1gIEBTY<3N2mQQt|@v2(T(cNOVJcJRfDp)|yr-BzviLy@veDpfXFYWT)mW53avTAat#5<^vD60m72oE2i|TdXWPeY3_sEMeY6J}8 zX@X3@NoG|FP zzi$;GV>t_E#r#uR?{!vOP-v9W{l89KI^SUUa2Sgh}0Rl2uNfLDS3fD~d@89}U z$eN;O{jd00!+}o!RF1Y6+(X68g9?8b(hn;vHO^Vz>ebeIv5#}*__B6`!V|=7(+i-~ z_b>K+g!>ChKR$p7k7t8O-d_onfH56c#t6FKovw)8z3ackAU14U4fdnd20|E_3pJcy zw1oJ)Sw0WnrY7%Pen+Hwr>Z2l8oV0mDg4M5!Yxi>qZCc#UC#Hbud)cMw!jPPR~mPe zJ(g#Iig6sLK-yHY0W~+8!&zW#-Dwz$ricJ+;Pd-XUb_aGt>2+P&hY645J3N<*M8V_ z-Pc6o(9pqfEsSUTfDtbxp@6bpBN z{mb{4DV)@t_xW5gG%zUzOHL;Y@YYPSV=GIjIAFe)pLQRI1#(18tes{uIG;5%W#|8PLrBb z9BWcFf%KSAvwxyt3dCS);t25RdeJitMf2Go|MbVglH&)2;CGhV`+fdQWCLBQN=+j@ zIE!-Rl^9Hk1Jl;y3N)PWoMp7LQVs#Y7#3shfs+CwPf&n0XJIz+-^o zaMa*k!H_8a*T>`UtKupMXA2d~d(%l?J~gQl_Hte)_l}Sf#hsrP6?@CZ{Y|d)Z!4RR zu!-`MVeMiupCBOwltc3~LCtT28f2|z!v{y$?;DXJM!Hp3F*5Qx8{P_B-M48`BloPv+YLi zi(JvZ_mpj=X3`IVw0)&!Qc-Lh$sx)~G=Wkp^=Qv@FfoQZLYkjWPq%w+kKFJS(=kB0 za695jDS)y!W{9!q>ebKb3ZM{bo?F*u^|$`{`w)MmzmPfiH~trKGh6b4`po^D1^KZQ zc9Efc>0Y?Kg9*DSrSZ5J_s>7HR@+*+hcQ)wUE}k=5t0p%%C2`0qSzE>qusRXEAe@bfjbS7S-UJAI z2UxDZ)P*@=tS(lIYffQAfCSgTY%*g-nWzhQGF`xOsH|F-_1C~_CQrF=Dl*+Wpb3TF zW8g+B8{*d#Mrj*@|0x^mQKOn=vOJu^Ml+-cg}TAe<>jtH+ahc zTkk8*z~Cx)2B4d=2UF{D;F&8Qcp?!L8-Irm9W0D%Pa zQz%|!ggRYJ({z=O|5DD~-dsq)`IlL+xp4a#{YA>3K@xrq!>*GozJg!YdzG0-!>MPYVUi<;7PRaVQ@2^Q=~ zzP29v#&<7A;M=5$TW^D-ZFPCex3cBhR9g9EXTFtm+!P9$V6%^9OPpZHN!ik`-9_n^ zg%11u0`CmR@zVje$bToEn|VJWcI`BYslZsa^!g%6>SgjBITZ8W-_N}5$-lj>~Zzj#NP(0yp7ozZk+fSe|9o%Ul(@%vbFQm5KE|W?3F&Lteeko zMA7%>hjE%L5f)7aJ3?0*vj-8>FX+k~kM1ISOTjz*VJRY3o{5p-&KT?cJL*Z0KN|YQ zD-_fO{zZOdBtZNY!NrWT?e3O%&+~3&{^0~Bd~d5L6kSxm6oqeF`OMt3vDVM|ZgpE| zurYct+RB+nNT;DKOc5`Zub>E2L8vkR6T@v_akgGE3DsW5Y1T39OhlCGIsN|dlD^T) zpSH3yPh-ljCvGJBzeAxDJw0tLktS|1I(HWA7+$p?Ed@^l@&{FAgE+ zaoc}~qVBDZU+3nD=oBjfAHc-51o_kP7cfdWbEzyGB%?~?)Z&IpYDFA4hJB`O3B8R1 zC3(_ad@BGYrNdl;BxQ)*G3mc|dq?tX<@Pluy%(LhMHLvihxIr>e#C31VcUMFZS-zX z4Vbxf>M`&5SGJUsGqiU!_pHuhq{OriBs)3?gI(sCd}dNH(f6nI_CvjOM3I6l$;iAo zwtKpRrSFCqUJafq7txa1@eA~{_^qs+O(Cwl=O^u}Uwgtl2f(ymQERPhy`%t+!>pn~ z?iMNkjxNi|m+;ypf6*T?bv#`kIe+2|g{+u;&FXZOUy`giYTh4}0A zqRE_T?t<-2BCIY>8OoIXjn|WQJ0!3FMT^h==W!7+jEPnf?Ezv!Qj9rEQuR`->bBrb;jz%8XFyR z4D?D31Xpb*Nbyj$xcpvfGl`rF(0Q>#XL}wzH9P!UGGyS&yXkXv-n!ZP?ULl{dYhom zz`cGNmdG*uup+Mdb3bnM&E`8FPk+l;3?!?xnVA(Ebk*9ZNGEcDYBqZVrO94=cXS4y7CzJ%jdeT#yV11VRUa zNI;-4;5SSVh#B~S1_I%L{*OQXzdjz;eZ$fNdUsg$SxH)k9T*v;s;Hq*EoTw&KO@ny A=Kufz literal 0 HcmV?d00001 diff --git a/extras/AudioPluginHost/Source/GraphEditorPanel.cpp b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp similarity index 60% rename from extras/AudioPluginHost/Source/GraphEditorPanel.cpp rename to extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp index 7526fedbee..dfd815521b 100644 --- a/extras/AudioPluginHost/Source/GraphEditorPanel.cpp +++ b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp @@ -26,9 +26,73 @@ #include "../JuceLibraryCode/JuceHeader.h" #include "GraphEditorPanel.h" -#include "InternalFilters.h" +#include "../Filters/InternalFilters.h" #include "MainHostWindow.h" +//============================================================================== +#if JUCE_IOS + class AUScanner + { + public: + AUScanner (KnownPluginList& list) + : knownPluginList (list), pool (5) + { + knownPluginList.clearBlacklistedFiles(); + paths = formatToScan.getDefaultLocationsToSearch(); + + startScan(); + } + + private: + KnownPluginList& knownPluginList; + AudioUnitPluginFormat formatToScan; + + ScopedPointer scanner; + FileSearchPath paths; + + ThreadPool pool; + + void startScan() + { + auto deadMansPedalFile = getAppProperties().getUserSettings() + ->getFile().getSiblingFile ("RecentlyCrashedPluginsList"); + + scanner = new PluginDirectoryScanner (knownPluginList, formatToScan, paths, + true, deadMansPedalFile, true); + + for (int i = 5; --i >= 0;) + pool.addJob (new ScanJob (*this), true); + } + + bool doNextScan() + { + String pluginBeingScanned; + if (scanner->scanNextFile (true, pluginBeingScanned)) + return true; + + return false; + } + + struct ScanJob : public ThreadPoolJob + { + ScanJob (AUScanner& s) : ThreadPoolJob ("pluginscan"), scanner (s) {} + + JobStatus runJob() + { + while (scanner.doNextScan() && ! shouldExit()) + {} + + return jobHasFinished; + } + + AUScanner& scanner; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ScanJob) + }; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AUScanner) + }; +#endif //============================================================================== struct GraphEditorPanel::PinComponent : public Component, @@ -109,7 +173,9 @@ struct GraphEditorPanel::PinComponent : public Component, }; //============================================================================== -struct GraphEditorPanel::FilterComponent : public Component, private AudioProcessorParameter::Listener +struct GraphEditorPanel::FilterComponent : public Component, + public Timer, + private AudioProcessorParameter::Listener { FilterComponent (GraphEditorPanel& p, uint32 id) : panel (p), graph (p.graph), pluginID (id) { @@ -149,12 +215,22 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc toFront (true); - if (e.mods.isPopupMenu()) - showPopupMenu(); + if (isOnTouchDevice()) + { + startTimer (750); + } + else + { + if (e.mods.isPopupMenu()) + showPopupMenu(); + } } void mouseDrag (const MouseEvent& e) override { + if (isOnTouchDevice() && e.getDistanceFromDragStart() > 5) + stopTimer(); + if (! e.mods.isPopupMenu()) { auto pos = originalPos + e.getOffsetFromDragStart(); @@ -174,6 +250,12 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc void mouseUp (const MouseEvent& e) override { + if (isOnTouchDevice()) + { + stopTimer(); + callAfterDelay (250, []() { PopupMenu::dismissAllActiveMenus(); }); + } + if (e.mouseWasDraggedSinceMouseDown()) { graph.setChangedFlag (true); @@ -317,19 +399,26 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc void showPopupMenu() { - PopupMenu m; - m.addItem (1, "Delete this filter"); - m.addItem (2, "Disconnect all pins"); - m.addItem (3, "Toggle Bypass"); - m.addSeparator(); - m.addItem (10, "Show plugin GUI"); - m.addItem (11, "Show all programs"); - m.addItem (12, "Show all parameters"); - m.addSeparator(); - m.addItem (20, "Configure Audio I/O"); - m.addItem (21, "Test state save/load"); + menu = new PopupMenu; + menu->addItem (1, "Delete this filter"); + menu->addItem (2, "Disconnect all pins"); + menu->addItem (3, "Toggle Bypass"); - switch (m.show()) + if (getProcessor()->hasEditor()) + { + menu->addSeparator(); + menu->addItem (10, "Show plugin GUI"); + menu->addItem (11, "Show all programs"); + menu->addItem (12, "Show all parameters"); + } + + menu->addSeparator(); + menu->addItem (20, "Configure Audio I/O"); + menu->addItem (21, "Test state save/load"); + + menu->showMenuAsync ({}, ModalCallbackFunction::create + ([this] (int r) { + switch (r) { case 1: graph.graph.removeNode (pluginID); break; case 2: graph.graph.disconnectNode (pluginID); break; @@ -350,6 +439,7 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc default: break; } + })); } void testStateSaveLoad() @@ -369,6 +459,15 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc w->toFront (true); } + void timerCallback() override + { + // this should only be called on touch devices + jassert (isOnTouchDevice()); + + stopTimer(); + showPopupMenu(); + } + void parameterValueChanged (int, float) override { repaint(); @@ -386,6 +485,7 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc Font font { 13.0f, Font::bold }; int numIns = 0, numOuts = 0; DropShadowEffect shadow; + ScopedPointer menu; }; @@ -606,20 +706,29 @@ void GraphEditorPanel::paint (Graphics& g) void GraphEditorPanel::mouseDown (const MouseEvent& e) { - if (e.mods.isPopupMenu()) + if (isOnTouchDevice()) { - PopupMenu m; - - if (auto* mainWindow = findParentComponentOfClass()) - { - mainWindow->addPluginsToMenu (m); - - auto r = m.show(); - - if (auto* desc = mainWindow->getChosenType (r)) - createNewPlugin (*desc, e.position.toInt()); - } + originalTouchPos = e.position.toInt(); + startTimer (750); } + + if (e.mods.isPopupMenu()) + showPopupMenu (e.position.toInt()); +} + +void GraphEditorPanel::mouseUp (const MouseEvent&) +{ + if (isOnTouchDevice()) + { + stopTimer(); + callAfterDelay (250, []() { PopupMenu::dismissAllActiveMenus(); }); + } +} + +void GraphEditorPanel::mouseDrag (const MouseEvent& e) +{ + if (isOnTouchDevice() && e.getDistanceFromDragStart() > 5) + stopTimer(); } void GraphEditorPanel::createNewPlugin (const PluginDescription& desc, Point position) @@ -709,6 +818,24 @@ void GraphEditorPanel::updateComponents() } } +void GraphEditorPanel::showPopupMenu (Point mousePos) +{ + menu = new PopupMenu; + + if (auto* mainWindow = findParentComponentOfClass()) + { + mainWindow->addPluginsToMenu (*menu); + + menu->showMenuAsync ({}, + ModalCallbackFunction::create ([this, mousePos] (int r) + { + if (auto* mainWindow = findParentComponentOfClass()) + if (auto* desc = mainWindow->getChosenType (r)) + createNewPlugin (*desc, mousePos); + })); + } +} + void GraphEditorPanel::beginConnectorDrag (AudioProcessorGraph::NodeAndChannel source, AudioProcessorGraph::NodeAndChannel dest, const MouseEvent& e) @@ -799,6 +926,15 @@ void GraphEditorPanel::endDraggingConnector (const MouseEvent& e) } } +void GraphEditorPanel::timerCallback() +{ + // this should only be called on touch devices + jassert (isOnTouchDevice()); + + stopTimer(); + showPopupMenu (originalTouchPos); +} + //============================================================================== struct GraphDocumentComponent::TooltipBar : public Component, private Timer @@ -837,14 +973,189 @@ struct GraphDocumentComponent::TooltipBar : public Component, }; //============================================================================== -GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& fm, AudioDeviceManager& dm) - : graph (new FilterGraph (fm)), deviceManager (dm), +class GraphDocumentComponent::TitleBarComponent : public Component, + private Button::Listener +{ +public: + TitleBarComponent (GraphDocumentComponent& graphDocumentComponent) + : owner (graphDocumentComponent) + { + static const unsigned char burgerMenuPathData[] + = { 110,109,0,0,128,64,0,0,32,65,108,0,0,224,65,0,0,32,65,98,254,212,232,65,0,0,32,65,0,0,240,65,252, + 169,17,65,0,0,240,65,0,0,0,65,98,0,0,240,65,8,172,220,64,254,212,232,65,0,0,192,64,0,0,224,65,0,0, + 192,64,108,0,0,128,64,0,0,192,64,98,16,88,57,64,0,0,192,64,0,0,0,64,8,172,220,64,0,0,0,64,0,0,0,65, + 98,0,0,0,64,252,169,17,65,16,88,57,64,0,0,32,65,0,0,128,64,0,0,32,65,99,109,0,0,224,65,0,0,96,65,108, + 0,0,128,64,0,0,96,65,98,16,88,57,64,0,0,96,65,0,0,0,64,4,86,110,65,0,0,0,64,0,0,128,65,98,0,0,0,64, + 254,212,136,65,16,88,57,64,0,0,144,65,0,0,128,64,0,0,144,65,108,0,0,224,65,0,0,144,65,98,254,212,232, + 65,0,0,144,65,0,0,240,65,254,212,136,65,0,0,240,65,0,0,128,65,98,0,0,240,65,4,86,110,65,254,212,232, + 65,0,0,96,65,0,0,224,65,0,0,96,65,99,109,0,0,224,65,0,0,176,65,108,0,0,128,64,0,0,176,65,98,16,88,57, + 64,0,0,176,65,0,0,0,64,2,43,183,65,0,0,0,64,0,0,192,65,98,0,0,0,64,254,212,200,65,16,88,57,64,0,0,208, + 65,0,0,128,64,0,0,208,65,108,0,0,224,65,0,0,208,65,98,254,212,232,65,0,0,208,65,0,0,240,65,254,212, + 200,65,0,0,240,65,0,0,192,65,98,0,0,240,65,2,43,183,65,254,212,232,65,0,0,176,65,0,0,224,65,0,0,176, + 65,99,101,0,0 }; + + static const unsigned char pluginListPathData[] + = { 110,109,193,202,222,64,80,50,21,64,108,0,0,48,65,0,0,0,0,108,160,154,112,65,80,50,21,64,108,0,0,48,65,80, + 50,149,64,108,193,202,222,64,80,50,21,64,99,109,0,0,192,64,251,220,127,64,108,160,154,32,65,165,135,202, + 64,108,160,154,32,65,250,220,47,65,108,0,0,192,64,102,144,10,65,108,0,0,192,64,251,220,127,64,99,109,0,0, + 128,65,251,220,127,64,108,0,0,128,65,103,144,10,65,108,96,101,63,65,251,220,47,65,108,96,101,63,65,166,135, + 202,64,108,0,0,128,65,251,220,127,64,99,109,96,101,79,65,148,76,69,65,108,0,0,136,65,0,0,32,65,108,80, + 77,168,65,148,76,69,65,108,0,0,136,65,40,153,106,65,108,96,101,79,65,148,76,69,65,99,109,0,0,64,65,63,247, + 95,65,108,80,77,128,65,233,161,130,65,108,80,77,128,65,125,238,167,65,108,0,0,64,65,51,72,149,65,108,0,0,64, + 65,63,247,95,65,99,109,0,0,176,65,63,247,95,65,108,0,0,176,65,51,72,149,65,108,176,178,143,65,125,238,167,65, + 108,176,178,143,65,233,161,130,65,108,0,0,176,65,63,247,95,65,99,109,12,86,118,63,148,76,69,65,108,0,0,160, + 64,0,0,32,65,108,159,154,16,65,148,76,69,65,108,0,0,160,64,40,153,106,65,108,12,86,118,63,148,76,69,65,99, + 109,0,0,0,0,63,247,95,65,108,62,53,129,64,233,161,130,65,108,62,53,129,64,125,238,167,65,108,0,0,0,0,51, + 72,149,65,108,0,0,0,0,63,247,95,65,99,109,0,0,32,65,63,247,95,65,108,0,0,32,65,51,72,149,65,108,193,202,190, + 64,125,238,167,65,108,193,202,190,64,233,161,130,65,108,0,0,32,65,63,247,95,65,99,101,0,0 }; + + { + Path p; + p.loadPathFromData (burgerMenuPathData, sizeof (burgerMenuPathData)); + burgerButton.setShape (p, true, true, false); + } + + { + Path p; + p.loadPathFromData (pluginListPathData, sizeof (pluginListPathData)); + pluginButton.setShape (p, true, true, false); + } + + burgerButton.addListener (this); + addAndMakeVisible (burgerButton); + + pluginButton.addListener (this); + addAndMakeVisible (pluginButton); + + titleLabel.setJustificationType (Justification::centredLeft); + addAndMakeVisible (titleLabel); + + setOpaque (true); + } + +private: + void paint (Graphics& g) override + { + auto titleBarBackgroundColour = getLookAndFeel().findColour (ResizableWindow::backgroundColourId).darker(); + + g.setColour (titleBarBackgroundColour); + g.fillRect (getLocalBounds()); + } + + void resized() override + { + auto r = getLocalBounds(); + + burgerButton.setBounds (r.removeFromLeft (40).withSizeKeepingCentre (20, 20)); + + pluginButton.setBounds (r.removeFromRight (40).withSizeKeepingCentre (20, 20)); + + titleLabel.setFont (Font (static_cast (getHeight()) * 0.5f, Font::plain)); + titleLabel.setBounds (r); + } + + void buttonClicked (Button* b) override + { + owner.showSidePanel (b == &burgerButton); + } + + GraphDocumentComponent& owner; + + Label titleLabel {"titleLabel", "Plugin Host"}; + ShapeButton burgerButton {"burgerButton", Colours::lightgrey, Colours::lightgrey, Colours::white}; + ShapeButton pluginButton {"pluginButton", Colours::lightgrey, Colours::lightgrey, Colours::white}; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TitleBarComponent) +}; + +//============================================================================== +struct GraphDocumentComponent::PluginListBoxModel : public ListBoxModel, + public ChangeListener, + public MouseListener +{ + PluginListBoxModel (ListBox& lb, KnownPluginList& kpl) + : owner (lb), + knownPlugins (kpl) + { + knownPlugins.addChangeListener (this); + owner.addMouseListener (this, true); + + #if JUCE_IOS + scanner = new AUScanner (knownPlugins); + #endif + } + + int getNumRows() override + { + return knownPlugins.getNumTypes(); + } + + void paintListBoxItem (int rowNumber, Graphics& g, + int width, int height, bool rowIsSelected) override + { + g.fillAll (rowIsSelected ? Colour (0xff42A2C8) + : Colour (0xff263238)); + + g.setColour (rowIsSelected ? Colours::black : Colours::white); + + if (rowNumber < knownPlugins.getNumTypes()) + g.drawFittedText (knownPlugins.getType (rowNumber)->name, + { 0, 0, width, height - 2 }, + Justification::centred, + 1); + + g.setColour (Colours::black.withAlpha (0.4f)); + g.drawRect (0, height - 1, width, 1); + } + + var getDragSourceDescription (const SparseSet& selectedRows) override + { + if (! isOverSelectedRow) + return var(); + + return String ("PLUGIN: " + String (selectedRows[0])); + } + + void changeListenerCallback (ChangeBroadcaster*) override + { + owner.updateContent(); + } + + void mouseDown (const MouseEvent& e) override + { + isOverSelectedRow = owner.getRowPosition (owner.getSelectedRow(), true) + .contains (e.getEventRelativeTo (&owner).getMouseDownPosition()); + } + + ListBox& owner; + KnownPluginList& knownPlugins; + + bool isOverSelectedRow = false; + + #if JUCE_IOS + ScopedPointer scanner; + #endif +}; + +//============================================================================== +GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& fm, + AudioDeviceManager& dm, + KnownPluginList& kpl) + : graph (new FilterGraph (fm)), + deviceManager (dm), + pluginList (kpl), graphPlayer (getAppProperties().getUserSettings()->getBoolValue ("doublePrecisionProcessing", false)) { - addAndMakeVisible (graphPanel = new GraphEditorPanel (*graph)); + init(); deviceManager.addChangeListener (graphPanel); + deviceManager.addAudioCallback (&graphPlayer); + deviceManager.addMidiInputCallback (String(), &graphPlayer.getMidiMessageCollector()); +} +void GraphDocumentComponent::init() +{ + addAndMakeVisible (graphPanel = new GraphEditorPanel (*graph)); graphPlayer.setProcessor (&graph->graph); keyState.addListener (&graphPlayer.getMidiMessageCollector()); @@ -852,10 +1163,30 @@ GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& fm, Au addAndMakeVisible (keyboardComp = new MidiKeyboardComponent (keyState, MidiKeyboardComponent::horizontalKeyboard)); addAndMakeVisible (statusBar = new TooltipBar()); - deviceManager.addAudioCallback (&graphPlayer); - deviceManager.addMidiInputCallback (String(), &graphPlayer.getMidiMessageCollector()); - graphPanel->updateComponents(); + + if (isOnTouchDevice()) + { + if (isOnTouchDevice()) + addAndMakeVisible (titleBarComponent = new TitleBarComponent (*this)); + + pluginListBoxModel = new PluginListBoxModel (pluginListBox, pluginList); + + pluginListBox.setModel (pluginListBoxModel); + pluginListBox.setRowHeight (40); + + pluginListSidePanel.setContent (&pluginListBox, false); + + mobileSettingsSidePanel.setContent (new AudioDeviceSelectorComponent (deviceManager, + 0, 2, 0, 2, + true, true, true, false)); + + if (isOnTouchDevice()) + { + addAndMakeVisible (pluginListSidePanel); + addAndMakeVisible (mobileSettingsSidePanel); + } + } } GraphDocumentComponent::~GraphDocumentComponent() @@ -867,12 +1198,19 @@ GraphDocumentComponent::~GraphDocumentComponent() void GraphDocumentComponent::resized() { + auto r = getLocalBounds(); + const int titleBarHeight = 40; const int keysHeight = 60; const int statusHeight = 20; - graphPanel->setBounds (0, 0, getWidth(), getHeight() - keysHeight); - statusBar->setBounds (0, getHeight() - keysHeight - statusHeight, getWidth(), statusHeight); - keyboardComp->setBounds (0, getHeight() - keysHeight, getWidth(), keysHeight); + if (isOnTouchDevice()) + titleBarComponent->setBounds (r.removeFromTop(titleBarHeight)); + + keyboardComp->setBounds (r.removeFromBottom (keysHeight)); + statusBar->setBounds (r.removeFromBottom (statusHeight)); + graphPanel->setBounds (r); + + checkAvailableWidth(); } void GraphDocumentComponent::createNewPlugin (const PluginDescription& desc, Point pos) @@ -903,6 +1241,60 @@ void GraphDocumentComponent::releaseGraph() graph = nullptr; } +bool GraphDocumentComponent::isInterestedInDragSource (const SourceDetails& details) +{ + return ((dynamic_cast (details.sourceComponent.get()) != nullptr) + && details.description.toString().startsWith ("PLUGIN")); +} + +void GraphDocumentComponent::itemDropped (const SourceDetails& details) +{ + // don't allow items to be dropped behind the sidebar + if (pluginListSidePanel.getBounds().contains (details.localPosition)) + return; + + auto pluginTypeIndex = details.description.toString() + .fromFirstOccurrenceOf ("PLUGIN: ", false, false) + .getIntValue(); + + // must be a valid index! + jassert (isPositiveAndBelow (pluginTypeIndex, pluginList.getNumTypes())); + + createNewPlugin (*pluginList.getType (pluginTypeIndex), details.localPosition); +} + +void GraphDocumentComponent::showSidePanel (bool showSettingsPanel) +{ + if (showSettingsPanel) + mobileSettingsSidePanel.showOrHide (true); + else + pluginListSidePanel.showOrHide (true); + + checkAvailableWidth(); + + lastOpenedSidePanel = showSettingsPanel ? &mobileSettingsSidePanel + : &pluginListSidePanel; +} + +void GraphDocumentComponent::hideLastSidePanel() +{ + if (lastOpenedSidePanel != nullptr) + lastOpenedSidePanel->showOrHide (false); + + if (mobileSettingsSidePanel.isPanelShowing()) lastOpenedSidePanel = &mobileSettingsSidePanel; + else if (pluginListSidePanel.isPanelShowing()) lastOpenedSidePanel = &pluginListSidePanel; + else lastOpenedSidePanel = nullptr; +} + +void GraphDocumentComponent::checkAvailableWidth() +{ + if (mobileSettingsSidePanel.isPanelShowing() && pluginListSidePanel.isPanelShowing()) + { + if (getWidth() - (mobileSettingsSidePanel.getWidth() + pluginListSidePanel.getWidth()) < 150) + hideLastSidePanel(); + } +} + void GraphDocumentComponent::setDoublePrecision (bool doublePrecision) { graphPlayer.setDoublePrecisionProcessing (doublePrecision); diff --git a/extras/AudioPluginHost/Source/GraphEditorPanel.h b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.h similarity index 61% rename from extras/AudioPluginHost/Source/GraphEditorPanel.h rename to extras/AudioPluginHost/Source/UI/GraphEditorPanel.h index 246b875208..cf24387f23 100644 --- a/extras/AudioPluginHost/Source/GraphEditorPanel.h +++ b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.h @@ -26,15 +26,17 @@ #pragma once -#include "FilterGraph.h" +#include "../Filters/FilterGraph.h" +class MainHostWindow; //============================================================================== /** A panel that displays and edits a FilterGraph. */ class GraphEditorPanel : public Component, - public ChangeListener + public ChangeListener, + private Timer { public: GraphEditorPanel (FilterGraph& graph); @@ -43,11 +45,20 @@ public: void createNewPlugin (const PluginDescription&, Point position); void paint (Graphics&) override; - void mouseDown (const MouseEvent&) override; void resized() override; + + void mouseDown (const MouseEvent&) override; + void mouseUp (const MouseEvent&) override; + void mouseDrag (const MouseEvent&) override; + void changeListenerCallback (ChangeBroadcaster*) override; + + //============================================================================== void updateComponents(); + //============================================================================== + void showPopupMenu (Point position); + //============================================================================== void beginConnectorDrag (AudioProcessorGraph::NodeAndChannel source, AudioProcessorGraph::NodeAndChannel dest, @@ -66,11 +77,17 @@ private: OwnedArray nodes; OwnedArray connectors; ScopedPointer draggingConnector; + ScopedPointer menu; FilterComponent* getComponentForFilter (AudioProcessorGraph::NodeID) const; ConnectorComponent* getComponentForConnection (const AudioProcessorGraph::Connection&) const; PinComponent* findPinAt (Point) const; + //============================================================================== + Point originalTouchPos; + + void timerCallback() override; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GraphEditorPanel) }; @@ -81,11 +98,15 @@ private: It also manages the graph itself, and plays it. */ -class GraphDocumentComponent : public Component +class GraphDocumentComponent : public Component, + public DragAndDropTarget, + public DragAndDropContainer { public: GraphDocumentComponent (AudioPluginFormatManager& formatManager, - AudioDeviceManager& deviceManager); + AudioDeviceManager& deviceManager, + KnownPluginList& pluginList); + ~GraphDocumentComponent(); //============================================================================== @@ -96,21 +117,52 @@ public: //============================================================================== ScopedPointer graph; - void resized(); + void resized() override; void unfocusKeyboardComponent(); void releaseGraph(); + //============================================================================== + bool isInterestedInDragSource (const SourceDetails&) override; + void itemDropped (const SourceDetails&) override; + + //============================================================================== ScopedPointer graphPanel; ScopedPointer keyboardComp; + //============================================================================== + void showSidePanel (bool isSettingsPanel); + void hideLastSidePanel(); + + BurgerMenuComponent burgerMenu; + private: //============================================================================== AudioDeviceManager& deviceManager; + KnownPluginList& pluginList; + AudioProcessorPlayer graphPlayer; MidiKeyboardState keyState; struct TooltipBar; ScopedPointer statusBar; + class TitleBarComponent; + ScopedPointer titleBarComponent; + + //============================================================================== + struct PluginListBoxModel; + ScopedPointer pluginListBoxModel; + + ListBox pluginListBox; + + SidePanel mobileSettingsSidePanel { "Settings", 300, true }; + SidePanel pluginListSidePanel { "Plugins", 250, false }; + SidePanel* lastOpenedSidePanel = nullptr; + + //============================================================================== + void init(); + void checkAvailableWidth(); + + //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GraphDocumentComponent) }; diff --git a/extras/AudioPluginHost/Source/MainHostWindow.cpp b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp similarity index 84% rename from extras/AudioPluginHost/Source/MainHostWindow.cpp rename to extras/AudioPluginHost/Source/UI/MainHostWindow.cpp index 7d7c7ba2af..23f99fcadd 100644 --- a/extras/AudioPluginHost/Source/MainHostWindow.cpp +++ b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp @@ -26,7 +26,7 @@ #include "../JuceLibraryCode/JuceHeader.h" #include "MainHostWindow.h" -#include "InternalFilters.h" +#include "../Filters/InternalFilters.h" //============================================================================== @@ -81,16 +81,24 @@ MainHostWindow::MainHostWindow() formatManager.addDefaultFormats(); formatManager.addFormat (new InternalPluginFormat()); - ScopedPointer savedAudioState (getAppProperties().getUserSettings() - ->getXmlValue ("audioDeviceState")); + RuntimePermissions::request (RuntimePermissions::recordAudio, + [safeThis = SafePointer (this)] (bool granted) mutable + { + ScopedPointer savedAudioState (getAppProperties().getUserSettings() + ->getXmlValue ("audioDeviceState")); - deviceManager.initialise (256, 256, savedAudioState, true); + safeThis->deviceManager.initialise (granted ? 256 : 0, 256, savedAudioState, true); + }); + #if JUCE_IOS || JUCE_ANDROID + setFullScreen (true); + #else setResizable (true, false); setResizeLimits (500, 400, 10000, 10000); centreWithSize (800, 600); + #endif - graphHolder = new GraphDocumentComponent (formatManager, deviceManager); + graphHolder = new GraphDocumentComponent (formatManager, deviceManager, knownPluginList); setContentNonOwned (graphHolder, false); @@ -106,6 +114,9 @@ MainHostWindow::MainHostWindow() if (savedPluginList != nullptr) knownPluginList.recreateFromXml (*savedPluginList); + for (auto* t : internalTypes) + knownPluginList.addType (*t); + pluginSortMethod = (KnownPluginList::SortMethod) getAppProperties().getUserSettings() ->getIntValue ("pluginSortMethod", KnownPluginList::sortByManufacturer); @@ -118,11 +129,15 @@ MainHostWindow::MainHostWindow() Process::setPriority (Process::HighPriority); + #if JUCE_IOS || JUCE_ANDROID + graphHolder->burgerMenu.setModel (this); + #else #if JUCE_MAC setMacMainMenu (this); #else setMenuBar (this); #endif + #endif getCommandManager().setFirstCommandTarget (this); } @@ -138,11 +153,13 @@ MainHostWindow::~MainHostWindow() getAppProperties().getUserSettings()->setValue ("mainWindowPos", getWindowStateAsString()); clearContentComponent(); + #if ! (JUCE_ANDROID || JUCE_IOS) #if JUCE_MAC setMacMainMenu (nullptr); #else setMenuBar (nullptr); #endif + #endif graphHolder = nullptr; } @@ -181,7 +198,11 @@ void MainHostWindow::tryToQuitApplication() { new AsyncQuitRetrier(); } + #if JUCE_ANDROID || JUCE_IOS + else if (graphHolder == nullptr || graphHolder->graph->saveDocument (FilterGraph::getDefaultGraphDocumentOnMobile())) + #else else if (graphHolder == nullptr || graphHolder->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk) + #endif { // Some plug-ins do not want [NSApp stop] to be called // before the plug-ins are not deallocated. @@ -197,7 +218,7 @@ void MainHostWindow::changeListenerCallback (ChangeBroadcaster* changed) { menuItemsChanged(); - // save the plugin list every time it gets chnaged, so that if we're scanning + // save the plugin list every time it gets changed, so that if we're scanning // and it crashes, we've still saved the previous ones ScopedPointer savedPluginList (knownPluginList.createXml()); @@ -236,8 +257,10 @@ PopupMenu MainHostWindow::getMenuForIndex (int topLevelMenuIndex, const String& if (topLevelMenuIndex == 0) { // "File" menu + #if ! (JUCE_IOS || JUCE_ANDROID) menu.addCommandItem (&getCommandManager(), CommandIDs::newFile); menu.addCommandItem (&getCommandManager(), CommandIDs::open); + #endif RecentlyOpenedFilesList recentFiles; recentFiles.restoreFromString (getAppProperties().getUserSettings() @@ -247,8 +270,11 @@ PopupMenu MainHostWindow::getMenuForIndex (int topLevelMenuIndex, const String& recentFiles.createPopupMenuItems (recentFilesMenu, 100, true, true); menu.addSubMenu ("Open recent file", recentFilesMenu); + #if ! (JUCE_IOS || JUCE_ANDROID) menu.addCommandItem (&getCommandManager(), CommandIDs::save); menu.addCommandItem (&getCommandManager(), CommandIDs::saveAs); + #endif + menu.addSeparator(); menu.addCommandItem (&getCommandManager(), StandardApplicationCommandIDs::quit); } @@ -298,6 +324,7 @@ void MainHostWindow::menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/ if (auto* graph = graphHolder->graph.get()) graph->clear(); } + #if ! (JUCE_ANDROID || JUCE_IOS) else if (menuItemID >= 100 && menuItemID < 200) { RecentlyOpenedFilesList recentFiles; @@ -309,6 +336,7 @@ void MainHostWindow::menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/ if (graph != nullptr && graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk) graph->loadFrom (recentFiles.getFile (menuItemID - 100), true); } + #endif else if (menuItemID >= 200 && menuItemID < 210) { if (menuItemID == 200) pluginSortMethod = KnownPluginList::defaultOrder; @@ -375,10 +403,13 @@ ApplicationCommandTarget* MainHostWindow::getNextCommandTarget() void MainHostWindow::getAllCommands (Array& commands) { // this returns the set of all commands that this target can perform.. - const CommandID ids[] = { CommandIDs::newFile, + const CommandID ids[] = { + #if ! (JUCE_IOS || JUCE_ANDROID) + CommandIDs::newFile, CommandIDs::open, CommandIDs::save, CommandIDs::saveAs, + #endif CommandIDs::showPluginListEditor, CommandIDs::showAudioSettings, CommandIDs::toggleDoublePrecision, @@ -395,6 +426,7 @@ void MainHostWindow::getCommandInfo (const CommandID commandID, ApplicationComma switch (commandID) { + #if ! (JUCE_IOS || JUCE_ANDROID) case CommandIDs::newFile: result.setInfo ("New", "Creates a new filter graph file", category, 0); result.defaultKeypresses.add(KeyPress('n', ModifierKeys::commandModifier, 0)); @@ -416,6 +448,7 @@ void MainHostWindow::getCommandInfo (const CommandID commandID, ApplicationComma category, 0); result.defaultKeypresses.add (KeyPress ('s', ModifierKeys::shiftModifier | ModifierKeys::commandModifier, 0)); break; + #endif case CommandIDs::showPluginListEditor: result.setInfo ("Edit the list of available plug-Ins...", String(), category, 0); @@ -449,6 +482,7 @@ bool MainHostWindow::perform (const InvocationInfo& info) { switch (info.commandID) { + #if ! (JUCE_IOS || JUCE_ANDROID) case CommandIDs::newFile: if (graphHolder != nullptr && graphHolder->graph != nullptr && graphHolder->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk) graphHolder->graph->newDocument(); @@ -468,6 +502,7 @@ bool MainHostWindow::perform (const InvocationInfo& info) if (graphHolder != nullptr && graphHolder->graph != nullptr) graphHolder->graph->saveAs (File(), true, true, true); break; + #endif case CommandIDs::showPluginListEditor: if (pluginListWindow == nullptr) @@ -520,15 +555,16 @@ bool MainHostWindow::perform (const InvocationInfo& info) void MainHostWindow::showAudioSettings() { - AudioDeviceSelectorComponent audioSettingsComp (deviceManager, - 0, 256, - 0, 256, - true, true, true, false); + auto* audioSettingsComp = new AudioDeviceSelectorComponent (deviceManager, + 0, 256, + 0, 256, + true, true, + true, false); - audioSettingsComp.setSize (500, 450); + audioSettingsComp->setSize (500, 450); DialogWindow::LaunchOptions o; - o.content.setNonOwned (&audioSettingsComp); + o.content.setOwned (audioSettingsComp); o.dialogTitle = "Audio Settings"; o.componentToCentreAround = this; o.dialogBackgroundColour = getLookAndFeel().findColour (ResizableWindow::backgroundColourId); @@ -536,16 +572,20 @@ void MainHostWindow::showAudioSettings() o.useNativeTitleBar = false; o.resizable = false; - o.runModal(); + auto* w = o.create(); + w->enterModalState (true, + ModalCallbackFunction::create + ([safeThis = SafePointer (this)] (int) + { + ScopedPointer audioState (safeThis->deviceManager.createStateXml()); - ScopedPointer audioState (deviceManager.createStateXml()); + getAppProperties().getUserSettings()->setValue ("audioDeviceState", audioState); + getAppProperties().getUserSettings()->saveIfNeeded(); - getAppProperties().getUserSettings()->setValue ("audioDeviceState", audioState); - getAppProperties().getUserSettings()->saveIfNeeded(); - - if (graphHolder != nullptr) - if (graphHolder->graph != nullptr) - graphHolder->graph->graph.removeIllegalConnections(); + if (safeThis->graphHolder != nullptr) + if (safeThis->graphHolder->graph != nullptr) + safeThis->graphHolder->graph->graph.removeIllegalConnections(); + }), true); } bool MainHostWindow::isInterestedInFileDrag (const StringArray&) @@ -569,6 +609,7 @@ void MainHostWindow::filesDropped (const StringArray& files, int x, int y) { if (graphHolder != nullptr) { + #if ! (JUCE_ANDROID || JUCE_IOS) if (files.size() == 1 && File (files[0]).hasFileExtension (FilterGraph::getFilenameSuffix())) { if (auto* filterGraph = graphHolder->graph.get()) @@ -576,6 +617,7 @@ void MainHostWindow::filesDropped (const StringArray& files, int x, int y) filterGraph->loadFrom (File (files[0]), true); } else + #endif { OwnedArray typesFound; knownPluginList.scanAndAddDragAndDroppedFiles (formatManager, files, typesFound); diff --git a/extras/AudioPluginHost/Source/MainHostWindow.h b/extras/AudioPluginHost/Source/UI/MainHostWindow.h similarity index 94% rename from extras/AudioPluginHost/Source/MainHostWindow.h rename to extras/AudioPluginHost/Source/UI/MainHostWindow.h index f254d7c464..7b64ff327e 100644 --- a/extras/AudioPluginHost/Source/MainHostWindow.h +++ b/extras/AudioPluginHost/Source/UI/MainHostWindow.h @@ -26,17 +26,19 @@ #pragma once -#include "FilterGraph.h" +#include "../Filters/FilterGraph.h" #include "GraphEditorPanel.h" //============================================================================== namespace CommandIDs { + #if ! (JUCE_IOS || JUCE_ANDROID) static const int open = 0x30000; static const int save = 0x30001; static const int saveAs = 0x30002; static const int newFile = 0x30003; + #endif static const int showPluginListEditor = 0x30100; static const int showAudioSettings = 0x30200; static const int aboutBox = 0x30300; @@ -46,6 +48,7 @@ namespace CommandIDs ApplicationCommandManager& getCommandManager(); ApplicationProperties& getAppProperties(); +bool isOnTouchDevice(); //============================================================================== class MainHostWindow : public DocumentWindow, diff --git a/extras/AudioPluginHost/Source/PluginWindow.h b/extras/AudioPluginHost/Source/UI/PluginWindow.h similarity index 89% rename from extras/AudioPluginHost/Source/PluginWindow.h rename to extras/AudioPluginHost/Source/UI/PluginWindow.h index 88b7174e16..d593ba78e1 100644 --- a/extras/AudioPluginHost/Source/PluginWindow.h +++ b/extras/AudioPluginHost/Source/UI/PluginWindow.h @@ -26,7 +26,8 @@ #pragma once -#include "FilterIOConfiguration.h" +#include "../Filters/FilterIOConfiguration.h" + class FilterGraph; //============================================================================== @@ -57,8 +58,18 @@ public: if (auto* ui = createProcessorEditor (*node->getProcessor(), type)) setContentOwned (ui, true); + #if JUCE_IOS || JUCE_ANDROID + auto screenBounds = Desktop::getInstance().getDisplays().getTotalBounds (true).toFloat(); + + auto scaleFactor = jmin ((screenBounds.getWidth() - 50) / getWidth(), (screenBounds.getHeight() - 50) / getHeight()); + if (scaleFactor < 1.0f) + setSize (getWidth() * scaleFactor, getHeight() * scaleFactor); + + setTopLeftPosition (20, 20); + #else setTopLeftPosition (node->properties.getWithDefault (getLastXProp (type), Random::getSystemRandom().nextInt (500)), node->properties.getWithDefault (getLastYProp (type), Random::getSystemRandom().nextInt (500))); + #endif node->properties.set (getOpenProp (type), true);