sine wave works now

This commit is contained in:
2026-01-21 20:17:54 +13:00
parent a2faa1955f
commit eb511a1f79
22 changed files with 2401 additions and 563 deletions

View File

@@ -0,0 +1,364 @@
# Automatically generated makefile, created by the Projucer
# Don't edit this file! Your changes will be overwritten when you re-save the Projucer project!
# build with "V=1" for verbose builds
ifeq ($(V), 1)
V_AT =
else
V_AT = @
endif
# (this disables dependency generation if multiple architectures are set)
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)
ifndef PKG_CONFIG
PKG_CONFIG=pkg-config
endif
ifndef STRIP
STRIP=strip
endif
ifndef AR
AR=ar
endif
ifndef CONFIG
CONFIG=Debug
endif
JUCE_ARCH_LABEL := $(shell uname -m)
ifeq ($(CONFIG),Debug)
JUCE_BINDIR := build
JUCE_LIBDIR := build
JUCE_OBJDIR := build/intermediate/Debug
JUCE_OUTDIR := build
ifeq ($(TARGET_ARCH),)
TARGET_ARCH :=
endif
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x7000c" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_plugin_client=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_VST3_CAN_REPLACE_VST2=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=1" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=1" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" "-DJucePlugin_Enable_IAA=0" "-DJucePlugin_Enable_ARA=0" "-DJucePlugin_Name=\"crushFX\"" "-DJucePlugin_Desc=\"crushFX\"" "-DJucePlugin_Manufacturer=\"111euphoria\"" "-DJucePlugin_ManufacturerWebsite=\"www.yourcompany.com\"" "-DJucePlugin_ManufacturerEmail=\"\"" "-DJucePlugin_ManufacturerCode=0x4d616e75" "-DJucePlugin_PluginCode=0x49326a74" "-DJucePlugin_IsSynth=0" "-DJucePlugin_WantsMidiInput=0" "-DJucePlugin_ProducesMidiOutput=0" "-DJucePlugin_IsMidiEffect=0" "-DJucePlugin_EditorRequiresKeyboardFocus=0" "-DJucePlugin_Version=1.0.0" "-DJucePlugin_VersionCode=0x10000" "-DJucePlugin_VersionString=\"1.0.0\"" "-DJucePlugin_VSTUniqueID=JucePlugin_PluginCode" "-DJucePlugin_VSTCategory=kPlugCategEffect" "-DJucePlugin_Vst3Category=\"Fx\"" "-DJucePlugin_AUMainType='aufx'" "-DJucePlugin_AUSubType=JucePlugin_PluginCode" "-DJucePlugin_AUExportPrefix=crushFXAU" "-DJucePlugin_AUExportPrefixQuoted=\"crushFXAU\"" "-DJucePlugin_AUManufacturerCode=JucePlugin_ManufacturerCode" "-DJucePlugin_CFBundleIdentifier=com.yourcompany.crushFX" "-DJucePlugin_AAXIdentifier=com.yourcompany.crushFX" "-DJucePlugin_AAXManufacturerCode=JucePlugin_ManufacturerCode" "-DJucePlugin_AAXProductId=JucePlugin_PluginCode" "-DJucePlugin_AAXCategory=0" "-DJucePlugin_AAXDisableBypass=0" "-DJucePlugin_AAXDisableMultiMono=0" "-DJucePlugin_IAAType=0x61757278" "-DJucePlugin_IAASubType=JucePlugin_PluginCode" "-DJucePlugin_IAAName=\"111euphoria: crushFX\"" "-DJucePlugin_VSTNumMidiInputs=16" "-DJucePlugin_VSTNumMidiOutputs=16" "-DJucePlugin_ARAContentTypes=0" "-DJucePlugin_ARATransformationFlags=0" "-DJucePlugin_ARAFactoryID=\"com.yourcompany.crushFX.factory\"" "-DJucePlugin_ARADocumentArchiveID=\"com.yourcompany.crushFX.aradocumentarchive.1.0.0\"" "-DJucePlugin_ARACompatibleArchiveIDs=\"\"" "-DJUCE_STANDALONE_APPLICATION=JucePlugin_Build_Standalone" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" "-DJUCE_USE_EXTERNAL_TEMPORARY_SUBPROCESS=1" $(shell $(PKG_CONFIG) --cflags alsa freetype2 gl libcurl webkit2gtk-4.0 gtk+-x11-3.0 zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack) -pthread -I/usr/share/juce/modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -Ipre_build -I/usr/share/juce/modules $(CPPFLAGS)
JUCE_CPPFLAGS_VST3 :=
JUCE_CFLAGS_VST3 := -fPIC -fvisibility=hidden
JUCE_LDFLAGS_VST3 := -shared -Wl,--no-undefined
JUCE_VST3DIR := crushFX.vst3
VST3_PLATFORM_ARCH := $(shell $(CXX) make_helpers/arch_detection.cpp 2>&1 | tr '\n' ' ' | sed "s/.*JUCE_ARCH \([a-zA-Z0-9_-]*\).*/\1/")
JUCE_VST3SUBDIR := Contents/$(VST3_PLATFORM_ARCH)-linux
JUCE_TARGET_VST3 := $(JUCE_VST3DIR)/$(JUCE_VST3SUBDIR)/crushFX.so
JUCE_VST3DESTDIR := $(HOME)/.vst3
JUCE_COPYCMD_VST3 := $(JUCE_OUTDIR)/$(JUCE_VST3DIR) $(JUCE_VST3DESTDIR)
JUCE_CPPFLAGS_SHARED_CODE := "-DJUCE_SHARED_CODE=1"
JUCE_CFLAGS_SHARED_CODE := -fPIC -fvisibility=hidden
JUCE_TARGET_SHARED_CODE := crushFX.a
JUCE_CPPFLAGS_VST3_MANIFEST_HELPER :=
JUCE_TARGET_VST3_MANIFEST_HELPER := juce_vst3_helper
JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -fPIC -g -ggdb -O0 $(CFLAGS)
JUCE_CXXFLAGS += $(JUCE_CFLAGS) -std=c++17 $(CXXFLAGS)
JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell $(PKG_CONFIG) --libs alsa freetype2 gl libcurl zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3) $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) $(JUCE_OBJDIR) pre_build
endif
ifeq ($(CONFIG),Release)
JUCE_BINDIR := build
JUCE_LIBDIR := build
JUCE_OBJDIR := build/intermediate/Release
JUCE_OUTDIR := build
ifeq ($(TARGET_ARCH),)
TARGET_ARCH :=
endif
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x7000c" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_plugin_client=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_VST3_CAN_REPLACE_VST2=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=1" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=1" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" "-DJucePlugin_Enable_IAA=0" "-DJucePlugin_Enable_ARA=0" "-DJucePlugin_Name=\"crushFX\"" "-DJucePlugin_Desc=\"crushFX\"" "-DJucePlugin_Manufacturer=\"111euphoria\"" "-DJucePlugin_ManufacturerWebsite=\"www.yourcompany.com\"" "-DJucePlugin_ManufacturerEmail=\"\"" "-DJucePlugin_ManufacturerCode=0x4d616e75" "-DJucePlugin_PluginCode=0x49326a74" "-DJucePlugin_IsSynth=0" "-DJucePlugin_WantsMidiInput=0" "-DJucePlugin_ProducesMidiOutput=0" "-DJucePlugin_IsMidiEffect=0" "-DJucePlugin_EditorRequiresKeyboardFocus=0" "-DJucePlugin_Version=1.0.0" "-DJucePlugin_VersionCode=0x10000" "-DJucePlugin_VersionString=\"1.0.0\"" "-DJucePlugin_VSTUniqueID=JucePlugin_PluginCode" "-DJucePlugin_VSTCategory=kPlugCategEffect" "-DJucePlugin_Vst3Category=\"Fx\"" "-DJucePlugin_AUMainType='aufx'" "-DJucePlugin_AUSubType=JucePlugin_PluginCode" "-DJucePlugin_AUExportPrefix=crushFXAU" "-DJucePlugin_AUExportPrefixQuoted=\"crushFXAU\"" "-DJucePlugin_AUManufacturerCode=JucePlugin_ManufacturerCode" "-DJucePlugin_CFBundleIdentifier=com.yourcompany.crushFX" "-DJucePlugin_AAXIdentifier=com.yourcompany.crushFX" "-DJucePlugin_AAXManufacturerCode=JucePlugin_ManufacturerCode" "-DJucePlugin_AAXProductId=JucePlugin_PluginCode" "-DJucePlugin_AAXCategory=0" "-DJucePlugin_AAXDisableBypass=0" "-DJucePlugin_AAXDisableMultiMono=0" "-DJucePlugin_IAAType=0x61757278" "-DJucePlugin_IAASubType=JucePlugin_PluginCode" "-DJucePlugin_IAAName=\"111euphoria: crushFX\"" "-DJucePlugin_VSTNumMidiInputs=16" "-DJucePlugin_VSTNumMidiOutputs=16" "-DJucePlugin_ARAContentTypes=0" "-DJucePlugin_ARATransformationFlags=0" "-DJucePlugin_ARAFactoryID=\"com.yourcompany.crushFX.factory\"" "-DJucePlugin_ARADocumentArchiveID=\"com.yourcompany.crushFX.aradocumentarchive.1.0.0\"" "-DJucePlugin_ARACompatibleArchiveIDs=\"\"" "-DJUCE_STANDALONE_APPLICATION=JucePlugin_Build_Standalone" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" "-DJUCE_USE_EXTERNAL_TEMPORARY_SUBPROCESS=1" $(shell $(PKG_CONFIG) --cflags alsa freetype2 gl libcurl webkit2gtk-4.0 gtk+-x11-3.0 zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack) -pthread -I/usr/share/juce/modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -Ipre_build -I/usr/share/juce/modules $(CPPFLAGS)
JUCE_CPPFLAGS_VST3 :=
JUCE_CFLAGS_VST3 := -fPIC -fvisibility=hidden
JUCE_LDFLAGS_VST3 := -shared -Wl,--no-undefined
JUCE_VST3DIR := crushFX.vst3
VST3_PLATFORM_ARCH := $(shell $(CXX) make_helpers/arch_detection.cpp 2>&1 | tr '\n' ' ' | sed "s/.*JUCE_ARCH \([a-zA-Z0-9_-]*\).*/\1/")
JUCE_VST3SUBDIR := Contents/$(VST3_PLATFORM_ARCH)-linux
JUCE_TARGET_VST3 := $(JUCE_VST3DIR)/$(JUCE_VST3SUBDIR)/crushFX.so
JUCE_VST3DESTDIR := $(HOME)/.vst3
JUCE_COPYCMD_VST3 := $(JUCE_OUTDIR)/$(JUCE_VST3DIR) $(JUCE_VST3DESTDIR)
JUCE_CPPFLAGS_SHARED_CODE := "-DJUCE_SHARED_CODE=1"
JUCE_CFLAGS_SHARED_CODE := -fPIC -fvisibility=hidden
JUCE_TARGET_SHARED_CODE := crushFX.a
JUCE_CPPFLAGS_VST3_MANIFEST_HELPER :=
JUCE_TARGET_VST3_MANIFEST_HELPER := juce_vst3_helper
JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -fPIC -O3 $(CFLAGS)
JUCE_CXXFLAGS += $(JUCE_CFLAGS) -std=c++17 $(CXXFLAGS)
JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell $(PKG_CONFIG) --libs alsa freetype2 gl libcurl zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3) $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) $(JUCE_OBJDIR) pre_build
endif
OBJECTS_ALL := \
OBJECTS_VST3 := \
$(JUCE_OBJDIR)/include_juce_audio_plugin_client_VST3_dd633589.o \
OBJECTS_SHARED_CODE := \
$(JUCE_OBJDIR)/OpenGLUtils_dbb81aa3.o \
$(JUCE_OBJDIR)/CrushSliderLook_64ba471c.o \
$(JUCE_OBJDIR)/FilterButtonLook_51a5e492.o \
$(JUCE_OBJDIR)/FilterView_f1d22d46.o \
$(JUCE_OBJDIR)/CrushView_842d1d61.o \
$(JUCE_OBJDIR)/PluginProcessor_a059e380.o \
$(JUCE_OBJDIR)/PluginEditor_94d4fb09.o \
$(JUCE_OBJDIR)/DialLook_428a9938.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 \
$(JUCE_OBJDIR)/include_juce_audio_plugin_client_ARA_31a052ed.o \
$(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o \
$(JUCE_OBJDIR)/include_juce_audio_processors_ara_2a4c6ef7.o \
$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o \
$(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o \
$(JUCE_OBJDIR)/include_juce_core_f26d17db.o \
$(JUCE_OBJDIR)/include_juce_data_structures_7471b1e3.o \
$(JUCE_OBJDIR)/include_juce_dsp_aeb2060f.o \
$(JUCE_OBJDIR)/include_juce_events_fd7d695.o \
$(JUCE_OBJDIR)/include_juce_graphics_f817e147.o \
$(JUCE_OBJDIR)/include_juce_gui_basics_e3f79785.o \
$(JUCE_OBJDIR)/include_juce_gui_extra_6dee1c1a.o \
$(JUCE_OBJDIR)/include_juce_opengl_a8a032b.o \
$(JUCE_OBJDIR)/juce_LinuxSubprocessHelperBinaryData_e1db7dc.o \
OBJECTS_VST3_MANIFEST_HELPER := \
$(JUCE_OBJDIR)/juce_VST3ManifestHelper_e6b4e7f0.o \
.PHONY: clean all strip VST3 VST3_MANIFEST_HELPER
all : VST3 VST3_MANIFEST_HELPER
VST3 : $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3)
VST3_MANIFEST_HELPER : $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER)
$(JUCE_OUTDIR)/$(JUCE_TARGET_VST3) : $(OBJECTS_VST3) $(JUCE_OBJDIR)/execinfo.cmd $(RESOURCES) $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER)
@command -v $(PKG_CONFIG) >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
@$(PKG_CONFIG) --print-errors alsa freetype2 gl libcurl zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack
@echo Linking "crushFX - VST3"
-$(V_AT)mkdir -p $(JUCE_BINDIR)
-$(V_AT)mkdir -p $(JUCE_LIBDIR)
-$(V_AT)mkdir -p $(JUCE_OUTDIR)
-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/$(JUCE_VST3SUBDIR)
$(V_AT)$(CXX) -o $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3) $(OBJECTS_VST3) $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(JUCE_LDFLAGS) $(shell cat $(JUCE_OBJDIR)/execinfo.cmd) $(JUCE_LDFLAGS_VST3) $(RESOURCES) $(TARGET_ARCH)
-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/Resources
-$(V_AT)rm -f $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/moduleinfo.json
$(V_AT) $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) -create -version "1.0.0" -path $(JUCE_OUTDIR)/$(JUCE_VST3DIR) -output $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/Resources/moduleinfo.json
-$(V_AT)[ ! "$(JUCE_VST3DESTDIR)" ] || (mkdir -p $(JUCE_VST3DESTDIR) && cp -R $(JUCE_COPYCMD_VST3))
$(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) : $(OBJECTS_SHARED_CODE) $(JUCE_OBJDIR)/execinfo.cmd $(RESOURCES)
@command -v $(PKG_CONFIG) >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
@$(PKG_CONFIG) --print-errors alsa freetype2 gl libcurl zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack
@echo Linking "crushFX - Shared Code"
-$(V_AT)mkdir -p $(JUCE_BINDIR)
-$(V_AT)mkdir -p $(JUCE_LIBDIR)
-$(V_AT)mkdir -p $(JUCE_OUTDIR)
$(V_AT)$(AR) -rcs $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(OBJECTS_SHARED_CODE)
$(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) : $(OBJECTS_VST3_MANIFEST_HELPER) $(JUCE_OBJDIR)/execinfo.cmd $(RESOURCES) $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(JUCE_OBJDIR)/cxxfs.cmd
@command -v $(PKG_CONFIG) >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
@$(PKG_CONFIG) --print-errors alsa freetype2 gl libcurl zlib libjpeg libpng flac vorbis vorbisfile vorbisenc ogg jack
@echo Linking "crushFX - VST3 Manifest Helper"
-$(V_AT)mkdir -p $(JUCE_BINDIR)
-$(V_AT)mkdir -p $(JUCE_LIBDIR)
-$(V_AT)mkdir -p $(JUCE_OUTDIR)
$(V_AT)$(CXX) -o $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) $(OBJECTS_VST3_MANIFEST_HELPER) $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE) $(JUCE_LDFLAGS) $(shell cat $(JUCE_OBJDIR)/execinfo.cmd) $(shell cat $(JUCE_OBJDIR)/cxxfs.cmd) $(RESOURCES) $(TARGET_ARCH)
$(JUCE_OBJDIR)/include_juce_audio_plugin_client_VST3_dd633589.o: ../../JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_plugin_client_VST3.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_VST3) $(JUCE_CFLAGS_VST3) -o "$@" -c "$<"
$(JUCE_OBJDIR)/OpenGLUtils_dbb81aa3.o: ../../Source/OpenGLUtils.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling OpenGLUtils.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/CrushSliderLook_64ba471c.o: ../../Source/CrushSliderLook.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling CrushSliderLook.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/FilterButtonLook_51a5e492.o: ../../Source/FilterButtonLook.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling FilterButtonLook.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/FilterView_f1d22d46.o: ../../Source/FilterView.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling FilterView.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/CrushView_842d1d61.o: ../../Source/CrushView.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling CrushView.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/PluginProcessor_a059e380.o: ../../Source/PluginProcessor.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling PluginProcessor.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/PluginEditor_94d4fb09.o: ../../Source/PluginEditor.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling PluginEditor.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/DialLook_428a9938.o: ../../Source/DialLook.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling DialLook.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling BinaryData.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o: ../../JuceLibraryCode/include_juce_audio_basics.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_basics.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o: ../../JuceLibraryCode/include_juce_audio_devices.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_devices.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o: ../../JuceLibraryCode/include_juce_audio_formats.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_formats.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_plugin_client_ARA_31a052ed.o: ../../JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_plugin_client_ARA.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_processors_10c03666.o: ../../JuceLibraryCode/include_juce_audio_processors.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_processors.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_processors_ara_2a4c6ef7.o: ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_processors_ara.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_processors_lv2_libs_12bdca08.o: ../../JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_processors_lv2_libs.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_audio_utils_9f9fb2d6.o: ../../JuceLibraryCode/include_juce_audio_utils.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_audio_utils.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_core_f26d17db.o: ../../JuceLibraryCode/include_juce_core.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_core.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_data_structures_7471b1e3.o: ../../JuceLibraryCode/include_juce_data_structures.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_data_structures.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_dsp_aeb2060f.o: ../../JuceLibraryCode/include_juce_dsp.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_dsp.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_events_fd7d695.o: ../../JuceLibraryCode/include_juce_events.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_events.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_graphics_f817e147.o: ../../JuceLibraryCode/include_juce_graphics.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_graphics.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_gui_basics_e3f79785.o: ../../JuceLibraryCode/include_juce_gui_basics.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_gui_basics.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_gui_extra_6dee1c1a.o: ../../JuceLibraryCode/include_juce_gui_extra.cpp pre_build/juce_LinuxSubprocessHelperBinaryData.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_gui_extra.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/include_juce_opengl_a8a032b.o: ../../JuceLibraryCode/include_juce_opengl.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling include_juce_opengl.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/juce_LinuxSubprocessHelperBinaryData_e1db7dc.o: pre_build/juce_LinuxSubprocessHelperBinaryData.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling juce_LinuxSubprocessHelperBinaryData.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_SHARED_CODE) $(JUCE_CFLAGS_SHARED_CODE) -o "$@" -c "$<"
$(JUCE_OBJDIR)/juce_VST3ManifestHelper_e6b4e7f0.o: /usr/share/juce/modules/juce_audio_plugin_client/VST3/juce_VST3ManifestHelper.cpp
-$(V_AT)mkdir -p $(@D)
@echo "Compiling juce_VST3ManifestHelper.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_VST3_MANIFEST_HELPER) $(JUCE_CFLAGS_VST3_MANIFEST_HELPER) -o "$@" -c "$<"
$(JUCE_OBJDIR)/execinfo.cmd:
-$(V_AT)mkdir -p $(@D)
-@if [ -z "$(V_AT)" ]; then echo "Checking if we need to link libexecinfo"; fi
$(V_AT)printf "int main() { return 0; }" | $(CXX) -x c++ -o $(@D)/execinfo.x -lexecinfo - >/dev/null 2>&1 && printf -- "-lexecinfo" > "$@" || touch "$@"
$(JUCE_OBJDIR)/cxxfs.cmd:
-$(V_AT)mkdir -p $(@D)
-@if [ -z "$(V_AT)" ]; then echo "Checking if we need to link stdc++fs"; fi
$(V_AT)printf "int main() { return 0; }" | $(CXX) -x c++ -o $(@D)/cxxfs.x -lstdc++fs - >/dev/null 2>&1 && printf -- "-lstdc++fs" > "$@" || touch "$@"
$(JUCE_OBJDIR)/juce_LinuxSubprocessHelper_d0e1814f.o: make_helpers/juce_LinuxSubprocessHelper.cpp
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
@echo "Compiling make_helpers/juce_LinuxSubprocessHelper.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) -o "$(JUCE_OBJDIR)/juce_LinuxSubprocessHelper_d0e1814f.o" -c "$<" $(TARGET_ARCH)
$(JUCE_BINDIR)/juce_linux_subprocess_helper: $(JUCE_OBJDIR)/juce_LinuxSubprocessHelper_d0e1814f.o
-$(V_AT)mkdir -p $(JUCE_BINDIR)
@echo "Linking $(JUCE_BINDIR)/juce_linux_subprocess_helper"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) -o "$(JUCE_BINDIR)/juce_linux_subprocess_helper" "$(JUCE_OBJDIR)/juce_LinuxSubprocessHelper_d0e1814f.o" $(JUCE_LDFLAGS) $(TARGET_ARCH)
$(JUCE_OBJDIR)/juce_SimpleBinaryBuilder_18cb8206.o: make_helpers/juce_SimpleBinaryBuilder.cpp
-$(V_AT)mkdir -p $(JUCE_OBJDIR)
@echo "Compiling make_helpers/juce_SimpleBinaryBuilder.cpp"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) -o "$(JUCE_OBJDIR)/juce_SimpleBinaryBuilder_18cb8206.o" -c "$<" $(TARGET_ARCH)
$(JUCE_BINDIR)/juce_simple_binary_builder: $(JUCE_OBJDIR)/juce_SimpleBinaryBuilder_18cb8206.o
-$(V_AT)mkdir -p $(JUCE_BINDIR)
@echo "Linking $(JUCE_BINDIR)/juce_simple_binary_builder"
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) -o "$(JUCE_BINDIR)/juce_simple_binary_builder" "$(JUCE_OBJDIR)/juce_SimpleBinaryBuilder_18cb8206.o" $(JUCE_LDFLAGS) $(TARGET_ARCH)
pre_build/juce_LinuxSubprocessHelperBinaryData.cpp: $(JUCE_BINDIR)/juce_linux_subprocess_helper $(JUCE_BINDIR)/juce_simple_binary_builder
$(V_AT)"$(JUCE_BINDIR)/juce_simple_binary_builder" "$(JUCE_BINDIR)/juce_linux_subprocess_helper" "pre_build" "juce_LinuxSubprocessHelperBinaryData" LinuxSubprocessHelperBinaryData
clean:
@echo Cleaning crushFX
$(V_AT)$(CLEANCMD)
strip:
@echo Stripping crushFX
-$(V_AT)$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3)
-$(V_AT)$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER)
-include $(OBJECTS_VST3:%.o=%.d)
-include $(OBJECTS_SHARED_CODE:%.o=%.d)
-include $(OBJECTS_VST3_MANIFEST_HELPER:%.o=%.d)

View File

@@ -0,0 +1,82 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2022 - Raw Material Software Limited
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 7 End-User License
Agreement and JUCE Privacy Policy.
End User License Agreement: www.juce.com/juce-7-licence
Privacy Policy: www.juce.com/juce-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.
==============================================================================
*/
#if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
#if defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
#error JUCE_ARCH aarch64
#elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 8) || defined(__ARMv8__) || defined(__ARMv8_A__)
#error JUCE_ARCH armv8l
#elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 7) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(_ARM_ARCH_7) || defined(__CORE_CORTEXA__)
#error JUCE_ARCH armv7l
#elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 6) || defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6M__)
#error JUCE_ARCH armv6l
#elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 5) || defined(__ARM_ARCH_5TEJ__)
#error JUCE_ARCH armv5l
#else
#error JUCE_ARCH arm
#endif
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
#error JUCE_ARCH i386
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
#error JUCE_ARCH x86_64
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
#error JUCE_ARCH ia64
#elif defined(__mips) || defined(__mips__) || defined(_M_MRX000)
#if defined(_MIPS_ARCH_MIPS64) || defined(__mips64)
#error JUCE_ARCH mips64
#else
#error JUCE_ARCH mips
#endif
#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) || defined(_M_MPPC) || defined(_M_PPC)
#if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
#error JUCE_ARCH ppc64
#else
#error JUCE_ARCH ppc
#endif
#elif defined(__riscv)
#if __riscv_xlen == 64
#error JUCE_ARCH riscv64
#else
#error JUCE_ARCH riscv
#endif
#else
#error JUCE_ARCH unknown
#endif

View File

@@ -0,0 +1,36 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2022 - Raw Material Software Limited
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 7 End-User License
Agreement and JUCE Privacy Policy.
End User License Agreement: www.juce.com/juce-7-licence
Privacy Policy: www.juce.com/juce-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 <dlfcn.h>
int main (int argc, const char* const* argv)
{
if (argc >= 3)
if (auto* handle = dlopen (argv[1], RTLD_LAZY))
if (auto* function = reinterpret_cast<int (*) (int, const char* const*)> (dlsym (handle, argv[2])))
return function (argc - 3, argv + 3);
return 1;
}

View File

@@ -0,0 +1,381 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2022 - Raw Material Software Limited
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 7 End-User License
Agreement and JUCE Privacy Policy.
End User License Agreement: www.juce.com/juce-7-licence
Privacy Policy: www.juce.com/juce-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 <sys/stat.h>
#include <unistd.h>
#include <algorithm>
#include <cstdint>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <optional>
#include <vector>
//==============================================================================
struct FileHelpers
{
static std::string getCurrentWorkingDirectory()
{
std::vector<char> buffer (1024);
while (getcwd (buffer.data(), buffer.size() - 1) == nullptr && errno == ERANGE)
buffer.resize (buffer.size() * 2 / 3);
return { buffer.data() };
}
static bool endsWith (const std::string& s, char c)
{
if (s.length() == 0)
return false;
return *s.rbegin() == c;
}
static std::string appendedPaths (const std::string& first, const std::string& second)
{
return endsWith (first, '/') ? first + second : first + "/" + second;
}
static bool exists (const std::string& path)
{
return ! path.empty() && access (path.c_str(), F_OK) == 0;
}
static bool deleteFile (const std::string& path)
{
if (! exists (path))
return true;
return remove (path.c_str()) == 0;
}
static std::string getFilename (const std::string& path)
{
return { std::find_if (path.rbegin(), path.rend(), [] (auto c) { return c == '/'; }).base(),
path.end() };
}
static bool isDirectory (const std::string& path)
{
#if defined (__FreeBSD__) || defined (__OpenBSD__)
#define JUCE_STAT stat
#else
#define JUCE_STAT stat64
#endif
struct JUCE_STAT info;
return ! path.empty()
&& JUCE_STAT (path.c_str(), &info) == 0
&& ((info.st_mode & S_IFDIR) != 0);
}
static std::string getParentDirectory (const std::string& path)
{
std::string p { path.begin(),
std::find_if (path.rbegin(),
path.rend(),
[] (auto c) { return c == '/'; }).base() };
// Trim the ending slash, but only if not root
if (endsWith (p, '/') && p.length() > 1)
return { p.begin(), p.end() - 1 };
return p;
}
static bool createDirectory (const std::string& path)
{
if (isDirectory (path))
return true;
const auto parentDir = getParentDirectory (path);
if (path == parentDir)
return false;
if (createDirectory (parentDir))
return mkdir (path.c_str(), 0777) != -1;
return false;
}
};
//==============================================================================
struct StringHelpers
{
static bool isQuoteCharacter (char c)
{
return c == '"' || c == '\'';
}
static std::string unquoted (const std::string& str)
{
if (str.length() == 0 || (! isQuoteCharacter (str[0])))
return str;
return str.substr (1, str.length() - (isQuoteCharacter (str[str.length() - 1]) ? 1 : 0));
}
static void ltrim (std::string& s)
{
s.erase (s.begin(), std::find_if (s.begin(), s.end(), [] (int c) { return ! std::isspace (c); }));
}
static void rtrim (std::string& s)
{
s.erase (std::find_if (s.rbegin(), s.rend(), [] (int c) { return ! std::isspace (c); }).base(), s.end());
}
static std::string trimmed (const std::string& str)
{
auto result = str;
ltrim (result);
rtrim (result);
return result;
}
static std::string replaced (const std::string& str, char charToReplace, char replaceWith)
{
auto result = str;
std::replace (result.begin(), result.end(), charToReplace, replaceWith);
return result;
}
};
//==============================================================================
static bool addFile (const std::string& filePath,
const std::string& binaryNamespace,
std::ofstream& headerStream,
std::ofstream& cppStream,
bool verbose)
{
std::ifstream fileStream (filePath, std::ios::in | std::ios::binary | std::ios::ate);
if (! fileStream.is_open())
{
std::cerr << "Failed to open input file " << filePath << std::endl;
return false;
}
std::vector<char> buffer ((size_t) fileStream.tellg());
fileStream.seekg (0);
fileStream.read (buffer.data(), static_cast<std::streamsize> (buffer.size()));
const auto variableName = StringHelpers::replaced (StringHelpers::replaced (FileHelpers::getFilename (filePath),
' ',
'_'),
'.',
'_');
if (verbose)
{
std::cout << "Adding " << variableName << ": "
<< buffer.size() << " bytes" << std::endl;
}
headerStream << " extern const char* " << variableName << ";" << std::endl
<< " const int " << variableName << "Size = "
<< buffer.size() << ";" << std::endl;
cppStream << "static const unsigned char temp0[] = {";
auto* data = (const uint8_t*) buffer.data();
for (size_t i = 0; i < buffer.size() - 1; ++i)
{
cppStream << (int) data[i] << ",";
if ((i % 40) == 39)
cppStream << std::endl << " ";
}
cppStream << (int) data[buffer.size() - 1] << ",0,0};" << std::endl;
cppStream << "const char* " << binaryNamespace << "::" << variableName
<< " = (const char*) temp0" << ";" << std::endl << std::endl;
return true;
}
//==============================================================================
class Arguments
{
public:
enum class PositionalArguments
{
sourceFile = 0,
targetDirectory,
targetFilename,
binaryNamespace
};
static std::optional<Arguments> create (int argc, char* argv[])
{
std::vector<std::string> arguments;
bool verbose = false;
for (int i = 1; i < argc; ++i)
{
std::string arg { argv[i] };
if (arg == "-v" || arg == "--verbose")
verbose = true;
else
arguments.emplace_back (std::move (arg));
}
if (arguments.size() != static_cast<size_t> (PositionalArguments::binaryNamespace) + 1)
return std::nullopt;
return Arguments { std::move (arguments), verbose };
}
std::string get (PositionalArguments argument) const
{
return arguments[static_cast<size_t> (argument)];
}
bool isVerbose() const
{
return verbose;
}
private:
Arguments (std::vector<std::string> args, bool verboseIn)
: arguments (std::move (args)), verbose (verboseIn)
{
}
std::vector<std::string> arguments;
bool verbose = false;
};
//==============================================================================
int main (int argc, char* argv[])
{
const auto arguments = Arguments::create (argc, argv);
if (! arguments.has_value())
{
std::cout << " Usage: SimpleBinaryBuilder [-v | --verbose] sourcefile targetdirectory targetfilename namespace"
<< std::endl << std::endl
<< " SimpleBinaryBuilder will encode the provided source file into" << std::endl
<< " two files called (targetfilename).cpp and (targetfilename).h," << std::endl
<< " which it will write into the specified target directory." << std::endl
<< " The target directory will be automatically created if necessary. The binary" << std::endl
<< " resource will be available in the given namespace." << std::endl << std::endl;
return 0;
}
const auto currentWorkingDirectory = FileHelpers::getCurrentWorkingDirectory();
using ArgType = Arguments::PositionalArguments;
const auto sourceFile = FileHelpers::appendedPaths (currentWorkingDirectory,
StringHelpers::unquoted (arguments->get (ArgType::sourceFile)));
if (! FileHelpers::exists (sourceFile))
{
std::cerr << "Source file doesn't exist: "
<< sourceFile
<< std::endl << std::endl;
return 1;
}
const auto targetDirectory = FileHelpers::appendedPaths (currentWorkingDirectory,
StringHelpers::unquoted (arguments->get (ArgType::targetDirectory)));
if (! FileHelpers::exists (targetDirectory))
{
if (! FileHelpers::createDirectory (targetDirectory))
{
std::cerr << "Failed to create target directory: " << targetDirectory << std::endl;
return 1;
}
}
const auto className = StringHelpers::trimmed (arguments->get (ArgType::targetFilename));
const auto binaryNamespace = StringHelpers::trimmed (arguments->get (ArgType::binaryNamespace));
const auto headerFilePath = FileHelpers::appendedPaths (targetDirectory, className + ".h");
const auto cppFilePath = FileHelpers::appendedPaths (targetDirectory, className + ".cpp");
if (arguments->isVerbose())
{
std::cout << "Creating " << headerFilePath
<< " and " << cppFilePath
<< " from file " << sourceFile
<< "..." << std::endl << std::endl;
}
if (! FileHelpers::deleteFile (headerFilePath))
{
std::cerr << "Failed to remove old header file: " << headerFilePath << std::endl;
return 1;
}
if (! FileHelpers::deleteFile (cppFilePath))
{
std::cerr << "Failed to remove old source file: " << cppFilePath << std::endl;
return 1;
}
std::ofstream header (headerFilePath);
if (! header.is_open())
{
std::cerr << "Failed to open " << headerFilePath << std::endl;
return 1;
}
std::ofstream cpp (cppFilePath);
if (! cpp.is_open())
{
std::cerr << "Failed to open " << headerFilePath << std::endl;
return 1;
}
header << "/* (Auto-generated binary data file). */" << std::endl << std::endl
<< "#pragma once" << std::endl << std::endl
<< "namespace " << binaryNamespace << std::endl
<< "{" << std::endl;
cpp << "/* (Auto-generated binary data file). */" << std::endl << std::endl
<< "#include " << std::quoted (className + ".h") << std::endl << std::endl;
if (! addFile (sourceFile, binaryNamespace, header, cpp, arguments->isVerbose()))
return 1;
header << "}" << std::endl << std::endl;
return 0;
}

View File

@@ -0,0 +1,442 @@
/* (Auto-generated binary data file). */
#include "juce_LinuxSubprocessHelperBinaryData.h"
static const unsigned char temp0[] = {127,69,76,70,2,1,1,0,0,0,0,0,0,0,0,0,3,0,62,0,1,0,0,0,80,16,0,0,0,0,0,0,64,0,0,0,0,0,0,0,
0,59,0,0,0,0,0,0,0,0,0,0,64,0,56,0,14,0,64,0,36,0,35,0,6,0,0,0,4,0,0,0,64,0,0,0,0,0,0,0,
64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,16,3,0,0,0,0,0,0,16,3,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
3,0,0,0,4,0,0,0,180,3,0,0,0,0,0,0,180,3,0,0,0,0,0,0,180,3,0,0,0,0,0,0,28,0,0,0,0,0,0,0,
28,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,88,7,0,0,0,0,0,0,88,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,1,0,0,0,5,0,0,0,
0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,213,1,0,0,0,0,0,0,213,1,0,0,0,0,0,0,
0,16,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,
196,0,0,0,0,0,0,0,196,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,1,0,0,0,6,0,0,0,208,44,0,0,0,0,0,0,
208,60,0,0,0,0,0,0,208,60,0,0,0,0,0,0,80,3,0,0,0,0,0,0,88,3,0,0,0,0,0,0,0,16,0,0,0,0,0,0,
2,0,0,0,6,0,0,0,224,44,0,0,0,0,0,0,224,60,0,0,0,0,0,0,224,60,0,0,0,0,0,0,224,2,0,0,0,0,0,0,
224,2,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,
80,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,
144,3,0,0,0,0,0,0,144,3,0,0,0,0,0,0,144,3,0,0,0,0,0,0,36,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,
4,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,164,32,0,0,0,0,0,0,164,32,0,0,0,0,0,0,164,32,0,0,0,0,0,0,
32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,83,229,116,100,4,0,0,0,80,3,0,0,0,0,0,0,
80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
80,229,116,100,4,0,0,0,4,32,0,0,0,0,0,0,4,32,0,0,0,0,0,0,4,32,0,0,0,0,0,0,36,0,0,0,0,0,0,0,
36,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,81,229,116,100,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,82,229,116,100,4,0,0,0,
208,44,0,0,0,0,0,0,208,60,0,0,0,0,0,0,208,60,0,0,0,0,0,0,48,3,0,0,0,0,0,0,48,3,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,4,0,0,0,48,0,0,0,5,0,0,0,71,78,85,0,2,128,0,192,4,0,0,0,1,0,0,0,0,0,0,0,
1,0,1,192,4,0,0,0,1,0,0,0,0,0,0,0,2,0,1,192,4,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,20,0,0,0,
3,0,0,0,71,78,85,0,42,152,51,136,192,235,140,112,129,146,232,52,5,231,125,234,163,57,27,210,47,108,105,98,54,52,47,108,100,45,108,105,
110,117,120,45,120,56,54,45,54,52,46,115,111,46,50,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
101,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,94,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,32,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,95,95,103,109,111,110,95,115,116,97,114,116,95,95,0,95,73,84,77,95,100,101,114,101,103,105,115,116,101,114,84,77,67,108,111,110,101,84,97,
98,108,101,0,95,73,84,77,95,114,101,103,105,115,116,101,114,84,77,67,108,111,110,101,84,97,98,108,101,0,95,95,108,105,98,99,95,115,116,97,
114,116,95,109,97,105,110,0,100,108,115,121,109,0,100,108,111,112,101,110,0,95,95,99,120,97,95,102,105,110,97,108,105,122,101,0,108,105,98,97,
115,111,117,110,100,46,115,111,46,50,0,108,105,98,102,114,101,101,116,121,112,101,46,115,111,46,54,0,108,105,98,71,76,46,115,111,46,49,0,108,
105,98,99,117,114,108,46,115,111,46,52,0,108,105,98,106,112,101,103,46,115,111,46,56,0,108,105,98,112,110,103,49,54,46,115,111,46,49,54,0,
108,105,98,122,46,115,111,46,49,0,108,105,98,70,76,65,67,46,115,111,46,49,52,0,108,105,98,118,111,114,98,105,115,102,105,108,101,46,115,111,
46,51,0,108,105,98,118,111,114,98,105,115,101,110,99,46,115,111,46,50,0,108,105,98,118,111,114,98,105,115,46,115,111,46,48,0,108,105,98,111,
103,103,46,115,111,46,48,0,108,105,98,106,97,99,107,46,115,111,46,48,0,108,105,98,115,116,100,99,43,43,46,115,111,46,54,0,108,105,98,109,
46,115,111,46,54,0,108,105,98,103,99,99,95,115,46,115,111,46,49,0,108,105,98,99,46,115,111,46,54,0,71,76,73,66,67,95,50,46,50,46,
53,0,71,76,73,66,67,95,50,46,51,52,0,0,0,0,1,0,2,0,3,0,1,0,2,0,1,0,2,0,0,0,1,0,2,0,84,1,0,0,
16,0,0,0,0,0,0,0,117,26,105,9,0,0,3,0,94,1,0,0,16,0,0,0,180,145,150,6,0,0,2,0,106,1,0,0,0,0,0,0,
208,60,0,0,0,0,0,0,8,0,0,0,0,0,0,0,64,17,0,0,0,0,0,0,216,60,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
240,16,0,0,0,0,0,0,24,64,0,0,0,0,0,0,8,0,0,0,0,0,0,0,24,64,0,0,0,0,0,0,192,63,0,0,0,0,0,0,
6,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,200,63,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,
208,63,0,0,0,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,216,63,0,0,0,0,0,0,6,0,0,0,6,0,0,0,
0,0,0,0,0,0,0,0,224,63,0,0,0,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,
7,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,64,0,0,0,0,0,0,7,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,15,30,250,72,131,236,8,72,139,5,193,47,0,0,72,133,192,116,2,255,208,72,131,
196,8,195,0,0,0,0,0,255,53,202,47,0,0,255,37,204,47,0,0,15,31,64,0,255,37,202,47,0,0,104,0,0,0,0,233,224,255,255,255,
255,37,194,47,0,0,104,1,0,0,0,233,208,255,255,255,243,15,30,250,49,237,73,137,209,94,72,137,226,72,131,228,240,80,84,69,49,192,49,201,
72,141,61,218,0,0,0,255,21,107,47,0,0,244,102,46,15,31,132,0,0,0,0,0,72,141,61,153,47,0,0,72,141,5,146,47,0,0,72,57,
248,116,21,72,139,5,38,47,0,0,72,133,192,116,9,255,224,15,31,128,0,0,0,0,195,15,31,128,0,0,0,0,72,141,61,105,47,0,0,72,
141,53,98,47,0,0,72,41,254,72,137,240,72,193,238,63,72,193,248,3,72,1,198,72,209,254,116,20,72,139,5,253,46,0,0,72,133,192,116,8,
255,224,102,15,31,68,0,0,195,15,31,128,0,0,0,0,243,15,30,250,128,61,37,47,0,0,0,117,51,85,72,131,61,194,46,0,0,0,72,137,
229,116,13,72,139,61,6,47,0,0,255,21,176,46,0,0,232,99,255,255,255,198,5,252,46,0,0,1,93,195,102,46,15,31,132,0,0,0,0,0,
195,15,31,64,0,102,102,46,15,31,132,0,0,0,0,0,243,15,30,250,233,103,255,255,255,85,72,137,229,72,131,236,32,137,125,236,72,137,117,224,
131,125,236,2,126,99,72,139,69,224,72,131,192,8,72,139,0,190,1,0,0,0,72,137,199,232,202,254,255,255,72,137,69,240,72,131,125,240,0,116,
64,72,139,69,224,72,131,192,16,72,139,16,72,139,69,240,72,137,214,72,137,199,232,149,254,255,255,72,137,69,248,72,131,125,248,0,116,27,72,139,
69,248,72,139,85,224,72,141,74,24,139,85,236,131,234,3,72,137,206,137,215,255,208,235,5,184,1,0,0,0,201,195,243,15,30,250,72,131,236,8,
72,131,196,8,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,27,3,59,
32,0,0,0,3,0,0,0,28,240,255,255,84,0,0,0,76,240,255,255,60,0,0,0,69,241,255,255,124,0,0,0,20,0,0,0,0,0,0,0,
1,122,82,0,1,120,16,1,27,12,7,8,144,1,0,0,20,0,0,0,28,0,0,0,8,240,255,255,38,0,0,0,0,68,7,16,0,0,0,0,
36,0,0,0,52,0,0,0,192,239,255,255,48,0,0,0,0,14,16,70,14,24,74,15,11,119,8,128,0,63,26,59,42,51,36,34,0,0,0,0,
28,0,0,0,92,0,0,0,193,240,255,255,127,0,0,0,0,65,14,16,134,2,67,13,6,2,122,12,7,8,0,0,0,0,0,0,4,0,0,0,
16,0,0,0,1,0,0,0,71,78,85,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,17,0,0,0,0,0,0,
240,16,0,0,0,0,0,0,1,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,131,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,148,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
172,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,185,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,210,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
243,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,5,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,20,1,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,45,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
60,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,70,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,84,1,0,0,0,0,0,0,
12,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,13,0,0,0,0,0,0,0,200,17,0,0,0,0,0,0,25,0,0,0,0,0,0,0,
208,60,0,0,0,0,0,0,27,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,216,60,0,0,0,0,0,0,
28,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,245,254,255,111,0,0,0,0,208,3,0,0,0,0,0,0,5,0,0,0,0,0,0,0,
176,4,0,0,0,0,0,0,6,0,0,0,0,0,0,0,240,3,0,0,0,0,0,0,10,0,0,0,0,0,0,0,117,1,0,0,0,0,0,0,
11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,
232,63,0,0,0,0,0,0,2,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,
23,0,0,0,0,0,0,0,40,7,0,0,0,0,0,0,7,0,0,0,0,0,0,0,104,6,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
192,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,251,255,255,111,0,0,0,0,0,0,0,8,0,0,0,0,
254,255,255,111,0,0,0,0,56,6,0,0,0,0,0,0,255,255,255,111,0,0,0,0,1,0,0,0,0,0,0,0,240,255,255,111,0,0,0,0,
38,6,0,0,0,0,0,0,249,255,255,111,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,54,16,0,0,0,0,0,0,70,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,64,0,0,0,0,0,0,
71,67,67,58,32,40,71,78,85,41,32,49,53,46,50,46,49,32,50,48,50,54,48,49,48,51,0,44,0,0,0,2,0,0,0,0,0,8,0,0,
0,0,0,73,17,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,1,0,0,5,
0,1,8,0,0,0,0,9,0,0,0,0,33,4,231,19,3,0,45,0,0,0,0,0,0,0,73,17,0,0,0,0,0,0,127,0,0,0,0,0,
0,0,0,0,0,0,2,8,7,120,0,0,0,2,8,5,85,0,0,0,3,82,0,0,0,4,65,0,0,0,2,1,6,156,0,0,0,4,75,0,
0,0,10,8,2,4,7,125,0,0,0,2,8,7,115,0,0,0,5,138,0,0,0,64,87,0,0,0,128,0,0,0,1,87,0,0,0,1,65,0,
0,0,0,5,108,0,0,0,56,87,0,0,0,153,0,0,0,1,65,0,0,0,1,153,0,0,0,0,11,4,5,105,110,116,0,12,144,0,0,0,
1,28,5,153,0,0,0,73,17,0,0,0,0,0,0,127,0,0,0,0,0,0,0,1,156,29,1,0,0,6,103,0,0,0,15,153,0,0,0,2,
145,92,6,161,0,0,0,40,29,1,0,0,2,145,80,7,94,17,0,0,0,0,0,0,99,0,0,0,0,0,0,0,8,149,0,0,0,31,19,87,
0,0,0,2,145,96,7,129,17,0,0,0,0,0,0,64,0,0,0,0,0,0,0,8,94,0,0,0,32,23,54,1,0,0,2,145,104,0,0,0,
3,70,0,0,0,13,153,0,0,0,54,1,0,0,1,153,0,0,0,1,29,1,0,0,0,3,34,1,0,0,0,1,5,0,73,19,0,0,2,36,
0,11,11,62,11,3,14,0,0,3,15,0,11,33,8,73,19,0,0,4,38,0,73,19,0,0,5,46,1,63,25,3,14,58,33,2,59,11,57,33,
14,73,19,60,25,1,19,0,0,6,5,0,3,14,58,33,1,59,33,28,57,11,73,19,2,24,0,0,7,11,1,17,1,18,7,0,0,8,52,0,
3,14,58,33,1,59,11,57,11,73,19,2,24,0,0,9,17,1,37,14,19,11,144,1,11,145,1,6,3,31,27,31,17,1,18,7,16,23,0,0,
10,15,0,11,11,0,0,11,36,0,11,11,62,11,3,8,0,0,12,46,1,63,25,3,14,58,11,59,11,57,11,73,19,17,1,18,7,64,24,124,
25,1,19,0,0,13,21,1,73,19,1,19,0,0,0,135,0,0,0,5,0,8,0,55,0,0,0,1,1,1,251,14,13,0,1,1,1,1,0,0,
0,1,0,0,1,1,1,31,3,0,0,0,0,89,0,0,0,102,0,0,0,2,1,31,2,15,3,58,0,0,0,1,58,0,0,0,1,115,0,0,
0,2,5,1,0,9,2,73,17,0,0,0,0,0,0,3,28,1,5,5,229,5,42,103,5,35,130,5,9,0,2,4,1,8,60,5,108,117,5,93,
130,5,110,0,2,4,1,8,32,5,13,0,2,4,1,74,5,33,117,5,52,8,130,5,12,48,5,1,89,2,2,0,1,1,71,78,85,32,67,43,
43,49,55,32,49,53,46,50,46,49,32,50,48,50,54,48,49,48,51,32,45,109,116,117,110,101,61,103,101,110,101,114,105,99,32,45,109,97,114,99,
104,61,120,56,54,45,54,52,32,45,103,32,45,103,103,100,98,32,45,79,48,32,45,115,116,100,61,99,43,43,49,55,32,45,102,80,73,67,0,108,
111,110,103,32,105,110,116,0,102,117,110,99,116,105,111,110,0,97,114,103,99,0,100,108,111,112,101,110,0,108,111,110,103,32,108,111,110,103,32,117,
110,115,105,103,110,101,100,32,105,110,116,0,100,108,115,121,109,0,109,97,105,110,0,104,97,110,100,108,101,0,99,104,97,114,0,97,114,103,118,0,
47,104,111,109,101,47,101,115,99,97,47,67,111,100,101,47,99,114,117,115,104,70,88,47,66,117,105,108,100,115,47,76,105,110,117,120,77,97,107,101,
102,105,108,101,0,109,97,107,101,95,104,101,108,112,101,114,115,47,106,117,99,101,95,76,105,110,117,120,83,117,98,112,114,111,99,101,115,115,72,101,
108,112,101,114,46,99,112,112,0,109,97,107,101,95,104,101,108,112,101,114,115,0,47,117,115,114,47,105,110,99,108,117,100,101,0,100,108,102,99,110,
46,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,241,255,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,1,0,18,0,164,32,0,0,0,0,0,0,32,0,0,0,0,0,0,0,
19,0,0,0,4,0,241,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,2,0,13,0,128,16,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,33,0,0,0,2,0,13,0,176,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,2,0,13,0,
240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,1,0,25,0,32,64,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
86,0,0,0,1,0,20,0,216,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,0,0,0,2,0,13,0,64,17,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,137,0,0,0,1,0,19,0,208,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,0,0,4,0,241,255,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,0,0,0,4,0,241,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
209,0,0,0,1,0,17,0,160,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,241,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,223,0,0,0,1,0,23,0,232,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,1,0,21,0,
224,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,16,0,4,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
17,1,0,0,18,0,13,0,73,17,0,0,0,0,0,0,127,0,0,0,0,0,0,0,22,1,0,0,17,2,24,0,32,64,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,118,1,0,0,18,0,13,0,80,16,0,0,0,0,0,0,38,0,0,0,0,0,0,0,34,1,0,0,32,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,1,0,0,18,2,14,0,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
68,1,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,1,0,0,34,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,112,1,0,0,16,0,24,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,1,0,0,16,0,25,0,
32,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,1,0,0,16,0,25,0,40,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
142,1,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,1,0,0,16,0,24,0,32,64,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,164,1,0,0,18,2,11,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,1,0,0,18,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,1,0,0,32,0,24,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
188,1,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,1,0,0,17,2,24,0,24,64,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,227,1,0,0,17,0,15,0,0,32,0,0,0,0,0,0,4,0,0,0,0,0,0,0,242,1,0,0,18,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,99,114,116,49,46,111,0,95,95,97,98,105,95,116,97,103,0,99,114,116,98,101,
103,105,110,83,46,111,0,100,101,114,101,103,105,115,116,101,114,95,116,109,95,99,108,111,110,101,115,0,95,95,100,111,95,103,108,111,98,97,108,95,
100,116,111,114,115,95,97,117,120,0,99,111,109,112,108,101,116,101,100,46,48,0,95,95,100,111,95,103,108,111,98,97,108,95,100,116,111,114,115,95,
97,117,120,95,102,105,110,105,95,97,114,114,97,121,95,101,110,116,114,121,0,102,114,97,109,101,95,100,117,109,109,121,0,95,95,102,114,97,109,101,
95,100,117,109,109,121,95,105,110,105,116,95,97,114,114,97,121,95,101,110,116,114,121,0,106,117,99,101,95,76,105,110,117,120,83,117,98,112,114,111,
99,101,115,115,72,101,108,112,101,114,46,99,112,112,0,99,114,116,101,110,100,83,46,111,0,95,95,70,82,65,77,69,95,69,78,68,95,95,0,95,
71,76,79,66,65,76,95,79,70,70,83,69,84,95,84,65,66,76,69,95,0,95,68,89,78,65,77,73,67,0,95,95,71,78,85,95,69,72,95,70,
82,65,77,69,95,72,68,82,0,109,97,105,110,0,95,95,84,77,67,95,69,78,68,95,95,0,95,73,84,77,95,100,101,114,101,103,105,115,116,101,
114,84,77,67,108,111,110,101,84,97,98,108,101,0,95,102,105,110,105,0,100,108,115,121,109,64,71,76,73,66,67,95,50,46,51,52,0,95,95,99,
120,97,95,102,105,110,97,108,105,122,101,64,71,76,73,66,67,95,50,46,50,46,53,0,95,95,100,97,116,97,95,115,116,97,114,116,0,95,95,98,
115,115,95,115,116,97,114,116,0,95,101,110,100,0,95,95,103,109,111,110,95,115,116,97,114,116,95,95,0,95,101,100,97,116,97,0,95,105,110,105,
116,0,100,108,111,112,101,110,64,71,76,73,66,67,95,50,46,51,52,0,95,73,84,77,95,114,101,103,105,115,116,101,114,84,77,67,108,111,110,101,
84,97,98,108,101,0,95,95,100,115,111,95,104,97,110,100,108,101,0,95,73,79,95,115,116,100,105,110,95,117,115,101,100,0,95,95,108,105,98,99,
95,115,116,97,114,116,95,109,97,105,110,64,71,76,73,66,67,95,50,46,51,52,0,0,46,115,121,109,116,97,98,0,46,115,116,114,116,97,98,0,
46,115,104,115,116,114,116,97,98,0,46,110,111,116,101,46,103,110,117,46,112,114,111,112,101,114,116,121,0,46,110,111,116,101,46,103,110,117,46,98,
117,105,108,100,45,105,100,0,46,105,110,116,101,114,112,0,46,103,110,117,46,104,97,115,104,0,46,100,121,110,115,121,109,0,46,100,121,110,115,116,
114,0,46,103,110,117,46,118,101,114,115,105,111,110,0,46,103,110,117,46,118,101,114,115,105,111,110,95,114,0,46,114,101,108,97,46,100,121,110,0,
46,114,101,108,97,46,112,108,116,0,46,105,110,105,116,0,46,116,101,120,116,0,46,102,105,110,105,0,46,114,111,100,97,116,97,0,46,101,104,95,
102,114,97,109,101,95,104,100,114,0,46,101,104,95,102,114,97,109,101,0,46,110,111,116,101,46,65,66,73,45,116,97,103,0,46,105,110,105,116,95,
97,114,114,97,121,0,46,102,105,110,105,95,97,114,114,97,121,0,46,100,121,110,97,109,105,99,0,46,103,111,116,0,46,103,111,116,46,112,108,116,
0,46,100,97,116,97,0,46,98,115,115,0,46,99,111,109,109,101,110,116,0,46,100,101,98,117,103,95,97,114,97,110,103,101,115,0,46,100,101,98,
117,103,95,105,110,102,111,0,46,100,101,98,117,103,95,97,98,98,114,101,118,0,46,100,101,98,117,103,95,108,105,110,101,0,46,100,101,98,117,103,
95,115,116,114,0,46,100,101,98,117,103,95,108,105,110,101,95,115,116,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,27,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,
64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,7,0,0,0,
2,0,0,0,0,0,0,0,144,3,0,0,0,0,0,0,144,3,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,180,3,0,0,0,0,0,0,
180,3,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
73,0,0,0,246,255,255,111,2,0,0,0,0,0,0,0,208,3,0,0,0,0,0,0,208,3,0,0,0,0,0,0,28,0,0,0,0,0,0,0,
5,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,11,0,0,0,2,0,0,0,0,0,0,0,
240,3,0,0,0,0,0,0,240,3,0,0,0,0,0,0,192,0,0,0,0,0,0,0,6,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,
24,0,0,0,0,0,0,0,91,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,176,4,0,0,0,0,0,0,176,4,0,0,0,0,0,0,
117,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,255,255,255,111,
2,0,0,0,0,0,0,0,38,6,0,0,0,0,0,0,38,6,0,0,0,0,0,0,16,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,
2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,254,255,255,111,2,0,0,0,0,0,0,0,56,6,0,0,0,0,0,0,
56,6,0,0,0,0,0,0,48,0,0,0,0,0,0,0,6,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
127,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,104,6,0,0,0,0,0,0,104,6,0,0,0,0,0,0,192,0,0,0,0,0,0,0,
5,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,137,0,0,0,4,0,0,0,66,0,0,0,0,0,0,0,
40,7,0,0,0,0,0,0,40,7,0,0,0,0,0,0,48,0,0,0,0,0,0,0,5,0,0,0,23,0,0,0,8,0,0,0,0,0,0,0,
24,0,0,0,0,0,0,0,147,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,
27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,0,0,0,1,0,0,0,
6,0,0,0,0,0,0,0,32,16,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,153,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,80,16,0,0,0,0,0,0,
80,16,0,0,0,0,0,0,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
159,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,200,17,0,0,0,0,0,0,200,17,0,0,0,0,0,0,13,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0,0,0,1,0,0,0,18,0,0,0,0,0,0,0,
0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,
4,0,0,0,0,0,0,0,173,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,4,32,0,0,0,0,0,0,4,32,0,0,0,0,0,0,
36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,0,0,0,1,0,0,0,
2,0,0,0,0,0,0,0,40,32,0,0,0,0,0,0,40,32,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,164,32,0,0,0,0,0,0,
164,32,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
211,0,0,0,14,0,0,0,3,0,0,0,0,0,0,0,208,60,0,0,0,0,0,0,208,44,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,223,0,0,0,15,0,0,0,3,0,0,0,0,0,0,0,
216,60,0,0,0,0,0,0,216,44,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
8,0,0,0,0,0,0,0,235,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,224,60,0,0,0,0,0,0,224,44,0,0,0,0,0,0,
224,2,0,0,0,0,0,0,6,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,244,0,0,0,1,0,0,0,
3,0,0,0,0,0,0,0,192,63,0,0,0,0,0,0,192,47,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,249,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,232,63,0,0,0,0,0,0,
232,47,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,
2,1,0,0,1,0,0,0,3,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,16,48,0,0,0,0,0,0,16,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,0,8,0,0,0,3,0,0,0,0,0,0,0,
32,64,0,0,0,0,0,0,32,48,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,13,1,0,0,1,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,48,0,0,0,0,0,0,
27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,22,1,0,0,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,48,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
107,48,0,0,0,0,0,0,60,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
49,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,49,0,0,0,0,0,0,184,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,95,50,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,75,1,0,0,1,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,50,0,0,0,0,0,0,
166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,86,1,0,0,1,0,0,0,
48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,51,0,0,0,0,0,0,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
16,52,0,0,0,0,0,0,120,3,0,0,0,0,0,0,34,0,0,0,18,0,0,0,8,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,
9,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,55,0,0,0,0,0,0,15,2,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,151,57,0,0,0,0,0,0,102,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0};
const char* LinuxSubprocessHelperBinaryData::juce_linux_subprocess_helper = (const char*) temp0;

View File

@@ -0,0 +1,10 @@
/* (Auto-generated binary data file). */
#pragma once
namespace LinuxSubprocessHelperBinaryData
{
extern const char* juce_linux_subprocess_helper;
const int juce_linux_subprocess_helperSize = 17408;
}