mirror of
https://github.com/JvanKatwijk/qt-dab.git
synced 2025-10-05 15:52:39 +02:00
restructured sourcetree
This commit is contained in:
19
.gitignore
vendored
19
.gitignore
vendored
@@ -1,15 +1,10 @@
|
||||
obsolete/
|
||||
qt-dab-6.8/linux-bin
|
||||
qt-dab-6.8/.qmake.stash
|
||||
qt-dab-6.8/build
|
||||
qt-dab-6.8/Makefile
|
||||
qt-dab-6.8/Output
|
||||
qt-dab-6.9/linux-bin
|
||||
qt-dab-6.9/.qmake.stash
|
||||
qt-dab-6.9/build
|
||||
qt-dab-6.9/Makefile
|
||||
qt-dab-6.9/Output
|
||||
qt-dab-6.9/todo
|
||||
./obsolete/
|
||||
./Makefile
|
||||
.qmake.stash
|
||||
./linux-bin
|
||||
./moc*
|
||||
./*.o
|
||||
./build
|
||||
|
||||
|
||||
|
||||
|
734
CMakeLists.txt
Normal file
734
CMakeLists.txt
Normal file
@@ -0,0 +1,734 @@
|
||||
cmake_minimum_required( VERSION 3.21 )
|
||||
|
||||
# set CMAKE_BUILD_TYPE to "Release" if not defined (like call from command line)
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Set build type to Release if not specified" FORCE)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/CMakeFunctions.cmake)
|
||||
|
||||
project(Qt-DAB VERSION 6)
|
||||
set (objectName qt-dab-6.9.2)
|
||||
set (objectName "Qt-DAB")
|
||||
set (CMAKE_CXX_STANDARD 17)
|
||||
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set (CMAKE_INSTALL_PREFIX "/usr/local/bin" CACHE PATH "default install path" FORCE )
|
||||
endif()
|
||||
|
||||
add_definitions(-DAPP_NAME="${objectName}")
|
||||
add_definitions(-DPRJ_NAME="${PROJECT_NAME}")
|
||||
add_definitions(-DPRJ_VERS="${PROJECT_VERSION}")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
# regarding using QWT < 6.2.0 (6.1.4) to avoid many deprecated massages (only suppressed on release versions)
|
||||
add_definitions(-DQT_NO_DEPRECATED_WARNINGS)
|
||||
endif()
|
||||
|
||||
if(MINGW)
|
||||
add_definitions ( -municode)
|
||||
endif()
|
||||
|
||||
add_definitions (-D__HAS_CHANNEL__)
|
||||
add_definitions (-D__FFTW3__)
|
||||
|
||||
# handle GIT hash
|
||||
get_git_commit_hash() # returns GIT_COMMIT_HASH
|
||||
print(GIT_COMMIT_HASH)
|
||||
if (GIT_COMMIT_HASH)
|
||||
add_definitions("-DGITHASH=\"${GIT_COMMIT_HASH}\"")
|
||||
else ()
|
||||
add_definitions("-DGITHASH=\"(unknown)\"")
|
||||
endif ()
|
||||
|
||||
|
||||
########################################################################
|
||||
# select the release build type by default to get optimization flags
|
||||
########################################################################
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")
|
||||
|
||||
### make sure our local CMake Modules path comes first
|
||||
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# if you want the audio output sent over the internet:
|
||||
set (TCP_STREAMER OFF)
|
||||
|
||||
#####################################################################
|
||||
#
|
||||
# select one or more devices (set to ON)
|
||||
# Note that since there are problems with the rtlsdr interface under Windows we split the rtlsdr interface
|
||||
# into two versions one for Linux and one for Window
|
||||
option(RTLSDR_LINUX OFF) # use for Linux type systems
|
||||
option(RTLSDR_WIN OFF) # only for windows
|
||||
option(AIRSPY OFF)
|
||||
option(SDRPLAY_V2 ON)
|
||||
option(SDRPLAY_V3 OFF)
|
||||
option(HACKRF OFF)
|
||||
option(LIMESDR OFF)
|
||||
option(PLUTO OFF)
|
||||
option(SOAPY OFF)
|
||||
option(SPY_SERVER_8 OFF)
|
||||
option(SPY_SERVER_16 OFF)
|
||||
option(UHD OFF) # untested
|
||||
option(RTL_TCP OFF)
|
||||
|
||||
# additional options
|
||||
option(USE_LTO "Set -flto flag" ON)
|
||||
# special release version flags
|
||||
if (USE_LTO)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
|
||||
endif ()
|
||||
|
||||
option(FDK_AAC ON)
|
||||
option(DATA_STREAMER OFF)
|
||||
option(VITERBI_SSE OFF)
|
||||
option(VITERBI_NEON OFF)
|
||||
|
||||
|
||||
####################################################################
|
||||
# Use first option on "slow" cpus, i.e. RPI 3 or so
|
||||
# Most of the FFT processing will be done in functions eunning
|
||||
# in its own thread
|
||||
#add_definitions (-D__MSC_THREAD__) # do not uncomment this
|
||||
#
|
||||
# Since more than one backend may be active, activating this
|
||||
# option makes that each backend runs in its own thread
|
||||
add_definitions (-D__THREADED_BACKEND__) # uncomment for use for an RPI
|
||||
#
|
||||
########################################################################
|
||||
########################################################################
|
||||
|
||||
find_package (PkgConfig)
|
||||
find_package (LSBId)
|
||||
|
||||
find_package (Qt6Core REQUIRED)
|
||||
find_package (Qt6Widgets REQUIRED)
|
||||
find_package (Qt6Network REQUIRED)
|
||||
find_package (Qt6Xml REQUIRED)
|
||||
include_directories (
|
||||
${Qt6Network_INCLUDE_DIRS}
|
||||
${Qt6Xml_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
search_for_library (QWT Qwt)
|
||||
search_for_library (ZLIB zlib)
|
||||
|
||||
find_package(FFTW3f)
|
||||
if (NOT FFTW3F_FOUND)
|
||||
message(FATAL_ERROR "please install FFTW3")
|
||||
endif ()
|
||||
include_directories ( ${FFTW_INCLUDE_DIRS})
|
||||
list(APPEND extraLibs ${FFTW3F_LIBRARIES})
|
||||
|
||||
if (NOT APPLE)
|
||||
find_library (PTHREADS pthread)
|
||||
if (NOT(PTHREADS))
|
||||
message (FATAL_ERROR "please install libpthread")
|
||||
else (NOT(PTHREADS))
|
||||
set (extraLibs ${extraLibs} ${PTHREADS})
|
||||
endif (NOT(PTHREADS))
|
||||
endif (NOT APPLE)
|
||||
|
||||
#######################################################################
|
||||
#
|
||||
# Here we really start
|
||||
|
||||
include_directories (
|
||||
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
|
||||
${QT6Widgets_INCLUDES}
|
||||
${QT_QTCORE_INCLUDE_DIR}
|
||||
${QT_QTGUI_INCLUDE_DIR}
|
||||
./sources/main
|
||||
./sources/main/forms-v7
|
||||
./sources/main/forms-v7/new-display
|
||||
./sources/main/forms-v7/new-display/scopes
|
||||
./sources/main/forms-v7/snr-viewer
|
||||
./sources/eti-handler
|
||||
./sources/support
|
||||
./sources/support/gui-elements
|
||||
./sources/frontend
|
||||
./sources/backend
|
||||
./sources/backend/audio
|
||||
./sources/backend/data
|
||||
./sources/backend/data/journaline
|
||||
./sources/backend/data/mot
|
||||
./sources/backend/data/epg
|
||||
./sources/backend/reed-solomon
|
||||
./sources/protection
|
||||
./sources/output
|
||||
./sources/output/portaudio
|
||||
./sources/output/Qt6
|
||||
./sources/qt-devices
|
||||
./sources/qt-devices/filereaders/
|
||||
./sources/qt-devices/filereaders/new-reader
|
||||
./sources/qt-devices/filereaders/rawfiles-new
|
||||
./sources/qt-devices/filereaders/xml-filereader
|
||||
/usr/include/
|
||||
)
|
||||
|
||||
set (${objectName}_HDRS
|
||||
./sources/main/radio.h
|
||||
./sources/main/aboutdialog.h
|
||||
./sources/main/config-handler.h
|
||||
./sources/main/ensemble-handler.h
|
||||
./sources/main/techdata.h
|
||||
./sources/main/forms-v7/new-display/display-widget.h
|
||||
./sources/main/forms-v7/new-display/scopes/correlation-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/spectrum-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/null-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/channel-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/dev-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/waterfall-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/iqdisplay.h
|
||||
./sources/main/forms-v7/new-display/scopes/audio-display.h
|
||||
./sources/main/forms-v7/new-display/scopes/spectrogramdata.h
|
||||
./sources/main/forms-v7/snr-viewer/snr-viewer.h
|
||||
./sources/eti-handler/eti-generator.h
|
||||
./sources/frontend/ofdm-handler.h
|
||||
./sources/frontend/sample-reader.h
|
||||
./sources/frontend/correlator.h
|
||||
./sources/frontend/freqsyncer.h
|
||||
./sources/frontend/ofdm-decoder.h
|
||||
./sources/frontend/phasetable.h
|
||||
./sources/frontend/freq-interleaver.h
|
||||
./sources/frontend/fic-handler.h
|
||||
./sources/frontend/ensemble.h
|
||||
./sources/frontend/fib-config.h
|
||||
./sources/frontend/fib-printer.h
|
||||
./sources/frontend/fib-decoder.h
|
||||
./sources/frontend/fib-table.h
|
||||
./sources/frontend/tii-detector.h
|
||||
./sources/frontend/tii-detector-1.h
|
||||
./sources/frontend/tii-detector-2.h
|
||||
./sources/frontend/timesyncer.h
|
||||
./sources/frontend/estimator.h
|
||||
./sources/protection/protTables.h
|
||||
./sources/protection/protection.h
|
||||
./sources/protection/uep-protection.h
|
||||
./sources/protection/eep-protection.h
|
||||
./sources/support/audiosystem-selector.h
|
||||
./sources/support/bandpass-filter.h
|
||||
./sources/support/bit-extractor.h
|
||||
./sources/support/cacheElement.h
|
||||
./sources/support/content-table.h
|
||||
./sources/support/converter_48000.h
|
||||
./sources/support/coordinates.h
|
||||
./sources/support/country-codes.h
|
||||
./sources/support/crc-handlers.h
|
||||
./sources/support/dab-constants.h
|
||||
./sources/support/dab-params.h
|
||||
./sources/support/dab-tables.h
|
||||
./sources/support/distances.h
|
||||
./sources/support/dl-cache.h
|
||||
./sources/support/dxDisplay.h
|
||||
./sources/support/element-selector.h
|
||||
./sources/support/fft-handler.h
|
||||
./sources/support/findfilenames.h
|
||||
./sources/support/fir-filters.h
|
||||
./sources/support/http-handler.h
|
||||
./sources/support/ITU_Region_1.h
|
||||
./sources/support/logger.h
|
||||
./sources/support/mapport.h
|
||||
./sources/support/mot-content-types.h
|
||||
./sources/support/position-handler.h
|
||||
./sources/support/presetcombobox.h
|
||||
./sources/support/preset-handler.h
|
||||
./sources/support/process-params.h
|
||||
./sources/support/ringbuffer.h
|
||||
./sources/support/scan-handler.h
|
||||
./sources/support/scanlist-handler.h
|
||||
./sources/support/scantable-handler.h
|
||||
./sources/support/scheduler.h
|
||||
./sources/support/schedule-selector.h
|
||||
./sources/support/settingNames.h
|
||||
./sources/support/settings-handler.h
|
||||
./sources/support/skin-handler.h
|
||||
./sources/support/tii-mapper.h
|
||||
./sources/support/tii-reader.h
|
||||
./sources/support/time-converter.h
|
||||
./sources/support/time-table.h
|
||||
./sources/support/uploader.h
|
||||
./sources/support/wavWriter.h
|
||||
./sources/support/gui-elements/circular-button.h
|
||||
./sources/support/gui-elements/clickable-label.h
|
||||
./sources/support/gui-elements/color-selector.h
|
||||
./sources/support/gui-elements/font-chooser.h
|
||||
./sources/support/gui-elements/icon-label.h
|
||||
./sources/support/gui-elements/newpushbutton.h
|
||||
./sources/support/gui-elements//normalpushbutton.h
|
||||
./sources/support/gui-elements/smallcombobox.h
|
||||
./sources/support/gui-elements/smallpushbutton.h
|
||||
./sources/support/gui-elements/smallqlistview.h
|
||||
./sources/support/gui-elements/smallspinbox.h
|
||||
./sources/support/gui-elements/super-frame.h
|
||||
./sources/support/gui-elements/verysmallpushbutton.h
|
||||
./sources/backend/backend.h
|
||||
./sources/backend/backend-deconvolver.h
|
||||
./sources/backend/backend-driver.h
|
||||
./sources/backend/charsets.h
|
||||
./sources/backend/frame-processor.h
|
||||
./sources/backend/msc-handler.h
|
||||
./sources/backend/reed-solomon/galois.h
|
||||
./sources/backend/reed-solomon/reed-solomon.h
|
||||
./sources/backend/audio/bitWriter.h
|
||||
./sources/backend/audio/firecode-checker.h
|
||||
./sources/backend/audio/mp2processor.h
|
||||
./sources/backend/audio/mp4processor.h
|
||||
./sources/backend/audio/neaacdec.h
|
||||
./sources/backend/data/adv-datahandler.h
|
||||
./sources/backend/data/data-processor.h
|
||||
./sources/backend/data/ip-datahandler.h
|
||||
./sources/backend/data/journaline-datahandler.h
|
||||
./sources/backend/data/journaline-screen.h
|
||||
./sources/backend/data/pad-handler.h
|
||||
./sources/backend/data/tdc-datahandler.h
|
||||
./sources/backend/data/virtual-datahandler.h
|
||||
./sources/backend/data/epg/epg-compiler.h
|
||||
./sources/backend/data/epg/xml-extractor.h
|
||||
./sources/backend/data/journaline/cpplog.h
|
||||
./sources/backend/data/journaline/crc_8_16.h
|
||||
./sources/backend/data/journaline/dabdatagroupdecoder.h
|
||||
./sources/backend/data/journaline/dabdgdec_impl.h
|
||||
./sources/backend/data/journaline/log.h
|
||||
./sources/backend/data/journaline/newsobject.h
|
||||
./sources/backend/data/journaline/newssvcdec_impl.h
|
||||
./sources/backend/data/journaline/NML.h
|
||||
./sources/backend/data/journaline/Splitter.h
|
||||
./sources/backend/data/mot/mot-dir.h
|
||||
./sources/backend/data/mot/mot-handler.h
|
||||
./sources/backend/data/mot/mot-object.h
|
||||
./sources/output/audio-player.h
|
||||
./sources/qt-devices/device-handler.h
|
||||
./sources/qt-devices/device-exceptions.h
|
||||
./sources/qt-devicces/xml-filewriter.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/main/main.cpp
|
||||
./sources/main/radio.cpp
|
||||
./sources/main/aboutdialog.cpp
|
||||
./sources/main/config-handler.cpp
|
||||
./sources/main/ensemble-handler.cpp
|
||||
./sources/main/techdata.cpp
|
||||
./sources/main/forms-v7/new-display/display-widget.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/correlation-scope.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/spectrum-scope.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/null-scope.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/channel-scope.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/dev-scope.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/waterfall-scope.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/iqdisplay.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/audio-display.cpp
|
||||
./sources/main/forms-v7/new-display/scopes/spectrogramdata.cpp
|
||||
./sources/main/forms-v7/snr-viewer/snr-viewer.cpp
|
||||
./sources/eti-handler/eti-generator.cpp
|
||||
./sources/frontend/ofdm-handler.cpp
|
||||
./sources/frontend/sample-reader.cpp
|
||||
./sources/frontend/correlator.cpp
|
||||
./sources/frontend/freqsyncer.cpp
|
||||
./sources/frontend/ofdm-decoder.cpp
|
||||
./sources/frontend/phasetable.cpp
|
||||
./sources/frontend/freq-interleaver.cpp
|
||||
./sources/frontend/fic-handler.cpp
|
||||
./sources/frontend/ensemble.cpp
|
||||
./sources/frontend/fib-config.cpp
|
||||
./sources/frontend/fib-printer.cpp
|
||||
./sources/frontend/fib-decoder.cpp
|
||||
./sources/frontend/tii-detector.cpp
|
||||
./sources/frontend/tii-detector-1.cpp
|
||||
./sources/frontend/tii-detector-2.cpp
|
||||
./sources/frontend/timesyncer.cpp
|
||||
./sources/frontend/estimator.cpp
|
||||
./sources/protection/protTables.cpp
|
||||
./sources/protection/protection.cpp
|
||||
./sources/protection/uep-protection.cpp
|
||||
./sources/protection/eep-protection.cpp
|
||||
./sources/support/audiosystem-selector.cpp
|
||||
./sources/support/bandpass-filter.cpp
|
||||
./sources/support/content-table.cpp
|
||||
./sources/support/converter_48000.cpp
|
||||
./sources/support/coordinates.cpp
|
||||
./sources/support/dab-params.cpp
|
||||
./sources/support/dab-tables.cpp
|
||||
./sources/support/distances.cpp
|
||||
./sources/support/dxDisplay.cpp
|
||||
./sources/support/element-selector.cpp
|
||||
./sources/support/fft-handler.cpp
|
||||
./sources/support/findfilenames.cpp
|
||||
./sources/support/fir-filters.cpp
|
||||
./sources/support/http-handler.cpp
|
||||
./sources/support/ITU_Region_1.cpp
|
||||
./sources/support/logger.cpp
|
||||
./sources/support/mapport.cpp
|
||||
./sources/support/position-handler.cpp
|
||||
./sources/support/presetcombobox.cpp
|
||||
./sources/support/preset-handler.cpp
|
||||
./sources/support/scan-handler.cpp
|
||||
./sources/support/scanlist-handler.cpp
|
||||
./sources/support/scantable-handler.cpp
|
||||
./sources/support/scheduler.cpp
|
||||
./sources/support/schedule-selector.cpp
|
||||
./sources/support/settings-handler.cpp
|
||||
./sources/support/skin-handler.cpp
|
||||
./sources/support/tii-mapper.cpp
|
||||
./sources/support/tii-reader.cpp
|
||||
./sources/support/time-converter.cpp
|
||||
./sources/support/time-table.cpp
|
||||
./sources/support/uploader.cpp
|
||||
./sources/support/wavWriter.cpp
|
||||
./sources/support/gui-elements/circular-button.cpp
|
||||
./sources/support/gui-elements/clickable-label.cpp
|
||||
./sources/support/gui-elements/color-selector.cpp
|
||||
./sources/support/gui-elements/font-chooser.cpp
|
||||
./sources/support/gui-elements/icon-label.cpp
|
||||
./sources/support/gui-elements/newpushbutton.cpp
|
||||
./sources/support/gui-elements//normalpushbutton.cpp
|
||||
./sources/support/gui-elements/smallcombobox.cpp
|
||||
./sources/support/gui-elements/smallpushbutton.cpp
|
||||
./sources/support/gui-elements/smallqlistview.cpp
|
||||
./sources/support/gui-elements/smallspinbox.cpp
|
||||
./sources/support/gui-elements/super-frame.cpp
|
||||
./sources/support/gui-elements/verysmallpushbutton.cpp
|
||||
./sources/backend/backend.cpp
|
||||
./sources/backend/backend-deconvolver.cpp
|
||||
./sources/backend/backend-driver.cpp
|
||||
./sources/backend/charsets.cpp
|
||||
./sources/backend/msc-handler.cpp
|
||||
./sources/backend/reed-solomon/galois.cpp
|
||||
./sources/backend/reed-solomon/reed-solomon.cpp
|
||||
./sources/backend/audio/bitWriter.cpp
|
||||
./sources/backend/audio/faad-decoder.cpp
|
||||
./sources/backend/audio/firecode-checker.cpp
|
||||
./sources/backend/audio/mp2processor.cpp
|
||||
./sources/backend/audio/mp4processor.cpp
|
||||
./sources/backend/data/adv-datahandler.cpp
|
||||
./sources/backend/data/data-processor.cpp
|
||||
./sources/backend/data/ip-datahandler.cpp
|
||||
./sources/backend/data/journaline-datahandler.cpp
|
||||
./sources/backend/data/journaline-screen.cpp
|
||||
./sources/backend/data/pad-handler.cpp
|
||||
./sources/backend/data/tdc-datahandler.cpp
|
||||
./sources/backend/data/epg/epg-compiler.cpp
|
||||
./sources/backend/data/epg/xml-extractor.cpp
|
||||
./sources/backend/data/journaline/crc_8_16.c
|
||||
./sources/backend/data/journaline/dabdgdec_impl.c
|
||||
./sources/backend/data/journaline/log.c
|
||||
./sources/backend/data/journaline/newsobject.cpp
|
||||
./sources/backend/data/journaline/newssvcdec_impl.cpp
|
||||
./sources/backend/data/journaline/NML.cpp
|
||||
./sources/backend/data/journaline/Splitter.cpp
|
||||
./sources/backend/data/mot/mot-dir.cpp
|
||||
./sources/backend/data/mot/mot-handler.cpp
|
||||
./sources/backend/data/mot/mot-object.cpp
|
||||
./sources/output/audio-player.cpp
|
||||
./sources/qt-devices/device-handler.cpp
|
||||
./sources/qt-devices/xml-filewriter.cpp
|
||||
)
|
||||
|
||||
set (${objectName}_MOCS
|
||||
./sources/main/radio.h
|
||||
./sources/main/ensemble-handler.h
|
||||
./sources/main/config-handler.h
|
||||
./sources/main/techdata.h
|
||||
./sources/main/aboutdialog.h
|
||||
./sources/main/forms-v7/new-display/display-widget.h
|
||||
./sources/main/forms-v7/new-display/scopes/correlation-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/spectrum-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/null-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/channel-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/dev-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/waterfall-scope.h
|
||||
./sources/main/forms-v7/new-display/scopes/iqdisplay.h
|
||||
./sources/main/forms-v7/new-display/scopes/audio-display.h
|
||||
./sources/main/forms-v7/snr-viewer/snr-viewer.h
|
||||
./sources/frontend/ofdm-handler.h
|
||||
./sources/frontend/sample-reader.h
|
||||
./sources/frontend/ofdm-decoder.h
|
||||
./sources/frontend/correlator.h
|
||||
./sources/frontend/freqsyncer.h
|
||||
./sources/frontend/fic-handler.h
|
||||
./sources/frontend/fib-decoder.h
|
||||
./sources/frontend/tii-detector.h
|
||||
./sources/frontend/estimator.h
|
||||
./sources/support/gui-elements/clickable-label.h
|
||||
./sources/support/gui-elements/color-selector.h
|
||||
./sources/support/gui-elements/font-chooser.h
|
||||
./sources/support/gui-elements/icon-label.h
|
||||
./sources/support/gui-elements/newpushbutton.h
|
||||
./sources/support/gui-elements/normalpushbutton.h
|
||||
./sources/support/gui-elements/smallcombobox.h
|
||||
./sources/support/gui-elements/smallpushbutton.h
|
||||
./sources/support/gui-elements/smallqlistview.h
|
||||
./sources/support/gui-elements/smallspinbox.h
|
||||
./sources/support/gui-elements/super-frame.h
|
||||
./sources/support/gui-elements/verysmallpushbutton.h
|
||||
./sources/support/scan-handler.h
|
||||
./sources/support/scantable-handler.h
|
||||
./sources/support/audiosystem-selector.h
|
||||
./sources/support/dxDisplay.h
|
||||
./sources/support/converter_48000.h
|
||||
./sources/support/preset-handler.h
|
||||
./sources/support/presetcombobox.h
|
||||
./sources/support/scanlist-handler.h
|
||||
./sources/support/scheduler.h
|
||||
./sources/support/schedule-selector.h
|
||||
./sources/support/element-selector.h
|
||||
./sources/support/time-table.h
|
||||
./sources/support/content-table.h
|
||||
./sources/support/coordinates.h
|
||||
./sources/support/skin-handler.h
|
||||
./sources/support/mapport.h
|
||||
./sources/support/http-handler.h
|
||||
./sources/backend/msc-handler.h
|
||||
./sources/backend/backend.h
|
||||
./sources/backend/audio/mp2processor.h
|
||||
./sources/backend/audio/mp4processor.h
|
||||
./sources/backend/data/data-processor.h
|
||||
./sources/backend/data/virtual-datahandler.h
|
||||
./sources/backend/data/pad-handler.h
|
||||
./sources/backend/data/mot/mot-handler.h
|
||||
./sources/backend/data/mot/mot-object.h
|
||||
./sources/backend/data/mot/mot-dir.h
|
||||
./sources/backend/data/ip-datahandler.h
|
||||
./sources/backend/data/adv-datahandler.h
|
||||
./sources/backend/data/tdc-datahandler.h
|
||||
./sources/backend/data/journaline-datahandler.h
|
||||
./sources/backend/data/journaline-screen.h
|
||||
./sources/backend/data/epg/epg-compiler.h
|
||||
./sources/backend/data/epg/xml-extractor.h
|
||||
./sources/output/audio-player.h
|
||||
)
|
||||
|
||||
set (${objectName}_UIS
|
||||
${${objectName}_UIS}
|
||||
./sources/main/aboutdialog.ui
|
||||
./sources/main/forms-v7/dabradio-6.ui
|
||||
./sources/main/forms-v7/technical_data.ui
|
||||
./sources/main/forms-v7/config-helper.ui
|
||||
./sources/main/forms-v7/new-display/scopewidget.ui
|
||||
./sources/main/forms-v7/snr-viewer/snr-widget.ui
|
||||
./sources/qt-devices/filereaders/xml-filereader/xmlfiles.ui
|
||||
)
|
||||
|
||||
|
||||
#########################################################################
|
||||
|
||||
if (FDK_AAC)
|
||||
find_package(Fdk-AAC)
|
||||
if (NOT LIBFDK_AAC_FOUND)
|
||||
message(FATAL_ERROR, "Please install libfdk-aac")
|
||||
endif ()
|
||||
include_directories (../helpers/specials/fdk-aac)
|
||||
set($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources//backend/audio/fdk-aac.h
|
||||
)
|
||||
|
||||
set(${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/backend/audio/fdk-aac.cpp
|
||||
)
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
./sources/backend/audio/fdk-aac.h
|
||||
)
|
||||
list(APPEND extraLibs ${FDK_AAC_LIBRARIES})
|
||||
add_definitions(-D__WITH_FDK_AAC__)
|
||||
elseif (NOT FDK_AAC)
|
||||
find_package (Faad)
|
||||
if (NOT FAAD_FOUND)
|
||||
message(FATAL_ERROR "Please install libfaad")
|
||||
endif ()
|
||||
set(${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources/backend/audio/faad-decoder.h
|
||||
)
|
||||
|
||||
set(${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/backend/audio/faad-decoder.cpp
|
||||
)
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
./sources/backend/audio/faad-decoder.h
|
||||
)
|
||||
add_definitions(-D__WITH_FAAD__)
|
||||
endif (FDK_AAC)
|
||||
|
||||
# the viterbi decoder
|
||||
#
|
||||
if (VITERBI_NEON)
|
||||
set(VITERBI_SSE false)
|
||||
set (${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources/support/viterbi-spiral/spiral-neon.h
|
||||
)
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/support/viterbi-spiral/spiral-neon.c
|
||||
)
|
||||
|
||||
add_definitions (-DNEON_AVAILABLE)
|
||||
elseif(VITERBI_SSE)
|
||||
include_directories (
|
||||
./sources/support/viterbi-spiral
|
||||
./sources/support/viterbi-spiral/includes
|
||||
)
|
||||
set ($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources.support/viterbi-spiral/viterbi.h
|
||||
./sources/support/viterbi-spiral/spiral-sse.h
|
||||
)
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/support/viterbi-spiral/viterbi.cpp
|
||||
./sources/support/viterbi-spiral/spiral-sse.c
|
||||
)
|
||||
add_definitions (-DSSE_AVAILABLE)
|
||||
else (VITERBI_SSE)
|
||||
include_directories (
|
||||
./sources/support/viterbi-spiral
|
||||
)
|
||||
set ($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources/support/viterbi-spiral/viterbi.h
|
||||
./sources/support/viterbi-spiral/spiral-no-sse.h
|
||||
)
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/support/viterbi-spiral/viterbi.cpp
|
||||
./sources/support/viterbi-spiral/spiral-no-sse.c
|
||||
)
|
||||
endif (VITERBI_NEON)
|
||||
|
||||
if (TCP_STREAMER)
|
||||
add_definitions (-DTCP_STREAMER)
|
||||
find_package (Qt6Network REQUIRED)
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
./sources/output/tcp-streamer.h
|
||||
)
|
||||
set (${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources/output/tcp-streamer.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/output/tcp-streamer.cpp
|
||||
)
|
||||
endif (TCP_STREAMER)
|
||||
|
||||
if (DATA_STREAMER)
|
||||
include_directories (
|
||||
./server-thread
|
||||
)
|
||||
|
||||
set ($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./server-thread/tcp-server.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./server-thread/tcp-server.cpp
|
||||
)
|
||||
add_definitions (-DDATA_STREAMER)
|
||||
endif (DATA_STREAMER)
|
||||
|
||||
if (NOT TCP_STREAMER)
|
||||
add_definitions (-DQT_AUDIO)
|
||||
find_package(Portaudio)
|
||||
if (NOT PORTAUDIO_FOUND)
|
||||
message(FATAL_ERROR "please install portaudio V19")
|
||||
endif ()
|
||||
list(APPEND extraLibs ${PORTAUDIO_LIBRARIES})
|
||||
find_package (Qt6Multimedia REQUIRED)
|
||||
include_directories (
|
||||
${Qt6Multimedia_INCLUDE_DIRS}
|
||||
./sources/output/portaudio
|
||||
./sources/output/Qt6
|
||||
)
|
||||
set (${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
./sources/output/portadio/audiosink.h
|
||||
./sources/output/Qt6/Qt-audio.h
|
||||
./sources/output/Qt6/Qt-audiodevice.h
|
||||
)
|
||||
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
./sources/output/portaudio/audiosink.h
|
||||
./sources/output/Qt6/Qt-audio.h
|
||||
./sources/output/Qt6/Qt-audiodevice.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./sources/output/portaudio/audiosink.cpp
|
||||
./sources/output/Qt6/Qt-audio.cpp
|
||||
./sources/output/Qt6/Qt-audiodevice.cpp
|
||||
)
|
||||
endif (NOT TCP_STREAMER)
|
||||
|
||||
QT6_WRAP_UI (UIS ${${objectName}_UIS}
|
||||
./sources/qt-devices/filereaders/filereader-widget.ui)
|
||||
|
||||
include_directories (
|
||||
${SDRPLAY_INCLUDES}
|
||||
${QT6Widgets_INCLUDES}
|
||||
${QT_QTCORE_INCLUDE_DIR}
|
||||
${QT_QTGUI_INCLUDE_DIR}
|
||||
${PORTAUDIO_INCLUDE_DIRS}
|
||||
${FAAD_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
QT6_WRAP_CPP (MOCS ${${objectName}_MOCS})
|
||||
|
||||
add_executable (${objectName}
|
||||
${${objectName}_SRCS}
|
||||
${UIS}
|
||||
${RSCS}
|
||||
${TRS}
|
||||
${MOCS}
|
||||
resources.qrc
|
||||
)
|
||||
|
||||
target_link_libraries (${objectName}
|
||||
PRIVATE
|
||||
Qt6::Widgets
|
||||
Qt6::Network
|
||||
Qt6::Xml
|
||||
Qt6::Multimedia
|
||||
${RTLTCP_lib}
|
||||
${extraLibs}
|
||||
${FAAD_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
)
|
||||
|
||||
add_subdirectory (./sources/qt-devices/ /tmp)
|
||||
target_link_libraries (${objectName} PRIVATE ${objectName}_devices)
|
||||
|
||||
INSTALL (TARGETS ${objectName} DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||
# INSTALL (TARGETS ${objectName} DESTINATION ./linux-bin)
|
||||
|
||||
########################################################################
|
||||
# Create uninstall target
|
||||
########################################################################
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
@@ -4,6 +4,12 @@
|
||||
|
||||

|
||||
|
||||
-------------------------------------------------------------------------
|
||||
Restructured source tree
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Note that the sourcetree is now restructured.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
About Qt-DAB
|
||||
-------------------------------------------------------------------------
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
0
testband → helpers/testband
Executable file → Normal file
0
testband → helpers/testband
Executable file → Normal file
@@ -1,142 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2013
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Programming
|
||||
*
|
||||
* This file is part of the SDR-J (JSDR).
|
||||
* SDR-J is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SDR-J is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SDR-J; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* This file will be included in mp4processor
|
||||
*/
|
||||
#
|
||||
#include "neaacdec.h"
|
||||
#include "audiosink.h"
|
||||
#include "newconverter.h"
|
||||
|
||||
class faadDecoder {
|
||||
private:
|
||||
bool processorOK;
|
||||
bool aacInitialized;
|
||||
uint32_t aacCap;
|
||||
NeAACDecHandle aacHandle;
|
||||
NeAACDecConfigurationPtr aacConf;
|
||||
NeAACDecFrameInfo hInfo;
|
||||
audioSink *ourSink;
|
||||
int32_t baudRate;
|
||||
newConverter *myConverter;
|
||||
DSPCOMPLEX *tempBuffer;
|
||||
bool corrector;
|
||||
//
|
||||
public:
|
||||
faadDecoder (audioSink *as, bool corrector) {
|
||||
ourSink = as;
|
||||
this -> corrector = corrector;
|
||||
aacCap = NeAACDecGetCapabilities ();
|
||||
aacHandle = NeAACDecOpen ();
|
||||
aacConf = NeAACDecGetCurrentConfiguration (aacHandle);
|
||||
aacInitialized = false;
|
||||
baudRate = 48000;
|
||||
myConverter = new newConverter ();
|
||||
// fprintf (stderr, "for 4096 samples in krijgen we %d samples uit\n",
|
||||
// myConverter -> getOutputSize ());
|
||||
tempBuffer = new DSPCOMPLEX [480];
|
||||
}
|
||||
|
||||
~faadDecoder (void) {
|
||||
NeAACDecClose (aacHandle);
|
||||
delete myConverter;
|
||||
delete [] tempBuffer;
|
||||
}
|
||||
|
||||
int16_t MP42PCM (uint8_t buffer [], int16_t bufferLength) {
|
||||
int16_t len;
|
||||
int16_t i;
|
||||
int16_t samples;
|
||||
uint8_t channels;
|
||||
long unsigned int sample_rate;
|
||||
int16_t *outBuffer;
|
||||
NeAACDecFrameInfo hInfo;
|
||||
|
||||
if (!aacInitialized) {
|
||||
len = NeAACDecInit (aacHandle,
|
||||
buffer, bufferLength, &sample_rate, &channels);
|
||||
if (len < 0) {
|
||||
fprintf (stderr, "Cannot handle this frame\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
outBuffer = (int16_t *)NeAACDecDecode (aacHandle,
|
||||
&hInfo,
|
||||
&buffer [len],
|
||||
(uint64_t)(bufferLength - len));
|
||||
aacInitialized = true;
|
||||
}
|
||||
else
|
||||
outBuffer = (int16_t *)NeAACDecDecode (aacHandle,
|
||||
&hInfo,
|
||||
buffer,
|
||||
(uint64_t)bufferLength);
|
||||
|
||||
sample_rate = hInfo. samplerate;
|
||||
samples = hInfo. samples;
|
||||
if ((sample_rate == 24000) ||
|
||||
(sample_rate == 48000) ||
|
||||
(sample_rate != baudRate))
|
||||
baudRate = sample_rate;
|
||||
|
||||
// fprintf (stderr, "bytes consumed %d\n", (int)(hInfo. bytesconsumed));
|
||||
// fprintf (stderr, "samplerate = %d, samples = %d, channels = %d, error = %d, sbr = %d\n", sample_rate, samples,
|
||||
// hInfo. channels,
|
||||
// hInfo. error,
|
||||
// hInfo. sbr);
|
||||
// fprintf (stderr, "header = %d\n", hInfo. header_type);
|
||||
channels = hInfo. channels;
|
||||
if (hInfo. error != 0) {
|
||||
fprintf (stderr, "Warning: %s\n",
|
||||
faacDecGetErrorMessage (hInfo. error));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (channels == 2 && corrector) {
|
||||
int16_t amount;
|
||||
for (i = 0; i < samples / 2; i ++) {
|
||||
if (myConverter -> add (outBuffer [2 * i],
|
||||
outBuffer [2 * i + 1],
|
||||
tempBuffer, &amount)) {
|
||||
ourSink -> putSamples (tempBuffer, amount);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (channels == 2)
|
||||
ourSink -> audioOut (outBuffer, samples / 2);
|
||||
else
|
||||
if (channels == 1) {
|
||||
int16_t *buffer = (int16_t *)alloca (2 * samples);
|
||||
int16_t i;
|
||||
for (i = 0; i < samples; i ++) {
|
||||
buffer [2 * i] = ((int16_t *)outBuffer) [i];
|
||||
buffer [2 * i + 1] = buffer [2 * i];
|
||||
}
|
||||
ourSink -> audioOut (buffer, samples);
|
||||
}
|
||||
else
|
||||
fprintf (stderr, "Cannot handle these channels\n");
|
||||
|
||||
return samples / 2;
|
||||
}
|
||||
|
||||
};
|
@@ -1,149 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2016 .. 2022
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-DAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
// special instantiation for pairs of int16_t
|
||||
// to be used for the faad decoder
|
||||
#pragma once
|
||||
//
|
||||
// Very straightforward fractional resampler
|
||||
#include "dab-constants.h"
|
||||
|
||||
class converter_2 {
|
||||
private:
|
||||
int32_t rateIn;
|
||||
int32_t rateOut;
|
||||
int32_t blockLength;
|
||||
int32_t width;
|
||||
DSPCOMPLEX *buffer;
|
||||
int32_t bufferP;
|
||||
long double floatTime;
|
||||
long double inPeriod;
|
||||
long double outPeriod;
|
||||
//
|
||||
// sin (-a) = - sin (--a)
|
||||
double sincPI (double a) {
|
||||
if (a == 0)
|
||||
return 1.0;
|
||||
return sin (M_PI * a) / (M_PI * a);
|
||||
}
|
||||
//
|
||||
// cos (-a) = cos (a)
|
||||
double HannCoeff (double a, int16_t width) {
|
||||
DSPFLOAT x = 2 * M_PI * (0.5 + a / width);
|
||||
if (x < 0)
|
||||
x = - x;
|
||||
return 0.5 - 0.5 * cos (x);
|
||||
}
|
||||
//
|
||||
// Shannon applied to floatTime
|
||||
// We determine the entry in the table acting as zero
|
||||
DSPCOMPLEX getInterpolate (double floatTime) {
|
||||
int32_t index = (int32_t)(floor (floatTime * rateIn));
|
||||
int32_t i;
|
||||
DSPCOMPLEX res = 0;
|
||||
double localTime = floatTime - index * inPeriod;
|
||||
//
|
||||
// Due to rounding of the (floating) computation, it
|
||||
// might happen that index + i is sometimes out of bounds
|
||||
for (i = - width / 2; i < width / 2; i ++) {
|
||||
if (index + i < 0 || index + i >= blockLength + width)
|
||||
continue;
|
||||
double ag = (localTime - i * inPeriod) / inPeriod;
|
||||
double factor = HannCoeff (ag, width) * sincPI (ag);
|
||||
res = res + DSPCOMPLEX (real (buffer [index + i]) * factor,
|
||||
imag (buffer [index + i]) * factor);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
//
|
||||
public:
|
||||
converter_2 (int32_t rateIn,
|
||||
int32_t rateOut,
|
||||
int32_t blockLength,
|
||||
int16_t width) {
|
||||
this -> rateIn = rateIn;
|
||||
this -> rateOut = rateOut;
|
||||
this -> blockLength = blockLength;
|
||||
this -> width = width;
|
||||
buffer = new DSPCOMPLEX [blockLength + width];
|
||||
bufferP = 0;
|
||||
inPeriod = 1.0 / rateIn;
|
||||
outPeriod = 1.0 / rateOut;
|
||||
fprintf (stderr, "converter from %d to %d\n", rateIn, rateOut);
|
||||
// the first width / 2 samples are only used in the interpolation
|
||||
// furthermore, they are neglected. So, we start with:
|
||||
floatTime = width / 2 * inPeriod;
|
||||
}
|
||||
|
||||
~converter_2 (void) {
|
||||
delete [] buffer;
|
||||
}
|
||||
//
|
||||
// The buffer consists of three parts
|
||||
// width / 2 "old" values
|
||||
// blockLength values that will be processed
|
||||
// width / 2 "future" values
|
||||
//
|
||||
// Whenever the buffer filling reaches blockLength + width,
|
||||
// we map the blockLength samples in the middle
|
||||
bool add (int16_t in_re, int16_t in_im,
|
||||
int16_t *out, int16_t *nOut) {
|
||||
int32_t i;
|
||||
int outP = 0;
|
||||
double endTime;
|
||||
|
||||
buffer [bufferP ++] = DSPCOMPLEX (in_re, in_im);
|
||||
if (bufferP < blockLength + width)
|
||||
return false;
|
||||
|
||||
endTime = floatTime + blockLength * inPeriod;
|
||||
// floatTime indicates the current time for the
|
||||
// output samples, endtime is the time of the last
|
||||
// input sample
|
||||
while (floatTime < endTime ) {
|
||||
DSPCOMPLEX temp = getInterpolate (floatTime);
|
||||
out [2 * outP] = real (temp);
|
||||
out [2 * outP + 1] = imag (temp);
|
||||
outP += 1;
|
||||
floatTime += outPeriod;
|
||||
}
|
||||
//
|
||||
// shift the "width" samples at the end of the buffer
|
||||
// The first "width / 2" samples of the buffer now are already processed
|
||||
// but required for processing the next series
|
||||
for (i = 0; i < width; i ++)
|
||||
buffer [i] = buffer [blockLength + i];
|
||||
//
|
||||
// adjust the begin and end time
|
||||
floatTime -= outP * outPeriod;
|
||||
bufferP = floatTime / inPeriod + width / 2;
|
||||
*nOut = outP;
|
||||
return true;
|
||||
}
|
||||
|
||||
int32_t getOutputSize (void) {
|
||||
return rateOut * blockLength / rateIn;
|
||||
}
|
||||
};
|
||||
|
@@ -1,94 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2013 .. 2020
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of the Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-TAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#ifndef __EPG_DECODER__
|
||||
#define __EPG_DECODER__
|
||||
|
||||
#include <QObject>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <QString>
|
||||
|
||||
class progDesc {
|
||||
public:
|
||||
QString ident;
|
||||
QString shortName;
|
||||
QString mediumName;
|
||||
QString longName;
|
||||
int startTime;
|
||||
progDesc () {
|
||||
startTime = -1;
|
||||
}
|
||||
void clean () {
|
||||
startTime = -1;
|
||||
longName = "";
|
||||
mediumName = "";
|
||||
shortName = "";
|
||||
ident = "";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class epgDecoder: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
epgDecoder ();
|
||||
~epgDecoder ();
|
||||
|
||||
int process_epg (uint8_t *, int, uint32_t);
|
||||
private:
|
||||
uint32_t SId;
|
||||
QString stringTable [20];
|
||||
int getBit (uint8_t *, int);
|
||||
uint32_t getBits (uint8_t *, int, int);
|
||||
|
||||
int process_epgElement (uint8_t *, int);
|
||||
int schedule_element (uint8_t *, int);
|
||||
int programme_element (uint8_t *, int, progDesc *);
|
||||
int process_mediaDescription (uint8_t *, int);
|
||||
int process_location (uint8_t *, int, progDesc *);
|
||||
int location_element (uint8_t *, int, progDesc *);
|
||||
int time_element (uint8_t *, int);
|
||||
int genre_element (uint8_t *, int);
|
||||
int bearer_element (uint8_t *, int);
|
||||
int multimedia (uint8_t *, int);
|
||||
|
||||
void process_tokens (uint8_t *, int, int);
|
||||
int process_token (uint8_t *, int);
|
||||
void process_45 (uint8_t *, int, int);
|
||||
void process_46 (uint8_t *, int, int);
|
||||
QString process_471 (uint8_t *, int, int);
|
||||
void process_472 (uint8_t *, int, int);
|
||||
void process_473 (uint8_t *, int, int);
|
||||
int process_474 (uint8_t *, int, int);
|
||||
void process_475 (uint8_t *, int, int);
|
||||
void process_476 (uint8_t *, int, int);
|
||||
QString process_481 (uint8_t *, int, int);
|
||||
void process_483 (uint8_t *, int, int);
|
||||
void record (progDesc *);
|
||||
signals:
|
||||
void set_epgData (int, int, const QString &);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -1,140 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2013 .. 2020
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of the Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-TAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <QString>
|
||||
|
||||
class progDesc {
|
||||
public:
|
||||
QString ident;
|
||||
QString bearer;
|
||||
QString shortName;
|
||||
QString mediumName;
|
||||
QString longName;
|
||||
QString shortDescription;
|
||||
QString longDescription;
|
||||
int startTime;
|
||||
int stopTime;
|
||||
progDesc () {
|
||||
startTime = -1;
|
||||
stopTime = -1;
|
||||
}
|
||||
void clean () {
|
||||
startTime = -1;
|
||||
longName = "";
|
||||
mediumName = "";
|
||||
shortName = "";
|
||||
ident = "";
|
||||
shortDescription = "";
|
||||
longDescription = "";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class epgDecoder: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
epgDecoder ();
|
||||
~epgDecoder ();
|
||||
|
||||
int process_epg (uint8_t *v, int e_length,
|
||||
uint32_t SId, int subType, uint32_t theDay);
|
||||
private:
|
||||
uint32_t SId;
|
||||
QString stringTable [20];
|
||||
int subType;
|
||||
uint32_t julianDate;
|
||||
int getBit (uint8_t *v, int bitnr);
|
||||
uint32_t getBits (uint8_t *v, int bitnr, int length);
|
||||
int process_programGroups (uint8_t *v, int index);
|
||||
int process_programGroup (uint8_t *v, int index);
|
||||
int process_schedule (uint8_t *v, int index);
|
||||
int process_program (uint8_t *v, int index, progDesc *);
|
||||
int process_scope (uint8_t *v, int index, progDesc *);
|
||||
int process_serviceScope (uint8_t *v, int index, progDesc *);
|
||||
int process_mediaDescription (uint8_t *v, int index, progDesc *);
|
||||
int process_ensemble (uint8_t *v, int index);
|
||||
int process_service (uint8_t *v, int index, progDesc *);
|
||||
int process_location (uint8_t *v, int index, progDesc *);
|
||||
int process_bearer (uint8_t *v, int index, progDesc *);
|
||||
int process_geoLocation (uint8_t *v, int index);
|
||||
int process_programmeEvent (uint8_t *v, int index);
|
||||
int process_onDemand (uint8_t *v, int index);
|
||||
int process_genre (uint8_t *v, int index, progDesc *);
|
||||
int process_keyWords (uint8_t *v, int index);
|
||||
int process_link (uint8_t *v, int index);
|
||||
int process_shortName (uint8_t *v, int index, progDesc *);
|
||||
int process_mediumName (uint8_t *v, int index, progDesc *);
|
||||
int process_longName (uint8_t *v, int index, progDesc *);
|
||||
int process_shortDescription (uint8_t *v, int index, progDesc *);
|
||||
int process_longDescription (uint8_t *v, int index, progDesc *);
|
||||
int process_multiMedia (uint8_t *v, int index);
|
||||
int process_radiodns (uint8_t *v, int index);
|
||||
int process_time (uint8_t *v, int index, int *);
|
||||
int process_relativeTime (uint8_t *v, int index);
|
||||
int process_memberOf (uint8_t *v, int index);
|
||||
int process_presentationTime (uint8_t *v, int index);
|
||||
int process_acquisitionTime (uint8_t *v, int index);
|
||||
|
||||
int process_country (uint8_t *v, int index);
|
||||
int process_point (uint8_t *v, int index);
|
||||
int process_polygon (uint8_t *v, int index);
|
||||
//
|
||||
int process_412 (uint8_t *v, int index);
|
||||
int process_440 (uint8_t *v, int index);
|
||||
int process_46 (uint8_t *v, int index);
|
||||
int process_471 (uint8_t *v, int index);
|
||||
int process_472 (uint8_t *v, int index);
|
||||
int process_473 (uint8_t *v, int index);
|
||||
int process_474 (uint8_t *v, int index, int *);
|
||||
int process_475 (uint8_t *v, int index);
|
||||
int process_476_p (uint8_t *v, int index, QString *);
|
||||
int process_476 (uint8_t *v, int index);
|
||||
int process_481 (uint8_t *v, int index);
|
||||
int process_482 (uint8_t *v, int index);
|
||||
int process_483 (uint8_t *v, int index);
|
||||
int process_484 (uint8_t *v, int index);
|
||||
int process_485 (uint8_t *v, int index);
|
||||
int process_4171 (uint8_t *v, int index);
|
||||
|
||||
int process_tokenTable (uint8_t *v, int index);
|
||||
int process_token (uint8_t *v, int index);
|
||||
int process_defaultLanguage (uint8_t *v, int index);
|
||||
int process_obsolete (uint8_t *v, int index);
|
||||
|
||||
int get_shortId (uint8_t *v, int index);
|
||||
|
||||
void record (progDesc *);
|
||||
QString getCData (uint8_t *v, int index, int elength);
|
||||
signals:
|
||||
void set_epgData (int, int,
|
||||
const QString &,
|
||||
const QString &);
|
||||
};
|
||||
|
@@ -1,79 +0,0 @@
|
||||
/******************************************************************************\
|
||||
* British Broadcasting Corporation
|
||||
* Copyright (c) 2006
|
||||
*
|
||||
* Author(s):
|
||||
* Julian Cable
|
||||
*
|
||||
* Description:
|
||||
* ETSI DAB/DRM Electronic Programme Guide XML Decompressor
|
||||
*
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
\******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
#include <qdom.h>
|
||||
using namespace std;
|
||||
|
||||
#define _BYTE uint8_t
|
||||
class tag_length_value {
|
||||
public:
|
||||
uint8_t tag;
|
||||
tag_length_value (const _BYTE* p);
|
||||
bool is_cdata() const { return tag == 1; }
|
||||
bool is_epg() const { return tag == 2; }
|
||||
bool is_service_information() const { return tag == 3; }
|
||||
bool is_string_token_table() const { return tag == 4; }
|
||||
bool is_default_id() const { return tag == 5; }
|
||||
bool is_child_element() const { return (5<tag) && (tag<0x80); }
|
||||
bool is_attribute() const { return tag>=0x80; }
|
||||
|
||||
size_t length;
|
||||
_BYTE* value;
|
||||
};
|
||||
|
||||
class CEPGDecoder {
|
||||
public:
|
||||
CEPGDecoder() {
|
||||
}
|
||||
void decode (const std::vector<_BYTE>&,
|
||||
const QString &);
|
||||
QDomDocument doc;
|
||||
};
|
||||
|
||||
|
||||
/* Modified Julian Date ----------------------------------------------------- */
|
||||
class CModJulDate
|
||||
{
|
||||
public:
|
||||
CModJulDate() : iYear(0), iDay(0), iMonth(0) {}
|
||||
CModJulDate(const uint32_t iModJulDate) {Set(iModJulDate);}
|
||||
|
||||
void Set(const uint32_t iModJulDate);
|
||||
|
||||
int GetYear() {return iYear;}
|
||||
int GetDay() {return iDay;}
|
||||
int GetMonth() {return iMonth;}
|
||||
|
||||
protected:
|
||||
int iYear, iDay, iMonth;
|
||||
};
|
||||
|
@@ -1,36 +0,0 @@
|
||||
/**
|
||||
* static inline parity(int x) -- compute parity (up to 32 bits?)
|
||||
*/
|
||||
|
||||
/* Determine parity of argument: 1 = odd, 0 = even */
|
||||
#ifdef __i386__
|
||||
static inline int parityb(unsigned char x){
|
||||
__asm__ __volatile__ ("test %1,%1;setpo %0" : "=g"(x) : "r" (x));
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void partab_init();
|
||||
#if __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
static inline int parityb(unsigned char x){
|
||||
extern unsigned char Partab[256];
|
||||
extern int Parity_initialized;
|
||||
if(!Parity_initialized){
|
||||
partab_init();
|
||||
}
|
||||
return Partab[x];
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline int parity(int x){
|
||||
/* Fold down to one byte */
|
||||
x ^= (x >> 16);
|
||||
x ^= (x >> 8);
|
||||
return parityb(x);
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
#
|
||||
#ifndef __VITERBI__
|
||||
#define __VITERBI__
|
||||
/*
|
||||
* Viterbi.h according to the SPIRAL project
|
||||
*/
|
||||
#include "dab-constants.h"
|
||||
|
||||
// For our particular viterbi decoder, we have
|
||||
class viterbi {
|
||||
#define RATE 4
|
||||
#define NUMSTATES 64
|
||||
#define BITS_PER_BYTE 8
|
||||
|
||||
// decision_t is a BIT vector
|
||||
typedef union {
|
||||
uint8_t t [NUMSTATES / BITS_PER_BYTE];
|
||||
uint32_t w [NUMSTATES / 32];
|
||||
uint16_t s [NUMSTATES / 16];
|
||||
uint8_t c [NUMSTATES / 8];
|
||||
} decision_t __attribute__ ((aligned (16)));
|
||||
|
||||
typedef union {
|
||||
int16_t t[NUMSTATES];
|
||||
} metric_t __attribute__ ((aligned (16)));
|
||||
|
||||
/*
|
||||
* State info for instance of Viterbi decoder
|
||||
*/
|
||||
|
||||
struct v {
|
||||
/* path metric buffer 1 */
|
||||
__attribute__ ((aligned (16))) metric_t metrics1;
|
||||
/* path metric buffer 2 */
|
||||
__attribute__ ((aligned (16))) metric_t metrics2;
|
||||
/* Pointers to path metrics, swapped on every bit */
|
||||
metric_t *old_metrics,*new_metrics;
|
||||
decision_t *decisions; /* decisions */
|
||||
};
|
||||
|
||||
public:
|
||||
viterbi (int16_t);
|
||||
~viterbi (void);
|
||||
void deconvolve (int16_t *, uint8_t *);
|
||||
private:
|
||||
|
||||
struct v vp;
|
||||
int16_t Branchtab [NUMSTATES / 2 * RATE] __attribute__ ((aligned (16)));
|
||||
int16_t parity (int16_t);
|
||||
void init_viterbi (struct v *, int16_t);
|
||||
void update_viterbi_blk_GENERIC (struct v *, int16_t *,
|
||||
int16_t);
|
||||
|
||||
void chainback_viterbi (struct v *, uint8_t *, int16_t, uint16_t);
|
||||
void BFLY (int32_t, int, int16_t *,
|
||||
struct v *, decision_t *);
|
||||
uint8_t *data;
|
||||
int16_t *symbols;
|
||||
int16_t frameBits;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -1,62 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2011 .. 2023
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-DAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <dab-constants.h>
|
||||
#include <QString>
|
||||
#include <ringbuffer.h>
|
||||
#include "rtpsession.h"
|
||||
#include "rtpsessionparams.h"
|
||||
#include "rtpudpv4transmitter.h"
|
||||
#include "rtpipv4address.h"
|
||||
#include "rtptimeutilities.h"
|
||||
#include "rtppacket.h"
|
||||
#include "audio-base.h"
|
||||
|
||||
using namespace jrtplib;
|
||||
|
||||
class rtpStreamer : public AudioBase {
|
||||
Q_OBJECT
|
||||
public:
|
||||
rtpStreamer (QString name, int32_t port,
|
||||
RingBuffer<int16_t> *);
|
||||
~rtpStreamer (void);
|
||||
void audioOutput (float *, int);
|
||||
private:
|
||||
QString theName;
|
||||
int32_t thePort;
|
||||
RingBuffer<float> *theBuffer;
|
||||
RingBuffer<float> *inBuffer;
|
||||
RTPSession session;
|
||||
RTPSessionParams sessionparams;
|
||||
RTPUDPv4TransmissionParams transparams;
|
||||
void sendBuffer (uint8_t *, int16_t);
|
||||
float left [481];
|
||||
float right [481];
|
||||
uint8_t buffer [1024];
|
||||
int16_t fillP;
|
||||
int16_t convIndex;
|
||||
int mapTable_int [481];
|
||||
float mapTable_float [481];
|
||||
};
|
||||
|
@@ -1,66 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2008, 2009, 2010
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of the Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-DAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "dab-constants.h"
|
||||
#include <vector>
|
||||
#include <qwt.h>
|
||||
#include <qwt_slider.h>
|
||||
#include <qwt_plot.h>
|
||||
#include <qwt_plot_curve.h>
|
||||
#include <qwt_plot_marker.h>
|
||||
#include <qwt_plot_grid.h>
|
||||
#include <qwt_dial.h>
|
||||
#include <qwt_dial_needle.h>
|
||||
#include <qwt_plot_spectrogram.h>
|
||||
#include <qwt_color_map.h>
|
||||
#include <qwt_plot_spectrogram.h>
|
||||
#include <qwt_scale_widget.h>
|
||||
#include <qwt_scale_draw.h>
|
||||
#include <qwt_plot_zoomer.h>
|
||||
#include <qwt_plot_panner.h>
|
||||
#include <qwt_plot_layout.h>
|
||||
#include "dab-constants.h"
|
||||
/*
|
||||
* for the waterfall display
|
||||
*/
|
||||
|
||||
class IQDisplay: public QObject, public QwtPlotSpectrogram {
|
||||
Q_OBJECT
|
||||
public:
|
||||
IQDisplay (QwtPlot *, int16_t);
|
||||
~IQDisplay();
|
||||
void DisplayIQ (Complex *, int, float);
|
||||
private:
|
||||
int32_t x_amount;
|
||||
std::vector<double> plotData;
|
||||
std::vector<double> plot2;
|
||||
// std::vector<complex<int> > Points;
|
||||
// std::complex<int> *Points;
|
||||
QwtPlot *plotgrid;
|
||||
int _OutputRate;
|
||||
int Radius;
|
||||
int CycleCount;
|
||||
void setPoint (int, int, int);
|
||||
private slots:
|
||||
};
|
@@ -1,140 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2016 .. 2022
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-DAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QStackedWidget>
|
||||
#include <qwt.h>
|
||||
#include <qwt_plot.h>
|
||||
#include <qwt_plot_curve.h>
|
||||
#include <qwt_plot_marker.h>
|
||||
#include <qwt_plot_grid.h>
|
||||
#include <qwt_color_map.h>
|
||||
#include <qwt_plot_spectrogram.h>
|
||||
#include <qwt_plot_zoomer.h>
|
||||
#include <qwt_plot_panner.h>
|
||||
#include <qwt_plot_layout.h>
|
||||
#include <qwt_scale_widget.h>
|
||||
#include <QBrush>
|
||||
#include <QTimer>
|
||||
#include <stdint.h>
|
||||
#include "spectrogramdata.h"
|
||||
|
||||
class SpectrumViewer;
|
||||
class WaterfallViewer;
|
||||
class QwtLinearColorMap;
|
||||
class QwtScaleWidget;
|
||||
/*
|
||||
* The stacked object is called the scope, it is built as a wrapper
|
||||
* around the actual display mechanisms the waterfall and the
|
||||
* spectrumviewer.
|
||||
*/
|
||||
|
||||
#define WATERFALL_MODE 0
|
||||
#define SPECTRUM_MODE 1
|
||||
|
||||
class Scope: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Scope (QwtPlot *, uint16_t, uint16_t);
|
||||
~Scope (void);
|
||||
void Display (double *, double *, double, int32_t);
|
||||
void SelectView (uint8_t);
|
||||
void setBitDepth (int16_t);
|
||||
private:
|
||||
QwtPlot *Plotter;
|
||||
uint16_t Displaysize;
|
||||
uint16_t Rastersize;
|
||||
uint8_t CurrentWidget;
|
||||
SpectrumViewer *Spectrum;
|
||||
WaterfallViewer *Waterfall;
|
||||
int16_t bitDepth;
|
||||
float get_db (float);
|
||||
private slots:
|
||||
void leftClicked (int);
|
||||
void rightClicked (int);
|
||||
signals:
|
||||
void clickedwithLeft (int);
|
||||
void clickedwithRight (int);
|
||||
};
|
||||
|
||||
/*
|
||||
* for the waterfall display
|
||||
*/
|
||||
class WaterfallViewer: public QObject, public QwtPlotSpectrogram {
|
||||
Q_OBJECT
|
||||
public:
|
||||
WaterfallViewer (QwtPlot *, uint16_t, uint16_t);
|
||||
~WaterfallViewer ();
|
||||
void ViewWaterfall (double *,
|
||||
double *,
|
||||
double,
|
||||
int32_t);
|
||||
private:
|
||||
SpectrogramData *WaterfallData;
|
||||
QwtPlot *plotgrid;
|
||||
uint16_t Displaysize;
|
||||
uint16_t Rastersize;
|
||||
double *plotData;
|
||||
QwtPlotMarker *Marker;
|
||||
uint16_t IndexforMarker;
|
||||
QwtPlotPicker *lm_picker;
|
||||
uint8_t OneofTwo;
|
||||
QwtLinearColorMap *colorMap;
|
||||
QwtScaleWidget *rightAxis;
|
||||
private slots:
|
||||
void leftMouseClick (const QPointF &);
|
||||
signals:
|
||||
void leftClicked (int);
|
||||
};
|
||||
/*
|
||||
* The spectrumDisplay
|
||||
*/
|
||||
class SpectrumViewer: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
SpectrumViewer (QwtPlot *, uint16_t);
|
||||
~SpectrumViewer (void);
|
||||
void ViewSpectrum (double *, double *, double, int32_t);
|
||||
void setBitDepth (int16_t);
|
||||
private:
|
||||
QwtPlot *plotgrid;
|
||||
uint16_t Displaysize;
|
||||
QwtPlotGrid *grid;
|
||||
QwtPlotCurve *SpectrumCurve;
|
||||
QwtPlotMarker *Marker;
|
||||
uint32_t IndexforMarker;
|
||||
QwtPlotPicker *lm_picker;
|
||||
QwtPlotPicker *rm_picker;
|
||||
QBrush *ourBrush;
|
||||
int16_t bitDepth;
|
||||
int32_t normalizer;
|
||||
float get_db (float);
|
||||
private slots:
|
||||
void leftMouseClick (const QPointF &);
|
||||
void rightMouseClick (const QPointF &);
|
||||
signals:
|
||||
void leftClicked (int);
|
||||
void rightClicked (int);
|
||||
};
|
@@ -1,57 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2016 .. 2022
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of Qt-DAB
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-DAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <qwt_interval.h>
|
||||
#include <QPen>
|
||||
//
|
||||
// Qwt 6.2 is different from the 6.1 version, these mods
|
||||
// seem to work
|
||||
# include <qwt_raster_data.h>
|
||||
|
||||
class spectrogramData: public QwtRasterData {
|
||||
public:
|
||||
double *data; // pointer to actual data
|
||||
int left; // index of left most element in raster
|
||||
int width; // raster width
|
||||
int height; // rasterheigth
|
||||
int datawidth; // width of matrix
|
||||
int dataheight; // for now == rasterheigth
|
||||
double max;
|
||||
|
||||
spectrogramData (double *data, int left,
|
||||
int width, int height,
|
||||
int datawidth, double max);
|
||||
|
||||
~spectrogramData ();
|
||||
|
||||
void initRaster (const QRectF &x, const QSize &raster);
|
||||
|
||||
QwtInterval interval (Qt::Axis x) const;
|
||||
|
||||
double value (double x, double y) const;
|
||||
};
|
||||
|
@@ -1,74 +0,0 @@
|
||||
#
|
||||
/*
|
||||
* Copyright (C) 2016 .. 2023
|
||||
* Jan van Katwijk (J.vanKatwijk@gmail.com)
|
||||
* Lazy Chair Computing
|
||||
*
|
||||
* This file is part of the Qt-DAB program
|
||||
*
|
||||
* Qt-DAB is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Qt-DAB is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Qt-DAB; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <QComboBox>
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <QSettings>
|
||||
#include <QTableWidget>
|
||||
#include <QFile>
|
||||
#include <QtXml>
|
||||
#include <stdio.h>
|
||||
//
|
||||
// a simple convenience class
|
||||
//
|
||||
|
||||
typedef struct {
|
||||
QString key;
|
||||
int fKHz;
|
||||
bool skip;
|
||||
} dabFrequencies;
|
||||
|
||||
class bandHandler: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
bandHandler (const QString &, QSettings *);
|
||||
~bandHandler ();
|
||||
void saveSettings ();
|
||||
void setupChannels (QComboBox *s, uint8_t band);
|
||||
void setup_skipList (const QString &);
|
||||
int32_t Frequency (const QString &Channel);
|
||||
int16_t channelIndex (const QString &channel);
|
||||
int firstChannel ();
|
||||
int nextChannel (int);
|
||||
int prevChannel (int);
|
||||
void show ();
|
||||
void hide ();
|
||||
bool isHidden ();
|
||||
|
||||
public slots:
|
||||
void cellSelected (int, int);
|
||||
private:
|
||||
QSettings *dabSettings;
|
||||
QString fileName;
|
||||
int lastOf (dabFrequencies *);
|
||||
dabFrequencies *selectedBand;
|
||||
QTableWidget theTable;
|
||||
void default_skipList ();
|
||||
void file_skipList (const QString &);
|
||||
void updateEntry (const QString &);
|
||||
};
|
||||
|
@@ -1,966 +0,0 @@
|
||||
#
|
||||
#include <stdint.h>
|
||||
// generated map
|
||||
static uint8_t qt_map [] = {
|
||||
60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, 109, 108, 62,
|
||||
10, 10, 60, 104, 116, 109, 108, 62, 10, 32, 32, 60, 104, 101, 97,
|
||||
100, 62, 10, 32, 32, 32, 32, 60, 109, 101, 116, 97, 32, 110, 97,
|
||||
109, 101, 61, 34, 118, 105, 101, 119, 112, 111, 114, 116, 34, 32, 99,
|
||||
111, 110, 116, 101, 110, 116, 61, 34, 105, 110, 105, 116, 105, 97, 108,
|
||||
45, 115, 99, 97, 108, 101, 61, 49, 46, 48, 44, 32, 117, 115, 101,
|
||||
114, 45, 115, 99, 97, 108, 97, 98, 108, 101, 61, 110, 111, 34, 32,
|
||||
47, 62, 10, 32, 32, 32, 32, 32, 60, 108, 105, 110, 107, 32, 114,
|
||||
101, 108, 61, 34, 115, 116, 121, 108, 101, 115, 104, 101, 101, 116, 34,
|
||||
32, 104, 114, 101, 102, 61, 34, 104, 116, 116, 112, 115, 58, 47, 47,
|
||||
117, 110, 112, 107, 103, 46, 99, 111, 109, 47, 108, 101, 97, 102, 108,
|
||||
101, 116, 64, 49, 46, 54, 46, 48, 47, 100, 105, 115, 116, 47, 108,
|
||||
101, 97, 102, 108, 101, 116, 46, 99, 115, 115, 34, 32, 105, 110, 116,
|
||||
101, 103, 114, 105, 116, 121, 61, 34, 115, 104, 97, 53, 49, 50, 45,
|
||||
120, 119, 69, 47, 65, 122, 57, 122, 114, 106, 66, 73, 112, 104, 65,
|
||||
99, 66, 98, 51, 70, 54, 74, 86, 113, 120, 102, 52, 54, 43, 67,
|
||||
68, 76, 119, 102, 76, 77, 72, 108, 111, 78, 117, 54, 75, 69, 81,
|
||||
67, 65, 87, 105, 54, 72, 99, 68, 85, 98, 101, 79, 102, 66, 73,
|
||||
112, 116, 70, 55, 116, 99, 67, 122, 117, 115, 75, 70, 106, 70, 119,
|
||||
50, 121, 117, 118, 69, 112, 68, 76, 57, 119, 81, 61, 61, 34, 32,
|
||||
99, 114, 111, 115, 115, 111, 114, 105, 103, 105, 110, 61, 34, 34, 47,
|
||||
62, 10, 9, 60, 108, 105, 110, 107, 32, 114, 101, 108, 61, 34, 105,
|
||||
99, 111, 110, 34, 32, 104, 114, 101, 102, 61, 34, 100, 97, 116, 97,
|
||||
58, 44, 34, 62, 10, 9, 60, 115, 116, 121, 108, 101, 32, 116, 121,
|
||||
112, 101, 61, 34, 116, 101, 120, 116, 47, 99, 115, 115, 34, 62, 10,
|
||||
9, 32, 32, 32, 104, 116, 109, 108, 32, 123, 32, 104, 101, 105, 103,
|
||||
104, 116, 58, 32, 49, 48, 48, 37, 32, 125, 10, 9, 32, 32, 32,
|
||||
98, 111, 100, 121, 32, 123, 32, 104, 101, 105, 103, 104, 116, 58, 32,
|
||||
49, 48, 48, 37, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48,
|
||||
59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 32, 125, 10,
|
||||
9, 32, 32, 32, 46, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 45, 105, 99, 111, 110, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 112, 97, 100, 100, 105, 110, 103, 58, 48, 112, 120, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 109, 97, 114, 103, 105, 110, 58, 48, 112,
|
||||
120, 59, 10, 9, 32, 32, 32, 125, 10, 9, 32, 32, 32, 35, 109,
|
||||
97, 112, 95, 99, 97, 110, 118, 97, 115, 32, 123, 32, 104, 101, 105,
|
||||
103, 104, 116, 58, 32, 49, 48, 48, 37, 32, 125, 10, 9, 32, 32,
|
||||
32, 35, 105, 110, 102, 111, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 97, 98, 115, 111,
|
||||
108, 117, 116, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 119, 105,
|
||||
100, 116, 104, 58, 50, 48, 37, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 104, 101, 105, 103, 104, 116, 58, 49, 48, 48, 37, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 98, 111, 116, 116, 111, 109, 58, 48, 112,
|
||||
120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 114, 105, 103, 104, 116,
|
||||
58, 48, 112, 120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 116, 111,
|
||||
112, 58, 48, 112, 120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 98,
|
||||
97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114,
|
||||
58, 32, 119, 104, 105, 116, 101, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 98, 111, 114, 100, 101, 114, 45, 108, 101, 102, 116, 58, 49, 112,
|
||||
120, 32, 35, 54, 54, 54, 32, 115, 111, 108, 105, 100, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105,
|
||||
108, 121, 58, 72, 101, 108, 118, 101, 116, 105, 99, 97, 59, 10, 9,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 35, 105, 110, 102, 111, 32,
|
||||
100, 105, 118, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 112, 97,
|
||||
100, 100, 105, 110, 103, 58, 48, 112, 120, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 112, 97, 100, 100, 105, 110, 103, 45, 108, 101, 102, 116,
|
||||
58, 49, 48, 112, 120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 109,
|
||||
97, 114, 103, 105, 110, 58, 48, 112, 120, 59, 10, 9, 32, 32, 32,
|
||||
125, 10, 9, 32, 32, 32, 35, 105, 110, 102, 111, 32, 100, 105, 118,
|
||||
32, 104, 49, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 109, 97,
|
||||
114, 103, 105, 110, 45, 116, 111, 112, 58, 49, 48, 112, 120, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 115, 105, 122,
|
||||
101, 58, 49, 54, 112, 120, 59, 10, 9, 32, 32, 32, 125, 10, 9,
|
||||
32, 32, 32, 35, 105, 110, 102, 111, 32, 100, 105, 118, 32, 112, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 115,
|
||||
105, 122, 101, 58, 49, 52, 112, 120, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 99, 111, 108, 111, 114, 58, 35, 51, 51, 51, 59, 10, 9,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 46, 99, 111, 108, 111, 114,
|
||||
105, 110, 103, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 99, 111,
|
||||
108, 111, 114, 58, 32, 114, 101, 100, 10, 9, 32, 32, 32, 125, 10,
|
||||
9, 60, 47, 115, 116, 121, 108, 101, 62, 10, 10, 9, 60, 115, 99,
|
||||
114, 105, 112, 116, 32, 115, 114, 99, 61, 34, 104, 116, 116, 112, 115,
|
||||
58, 47, 47, 97, 106, 97, 120, 46, 103, 111, 111, 103, 108, 101, 97,
|
||||
112, 105, 115, 46, 99, 111, 109, 47, 97, 106, 97, 120, 47, 108, 105,
|
||||
98, 115, 47, 106, 113, 117, 101, 114, 121, 47, 51, 46, 52, 46, 49,
|
||||
47, 106, 113, 117, 101, 114, 121, 46, 109, 105, 110, 46, 106, 115, 34,
|
||||
62, 60, 47, 115, 99, 114, 105, 112, 116, 62, 10, 9, 60, 115, 99,
|
||||
114, 105, 112, 116, 32, 115, 114, 99, 61, 34, 104, 116, 116, 112, 115,
|
||||
58, 47, 47, 117, 110, 112, 107, 103, 46, 99, 111, 109, 47, 108, 101,
|
||||
97, 102, 108, 101, 116, 64, 49, 46, 54, 46, 48, 47, 100, 105, 115,
|
||||
116, 47, 108, 101, 97, 102, 108, 101, 116, 46, 106, 115, 34, 32, 105,
|
||||
110, 116, 101, 103, 114, 105, 116, 121, 61, 34, 115, 104, 97, 53, 49,
|
||||
50, 45, 103, 90, 119, 73, 71, 57, 120, 51, 119, 85, 88, 103, 50,
|
||||
104, 100, 88, 70, 54, 43, 114, 86, 107, 76, 70, 47, 48, 86, 105,
|
||||
57, 85, 56, 68, 50, 78, 116, 103, 52, 71, 97, 53, 73, 53, 66,
|
||||
90, 112, 86, 107, 86, 120, 108, 74, 87, 98, 83, 81, 116, 88, 80,
|
||||
83, 105, 85, 84, 116, 67, 48, 84, 106, 116, 71, 79, 109, 120, 97,
|
||||
49, 65, 74, 80, 117, 86, 48, 67, 80, 116, 104, 101, 119, 61, 61,
|
||||
34, 32, 99, 114, 111, 115, 115, 111, 114, 105, 103, 105, 110, 61, 34,
|
||||
34, 62, 60, 47, 115, 99, 114, 105, 112, 116, 62, 10, 9, 60, 115,
|
||||
99, 114, 105, 112, 116, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120,
|
||||
116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 34, 62, 10,
|
||||
9, 32, 32, 32, 77, 97, 112, 32, 61, 32, 110, 117, 108, 108, 59,
|
||||
10, 9, 32, 32, 32, 118, 97, 114, 32, 104, 111, 109, 101, 76, 97,
|
||||
116, 105, 116, 117, 100, 101, 32, 61, 32, 36, 59, 10, 9, 32, 32,
|
||||
32, 118, 97, 114, 32, 104, 111, 109, 101, 76, 111, 110, 103, 105, 116,
|
||||
117, 100, 101, 32, 61, 32, 36, 59, 10, 9, 32, 32, 32, 118, 97,
|
||||
114, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
61, 32, 123, 125, 59, 10, 9, 32, 32, 32, 118, 97, 114, 32, 116,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120,
|
||||
9, 61, 32, 48, 59, 10, 10, 9, 32, 32, 32, 99, 111, 110, 115,
|
||||
116, 32, 77, 65, 80, 95, 82, 69, 83, 69, 84, 9, 9, 61, 32,
|
||||
48, 59, 10, 9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 77, 65,
|
||||
80, 95, 70, 82, 65, 77, 69, 9, 9, 61, 32, 49, 59, 10, 9,
|
||||
32, 32, 32, 99, 111, 110, 115, 116, 32, 77, 65, 80, 95, 77, 65,
|
||||
88, 95, 84, 82, 65, 78, 83, 9, 9, 61, 32, 50, 59, 10, 9,
|
||||
32, 32, 32, 99, 111, 110, 115, 116, 32, 77, 65, 80, 95, 78, 79,
|
||||
82, 77, 95, 84, 82, 65, 78, 83, 32, 9, 61, 32, 52, 59, 10,
|
||||
9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 77, 65, 80, 95, 67,
|
||||
85, 82, 82, 69, 78, 84, 32, 9, 9, 61, 32, 56, 59, 10, 10,
|
||||
9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 73, 67, 79, 78, 95,
|
||||
79, 84, 72, 69, 82, 70, 82, 65, 77, 69, 9, 61, 32, 48, 59,
|
||||
10, 9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 73, 67, 79, 78,
|
||||
95, 70, 85, 82, 84, 72, 69, 83, 84, 9, 9, 61, 32, 49, 59,
|
||||
10, 9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 73, 67, 79, 78,
|
||||
95, 84, 79, 80, 70, 82, 65, 77, 69, 9, 9, 61, 32, 50, 59,
|
||||
10, 9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 73, 67, 79, 78,
|
||||
95, 67, 85, 82, 82, 69, 78, 84, 9, 9, 61, 32, 51, 59, 10,
|
||||
10, 9, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103,
|
||||
101, 116, 73, 99, 111, 110, 70, 111, 114, 72, 111, 109, 101, 32, 40,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32,
|
||||
104, 101, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32,
|
||||
99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 32, 40,
|
||||
34, 80, 34, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 104, 101,
|
||||
46, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 39, 42,
|
||||
39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 115,
|
||||
101, 108, 104, 116, 109, 108, 32, 61, 32, 39, 39, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 104, 101, 32, 61, 32, 39, 60, 100, 105, 118,
|
||||
32, 115, 116, 121, 108, 101, 61, 34, 102, 111, 110, 116, 45, 115, 105,
|
||||
122, 101, 58, 49, 114, 101, 109, 34, 62, 38, 35, 120, 50, 66, 53,
|
||||
53, 60, 47, 100, 105, 118, 62, 39, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 118, 97, 114, 32, 105, 99, 111, 110, 32, 61, 32, 76, 46,
|
||||
100, 105, 118, 73, 99, 111, 110, 32, 40, 123, 104, 116, 109, 108, 58,
|
||||
32, 104, 101, 44, 32, 99, 108, 97, 115, 115, 78, 97, 109, 101, 58,
|
||||
32, 39, 104, 111, 109, 101, 45, 105, 99, 111, 110, 39, 125, 41, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32,
|
||||
105, 99, 111, 110, 59, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32,
|
||||
32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 73,
|
||||
99, 111, 110, 70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 32, 40, 107, 101, 121, 41, 32, 123, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 118, 97, 114, 32, 104, 101, 32, 61, 32, 100, 111, 99,
|
||||
117, 109, 101, 110, 116, 46, 32, 99, 114, 101, 97, 116, 101, 69, 108,
|
||||
101, 109, 101, 110, 116, 32, 40, 34, 80, 34, 41, 59, 10, 47, 47,
|
||||
9, 32, 32, 32, 32, 32, 32, 104, 101, 46, 105, 110, 110, 101, 114,
|
||||
72, 84, 77, 76, 32, 61, 32, 39, 42, 39, 59, 10, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 101, 108, 104, 116, 109,
|
||||
108, 32, 61, 32, 39, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
105, 102, 32, 40, 107, 101, 121, 32, 61, 61, 32, 73, 67, 79, 78,
|
||||
95, 79, 84, 72, 69, 82, 70, 82, 65, 77, 69, 41, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 104, 101, 32, 61, 32, 39, 60,
|
||||
100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, 102, 111, 110, 116,
|
||||
45, 115, 105, 122, 101, 32, 58, 49, 46, 53, 114, 101, 109, 59, 34,
|
||||
62, 32, 38, 35, 120, 49, 70, 52, 67, 67, 60, 47, 100, 105, 118,
|
||||
62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 107, 101, 121,
|
||||
32, 61, 61, 32, 73, 67, 79, 78, 95, 70, 85, 82, 84, 72, 69,
|
||||
83, 84, 41, 10, 47, 47, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 104, 101, 32, 61, 32, 39, 60, 100, 105, 118, 32, 115, 116, 121,
|
||||
108, 101, 61, 34, 102, 111, 110, 116, 45, 115, 105, 122, 101, 32, 58,
|
||||
49, 46, 50, 114, 101, 109, 34, 62, 32, 38, 35, 120, 240, 159, 143,
|
||||
129, 60, 47, 100, 105, 118, 62, 39, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 104, 101, 32, 61, 32, 39, 60, 100, 105, 118,
|
||||
32, 115, 116, 121, 108, 101, 61, 34, 102, 111, 110, 116, 45, 115, 105,
|
||||
122, 101, 32, 58, 49, 46, 52, 114, 101, 109, 34, 62, 32, 38, 35,
|
||||
120, 49, 70, 51, 67, 49, 60, 47, 100, 105, 118, 62, 39, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 105, 102, 32, 40, 107, 101, 121, 32, 61, 61, 32,
|
||||
73, 67, 79, 78, 95, 84, 79, 80, 70, 82, 65, 77, 69, 41, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 101, 32, 61, 32,
|
||||
39, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, 102, 111,
|
||||
110, 116, 45, 115, 105, 122, 101, 32, 58, 48, 46, 55, 114, 101, 109,
|
||||
59, 34, 62, 32, 38, 35, 120, 50, 54, 65, 66, 60, 47, 100, 105,
|
||||
118, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 101, 108, 115,
|
||||
101, 9, 47, 47, 32, 73, 67, 79, 78, 95, 67, 85, 82, 82, 69,
|
||||
78, 84, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 101,
|
||||
32, 61, 32, 39, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, 61,
|
||||
34, 102, 111, 110, 116, 45, 115, 105, 122, 101, 32, 58, 49, 46, 52,
|
||||
114, 101, 109, 59, 34, 62, 32, 38, 35, 120, 49, 70, 54, 65, 57,
|
||||
60, 47, 100, 105, 118, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 10, 9, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 105, 99,
|
||||
111, 110, 32, 61, 32, 76, 46, 100, 105, 118, 73, 99, 111, 110, 32,
|
||||
40, 123, 104, 116, 109, 108, 58, 32, 104, 101, 44, 32, 99, 108, 97,
|
||||
115, 115, 78, 97, 109, 101, 58, 32, 39, 116, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 45, 105, 99, 111, 110, 39, 125, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 105,
|
||||
99, 111, 110, 59, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32,
|
||||
32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 97, 110, 100, 108,
|
||||
101, 95, 109, 97, 112, 95, 114, 101, 115, 101, 116, 32, 40, 41, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118,
|
||||
97, 114, 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 116,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120,
|
||||
59, 32, 105, 32, 43, 43, 41, 32, 123, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 77, 97, 112, 46, 32, 114, 101, 109, 111, 118,
|
||||
101, 76, 97, 121, 101, 114, 32, 40, 84, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 109, 97, 114, 107,
|
||||
101, 114, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
100, 101, 108, 101, 116, 101, 32, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 105, 93, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 125, 10, 10, 9, 32, 32, 32, 32, 32, 32, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 61, 32, 123, 125, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 116, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 73, 110, 100, 101, 120, 32, 61, 32, 48, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 120, 120, 32, 61,
|
||||
32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116, 69,
|
||||
108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 115, 101,
|
||||
108, 105, 110, 102, 111, 39, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 120, 120, 32, 46, 32, 105, 110, 110, 101, 114, 72, 84, 77, 76,
|
||||
32, 61, 32, 39, 32, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
108, 101, 116, 32, 121, 121, 32, 61, 32, 100, 111, 99, 117, 109, 101,
|
||||
110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66,
|
||||
121, 73, 100, 32, 40, 39, 115, 101, 108, 67, 111, 117, 110, 116, 39,
|
||||
41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 121, 121, 46, 32, 105,
|
||||
110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39,
|
||||
110, 117, 109, 98, 101, 114, 32, 111, 102, 32, 116, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 115, 32, 39, 32, 43, 32, 116, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 122, 122, 32, 61,
|
||||
32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116, 69,
|
||||
108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 100, 105,
|
||||
115, 116, 97, 110, 99, 101, 39, 41, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 122, 122, 46, 32, 105, 110, 110, 101, 114, 72, 84, 77, 76,
|
||||
32, 61, 32, 39, 39, 59, 10, 9, 32, 32, 32, 125, 10, 47, 47,
|
||||
10, 47, 47, 9, 119, 104, 101, 110, 32, 101, 110, 116, 101, 114, 105,
|
||||
110, 103, 32, 97, 32, 110, 101, 119, 32, 99, 104, 97, 110, 110, 101,
|
||||
108, 44, 32, 119, 104, 105, 108, 101, 32, 109, 97, 105, 110, 116, 97,
|
||||
105, 110, 105, 110, 103, 32, 97, 108, 108, 10, 47, 47, 9, 101, 108,
|
||||
101, 109, 101, 110, 116, 115, 32, 111, 110, 32, 116, 104, 101, 32, 109,
|
||||
97, 112, 44, 32, 109, 97, 107, 101, 32, 116, 104, 101, 32, 101, 108,
|
||||
101, 109, 101, 110, 116, 115, 32, 100, 105, 102, 102, 101, 114, 101, 110,
|
||||
116, 10, 47, 47, 9, 97, 110, 100, 32, 114, 101, 99, 111, 114, 100,
|
||||
32, 116, 104, 97, 116, 32, 116, 104, 101, 32, 101, 108, 101, 109, 101,
|
||||
110, 116, 115, 32, 97, 114, 101, 32, 110, 111, 116, 32, 105, 110, 32,
|
||||
116, 104, 101, 32, 99, 117, 114, 114, 101, 110, 116, 32, 102, 114, 97,
|
||||
109, 101, 32, 97, 110, 121, 109, 111, 114, 101, 10, 9, 32, 32, 32,
|
||||
102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 97, 110, 100, 108, 101,
|
||||
95, 109, 97, 112, 95, 102, 114, 97, 109, 101, 32, 40, 41, 32, 123,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97,
|
||||
114, 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 116, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 59,
|
||||
32, 105, 32, 43, 43, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 105, 102, 32, 40, 84, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 115, 116, 97, 116,
|
||||
117, 115, 32, 61, 61, 32, 116, 114, 117, 101, 41, 32, 123, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32,
|
||||
115, 116, 97, 116, 117, 115, 32, 61, 32, 102, 97, 108, 115, 101, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93,
|
||||
46, 32, 99, 117, 114, 114, 101, 110, 116, 32, 61, 32, 102, 97, 108,
|
||||
115, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 105, 102, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 115, 32, 91, 105, 93, 46, 32, 102, 117, 114, 116, 104, 101,
|
||||
115, 116, 41, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 105, 110, 117, 101, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 77,
|
||||
97, 112, 46, 32, 114, 101, 109, 111, 118, 101, 76, 97, 121, 101, 114,
|
||||
32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
91, 105, 93, 46, 32, 109, 97, 114, 107, 101, 114, 41, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116,
|
||||
32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116, 73, 99, 111, 110,
|
||||
70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 32,
|
||||
40, 73, 67, 79, 78, 95, 79, 84, 72, 69, 82, 70, 82, 65, 77,
|
||||
69, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 101, 108, 101, 109, 101, 110, 116, 32, 61,
|
||||
32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91,
|
||||
105, 93, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97,
|
||||
114, 107, 101, 114, 32, 61, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 76, 46, 109, 97, 114, 107, 101, 114, 32, 40, 91, 101, 108,
|
||||
101, 109, 101, 110, 116, 46, 108, 97, 116, 44, 32, 101, 108, 101, 109,
|
||||
101, 110, 116, 46, 108, 111, 110, 93, 44, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
123, 105, 99, 111, 110, 58, 32, 105, 99, 111, 110, 125, 41, 46, 97,
|
||||
100, 100, 84, 111, 40, 77, 97, 112, 41, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 101, 109, 101, 110,
|
||||
116, 77, 97, 114, 107, 101, 114, 46, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 97, 100, 100, 69, 118, 101, 110, 116, 76, 105, 115, 116,
|
||||
101, 110, 101, 114, 32, 40, 39, 99, 108, 105, 99, 107, 39, 44, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 117, 110, 99, 116,
|
||||
105, 111, 110, 32, 40, 41, 32, 123, 32, 115, 101, 108, 101, 99, 116,
|
||||
84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 67, 97, 108, 108,
|
||||
98, 97, 99, 107, 32, 40, 101, 108, 101, 109, 101, 110, 116, 41, 59,
|
||||
125, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
91, 105, 93, 46, 32, 109, 97, 114, 107, 101, 114, 32, 61, 32, 101,
|
||||
108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32,
|
||||
32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 101, 110, 65,
|
||||
108, 114, 101, 97, 100, 121, 32, 40, 116, 97, 114, 103, 101, 116, 41,
|
||||
32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40,
|
||||
118, 97, 114, 32, 106, 32, 61, 32, 48, 59, 32, 106, 32, 60, 32,
|
||||
116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101,
|
||||
120, 59, 32, 106, 32, 43, 43, 41, 32, 123, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 40, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 46, 32, 108,
|
||||
97, 116, 32, 61, 61, 32, 116, 97, 114, 103, 101, 116, 46, 32, 108,
|
||||
97, 116, 41, 32, 38, 38, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 106, 93, 46, 32, 108, 111, 110, 32, 61,
|
||||
61, 32, 116, 97, 114, 103, 101, 116, 46, 32, 108, 111, 110, 41, 32,
|
||||
38, 38, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 106, 93, 46, 32, 99, 104, 97, 110, 110, 101, 108, 32, 61,
|
||||
61, 32, 116, 97, 114, 103, 101, 116, 46, 32, 99, 104, 97, 110, 110,
|
||||
101, 108, 41, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110,
|
||||
32, 116, 114, 117, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 97, 108,
|
||||
115, 101, 59, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32,
|
||||
102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 108, 101, 97, 114, 80,
|
||||
114, 101, 118, 105, 111, 117, 115, 70, 117, 114, 116, 104, 101, 115, 116,
|
||||
32, 40, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 111,
|
||||
114, 32, 40, 118, 97, 114, 32, 105, 32, 61, 32, 48, 59, 32, 105,
|
||||
32, 60, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73,
|
||||
110, 100, 101, 120, 59, 32, 105, 32, 43, 43, 41, 32, 123, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46,
|
||||
32, 102, 117, 114, 116, 104, 101, 115, 116, 32, 61, 61, 32, 116, 114,
|
||||
117, 101, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114,
|
||||
115, 32, 91, 105, 93, 46, 32, 102, 117, 114, 116, 104, 101, 115, 116,
|
||||
32, 61, 32, 102, 97, 108, 115, 101, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 77, 97, 112, 46, 32, 114, 101,
|
||||
109, 111, 118, 101, 76, 97, 121, 101, 114, 32, 40, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 109,
|
||||
97, 114, 107, 101, 114, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 109, 112, 32, 61,
|
||||
32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91,
|
||||
105, 93, 46, 32, 99, 117, 114, 114, 101, 110, 116, 32, 63, 32, 73,
|
||||
67, 79, 78, 95, 84, 79, 80, 70, 82, 65, 77, 69, 32, 58, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 73, 67, 79, 78, 95, 79, 84, 72, 69,
|
||||
82, 70, 82, 65, 77, 69, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 105, 99, 111, 110, 32,
|
||||
61, 32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 116, 109, 112, 41, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108,
|
||||
101, 116, 32, 101, 108, 101, 109, 101, 110, 116, 32, 61, 32, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108,
|
||||
101, 116, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101,
|
||||
114, 32, 61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 46, 109, 97, 114,
|
||||
107, 101, 114, 32, 40, 91, 101, 108, 101, 109, 101, 110, 116, 46, 108,
|
||||
97, 116, 44, 32, 101, 108, 101, 109, 101, 110, 116, 46, 108, 111, 110,
|
||||
93, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 123, 105, 99, 111, 110, 58, 32, 105, 99, 111, 110,
|
||||
125, 41, 46, 97, 100, 100, 84, 111, 40, 77, 97, 112, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108,
|
||||
101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 46, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 97, 100, 100, 69, 118, 101, 110, 116, 76, 105, 115,
|
||||
116, 101, 110, 101, 114, 32, 40, 39, 99, 108, 105, 99, 107, 39, 44,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 117, 110, 99,
|
||||
116, 105, 111, 110, 32, 40, 41, 32, 123, 32, 115, 101, 108, 101, 99,
|
||||
116, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 67, 97, 108,
|
||||
108, 98, 97, 99, 107, 32, 40, 101, 108, 101, 109, 101, 110, 116, 41,
|
||||
59, 125, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 105, 93, 46, 32, 109, 97, 114, 107, 101, 114, 32, 61, 32,
|
||||
101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101,
|
||||
116, 117, 114, 110, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32,
|
||||
32, 125, 10, 9, 32, 32, 32, 10, 9, 32, 32, 32, 102, 117, 110,
|
||||
99, 116, 105, 111, 110, 32, 115, 104, 111, 119, 84, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 65, 116, 83, 105, 100, 101, 66, 97, 114,
|
||||
32, 40, 116, 97, 114, 103, 101, 116, 44, 32, 102, 105, 114, 115, 116,
|
||||
79, 110, 101, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 108,
|
||||
101, 116, 32, 110, 101, 119, 67, 104, 97, 110, 110, 101, 108, 32, 61,
|
||||
32, 39, 60, 115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92,
|
||||
34, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111,
|
||||
108, 100, 59, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 50,
|
||||
48, 37, 92, 34, 62, 39, 32, 43, 32, 116, 97, 114, 103, 101, 116,
|
||||
46, 32, 99, 104, 97, 110, 110, 101, 108, 32, 43, 32, 39, 60, 47,
|
||||
115, 112, 97, 110, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
108, 101, 116, 32, 99, 111, 111, 114, 100, 115, 32, 61, 32, 39, 60,
|
||||
115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111,
|
||||
110, 116, 45, 115, 116, 121, 108, 101, 58, 32, 105, 116, 97, 108, 105,
|
||||
99, 59, 92, 34, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 108,
|
||||
97, 116, 32, 43, 32, 39, 32, 39, 32, 43, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46,
|
||||
32, 108, 111, 110, 32, 43, 32, 32, 39, 60, 47, 115, 112, 97, 110,
|
||||
62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32,
|
||||
120, 120, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32,
|
||||
103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32,
|
||||
40, 39, 115, 101, 108, 105, 110, 102, 111, 39, 41, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 105, 102, 32, 40, 102, 105, 114, 115, 116, 79,
|
||||
110, 101, 41, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 120,
|
||||
120, 46, 32, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 39, 60, 115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92,
|
||||
34, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111,
|
||||
108, 100, 59, 34, 62, 39, 32, 43, 32, 39, 84, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 115, 32, 60, 98, 114, 62, 39, 32, 43,
|
||||
32, 39, 60, 47, 115, 112, 97, 110, 62, 39, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 120, 120, 46, 32, 105, 110, 110, 101, 114, 72, 84,
|
||||
77, 76, 32, 43, 61, 32, 110, 101, 119, 67, 104, 97, 110, 110, 101,
|
||||
108, 32, 43, 32, 39, 61, 62, 39, 32, 43, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 110, 97,
|
||||
109, 101, 32, 43, 32, 39, 32, 40, 39, 32, 43, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32,
|
||||
112, 111, 119, 101, 114, 47, 32, 49, 48, 48, 46, 48, 41, 46, 116,
|
||||
111, 70, 105, 120, 101, 100, 32, 40, 50, 41, 32, 43, 32, 39, 32,
|
||||
107, 87, 41, 39, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101,
|
||||
116, 46, 32, 100, 97, 116, 101, 84, 105, 109, 101, 32, 43, 32, 39,
|
||||
60, 98, 114, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 99, 111, 111, 114, 100, 115, 32, 43, 32, 39, 60, 98, 114,
|
||||
62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39,
|
||||
68, 105, 115, 116, 97, 110, 99, 101, 32, 116, 111, 32, 104, 111, 109,
|
||||
101, 32, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 100, 105, 115, 116, 32, 43, 32, 39, 107, 109, 32,
|
||||
39, 32, 43, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116,
|
||||
97, 114, 103, 101, 116, 46, 32, 97, 122, 105, 109, 117, 116, 104, 32,
|
||||
43, 32, 39, 38, 35, 120, 98, 48, 39, 32, 43, 32, 39, 60, 98,
|
||||
114, 62, 60, 98, 114, 62, 39, 59, 10, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 121, 121, 32, 61, 32, 100, 111, 99, 117,
|
||||
109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110,
|
||||
116, 66, 121, 73, 100, 32, 40, 39, 115, 101, 108, 67, 111, 117, 110,
|
||||
116, 39, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 121, 121, 46,
|
||||
32, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 39, 60,
|
||||
115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111,
|
||||
110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59,
|
||||
34, 62, 39, 32, 43, 32, 39, 78, 117, 109, 98, 101, 114, 32, 111,
|
||||
102, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 39,
|
||||
32, 43, 32, 39, 60, 47, 115, 112, 97, 110, 62, 39, 32, 43, 32,
|
||||
39, 32, 39, 32, 43, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 73, 110, 100, 101, 120, 32, 43, 32, 39, 60, 98, 114, 62,
|
||||
39, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 105, 102, 32, 32,
|
||||
40, 116, 97, 114, 103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61,
|
||||
61, 32, 77, 65, 80, 95, 77, 65, 88, 95, 84, 82, 65, 78, 83,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108,
|
||||
101, 116, 32, 97, 97, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110,
|
||||
116, 46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121,
|
||||
73, 100, 32, 40, 39, 100, 105, 115, 116, 97, 110, 99, 101, 39, 41,
|
||||
59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 97, 46,
|
||||
32, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 32, 61, 32, 39,
|
||||
60, 115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102,
|
||||
111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100,
|
||||
59, 34, 62, 39, 32, 43, 32, 39, 70, 117, 114, 116, 104, 101, 115,
|
||||
116, 32, 100, 105, 115, 116, 97, 110, 99, 101, 32, 98, 121, 32, 60,
|
||||
98, 114, 62, 39, 32, 43, 32, 39, 60, 47, 115, 112, 97, 110, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 99, 104, 97, 110, 110, 101, 108, 32, 43,
|
||||
32, 39, 61, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32,
|
||||
32, 43, 32, 39, 32, 40, 39, 32, 43, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32, 112, 111,
|
||||
119, 101, 114, 32, 47, 32, 49, 48, 48, 46, 48, 41, 46, 32, 116,
|
||||
111, 70, 105, 120, 101, 100, 32, 40, 50, 41, 32, 43, 32, 39, 32,
|
||||
107, 87, 41, 39, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101,
|
||||
116, 46, 32, 100, 97, 116, 101, 84, 105, 109, 101, 32, 43, 32, 39,
|
||||
60, 98, 114, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 99, 111, 111, 114, 100, 115, 32, 43, 32, 39, 60, 98, 114,
|
||||
62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39,
|
||||
68, 105, 115, 116, 97, 110, 99, 101, 32, 116, 111, 32, 104, 111, 109,
|
||||
101, 32, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 100, 105, 115, 116, 32, 43, 32,
|
||||
39, 107, 109, 32, 39, 32, 43, 32, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 97, 122, 105, 109,
|
||||
117, 116, 104, 32, 43, 32, 39, 38, 35, 120, 98, 48, 39, 32, 43,
|
||||
32, 39, 60, 98, 114, 62, 60, 98, 114, 62, 39, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32,
|
||||
32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 100, 100, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 116, 97, 114, 103,
|
||||
101, 116, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101,
|
||||
116, 32, 102, 105, 114, 115, 116, 79, 110, 101, 32, 61, 32, 116, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 32,
|
||||
61, 61, 32, 48, 59, 10, 9, 32, 32, 32, 32, 32, 32, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 32,
|
||||
61, 32, 116, 97, 114, 103, 101, 116, 46, 32, 116, 121, 112, 101, 32,
|
||||
61, 61, 32, 77, 65, 80, 95, 77, 65, 88, 95, 84, 82, 65, 78,
|
||||
83, 59, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 105,
|
||||
99, 111, 110, 32, 61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114,
|
||||
84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 32,
|
||||
63, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73,
|
||||
67, 79, 78, 95, 70, 85, 82, 84, 72, 69, 83, 84, 32, 58, 32,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 67,
|
||||
79, 78, 95, 67, 85, 82, 82, 69, 78, 84, 41, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116,
|
||||
77, 97, 114, 107, 101, 114, 32, 61, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
76, 46, 32, 109, 97, 114, 107, 101, 114, 40, 91, 116, 97, 114, 103,
|
||||
101, 116, 46, 108, 97, 116, 44, 32, 116, 97, 114, 103, 101, 116, 46,
|
||||
108, 111, 110, 93, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 123, 105, 99, 111, 110, 58, 32, 105,
|
||||
99, 111, 110, 125, 41, 32, 46, 97, 100, 100, 84, 111, 40, 77, 97,
|
||||
112, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 109, 97, 114, 107, 101, 114, 32, 61, 32, 116, 97,
|
||||
114, 103, 101, 116, 77, 97, 114, 107, 101, 114, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 115, 116, 97,
|
||||
116, 117, 115, 32, 61, 32, 116, 114, 117, 101, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 99, 117, 114,
|
||||
114, 101, 110, 116, 32, 61, 32, 116, 114, 117, 101, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 109, 97,
|
||||
114, 107, 101, 114, 46, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 100, 100, 69, 118, 101,
|
||||
110, 116, 76, 105, 115, 116, 101, 110, 101, 114, 32, 40, 39, 99, 108,
|
||||
105, 99, 107, 39, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 117,
|
||||
110, 99, 116, 105, 111, 110, 32, 40, 41, 32, 123, 32, 115, 101, 108,
|
||||
101, 99, 116, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 67,
|
||||
97, 108, 108, 98, 97, 99, 107, 32, 40, 116, 97, 114, 103, 101, 116,
|
||||
41, 59, 125, 41, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 116, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 93,
|
||||
32, 61, 32, 116, 97, 114, 103, 101, 116, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73,
|
||||
110, 100, 101, 120, 32, 43, 43, 59, 10, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 120, 120, 32, 61, 32, 100, 111, 99, 117,
|
||||
109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110,
|
||||
116, 66, 121, 73, 100, 32, 40, 39, 116, 101, 115, 116, 105, 110, 103,
|
||||
39, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 120, 120, 46, 32,
|
||||
105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 60,
|
||||
115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111,
|
||||
110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59,
|
||||
34, 62, 39, 32, 43, 32, 39, 67, 117, 114, 114, 101, 110, 116, 32,
|
||||
58, 32, 39, 32, 43, 32, 116, 97, 114, 103, 101, 116, 46, 32, 110,
|
||||
97, 109, 101, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 32,
|
||||
39, 60, 47, 115, 112, 97, 110, 62, 39, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 115, 104, 111, 119, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 65, 116, 83, 105, 100, 101, 66, 97, 114, 32, 40, 116,
|
||||
97, 114, 103, 101, 116, 44, 32, 102, 105, 114, 115, 116, 79, 110, 101,
|
||||
41, 59, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102,
|
||||
117, 110, 99, 116, 105, 111, 110, 32, 99, 108, 101, 97, 114, 67, 117,
|
||||
114, 114, 101, 110, 116, 32, 40, 41, 32, 123, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, 32, 61,
|
||||
32, 48, 59, 32, 105, 32, 60, 32, 116, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 73, 110, 100, 101, 120, 59, 32, 105, 32, 43, 43,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105,
|
||||
102, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 105, 93, 46, 32, 99, 117, 114, 114, 101, 110, 116, 41, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105,
|
||||
93, 46, 32, 99, 117, 114, 114, 101, 110, 116, 32, 61, 32, 102, 97,
|
||||
108, 115, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 105, 102, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 102, 117, 114, 116, 104,
|
||||
101, 115, 116, 41, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 98, 114, 101, 97, 107, 59, 9, 47, 47,
|
||||
32, 104, 97, 100, 32, 110, 111, 32, 34, 99, 117, 114, 114, 101, 110,
|
||||
116, 34, 32, 105, 99, 111, 110, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 77, 97, 112, 46, 32, 114, 101, 109, 111,
|
||||
118, 101, 76, 97, 121, 101, 114, 32, 40, 84, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 109, 97, 114,
|
||||
107, 101, 114, 41, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 118, 97, 114, 32, 105, 99, 111, 110, 32, 61,
|
||||
32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 32, 40, 73, 67, 79, 78, 95, 67,
|
||||
85, 82, 82, 69, 78, 84, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 102,
|
||||
117, 114, 116, 104, 101, 115, 116, 41, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 99, 111, 110, 32,
|
||||
61, 32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 73, 67, 79, 78, 95,
|
||||
70, 85, 82, 84, 72, 69, 83, 84, 41, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32,
|
||||
40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91,
|
||||
105, 93, 46, 32, 115, 116, 97, 116, 117, 115, 41, 9, 47, 47, 32,
|
||||
99, 117, 114, 114, 101, 110, 116, 32, 102, 114, 97, 109, 101, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
105, 99, 111, 110, 32, 61, 32, 103, 101, 116, 73, 99, 111, 110, 70,
|
||||
111, 114, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 32, 40,
|
||||
73, 67, 79, 78, 95, 84, 79, 80, 70, 82, 65, 77, 69, 41, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101,
|
||||
108, 115, 101, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116,
|
||||
73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 32, 40, 73, 67, 79, 78, 95, 79, 84, 72, 69, 82,
|
||||
70, 82, 65, 77, 69, 41, 59, 10, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 108, 101, 109,
|
||||
101, 110, 116, 32, 61, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 115, 32, 91, 105, 93, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 108, 101, 109,
|
||||
101, 110, 116, 77, 97, 114, 107, 101, 114, 32, 61, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 76, 46, 109, 97, 114, 107, 101, 114, 32, 40, 91, 101,
|
||||
108, 101, 109, 101, 110, 116, 46, 108, 97, 116, 44, 32, 101, 108, 101,
|
||||
109, 101, 110, 116, 46, 108, 111, 110, 93, 44, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 105, 99,
|
||||
111, 110, 58, 32, 105, 99, 111, 110, 125, 41, 46, 97, 100, 100, 84,
|
||||
111, 40, 77, 97, 112, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97,
|
||||
114, 107, 101, 114, 46, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 100, 100,
|
||||
69, 118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, 114, 32, 40,
|
||||
39, 99, 108, 105, 99, 107, 39, 44, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40, 41,
|
||||
32, 123, 32, 115, 101, 108, 101, 99, 116, 84, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 67, 97, 108, 108, 98, 97, 99, 107, 32, 40,
|
||||
101, 108, 101, 109, 101, 110, 116, 41, 59, 125, 41, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 109,
|
||||
97, 114, 107, 101, 114, 32, 61, 32, 101, 108, 101, 109, 101, 110, 116,
|
||||
77, 97, 114, 107, 101, 114, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 98, 114, 101, 97, 107, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 125, 10, 9, 32, 32, 32, 125, 10, 47, 47, 9, 116, 104,
|
||||
101, 32, 67, 85, 82, 82, 69, 78, 84, 32, 99, 104, 97, 110, 103,
|
||||
101, 100, 44, 32, 115, 111, 32, 119, 101, 32, 104, 97, 118, 101, 32,
|
||||
116, 111, 32, 114, 101, 115, 116, 111, 114, 101, 32, 116, 104, 101, 32,
|
||||
111, 108, 100, 10, 47, 47, 9, 109, 97, 114, 107, 101, 114, 32, 102,
|
||||
111, 114, 32, 116, 104, 101, 32, 112, 114, 101, 118, 105, 111, 117, 115,
|
||||
32, 99, 117, 114, 114, 101, 110, 116, 32, 45, 32, 105, 102, 32, 97,
|
||||
110, 121, 32, 45, 32, 116, 104, 97, 116, 32, 105, 115, 10, 47, 47,
|
||||
9, 115, 108, 105, 103, 104, 116, 108, 121, 32, 99, 111, 109, 112, 108,
|
||||
105, 99, 97, 116, 101, 100, 32, 115, 105, 110, 99, 101, 32, 116, 104,
|
||||
101, 114, 101, 32, 97, 114, 101, 32, 115, 101, 118, 101, 114, 97, 108,
|
||||
32, 111, 112, 116, 105, 111, 110, 115, 10, 9, 32, 32, 32, 102, 117,
|
||||
110, 99, 116, 105, 111, 110, 32, 117, 112, 100, 97, 116, 101, 67, 117,
|
||||
114, 114, 101, 110, 116, 32, 40, 116, 97, 114, 103, 101, 116, 41, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118,
|
||||
97, 114, 32, 106, 32, 61, 32, 48, 59, 32, 106, 32, 60, 32, 116,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120,
|
||||
59, 32, 106, 32, 43, 43, 41, 32, 123, 10, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32,
|
||||
40, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
91, 106, 93, 46, 32, 108, 97, 116, 32, 61, 61, 32, 116, 97, 114,
|
||||
103, 101, 116, 46, 32, 108, 97, 116, 41, 32, 38, 38, 10, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 115, 32, 91, 106, 93, 46, 32, 108, 111, 110, 32, 61, 61, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 108, 111, 110, 41, 32, 38, 38,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91,
|
||||
106, 93, 46, 32, 99, 104, 97, 110, 110, 101, 108, 32, 61, 61, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 99, 104, 97, 110, 110, 101, 108,
|
||||
41, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 106, 93, 46, 32, 99, 117, 114, 114, 101, 110, 116, 32, 61,
|
||||
32, 116, 114, 117, 101, 59, 10, 47, 47, 10, 47, 47, 9, 114, 101,
|
||||
99, 97, 108, 108, 32, 116, 104, 97, 116, 32, 34, 102, 117, 114, 116,
|
||||
104, 101, 115, 116, 34, 32, 112, 111, 115, 105, 116, 105, 111, 110, 115,
|
||||
32, 100, 111, 32, 110, 111, 116, 32, 115, 104, 111, 119, 32, 97, 32,
|
||||
34, 99, 117, 114, 114, 101, 110, 116, 34, 32, 105, 99, 111, 110, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102,
|
||||
32, 40, 33, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 106, 93, 46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 41,
|
||||
32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 77, 97, 112, 46, 32, 114, 101, 109, 111, 118, 101,
|
||||
76, 97, 121, 101, 114, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 106, 93, 46, 32, 109, 97, 114, 107, 101,
|
||||
114, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 118, 97, 114, 32, 105, 99, 111, 110, 32, 61,
|
||||
32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 32, 40, 73, 67, 79, 78, 95, 67,
|
||||
85, 82, 82, 69, 78, 84, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101,
|
||||
108, 101, 109, 101, 110, 116, 32, 61, 32, 84, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116,
|
||||
32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 32,
|
||||
61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 46, 109, 97,
|
||||
114, 107, 101, 114, 32, 40, 91, 101, 108, 101, 109, 101, 110, 116, 46,
|
||||
108, 97, 116, 44, 32, 101, 108, 101, 109, 101, 110, 116, 46, 108, 111,
|
||||
110, 93, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 123, 105, 99, 111, 110, 58, 32, 105, 99, 111,
|
||||
110, 125, 41, 46, 97, 100, 100, 84, 111, 40, 77, 97, 112, 41, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114,
|
||||
46, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 100, 100, 69,
|
||||
118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, 114, 32, 40, 39,
|
||||
99, 108, 105, 99, 107, 39, 44, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40, 41, 32,
|
||||
123, 32, 115, 101, 108, 101, 99, 116, 84, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 67, 97, 108, 108, 98, 97, 99, 107, 32, 40, 101,
|
||||
108, 101, 109, 101, 110, 116, 41, 59, 125, 41, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 46,
|
||||
32, 109, 97, 114, 107, 101, 114, 32, 61, 32, 101, 108, 101, 109, 101,
|
||||
110, 116, 77, 97, 114, 107, 101, 114, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 120, 120, 32,
|
||||
61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116,
|
||||
69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 116,
|
||||
101, 115, 116, 105, 110, 103, 39, 41, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 120, 120, 46, 32, 105, 110, 110,
|
||||
101, 114, 72, 84, 77, 76, 32, 61, 32, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 60, 115, 112, 97,
|
||||
110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45,
|
||||
119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59, 34, 62, 39,
|
||||
32, 43, 32, 39, 67, 117, 114, 114, 101, 110, 116, 32, 58, 32, 39,
|
||||
32, 43, 32, 116, 97, 114, 103, 101, 116, 46, 32, 110, 97, 109, 101,
|
||||
32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 32, 39, 60, 47,
|
||||
115, 112, 97, 110, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 98, 114, 101, 97, 107, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 125, 10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32,
|
||||
102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 101, 116, 99, 104, 68,
|
||||
97, 116, 97, 32, 40, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 36, 46, 103, 101, 116, 74, 83, 79, 78, 32, 40, 39, 47, 100,
|
||||
97, 116, 97, 46, 106, 115, 111, 110, 39, 44, 32, 102, 117, 110, 99,
|
||||
116, 105, 111, 110, 32, 40, 100, 97, 116, 97, 41, 32, 123, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 116,
|
||||
116, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103,
|
||||
101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40,
|
||||
39, 99, 117, 114, 114, 101, 110, 116, 39, 41, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114,
|
||||
32, 116, 32, 61, 32, 48, 59, 32, 116, 32, 60, 32, 100, 97, 116,
|
||||
97, 46, 32, 108, 101, 110, 103, 116, 104, 59, 32, 116, 32, 43, 43,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 32, 61, 32,
|
||||
100, 97, 116, 97, 32, 91, 116, 93, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 97, 114,
|
||||
103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77, 65,
|
||||
80, 95, 82, 69, 83, 69, 84, 41, 32, 123, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 97, 110,
|
||||
100, 108, 101, 95, 109, 97, 112, 95, 114, 101, 115, 101, 116, 32, 40,
|
||||
41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 99, 111, 110, 116, 105, 110, 117, 101, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 115,
|
||||
101, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
105, 102, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32, 116, 121, 112,
|
||||
101, 32, 61, 61, 32, 77, 65, 80, 95, 70, 82, 65, 77, 69, 41,
|
||||
32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 104, 97, 110, 100, 108, 101, 95, 109, 97, 112, 95,
|
||||
102, 114, 97, 109, 101, 32, 40, 41, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116,
|
||||
105, 110, 117, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 101, 108, 115, 101, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77, 65, 80,
|
||||
95, 67, 85, 82, 82, 69, 78, 84, 41, 32, 123, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 117, 112,
|
||||
100, 97, 116, 101, 67, 117, 114, 114, 101, 110, 116, 32, 40, 116, 97,
|
||||
114, 103, 101, 116, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 105, 110, 117,
|
||||
101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 101, 108, 115, 101, 32, 123, 9, 9, 47, 47, 32, 119, 101, 32,
|
||||
97, 100, 100, 32, 97, 110, 32, 101, 108, 101, 109, 101, 110, 116, 32,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 105, 102, 32, 40, 33, 40, 40, 116, 97, 114, 103, 101, 116,
|
||||
46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77, 65, 80, 95, 77,
|
||||
65, 88, 95, 84, 82, 65, 78, 83, 41, 32, 124, 124, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32, 116, 121, 112, 101,
|
||||
32, 61, 61, 32, 77, 65, 80, 95, 78, 79, 82, 77, 95, 84, 82,
|
||||
65, 78, 83, 41, 41, 41, 32, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110,
|
||||
116, 105, 110, 117, 101, 59, 10, 47, 47, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 108, 101, 97,
|
||||
114, 67, 117, 114, 114, 101, 110, 116, 32, 40, 41, 59, 9, 47, 47,
|
||||
32, 97, 108, 119, 97, 121, 115, 32, 103, 111, 111, 100, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105,
|
||||
102, 32, 40, 115, 101, 101, 110, 65, 108, 114, 101, 97, 100, 121, 32,
|
||||
40, 116, 97, 114, 103, 101, 116, 41, 41, 32, 123, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 117, 112, 100, 97, 116, 101, 67, 117, 114, 114, 101, 110, 116, 32,
|
||||
40, 116, 97, 114, 103, 101, 116, 41, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,
|
||||
111, 110, 116, 105, 110, 117, 101, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108,
|
||||
115, 101, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77,
|
||||
65, 80, 95, 77, 65, 88, 95, 84, 82, 65, 78, 83, 41, 32, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 80, 114, 101,
|
||||
118, 105, 111, 117, 115, 70, 117, 114, 116, 104, 101, 115, 116, 32, 40,
|
||||
41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 97, 100, 100, 84, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 32, 40, 116, 97, 114, 103, 101, 116, 41,
|
||||
59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
125, 10, 9, 32, 32, 32, 32, 32, 32, 125, 41, 59, 10, 9, 32,
|
||||
32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110, 99, 116, 105,
|
||||
111, 110, 32, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 32, 40,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 77, 97, 112, 32,
|
||||
61, 32, 76, 46, 109, 97, 112, 32, 40, 39, 109, 97, 112, 95, 99,
|
||||
97, 110, 118, 97, 115, 39, 41, 46, 115, 101, 116, 86, 105, 101, 119,
|
||||
40, 91, 104, 111, 109, 101, 76, 97, 116, 105, 116, 117, 100, 101, 44,
|
||||
32, 104, 111, 109, 101, 76, 111, 110, 103, 105, 116, 117, 100, 101, 93,
|
||||
44, 32, 56, 41, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 76,
|
||||
46, 116, 105, 108, 101, 76, 97, 121, 101, 114, 32, 40, 39, 104, 116,
|
||||
116, 112, 115, 58, 47, 47, 123, 115, 125, 46, 116, 105, 108, 101, 46,
|
||||
111, 112, 101, 110, 115, 116, 114, 101, 101, 116, 109, 97, 112, 46, 111,
|
||||
114, 103, 47, 123, 122, 125, 47, 123, 120, 125, 47, 123, 121, 125, 46,
|
||||
112, 110, 103, 39, 44, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
97, 116, 116, 114, 105, 98, 117, 116, 105, 111, 110, 58, 32, 39, 77,
|
||||
97, 112, 32, 100, 97, 116, 97, 32, 38, 99, 111, 112, 121, 59, 32,
|
||||
60, 97, 32, 104, 114, 101, 102, 61, 34, 104, 116, 116, 112, 115, 58,
|
||||
47, 47, 119, 119, 119, 46, 111, 112, 101, 110, 115, 116, 114, 101, 101,
|
||||
116, 109, 97, 112, 46, 111, 114, 103, 47, 34, 62, 79, 112, 101, 110,
|
||||
83, 116, 114, 101, 101, 116, 77, 97, 112, 60, 47, 97, 62, 32, 99,
|
||||
111, 110, 116, 114, 105, 98, 117, 116, 111, 114, 115, 44, 32, 60, 97,
|
||||
32, 104, 114, 101, 102, 61, 34, 104, 116, 116, 112, 115, 58, 47, 47,
|
||||
99, 114, 101, 97, 116, 105, 118, 101, 99, 111, 109, 109, 111, 110, 115,
|
||||
46, 111, 114, 103, 47, 108, 105, 99, 101, 110, 115, 101, 115, 47, 98,
|
||||
121, 45, 115, 97, 47, 50, 46, 48, 47, 34, 62, 67, 67, 45, 66,
|
||||
89, 45, 83, 65, 60, 47, 97, 62, 44, 32, 73, 109, 97, 103, 101,
|
||||
114, 121, 32, 194, 169, 32, 60, 97, 32, 104, 114, 101, 102, 61, 34,
|
||||
104, 116, 116, 112, 115, 58, 47, 47, 119, 119, 119, 46, 109, 97, 112,
|
||||
98, 111, 120, 46, 99, 111, 109, 47, 34, 62, 77, 97, 112, 98, 111,
|
||||
120, 60, 47, 97, 62, 39, 44, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 109, 97, 120, 90, 111, 111, 109, 58, 32, 49, 56, 44, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 105, 100, 58, 32, 39, 109, 97, 112,
|
||||
98, 111, 120, 47, 115, 116, 114, 101, 101, 116, 115, 45, 118, 49, 49,
|
||||
39, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 97, 99, 99, 101,
|
||||
115, 115, 84, 111, 107, 101, 110, 58, 32, 39, 121, 111, 117, 114, 46,
|
||||
109, 97, 112, 98, 111, 120, 46, 97, 99, 99, 101, 115, 115, 46, 116,
|
||||
111, 107, 101, 110, 39, 10, 9, 32, 32, 32, 125, 41, 46, 97, 100,
|
||||
100, 84, 111, 40, 77, 97, 112, 41, 59, 10, 10, 9, 32, 32, 32,
|
||||
118, 97, 114, 32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116, 73,
|
||||
99, 111, 110, 70, 111, 114, 72, 111, 109, 101, 32, 40, 41, 59, 10,
|
||||
9, 32, 32, 32, 118, 97, 114, 32, 104, 111, 109, 101, 77, 97, 114,
|
||||
107, 101, 114, 32, 61, 32, 76, 46, 109, 97, 114, 107, 101, 114, 40,
|
||||
91, 104, 111, 109, 101, 76, 97, 116, 105, 116, 117, 100, 101, 44, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 104, 111, 109, 101, 76, 111, 110, 103, 105, 116, 117, 100, 101, 93,
|
||||
44, 32, 123, 105, 99, 111, 110, 58, 32, 105, 99, 111, 110, 125, 41,
|
||||
46, 97, 100, 100, 84, 111, 40, 77, 97, 112, 41, 59, 10, 10, 47,
|
||||
42, 32, 83, 101, 116, 117, 112, 32, 111, 117, 114, 32, 116, 105, 109,
|
||||
101, 114, 32, 116, 111, 32, 112, 111, 108, 108, 32, 102, 114, 111, 109,
|
||||
32, 116, 104, 101, 32, 115, 101, 114, 118, 101, 114, 46, 32, 42, 47,
|
||||
10, 9, 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 115, 101, 116,
|
||||
73, 110, 116, 101, 114, 118, 97, 108, 40, 102, 117, 110, 99, 116, 105,
|
||||
111, 110, 32, 40, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
102, 101, 116, 99, 104, 68, 97, 116, 97, 32, 40, 41, 59, 10, 9,
|
||||
32, 32, 32, 125, 44, 32, 50, 48, 48, 48, 41, 59, 10, 9, 125,
|
||||
10, 10, 9, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 108,
|
||||
101, 99, 116, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 67,
|
||||
97, 108, 108, 98, 97, 99, 107, 32, 40, 116, 97, 114, 103, 101, 116,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 108, 101, 116, 32, 120, 120, 32,
|
||||
61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116,
|
||||
69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 115,
|
||||
101, 108, 101, 99, 116, 101, 100, 39, 41, 59, 10, 9, 32, 32, 32,
|
||||
108, 101, 116, 32, 110, 101, 119, 67, 104, 97, 110, 110, 101, 108, 32,
|
||||
61, 32, 39, 60, 115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61,
|
||||
92, 34, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98,
|
||||
111, 108, 100, 59, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49,
|
||||
50, 48, 37, 92, 34, 62, 39, 32, 43, 32, 116, 97, 114, 103, 101,
|
||||
116, 46, 32, 99, 104, 97, 110, 110, 101, 108, 32, 43, 32, 39, 60,
|
||||
47, 115, 112, 97, 110, 62, 39, 59, 10, 9, 32, 32, 32, 108, 101,
|
||||
116, 32, 99, 111, 111, 114, 100, 115, 32, 61, 32, 39, 60, 115, 112,
|
||||
97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116,
|
||||
45, 115, 116, 121, 108, 101, 58, 32, 105, 116, 97, 108, 105, 99, 59,
|
||||
92, 34, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 108, 97, 116,
|
||||
32, 43, 32, 39, 45, 45, 39, 32, 43, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32,
|
||||
108, 111, 110, 32, 43, 32, 32, 39, 60, 47, 115, 112, 97, 110, 62,
|
||||
39, 59, 10, 9, 32, 32, 32, 120, 120, 46, 32, 105, 110, 110, 101,
|
||||
114, 72, 84, 77, 76, 32, 61, 32, 39, 60, 112, 32, 115, 116, 121,
|
||||
108, 101, 61, 92, 34, 112, 97, 100, 100, 105, 110, 103, 58, 32, 49,
|
||||
48, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 50, 112, 120,
|
||||
32, 115, 111, 108, 105, 100, 32, 98, 108, 97, 99, 107, 59, 92, 34,
|
||||
62, 39, 32, 43, 32, 39, 83, 101, 108, 101, 99, 116, 101, 100, 58,
|
||||
32, 32, 39, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 110, 101, 119, 67, 104, 97, 110, 110, 101,
|
||||
108, 32, 43, 32, 39, 61, 62, 39, 32, 43, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32,
|
||||
43, 32, 32, 39, 32, 40, 39, 32, 43, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 40, 116, 97, 114, 103, 101, 116, 46,
|
||||
32, 112, 111, 119, 101, 114, 32, 47, 32, 49, 48, 48, 46, 48, 41,
|
||||
46, 32, 116, 111, 70, 105, 120, 101, 100, 32, 40, 50, 41, 32, 43,
|
||||
32, 39, 32, 107, 87, 41, 39, 32, 43, 32, 39, 60, 98, 114, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101,
|
||||
116, 46, 32, 100, 97, 116, 101, 84, 105, 109, 101, 32, 43, 32, 39,
|
||||
60, 98, 114, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,
|
||||
111, 111, 114, 100, 115, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32,
|
||||
43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 39, 68, 105, 115, 116, 97, 110,
|
||||
99, 101, 32, 116, 111, 32, 104, 111, 109, 101, 32, 39, 32, 43, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 100, 105, 115, 116, 32, 43, 32,
|
||||
39, 107, 109, 32, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46,
|
||||
32, 97, 122, 105, 109, 117, 116, 104, 32, 43, 32, 39, 38, 35, 120,
|
||||
98, 48, 39, 32, 43, 32, 39, 60, 98, 114, 62, 60, 47, 112, 62,
|
||||
39, 10, 9, 125, 10, 10, 60, 47, 115, 99, 114, 105, 112, 116, 62,
|
||||
10, 60, 47, 104, 101, 97, 100, 62, 10, 9, 60, 98, 111, 100, 121,
|
||||
32, 111, 110, 108, 111, 97, 100, 61, 34, 105, 110, 105, 116, 105, 97,
|
||||
108, 105, 122, 101, 40, 41, 34, 62, 10, 9, 60, 100, 105, 118, 32,
|
||||
105, 100, 61, 34, 109, 97, 112, 95, 99, 97, 110, 118, 97, 115, 34,
|
||||
32, 115, 116, 121, 108, 101, 61, 34, 119, 105, 100, 116, 104, 58, 56,
|
||||
48, 37, 59, 32, 104, 101, 105, 103, 104, 116, 58, 49, 48, 48, 37,
|
||||
34, 62, 60, 47, 100, 105, 118, 62, 10, 9, 60, 100, 105, 118, 32,
|
||||
105, 100, 61, 34, 105, 110, 102, 111, 34, 62, 10, 9, 60, 100, 105,
|
||||
118, 62, 10, 9, 32, 32, 32, 60, 104, 49, 62, 81, 116, 45, 68,
|
||||
65, 66, 60, 47, 104, 49, 62, 10, 9, 32, 32, 32, 60, 112, 32,
|
||||
105, 100, 61, 34, 116, 101, 115, 116, 105, 110, 103, 34, 62, 60, 47,
|
||||
112, 62, 10, 9, 32, 32, 32, 60, 112, 32, 105, 100, 61, 34, 115,
|
||||
101, 108, 101, 99, 116, 101, 100, 34, 62, 60, 47, 112, 62, 10, 9,
|
||||
32, 32, 32, 60, 112, 32, 105, 100, 61, 34, 115, 101, 108, 67, 111,
|
||||
117, 110, 116, 34, 62, 60, 47, 112, 62, 10, 9, 32, 32, 32, 60,
|
||||
112, 32, 105, 100, 61, 34, 100, 105, 115, 116, 97, 110, 99, 101, 34,
|
||||
62, 60, 47, 112, 62, 10, 9, 32, 32, 32, 60, 112, 32, 105, 100,
|
||||
61, 34, 115, 101, 108, 105, 110, 102, 111, 34, 62, 60, 47, 112, 62,
|
||||
10, 9, 32, 32, 32, 60, 112, 32, 105, 100, 61, 34, 99, 117, 114,
|
||||
114, 101, 110, 116, 34, 62, 60, 47, 112, 62, 10, 9, 60, 47, 100,
|
||||
105, 118, 62, 10, 9, 60, 47, 100, 105, 118, 62, 10, 32, 32, 60,
|
||||
47, 98, 111, 100, 121, 62, 10, 60, 47, 104, 116, 109, 108, 62, 10,
|
||||
0};
|
@@ -1,966 +0,0 @@
|
||||
#
|
||||
#include <stdint.h>
|
||||
// generated map
|
||||
static uint8_t qt_map [] = {
|
||||
60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, 109, 108, 62,
|
||||
10, 10, 60, 104, 116, 109, 108, 62, 10, 32, 32, 60, 104, 101, 97,
|
||||
100, 62, 10, 32, 32, 32, 32, 60, 109, 101, 116, 97, 32, 110, 97,
|
||||
109, 101, 61, 34, 118, 105, 101, 119, 112, 111, 114, 116, 34, 32, 99,
|
||||
111, 110, 116, 101, 110, 116, 61, 34, 105, 110, 105, 116, 105, 97, 108,
|
||||
45, 115, 99, 97, 108, 101, 61, 49, 46, 48, 44, 32, 117, 115, 101,
|
||||
114, 45, 115, 99, 97, 108, 97, 98, 108, 101, 61, 110, 111, 34, 32,
|
||||
47, 62, 10, 32, 32, 32, 32, 32, 60, 108, 105, 110, 107, 32, 114,
|
||||
101, 108, 61, 34, 115, 116, 121, 108, 101, 115, 104, 101, 101, 116, 34,
|
||||
32, 104, 114, 101, 102, 61, 34, 104, 116, 116, 112, 115, 58, 47, 47,
|
||||
117, 110, 112, 107, 103, 46, 99, 111, 109, 47, 108, 101, 97, 102, 108,
|
||||
101, 116, 64, 49, 46, 54, 46, 48, 47, 100, 105, 115, 116, 47, 108,
|
||||
101, 97, 102, 108, 101, 116, 46, 99, 115, 115, 34, 32, 105, 110, 116,
|
||||
101, 103, 114, 105, 116, 121, 61, 34, 115, 104, 97, 53, 49, 50, 45,
|
||||
120, 119, 69, 47, 65, 122, 57, 122, 114, 106, 66, 73, 112, 104, 65,
|
||||
99, 66, 98, 51, 70, 54, 74, 86, 113, 120, 102, 52, 54, 43, 67,
|
||||
68, 76, 119, 102, 76, 77, 72, 108, 111, 78, 117, 54, 75, 69, 81,
|
||||
67, 65, 87, 105, 54, 72, 99, 68, 85, 98, 101, 79, 102, 66, 73,
|
||||
112, 116, 70, 55, 116, 99, 67, 122, 117, 115, 75, 70, 106, 70, 119,
|
||||
50, 121, 117, 118, 69, 112, 68, 76, 57, 119, 81, 61, 61, 34, 32,
|
||||
99, 114, 111, 115, 115, 111, 114, 105, 103, 105, 110, 61, 34, 34, 47,
|
||||
62, 10, 9, 60, 108, 105, 110, 107, 32, 114, 101, 108, 61, 34, 105,
|
||||
99, 111, 110, 34, 32, 104, 114, 101, 102, 61, 34, 100, 97, 116, 97,
|
||||
58, 44, 34, 62, 10, 9, 60, 115, 116, 121, 108, 101, 32, 116, 121,
|
||||
112, 101, 61, 34, 116, 101, 120, 116, 47, 99, 115, 115, 34, 62, 10,
|
||||
9, 32, 32, 32, 104, 116, 109, 108, 32, 123, 32, 104, 101, 105, 103,
|
||||
104, 116, 58, 32, 49, 48, 48, 37, 32, 125, 10, 9, 32, 32, 32,
|
||||
98, 111, 100, 121, 32, 123, 32, 104, 101, 105, 103, 104, 116, 58, 32,
|
||||
49, 48, 48, 37, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48,
|
||||
59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 32, 125, 10,
|
||||
9, 32, 32, 32, 46, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 45, 105, 99, 111, 110, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 112, 97, 100, 100, 105, 110, 103, 58, 48, 112, 120, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 109, 97, 114, 103, 105, 110, 58, 48, 112,
|
||||
120, 59, 10, 9, 32, 32, 32, 125, 10, 9, 32, 32, 32, 35, 109,
|
||||
97, 112, 95, 99, 97, 110, 118, 97, 115, 32, 123, 32, 104, 101, 105,
|
||||
103, 104, 116, 58, 32, 49, 48, 48, 37, 32, 125, 10, 9, 32, 32,
|
||||
32, 35, 105, 110, 102, 111, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 97, 98, 115, 111,
|
||||
108, 117, 116, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 119, 105,
|
||||
100, 116, 104, 58, 50, 48, 37, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 104, 101, 105, 103, 104, 116, 58, 49, 48, 48, 37, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 98, 111, 116, 116, 111, 109, 58, 48, 112,
|
||||
120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 114, 105, 103, 104, 116,
|
||||
58, 48, 112, 120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 116, 111,
|
||||
112, 58, 48, 112, 120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 98,
|
||||
97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114,
|
||||
58, 32, 119, 104, 105, 116, 101, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 98, 111, 114, 100, 101, 114, 45, 108, 101, 102, 116, 58, 49, 112,
|
||||
120, 32, 35, 54, 54, 54, 32, 115, 111, 108, 105, 100, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105,
|
||||
108, 121, 58, 72, 101, 108, 118, 101, 116, 105, 99, 97, 59, 10, 9,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 35, 105, 110, 102, 111, 32,
|
||||
100, 105, 118, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 112, 97,
|
||||
100, 100, 105, 110, 103, 58, 48, 112, 120, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 112, 97, 100, 100, 105, 110, 103, 45, 108, 101, 102, 116,
|
||||
58, 49, 48, 112, 120, 59, 10, 9, 32, 32, 32, 32, 32, 32, 109,
|
||||
97, 114, 103, 105, 110, 58, 48, 112, 120, 59, 10, 9, 32, 32, 32,
|
||||
125, 10, 9, 32, 32, 32, 35, 105, 110, 102, 111, 32, 100, 105, 118,
|
||||
32, 104, 49, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 109, 97,
|
||||
114, 103, 105, 110, 45, 116, 111, 112, 58, 49, 48, 112, 120, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 115, 105, 122,
|
||||
101, 58, 49, 54, 112, 120, 59, 10, 9, 32, 32, 32, 125, 10, 9,
|
||||
32, 32, 32, 35, 105, 110, 102, 111, 32, 100, 105, 118, 32, 112, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 110, 116, 45, 115,
|
||||
105, 122, 101, 58, 49, 52, 112, 120, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 99, 111, 108, 111, 114, 58, 35, 51, 51, 51, 59, 10, 9,
|
||||
32, 32, 32, 125, 10, 9, 32, 32, 32, 46, 99, 111, 108, 111, 114,
|
||||
105, 110, 103, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 99, 111,
|
||||
108, 111, 114, 58, 32, 114, 101, 100, 10, 9, 32, 32, 32, 125, 10,
|
||||
9, 60, 47, 115, 116, 121, 108, 101, 62, 10, 10, 9, 60, 115, 99,
|
||||
114, 105, 112, 116, 32, 115, 114, 99, 61, 34, 104, 116, 116, 112, 115,
|
||||
58, 47, 47, 97, 106, 97, 120, 46, 103, 111, 111, 103, 108, 101, 97,
|
||||
112, 105, 115, 46, 99, 111, 109, 47, 97, 106, 97, 120, 47, 108, 105,
|
||||
98, 115, 47, 106, 113, 117, 101, 114, 121, 47, 51, 46, 52, 46, 49,
|
||||
47, 106, 113, 117, 101, 114, 121, 46, 109, 105, 110, 46, 106, 115, 34,
|
||||
62, 60, 47, 115, 99, 114, 105, 112, 116, 62, 10, 9, 60, 115, 99,
|
||||
114, 105, 112, 116, 32, 115, 114, 99, 61, 34, 104, 116, 116, 112, 115,
|
||||
58, 47, 47, 117, 110, 112, 107, 103, 46, 99, 111, 109, 47, 108, 101,
|
||||
97, 102, 108, 101, 116, 64, 49, 46, 54, 46, 48, 47, 100, 105, 115,
|
||||
116, 47, 108, 101, 97, 102, 108, 101, 116, 46, 106, 115, 34, 32, 105,
|
||||
110, 116, 101, 103, 114, 105, 116, 121, 61, 34, 115, 104, 97, 53, 49,
|
||||
50, 45, 103, 90, 119, 73, 71, 57, 120, 51, 119, 85, 88, 103, 50,
|
||||
104, 100, 88, 70, 54, 43, 114, 86, 107, 76, 70, 47, 48, 86, 105,
|
||||
57, 85, 56, 68, 50, 78, 116, 103, 52, 71, 97, 53, 73, 53, 66,
|
||||
90, 112, 86, 107, 86, 120, 108, 74, 87, 98, 83, 81, 116, 88, 80,
|
||||
83, 105, 85, 84, 116, 67, 48, 84, 106, 116, 71, 79, 109, 120, 97,
|
||||
49, 65, 74, 80, 117, 86, 48, 67, 80, 116, 104, 101, 119, 61, 61,
|
||||
34, 32, 99, 114, 111, 115, 115, 111, 114, 105, 103, 105, 110, 61, 34,
|
||||
34, 62, 60, 47, 115, 99, 114, 105, 112, 116, 62, 10, 9, 60, 115,
|
||||
99, 114, 105, 112, 116, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120,
|
||||
116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 34, 62, 10,
|
||||
9, 32, 32, 32, 77, 97, 112, 32, 61, 32, 110, 117, 108, 108, 59,
|
||||
10, 9, 32, 32, 32, 118, 97, 114, 32, 104, 111, 109, 101, 76, 97,
|
||||
116, 105, 116, 117, 100, 101, 32, 61, 32, 36, 59, 10, 9, 32, 32,
|
||||
32, 118, 97, 114, 32, 104, 111, 109, 101, 76, 111, 110, 103, 105, 116,
|
||||
117, 100, 101, 32, 61, 32, 36, 59, 10, 9, 32, 32, 32, 118, 97,
|
||||
114, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
61, 32, 123, 125, 59, 10, 9, 32, 32, 32, 118, 97, 114, 32, 116,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120,
|
||||
9, 61, 32, 48, 59, 10, 10, 9, 32, 32, 32, 99, 111, 110, 115,
|
||||
116, 32, 77, 65, 80, 95, 82, 69, 83, 69, 84, 9, 61, 32, 48,
|
||||
59, 10, 9, 32, 32, 32, 99, 111, 110, 115, 116, 32, 77, 65, 80,
|
||||
95, 70, 82, 65, 77, 69, 9, 61, 32, 49, 59, 10, 9, 32, 32,
|
||||
32, 99, 111, 110, 115, 116, 32, 77, 65, 80, 95, 77, 65, 88, 95,
|
||||
84, 82, 65, 78, 83, 9, 61, 32, 50, 59, 10, 9, 32, 32, 32,
|
||||
99, 111, 110, 115, 116, 32, 77, 65, 80, 95, 78, 79, 82, 77, 95,
|
||||
84, 82, 65, 78, 83, 32, 61, 32, 52, 59, 10, 9, 32, 32, 32,
|
||||
99, 111, 110, 115, 116, 32, 77, 65, 80, 95, 67, 85, 82, 82, 69,
|
||||
78, 84, 32, 9, 61, 32, 56, 59, 10, 10, 9, 32, 32, 32, 99,
|
||||
111, 110, 115, 116, 32, 73, 67, 79, 78, 95, 79, 84, 72, 69, 82,
|
||||
70, 82, 65, 77, 69, 9, 61, 32, 48, 59, 10, 9, 32, 32, 32,
|
||||
99, 111, 110, 115, 116, 32, 73, 67, 79, 78, 95, 70, 85, 82, 84,
|
||||
72, 69, 83, 84, 9, 9, 61, 32, 49, 59, 10, 9, 32, 32, 32,
|
||||
99, 111, 110, 115, 116, 32, 73, 67, 79, 78, 95, 84, 79, 80, 70,
|
||||
82, 65, 77, 69, 9, 9, 61, 32, 50, 59, 10, 9, 32, 32, 32,
|
||||
99, 111, 110, 115, 116, 32, 73, 67, 79, 78, 95, 67, 85, 82, 82,
|
||||
69, 78, 84, 9, 9, 61, 32, 51, 59, 10, 10, 9, 32, 32, 32,
|
||||
102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 73, 99, 111,
|
||||
110, 70, 111, 114, 72, 111, 109, 101, 32, 40, 41, 32, 123, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 104, 101, 32, 61, 32,
|
||||
100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 99, 114, 101, 97, 116,
|
||||
101, 69, 108, 101, 109, 101, 110, 116, 32, 40, 34, 80, 34, 41, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 104, 101, 46, 105, 110, 110, 101,
|
||||
114, 72, 84, 77, 76, 32, 61, 32, 39, 42, 39, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 101, 108, 104, 116, 109,
|
||||
108, 32, 61, 32, 39, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
104, 101, 32, 61, 32, 39, 60, 100, 105, 118, 32, 115, 116, 121, 108,
|
||||
101, 61, 34, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 114,
|
||||
101, 109, 34, 62, 38, 35, 120, 50, 66, 53, 53, 60, 47, 100, 105,
|
||||
118, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 118, 97, 114,
|
||||
32, 105, 99, 111, 110, 32, 61, 32, 76, 46, 100, 105, 118, 73, 99,
|
||||
111, 110, 32, 40, 123, 104, 116, 109, 108, 58, 32, 104, 101, 44, 32,
|
||||
99, 108, 97, 115, 115, 78, 97, 109, 101, 58, 32, 39, 104, 111, 109,
|
||||
101, 45, 105, 99, 111, 110, 39, 125, 41, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 105, 99, 111, 110, 59,
|
||||
10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110,
|
||||
99, 116, 105, 111, 110, 32, 103, 101, 116, 73, 99, 111, 110, 70, 111,
|
||||
114, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 107,
|
||||
101, 121, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 118, 97,
|
||||
114, 32, 104, 101, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116,
|
||||
46, 32, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116,
|
||||
32, 40, 34, 80, 34, 41, 59, 10, 47, 47, 9, 32, 32, 32, 32,
|
||||
32, 32, 104, 101, 46, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32,
|
||||
61, 32, 39, 42, 39, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
118, 97, 114, 32, 115, 101, 108, 104, 116, 109, 108, 32, 61, 32, 39,
|
||||
39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 107,
|
||||
101, 121, 32, 61, 61, 32, 73, 67, 79, 78, 95, 79, 84, 72, 69,
|
||||
82, 70, 82, 65, 77, 69, 41, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 104, 101, 32, 61, 32, 39, 60, 100, 105, 118, 32, 115,
|
||||
116, 121, 108, 101, 61, 34, 102, 111, 110, 116, 45, 115, 105, 122, 101,
|
||||
32, 58, 49, 46, 53, 114, 101, 109, 59, 34, 62, 32, 38, 35, 120,
|
||||
49, 70, 52, 67, 67, 60, 47, 100, 105, 118, 62, 39, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 105, 102, 32, 40, 107, 101, 121, 32, 61, 61, 32, 73,
|
||||
67, 79, 78, 95, 70, 85, 82, 84, 72, 69, 83, 84, 41, 10, 47,
|
||||
47, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 101, 32, 61,
|
||||
32, 39, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, 102,
|
||||
111, 110, 116, 45, 115, 105, 122, 101, 32, 58, 49, 46, 50, 114, 101,
|
||||
109, 34, 62, 32, 38, 35, 120, 240, 159, 143, 129, 60, 47, 100, 105,
|
||||
118, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
104, 101, 32, 61, 32, 39, 60, 100, 105, 118, 32, 115, 116, 121, 108,
|
||||
101, 61, 34, 102, 111, 110, 116, 45, 115, 105, 122, 101, 32, 58, 49,
|
||||
46, 52, 114, 101, 109, 34, 62, 32, 38, 35, 120, 49, 70, 51, 67,
|
||||
49, 60, 47, 100, 105, 118, 62, 39, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 101, 108, 115, 101, 10, 9, 32, 32, 32, 32, 32, 32, 105,
|
||||
102, 32, 40, 107, 101, 121, 32, 61, 61, 32, 73, 67, 79, 78, 95,
|
||||
84, 79, 80, 70, 82, 65, 77, 69, 41, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 104, 101, 32, 61, 32, 39, 60, 100, 105, 118,
|
||||
32, 115, 116, 121, 108, 101, 61, 34, 102, 111, 110, 116, 45, 115, 105,
|
||||
122, 101, 32, 58, 48, 46, 55, 114, 101, 109, 59, 34, 62, 32, 38,
|
||||
35, 120, 50, 54, 65, 66, 60, 47, 100, 105, 118, 62, 39, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 9, 47, 47, 32,
|
||||
73, 67, 79, 78, 95, 67, 85, 82, 82, 69, 78, 84, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 104, 101, 32, 61, 32, 39, 60,
|
||||
100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, 102, 111, 110, 116,
|
||||
45, 115, 105, 122, 101, 32, 58, 49, 46, 52, 114, 101, 109, 59, 34,
|
||||
62, 32, 38, 35, 120, 49, 70, 54, 65, 57, 60, 47, 100, 105, 118,
|
||||
62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 118, 97, 114, 32, 105, 99, 111, 110, 32, 61, 32,
|
||||
76, 46, 100, 105, 118, 73, 99, 111, 110, 32, 40, 123, 104, 116, 109,
|
||||
108, 58, 32, 104, 101, 44, 32, 99, 108, 97, 115, 115, 78, 97, 109,
|
||||
101, 58, 32, 39, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114,
|
||||
45, 105, 99, 111, 110, 39, 125, 41, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 114, 101, 116, 117, 114, 110, 32, 105, 99, 111, 110, 59, 10,
|
||||
9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110, 99,
|
||||
116, 105, 111, 110, 32, 104, 97, 110, 100, 108, 101, 95, 109, 97, 112,
|
||||
95, 114, 101, 115, 101, 116, 32, 40, 41, 32, 123, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, 32,
|
||||
61, 32, 48, 59, 32, 105, 32, 60, 32, 116, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 59, 32, 105, 32, 43,
|
||||
43, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
77, 97, 112, 46, 32, 114, 101, 109, 111, 118, 101, 76, 97, 121, 101,
|
||||
114, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 105, 93, 46, 32, 109, 97, 114, 107, 101, 114, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 108, 101, 116,
|
||||
101, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
91, 105, 93, 59, 10, 9, 32, 32, 32, 32, 32, 32, 125, 10, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 61, 32, 123, 125, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73,
|
||||
110, 100, 101, 120, 32, 61, 32, 48, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 120, 120, 32, 61, 32, 100, 111, 99, 117,
|
||||
109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110,
|
||||
116, 66, 121, 73, 100, 32, 40, 39, 115, 101, 108, 105, 110, 102, 111,
|
||||
39, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 120, 120, 32, 46,
|
||||
32, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 39, 32,
|
||||
39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 121,
|
||||
121, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103,
|
||||
101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40,
|
||||
39, 115, 101, 108, 67, 111, 117, 110, 116, 39, 41, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 121, 121, 46, 32, 105, 110, 110, 101, 114, 72,
|
||||
84, 77, 76, 32, 61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 110, 117, 109, 98, 101,
|
||||
114, 32, 111, 102, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 115, 32, 39, 32, 43, 32, 116, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 73, 110, 100, 101, 120, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 108, 101, 116, 32, 122, 122, 32, 61, 32, 100, 111, 99, 117,
|
||||
109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110,
|
||||
116, 66, 121, 73, 100, 32, 40, 39, 100, 105, 115, 116, 97, 110, 99,
|
||||
101, 39, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 122, 122, 46,
|
||||
32, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 39, 39,
|
||||
59, 10, 9, 32, 32, 32, 125, 10, 47, 47, 10, 47, 47, 9, 119,
|
||||
104, 101, 110, 32, 101, 110, 116, 101, 114, 105, 110, 103, 32, 97, 32,
|
||||
110, 101, 119, 32, 99, 104, 97, 110, 110, 101, 108, 44, 32, 119, 104,
|
||||
105, 108, 101, 32, 109, 97, 105, 110, 116, 97, 105, 110, 105, 110, 103,
|
||||
32, 97, 108, 108, 10, 47, 47, 9, 101, 108, 101, 109, 101, 110, 116,
|
||||
115, 32, 111, 110, 32, 116, 104, 101, 32, 109, 97, 112, 44, 32, 109,
|
||||
97, 107, 101, 32, 116, 104, 101, 32, 101, 108, 101, 109, 101, 110, 116,
|
||||
115, 32, 100, 105, 102, 102, 101, 114, 101, 110, 116, 10, 47, 47, 9,
|
||||
97, 110, 100, 32, 114, 101, 99, 111, 114, 100, 32, 116, 104, 97, 116,
|
||||
32, 116, 104, 101, 32, 101, 108, 101, 109, 101, 110, 116, 115, 32, 97,
|
||||
114, 101, 32, 110, 111, 116, 32, 105, 110, 32, 116, 104, 101, 32, 99,
|
||||
117, 114, 114, 101, 110, 116, 32, 102, 114, 97, 109, 101, 32, 97, 110,
|
||||
121, 109, 111, 114, 101, 10, 9, 32, 32, 32, 102, 117, 110, 99, 116,
|
||||
105, 111, 110, 32, 104, 97, 110, 100, 108, 101, 95, 109, 97, 112, 95,
|
||||
102, 114, 97, 109, 101, 32, 40, 41, 32, 123, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, 32, 61,
|
||||
32, 48, 59, 32, 105, 32, 60, 32, 116, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 73, 110, 100, 101, 120, 59, 32, 105, 32, 43, 43,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105,
|
||||
102, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 105, 93, 46, 32, 115, 116, 97, 116, 117, 115, 32, 61, 61,
|
||||
32, 116, 114, 117, 101, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 115, 116, 97, 116, 117,
|
||||
115, 32, 61, 32, 102, 97, 108, 115, 101, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 99, 117, 114,
|
||||
114, 101, 110, 116, 32, 61, 32, 102, 97, 108, 115, 101, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32,
|
||||
40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91,
|
||||
105, 93, 46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 41, 32, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 99, 111, 110, 116, 105, 110, 117, 101, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 77, 97, 112, 46, 32, 114,
|
||||
101, 109, 111, 118, 101, 76, 97, 121, 101, 114, 32, 40, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32,
|
||||
109, 97, 114, 107, 101, 114, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 105, 99, 111, 110,
|
||||
32, 61, 32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 73, 67, 79, 78,
|
||||
95, 79, 84, 72, 69, 82, 70, 82, 65, 77, 69, 41, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116,
|
||||
32, 101, 108, 101, 109, 101, 110, 116, 32, 61, 32, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116,
|
||||
32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 32,
|
||||
61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 46, 109,
|
||||
97, 114, 107, 101, 114, 32, 40, 91, 101, 108, 101, 109, 101, 110, 116,
|
||||
46, 108, 97, 116, 44, 32, 101, 108, 101, 109, 101, 110, 116, 46, 108,
|
||||
111, 110, 93, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 105, 99, 111, 110,
|
||||
58, 32, 105, 99, 111, 110, 125, 41, 46, 97, 100, 100, 84, 111, 40,
|
||||
77, 97, 112, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107,
|
||||
101, 114, 46, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 100,
|
||||
100, 69, 118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, 114, 32,
|
||||
40, 39, 99, 108, 105, 99, 107, 39, 44, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40,
|
||||
41, 32, 123, 32, 115, 101, 108, 101, 99, 116, 84, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 67, 97, 108, 108, 98, 97, 99, 107, 32,
|
||||
40, 101, 108, 101, 109, 101, 110, 116, 41, 59, 125, 41, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32,
|
||||
109, 97, 114, 107, 101, 114, 32, 61, 32, 101, 108, 101, 109, 101, 110,
|
||||
116, 77, 97, 114, 107, 101, 114, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 125, 10,
|
||||
9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110, 99,
|
||||
116, 105, 111, 110, 32, 115, 101, 101, 110, 65, 108, 114, 101, 97, 100,
|
||||
121, 32, 40, 116, 97, 114, 103, 101, 116, 41, 32, 123, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 106,
|
||||
32, 61, 32, 48, 59, 32, 106, 32, 60, 32, 116, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 59, 32, 106, 32,
|
||||
43, 43, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 105, 102, 32, 40, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 115, 32, 91, 106, 93, 46, 32, 108, 97, 116, 32, 61, 61,
|
||||
32, 116, 97, 114, 103, 101, 116, 46, 32, 108, 97, 116, 41, 32, 38,
|
||||
38, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
91, 106, 93, 46, 32, 108, 111, 110, 32, 61, 61, 32, 116, 97, 114,
|
||||
103, 101, 116, 46, 32, 108, 111, 110, 41, 32, 38, 38, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 46,
|
||||
32, 99, 104, 97, 110, 110, 101, 108, 32, 61, 61, 32, 116, 97, 114,
|
||||
103, 101, 116, 46, 32, 99, 104, 97, 110, 110, 101, 108, 41, 41, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 117, 101,
|
||||
59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
114, 101, 116, 117, 114, 110, 32, 102, 97, 108, 115, 101, 59, 10, 9,
|
||||
32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110, 99, 116,
|
||||
105, 111, 110, 32, 99, 108, 101, 97, 114, 80, 114, 101, 118, 105, 111,
|
||||
117, 115, 70, 117, 114, 116, 104, 101, 115, 116, 32, 40, 41, 32, 123,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97,
|
||||
114, 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 116, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 59,
|
||||
32, 105, 32, 43, 43, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 105, 102, 32, 40, 84, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 102, 117, 114, 116,
|
||||
104, 101, 115, 116, 32, 61, 61, 32, 116, 114, 117, 101, 41, 32, 123,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93,
|
||||
46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 32, 61, 32, 102, 97,
|
||||
108, 115, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 77, 97, 112, 46, 32, 114, 101, 109, 111, 118, 101, 76,
|
||||
97, 121, 101, 114, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 115, 32, 91, 105, 93, 46, 32, 109, 97, 114, 107, 101, 114,
|
||||
41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 108, 101, 116, 32, 116, 109, 112, 32, 61, 32, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 99,
|
||||
117, 114, 114, 101, 110, 116, 32, 63, 32, 73, 67, 79, 78, 95, 84,
|
||||
79, 80, 70, 82, 65, 77, 69, 32, 58, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 73, 67, 79, 78, 95, 79, 84, 72, 69, 82, 70, 82, 65, 77,
|
||||
69, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 108, 101, 116, 32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116,
|
||||
73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 32, 40, 116, 109, 112, 41, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 108,
|
||||
101, 109, 101, 110, 116, 32, 61, 32, 84, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 115, 32, 91, 105, 93, 59, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 108,
|
||||
101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 32, 61, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 76, 46, 109, 97, 114, 107, 101, 114, 32, 40,
|
||||
91, 101, 108, 101, 109, 101, 110, 116, 46, 108, 97, 116, 44, 32, 101,
|
||||
108, 101, 109, 101, 110, 116, 46, 108, 111, 110, 93, 44, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123,
|
||||
105, 99, 111, 110, 58, 32, 105, 99, 111, 110, 125, 41, 46, 97, 100,
|
||||
100, 84, 111, 40, 77, 97, 112, 41, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 101, 109, 101, 110, 116,
|
||||
77, 97, 114, 107, 101, 114, 46, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,
|
||||
100, 100, 69, 118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, 114,
|
||||
32, 40, 39, 99, 108, 105, 99, 107, 39, 44, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32,
|
||||
40, 41, 32, 123, 32, 115, 101, 108, 101, 99, 116, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 67, 97, 108, 108, 98, 97, 99, 107,
|
||||
32, 40, 101, 108, 101, 109, 101, 110, 116, 41, 59, 125, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46,
|
||||
32, 109, 97, 114, 107, 101, 114, 32, 61, 32, 101, 108, 101, 109, 101,
|
||||
110, 116, 77, 97, 114, 107, 101, 114, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 125, 10, 9, 32,
|
||||
32, 32, 10, 9, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110,
|
||||
32, 115, 104, 111, 119, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 65, 116, 83, 105, 100, 101, 66, 97, 114, 32, 40, 116, 97, 114,
|
||||
103, 101, 116, 44, 32, 102, 105, 114, 115, 116, 79, 110, 101, 41, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101,
|
||||
119, 67, 104, 97, 110, 110, 101, 108, 32, 61, 32, 39, 60, 115, 112,
|
||||
97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116,
|
||||
45, 119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59, 102, 111,
|
||||
110, 116, 45, 115, 105, 122, 101, 58, 49, 50, 48, 37, 92, 34, 62,
|
||||
39, 32, 43, 32, 116, 97, 114, 103, 101, 116, 46, 32, 99, 104, 97,
|
||||
110, 110, 101, 108, 32, 43, 32, 39, 60, 47, 115, 112, 97, 110, 62,
|
||||
39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 99,
|
||||
111, 111, 114, 100, 115, 32, 61, 32, 39, 60, 115, 112, 97, 110, 32,
|
||||
115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45, 115, 116,
|
||||
121, 108, 101, 58, 32, 105, 116, 97, 108, 105, 99, 59, 92, 34, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 116, 97, 114, 103, 101, 116, 46, 32, 108, 97, 116, 32, 43, 32,
|
||||
39, 45, 45, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 108, 111, 110,
|
||||
32, 43, 32, 32, 39, 60, 47, 115, 112, 97, 110, 62, 39, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 120, 120, 32, 61,
|
||||
32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116, 69,
|
||||
108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 115, 101,
|
||||
108, 105, 110, 102, 111, 39, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 105, 102, 32, 40, 102, 105, 114, 115, 116, 79, 110, 101, 41, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 120, 120, 46, 32, 105,
|
||||
110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 60, 115,
|
||||
112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110,
|
||||
116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59, 34,
|
||||
62, 39, 32, 43, 32, 39, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 115, 32, 60, 98, 114, 62, 39, 32, 43, 32, 39, 60, 47,
|
||||
115, 112, 97, 110, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
120, 120, 46, 32, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 43,
|
||||
61, 32, 110, 101, 119, 67, 104, 97, 110, 110, 101, 108, 32, 43, 32,
|
||||
39, 61, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 116, 97, 114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32, 43,
|
||||
32, 39, 32, 40, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32, 112, 111, 119, 101,
|
||||
114, 47, 32, 49, 48, 48, 46, 48, 41, 46, 116, 111, 70, 105, 120,
|
||||
101, 100, 32, 40, 50, 41, 32, 43, 32, 39, 32, 107, 87, 41, 39,
|
||||
32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 100,
|
||||
97, 116, 101, 84, 105, 109, 101, 32, 43, 32, 39, 60, 98, 114, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111,
|
||||
111, 114, 100, 115, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 68, 105, 115, 116,
|
||||
97, 110, 99, 101, 32, 116, 111, 32, 104, 111, 109, 101, 32, 39, 32,
|
||||
43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32,
|
||||
100, 105, 115, 116, 32, 43, 32, 39, 107, 109, 32, 39, 32, 43, 32,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101,
|
||||
116, 46, 32, 97, 122, 105, 109, 117, 116, 104, 32, 43, 32, 39, 38,
|
||||
35, 120, 98, 48, 39, 32, 43, 32, 39, 60, 98, 114, 62, 60, 98,
|
||||
114, 62, 39, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101,
|
||||
116, 32, 121, 121, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116,
|
||||
46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73,
|
||||
100, 32, 40, 39, 115, 101, 108, 67, 111, 117, 110, 116, 39, 41, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 121, 121, 46, 32, 105, 110, 110,
|
||||
101, 114, 72, 84, 77, 76, 32, 61, 32, 39, 60, 115, 112, 97, 110,
|
||||
32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45, 119,
|
||||
101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59, 34, 62, 39, 32,
|
||||
43, 32, 39, 78, 117, 109, 98, 101, 114, 32, 111, 102, 32, 116, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 39, 32, 43, 32, 39,
|
||||
60, 47, 115, 112, 97, 110, 62, 39, 32, 43, 32, 39, 32, 39, 32,
|
||||
43, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110,
|
||||
100, 101, 120, 32, 43, 32, 39, 60, 98, 114, 62, 39, 59, 10, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 105, 102, 32, 32, 40, 116, 97, 114,
|
||||
103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77, 65,
|
||||
80, 95, 77, 65, 88, 95, 84, 82, 65, 78, 83, 41, 32, 123, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 97,
|
||||
97, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103,
|
||||
101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40,
|
||||
39, 100, 105, 115, 116, 97, 110, 99, 101, 39, 41, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 97, 97, 46, 32, 105, 110, 110,
|
||||
101, 114, 72, 84, 77, 76, 32, 32, 61, 32, 39, 60, 115, 112, 97,
|
||||
110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45,
|
||||
119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59, 34, 62, 39,
|
||||
32, 43, 32, 39, 70, 117, 114, 116, 104, 101, 115, 116, 32, 100, 105,
|
||||
115, 116, 97, 110, 99, 101, 32, 98, 121, 32, 60, 98, 114, 62, 39,
|
||||
32, 43, 32, 39, 60, 47, 115, 112, 97, 110, 62, 39, 32, 43, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116,
|
||||
46, 32, 99, 104, 97, 110, 110, 101, 108, 32, 43, 32, 39, 61, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32, 32, 43, 32, 39,
|
||||
32, 40, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
40, 116, 97, 114, 103, 101, 116, 46, 32, 112, 111, 119, 101, 114, 32,
|
||||
47, 32, 49, 48, 48, 46, 48, 41, 46, 32, 116, 111, 70, 105, 120,
|
||||
101, 100, 32, 40, 50, 41, 32, 43, 32, 39, 32, 107, 87, 41, 39,
|
||||
32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 100,
|
||||
97, 116, 101, 84, 105, 109, 101, 32, 43, 32, 39, 60, 98, 114, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111,
|
||||
111, 114, 100, 115, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 68, 105, 115, 116,
|
||||
97, 110, 99, 101, 32, 116, 111, 32, 104, 111, 109, 101, 32, 39, 32,
|
||||
43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 100, 105, 115, 116, 32, 43, 32, 39, 107, 109, 32,
|
||||
39, 32, 43, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116,
|
||||
97, 114, 103, 101, 116, 46, 32, 97, 122, 105, 109, 117, 116, 104, 32,
|
||||
43, 32, 39, 38, 35, 120, 98, 48, 39, 32, 43, 32, 39, 60, 98,
|
||||
114, 62, 60, 98, 114, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 10, 9, 32, 32, 32, 32, 32, 32, 125,
|
||||
10, 9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110,
|
||||
99, 116, 105, 111, 110, 32, 97, 100, 100, 84, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 32, 40, 116, 97, 114, 103, 101, 116, 41, 32,
|
||||
123, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 102, 105,
|
||||
114, 115, 116, 79, 110, 101, 32, 61, 32, 116, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 32, 61, 61, 32, 48,
|
||||
59, 10, 9, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116,
|
||||
46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 32, 61, 32, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77,
|
||||
65, 80, 95, 77, 65, 88, 95, 84, 82, 65, 78, 83, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 105, 99, 111, 110, 32,
|
||||
61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 32, 40, 116, 97, 114, 103, 101, 116,
|
||||
46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 32, 63, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 67, 79, 78, 95,
|
||||
70, 85, 82, 84, 72, 69, 83, 84, 32, 58, 32, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 67, 79, 78, 95, 67,
|
||||
85, 82, 82, 69, 78, 84, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 77, 97, 114, 107,
|
||||
101, 114, 32, 61, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 46, 32, 109,
|
||||
97, 114, 107, 101, 114, 40, 91, 116, 97, 114, 103, 101, 116, 46, 108,
|
||||
97, 116, 44, 32, 116, 97, 114, 103, 101, 116, 46, 108, 111, 110, 93,
|
||||
44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 123, 105, 99, 111, 110, 58, 32, 105, 99, 111, 110, 125,
|
||||
41, 32, 46, 97, 100, 100, 84, 111, 40, 77, 97, 112, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32,
|
||||
109, 97, 114, 107, 101, 114, 32, 61, 32, 116, 97, 114, 103, 101, 116,
|
||||
77, 97, 114, 107, 101, 114, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 115, 116, 97, 116, 117, 115, 32,
|
||||
61, 32, 116, 114, 117, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 99, 117, 114, 114, 101, 110, 116,
|
||||
32, 61, 32, 116, 114, 117, 101, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 116, 97, 114, 103, 101, 116, 46, 32, 109, 97, 114, 107, 101, 114,
|
||||
46, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 97, 100, 100, 69, 118, 101, 110, 116, 76, 105,
|
||||
115, 116, 101, 110, 101, 114, 32, 40, 39, 99, 108, 105, 99, 107, 39,
|
||||
44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105,
|
||||
111, 110, 32, 40, 41, 32, 123, 32, 115, 101, 108, 101, 99, 116, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 67, 97, 108, 108, 98,
|
||||
97, 99, 107, 32, 40, 116, 97, 114, 103, 101, 116, 41, 59, 125, 41,
|
||||
59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 115, 32, 91, 116, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 93, 32, 61, 32, 116,
|
||||
97, 114, 103, 101, 116, 59, 10, 9, 32, 32, 32, 32, 32, 32, 116,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120,
|
||||
32, 43, 43, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 108, 101,
|
||||
116, 32, 120, 120, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116,
|
||||
46, 32, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73,
|
||||
100, 32, 40, 39, 116, 101, 115, 116, 105, 110, 103, 39, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 120, 120, 46, 32, 105, 110, 110, 101,
|
||||
114, 72, 84, 77, 76, 32, 61, 32, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 60, 115, 112, 97, 110,
|
||||
32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45, 119,
|
||||
101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59, 34, 62, 39, 32,
|
||||
43, 32, 39, 67, 117, 114, 114, 101, 110, 116, 32, 58, 32, 39, 32,
|
||||
43, 32, 116, 97, 114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32,
|
||||
43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 32, 39, 60, 47, 115,
|
||||
112, 97, 110, 62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 115,
|
||||
104, 111, 119, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 65,
|
||||
116, 83, 105, 100, 101, 66, 97, 114, 32, 40, 116, 97, 114, 103, 101,
|
||||
116, 44, 32, 102, 105, 114, 115, 116, 79, 110, 101, 41, 59, 10, 9,
|
||||
32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110, 99, 116,
|
||||
105, 111, 110, 32, 99, 108, 101, 97, 114, 67, 117, 114, 114, 101, 110,
|
||||
116, 32, 40, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 102,
|
||||
111, 114, 32, 40, 118, 97, 114, 32, 105, 32, 61, 32, 48, 59, 32,
|
||||
105, 32, 60, 32, 116, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114,
|
||||
73, 110, 100, 101, 120, 59, 32, 105, 32, 43, 43, 41, 32, 123, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93,
|
||||
46, 32, 99, 117, 114, 114, 101, 110, 116, 41, 32, 123, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110,
|
||||
115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 99,
|
||||
117, 114, 114, 101, 110, 116, 32, 61, 32, 102, 97, 108, 115, 101, 59,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105,
|
||||
102, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 105, 93, 46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 41,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 98, 114, 101, 97, 107, 59, 9, 47, 47, 32, 104, 97, 100,
|
||||
32, 110, 111, 32, 34, 99, 117, 114, 114, 101, 110, 116, 34, 32, 105,
|
||||
99, 111, 110, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 77, 97, 112, 46, 32, 114, 101, 109, 111, 118, 101, 76, 97,
|
||||
121, 101, 114, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 115, 32, 91, 105, 93, 46, 32, 109, 97, 114, 107, 101, 114, 41,
|
||||
59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 118, 97, 114, 32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116,
|
||||
73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 32, 40, 73, 67, 79, 78, 95, 67, 85, 82, 82, 69,
|
||||
78, 84, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 105, 102, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 102, 117, 114, 116, 104,
|
||||
101, 115, 116, 41, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 105, 99, 111, 110, 32, 61, 32, 103, 101,
|
||||
116, 73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110, 115, 109, 105,
|
||||
116, 116, 101, 114, 32, 40, 73, 67, 79, 78, 95, 70, 85, 82, 84,
|
||||
72, 69, 83, 84, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 101, 108, 115, 101, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 105, 93, 46, 32,
|
||||
115, 116, 97, 116, 117, 115, 41, 9, 47, 47, 32, 99, 117, 114, 114,
|
||||
101, 110, 116, 32, 102, 114, 97, 109, 101, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 99, 111, 110,
|
||||
32, 61, 32, 103, 101, 116, 73, 99, 111, 110, 70, 111, 114, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 32, 40, 73, 67, 79, 78,
|
||||
95, 84, 79, 80, 70, 82, 65, 77, 69, 41, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116, 73, 99, 111, 110,
|
||||
70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 32,
|
||||
40, 73, 67, 79, 78, 95, 79, 84, 72, 69, 82, 70, 82, 65, 77,
|
||||
69, 41, 59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 108, 101, 116, 32, 101, 108, 101, 109, 101, 110, 116, 32,
|
||||
61, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32,
|
||||
91, 105, 93, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 108, 101, 116, 32, 101, 108, 101, 109, 101, 110, 116, 77,
|
||||
97, 114, 107, 101, 114, 32, 61, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76,
|
||||
46, 109, 97, 114, 107, 101, 114, 32, 40, 91, 101, 108, 101, 109, 101,
|
||||
110, 116, 46, 108, 97, 116, 44, 32, 101, 108, 101, 109, 101, 110, 116,
|
||||
46, 108, 111, 110, 93, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 123, 105, 99, 111, 110, 58, 32,
|
||||
105, 99, 111, 110, 125, 41, 46, 97, 100, 100, 84, 111, 40, 77, 97,
|
||||
112, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114,
|
||||
46, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 97, 100, 100, 69, 118, 101, 110,
|
||||
116, 76, 105, 115, 116, 101, 110, 101, 114, 32, 40, 39, 99, 108, 105,
|
||||
99, 107, 39, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
102, 117, 110, 99, 116, 105, 111, 110, 32, 40, 41, 32, 123, 32, 115,
|
||||
101, 108, 101, 99, 116, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 67, 97, 108, 108, 98, 97, 99, 107, 32, 40, 101, 108, 101, 109,
|
||||
101, 110, 116, 41, 59, 125, 41, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 115, 32, 91, 105, 93, 46, 32, 109, 97, 114, 107, 101,
|
||||
114, 32, 61, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97, 114, 107,
|
||||
101, 114, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 98, 114, 101, 97, 107, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 125, 10,
|
||||
9, 32, 32, 32, 125, 10, 47, 47, 9, 116, 104, 101, 32, 67, 85,
|
||||
82, 82, 69, 78, 84, 32, 99, 104, 97, 110, 103, 101, 100, 44, 32,
|
||||
115, 111, 32, 119, 101, 32, 104, 97, 118, 101, 32, 116, 111, 32, 114,
|
||||
101, 115, 116, 111, 114, 101, 32, 116, 104, 101, 32, 111, 108, 100, 10,
|
||||
47, 47, 9, 109, 97, 114, 107, 101, 114, 32, 102, 111, 114, 32, 116,
|
||||
104, 101, 32, 112, 114, 101, 118, 105, 111, 117, 115, 32, 99, 117, 114,
|
||||
114, 101, 110, 116, 32, 45, 32, 105, 102, 32, 97, 110, 121, 32, 45,
|
||||
32, 116, 104, 97, 116, 32, 105, 115, 10, 47, 47, 9, 115, 108, 105,
|
||||
103, 104, 116, 108, 121, 32, 99, 111, 109, 112, 108, 105, 99, 97, 116,
|
||||
101, 100, 32, 115, 105, 110, 99, 101, 32, 116, 104, 101, 114, 101, 32,
|
||||
97, 114, 101, 32, 115, 101, 118, 101, 114, 97, 108, 32, 111, 112, 116,
|
||||
105, 111, 110, 115, 10, 9, 32, 32, 32, 102, 117, 110, 99, 116, 105,
|
||||
111, 110, 32, 117, 112, 100, 97, 116, 101, 67, 117, 114, 114, 101, 110,
|
||||
116, 32, 40, 116, 97, 114, 103, 101, 116, 41, 32, 123, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 106,
|
||||
32, 61, 32, 48, 59, 32, 106, 32, 60, 32, 116, 114, 97, 110, 115,
|
||||
109, 105, 116, 116, 101, 114, 73, 110, 100, 101, 120, 59, 32, 106, 32,
|
||||
43, 43, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 40, 84, 114,
|
||||
97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 46,
|
||||
32, 108, 97, 116, 32, 61, 61, 32, 116, 97, 114, 103, 101, 116, 46,
|
||||
32, 108, 97, 116, 41, 32, 38, 38, 10, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91,
|
||||
106, 93, 46, 32, 108, 111, 110, 32, 61, 61, 32, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 108, 111, 110, 41, 32, 38, 38, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 84, 114, 97,
|
||||
110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 46, 32,
|
||||
99, 104, 97, 110, 110, 101, 108, 32, 61, 61, 32, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 99, 104, 97, 110, 110, 101, 108, 41, 41, 32, 123,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93,
|
||||
46, 32, 99, 117, 114, 114, 101, 110, 116, 32, 61, 32, 116, 114, 117,
|
||||
101, 59, 10, 47, 47, 10, 47, 47, 9, 114, 101, 99, 97, 108, 108,
|
||||
32, 116, 104, 97, 116, 32, 34, 102, 117, 114, 116, 104, 101, 115, 116,
|
||||
34, 32, 112, 111, 115, 105, 116, 105, 111, 110, 115, 32, 100, 111, 32,
|
||||
110, 111, 116, 32, 115, 104, 111, 119, 32, 97, 32, 34, 99, 117, 114,
|
||||
114, 101, 110, 116, 34, 32, 105, 99, 111, 110, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115, 32, 91, 106, 93,
|
||||
46, 32, 102, 117, 114, 116, 104, 101, 115, 116, 41, 32, 123, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
77, 97, 112, 46, 32, 114, 101, 109, 111, 118, 101, 76, 97, 121, 101,
|
||||
114, 32, 40, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 115,
|
||||
32, 91, 106, 93, 46, 32, 109, 97, 114, 107, 101, 114, 41, 59, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 118, 97, 114, 32, 105, 99, 111, 110, 32, 61, 32, 103, 101, 116,
|
||||
73, 99, 111, 110, 70, 111, 114, 84, 114, 97, 110, 115, 109, 105, 116,
|
||||
116, 101, 114, 32, 40, 73, 67, 79, 78, 95, 67, 85, 82, 82, 69,
|
||||
78, 84, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 108, 101, 109, 101,
|
||||
110, 116, 32, 61, 32, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101,
|
||||
114, 115, 32, 91, 106, 93, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 108, 101,
|
||||
109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 32, 61, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 76, 46, 109, 97, 114, 107, 101, 114,
|
||||
32, 40, 91, 101, 108, 101, 109, 101, 110, 116, 46, 108, 97, 116, 44,
|
||||
32, 101, 108, 101, 109, 101, 110, 116, 46, 108, 111, 110, 93, 44, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 123, 105, 99, 111, 110, 58, 32, 105, 99, 111, 110, 125, 41, 46,
|
||||
97, 100, 100, 84, 111, 40, 77, 97, 112, 41, 59, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108,
|
||||
101, 109, 101, 110, 116, 77, 97, 114, 107, 101, 114, 46, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 97, 100, 100, 69, 118, 101, 110, 116,
|
||||
76, 105, 115, 116, 101, 110, 101, 114, 32, 40, 39, 99, 108, 105, 99,
|
||||
107, 39, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102,
|
||||
117, 110, 99, 116, 105, 111, 110, 32, 40, 41, 32, 123, 32, 115, 101,
|
||||
108, 101, 99, 116, 84, 114, 97, 110, 115, 109, 105, 116, 116, 101, 114,
|
||||
67, 97, 108, 108, 98, 97, 99, 107, 32, 40, 101, 108, 101, 109, 101,
|
||||
110, 116, 41, 59, 125, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 114, 97, 110, 115, 109,
|
||||
105, 116, 116, 101, 114, 115, 32, 91, 106, 93, 46, 32, 109, 97, 114,
|
||||
107, 101, 114, 32, 61, 32, 101, 108, 101, 109, 101, 110, 116, 77, 97,
|
||||
114, 107, 101, 114, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 108, 101, 116, 32, 120, 120, 32, 61, 32, 100, 111,
|
||||
99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109,
|
||||
101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 116, 101, 115, 116, 105,
|
||||
110, 103, 39, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 120, 120, 46, 32, 105, 110, 110, 101, 114, 72, 84,
|
||||
77, 76, 32, 61, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 39, 60, 115, 112, 97, 110, 32, 115, 116,
|
||||
121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45, 119, 101, 105, 103,
|
||||
104, 116, 58, 98, 111, 108, 100, 59, 34, 62, 39, 32, 43, 32, 39,
|
||||
67, 117, 114, 114, 101, 110, 116, 32, 58, 32, 39, 32, 43, 32, 116,
|
||||
97, 114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32, 43, 32, 39,
|
||||
60, 98, 114, 62, 39, 32, 43, 32, 39, 60, 47, 115, 112, 97, 110,
|
||||
62, 39, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 98, 114, 101, 97, 107, 59, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32, 125, 10,
|
||||
9, 32, 32, 32, 125, 10, 10, 9, 32, 32, 32, 102, 117, 110, 99,
|
||||
116, 105, 111, 110, 32, 102, 101, 116, 99, 104, 68, 97, 116, 97, 32,
|
||||
40, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 36, 46, 103,
|
||||
101, 116, 74, 83, 79, 78, 32, 40, 39, 47, 100, 97, 116, 97, 46,
|
||||
106, 115, 111, 110, 39, 44, 32, 102, 117, 110, 99, 116, 105, 111, 110,
|
||||
32, 40, 100, 97, 116, 97, 41, 32, 123, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 116, 116, 32, 61, 32,
|
||||
100, 111, 99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108,
|
||||
101, 109, 101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 99, 117, 114,
|
||||
114, 101, 110, 116, 39, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 116, 32, 61,
|
||||
32, 48, 59, 32, 116, 32, 60, 32, 100, 97, 116, 97, 46, 32, 108,
|
||||
101, 110, 103, 116, 104, 59, 32, 116, 32, 43, 43, 41, 32, 123, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101,
|
||||
116, 32, 116, 97, 114, 103, 101, 116, 32, 61, 32, 100, 97, 116, 97,
|
||||
32, 91, 116, 93, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 105, 102, 32, 40, 116, 97, 114, 103, 101, 116, 46,
|
||||
32, 116, 121, 112, 101, 32, 61, 61, 32, 77, 65, 80, 95, 82, 69,
|
||||
83, 69, 84, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 104, 97, 110, 100, 108, 101, 95,
|
||||
109, 97, 112, 95, 114, 101, 115, 101, 116, 32, 40, 41, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
99, 111, 110, 116, 105, 110, 117, 101, 59, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61,
|
||||
32, 77, 65, 80, 95, 70, 82, 65, 77, 69, 41, 32, 123, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
104, 97, 110, 100, 108, 101, 95, 109, 97, 112, 95, 102, 114, 97, 109,
|
||||
101, 32, 40, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 105, 110, 117, 101,
|
||||
59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
125, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
101, 108, 115, 101, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 105, 102, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32,
|
||||
116, 121, 112, 101, 32, 61, 61, 32, 77, 65, 80, 95, 67, 85, 82,
|
||||
82, 69, 78, 84, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 117, 112, 100, 97, 116, 101,
|
||||
67, 117, 114, 114, 101, 110, 116, 32, 40, 116, 97, 114, 103, 101, 116,
|
||||
41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 99, 111, 110, 116, 105, 110, 117, 101, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 115,
|
||||
101, 32, 123, 9, 9, 47, 47, 32, 119, 101, 32, 97, 100, 100, 32,
|
||||
97, 110, 32, 101, 108, 101, 109, 101, 110, 116, 32, 10, 9, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102,
|
||||
32, 40, 33, 40, 40, 116, 97, 114, 103, 101, 116, 46, 32, 116, 121,
|
||||
112, 101, 32, 61, 61, 32, 77, 65, 80, 95, 77, 65, 88, 95, 84,
|
||||
82, 65, 78, 83, 41, 32, 124, 124, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 116,
|
||||
97, 114, 103, 101, 116, 46, 32, 116, 121, 112, 101, 32, 61, 61, 32,
|
||||
77, 65, 80, 95, 78, 79, 82, 77, 95, 84, 82, 65, 78, 83, 41,
|
||||
41, 41, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 105, 110, 117,
|
||||
101, 59, 10, 47, 47, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 67, 117, 114,
|
||||
114, 101, 110, 116, 32, 40, 41, 59, 9, 47, 47, 32, 97, 108, 119,
|
||||
97, 121, 115, 32, 103, 111, 111, 100, 10, 9, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 115,
|
||||
101, 101, 110, 65, 108, 114, 101, 97, 100, 121, 32, 40, 116, 97, 114,
|
||||
103, 101, 116, 41, 41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 117, 112, 100,
|
||||
97, 116, 101, 67, 117, 114, 114, 101, 110, 116, 32, 40, 116, 97, 114,
|
||||
103, 101, 116, 41, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 105,
|
||||
110, 117, 101, 59, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 125, 10, 9, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, 115, 101, 32, 123,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 97, 114, 103, 101, 116,
|
||||
46, 32, 116, 121, 112, 101, 32, 61, 61, 32, 77, 65, 80, 95, 77,
|
||||
65, 88, 95, 84, 82, 65, 78, 83, 41, 32, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 99, 108, 101, 97, 114, 80, 114, 101, 118, 105, 111, 117,
|
||||
115, 70, 117, 114, 116, 104, 101, 115, 116, 32, 40, 41, 59, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 97, 100, 100, 84, 114, 97, 110, 115, 109, 105, 116, 116,
|
||||
101, 114, 32, 40, 116, 97, 114, 103, 101, 116, 41, 59, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125,
|
||||
10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 125, 41, 59, 10, 9, 32, 32, 32, 125, 10,
|
||||
10, 9, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105,
|
||||
110, 105, 116, 105, 97, 108, 105, 122, 101, 32, 40, 41, 32, 123, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 77, 97, 112, 32, 61, 32, 76, 46,
|
||||
109, 97, 112, 32, 40, 39, 109, 97, 112, 95, 99, 97, 110, 118, 97,
|
||||
115, 39, 41, 46, 115, 101, 116, 86, 105, 101, 119, 40, 91, 104, 111,
|
||||
109, 101, 76, 97, 116, 105, 116, 117, 100, 101, 44, 32, 104, 111, 109,
|
||||
101, 76, 111, 110, 103, 105, 116, 117, 100, 101, 93, 44, 32, 56, 41,
|
||||
59, 10, 10, 9, 32, 32, 32, 32, 32, 32, 76, 46, 116, 105, 108,
|
||||
101, 76, 97, 121, 101, 114, 32, 40, 39, 104, 116, 116, 112, 115, 58,
|
||||
47, 47, 123, 115, 125, 46, 116, 105, 108, 101, 46, 111, 112, 101, 110,
|
||||
115, 116, 114, 101, 101, 116, 109, 97, 112, 46, 111, 114, 103, 47, 123,
|
||||
122, 125, 47, 123, 120, 125, 47, 123, 121, 125, 46, 112, 110, 103, 39,
|
||||
44, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 97, 116, 116, 114,
|
||||
105, 98, 117, 116, 105, 111, 110, 58, 32, 39, 77, 97, 112, 32, 100,
|
||||
97, 116, 97, 32, 38, 99, 111, 112, 121, 59, 32, 60, 97, 32, 104,
|
||||
114, 101, 102, 61, 34, 104, 116, 116, 112, 115, 58, 47, 47, 119, 119,
|
||||
119, 46, 111, 112, 101, 110, 115, 116, 114, 101, 101, 116, 109, 97, 112,
|
||||
46, 111, 114, 103, 47, 34, 62, 79, 112, 101, 110, 83, 116, 114, 101,
|
||||
101, 116, 77, 97, 112, 60, 47, 97, 62, 32, 99, 111, 110, 116, 114,
|
||||
105, 98, 117, 116, 111, 114, 115, 44, 32, 60, 97, 32, 104, 114, 101,
|
||||
102, 61, 34, 104, 116, 116, 112, 115, 58, 47, 47, 99, 114, 101, 97,
|
||||
116, 105, 118, 101, 99, 111, 109, 109, 111, 110, 115, 46, 111, 114, 103,
|
||||
47, 108, 105, 99, 101, 110, 115, 101, 115, 47, 98, 121, 45, 115, 97,
|
||||
47, 50, 46, 48, 47, 34, 62, 67, 67, 45, 66, 89, 45, 83, 65,
|
||||
60, 47, 97, 62, 44, 32, 73, 109, 97, 103, 101, 114, 121, 32, 194,
|
||||
169, 32, 60, 97, 32, 104, 114, 101, 102, 61, 34, 104, 116, 116, 112,
|
||||
115, 58, 47, 47, 119, 119, 119, 46, 109, 97, 112, 98, 111, 120, 46,
|
||||
99, 111, 109, 47, 34, 62, 77, 97, 112, 98, 111, 120, 60, 47, 97,
|
||||
62, 39, 44, 10, 9, 32, 32, 32, 32, 32, 32, 32, 109, 97, 120,
|
||||
90, 111, 111, 109, 58, 32, 49, 56, 44, 10, 9, 32, 32, 32, 32,
|
||||
32, 32, 32, 105, 100, 58, 32, 39, 109, 97, 112, 98, 111, 120, 47,
|
||||
115, 116, 114, 101, 101, 116, 115, 45, 118, 49, 49, 39, 44, 10, 9,
|
||||
32, 32, 32, 32, 32, 32, 32, 97, 99, 99, 101, 115, 115, 84, 111,
|
||||
107, 101, 110, 58, 32, 39, 121, 111, 117, 114, 46, 109, 97, 112, 98,
|
||||
111, 120, 46, 97, 99, 99, 101, 115, 115, 46, 116, 111, 107, 101, 110,
|
||||
39, 10, 9, 32, 32, 32, 125, 41, 46, 97, 100, 100, 84, 111, 40,
|
||||
77, 97, 112, 41, 59, 10, 10, 9, 32, 32, 32, 118, 97, 114, 32,
|
||||
105, 99, 111, 110, 32, 61, 32, 103, 101, 116, 73, 99, 111, 110, 70,
|
||||
111, 114, 72, 111, 109, 101, 32, 40, 41, 59, 10, 9, 32, 32, 32,
|
||||
118, 97, 114, 32, 104, 111, 109, 101, 77, 97, 114, 107, 101, 114, 32,
|
||||
61, 32, 76, 46, 109, 97, 114, 107, 101, 114, 40, 91, 104, 111, 109,
|
||||
101, 76, 97, 116, 105, 116, 117, 100, 101, 44, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 111, 109,
|
||||
101, 76, 111, 110, 103, 105, 116, 117, 100, 101, 93, 44, 32, 123, 105,
|
||||
99, 111, 110, 58, 32, 105, 99, 111, 110, 125, 41, 46, 97, 100, 100,
|
||||
84, 111, 40, 77, 97, 112, 41, 59, 10, 10, 47, 42, 32, 83, 101,
|
||||
116, 117, 112, 32, 111, 117, 114, 32, 116, 105, 109, 101, 114, 32, 116,
|
||||
111, 32, 112, 111, 108, 108, 32, 102, 114, 111, 109, 32, 116, 104, 101,
|
||||
32, 115, 101, 114, 118, 101, 114, 46, 32, 42, 47, 10, 9, 32, 32,
|
||||
32, 119, 105, 110, 100, 111, 119, 46, 115, 101, 116, 73, 110, 116, 101,
|
||||
114, 118, 97, 108, 40, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40,
|
||||
41, 32, 123, 10, 9, 32, 32, 32, 32, 32, 32, 102, 101, 116, 99,
|
||||
104, 68, 97, 116, 97, 32, 40, 41, 59, 10, 9, 32, 32, 32, 125,
|
||||
44, 32, 50, 48, 48, 48, 41, 59, 10, 9, 125, 10, 10, 9, 102,
|
||||
117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 108, 101, 99, 116, 84,
|
||||
114, 97, 110, 115, 109, 105, 116, 116, 101, 114, 67, 97, 108, 108, 98,
|
||||
97, 99, 107, 32, 40, 116, 97, 114, 103, 101, 116, 41, 32, 123, 10,
|
||||
9, 32, 32, 32, 108, 101, 116, 32, 120, 120, 32, 61, 32, 100, 111,
|
||||
99, 117, 109, 101, 110, 116, 46, 32, 103, 101, 116, 69, 108, 101, 109,
|
||||
101, 110, 116, 66, 121, 73, 100, 32, 40, 39, 115, 101, 108, 101, 99,
|
||||
116, 101, 100, 39, 41, 59, 10, 9, 32, 32, 32, 108, 101, 116, 32,
|
||||
110, 101, 119, 67, 104, 97, 110, 110, 101, 108, 32, 61, 32, 39, 60,
|
||||
115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, 92, 34, 102, 111,
|
||||
110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 98, 111, 108, 100, 59,
|
||||
102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 50, 48, 37, 92,
|
||||
34, 62, 39, 32, 43, 32, 116, 97, 114, 103, 101, 116, 46, 32, 99,
|
||||
104, 97, 110, 110, 101, 108, 32, 43, 32, 39, 60, 47, 115, 112, 97,
|
||||
110, 62, 39, 59, 10, 9, 32, 32, 32, 108, 101, 116, 32, 99, 111,
|
||||
111, 114, 100, 115, 32, 61, 32, 39, 60, 115, 112, 97, 110, 32, 115,
|
||||
116, 121, 108, 101, 61, 92, 34, 102, 111, 110, 116, 45, 115, 116, 121,
|
||||
108, 101, 58, 32, 105, 116, 97, 108, 105, 99, 59, 92, 34, 62, 39,
|
||||
32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
116, 97, 114, 103, 101, 116, 46, 32, 108, 97, 116, 32, 43, 32, 39,
|
||||
45, 45, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 108, 111, 110, 32,
|
||||
43, 32, 32, 39, 60, 47, 115, 112, 97, 110, 62, 39, 59, 10, 9,
|
||||
32, 32, 32, 120, 120, 46, 32, 105, 110, 110, 101, 114, 72, 84, 77,
|
||||
76, 32, 61, 32, 39, 60, 112, 32, 115, 116, 121, 108, 101, 61, 92,
|
||||
34, 112, 97, 100, 100, 105, 110, 103, 58, 32, 49, 48, 112, 120, 59,
|
||||
32, 98, 111, 114, 100, 101, 114, 58, 50, 112, 120, 32, 115, 111, 108,
|
||||
105, 100, 32, 98, 108, 97, 99, 107, 59, 92, 34, 62, 39, 32, 43,
|
||||
32, 39, 83, 101, 108, 101, 99, 116, 101, 100, 58, 32, 32, 39, 32,
|
||||
43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 10, 9, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 110, 101, 119, 67, 104, 97, 110, 110, 101, 108, 32, 43, 32,
|
||||
39, 61, 62, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97,
|
||||
114, 103, 101, 116, 46, 32, 110, 97, 109, 101, 32, 43, 32, 32, 39,
|
||||
32, 40, 39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 40, 116, 97, 114, 103, 101, 116, 46, 32, 112, 111, 119,
|
||||
101, 114, 32, 47, 32, 49, 48, 48, 46, 48, 41, 46, 32, 116, 111,
|
||||
70, 105, 120, 101, 100, 32, 40, 50, 41, 32, 43, 32, 39, 32, 107,
|
||||
87, 41, 39, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 10,
|
||||
9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 100,
|
||||
97, 116, 101, 84, 105, 109, 101, 32, 43, 32, 39, 60, 98, 114, 62,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 111, 114, 100,
|
||||
115, 32, 43, 32, 39, 60, 98, 114, 62, 39, 32, 43, 10, 9, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 39, 68, 105, 115, 116, 97, 110, 99, 101, 32, 116,
|
||||
111, 32, 104, 111, 109, 101, 32, 39, 32, 43, 32, 116, 97, 114, 103,
|
||||
101, 116, 46, 32, 100, 105, 115, 116, 32, 43, 32, 39, 107, 109, 32,
|
||||
39, 32, 43, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 46, 32, 97, 122, 105,
|
||||
109, 117, 116, 104, 32, 43, 32, 39, 38, 35, 120, 98, 48, 39, 32,
|
||||
43, 32, 39, 60, 98, 114, 62, 60, 47, 112, 62, 39, 10, 9, 125,
|
||||
10, 10, 60, 47, 115, 99, 114, 105, 112, 116, 62, 10, 60, 47, 104,
|
||||
101, 97, 100, 62, 10, 9, 60, 98, 111, 100, 121, 32, 111, 110, 108,
|
||||
111, 97, 100, 61, 34, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101,
|
||||
40, 41, 34, 62, 10, 9, 60, 100, 105, 118, 32, 105, 100, 61, 34,
|
||||
109, 97, 112, 95, 99, 97, 110, 118, 97, 115, 34, 32, 115, 116, 121,
|
||||
108, 101, 61, 34, 119, 105, 100, 116, 104, 58, 56, 48, 37, 59, 32,
|
||||
104, 101, 105, 103, 104, 116, 58, 49, 48, 48, 37, 34, 62, 60, 47,
|
||||
100, 105, 118, 62, 10, 9, 60, 100, 105, 118, 32, 105, 100, 61, 34,
|
||||
105, 110, 102, 111, 34, 62, 10, 9, 60, 100, 105, 118, 62, 10, 9,
|
||||
32, 32, 32, 60, 104, 49, 62, 81, 116, 45, 68, 65, 66, 60, 47,
|
||||
104, 49, 62, 10, 9, 32, 32, 32, 60, 112, 32, 105, 100, 61, 34,
|
||||
116, 101, 115, 116, 105, 110, 103, 34, 62, 60, 47, 112, 62, 10, 9,
|
||||
32, 32, 32, 60, 112, 32, 105, 100, 61, 34, 115, 101, 108, 101, 99,
|
||||
116, 101, 100, 34, 62, 60, 47, 112, 62, 10, 9, 32, 32, 32, 60,
|
||||
112, 32, 105, 100, 61, 34, 115, 101, 108, 67, 111, 117, 110, 116, 34,
|
||||
62, 60, 47, 112, 62, 10, 9, 32, 32, 32, 60, 112, 32, 105, 100,
|
||||
61, 34, 100, 105, 115, 116, 97, 110, 99, 101, 34, 62, 60, 47, 112,
|
||||
62, 10, 9, 32, 32, 32, 60, 112, 32, 105, 100, 61, 34, 115, 101,
|
||||
108, 105, 110, 102, 111, 34, 62, 60, 47, 112, 62, 10, 9, 32, 32,
|
||||
32, 60, 112, 32, 105, 100, 61, 34, 99, 117, 114, 114, 101, 110, 116,
|
||||
34, 62, 60, 47, 112, 62, 10, 9, 60, 47, 100, 105, 118, 62, 10,
|
||||
9, 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 47, 98, 111, 100,
|
||||
121, 62, 10, 60, 47, 104, 116, 109, 108, 62, 10,
|
||||
0};
|
@@ -1,14 +0,0 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
#include <QSettings>
|
||||
|
||||
|
||||
void store (QSettings *s, QString paragraph, QString key, QString v);
|
||||
void store (QSettings *s, QString paragraph, QString key, int value);
|
||||
int value_i (QSettings *s, QString paragraph, QString key, int def);
|
||||
float value_f (QSettings *s, QString paragraph, QString key, float def);
|
||||
QString value_s (QSettings *s, QString paragraph, QString key, QString def);
|
||||
void remove (QSettings *s, QString paragraoh, QString key);
|
||||
|
@@ -1,2 +0,0 @@
|
||||
JvanKatwijk
|
||||
|
0
includes/support/viterbi-jan/viterbi-handler.h → obsolete/viterbi-jan/viterbi-handler.h
Executable file → Normal file
0
includes/support/viterbi-jan/viterbi-handler.h → obsolete/viterbi-jan/viterbi-handler.h
Executable file → Normal file
@@ -12,7 +12,7 @@ mkdir -p ./appdir/usr/share/icons/hicolor/128x128/apps/
|
||||
mkdir -p ./appdir/usr/share/icons/hicolor/256x256/apps/
|
||||
|
||||
cp linux-bin/qt-dab* appdir/usr/bin/qt-dab-6.9.2
|
||||
cp qt-dab-6.9.desktop appdir/usr/share/applications
|
||||
cp app-files/qt-dab-6.9.desktop appdir/usr/share/applications
|
||||
cp ../res/radio-pcitures/qt-dab-6.9-256x256.png appdir/qt-dab-RC.png
|
||||
cp ../res/radio-pictures/qt-dab-6.9-128x128.png appdir/usr/share/icons/hicolor/128x128/apps/
|
||||
cp ../res/radio-pictures/qt-dab-6.9-256x256.png appdir/usr/share/icons/hicolor/256x256/apps/
|
||||
@@ -25,7 +25,7 @@ unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
|
||||
./linuxdeployqt*.AppImage ./appdir/usr/share/applications/* -bundle-non-qt-libs -no-translations
|
||||
./linuxdeployqt*.AppImage --appimage-extract
|
||||
find appdir/usr/plugins/ -type f -exec squashfs-root/usr/bin/patchelf --set-rpath '$ORIGIN/../../lib' {} \;
|
||||
chmod a+x appimage/* ; rm appdir/AppRun ; cp appimage/* appdir/
|
||||
chmod a+x app-files/appimage/* ; rm appdir/AppRun ; cp app-files/appimage/* appdir/
|
||||
export PATH=squashfs-root/usr/bin/:$PATH
|
||||
squashfs-root/usr/bin/appimagetool $(readlink -f ./appdir/)
|
||||
find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq
|
988
qt-dab-6.9.pro
Normal file
988
qt-dab-6.9.pro
Normal file
@@ -0,0 +1,988 @@
|
||||
######################################################################
|
||||
# Automatically generated by qmake (2.01a) Tue Oct 6 19:48:14 2009
|
||||
# but modified by me to accomodate for the includes for qwt, hamlib and
|
||||
# portaudio
|
||||
######################################################################
|
||||
|
||||
TEMPLATE = app
|
||||
QT += widgets xml multimedia
|
||||
#CONFIG += console
|
||||
CONFIG -= console
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
|
||||
win32 {
|
||||
QMAKE_CFLAGS += -O3 -ffast-math
|
||||
QMAKE_CXXFLAGS += -O3 -ffast-math
|
||||
}
|
||||
|
||||
unix {
|
||||
#QMAKE_CFLAGS += -O3 -ffast-math -pg
|
||||
#QMAKE_CXXFLAGS += -O3 -ffast-math -pg
|
||||
#QMAKE_LFLAGS += -O3 -ffast-math -pg
|
||||
QMAKE_CXXFLAGS += -ffast-math -flto
|
||||
QMAKE_CFLAGS += -ffast-math -flto
|
||||
QMAKE_LFLAGS += -ffast-math -flto
|
||||
#QMAKE_CFLAGS += -g -fsanitize=address
|
||||
#QMAKE_CXXFLAGS += -g -fsanitize=address
|
||||
#QMAKE_LFLAGS += -g -fsanitize=address
|
||||
}
|
||||
|
||||
#QMAKE_CFLAGS += -pg
|
||||
#QMAKE_CXXFLAGS += -pg
|
||||
#QMAKE_LFLAGS += -pg
|
||||
QMAKE_CXXFLAGS += -isystem $$[QT_INSTALL_HEADERS]
|
||||
RC_ICONS = qt-dab-6.9.ico
|
||||
RESOURCES += resources.qrc
|
||||
|
||||
TRANSLATIONS = ../i18n/de_DE.ts
|
||||
#
|
||||
# For more parallel processing, uncomment the following
|
||||
# defines
|
||||
#DEFINES += __MSC_THREAD__
|
||||
DEFINES += __THREADED_BACKEND__
|
||||
DEFINES += __FFT_CORR__
|
||||
|
||||
#For showing trace output
|
||||
#DEFINES += __EPG_TRACE__
|
||||
DEPENDPATH += . \
|
||||
..sources \
|
||||
./sources/backend\
|
||||
./sources/backend/reed-solomon \
|
||||
./sources/backend/audio \
|
||||
./sources/backend/data \
|
||||
./sources/backend/data/epg \
|
||||
./sources/backend/data/mot \
|
||||
./sources/backend/data/journaline \
|
||||
./sources/eti-handler \
|
||||
./sources/main \
|
||||
./sources/main/forms-v7 \
|
||||
./sources/main/forms-v7/new-display \
|
||||
./sources/main/forms-v7/new-display/scopes \
|
||||
./sources/main/forms-v7/snr-viewer \
|
||||
./sources/frontend \
|
||||
./sources/output \
|
||||
./sources/output/portaudio \
|
||||
./sources/protection \
|
||||
./sources/qt-devices \
|
||||
# ./sources/scopes-qwt6 \
|
||||
./sources/support \
|
||||
./sources/support/gui-elements \
|
||||
./sources/qt-devices \
|
||||
./sources/qt-devices/filereaders/ \
|
||||
./sources/qt-devices/filereaders/new-reader \
|
||||
./sources/qt-devices/filereaders/rawfiles-new \
|
||||
./sources/qt-devices/filereaders/xml-filereader
|
||||
|
||||
|
||||
INCLUDEPATH += . \
|
||||
..sources \
|
||||
./sources/backend\
|
||||
./sources/backend/reed-solomon \
|
||||
./sources/backend/audio \
|
||||
./sources/backend/data \
|
||||
./sources/backend/data/epg \
|
||||
./sources/backend/data/mot \
|
||||
./sources/backend/data/journaline \
|
||||
./sources/eti-handler \
|
||||
./sources/main \
|
||||
./sources/main/forms-v7 \
|
||||
./sources/main/forms-v7/new-display \
|
||||
./sources/main/forms-v7/new-display/scopes \
|
||||
./sources/main/forms-v7/snr-viewer \
|
||||
./sources/frontend \
|
||||
./sources/output \
|
||||
./sources/output/portaudio \
|
||||
./sources/protection \
|
||||
./sources/qt-devices \
|
||||
# ./sources/scopes-qwt6 \
|
||||
./sources/support \
|
||||
./sources/support/gui-elements \
|
||||
./sources/qt-devices \
|
||||
./sources/qt-devices/filereaders/ \
|
||||
./sources/qt-devices/filereaders/new-reader \
|
||||
./sources/qt-devices/filereaders/rawfiles-new \
|
||||
./sources/qt-devices/filereaders/xml-filereader
|
||||
|
||||
|
||||
# Input
|
||||
HEADERS += ./sources/main/radio.h \
|
||||
./sources/main/forms-v7/qwt-2.h \
|
||||
./sources/main/forms-v7/new-display/display-widget.h \
|
||||
./sources/main/forms-v7/new-display/scopes/spectrum-scope.h \
|
||||
./sources/main/forms-v7/new-display/scopes/correlation-scope.h \
|
||||
./sources/main/forms-v7/new-display/scopes/null-scope.h \
|
||||
./sources/main/forms-v7/new-display/scopes/channel-scope.h \
|
||||
./sources/main/forms-v7/new-display/scopes/dev-scope.h \
|
||||
./sources/main/forms-v7/new-display/scopes/waterfall-scope.h \
|
||||
./sources/main/forms-v7/new-display/scopes/iqdisplay.h \
|
||||
./sources/main/forms-v7/new-display/scopes/audio-display.h \
|
||||
./sources/main/forms-v7/new-display/scopes/spectrogramdata.h \
|
||||
./sources/main/forms-v7/snr-viewer/snr-viewer.h \
|
||||
./sources/main/ensemble-handler.h \
|
||||
./sources/main/config-handler.h \
|
||||
./sources/main/techdata.h \
|
||||
./sources/main/aboutdialog.h \
|
||||
./sources/support/scan-handler.h \
|
||||
./sources/support/scantable-handler.h \
|
||||
./sources/support/dxDisplay.h \
|
||||
./sources/support/audiosystem-selector.h \
|
||||
./sources/eti-handler/eti-generator.h \
|
||||
./sources/frontend/ofdm-handler.h \
|
||||
./sources/frontend/timesyncer.h \
|
||||
./sources/frontend/sample-reader.h \
|
||||
./sources/frontend/ofdm-decoder.h \
|
||||
./sources/frontend/correlator.h \
|
||||
./sources/frontend/freqsyncer.h \
|
||||
./sources/frontend/phasetable.h \
|
||||
./sources/frontend/freq-interleaver.h \
|
||||
./sources/frontend/tii-detector.h \
|
||||
./sources/frontend/tii-detector-1.h \
|
||||
./sources/frontend/tii-detector-2.h \
|
||||
./sources/frontend/fic-handler.h \
|
||||
./sources/frontend/ensemble.h \
|
||||
./sources/frontend/fib-config.h \
|
||||
./sources/frontend/fib-printer.h \
|
||||
./sources/frontend/fib-decoder.h \
|
||||
./sources/frontend/fib-table.h \
|
||||
./sources/frontend/estimator.h \
|
||||
./sources/protection/protTables.h \
|
||||
./sources/protection/protection.h \
|
||||
./sources/protection/eep-protection.h \
|
||||
./sources/protection/uep-protection.h \
|
||||
./sources/backend/msc-handler.h \
|
||||
./sources/backend/reed-solomon/galois.h \
|
||||
./sources/backend/reed-solomon/reed-solomon.h \
|
||||
./sources/backend/charsets.h \
|
||||
./sources/backend/frame-processor.h \
|
||||
./sources/backend/backend.h \
|
||||
./sources/backend/backend-driver.h \
|
||||
./sources/backend/backend-deconvolver.h \
|
||||
./sources/backend/audio/firecode-checker.h \
|
||||
./sources/backend/audio/mp2processor.h \
|
||||
./sources/backend/audio/mp4processor.h \
|
||||
./sources/backend/audio/bitWriter.h \
|
||||
./sources/backend/data/data-processor.h \
|
||||
./sources/backend/data/pad-handler.h \
|
||||
./sources/backend/data/virtual-datahandler.h \
|
||||
./sources/backend/data/tdc-datahandler.h \
|
||||
./sources/backend/data/ip-datahandler.h \
|
||||
./sources/backend/data/adv-datahandler.h \
|
||||
./sources/backend/data/mot/mot-handler.h \
|
||||
./sources/backend/data/mot/mot-object.h \
|
||||
./sources/backend/data/mot/mot-dir.h \
|
||||
./sources/backend/data/journaline-datahandler.h \
|
||||
./sources/backend/data/journaline-screen.h \
|
||||
./sources/backend/data/journaline/dabdatagroupdecoder.h \
|
||||
./sources/backend/data/journaline/crc_8_16.h \
|
||||
./sources/backend/data/journaline/log.h \
|
||||
./sources/backend/data/journaline/newssvcdec_impl.h \
|
||||
./sources/backend/data/journaline/Splitter.h \
|
||||
./sources/backend/data/journaline/dabdgdec_impl.h \
|
||||
./sources/backend/data/journaline/newsobject.h \
|
||||
./sources/backend/data/journaline/NML.h \
|
||||
./sources/backend/data/epg/epg-compiler.h \
|
||||
./sources/backend/data/epg/xml-extractor.h \
|
||||
./sources/output/audio-player.h \
|
||||
./sources/support/dab-constants.h \
|
||||
./sources/support/bit-extractors.h \
|
||||
./sources/support/crc-handlers.h \
|
||||
./sources/support/mot-content-types.h \
|
||||
./sources/support/distances.h \
|
||||
./sources/support/time-converter.h \
|
||||
./sources/support/logger.h \
|
||||
./sources/support/settings-handler.h \
|
||||
./sources/support/position-handler.h \
|
||||
./sources/support/cacheElement.h \
|
||||
./sources/support/settingNames.h \
|
||||
./sources/support/fft-handler.h \
|
||||
./sources/support/wavWriter.h \
|
||||
./sources/support/converter_48000.h \
|
||||
./sources/support/process-params.h \
|
||||
./sources/support/ringbuffer.h \
|
||||
./sources/support/dab-params.h \
|
||||
./sources/support/dab-tables.h \
|
||||
./sources/support/presetcombobox.h \
|
||||
./sources/support/scanlist-handler.h \
|
||||
./sources/support/scheduler.h \
|
||||
./sources/support/schedule-selector.h \
|
||||
./sources/support/element-selector.h \
|
||||
./sources/support/time-table.h \
|
||||
./sources/support/findfilenames.h \
|
||||
./sources/support/dl-cache.h \
|
||||
./sources/support/content-table.h \
|
||||
./sources/support/ITU_Region_1.h \
|
||||
./sources/support/coordinates.h \
|
||||
./sources/support/skin-handler.h \
|
||||
./sources/support/mapport.h \
|
||||
./sources/support/bandpass-filter.h \
|
||||
./sources/support/fir-filters.h \
|
||||
./sources/support/tii-mapper.h \
|
||||
./sources/support/tii-reader.h \
|
||||
./sources/support//uploader.h \
|
||||
./sources/support/gui-elements/circular-button.h \
|
||||
./sources/support/gui-elements/clickable-label.h \
|
||||
./sources/support/gui-elements/color-selector.h \
|
||||
./sources/support/gui-elements/font-chooser.h \
|
||||
./sources/support/gui-elements/icon-label.h \
|
||||
./sources/support/gui-elements/newpushbutton.h \
|
||||
./sources/support/gui-elements/normalpushbutton.h \
|
||||
./sources/support/gui-elements/smallcombobox.h \
|
||||
./sources/support/gui-elements/smallpushbutton.h \
|
||||
./sources/support/gui-elements/smallqlistview.h \
|
||||
./sources/support/gui-elements/smallspinbox.h \
|
||||
./sources/support/gui-elements/super-frame.h \
|
||||
./sources/support/gui-elements/verysmallpushbutton.h \
|
||||
./sources/qt-devices/device-handler.h \
|
||||
./sources/qt-devices/device-chooser.h \
|
||||
./sources/qt-devices/device-exceptions.h \
|
||||
./sources/qt-devices/xml-filewriter.h \
|
||||
./sources/qt-devices/filereaders/new-reader/newfiles.h \
|
||||
./sources/qt-devices/filereaders/new-reader/new-reader.h \
|
||||
./sources/qt-devices/filereaders/new-reader/riff-reader.h \
|
||||
./sources/qt-devices/filereaders/rawfiles-new/rawfiles.h \
|
||||
./sources/qt-devices/filereaders/rawfiles-new/raw-reader.h \
|
||||
./sources/qt-devices/filereaders/xml-filereader/element-reader.h \
|
||||
./sources/qt-devices/filereaders/xml-filereader/xml-filereader.h \
|
||||
./sources/qt-devices/filereaders/xml-filereader/xml-reader.h \
|
||||
./sources/qt-devices/filereaders/xml-filereader/xml-descriptor.h
|
||||
|
||||
FORMS += ./sources/main/forms-v7/technical_data.ui
|
||||
FORMS += ./sources/main/forms-v7/dabradio-6.ui
|
||||
FORMS += ./sources/main/forms-v7/config-helper.ui
|
||||
FORMS += ./sources/main/forms-v7/audio-description.ui
|
||||
FORMS += ./sources/main/forms-v7/data-description.ui
|
||||
FORMS += ./sources/main/forms-v7/new-display/scopewidget.ui
|
||||
FORMS += ./sources/main/forms-v7/snr-viewer/snr-widget.ui
|
||||
FORMS += ./sources/main/aboutdialog.ui
|
||||
#FORMS += ./sources/qt-devices/filereaders/filereader-widget.ui
|
||||
FORMS += ./sources/qt-devices/filereaders/xml-filereader/xmlfiles.ui
|
||||
|
||||
SOURCES += ./sources/main/main.cpp \
|
||||
./sources/main/radio.cpp \
|
||||
./sources/main/forms-v7/new-display/display-widget.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/correlation-scope.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/spectrum-scope.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/null-scope.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/channel-scope.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/dev-scope.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/waterfall-scope.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/iqdisplay.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/audio-display.cpp \
|
||||
./sources/main/forms-v7/new-display/scopes/spectrogramdata.cpp \
|
||||
./sources/main/forms-v7/snr-viewer/snr-viewer.cpp \
|
||||
./sources/main/aboutdialog.cpp \
|
||||
./sources/main/ensemble-handler.cpp \
|
||||
./sources/main/techdata.cpp \
|
||||
./sources/main/config-handler.cpp \
|
||||
./sources/support/scan-handler.cpp \
|
||||
./sources/support/scantable-handler.cpp \
|
||||
./sources/support/audiosystem-selector.cpp \
|
||||
./sources/support/dxDisplay.cpp \
|
||||
./sources/eti-handler/eti-generator.cpp \
|
||||
./sources/frontend/ofdm-handler.cpp \
|
||||
./sources/frontend/timesyncer.cpp \
|
||||
./sources/frontend/sample-reader.cpp \
|
||||
./sources/frontend/ofdm-decoder.cpp \
|
||||
./sources/frontend/correlator.cpp \
|
||||
./sources/frontend/freqsyncer.cpp \
|
||||
./sources/frontend/phasetable.cpp \
|
||||
./sources/frontend/freq-interleaver.cpp \
|
||||
./sources/frontend/tii-detector.cpp \
|
||||
./sources/frontend/tii-detector-1.cpp \
|
||||
./sources/frontend/tii-detector-2.cpp \
|
||||
./sources/frontend/fic-handler.cpp \
|
||||
./sources/frontend/ensemble.cpp \
|
||||
./sources/frontend/fib-config.cpp \
|
||||
./sources/frontend/fib-printer.cpp \
|
||||
./sources/frontend/fib-decoder.cpp \
|
||||
./sources/frontend/estimator.cpp \
|
||||
./sources/protection/protTables.cpp \
|
||||
./sources/protection/protection.cpp \
|
||||
./sources/protection/eep-protection.cpp \
|
||||
./sources/protection/uep-protection.cpp \
|
||||
./sources/backend/msc-handler.cpp \
|
||||
./sources/backend/reed-solomon/galois.cpp \
|
||||
./sources/backend/reed-solomon/reed-solomon.cpp \
|
||||
./sources/backend/charsets.cpp \
|
||||
./sources/backend/backend.cpp \
|
||||
./sources/backend/backend-driver.cpp \
|
||||
./sources/backend/backend-deconvolver.cpp \
|
||||
./sources/backend/audio/firecode-checker.cpp \
|
||||
./sources/backend/audio/mp2processor.cpp \
|
||||
./sources/backend/audio/mp4processor.cpp \
|
||||
./sources/backend/audio/bitWriter.cpp \
|
||||
./sources/backend/data/pad-handler.cpp \
|
||||
./sources/backend/data/data-processor.cpp \
|
||||
./sources/backend/data/tdc-datahandler.cpp \
|
||||
./sources/backend/data/ip-datahandler.cpp \
|
||||
./sources/backend/data/adv-datahandler.cpp \
|
||||
./sources/backend/data/mot/mot-handler.cpp \
|
||||
./sources/backend/data/mot/mot-object.cpp \
|
||||
./sources/backend/data/mot/mot-dir.cpp \
|
||||
./sources/backend/data/journaline-datahandler.cpp \
|
||||
./sources/backend/data/journaline-screen.cpp \
|
||||
./sources/backend/data/journaline/crc_8_16.c \
|
||||
./sources/backend/data/journaline/log.c \
|
||||
./sources/backend/data/journaline/newssvcdec_impl.cpp \
|
||||
./sources/backend/data/journaline/Splitter.cpp \
|
||||
./sources/backend/data/journaline/dabdgdec_impl.c \
|
||||
./sources/backend/data/journaline/newsobject.cpp \
|
||||
./sources/backend/data/journaline/NML.cpp \
|
||||
./sources/backend/data/epg/epg-compiler.cpp \
|
||||
./sources/backend/data/epg/xml-extractor.cpp \
|
||||
./sources/output/audio-player.cpp \
|
||||
./sources/support/distances.cpp \
|
||||
./sources/support/time-converter.cpp \
|
||||
./sources/support/logger.cpp \
|
||||
./sources/support/settings-handler.cpp \
|
||||
./sources/support/position-handler.cpp \
|
||||
./sources/support/wavWriter.cpp \
|
||||
./sources/support/converter_48000.cpp \
|
||||
./sources/support/fft-handler.cpp \
|
||||
./sources/support/dab-params.cpp \
|
||||
./sources/support/dab-tables.cpp \
|
||||
# ./sources/support/preset-handler.cpp \
|
||||
./sources/support/presetcombobox.cpp \
|
||||
./sources/support/scanlist-handler.cpp \
|
||||
./sources/support/scheduler.cpp \
|
||||
./sources/support/schedule-selector.cpp \
|
||||
./sources/support/element-selector.cpp \
|
||||
./sources/support/time-table.cpp \
|
||||
./sources/support/findfilenames.cpp \
|
||||
./sources/support/content-table.cpp \
|
||||
./sources/support/ITU_Region_1.cpp \
|
||||
./sources/support/coordinates.cpp \
|
||||
./sources/support/skin-handler.cpp \
|
||||
./sources/support/mapport.cpp \
|
||||
./sources/support/bandpass-filter.cpp \
|
||||
./sources/support/fir-filters.cpp \
|
||||
./sources/support/tii-mapper.cpp \
|
||||
./sources/support/tii-reader.cpp \
|
||||
./sources/support/uploader.cpp \
|
||||
./sources/support/gui-elements/circular-button.cpp \
|
||||
./sources/support/gui-elements/clickable-label.cpp \
|
||||
./sources/support/gui-elements/color-selector.cpp \
|
||||
./sources/support/gui-elements/font-chooser.cpp \
|
||||
./sources/support/gui-elements/icon-label.cpp \
|
||||
./sources/support/gui-elements/newpushbutton.cpp \
|
||||
./sources/support/gui-elements/normalpushbutton.cpp \
|
||||
./sources/support/gui-elements/smallcombobox.cpp \
|
||||
./sources/support/gui-elements/smallpushbutton.cpp \
|
||||
./sources/support/gui-elements/smallqlistview.cpp \
|
||||
./sources/support/gui-elements/smallspinbox.cpp \
|
||||
./sources/support/gui-elements/super-frame.cpp \
|
||||
./sources/support/gui-elements/verysmallpushbutton.cpp \
|
||||
./sources/qt-devices/device-handler.cpp \
|
||||
./sources/qt-devices/device-chooser.cpp \
|
||||
./sources/qt-devices/xml-filewriter.cpp \
|
||||
./sources/qt-devices/filereaders/rawfiles-new/rawfiles.cpp \
|
||||
./sources/qt-devices/filereaders/rawfiles-new/raw-reader.cpp \
|
||||
./sources/qt-devices/filereaders/new-reader/newfiles.cpp \
|
||||
./sources/qt-devices/filereaders/new-reader/new-reader.cpp \
|
||||
./sources/qt-devices/filereaders/new-reader/riff-reader.cpp \
|
||||
# ./sources/qt-devices/filereaders/wavfiles-new/wavfiles.cpp \
|
||||
# ./sources/qt-devices/filereaders/wavfiles-new/wav-reader.cpp \
|
||||
./sources/qt-devices/filereaders/xml-filereader/xml-filereader.cpp \
|
||||
./sources/qt-devices/filereaders/xml-filereader/xml-reader.cpp \
|
||||
./sources/qt-devices/filereaders/xml-filereader/xml-descriptor.cpp
|
||||
|
||||
#
|
||||
unix {
|
||||
DESTDIR = ./linux-bin
|
||||
equals (QT_MAJOR_VERSION, 5) {
|
||||
TARGET = qt-dab-qt5-6.9.3
|
||||
}
|
||||
else {
|
||||
TARGET = qt-dab-qt6-6.9.3
|
||||
}
|
||||
exists ("../.git") {
|
||||
GITHASHSTRING = $$system(git rev-parse --short HEAD)
|
||||
!isEmpty(GITHASHSTRING) {
|
||||
message("Current git hash = $$GITHASHSTRING")
|
||||
DEFINES += GITHASH=\\\"$$GITHASHSTRING\\\"
|
||||
}
|
||||
}
|
||||
isEmpty(GITHASHSTRING) {
|
||||
DEFINES += GITHASH=\\\"------\\\"
|
||||
}
|
||||
|
||||
mac {
|
||||
DESTDIR = ./mac-bin
|
||||
PKG_CONFIG = /usr/local/bin/pkg-config
|
||||
QT_CONFIG -= no-pkg-config
|
||||
}
|
||||
|
||||
CONFIG += link_pkgconfig
|
||||
#PKGCONFIG += sndfile
|
||||
#PKGCONFIG += samplerate
|
||||
PKGCONFIG += libusb-1.0
|
||||
CONFIG += mapserver
|
||||
!mac {
|
||||
LIBS += -ldl
|
||||
}
|
||||
PKGCONFIG += portaudio-2.0
|
||||
PKGCONFIG += zlib
|
||||
#PKGCONFIG += sndfile
|
||||
#PKGCONFIG += samplerate
|
||||
INCLUDEPATH += /usr/local/include
|
||||
!mac {
|
||||
INCLUDEPATH += /usr/local/include
|
||||
#correct this for the correct path to the qwt6 library on your system
|
||||
#LIBS += -lqwt
|
||||
equals (QT_MAJOR_VERSION, 6) {
|
||||
LIBS += -lqwt-qt6
|
||||
}else{ LIBS += -lqwt-qt5
|
||||
}
|
||||
}
|
||||
|
||||
#mac {
|
||||
# Should be possible to make on non Macs as well.
|
||||
# qmake -set QMAKEFEATURES /usr/local/Cellar/qwt/6.2.0/features
|
||||
CONFIG += qwt
|
||||
#}
|
||||
#CONFIG += double
|
||||
CONFIG += single
|
||||
#
|
||||
# comment or uncomment for the devices you want to have support for
|
||||
# (you obviously have libraries installed for the selected ones)
|
||||
CONFIG += sdrplay-v2
|
||||
CONFIG += sdrplay-v3
|
||||
CONFIG += dabstick-linux
|
||||
CONFIG += rtl_tcp
|
||||
CONFIG += airspy-2
|
||||
CONFIG += hackrf
|
||||
CONFIG += lime
|
||||
#CONFIG += soapy
|
||||
#CONFIG += pluto-rxtx
|
||||
CONFIG += pluto
|
||||
CONFIG += spyServer-16
|
||||
CONFIG += spyServer-8
|
||||
#CONFIG += uhd
|
||||
#CONFIG += colibri
|
||||
#CONFIG += elad-device
|
||||
#CONFIG += faad
|
||||
CONFIG += fdk-aac
|
||||
#very experimental, simple server for connecting to a tdc handler
|
||||
CONFIG += datastreamer
|
||||
#to handle output of embedded an IP data stream, uncomment
|
||||
#CONFIG += send_datagram
|
||||
|
||||
#if you want to listen remote, uncomment
|
||||
#CONFIG += tcp-streamer # use for remote listening
|
||||
#otherwise, if you want to use the default, uncomment
|
||||
CONFIG += local-audio
|
||||
|
||||
#CONFIG += viterbi-scalar
|
||||
#CONFIG += viterbi-sse
|
||||
#CONFIG += viterbi-avx2
|
||||
CONFIG += spiral-sse
|
||||
#CONFIG += spiral-no-sse
|
||||
#DEFINES += SHOW_MISSING
|
||||
DEFINES += __LOGGING__
|
||||
DEFINES += __DUMP_SNR__ # for experiments only
|
||||
}
|
||||
|
||||
# an attempt to have it run under W32 through cross compilation
|
||||
win32 {
|
||||
exists ("../.git") {
|
||||
GITHASHSTRING = $$system(git rev-parse --short HEAD)
|
||||
!isEmpty(GITHASHSTRING) {
|
||||
message("Current git hash = $$GITHASHSTRING")
|
||||
DEFINES += GITHASH=\\\"$$GITHASHSTRING\\\"
|
||||
}
|
||||
}
|
||||
isEmpty(GITHASHSTRING) {
|
||||
DEFINES += GITHASH=\\\"------\\\"
|
||||
}
|
||||
|
||||
##for for 64 bit
|
||||
# TARGET = qt-dab64-9
|
||||
# DEFINES += __BITS64__
|
||||
# DESTDIR = /usr/shared/w64-programs/windows-dab64-qt
|
||||
# INCLUDEPATH += /usr/x64-w64-mingw32/sys-root/mingw/include
|
||||
# INCLUDEPATH += /usr/local/include /usr/include/qt4/qwt /usr/include/qt5/qwt /usr/include/qt4/qwt /usr/include/qwt /usr/local/qwt-6.1.4-svn/
|
||||
# LIBS += -L/usr/x64-w64-mingw32/sys-root/mingw/lib
|
||||
## LIBS += -liio
|
||||
## #CONFIG += extio
|
||||
# CONFIG += airspy-2
|
||||
# CONFIG += rtl_tcp
|
||||
# CONFIG += dabstick
|
||||
# CONFIG += sdrplay-v2
|
||||
# CONFIG += pluto
|
||||
# CONFIG += sdrplay-v3
|
||||
## CONFIG += hackrf
|
||||
## CONFIG += lime
|
||||
# CONFIG += viterbi-scalar
|
||||
# CONFIG += spiral-sse
|
||||
# CONFIG += spiral-no-sse
|
||||
# DEFINES += __THREADED_BACKEND
|
||||
#
|
||||
#for win32, comment out the lines above
|
||||
# equals (QT_MAJOR_VERSION, 5) {
|
||||
# TARGET = qt-dab32-qt5-6.9V3.3
|
||||
# }
|
||||
# else {
|
||||
# TARGET = qt-dab32-qt6-6.9V3.3
|
||||
# }
|
||||
# CONFIG += dabstick-win-v3
|
||||
equals (QT_MAJOR_VERSION, 5) {
|
||||
TARGET = qt-dab32-qt5-6.9.3
|
||||
}
|
||||
else {
|
||||
TARGET = qt-dab32-qt6-6.9.3
|
||||
}
|
||||
CONFIG += dabstick-win-v4
|
||||
CONFIG += airspy-2
|
||||
CONFIG += spyServer-16
|
||||
CONFIG += spyServer-8
|
||||
DESTDIR = /usr/shared/w32-programs/windows-dab32-qt
|
||||
INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include
|
||||
equals (QT_MAJOR_VERSION, 6) {
|
||||
INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qt6/qwt
|
||||
} else {
|
||||
INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qt5/qwt
|
||||
}
|
||||
LIBS += -L/usr/i686-w64-mingw32/sys-root/mingw/lib
|
||||
CONFIG += double
|
||||
#CONFIG += single
|
||||
CONFIG += mapserver
|
||||
CONFIG += extio
|
||||
CONFIG += rtl_tcp
|
||||
CONFIG += sdrplay-v2
|
||||
CONFIG += sdrplay-v3
|
||||
CONFIG += hackrf
|
||||
CONFIG += lime
|
||||
CONFIG += pluto
|
||||
CONFIG += viterbi-scalar
|
||||
# CONFIG += viterbi-sse
|
||||
# CONFIG += viterbi-avx2
|
||||
# CONFIG += spiral-sse
|
||||
# CONFIG += spiral-no-sse
|
||||
#
|
||||
# end of 32/64 specifics
|
||||
INCLUDEPATH += /usr/local/include
|
||||
LIBS += -lportaudio
|
||||
#LIBS += /usr/i686-w64-mingw32/sys-root/mingw/bin/libsndfile-1.dll
|
||||
#LIBS += /usr/i686-w64-mingw32/sys-root/mingw/bin/libsamplerate-0.dll
|
||||
LIBS += -lole32
|
||||
LIBS += -lwinpthread
|
||||
LIBS += -lwinmm
|
||||
LIBS += -lstdc++
|
||||
LIBS += -lws2_32
|
||||
LIBS += -lusb-1.0
|
||||
LIBS += -lz
|
||||
#correct this for the correct path to the qwt6 library on your system
|
||||
#mingw64 wants the first one, cross compiling mingw64-32 the second one
|
||||
#LIBS += -lqwt
|
||||
equals (QT_MAJOR_VERSION, 6) {
|
||||
LIBS += -lqwt-qt6
|
||||
}
|
||||
else {
|
||||
LIBS += -lqwt-qt5
|
||||
}
|
||||
CONFIG += faad
|
||||
#
|
||||
#very experimental, simple server for connecting to a tdc handler
|
||||
#CONFIG += datastreamer
|
||||
|
||||
#if you want to listen remote, uncomment
|
||||
#CONFIG += tcp-streamer # use for remote listening
|
||||
#otherwise, if you want to use the default qt way of soud out
|
||||
CONFIG += local-audio
|
||||
#comment both out if you just want to use the "normal" way
|
||||
|
||||
DEFINES += __DUMP_SNR__ # for experiments only
|
||||
}
|
||||
|
||||
### dabstick
|
||||
# Note: the windows version is bound to the dll, the
|
||||
# linux version loads the function from the so
|
||||
dabstick-linux {
|
||||
DEFINES += HAVE_RTLSDR
|
||||
DEPENDPATH += ./sources/qt-devices/rtlsdr-handler-linux
|
||||
INCLUDEPATH += ./sources/qt-devices/rtlsdr-handler-linux
|
||||
HEADERS += ./sources/qt-devices/rtlsdr-handler-linux/rtlsdr-handler.h \
|
||||
./sources/qt-devices/rtlsdr-handler-linux/dll-driver.h \
|
||||
./sources/qt-devices/rtlsdr-handler-linux/rtl-dongleselect.h
|
||||
SOURCES += ./sources/qt-devices/rtlsdr-handler-linux/rtlsdr-handler.cpp \
|
||||
./sources/qt-devices/rtlsdr-handler-linux/dll-driver.cpp \
|
||||
./sources/qt-devices/rtlsdr-handler-linux/rtl-dongleselect.cpp
|
||||
FORMS += ./sources/qt-devices/rtlsdr-handler-linux/rtlsdr-widget.ui
|
||||
}
|
||||
|
||||
dabstick-win-v4 {
|
||||
DEFINES += HAVE_RTLSDR_V4
|
||||
DEPENDPATH += ./sources/qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ./sources/qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ../usr/shared/drivers/rtlsdrWindowsV4
|
||||
INCLUDEPATH += ../usr/shared/drivers/rtlsdrWindowsV4/x86
|
||||
HEADERS += ./sources/qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.h \
|
||||
./sources/qt-devices/rtlsdr-handler-common/rtl-dongleselect.h
|
||||
SOURCES += ./sources/qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.cpp \
|
||||
./sources/qt-devices/rtlsdr-handler-common/rtl-dongleselect.cpp
|
||||
FORMS += ./sources/qt-devices/rtlsdr-handler-common/rtlsdr-widget.ui
|
||||
LIBS += /usr/shared/drivers/rtlsdrWindowsV4/x86/rtlsdr.dll
|
||||
}
|
||||
|
||||
dabstick-win-v3 {
|
||||
DEFINES += HAVE_RTLSDR_V3
|
||||
DEPENDPATH += ./sources/qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ./sources/qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ./sources/qt-devices/rtlsdr-handler-common
|
||||
HEADERS += ./sources/qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.h \
|
||||
./sources/qt-devices/rtlsdr-handler-common/rtl-dongleselect.h
|
||||
SOURCES += ./sources/qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.cpp \
|
||||
./sources/qt-devices/rtlsdr-handler-common/rtl-dongleselect.cpp
|
||||
FORMS += ./sources/qt-devices/rtlsdr-handler-common/rtlsdr-widget.ui
|
||||
# LIBS += /usr/i686-s64-mingw32/sys-root/mingw/bin/librtlsdr.dll
|
||||
LIBS += /usr/i686-w64-mingw32/sys-root/mingw/bin/librtlsdr.dll
|
||||
}
|
||||
|
||||
#
|
||||
# the SDRplay
|
||||
#
|
||||
sdrplay-v2 {
|
||||
DEFINES += HAVE_SDRPLAY_V2
|
||||
DEPENDPATH += ./sources/qt-devices/sdrplay-handler-v2
|
||||
INCLUDEPATH += ./sources/qt-devices/sdrplay-handler-v2
|
||||
INCLUDEPATH += ./sources/qt-devices/rtlsdr-handler-common
|
||||
HEADERS += ./sources/qt-devices/sdrplay-handler-v2/sdrplay-handler-v2.h \
|
||||
./sources/qt-devices/sdrplay-handler-v2/sdrplayselect.h
|
||||
SOURCES += ./sources/qt-devices/sdrplay-handler-v2/sdrplay-handler-v2.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v2/sdrplayselect.cpp
|
||||
FORMS += ./sources/qt-devices/sdrplay-handler-v2/sdrplay-widget-v2.ui
|
||||
}
|
||||
#
|
||||
# the SDRplay
|
||||
#
|
||||
sdrplay-v3 {
|
||||
DEFINES += HAVE_SDRPLAY_V3
|
||||
DEPENDPATH += ./sources/qt-devices/sdrplay-handler-v3
|
||||
INCLUDEPATH += ./sources/qt-devices/sdrplay-handler-v3 \
|
||||
./sources/qt-devices/sdrplay-handler-v3/include
|
||||
HEADERS += ./sources/qt-devices/sdrplay-handler-v3/sdrplay-handler-v3.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/sdrplay-commands.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/Rsp-device.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspI-handler.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/Rsp1A-handler.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspII-handler.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspDuo-handler.h \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspDx-handler.h
|
||||
SOURCES += ./sources/qt-devices/sdrplay-handler-v3/Rsp-device.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v3/sdrplay-handler-v3.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspI-handler.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v3/Rsp1A-handler.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspII-handler.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspDuo-handler.cpp \
|
||||
./sources/qt-devices/sdrplay-handler-v3/RspDx-handler.cpp
|
||||
FORMS += ./sources/qt-devices/sdrplay-handler-v3/sdrplay-widget-v3.ui
|
||||
# LIBS += -ldl
|
||||
}
|
||||
#
|
||||
# limeSDR
|
||||
#
|
||||
lime {
|
||||
DEFINES += HAVE_LIME
|
||||
INCLUDEPATH += ./sources/qt-devices/lime-handler
|
||||
DEPENDPATH += ./sources/qt-devices/lime-handler
|
||||
HEADERS += ./sources/qt-devices/lime-handler/lime-handler.h \
|
||||
./sources/qt-devices/lime-handler/lime-widget.h
|
||||
SOURCES += ./sources/qt-devices/lime-handler/lime-handler.cpp
|
||||
}
|
||||
#
|
||||
# the hackrf
|
||||
#
|
||||
hackrf {
|
||||
DEFINES += HAVE_HACKRF
|
||||
DEPENDPATH += ./sources/qt-devices/hackrf-handler
|
||||
INCLUDEPATH += ./sources/qt-devices/hackrf-handler
|
||||
HEADERS += ./sources/qt-devices/hackrf-handler/hackrf-handler.h
|
||||
SOURCES += ./sources/qt-devices/hackrf-handler/hackrf-handler.cpp
|
||||
FORMS += ./sources/qt-devices/hackrf-handler/hackrf-widget.ui
|
||||
}
|
||||
#
|
||||
#
|
||||
# airspy support
|
||||
#
|
||||
airspy {
|
||||
DEFINES += HAVE_AIRSPY
|
||||
DEPENDPATH += ./sources/qt-devices/airspy
|
||||
INCLUDEPATH += ./sources/qt-devices/airspy-handler \
|
||||
./sources/qt-devices/airspy-handler/libairspy
|
||||
HEADERS += ./sources/qt-devices/airspy-handler/airspy-handler.h \
|
||||
./sources/qt-devices/airspy-handler/airspyselect.h \
|
||||
./sources/qt-devices/airspy-handler/libairspy/airspy.h
|
||||
SOURCES += ./sources/qt-devices/airspy-handler/airspy-handler.cpp \
|
||||
./sources/qt-devices/airspy-handler/airspyselect.cpp
|
||||
FORMS += ./sources/qt-devices/airspy-handler/airspy-widget.ui
|
||||
}
|
||||
|
||||
airspy-2 {
|
||||
DEFINES += HAVE_AIRSPY_2
|
||||
DEPENDPATH += ./sources/qt-devices/airspy-2
|
||||
INCLUDEPATH += ./sources/qt-devices/airspy-2 \
|
||||
./sources/qt-devices/airspy-2/libairspy
|
||||
HEADERS += ./sources/qt-devices/airspy-2/airspy-2.h \
|
||||
./sources/qt-devices/airspy-2/airspyselect.h \
|
||||
./sources/qt-devices/airspy-2/libairspy/airspy.h
|
||||
SOURCES += ./sources/qt-devices/airspy-2/airspy-2.cpp \
|
||||
./sources/qt-devices/airspy-2/airspyselect.cpp
|
||||
FORMS += ./sources/qt-devices/airspy-2/airspy-widget.ui
|
||||
}
|
||||
|
||||
# extio dependencies, windows only
|
||||
#
|
||||
extio {
|
||||
DEFINES += HAVE_EXTIO
|
||||
INCLUDEPATH += ./sources/qt-devices/extio-handler
|
||||
HEADERS += ./sources/qt-devices/extio-handler/extio-handler.h \
|
||||
./sources/qt-devices/extio-handler/common-readers.h \
|
||||
./sources/qt-devices/extio-handler/virtual-reader.h
|
||||
SOURCES += ./sources/qt-devices/extio-handler/extio-handler.cpp \
|
||||
./sources/qt-devices/extio-handler/common-readers.cpp \
|
||||
./sources/qt-devices/extio-handler/virtual-reader.cpp
|
||||
}
|
||||
|
||||
#
|
||||
rtl_tcp {
|
||||
DEFINES += HAVE_RTL_TCP
|
||||
QT += network
|
||||
INCLUDEPATH += ./sources/qt-devices/rtl_tcp
|
||||
HEADERS += ./sources/qt-devices/rtl_tcp/rtl_tcp_client.h
|
||||
SOURCES += ./sources/qt-devices/rtl_tcp/rtl_tcp_client.cpp
|
||||
FORMS += ./sources/qt-devices/rtl_tcp/rtl_tcp-widget.ui
|
||||
}
|
||||
|
||||
soapy {
|
||||
DEFINES += HAVE_SOAPY
|
||||
DEPENDPATH += ./sources/qt-devices/soapy
|
||||
INCLUDEPATH += ./sources/qt-devices/soapy
|
||||
HEADERS += ./sources/qt-devices/soapy/soapy-handler.h \
|
||||
./sources/qt-devices/soapy/soapy-converter.h
|
||||
SOURCES += ./sources/qt-devices/soapy/soapy-handler.cpp \
|
||||
./sources/qt-devices/soapy/soapy-converter.cpp
|
||||
FORMS += ./sources/qt-devices/soapy/soapy-widget.ui
|
||||
LIBS += -lSoapySDR -lm
|
||||
}
|
||||
|
||||
pluto-rxtx {
|
||||
DEFINES += HAVE_PLUTO_RXTX
|
||||
QT += network
|
||||
INCLUDEPATH += ./sources/qt-devices/pluto-rxtx
|
||||
INCLUDEPATH += ./sources/qt-devices/pluto-rxtx/dab-streamer
|
||||
HEADERS += ./sources/qt-devices/pluto-rxtx/dabFilter.h
|
||||
HEADERS += ./sources/qt-devices/pluto-rxtx/pluto-rxtx-handler.h
|
||||
HEADERS += ./sources/qt-devices/pluto-rxtx/dab-streamer/dab-streamer.h
|
||||
HEADERS += ./sources/qt-devices/pluto-rxtx/dab-streamer/up-filter.h
|
||||
SOURCES += ./sources/qt-devices/pluto-rxtx/pluto-rxtx-handler.cpp
|
||||
SOURCES += ./sources/qt-devices/pluto-rxtx/dab-streamer/dab-streamer.cpp
|
||||
SOURCES += ./sources/qt-devices/pluto-rxtx/dab-streamer/up-filter.cpp
|
||||
FORMS += ./sources/qt-devices/pluto-rxtx/pluto-rxtx-widget.ui
|
||||
# LIBS += -liio -lad9361
|
||||
}
|
||||
|
||||
pluto {
|
||||
DEFINES += HAVE_PLUTO
|
||||
QT += network
|
||||
INCLUDEPATH += ./sources/qt-devices/pluto-handler
|
||||
HEADERS += ./sources/qt-devices/pluto-handler/dabFilter.h
|
||||
HEADERS += ./sources/qt-devices/pluto-handler/pluto-handler.h
|
||||
SOURCES += ./sources/qt-devices/pluto-handler/pluto-handler.cpp
|
||||
FORMS += ./sources/qt-devices/pluto-handler/pluto-widget.ui
|
||||
}
|
||||
|
||||
elad-device {
|
||||
DEFINES += HAVE_ELAD
|
||||
DEPENDPATH += ./sources/qt-devices/elad-s1-handler
|
||||
INCLUDEPATH += ./sources/qt-devices/elad-s1-handler
|
||||
HEADERS += ./sources/qt-devices/elad-s1-handler/elad-handler.h
|
||||
HEADERS += ./sources/qt-devices/elad-s1-handler/elad-loader.h
|
||||
HEADERS += ./sources/qt-devices/elad-s1-handler/elad-worker.h
|
||||
SOURCES += ./sources/qt-devices/elad-s1-handler/elad-handler.cpp
|
||||
SOURCES += ./sources/qt-devices/elad-s1-handler/elad-loader.cpp
|
||||
SOURCES += ./sources/qt-devices/elad-s1-handler/elad-worker.cpp
|
||||
FORMS += ./sources/qt-devices/elad-s1-handler/elad-widget.ui
|
||||
}
|
||||
|
||||
spyServer-8 {
|
||||
DEFINES += HAVE_SPYSERVER_8
|
||||
DEPENDPATH += ./sources/qt-devices/spy-server-8
|
||||
INCLUDEPATH += ./sources/qt-devices/spy-server-8
|
||||
HEADERS += ./sources/qt-devices/spy-server-8/spyserver-protocol.h
|
||||
HEADERS += ./sources/qt-devices/spy-server-8/tcp-client-8.h
|
||||
HEADERS += ./sources/qt-devices/spy-server-8/spy-handler-8.h
|
||||
HEADERS += ./sources/qt-devices/spy-server-8/spyserver-client-8.h
|
||||
SOURCES += ./sources/qt-devices/spy-server-8/tcp-client-8.cpp
|
||||
SOURCES += ./sources/qt-devices/spy-server-8/spy-handler-8.cpp
|
||||
SOURCES += ./sources/qt-devices/spy-server-8/spyserver-client-8.cpp
|
||||
FORMS += ./sources/qt-devices/spy-server-8/spyserver-widget-8.ui
|
||||
}
|
||||
|
||||
spyServer-16 {
|
||||
DEFINES += HAVE_SPYSERVER_16
|
||||
DEPENDPATH += ./sources/qt-devices/spy-server-16
|
||||
INCLUDEPATH += ./sources/qt-devices/spy-server-16
|
||||
HEADERS += ./sources/qt-devices/spy-server-16/spyserver-protocol.h
|
||||
HEADERS += ./sources/qt-devices/spy-server-16/tcp-client.h
|
||||
HEADERS += ./sources/qt-devices/spy-server-16/spy-handler.h
|
||||
HEADERS += ./sources/qt-devices/spy-server-16/spyserver-client.h
|
||||
SOURCES += ./sources/qt-devices/spy-server-16/tcp-client.cpp
|
||||
SOURCES += ./sources/qt-devices/spy-server-16/spy-handler.cpp
|
||||
SOURCES += ./sources/qt-devices/spy-server-16/spyserver-client.cpp
|
||||
FORMS += ./sources/qt-devices/spy-server-16/spyserver-widget.ui
|
||||
}
|
||||
|
||||
uhd {
|
||||
DEFINES += HAVE_UHD
|
||||
DEPENDPATH += ./sources/qt-devices/uhd
|
||||
INCLUDEPATH += ./sources/qt-devices/uhd
|
||||
HEADERS += ./sources/qt-devices/uhd/uhd-handler.h
|
||||
SOURCES += ./sources/qt-devices/uhd/uhd-handler.cpp
|
||||
FORMS += ./sources/qt-devices/uhd/uhd-widget.ui
|
||||
LIBS += -luhd
|
||||
}
|
||||
|
||||
colibri {
|
||||
DEFINES += HAVE_COLIBRI
|
||||
DEPENDPATH += ./sources/qt-devices/colibri-handler
|
||||
INCLUDEPATH += ./sources/qt-devices/colibri-handler
|
||||
HEADERS += ./sources/qt-devices/colibri-handler/common.h
|
||||
HEADERS += ./sources/qt-devices/colibri-handler/LibLoader.h
|
||||
HEADERS += ./sources/qt-devices/colibri-handler/colibri-handler.h
|
||||
SOURCES += ./sources/qt-devices/colibri-handler/LibLoader.cpp
|
||||
SOURCES += ./sources/qt-devices/colibri-handler/colibri-handler.cpp
|
||||
FORMS += ./sources/qt-devices/colibri-handler/colibri-widget.ui
|
||||
}
|
||||
|
||||
send_datagram {
|
||||
DEFINES += _SEND_DATAGRAM_
|
||||
QT += network
|
||||
}
|
||||
|
||||
tcp-streamer {
|
||||
DEFINES += TCP_STREAMER
|
||||
QT += network
|
||||
HEADERS += ./sources/output/tcp-streamer.h
|
||||
SOURCES += ./sources/output/tcp-streamer.cpp
|
||||
}
|
||||
|
||||
local-audio {
|
||||
PKGCONFIG += portaudio-2.0
|
||||
DEFINES += QT_AUDIO
|
||||
QT += multimedia
|
||||
|
||||
equals (QT_MAJOR_VERSION, 5) {
|
||||
INCLUDEPATH += ./sources/output/Qt5
|
||||
INCLUDEPATH += ./sources/output/portaudio
|
||||
HEADERS += ./sources/output/Qt5/Qt-audio.h \
|
||||
./sources/output/Qt5/Qt-audiodevice.h \
|
||||
./sources/output/portaudio/audiosink.h
|
||||
SOURCES += ./sources/output/Qt5/Qt-audio.cpp \
|
||||
./sources/output/Qt5/Qt-audiodevice.cpp \
|
||||
./sources/output/portaudio/audiosink.cpp
|
||||
LIBS += -lportaudio
|
||||
} else {
|
||||
INCLUDEPATH += ./sources/output/Qt6
|
||||
INCLUDEPATH += ./sources/output/portaudio
|
||||
HEADERS += ./sources/output/Qt6/Qt-audio.h \
|
||||
./sources/output/Qt6/Qt-audiodevice.h \
|
||||
./sources/output/portaudio/audiosink.h
|
||||
SOURCES += ./sources/output/Qt6/Qt-audio.cpp \
|
||||
./sources/output/Qt6/Qt-audiodevice.cpp \
|
||||
./sources/output/portaudio/audiosink.cpp
|
||||
LIBS += -lportaudio
|
||||
}
|
||||
}
|
||||
|
||||
datastreamer {
|
||||
DEFINES += DATA_STREAMER
|
||||
DEFINES += CLOCK_STREAMER
|
||||
INCLUDEPATH += ./sources/server-thread
|
||||
HEADERS += ./sources/server-thread/tcp-server.h
|
||||
SOURCES += ./sources/server-thread/tcp-server.cpp
|
||||
}
|
||||
|
||||
viterbi-scalar {
|
||||
DEPENDPATH += ./sources/support/viterbi
|
||||
INCLUDEPATH += ./sources/support/viterbi
|
||||
HEADERS += ./sources/support/viterbi/viterbi.h
|
||||
SOURCES += ./sources/support/viterbi/viterbi.cpp
|
||||
}
|
||||
|
||||
viterbi-sse {
|
||||
DEPENDPATH += ./sources/support/viterbi
|
||||
QMAKE_CFLAGS += -msse4
|
||||
QMAKE_CXXFLAGS += -msse4
|
||||
QMAKE_CFLAGS += -mavx2
|
||||
QMAKE_CXXFLAGS += -mavx2
|
||||
QMAKE_LFLAGS += -mavx2
|
||||
DEFINES += __SSE4_1__
|
||||
DEFINES += __ARCH_X86__
|
||||
#DEFINES += __ARCH_AARCH64__
|
||||
INCLUDEPATH += ./sources/support/viterbi
|
||||
HEADERS += ./sources/support/viterbi/viterbi.h
|
||||
SOURCES += ./sources/support/viterbi/viterbi.cpp
|
||||
}
|
||||
|
||||
viterbi-avx2 {
|
||||
DEPENDPATH += ./sources/support/viterbi
|
||||
QMAKE_CFLAGS += -mavx2
|
||||
QMAKE_CXXFLAGS += -mavx2
|
||||
QMAKE_LFLAGS += -mavx2
|
||||
DEFINES += __AVX2__
|
||||
DEFINES += __ARCH_X86__
|
||||
#DEFINES += __ARCH_AARCH64__
|
||||
INCLUDEPATH += ./sources/support/viterbi
|
||||
HEADERS += ./sources/support/viterbi/viterbi.h
|
||||
SOURCES += ./sources/support/viterbi/viterbi.cpp
|
||||
}
|
||||
|
||||
spiral-sse {
|
||||
DEPENDPATH += ./sources/support/viterbi-spiral
|
||||
INCLUDEPATH += ./sources/support/viterbi-spiral
|
||||
DEFINES += SSE_AVAILABLE
|
||||
HEADERS += ./sources/support/viterbi-spiral/viterbi.h
|
||||
SOURCES += ./sources/support/viterbi-spiral/viterbi.cpp
|
||||
HEADERS += ./sources/support/viterbi-spiral/spiral-sse.h
|
||||
SOURCES += ./sources/support/viterbi-spiral/spiral-sse.c
|
||||
}
|
||||
|
||||
spiral-no-sse {
|
||||
DEPENDPATH += ./sources/support/viterbi-spiral
|
||||
INCLUDEPATH += ./sources/support/viterbi-spiral
|
||||
DEFINES += NO_SSE_AVAILABLE
|
||||
HEADERS += ./sources/support/viterbi-spiral/viterbi.h
|
||||
SOURCES += ./sources/support/viterbi-spiral/viterbi.cpp
|
||||
HEADERS += ./sources/support/viterbi-spiral/spiral-no-sse.h
|
||||
SOURCES += ./sources/support/viterbi-spiral/spiral-no-sse.c
|
||||
}
|
||||
|
||||
faad {
|
||||
DEFINES += __WITH_FAAD__
|
||||
HEADERS += ./sources/backend/audio/faad-decoder.h
|
||||
SOURCES += ./sources/backend/audio/faad-decoder.cpp
|
||||
LIBS += -lfaad
|
||||
}
|
||||
|
||||
fdk-aac {
|
||||
DEFINES += __WITH_FDK_AAC__
|
||||
INCLUDEPATH += ./helpers/specials/fdk-aac
|
||||
HEADERS += ./sources/backend/audio/fdk-aac.h
|
||||
SOURCES += ./sources/backend/audio/fdk-aac.cpp
|
||||
PKGCONFIG += fdk-aac
|
||||
}
|
||||
|
||||
mapserver {
|
||||
DEFINES += __HAVE_MAP_SERVER__
|
||||
HEADERS += ./sources/support/http-handler.h
|
||||
SOURCES += ./sources/support/http-handler.cpp
|
||||
}
|
||||
|
||||
double {
|
||||
DEFINES += __WITH_DOUBLES__
|
||||
LIBS += -lfftw3
|
||||
}
|
||||
|
||||
single {
|
||||
LIBS += -lfftw3f
|
||||
}
|
@@ -1,719 +0,0 @@
|
||||
cmake_minimum_required( VERSION 3.21 )
|
||||
|
||||
# set CMAKE_BUILD_TYPE to "Release" if not defined (like call from command line)
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Set build type to Release if not specified" FORCE)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/CMakeFunctions.cmake)
|
||||
|
||||
project(Qt-DAB VERSION 6)
|
||||
set (objectName qt-dab-6.9.2)
|
||||
set (objectName "Qt-DAB")
|
||||
set (CMAKE_CXX_STANDARD 17)
|
||||
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set (CMAKE_INSTALL_PREFIX "/usr/local/bin" CACHE PATH "default install path" FORCE )
|
||||
endif()
|
||||
|
||||
add_definitions(-DAPP_NAME="${objectName}")
|
||||
add_definitions(-DPRJ_NAME="${PROJECT_NAME}")
|
||||
add_definitions(-DPRJ_VERS="${PROJECT_VERSION}")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
# regarding using QWT < 6.2.0 (6.1.4) to avoid many deprecated massages (only suppressed on release versions)
|
||||
add_definitions(-DQT_NO_DEPRECATED_WARNINGS)
|
||||
endif()
|
||||
|
||||
if(MINGW)
|
||||
add_definitions ( -municode)
|
||||
endif()
|
||||
|
||||
add_definitions (-D__HAS_CHANNEL__)
|
||||
add_definitions (-D__FFTW3__)
|
||||
|
||||
# handle GIT hash
|
||||
get_git_commit_hash() # returns GIT_COMMIT_HASH
|
||||
print(GIT_COMMIT_HASH)
|
||||
if (GIT_COMMIT_HASH)
|
||||
add_definitions("-DGITHASH=\"${GIT_COMMIT_HASH}\"")
|
||||
else ()
|
||||
add_definitions("-DGITHASH=\"(unknown)\"")
|
||||
endif ()
|
||||
|
||||
|
||||
########################################################################
|
||||
# select the release build type by default to get optimization flags
|
||||
########################################################################
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")
|
||||
|
||||
### make sure our local CMake Modules path comes first
|
||||
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# if you want the audio output sent over the internet:
|
||||
set (TCP_STREAMER OFF)
|
||||
|
||||
#####################################################################
|
||||
#
|
||||
# select one or more devices (set to ON)
|
||||
# Note that since there are problems with the rtlsdr interface under Windows we split the rtlsdr interface
|
||||
# into two versions one for Linux and one for Window
|
||||
option(RTLSDR_LINUX OFF) # use for Linux type systems
|
||||
option(RTLSDR_WIN OFF) # only for windows
|
||||
option(AIRSPY OFF)
|
||||
option(SDRPLAY_V2 ON)
|
||||
option(SDRPLAY_V3 OFF)
|
||||
option(HACKRF OFF)
|
||||
option(LIMESDR OFF)
|
||||
option(PLUTO OFF)
|
||||
option(SOAPY OFF)
|
||||
option(SPY_SERVER_8 OFF)
|
||||
option(SPY_SERVER_16 OFF)
|
||||
option(UHD OFF) # untested
|
||||
option(RTL_TCP OFF)
|
||||
|
||||
# additional options
|
||||
option(USE_LTO "Set -flto flag" ON)
|
||||
# special release version flags
|
||||
if (USE_LTO)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
|
||||
endif ()
|
||||
|
||||
option(FDK_AAC ON)
|
||||
option(DATA_STREAMER OFF)
|
||||
option(VITERBI_SSE ON)
|
||||
option(VITERBI_NEON OFF)
|
||||
|
||||
|
||||
####################################################################
|
||||
# Use first option on "slow" cpus, i.e. RPI 3 or so
|
||||
# Most of the FFT processing will be done in functions eunning
|
||||
# in its own thread
|
||||
#add_definitions (-D__MSC_THREAD__) # do not uncomment this
|
||||
#
|
||||
# Since more than one backend may be active, activating this
|
||||
# option makes that each backend runs in its own thread
|
||||
add_definitions (-D__THREADED_BACKEND__) # uncomment for use for an RPI
|
||||
#
|
||||
########################################################################
|
||||
########################################################################
|
||||
|
||||
find_package (PkgConfig)
|
||||
find_package (LSBId)
|
||||
|
||||
find_package (Qt6Core REQUIRED)
|
||||
find_package (Qt6Widgets REQUIRED)
|
||||
find_package (Qt6Network REQUIRED)
|
||||
find_package (Qt6Xml REQUIRED)
|
||||
include_directories (
|
||||
${Qt6Network_INCLUDE_DIRS}
|
||||
${Qt6Xml_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
search_for_library (QWT Qwt)
|
||||
search_for_library (ZLIB zlib)
|
||||
|
||||
find_package(FFTW3f)
|
||||
if (NOT FFTW3F_FOUND)
|
||||
message(FATAL_ERROR "please install FFTW3")
|
||||
endif ()
|
||||
include_directories ( ${FFTW_INCLUDE_DIRS})
|
||||
list(APPEND extraLibs ${FFTW3F_LIBRARIES})
|
||||
|
||||
if (NOT APPLE)
|
||||
find_library (PTHREADS pthread)
|
||||
if (NOT(PTHREADS))
|
||||
message (FATAL_ERROR "please install libpthread")
|
||||
else (NOT(PTHREADS))
|
||||
set (extraLibs ${extraLibs} ${PTHREADS})
|
||||
endif (NOT(PTHREADS))
|
||||
endif (NOT APPLE)
|
||||
|
||||
#######################################################################
|
||||
#
|
||||
# Here we really start
|
||||
|
||||
include_directories (
|
||||
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
|
||||
${QT6Widgets_INCLUDES}
|
||||
${QT_QTCORE_INCLUDE_DIR}
|
||||
${QT_QTGUI_INCLUDE_DIR}
|
||||
./support
|
||||
./forms-v7
|
||||
./forms-v7/new-display
|
||||
./forms-v7/new-display/scopes
|
||||
./forms-v7/snr-viewer
|
||||
..
|
||||
../includes
|
||||
../includes/ofdm
|
||||
../includes/protection
|
||||
../includes/backend
|
||||
../includes/backend/audio
|
||||
../includes/backend/data
|
||||
../includes/backend/data/journaline
|
||||
../includes/backend/data/mot
|
||||
../includes/backend/data/epg
|
||||
../includes/support
|
||||
../src/support/tii-library
|
||||
../includes/support/buttons
|
||||
../src/support/viterbi-spiral
|
||||
../includes/output
|
||||
../includes/output/Qt6
|
||||
../qt-devices
|
||||
../qt-devices/filereaders/
|
||||
../qt-devices/filereaders/new-reader
|
||||
../qt-devices/filereaders/rawfiles-new
|
||||
../qt-devices/filereaders/xml-filereader
|
||||
../eti-handler
|
||||
/usr/include/
|
||||
)
|
||||
|
||||
set (${objectName}_HDRS
|
||||
./radio.h
|
||||
./support/super-frame.h
|
||||
./support/techdata.h
|
||||
./support/clickable-label.h
|
||||
./support/icon-label.h
|
||||
./support/scan-handler.h
|
||||
./support/scantable-handler.h
|
||||
./support/aboutdialog.h
|
||||
./support/ensemble-handler.h
|
||||
./support/config-handler.h
|
||||
./support/audiosystem-selector.h
|
||||
./support/dxDisplay.h
|
||||
./forms-v7/new-display/display-widget.h
|
||||
./forms-v7/new-display/scopes/correlation-scope.h
|
||||
./forms-67/new-display/scopes/spectrum-scope.h
|
||||
./forms-v7/new-display/scopes/null-scope.h
|
||||
./forms-v7/new-display/scopes/channel-scope.h
|
||||
./forms-v7/new-display/dev-scope.h
|
||||
./forms-v7/new-display/scopes/waterfall-scope.h
|
||||
./forms-v7/new-display/scopes/iqdisplay.h
|
||||
./forms-v7/new-display/scopes/audio-display.h
|
||||
./forms-v7/new-displat/scopes/spectrogram-data.h
|
||||
./forms-v7/snr-viewer/snr-viewer.h
|
||||
../ofdm-handler.h
|
||||
../eti-handler/eti-generator.h
|
||||
../includes/dab-constants.h
|
||||
../includes/crc-handlers.h
|
||||
../includes/bit-extractors.h
|
||||
../includes/mot-content-types.h
|
||||
../includes/ofdm/sample-reader.h
|
||||
../includes/ofdm/correlator.h
|
||||
../includes/ofdm/freqsyncer.h
|
||||
../includes/ofdm/ofdm-decoder.h
|
||||
../includes/ofdm/phasetable.h
|
||||
../includes/ofdm/freq-interleaver.h
|
||||
../includes/ofdm/fic-handler.h
|
||||
../includes/ofdm/ensemble.h
|
||||
../includes/ofdm/fib-config.h
|
||||
../includes/ofdm/fib-printer.h
|
||||
../includes/ofdm/fib-decoder.h
|
||||
../includes/ofdm/fib-table.h
|
||||
../includes/ofdm/tii-detector.h
|
||||
../includes/ofdm/tii-detector-1.h
|
||||
../includes/ofdm/tii-detector-2.h
|
||||
../includes/ofdm/timesyncer.h
|
||||
../includes/ofdm/estimator.h
|
||||
../includes/protection/protTables.h
|
||||
../includes/protection/protection.h
|
||||
../includes/protection/uep-protection.h
|
||||
../includes/protection/eep-protection.h
|
||||
../includes/backend/firecode-checker.h
|
||||
../includes/backend/frame-processor.h
|
||||
../includes/backend/charsets.h
|
||||
../includes/backend/galois.h
|
||||
../incluces/backend/reed-solomon.h
|
||||
../includes/backend/msc-handler.h
|
||||
../includes/backend/backend.h
|
||||
../includes/backend/backend-deconvolver.h
|
||||
../includes/backend/backend-driver.h
|
||||
../includes/backend/audio/mp4processor.h
|
||||
../includes/backend/audio/bitWriter.h
|
||||
../includes/backend/audio/mp2processor.h
|
||||
../includes/backend/data/ip-datahandler.h
|
||||
../includes/backend/data/adv-datahandler.h
|
||||
../includes/backend/data/tdc-datahandler.h
|
||||
../includes/backend/data/journaline-datahandler.h
|
||||
../includes/backend/data/journaline-screen.h
|
||||
../includes/backend/data/journaline/dabdatagroupdecoder.h
|
||||
../includes/backend/data/journaline/crc_8_16.h
|
||||
../includes/backend/data/journaline/log.h
|
||||
../includes/backend/data/journaline/newssvcdec_impl.h
|
||||
../includes/backend/data/journaline/Splitter.h
|
||||
../includes/backend/data/journaline/dabdgdec_impl.h
|
||||
../includes/backend/data/journaline/newsobject.h
|
||||
../includes/backend/data/journaline/NML.h
|
||||
../includes/backend/data/epg/epgdec.h
|
||||
../includes/backend/data/epg/epg-compiler.h
|
||||
../includes/backend/data/epg/xml-extractor.h
|
||||
../includes/backend/data/virtual-datahandler.h
|
||||
../includes/backend/data/pad-handler.h
|
||||
../includes/backend/data/mot/mot-handler.h
|
||||
../includes/backend/data/mot/mot-object.h
|
||||
../includes/backend/data/mot/mot-dir.h
|
||||
../includes/backend/data/data-processor.h
|
||||
../includes/output/audio-player.h
|
||||
../includes/support/distances.h
|
||||
../includes/support/time-converter.h
|
||||
../includes/support/logger.h
|
||||
../includes/support/position-handler.h
|
||||
../includes/support/cacheElement.h
|
||||
../includes/support/settingNames.h
|
||||
../includes/support/settings-handler.h
|
||||
../includes/support/fft-handler.h
|
||||
../includes/support/wavWriter.h
|
||||
../includes/support/converter_48000.h
|
||||
../includes/support/ringbuffer.h
|
||||
../includes/support/Xtan2.h
|
||||
../includes/support/dab-params.h
|
||||
../includes/support/dab-tables.h
|
||||
../includes/support/viterbi-spiral/viterbi.h
|
||||
../includes/support/preset-handler.h
|
||||
../includes/support/presetcombobox.h
|
||||
../includes/support/scanlist-handler.h
|
||||
../includes/support/scheduler.h
|
||||
../includes/support/schedule-selector.h
|
||||
../includes/support/element-selector.h
|
||||
../includes/support/time-table.h
|
||||
../includes/support/findfilenames.h
|
||||
../includes/support/content-table.h
|
||||
../includes/support/dl-cache.h
|
||||
../includes/support/ITU_Region_1.h
|
||||
../includes/support/coordinates.h
|
||||
../includes/support/skin-handler.h
|
||||
../includes/support/mapport.h
|
||||
,,.includes/support/http-handler.h
|
||||
,,.includes/support/converted_map.h
|
||||
../includes/support/fir-filters.h
|
||||
../src/support/tii-library/tii-reader.h
|
||||
../src/support/tii-library/tii-mapper.h
|
||||
../src/support/tii-library/uploader.h
|
||||
../includes/support/font-chooser.h
|
||||
../includes/support/buttons/smallcombobox.h
|
||||
../includes/support/buttons/newpushbutton.h
|
||||
../includes/support/buttons/normalpushbutton.h
|
||||
../includes/support/buttons/smallpushbutton.h
|
||||
../includes/support/buttons/verysmallpushbutton.h
|
||||
../includes/support/buttons/smallqlistview.h
|
||||
../includes/support/buttons/smallspinbox.h
|
||||
# ../includes/scopes-qwt6/spectrogramdata.h
|
||||
../qt-devices/device-handler.h
|
||||
../qt-devices/device-exceptions.h
|
||||
../qt-devicces/xml-filewriter.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
./main.cpp
|
||||
./radio.cpp
|
||||
./support/super-frame.cpp
|
||||
./support/techdata.cpp
|
||||
./support/clickable-label.cpp
|
||||
./support/icon-label.cpp
|
||||
./support/scan-handler.cpp
|
||||
./support/scantable-handler.cpp
|
||||
./support/aboutdialog.cpp
|
||||
./support/ensemble-handler.cpp
|
||||
./support/config-handler.cpp
|
||||
./support/audiosystem-selector.cpp
|
||||
./support/dxDisplay.cpp
|
||||
./forms-v7/new-display/display-widget.cpp
|
||||
./forms-v7/new-display/scopes/spectrum-scope.cpp
|
||||
./forms-v7/new-display/scopes/correlation-scope.cpp
|
||||
./forms-v7/new-display/scopes/null-scope.cpp
|
||||
./forms-v7/new-display/scopes/channel-scope.cpp
|
||||
./forms-v7/new-display/scopes/dev-scope.cpp
|
||||
./forms-v7/new-display/scopes/waterfall-scope.cpp
|
||||
./forms-v7/new-display/scopes/iqdisplay.cpp
|
||||
./forms-v7/new-display/scopes/audio-display.cpp
|
||||
./forms-v7/new-display/scopes/spectrogramdata.cpp
|
||||
./forms-v7/snr-viewer/snr-viewer.cpp
|
||||
../ofdm-handler.cpp
|
||||
../eti-handler/eti-generator.cpp
|
||||
../src/ofdm/sample-reader.cpp
|
||||
../src/ofdm/ofdm-decoder.cpp
|
||||
../src/ofdm/correlator.cpp
|
||||
../src/ofdm/freqsyncer.cpp
|
||||
../src/ofdm/phasetable.cpp
|
||||
../src/ofdm/freq-interleaver.cpp
|
||||
../src/ofdm/fic-handler.cpp
|
||||
../src/ofdm/ensemble.cpp
|
||||
../src/ofdm/fib-config.cpp
|
||||
../src/ofdm/fib-printer.cpp
|
||||
../src/ofdm/fib-decoder.cpp
|
||||
../src/ofdm/tii-detector.cpp
|
||||
../src/ofdm/tii-detector-1.cpp
|
||||
../src/ofdm/tii-detector-2.cpp
|
||||
../src/ofdm/timesyncer.cpp
|
||||
../src/ofdm/estimator.cpp
|
||||
../src/protection/protTables.cpp
|
||||
../src/protection/protection.cpp
|
||||
../src/protection/eep-protection.cpp
|
||||
../src/protection/uep-protection.cpp
|
||||
../src/backend/firecode-checker.cpp
|
||||
../src/backend/charsets.cpp
|
||||
../src/backend/galois.cpp
|
||||
../src/backend/reed-solomon.cpp
|
||||
../src/backend/msc-handler.cpp
|
||||
../src/backend/backend.cpp
|
||||
../src/backend/backend-deconvolver.cpp
|
||||
../src/backend/backend-driver.cpp
|
||||
../src/backend/audio/mp4processor.cpp
|
||||
../src/backend/audio/bitWriter.cpp
|
||||
../src/backend/audio/mp2processor.cpp
|
||||
../src/backend/data/ip-datahandler.cpp
|
||||
../src/backend/data/adv-datahandler.cpp
|
||||
../src/backend/data/journaline-datahandler.cpp
|
||||
../src/backend/data/journaline-screen.cpp
|
||||
../src/backend/data/journaline/crc_8_16.c
|
||||
../src/backend/data/journaline/log.c
|
||||
../src/backend/data/journaline/newssvcdec_impl.cpp
|
||||
../src/backend/data/journaline/Splitter.cpp
|
||||
../src/backend/data/journaline/dabdgdec_impl.c
|
||||
../src/backend/data/journaline/newsobject.cpp
|
||||
../src/backend/data/journaline/NML.cpp
|
||||
../src/backend/data/epg/epg-compiler.cpp
|
||||
../src/backend/data/epg/xml-extractor.cpp
|
||||
../src/backend/data/tdc-datahandler.cpp
|
||||
../src/backend/data/pad-handler.cpp
|
||||
../src/backend/data/mot/mot-handler.cpp
|
||||
../src/backend/data/mot/mot-object.cpp
|
||||
../src/backend/data/mot/mot-dir.cpp
|
||||
../src/backend/data/data-processor.cpp
|
||||
../src/output/audio-player.cpp
|
||||
../src/support/distances.cpp
|
||||
../src/support/time-converter.cpp
|
||||
../src/support/logger.cpp
|
||||
../src/support/position-handler.cpp
|
||||
../src/support/settings-handler.cpp
|
||||
../src/support/fft-handler.cpp
|
||||
../src/support/wavWriter.cpp
|
||||
../src/support/converter_48000.cpp
|
||||
../src/support/viterbi-spiral/viterbi.cpp
|
||||
../src/support/dab-params.cpp
|
||||
../src/support/dab-tables.cpp
|
||||
../src/support/preset-handler.cpp
|
||||
../src/support/presetcombobox.cpp
|
||||
../src/support/scanlist-handler.cpp
|
||||
../src/support/scheduler.cpp
|
||||
../src/support/schedule-selector.cpp
|
||||
../src/support/element-selector.cpp
|
||||
../src/support/time-table.cpp
|
||||
../src/support/findfilenames.cpp
|
||||
../src/support/content-table.cpp
|
||||
../src/support/ITU_Region_1.cpp
|
||||
../src/support/coordinates.cpp
|
||||
../src/support/skin-handler.cpp
|
||||
../src/support/mapport.cpp
|
||||
../src/support/tii-library/tii-reader.cpp
|
||||
../src/support/tii-library/uploader.cpp
|
||||
../src/support/tii-library/tii-mapper.cpp
|
||||
../src/support/http-handler.cpp
|
||||
../src/support/bandpass-filter.cpp
|
||||
../src/support/fir-filters.cpp
|
||||
../src/support/font-chooser.cpp
|
||||
../src/support/buttons/smallcombobox.cpp
|
||||
../src/support/buttons/newpushbutton.cpp
|
||||
../src/support/buttons/normalpushbutton.cpp
|
||||
../src/support/buttons/smallpushbutton.cpp
|
||||
../src/support/buttons/verysmallpushbutton.cpp
|
||||
../src/support/buttons/smallqlistview.cpp
|
||||
../src/support/buttons/smallspinbox.cpp
|
||||
# ../src/scopes-qwt6/spectrogramdata.cpp
|
||||
# ../src/scopes-qwt6/spectrogramdata.cpp
|
||||
../qt-devices/xml-filewriter.cpp
|
||||
)
|
||||
|
||||
set (${objectName}_MOCS
|
||||
./radio.h
|
||||
./support/super-frame.h
|
||||
./support/techdata.h
|
||||
./support/clickable-label.h
|
||||
./support/icon-label.h
|
||||
./support/scan-handler.h
|
||||
./support/scantable-handler.h
|
||||
./support/aboutdialog.h
|
||||
./support/ensemble-handler.h
|
||||
./support/config-handler.h
|
||||
./support/audiosystem-selector.h
|
||||
./support/dxDisplay.h
|
||||
./forms-v7/new-display/display-widget.h
|
||||
./forms-v7/new-display/scopes/correlation-scope.h
|
||||
./forms-v7/new-display/scopes/spectrum-scope.h
|
||||
./forms-v7/new-display/scopes/null-scope.h
|
||||
./forms-v7/new-display/scopes/channel-scope.h
|
||||
./forms-v7/new-display/scopes/dev-scope.h
|
||||
./forms-v7/new-display/scopes/waterfall-scope.h
|
||||
./forms-v7/new-display/scopes/iqdisplay.h
|
||||
./forms-v7/new-display/scopes/audio-display.h
|
||||
./forms-v7/snr-viewer/snr-viewer.h
|
||||
../ofdm-handler.h
|
||||
../includes/ofdm/sample-reader.h
|
||||
../includes/ofdm/ofdm-decoder.h
|
||||
../includes/ofdm/correlator.h
|
||||
../includes/ofdm/freqsyncer.h
|
||||
../includes/ofdm/fic-handler.h
|
||||
../includes/ofdm/fib-decoder.h
|
||||
../includes/ofdm/tii-detector.h
|
||||
../includes/ofdm/estimator.h
|
||||
../includes/backend/msc-handler.h
|
||||
../includes/backend/backend.h
|
||||
../includes/backend/audio/mp2processor.h
|
||||
../includes/backend/audio/mp4processor.h
|
||||
../includes/backend/data/virtual-datahandler.h
|
||||
../includes/backend/data/pad-handler.h
|
||||
../includes/backend/data/mot/mot-handler.h
|
||||
../includes/backend/data/mot/mot-object.h
|
||||
../includes/backend/data/mot/mot-dir.h
|
||||
../includes/backend/data/ip-datahandler.h
|
||||
../includes/backend/data/adv-datahandler.h
|
||||
../includes/backend/data/tdc-datahandler.h
|
||||
../includes/backend/data/journaline-datahandler.h
|
||||
../includes/backend/data/journaline-screen.h
|
||||
../includes/backend/data/epg/epg-compiler.h
|
||||
../includes/backend/data/epg/xml-extractor.h
|
||||
../includes/backend/data/data-processor.h
|
||||
../includes/output/audio-player.h
|
||||
../includes/support/converter_48000.h
|
||||
../includes/support/preset-handler.h
|
||||
../includes/support/presetcombobox.h
|
||||
../includes/support/font-chooser.h
|
||||
../includes/support/buttons/smallcombobox.h
|
||||
../includes/support/buttons/newpushbutton.h
|
||||
../includes/support/buttons/normalpushbutton.h
|
||||
../includes/support/buttons/smallpushbutton.h
|
||||
../includes/support/buttons/verysmallpushbutton.h
|
||||
../includes/support/buttons/smallqlistview.h
|
||||
../includes/support/buttons/smallspinbox.h
|
||||
../includes/support/scanlist-handler.h
|
||||
../includes/support/scheduler.h
|
||||
../includes/support/schedule-selector.h
|
||||
../includes/support/element-selector.h
|
||||
../includes/support/time-table.h
|
||||
../includes/support/content-table.h
|
||||
../includes/support/coordinates.h
|
||||
../includes/support/skin-handler.h
|
||||
../includes/support/mapport.h
|
||||
../includes/support/http-handler.h
|
||||
)
|
||||
|
||||
set (${objectName}_UIS
|
||||
${${objectName}_UIS}
|
||||
./support/aboutdialog.ui
|
||||
./forms-v7/dabradio-6.ui
|
||||
./forms-v7/technical_data.ui
|
||||
./forms-v7/config-helper.ui
|
||||
./forms-v7/new-display/scopewidget.ui
|
||||
./forms-v7/snr-viewer/snr-widget.ui
|
||||
../qt-devices/filereaders/xml-filereader/xmlfiles.ui
|
||||
)
|
||||
|
||||
|
||||
#########################################################################
|
||||
|
||||
if (FDK_AAC)
|
||||
find_package(Fdk-AAC)
|
||||
if (NOT LIBFDK_AAC_FOUND)
|
||||
message(FATAL_ERROR, "Please install libfdk-aac")
|
||||
endif ()
|
||||
include_directories (../helpers/specials/fdk-aac)
|
||||
set($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../includes/backend/audio/fdk-aac.h
|
||||
)
|
||||
|
||||
set(${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/backend/audio/fdk-aac.cpp
|
||||
)
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
../includes/backend/audio/fdk-aac.h
|
||||
)
|
||||
list(APPEND extraLibs ${FDK_AAC_LIBRARIES})
|
||||
add_definitions(-D__WITH_FDK_AAC__)
|
||||
elseif (NOT FDK_AAC)
|
||||
find_package (Faad)
|
||||
if (NOT FAAD_FOUND)
|
||||
message(FATAL_ERROR "Please install libfaad")
|
||||
endif ()
|
||||
set(${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../includes/backend/audio/faad-decoder.h
|
||||
)
|
||||
|
||||
set(${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/backend/audio/faad-decoder.cpp
|
||||
)
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
../includes/backend/audio/faad-decoder.h
|
||||
)
|
||||
add_definitions(-D__WITH_FAAD__)
|
||||
endif (FDK_AAC)
|
||||
|
||||
# the viterbi decoder
|
||||
#
|
||||
if (VITERBI_NEON)
|
||||
set(VITERBI_SSE false)
|
||||
set (${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../src/support/viterbi-spiral/spiral-neon.h
|
||||
)
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/support/viterbi-spiral/spiral-neon.c
|
||||
)
|
||||
|
||||
add_definitions (-DNEON_AVAILABLE)
|
||||
elseif(VITERBI_SSE)
|
||||
set ($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../src/support/viterbi-spiral/spiral-sse.h
|
||||
)
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/support/viterbi-spiral/spiral-sse.c
|
||||
)
|
||||
add_definitions (-DSSE_AVAILABLE)
|
||||
else (VITERBI_SSE)
|
||||
set ($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../src/support/viterbi-spiral/spiral-no-sse.h
|
||||
)
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/support/viterbi-spiral/spiral-no-sse.c
|
||||
)
|
||||
endif (VITERBI_NEON)
|
||||
|
||||
if (TCP_STREAMER)
|
||||
add_definitions (-DTCP_STREAMER)
|
||||
find_package (Qt6Network REQUIRED)
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
../includes/output/tcp-streamer.h
|
||||
)
|
||||
set (${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../includes/output/tcp-streamer.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/output/tcp-streamer.cpp
|
||||
)
|
||||
endif (TCP_STREAMER)
|
||||
|
||||
if (DATA_STREAMER)
|
||||
include_directories (
|
||||
../server-thread
|
||||
)
|
||||
|
||||
set ($(objectName)_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../server-thread/tcp-server.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../server-thread/tcp-server.cpp
|
||||
)
|
||||
add_definitions (-DDATA_STREAMER)
|
||||
endif (DATA_STREAMER)
|
||||
|
||||
if (NOT TCP_STREAMER)
|
||||
add_definitions (-DQT_AUDIO)
|
||||
find_package(Portaudio)
|
||||
if (NOT PORTAUDIO_FOUND)
|
||||
message(FATAL_ERROR "please install portaudio V19")
|
||||
endif ()
|
||||
list(APPEND extraLibs ${PORTAUDIO_LIBRARIES})
|
||||
find_package (Qt6Multimedia REQUIRED)
|
||||
include_directories (
|
||||
${Qt6Multimedia_INCLUDE_DIRS}
|
||||
)
|
||||
set (${objectName}_HDRS
|
||||
${${objectName}_HDRS}
|
||||
../includes/output/audiosink.h
|
||||
../includes/output/Qt6/Qt-audio.h
|
||||
../includes/output/Qt6/Qt-audiodevice.h
|
||||
)
|
||||
|
||||
set (${objectName}_MOCS
|
||||
${${objectName}_MOCS}
|
||||
../includes/output/audiosink.h
|
||||
../includes/output/Qt6/Qt-audio.h
|
||||
../includes/output/Qt6/Qt-audiodevice.h
|
||||
)
|
||||
|
||||
set (${objectName}_SRCS
|
||||
${${objectName}_SRCS}
|
||||
../src/output/audiosink.cpp
|
||||
../src/output/Qt6/Qt-audio.cpp
|
||||
../src/output/Qt6/Qt-audiodevice.cpp
|
||||
)
|
||||
endif (NOT TCP_STREAMER)
|
||||
|
||||
QT6_WRAP_UI (UIS ${${objectName}_UIS}
|
||||
../qt-devices/filereaders/filereader-widget.ui)
|
||||
|
||||
include_directories (
|
||||
${SDRPLAY_INCLUDES}
|
||||
${QT6Widgets_INCLUDES}
|
||||
${QT_QTCORE_INCLUDE_DIR}
|
||||
${QT_QTGUI_INCLUDE_DIR}
|
||||
${PORTAUDIO_INCLUDE_DIRS}
|
||||
${FAAD_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
QT6_WRAP_CPP (MOCS ${${objectName}_MOCS})
|
||||
|
||||
add_executable (${objectName}
|
||||
${${objectName}_SRCS}
|
||||
${UIS}
|
||||
${RSCS}
|
||||
${TRS}
|
||||
${MOCS}
|
||||
resources.qrc
|
||||
)
|
||||
|
||||
target_link_libraries (${objectName}
|
||||
PRIVATE
|
||||
Qt6::Widgets
|
||||
Qt6::Network
|
||||
Qt6::Xml
|
||||
Qt6::Multimedia
|
||||
${RTLTCP_lib}
|
||||
${extraLibs}
|
||||
${FAAD_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
)
|
||||
|
||||
add_subdirectory (../qt-devices /tmp)
|
||||
target_link_libraries (${objectName} PRIVATE ${objectName}_devices)
|
||||
|
||||
INSTALL (TARGETS ${objectName} DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||
# INSTALL (TARGETS ${objectName} DESTINATION ./linux-bin)
|
||||
|
||||
########################################################################
|
||||
# Create uninstall target
|
||||
########################################################################
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
@@ -1,996 +0,0 @@
|
||||
######################################################################
|
||||
# Automatically generated by qmake (2.01a) Tue Oct 6 19:48:14 2009
|
||||
# but modified by me to accomodate for the includes for qwt, hamlib and
|
||||
# portaudio
|
||||
######################################################################
|
||||
|
||||
TEMPLATE = app
|
||||
QT += widgets xml multimedia
|
||||
#CONFIG += console
|
||||
CONFIG -= console
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
|
||||
win32 {
|
||||
QMAKE_CFLAGS += -O3 -ffast-math
|
||||
QMAKE_CXXFLAGS += -O3 -ffast-math
|
||||
}
|
||||
|
||||
unix {
|
||||
#QMAKE_CFLAGS += -O3 -ffast-math -pg
|
||||
#QMAKE_CXXFLAGS += -O3 -ffast-math -pg
|
||||
#QMAKE_LFLAGS += -O3 -ffast-math -pg
|
||||
QMAKE_CXXFLAGS += -ffast-math -flto
|
||||
QMAKE_CFLAGS += -ffast-math -flto
|
||||
QMAKE_LFLAGS += -ffast-math -flto
|
||||
#QMAKE_CFLAGS += -g -fsanitize=address
|
||||
#QMAKE_CXXFLAGS += -g -fsanitize=address
|
||||
#QMAKE_LFLAGS += -g -fsanitize=address
|
||||
}
|
||||
|
||||
#QMAKE_CFLAGS += -pg
|
||||
#QMAKE_CXXFLAGS += -pg
|
||||
#QMAKE_LFLAGS += -pg
|
||||
QMAKE_CXXFLAGS += -isystem $$[QT_INSTALL_HEADERS]
|
||||
RC_ICONS = qt-dab-6.9.ico
|
||||
RESOURCES += resources.qrc
|
||||
|
||||
TRANSLATIONS = ../i18n/de_DE.ts
|
||||
#
|
||||
# For more parallel processing, uncomment the following
|
||||
# defines
|
||||
#DEFINES += __MSC_THREAD__
|
||||
DEFINES += __THREADED_BACKEND__
|
||||
DEFINES += __FFT_CORR__
|
||||
|
||||
#For showing trace output
|
||||
#DEFINES += __EPG_TRACE__
|
||||
DEPENDPATH += . \
|
||||
./support \
|
||||
./forms-v7 \
|
||||
./forms-v7/new-display \
|
||||
./forms-v7/new-display/scopes \
|
||||
./forms-v7/snr-viewer \
|
||||
../eti-handler \
|
||||
../src \
|
||||
../includes \
|
||||
../src/ofdm \
|
||||
../src/protection \
|
||||
../src/backend \
|
||||
../src/backend/audio \
|
||||
../src/backend/data \
|
||||
../src/backend/data/mot \
|
||||
../src/backend/data/epg \
|
||||
../src/backend/data/journaline \
|
||||
../src/output \
|
||||
../src/support \
|
||||
../src/support/tii-library \
|
||||
../src/support/buttons \
|
||||
../includes/ofdm \
|
||||
../includes/protection \
|
||||
../includes/backend \
|
||||
../includes/backend/audio \
|
||||
../includes/backend/data \
|
||||
../includes/backend/data/mot \
|
||||
../includes/backend/data/journaline \
|
||||
../includes/backend/data/epg \
|
||||
../includes/output \
|
||||
../includes/support \
|
||||
../src/support/tii-library \
|
||||
../includes/support/buttons \
|
||||
# ../includes/scopes-qwt6 \
|
||||
../qt-devices \
|
||||
../qt-devices/filereaders/ \
|
||||
../qt-devices/filereaders/new-reader \
|
||||
../qt-devices/filereaders/rawfiles-new \
|
||||
../qt-devices/filereaders/xml-filereader
|
||||
|
||||
|
||||
|
||||
INCLUDEPATH += . \
|
||||
./support \
|
||||
./forms-v7 \
|
||||
./forms-v7/new-display \
|
||||
./forms-v7/new-display/scopes \
|
||||
./forms-v7/snr-viewer \
|
||||
../ \
|
||||
../eti-handler \
|
||||
../src \
|
||||
../includes \
|
||||
../includes/protection \
|
||||
../includes/ofdm \
|
||||
../includes/backend \
|
||||
../includes/backend/audio \
|
||||
../includes/backend/data \
|
||||
../includes/backend/data/mot \
|
||||
../includes/backend/data/journaline \
|
||||
../includes/backend/data/epg \
|
||||
../includes/output \
|
||||
../includes/support \
|
||||
../src/support/tii-library \
|
||||
../includes/support/buttons \
|
||||
# ../includes/scopes-qwt6 \
|
||||
../qt-devices \
|
||||
../qt-devices/filereaders \
|
||||
../qt-devices/filereaders/rawfiles-new \
|
||||
../qt-devices/filereaders/new-reader \
|
||||
../qt-devices/filereaders/xml-filereader
|
||||
|
||||
# Input
|
||||
HEADERS += ./radio.h \
|
||||
./support/techdata.h \
|
||||
./support/super-frame.h \
|
||||
./support/clickable-label.h \
|
||||
./support/icon-label.h \
|
||||
./support/scan-handler.h \
|
||||
./support/scantable-handler.h \
|
||||
./support/aboutdialog.h \
|
||||
./support/ensemble-handler.h \
|
||||
./support/config-handler.h \
|
||||
./support/audiosystem-selector.h \
|
||||
./support/dxDisplay.h \
|
||||
./forms-v7/qwt-2.h \
|
||||
./forms-v7/new-display/display-widget.h \
|
||||
./forms-v7/new-display/scopes/spectrum-scope.h \
|
||||
./forms-v7/new-display/scopes/correlation-scope.h \
|
||||
./forms-v7/new-display/scopes/null-scope.h \
|
||||
./forms-v7/new-display/scopes/channel-scope.h \
|
||||
./forms-v7/new-display/scopes/dev-scope.h \
|
||||
./forms-v7/new-display/scopes/waterfall-scope.h \
|
||||
./forms-v7/new-display/scopes/iqdisplay.h \
|
||||
./forms-v7/new-display/scopes/audio-display.h \
|
||||
./forms-v7/new-display/scopes/spectrogramdata.h \
|
||||
./forms-v7/snr-viewer/snr-viewer.h \
|
||||
../ofdm-handler.h \
|
||||
../eti-handler/eti-generator.h \
|
||||
../includes/dab-constants.h \
|
||||
../includes/bit-extractors.h \
|
||||
../includes/crc-handlers.h \
|
||||
../includes/mot-content-types.h \
|
||||
../includes/ofdm/timesyncer.h \
|
||||
../includes/ofdm/sample-reader.h \
|
||||
../includes/ofdm/ofdm-decoder.h \
|
||||
../includes/ofdm/correlator.h \
|
||||
../includes/ofdm/freqsyncer.h \
|
||||
../includes/ofdm/phasetable.h \
|
||||
../includes/ofdm/freq-interleaver.h \
|
||||
../includes/ofdm/tii-detector.h \
|
||||
../includes/ofdm/tii-detector-1.h \
|
||||
../includes/ofdm/tii-detector-2.h \
|
||||
../includes/ofdm/fic-handler.h \
|
||||
../includes/ofdm/ensemble.h \
|
||||
../includes/ofdm/fib-config.h \
|
||||
../includes/ofdm/fib-printer.h \
|
||||
../includes/ofdm/fib-decoder.h \
|
||||
../includes/ofdm/fib-table.h \
|
||||
../includes/ofdm/estimator.h \
|
||||
../includes/protection/protTables.h \
|
||||
../includes/protection/protection.h \
|
||||
../includes/protection/eep-protection.h \
|
||||
../includes/protection/uep-protection.h \
|
||||
../includes/backend/msc-handler.h \
|
||||
../includes/backend/galois.h \
|
||||
../includes/backend/reed-solomon.h \
|
||||
../includes/backend/charsets.h \
|
||||
../includes/backend/firecode-checker.h \
|
||||
../includes/backend/frame-processor.h \
|
||||
../includes/backend/backend.h \
|
||||
../includes/backend/backend-driver.h \
|
||||
../includes/backend/backend-deconvolver.h \
|
||||
../includes/backend/audio/mp2processor.h \
|
||||
../includes/backend/audio/mp4processor.h \
|
||||
../includes/backend/audio/bitWriter.h \
|
||||
../includes/backend/data/data-processor.h \
|
||||
../includes/backend/data/pad-handler.h \
|
||||
../includes/backend/data/virtual-datahandler.h \
|
||||
../includes/backend/data/tdc-datahandler.h \
|
||||
../includes/backend/data/ip-datahandler.h \
|
||||
../includes/backend/data/adv-datahandler.h \
|
||||
../includes/backend/data/mot/mot-handler.h \
|
||||
../includes/backend/data/mot/mot-object.h \
|
||||
../includes/backend/data/mot/mot-dir.h \
|
||||
../includes/backend/data/journaline-datahandler.h \
|
||||
../includes/backend/data/journaline-screen.h \
|
||||
../includes/backend/data/journaline/dabdatagroupdecoder.h \
|
||||
../includes/backend/data/journaline/crc_8_16.h \
|
||||
../includes/backend/data/journaline/log.h \
|
||||
../includes/backend/data/journaline/newssvcdec_impl.h \
|
||||
../includes/backend/data/journaline/Splitter.h \
|
||||
../includes/backend/data/journaline/dabdgdec_impl.h \
|
||||
../includes/backend/data/journaline/newsobject.h \
|
||||
../includes/backend/data/journaline/NML.h \
|
||||
../includes/backend/data/epg/epg-compiler.h \
|
||||
../includes/backend/data/epg/xml-extractor.h \
|
||||
../includes/output/audio-player.h \
|
||||
../includes/support/distances.h \
|
||||
../includes/support/time-converter.h \
|
||||
../includes/support/logger.h \
|
||||
../includes/support/settings-handler.h \
|
||||
../includes/support/position-handler.h \
|
||||
../includes/support/cacheElement.h \
|
||||
../includes/support/settingNames.h \
|
||||
../includes/support/fft-handler.h \
|
||||
../includes/support/wavWriter.h \
|
||||
../includes/support/converter_48000.h \
|
||||
../includes/support/process-params.h \
|
||||
../includes/support/ringbuffer.h \
|
||||
../includes/support/dab-params.h \
|
||||
../includes/support/dab-tables.h \
|
||||
# ../includes/support/preset-handler.h \
|
||||
../includes/support/presetcombobox.h \
|
||||
../includes/support/scanlist-handler.h \
|
||||
../includes/support/scheduler.h \
|
||||
../includes/support/schedule-selector.h \
|
||||
../includes/support/element-selector.h \
|
||||
../includes/support/time-table.h \
|
||||
../includes/support/findfilenames.h \
|
||||
../includes/support/dl-cache.h \
|
||||
../includes/support/content-table.h \
|
||||
../includes/support/ITU_Region_1.h \
|
||||
../includes/support/coordinates.h \
|
||||
../includes/support/skin-handler.h \
|
||||
../includes/support/mapport.h \
|
||||
../includes/support/bandpass-filter.h \
|
||||
../includes/support/fir-filters.h \
|
||||
../includes/support/font-chooser.h \
|
||||
../src/support/tii-library/tii-mapper.h \
|
||||
../src/support/tii-library/tii-reader.h \
|
||||
../src/support/tii-library/uploader.h \
|
||||
../includes/support/buttons/smallcombobox.h \
|
||||
../includes/support/buttons/newpushbutton.h \
|
||||
../includes/support/buttons/normalpushbutton.h \
|
||||
../includes/support/buttons/smallpushbutton.h \
|
||||
../includes/support/buttons/verysmallpushbutton.h \
|
||||
../includes/support/buttons/smallqlistview.h \
|
||||
../includes/support/buttons/smallspinbox.h \
|
||||
../includes/support/buttons/circular-button.h \
|
||||
../qt-devices/device-handler.h \
|
||||
../qt-devices/device-chooser.h \
|
||||
../qt-devices/device-exceptions.h \
|
||||
../qt-devices/xml-filewriter.h \
|
||||
../qt-devices/filereaders/new-reader/newfiles.h \
|
||||
../qt-devices/filereaders/new-reader/new-reader.h \
|
||||
../qt-devices/filereaders/new-reader/riff-reader.h \
|
||||
../qt-devices/filereaders/rawfiles-new/rawfiles.h \
|
||||
../qt-devices/filereaders/rawfiles-new/raw-reader.h \
|
||||
../qt-devices/filereaders/xml-filereader/element-reader.h \
|
||||
../qt-devices/filereaders/xml-filereader/xml-filereader.h \
|
||||
../qt-devices/filereaders/xml-filereader/xml-reader.h \
|
||||
../qt-devices/filereaders/xml-filereader/xml-descriptor.h
|
||||
|
||||
FORMS += ./forms-v7/technical_data.ui
|
||||
FORMS += ./forms-v7/dabradio-6.ui
|
||||
FORMS += ./forms-v7/config-helper.ui
|
||||
FORMS += ./forms-v7/audio-description.ui
|
||||
FORMS += ./forms-v7/data-description.ui
|
||||
FORMS += ./forms-v7/new-display/scopewidget.ui
|
||||
FORMS += ./forms-v7/snr-viewer/snr-widget.ui
|
||||
FORMS += ./support/aboutdialog.ui
|
||||
#FORMS += ../qt-devices/filereaders/filereader-widget.ui
|
||||
FORMS += ../qt-devices/filereaders/xml-filereader/xmlfiles.ui
|
||||
|
||||
SOURCES += ./main.cpp \
|
||||
./radio.cpp \
|
||||
./support/techdata.cpp \
|
||||
./support/super-frame.cpp \
|
||||
./support/clickable-label.cpp \
|
||||
./support/icon-label.cpp \
|
||||
./support/scan-handler.cpp \
|
||||
./support/scantable-handler.cpp \
|
||||
./support/aboutdialog.cpp \
|
||||
./support/ensemble-handler.cpp \
|
||||
./support/config-handler.cpp \
|
||||
./support/audiosystem-selector.cpp \
|
||||
./support/dxDisplay.cpp \
|
||||
./forms-v7/new-display/display-widget.cpp \
|
||||
./forms-v7/new-display/scopes/correlation-scope.cpp \
|
||||
./forms-v7/new-display/scopes/spectrum-scope.cpp \
|
||||
./forms-v7/new-display/scopes/null-scope.cpp \
|
||||
./forms-v7/new-display/scopes/channel-scope.cpp \
|
||||
./forms-v7/new-display/scopes/dev-scope.cpp \
|
||||
./forms-v7/new-display/scopes/waterfall-scope.cpp \
|
||||
./forms-v7/new-display/scopes/iqdisplay.cpp \
|
||||
./forms-v7/new-display/scopes/audio-display.cpp \
|
||||
./forms-v7/new-display/scopes/spectrogramdata.cpp \
|
||||
./forms-v7/snr-viewer/snr-viewer.cpp \
|
||||
../ofdm-handler.cpp \
|
||||
../eti-handler/eti-generator.cpp \
|
||||
../src/ofdm/timesyncer.cpp \
|
||||
../src/ofdm/sample-reader.cpp \
|
||||
../src/ofdm/ofdm-decoder.cpp \
|
||||
../src/ofdm/correlator.cpp \
|
||||
../src/ofdm/freqsyncer.cpp \
|
||||
../src/ofdm/phasetable.cpp \
|
||||
../src/ofdm/freq-interleaver.cpp \
|
||||
../src/ofdm/tii-detector.cpp \
|
||||
../src/ofdm/tii-detector-1.cpp \
|
||||
../src/ofdm/tii-detector-2.cpp \
|
||||
../src/ofdm/fic-handler.cpp \
|
||||
../src/ofdm/ensemble.cpp \
|
||||
../src/ofdm/fib-config.cpp \
|
||||
../src/ofdm/fib-printer.cpp \
|
||||
../src/ofdm/fib-decoder.cpp \
|
||||
../src/ofdm/estimator.cpp \
|
||||
../src/protection/protTables.cpp \
|
||||
../src/protection/protection.cpp \
|
||||
../src/protection/eep-protection.cpp \
|
||||
../src/protection/uep-protection.cpp \
|
||||
../src/backend/msc-handler.cpp \
|
||||
../src/backend/galois.cpp \
|
||||
../src/backend/reed-solomon.cpp \
|
||||
../src/backend/charsets.cpp \
|
||||
../src/backend/backend.cpp \
|
||||
../src/backend/backend-driver.cpp \
|
||||
../src/backend/backend-deconvolver.cpp \
|
||||
../src/backend/firecode-checker.cpp \
|
||||
../src/backend/audio/mp2processor.cpp \
|
||||
../src/backend/audio/mp4processor.cpp \
|
||||
../src/backend/audio/bitWriter.cpp \
|
||||
../src/backend/data/pad-handler.cpp \
|
||||
../src/backend/data/data-processor.cpp \
|
||||
../src/backend/data/tdc-datahandler.cpp \
|
||||
../src/backend/data/ip-datahandler.cpp \
|
||||
../src/backend/data/adv-datahandler.cpp \
|
||||
../src/backend/data/mot/mot-handler.cpp \
|
||||
../src/backend/data/mot/mot-object.cpp \
|
||||
../src/backend/data/mot/mot-dir.cpp \
|
||||
../src/backend/data/journaline-datahandler.cpp \
|
||||
../src/backend/data/journaline-screen.cpp \
|
||||
../src/backend/data/journaline/crc_8_16.c \
|
||||
../src/backend/data/journaline/log.c \
|
||||
../src/backend/data/journaline/newssvcdec_impl.cpp \
|
||||
../src/backend/data/journaline/Splitter.cpp \
|
||||
../src/backend/data/journaline/dabdgdec_impl.c \
|
||||
../src/backend/data/journaline/newsobject.cpp \
|
||||
../src/backend/data/journaline/NML.cpp \
|
||||
../src/backend/data/epg/epg-compiler.cpp \
|
||||
../src/backend/data/epg/xml-extractor.cpp \
|
||||
../src/output/audio-player.cpp \
|
||||
../src/support/distances.cpp \
|
||||
../src/support/time-converter.cpp \
|
||||
../src/support/logger.cpp \
|
||||
../src/support/settings-handler.cpp \
|
||||
../src/support/position-handler.cpp \
|
||||
../src/support/wavWriter.cpp \
|
||||
../src/support/converter_48000.cpp \
|
||||
../src/support/fft-handler.cpp \
|
||||
../src/support/dab-params.cpp \
|
||||
../src/support/dab-tables.cpp \
|
||||
# ../src/support/preset-handler.cpp \
|
||||
../src/support/presetcombobox.cpp \
|
||||
../src/support/scanlist-handler.cpp \
|
||||
../src/support/scheduler.cpp \
|
||||
../src/support/schedule-selector.cpp \
|
||||
../src/support/element-selector.cpp \
|
||||
../src/support/time-table.cpp \
|
||||
../src/support/findfilenames.cpp \
|
||||
../src/support/content-table.cpp \
|
||||
../src/support/ITU_Region_1.cpp \
|
||||
../src/support/coordinates.cpp \
|
||||
../src/support/skin-handler.cpp \
|
||||
../src/support/mapport.cpp \
|
||||
../src/support/bandpass-filter.cpp \
|
||||
../src/support/fir-filters.cpp \
|
||||
../src/support/font-chooser.cpp \
|
||||
../src/support/tii-library/tii-mapper.cpp \
|
||||
../src/support/tii-library/tii-reader.cpp \
|
||||
../src/support/tii-library/uploader.cpp \
|
||||
../src/support/buttons/smallcombobox.cpp \
|
||||
../src/support/buttons/newpushbutton.cpp \
|
||||
../src/support/buttons/normalpushbutton.cpp \
|
||||
../src/support/buttons/smallpushbutton.cpp \
|
||||
../src/support/buttons/verysmallpushbutton.cpp \
|
||||
../src/support/buttons/smallqlistview.cpp \
|
||||
../src/support/buttons/smallspinbox.cpp \
|
||||
../src/support/buttons/circular-button.cpp \
|
||||
../qt-devices/device-handler.cpp \
|
||||
../qt-devices/device-chooser.cpp \
|
||||
../qt-devices/xml-filewriter.cpp \
|
||||
../qt-devices/filereaders/rawfiles-new/rawfiles.cpp \
|
||||
../qt-devices/filereaders/rawfiles-new/raw-reader.cpp \
|
||||
../qt-devices/filereaders/new-reader/newfiles.cpp \
|
||||
../qt-devices/filereaders/new-reader/new-reader.cpp \
|
||||
../qt-devices/filereaders/new-reader/riff-reader.cpp \
|
||||
# ../qt-devices/filereaders/wavfiles-new/wavfiles.cpp \
|
||||
# ../qt-devices/filereaders/wavfiles-new/wav-reader.cpp \
|
||||
../qt-devices/filereaders/xml-filereader/xml-filereader.cpp \
|
||||
../qt-devices/filereaders/xml-filereader/xml-reader.cpp \
|
||||
../qt-devices/filereaders/xml-filereader/xml-descriptor.cpp
|
||||
|
||||
#
|
||||
unix {
|
||||
DESTDIR = ./linux-bin
|
||||
equals (QT_MAJOR_VERSION, 5) {
|
||||
TARGET = qt-dab-qt5-6.9.2
|
||||
}
|
||||
else {
|
||||
TARGET = qt-dab-qt6-6.9.2
|
||||
}
|
||||
exists ("../.git") {
|
||||
GITHASHSTRING = $$system(git rev-parse --short HEAD)
|
||||
!isEmpty(GITHASHSTRING) {
|
||||
message("Current git hash = $$GITHASHSTRING")
|
||||
DEFINES += GITHASH=\\\"$$GITHASHSTRING\\\"
|
||||
}
|
||||
}
|
||||
isEmpty(GITHASHSTRING) {
|
||||
DEFINES += GITHASH=\\\"------\\\"
|
||||
}
|
||||
|
||||
mac {
|
||||
DESTDIR = ./mac-bin
|
||||
PKG_CONFIG = /usr/local/bin/pkg-config
|
||||
QT_CONFIG -= no-pkg-config
|
||||
}
|
||||
|
||||
CONFIG += link_pkgconfig
|
||||
#PKGCONFIG += sndfile
|
||||
#PKGCONFIG += samplerate
|
||||
PKGCONFIG += libusb-1.0
|
||||
CONFIG += mapserver
|
||||
!mac {
|
||||
LIBS += -ldl
|
||||
}
|
||||
PKGCONFIG += portaudio-2.0
|
||||
PKGCONFIG += zlib
|
||||
#PKGCONFIG += sndfile
|
||||
#PKGCONFIG += samplerate
|
||||
INCLUDEPATH += /usr/local/include
|
||||
!mac {
|
||||
INCLUDEPATH += /usr/local/include
|
||||
#correct this for the correct path to the qwt6 library on your system
|
||||
#LIBS += -lqwt
|
||||
equals (QT_MAJOR_VERSION, 6) {
|
||||
LIBS += -lqwt-qt6
|
||||
}else{ LIBS += -lqwt-qt5
|
||||
}
|
||||
}
|
||||
|
||||
#mac {
|
||||
# Should be possible to make on non Macs as well.
|
||||
# qmake -set QMAKEFEATURES /usr/local/Cellar/qwt/6.2.0/features
|
||||
CONFIG += qwt
|
||||
#}
|
||||
#CONFIG += double
|
||||
CONFIG += single
|
||||
#
|
||||
# comment or uncomment for the devices you want to have support for
|
||||
# (you obviously have libraries installed for the selected ones)
|
||||
CONFIG += sdrplay-v2
|
||||
CONFIG += sdrplay-v3
|
||||
CONFIG += dabstick-linux
|
||||
CONFIG += rtl_tcp
|
||||
CONFIG += airspy-2
|
||||
CONFIG += hackrf
|
||||
CONFIG += lime
|
||||
#CONFIG += soapy
|
||||
#CONFIG += pluto-rxtx
|
||||
CONFIG += pluto
|
||||
CONFIG += spyServer-16
|
||||
CONFIG += spyServer-8
|
||||
#CONFIG += uhd
|
||||
#CONFIG += colibri
|
||||
#CONFIG += elad-device
|
||||
#CONFIG += faad
|
||||
CONFIG += fdk-aac
|
||||
#very experimental, simple server for connecting to a tdc handler
|
||||
CONFIG += datastreamer
|
||||
#to handle output of embedded an IP data stream, uncomment
|
||||
#CONFIG += send_datagram
|
||||
|
||||
#if you want to listen remote, uncomment
|
||||
#CONFIG += tcp-streamer # use for remote listening
|
||||
#otherwise, if you want to use the default, uncomment
|
||||
CONFIG += local-audio
|
||||
|
||||
#CONFIG += viterbi-scalar
|
||||
#CONFIG += viterbi-sse
|
||||
#CONFIG += viterbi-avx2
|
||||
CONFIG += spiral-sse
|
||||
#CONFIG += spiral-no-sse
|
||||
#DEFINES += SHOW_MISSING
|
||||
DEFINES += __LOGGING__
|
||||
DEFINES += __DUMP_SNR__ # for experiments only
|
||||
}
|
||||
|
||||
# an attempt to have it run under W32 through cross compilation
|
||||
win32 {
|
||||
exists ("../.git") {
|
||||
GITHASHSTRING = $$system(git rev-parse --short HEAD)
|
||||
!isEmpty(GITHASHSTRING) {
|
||||
message("Current git hash = $$GITHASHSTRING")
|
||||
DEFINES += GITHASH=\\\"$$GITHASHSTRING\\\"
|
||||
}
|
||||
}
|
||||
isEmpty(GITHASHSTRING) {
|
||||
DEFINES += GITHASH=\\\"------\\\"
|
||||
}
|
||||
|
||||
##for for 64 bit
|
||||
# TARGET = qt-dab64-9
|
||||
# DEFINES += __BITS64__
|
||||
# DESTDIR = /usr/shared/w64-programs/windows-dab64-qt
|
||||
# INCLUDEPATH += /usr/x64-w64-mingw32/sys-root/mingw/include
|
||||
# INCLUDEPATH += /usr/local/include /usr/include/qt4/qwt /usr/include/qt5/qwt /usr/include/qt4/qwt /usr/include/qwt /usr/local/qwt-6.1.4-svn/
|
||||
# LIBS += -L/usr/x64-w64-mingw32/sys-root/mingw/lib
|
||||
## LIBS += -liio
|
||||
## #CONFIG += extio
|
||||
# CONFIG += airspy-2
|
||||
# CONFIG += rtl_tcp
|
||||
# CONFIG += dabstick
|
||||
# CONFIG += sdrplay-v2
|
||||
# CONFIG += pluto
|
||||
# CONFIG += sdrplay-v3
|
||||
## CONFIG += hackrf
|
||||
## CONFIG += lime
|
||||
# CONFIG += viterbi-scalar
|
||||
# CONFIG += spiral-sse
|
||||
# CONFIG += spiral-no-sse
|
||||
# DEFINES += __THREADED_BACKEND
|
||||
#
|
||||
#for win32, comment out the lines above
|
||||
# equals (QT_MAJOR_VERSION, 5) {
|
||||
# TARGET = qt-dab32-qt5-6.9V3.2
|
||||
# }
|
||||
# else {
|
||||
# TARGET = qt-dab32-qt6-6.9V3.2
|
||||
# }
|
||||
# CONFIG += dabstick-win-v3
|
||||
equals (QT_MAJOR_VERSION, 5) {
|
||||
TARGET = qt-dab32-qt5-6.9.2
|
||||
}
|
||||
else {
|
||||
TARGET = qt-dab32-qt6-6.9.2
|
||||
}
|
||||
CONFIG += dabstick-win-v4
|
||||
CONFIG += airspy-2
|
||||
CONFIG += spyServer-16
|
||||
CONFIG += spyServer-8
|
||||
DESTDIR = /usr/shared/w32-programs/windows-dab32-qt
|
||||
INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include
|
||||
equals (QT_MAJOR_VERSION, 6) {
|
||||
INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qt6/qwt
|
||||
} else {
|
||||
INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qt5/qwt
|
||||
}
|
||||
LIBS += -L/usr/i686-w64-mingw32/sys-root/mingw/lib
|
||||
CONFIG += double
|
||||
#CONFIG += single
|
||||
CONFIG += mapserver
|
||||
CONFIG += extio
|
||||
CONFIG += rtl_tcp
|
||||
CONFIG += sdrplay-v2
|
||||
CONFIG += sdrplay-v3
|
||||
CONFIG += hackrf
|
||||
CONFIG += lime
|
||||
CONFIG += pluto
|
||||
CONFIG += viterbi-scalar
|
||||
# CONFIG += viterbi-sse
|
||||
# CONFIG += viterbi-avx2
|
||||
# CONFIG += spiral-sse
|
||||
# CONFIG += spiral-no-sse
|
||||
#
|
||||
# end of 32/64 specifics
|
||||
INCLUDEPATH += /usr/local/include
|
||||
LIBS += -lportaudio
|
||||
#LIBS += /usr/i686-w64-mingw32/sys-root/mingw/bin/libsndfile-1.dll
|
||||
#LIBS += /usr/i686-w64-mingw32/sys-root/mingw/bin/libsamplerate-0.dll
|
||||
LIBS += -lole32
|
||||
LIBS += -lwinpthread
|
||||
LIBS += -lwinmm
|
||||
LIBS += -lstdc++
|
||||
LIBS += -lws2_32
|
||||
LIBS += -lusb-1.0
|
||||
LIBS += -lz
|
||||
#correct this for the correct path to the qwt6 library on your system
|
||||
#mingw64 wants the first one, cross compiling mingw64-32 the second one
|
||||
#LIBS += -lqwt
|
||||
equals (QT_MAJOR_VERSION, 6) {
|
||||
LIBS += -lqwt-qt6
|
||||
}
|
||||
else {
|
||||
LIBS += -lqwt-qt5
|
||||
}
|
||||
CONFIG += faad
|
||||
#
|
||||
#very experimental, simple server for connecting to a tdc handler
|
||||
#CONFIG += datastreamer
|
||||
|
||||
#if you want to listen remote, uncomment
|
||||
#CONFIG += tcp-streamer # use for remote listening
|
||||
#otherwise, if you want to use the default qt way of soud out
|
||||
CONFIG += local-audio
|
||||
#comment both out if you just want to use the "normal" way
|
||||
|
||||
DEFINES += __DUMP_SNR__ # for experiments only
|
||||
}
|
||||
|
||||
### dabstick
|
||||
# Note: the windows version is bound to the dll, the
|
||||
# linux version loads the function from the so
|
||||
dabstick-linux {
|
||||
DEFINES += HAVE_RTLSDR
|
||||
DEPENDPATH += ../qt-devices/rtlsdr-handler-linux
|
||||
INCLUDEPATH += ../qt-devices/rtlsdr-handler-linux
|
||||
HEADERS += ../qt-devices/rtlsdr-handler-linux/rtlsdr-handler.h \
|
||||
../qt-devices/rtlsdr-handler-linux/dll-driver.h \
|
||||
../qt-devices/rtlsdr-handler-linux/rtl-dongleselect.h
|
||||
SOURCES += ../qt-devices/rtlsdr-handler-linux/rtlsdr-handler.cpp \
|
||||
../qt-devices/rtlsdr-handler-linux/dll-driver.cpp \
|
||||
../qt-devices/rtlsdr-handler-linux/rtl-dongleselect.cpp
|
||||
FORMS += ../qt-devices/rtlsdr-handler-linux/rtlsdr-widget.ui
|
||||
}
|
||||
|
||||
dabstick-win-v4 {
|
||||
DEFINES += HAVE_RTLSDR_V4
|
||||
DEPENDPATH += ../qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ../qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ../usr/shared/drivers/rtlsdrWindowsV4
|
||||
INCLUDEPATH += ../usr/shared/drivers/rtlsdrWindowsV4/x86
|
||||
HEADERS += ../qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.h \
|
||||
../qt-devices/rtlsdr-handler-common/rtl-dongleselect.h
|
||||
SOURCES += ../qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.cpp \
|
||||
../qt-devices/rtlsdr-handler-common/rtl-dongleselect.cpp
|
||||
FORMS += ../qt-devices/rtlsdr-handler-common/rtlsdr-widget.ui
|
||||
LIBS += /usr/shared/drivers/rtlsdrWindowsV4/x86/rtlsdr.dll
|
||||
}
|
||||
|
||||
dabstick-win-v3 {
|
||||
DEFINES += HAVE_RTLSDR_V3
|
||||
DEPENDPATH += ../qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ../qt-devices/rtlsdr-handler-win
|
||||
INCLUDEPATH += ../qt-devices/rtlsdr-handler-common
|
||||
HEADERS += ../qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.h \
|
||||
../qt-devices/rtlsdr-handler-common/rtl-dongleselect.h
|
||||
SOURCES += ../qt-devices/rtlsdr-handler-win/rtlsdr-handler-win.cpp \
|
||||
../qt-devices/rtlsdr-handler-common/rtl-dongleselect.cpp
|
||||
FORMS += ../qt-devices/rtlsdr-handler-common/rtlsdr-widget.ui
|
||||
# LIBS += /usr/i686-s64-mingw32/sys-root/mingw/bin/librtlsdr.dll
|
||||
LIBS += /usr/i686-w64-mingw32/sys-root/mingw/bin/librtlsdr.dll
|
||||
}
|
||||
|
||||
#
|
||||
# the SDRplay
|
||||
#
|
||||
sdrplay-v2 {
|
||||
DEFINES += HAVE_SDRPLAY_V2
|
||||
DEPENDPATH += ../qt-devices/sdrplay-handler-v2
|
||||
INCLUDEPATH += ../qt-devices/sdrplay-handler-v2
|
||||
HEADERS += ../qt-devices/sdrplay-handler-v2/sdrplay-handler-v2.h \
|
||||
../qt-devices/sdrplay-handler-v2/sdrplayselect.h
|
||||
SOURCES += ../qt-devices/sdrplay-handler-v2/sdrplay-handler-v2.cpp \
|
||||
../qt-devices/sdrplay-handler-v2/sdrplayselect.cpp
|
||||
FORMS += ../qt-devices/sdrplay-handler-v2/sdrplay-widget-v2.ui
|
||||
}
|
||||
#
|
||||
# the SDRplay
|
||||
#
|
||||
sdrplay-v3 {
|
||||
DEFINES += HAVE_SDRPLAY_V3
|
||||
DEPENDPATH += ../qt-devices/sdrplay-handler-v3
|
||||
INCLUDEPATH += ../qt-devices/sdrplay-handler-v3 \
|
||||
../qt-devices/sdrplay-handler-v3/include
|
||||
HEADERS += ../qt-devices/sdrplay-handler-v3/sdrplay-handler-v3.h \
|
||||
../qt-devices/sdrplay-handler-v3/sdrplay-commands.h \
|
||||
../qt-devices/sdrplay-handler-v3/Rsp-device.h \
|
||||
../qt-devices/sdrplay-handler-v3/RspI-handler.h \
|
||||
../qt-devices/sdrplay-handler-v3/Rsp1A-handler.h \
|
||||
../qt-devices/sdrplay-handler-v3/RspII-handler.h \
|
||||
../qt-devices/sdrplay-handler-v3/RspDuo-handler.h \
|
||||
../qt-devices/sdrplay-handler-v3/RspDx-handler.h
|
||||
SOURCES += ../qt-devices/sdrplay-handler-v3/Rsp-device.cpp \
|
||||
../qt-devices/sdrplay-handler-v3/sdrplay-handler-v3.cpp \
|
||||
../qt-devices/sdrplay-handler-v3/RspI-handler.cpp \
|
||||
../qt-devices/sdrplay-handler-v3/Rsp1A-handler.cpp \
|
||||
../qt-devices/sdrplay-handler-v3/RspII-handler.cpp \
|
||||
../qt-devices/sdrplay-handler-v3/RspDuo-handler.cpp \
|
||||
../qt-devices/sdrplay-handler-v3/RspDx-handler.cpp
|
||||
FORMS += ../qt-devices/sdrplay-handler-v3/sdrplay-widget-v3.ui
|
||||
# LIBS += -ldl
|
||||
}
|
||||
#
|
||||
# limeSDR
|
||||
#
|
||||
lime {
|
||||
DEFINES += HAVE_LIME
|
||||
INCLUDEPATH += ../qt-devices/lime-handler
|
||||
DEPENDPATH += ../qt-devices/lime-handler
|
||||
HEADERS += ../qt-devices/lime-handler/lime-handler.h \
|
||||
../qt-devices/lime-handler/lime-widget.h
|
||||
SOURCES += ../qt-devices/lime-handler/lime-handler.cpp
|
||||
}
|
||||
#
|
||||
# the hackrf
|
||||
#
|
||||
hackrf {
|
||||
DEFINES += HAVE_HACKRF
|
||||
DEPENDPATH += ../qt-devices/hackrf-handler
|
||||
INCLUDEPATH += ../qt-devices/hackrf-handler
|
||||
HEADERS += ../qt-devices/hackrf-handler/hackrf-handler.h
|
||||
SOURCES += ../qt-devices/hackrf-handler/hackrf-handler.cpp
|
||||
FORMS += ../qt-devices/hackrf-handler/hackrf-widget.ui
|
||||
}
|
||||
#
|
||||
#
|
||||
# airspy support
|
||||
#
|
||||
airspy {
|
||||
DEFINES += HAVE_AIRSPY
|
||||
DEPENDPATH += ../qt-devices/airspy
|
||||
INCLUDEPATH += ../qt-devices/airspy-handler \
|
||||
../qt-devices/airspy-handler/libairspy
|
||||
HEADERS += ../qt-devices/airspy-handler/airspy-handler.h \
|
||||
../qt-devices/airspy-handler/airspyselect.h \
|
||||
../qt-devices/airspy-handler/libairspy/airspy.h
|
||||
SOURCES += ../qt-devices/airspy-handler/airspy-handler.cpp \
|
||||
../qt-devices/airspy-handler/airspyselect.cpp
|
||||
FORMS += ../qt-devices/airspy-handler/airspy-widget.ui
|
||||
}
|
||||
|
||||
airspy-2 {
|
||||
DEFINES += HAVE_AIRSPY_2
|
||||
DEPENDPATH += ../qt-devices/airspy-2
|
||||
INCLUDEPATH += ../qt-devices/airspy-2 \
|
||||
../qt-devices/airspy-2/libairspy
|
||||
HEADERS += ../qt-devices/airspy-2/airspy-2.h \
|
||||
../qt-devices/airspy-2/airspyselect.h \
|
||||
../qt-devices/airspy-2/libairspy/airspy.h
|
||||
SOURCES += ../qt-devices/airspy-2/airspy-2.cpp \
|
||||
../qt-devices/airspy-2/airspyselect.cpp
|
||||
FORMS += ../qt-devices/airspy-2/airspy-widget.ui
|
||||
}
|
||||
|
||||
# extio dependencies, windows only
|
||||
#
|
||||
extio {
|
||||
DEFINES += HAVE_EXTIO
|
||||
INCLUDEPATH += ../qt-devices/extio-handler
|
||||
HEADERS += ../qt-devices/extio-handler/extio-handler.h \
|
||||
../qt-devices/extio-handler/common-readers.h \
|
||||
../qt-devices/extio-handler/virtual-reader.h
|
||||
SOURCES += ../qt-devices/extio-handler/extio-handler.cpp \
|
||||
../qt-devices/extio-handler/common-readers.cpp \
|
||||
../qt-devices/extio-handler/virtual-reader.cpp
|
||||
}
|
||||
|
||||
#
|
||||
rtl_tcp {
|
||||
DEFINES += HAVE_RTL_TCP
|
||||
QT += network
|
||||
INCLUDEPATH += ../qt-devices/rtl_tcp
|
||||
HEADERS += ../qt-devices/rtl_tcp/rtl_tcp_client.h
|
||||
SOURCES += ../qt-devices/rtl_tcp/rtl_tcp_client.cpp
|
||||
FORMS += ../qt-devices/rtl_tcp/rtl_tcp-widget.ui
|
||||
}
|
||||
|
||||
soapy {
|
||||
DEFINES += HAVE_SOAPY
|
||||
DEPENDPATH += ../qt-devices/soapy
|
||||
INCLUDEPATH += ../qt-devices/soapy
|
||||
HEADERS += ../qt-devices/soapy/soapy-handler.h \
|
||||
../qt-devices/soapy/soapy-converter.h
|
||||
SOURCES += ../qt-devices/soapy/soapy-handler.cpp \
|
||||
../qt-devices/soapy/soapy-converter.cpp
|
||||
FORMS += ../qt-devices/soapy/soapy-widget.ui
|
||||
LIBS += -lSoapySDR -lm
|
||||
}
|
||||
|
||||
pluto-rxtx {
|
||||
DEFINES += HAVE_PLUTO_RXTX
|
||||
QT += network
|
||||
INCLUDEPATH += ../qt-devices/pluto-rxtx
|
||||
INCLUDEPATH += ../qt-devices/pluto-rxtx/dab-streamer
|
||||
HEADERS += ../qt-devices/pluto-rxtx/dabFilter.h
|
||||
HEADERS += ../qt-devices/pluto-rxtx/pluto-rxtx-handler.h
|
||||
HEADERS += ../qt-devices/pluto-rxtx/dab-streamer/dab-streamer.h
|
||||
HEADERS += ../qt-devices/pluto-rxtx/dab-streamer/up-filter.h
|
||||
SOURCES += ../qt-devices/pluto-rxtx/pluto-rxtx-handler.cpp
|
||||
SOURCES += ../qt-devices/pluto-rxtx/dab-streamer/dab-streamer.cpp
|
||||
SOURCES += ../qt-devices/pluto-rxtx/dab-streamer/up-filter.cpp
|
||||
FORMS += ../qt-devices/pluto-rxtx/pluto-rxtx-widget.ui
|
||||
# LIBS += -liio -lad9361
|
||||
}
|
||||
|
||||
pluto {
|
||||
DEFINES += HAVE_PLUTO
|
||||
QT += network
|
||||
INCLUDEPATH += ../qt-devices/pluto-handler
|
||||
HEADERS += ../qt-devices/pluto-handler/dabFilter.h
|
||||
HEADERS += ../qt-devices/pluto-handler/pluto-handler.h
|
||||
SOURCES += ../qt-devices/pluto-handler/pluto-handler.cpp
|
||||
FORMS += ../qt-devices/pluto-handler/pluto-widget.ui
|
||||
}
|
||||
|
||||
elad-device {
|
||||
DEFINES += HAVE_ELAD
|
||||
DEPENDPATH += ../qt-devices/elad-s1-handler
|
||||
INCLUDEPATH += ../qt-devices/elad-s1-handler
|
||||
HEADERS += ../qt-devices/elad-s1-handler/elad-handler.h
|
||||
HEADERS += ../qt-devices/elad-s1-handler/elad-loader.h
|
||||
HEADERS += ../qt-devices/elad-s1-handler/elad-worker.h
|
||||
SOURCES += ../qt-devices/elad-s1-handler/elad-handler.cpp
|
||||
SOURCES += ../qt-devices/elad-s1-handler/elad-loader.cpp
|
||||
SOURCES += ../qt-devices/elad-s1-handler/elad-worker.cpp
|
||||
FORMS += ../qt-devices/elad-s1-handler/elad-widget.ui
|
||||
}
|
||||
|
||||
spyServer-8 {
|
||||
DEFINES += HAVE_SPYSERVER_8
|
||||
DEPENDPATH += ../qt-devices/spy-server-8
|
||||
INCLUDEPATH += ../qt-devices/spy-server-8
|
||||
HEADERS += ../qt-devices/spy-server-8/spyserver-protocol.h
|
||||
HEADERS += ../qt-devices/spy-server-8/tcp-client-8.h
|
||||
HEADERS += ../qt-devices/spy-server-8/spy-handler-8.h
|
||||
HEADERS += ../qt-devices/spy-server-8/spyserver-client-8.h
|
||||
SOURCES += ../qt-devices/spy-server-8/tcp-client-8.cpp
|
||||
SOURCES += ../qt-devices/spy-server-8/spy-handler-8.cpp
|
||||
SOURCES += ../qt-devices/spy-server-8/spyserver-client-8.cpp
|
||||
FORMS += ../qt-devices/spy-server-8/spyserver-widget-8.ui
|
||||
}
|
||||
|
||||
spyServer-16 {
|
||||
DEFINES += HAVE_SPYSERVER_16
|
||||
DEPENDPATH += ../qt-devices/spy-server-16
|
||||
INCLUDEPATH += ../qt-devices/spy-server-16
|
||||
HEADERS += ../qt-devices/spy-server-16/spyserver-protocol.h
|
||||
HEADERS += ../qt-devices/spy-server-16/tcp-client.h
|
||||
HEADERS += ../qt-devices/spy-server-16/spy-handler.h
|
||||
HEADERS += ../qt-devices/spy-server-16/spyserver-client.h
|
||||
SOURCES += ../qt-devices/spy-server-16/tcp-client.cpp
|
||||
SOURCES += ../qt-devices/spy-server-16/spy-handler.cpp
|
||||
SOURCES += ../qt-devices/spy-server-16/spyserver-client.cpp
|
||||
FORMS += ../qt-devices/spy-server-16/spyserver-widget.ui
|
||||
}
|
||||
|
||||
uhd {
|
||||
DEFINES += HAVE_UHD
|
||||
DEPENDPATH += ../qt-devices/uhd
|
||||
INCLUDEPATH += ../qt-devices/uhd
|
||||
HEADERS += ../qt-devices/uhd/uhd-handler.h
|
||||
SOURCES += ../qt-devices/uhd/uhd-handler.cpp
|
||||
FORMS += ../qt-devices/uhd/uhd-widget.ui
|
||||
LIBS += -luhd
|
||||
}
|
||||
|
||||
colibri {
|
||||
DEFINES += HAVE_COLIBRI
|
||||
DEPENDPATH += ../qt-devices/colibri-handler
|
||||
INCLUDEPATH += ../qt-devices/colibri-handler
|
||||
HEADERS += ../qt-devices/colibri-handler/common.h
|
||||
HEADERS += ../qt-devices/colibri-handler/LibLoader.h
|
||||
HEADERS += ../qt-devices/colibri-handler/colibri-handler.h
|
||||
SOURCES += ../qt-devices/colibri-handler/LibLoader.cpp
|
||||
SOURCES += ../qt-devices/colibri-handler/colibri-handler.cpp
|
||||
FORMS += ../qt-devices/colibri-handler/colibri-widget.ui
|
||||
}
|
||||
|
||||
send_datagram {
|
||||
DEFINES += _SEND_DATAGRAM_
|
||||
QT += network
|
||||
}
|
||||
|
||||
tcp-streamer {
|
||||
DEFINES += TCP_STREAMER
|
||||
QT += network
|
||||
HEADERS += ../includes/output/tcp-streamer.h
|
||||
SOURCES += ../src/output/tcp-streamer.cpp
|
||||
}
|
||||
|
||||
local-audio {
|
||||
PKGCONFIG += portaudio-2.0
|
||||
DEFINES += QT_AUDIO
|
||||
QT += multimedia
|
||||
|
||||
equals (QT_MAJOR_VERSION, 5) {
|
||||
INCLUDEPATH += ../includes/output/Qt5
|
||||
HEADERS += ../includes/output/Qt5/Qt-audio.h \
|
||||
../includes/output/Qt5/Qt-audiodevice.h \
|
||||
../includes/output/audiosink.h
|
||||
SOURCES += ../src/output/Qt5/Qt-audio.cpp \
|
||||
../src/output/Qt5/Qt-audiodevice.cpp \
|
||||
../src/output/audiosink.cpp
|
||||
LIBS += -lportaudio
|
||||
} else {
|
||||
INCLUDEPATH += ../includes/output/Qt6
|
||||
HEADERS += ../includes/output/Qt6/Qt-audio.h \
|
||||
../includes/output/Qt6/Qt-audiodevice.h \
|
||||
../includes/output/audiosink.h
|
||||
SOURCES += ../src/output/Qt6/Qt-audio.cpp \
|
||||
../src/output/Qt6/Qt-audiodevice.cpp \
|
||||
../src/output/audiosink.cpp
|
||||
LIBS += -lportaudio
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
datastreamer {
|
||||
DEFINES += DATA_STREAMER
|
||||
DEFINES += CLOCK_STREAMER
|
||||
INCLUDEPATH += ../server-thread
|
||||
HEADERS += ../server-thread/tcp-server.h
|
||||
SOURCES += ../server-thread/tcp-server.cpp
|
||||
}
|
||||
|
||||
viterbi-scalar {
|
||||
DEPENDPATH += ../src/support/viterbi
|
||||
INCLUDEPATH += ../src/support/viterbi
|
||||
HEADERS += ../src/support/viterbi/viterbi.h
|
||||
SOURCES += ../src/support/viterbi/viterbi.cpp
|
||||
}
|
||||
|
||||
viterbi-sse {
|
||||
DEPENDPATH += ../src/support/viterbi
|
||||
QMAKE_CFLAGS += -msse4
|
||||
QMAKE_CXXFLAGS += -msse4
|
||||
QMAKE_CFLAGS += -mavx2
|
||||
QMAKE_CXXFLAGS += -mavx2
|
||||
QMAKE_LFLAGS += -mavx2
|
||||
DEFINES += __SSE4_1__
|
||||
DEFINES += __ARCH_X86__
|
||||
#DEFINES += __ARCH_AARCH64__
|
||||
INCLUDEPATH += ../src/support/viterbi
|
||||
HEADERS += ../src/support/viterbi/viterbi.h
|
||||
SOURCES += ../src/support/viterbi/viterbi.cpp
|
||||
}
|
||||
|
||||
viterbi-avx2 {
|
||||
DEPENDPATH += ../src/support/viterbi
|
||||
QMAKE_CFLAGS += -mavx2
|
||||
QMAKE_CXXFLAGS += -mavx2
|
||||
QMAKE_LFLAGS += -mavx2
|
||||
DEFINES += __AVX2__
|
||||
DEFINES += __ARCH_X86__
|
||||
#DEFINES += __ARCH_AARCH64__
|
||||
INCLUDEPATH += ../src/support/viterbi
|
||||
HEADERS += ../src/support/viterbi/viterbi.h
|
||||
SOURCES += ../src/support/viterbi/viterbi.cpp
|
||||
}
|
||||
|
||||
spiral-sse {
|
||||
DEPENDPATH += ../src/support/viterbi-spiral
|
||||
INCLUDEPATH += ../src/support/viterbi-spiral
|
||||
DEFINES += SSE_AVAILABLE
|
||||
HEADERS += ../src/support/viterbi-spiral/viterbi.h
|
||||
SOURCES += ../src/support/viterbi-spiral/viterbi.cpp
|
||||
HEADERS += ../src/support/viterbi-spiral/spiral-sse.h
|
||||
SOURCES += ../src/support/viterbi-spiral/spiral-sse.c
|
||||
}
|
||||
|
||||
spiral-no-sse {
|
||||
DEPENDPATH += ../src/support/viterbi-spiral
|
||||
INCLUDEPATH += ../src/support/viterbi-spiral
|
||||
DEFINES += NO_SSE_AVAILABLE
|
||||
HEADERS += ../src/support/viterbi-spiral/viterbi.h
|
||||
SOURCES += ../src/support/viterbi-spiral/viterbi.cpp
|
||||
HEADERS += ../src/support/viterbi-spiral/spiral-no-sse.h
|
||||
SOURCES += ../src/support/viterbi-spiral/spiral-no-sse.c
|
||||
}
|
||||
|
||||
faad {
|
||||
DEFINES += __WITH_FAAD__
|
||||
HEADERS += ../includes/backend/audio/faad-decoder.h
|
||||
SOURCES += ../src/backend/audio/faad-decoder.cpp
|
||||
LIBS += -lfaad
|
||||
}
|
||||
|
||||
fdk-aac {
|
||||
DEFINES += __WITH_FDK_AAC__
|
||||
INCLUDEPATH += ../helpers/specials/fdk-aac
|
||||
HEADERS += ../includes/backend/audio/fdk-aac.h
|
||||
SOURCES += ../src/backend/audio/fdk-aac.cpp
|
||||
PKGCONFIG += fdk-aac
|
||||
}
|
||||
|
||||
mapserver {
|
||||
DEFINES += __HAVE_MAP_SERVER__
|
||||
HEADERS += ../includes/support/http-handler.h
|
||||
SOURCES += ../src/support/http-handler.cpp
|
||||
}
|
||||
|
||||
double {
|
||||
DEFINES += __WITH_DOUBLES__
|
||||
LIBS += -lfftw3
|
||||
}
|
||||
|
||||
single {
|
||||
LIBS += -lfftw3f
|
||||
}
|
@@ -1,48 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>../i18n/de_DE.qm</file>
|
||||
<file>qt-dab-6.9.ico</file>
|
||||
<file>../AUTHORS</file>
|
||||
<file>../COPYING</file>
|
||||
<file>../res/radio-pictures/pauze-slide-0.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-1.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-2.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-3.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-4.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-5.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-6.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-7.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-8.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-9.png</file>
|
||||
<file>../res/radio-pictures/pauze-slide-10.png</file>
|
||||
<file>../res/radio-pictures/volume_off.png</file>
|
||||
<file>../res/radio-pictures/volume_on.png</file>
|
||||
<file>../res/radio-pictures/signal0.png</file>
|
||||
<file>../res/radio-pictures/signal1.png</file>
|
||||
<file>../res/radio-pictures/signal2.png</file>
|
||||
<file>../res/radio-pictures/signal3.png</file>
|
||||
<file>../res/radio-pictures/details24.png</file>
|
||||
<file>../res/radio-pictures/folder_button.png</file>
|
||||
<file>../res/radio-pictures/announcement01.png</file>
|
||||
<file>../res/radio-pictures/announcement02.png</file>
|
||||
<file>../res/radio-pictures/announcement03.png</file>
|
||||
<file>../res/radio-pictures/announcement04.png</file>
|
||||
<file>../res/radio-pictures/announcement05.png</file>
|
||||
<file>../res/radio-pictures/announcement09.png</file>
|
||||
<file>../res/radio-pictures/announcement-d.png</file>
|
||||
<file>../res/radio-pictures/up-arrow.png</file>
|
||||
<file>../res/radio-pictures/down-arrow.png</file>
|
||||
<file>../res/radio-pictures/reset.png</file>
|
||||
<file>../res/radio-pictures/qt-dab-6.9-128x128.png</file>
|
||||
<file>../res/radio-pictures/qt-dab-6.9-256x256.png</file>
|
||||
<file>../res/qt-map-6X.html</file>
|
||||
<file>../res/qt-map-69.html</file>
|
||||
<file>../res/EasyCode.qss</file>
|
||||
<file>../res/Darkeum.qss</file>
|
||||
<file>../res/Adaptic.qss</file>
|
||||
<file>../res/globstyle.qss</file>
|
||||
<file>../res/Combinear.qss</file>
|
||||
<file>../res/Diffnes.qss</file>
|
||||
<file>../res/epgLabel.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
48
resources.qrc
Normal file
48
resources.qrc
Normal file
@@ -0,0 +1,48 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>./i18n/de_DE.qm</file>
|
||||
<file>./app-files/qt-dab-6.9.ico</file>
|
||||
<file>./AUTHORS</file>
|
||||
<file>./COPYING</file>
|
||||
<file>./res/radio-pictures/pauze-slide-0.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-1.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-2.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-3.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-4.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-5.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-6.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-7.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-8.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-9.png</file>
|
||||
<file>./res/radio-pictures/pauze-slide-10.png</file>
|
||||
<file>./res/radio-pictures/volume_off.png</file>
|
||||
<file>./res/radio-pictures/volume_on.png</file>
|
||||
<file>./res/radio-pictures/signal0.png</file>
|
||||
<file>./res/radio-pictures/signal1.png</file>
|
||||
<file>./res/radio-pictures/signal2.png</file>
|
||||
<file>./res/radio-pictures/signal3.png</file>
|
||||
<file>./res/radio-pictures/details24.png</file>
|
||||
<file>./res/radio-pictures/folder_button.png</file>
|
||||
<file>./res/radio-pictures/announcement01.png</file>
|
||||
<file>./res/radio-pictures/announcement02.png</file>
|
||||
<file>./res/radio-pictures/announcement03.png</file>
|
||||
<file>./res/radio-pictures/announcement04.png</file>
|
||||
<file>./res/radio-pictures/announcement05.png</file>
|
||||
<file>./res/radio-pictures/announcement09.png</file>
|
||||
<file>./res/radio-pictures/announcement-d.png</file>
|
||||
<file>./res/radio-pictures/up-arrow.png</file>
|
||||
<file>./res/radio-pictures/down-arrow.png</file>
|
||||
<file>./res/radio-pictures/reset.png</file>
|
||||
<file>./res/radio-pictures/qt-dab-6.9-128x128.png</file>
|
||||
<file>./res/radio-pictures/qt-dab-6.9-256x256.png</file>
|
||||
<file>./res/qt-map-6X.html</file>
|
||||
<file>./res/qt-map-69.html</file>
|
||||
<file>./res/EasyCode.qss</file>
|
||||
<file>./res/Darkeum.qss</file>
|
||||
<file>./res/Adaptic.qss</file>
|
||||
<file>./res/globstyle.qss</file>
|
||||
<file>./res/Combinear.qss</file>
|
||||
<file>./res/Diffnes.qss</file>
|
||||
<file>./res/epgLabel.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
26
sources/README.md
Normal file
26
sources/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
Sources of the Qt-DAB program are organized in directories
|
||||
|
||||
* the directory "main" contains the C++ main program, the GUI handling "radio.cpp" program and some oter classes related to the GUI.
|
||||
The GUI class handles the selection and connection of a devices,
|
||||
and it instructs fromt end and backend what data is needed for selected
|
||||
services.
|
||||
|
||||
* the directory "frontend", contains all classed for handling the input samples and converting these to sequences of soft bits (softbits encoded in the range -127 .. 127
|
||||
|
||||
* the output of the front end handler is passed on the "backend", the latter contains the functionality of mapping the soft bits to the audio and/pr data of the selected services. The directory itself has subdirectories for handling audio (i.e. mp2 or mp4) or data (mot, ip, journaline, epg)
|
||||
|
||||
* "output" is the directory with the functionality of converting the PCM samples to audible audio. It allows a choice between using portaudio, Qt5 audio
|
||||
or Qt6 audio.
|
||||
|
||||
* "protection" contains a few classes handling the different protection schemes
|
||||
|
||||
* "qt-devices" contains all code - in different subdirectories - for controlling the devices that can be part of the configuration
|
||||
|
||||
* "support" contains - as the name suggests - the various support functions
|
||||
|
||||
* "server-thread" contains some code for the tcp-server (does not need to be configured)
|
||||
|
||||
* "eti-handler" contains a special class, one used to generate eti output.
|
||||
|
||||
|
8
sources/backend/README.md
Normal file
8
sources/backend/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
The directory "backend" contains - as the name suggests - functions to map the
|
||||
"soft bits", passed onto audio and/or data.
|
||||
|
||||
The input here is processed by the file "msc-handler.cpp", that file
|
||||
extracts the data for the selected service(s) and initiates required backends.
|
||||
|
||||
|
0
src/backend/audio/bitWriter.cpp → sources/backend/audio/bitWriter.cpp
Executable file → Normal file
0
src/backend/audio/bitWriter.cpp → sources/backend/audio/bitWriter.cpp
Executable file → Normal file
0
includes/backend/audio/bitWriter.h → sources/backend/audio/bitWriter.h
Executable file → Normal file
0
includes/backend/audio/bitWriter.h → sources/backend/audio/bitWriter.h
Executable file → Normal file
0
src/backend/audio/faad-decoder.cpp → sources/backend/audio/faad-decoder.cpp
Executable file → Normal file
0
src/backend/audio/faad-decoder.cpp → sources/backend/audio/faad-decoder.cpp
Executable file → Normal file
0
includes/backend/audio/faad-decoder.h → sources/backend/audio/faad-decoder.h
Executable file → Normal file
0
includes/backend/audio/faad-decoder.h → sources/backend/audio/faad-decoder.h
Executable file → Normal file
0
src/backend/audio/fdk-aac.cpp → sources/backend/audio/fdk-aac.cpp
Executable file → Normal file
0
src/backend/audio/fdk-aac.cpp → sources/backend/audio/fdk-aac.cpp
Executable file → Normal file
0
includes/backend/audio/fdk-aac.h → sources/backend/audio/fdk-aac.h
Executable file → Normal file
0
includes/backend/audio/fdk-aac.h → sources/backend/audio/fdk-aac.h
Executable file → Normal file
0
src/backend/firecode-checker.cpp → sources/backend/audio/firecode-checker.cpp
Executable file → Normal file
0
src/backend/firecode-checker.cpp → sources/backend/audio/firecode-checker.cpp
Executable file → Normal file
0
includes/backend/firecode-checker.h → sources/backend/audio/firecode-checker.h
Executable file → Normal file
0
includes/backend/firecode-checker.h → sources/backend/audio/firecode-checker.h
Executable file → Normal file
0
src/backend/audio/mp2processor.cpp → sources/backend/audio/mp2processor.cpp
Executable file → Normal file
0
src/backend/audio/mp2processor.cpp → sources/backend/audio/mp2processor.cpp
Executable file → Normal file
0
includes/backend/audio/mp2processor.h → sources/backend/audio/mp2processor.h
Executable file → Normal file
0
includes/backend/audio/mp2processor.h → sources/backend/audio/mp2processor.h
Executable file → Normal file
0
src/backend/audio/mp4processor.cpp → sources/backend/audio/mp4processor.cpp
Executable file → Normal file
0
src/backend/audio/mp4processor.cpp → sources/backend/audio/mp4processor.cpp
Executable file → Normal file
0
src/backend/audio/mp4processor.cpp-old → sources/backend/audio/mp4processor.cpp-old
Executable file → Normal file
0
src/backend/audio/mp4processor.cpp-old → sources/backend/audio/mp4processor.cpp-old
Executable file → Normal file
0
includes/backend/audio/mp4processor.h → sources/backend/audio/mp4processor.h
Executable file → Normal file
0
includes/backend/audio/mp4processor.h → sources/backend/audio/mp4processor.h
Executable file → Normal file
0
includes/backend/audio/neaacdec.h → sources/backend/audio/neaacdec.h
Executable file → Normal file
0
includes/backend/audio/neaacdec.h → sources/backend/audio/neaacdec.h
Executable file → Normal file
0
src/backend/backend-deconvolver.cpp → sources/backend/backend-deconvolver.cpp
Executable file → Normal file
0
src/backend/backend-deconvolver.cpp → sources/backend/backend-deconvolver.cpp
Executable file → Normal file
0
includes/backend/backend-deconvolver.h → sources/backend/backend-deconvolver.h
Executable file → Normal file
0
includes/backend/backend-deconvolver.h → sources/backend/backend-deconvolver.h
Executable file → Normal file
0
src/backend/backend-driver.cpp → sources/backend/backend-driver.cpp
Executable file → Normal file
0
src/backend/backend-driver.cpp → sources/backend/backend-driver.cpp
Executable file → Normal file
0
includes/backend/backend-driver.h → sources/backend/backend-driver.h
Executable file → Normal file
0
includes/backend/backend-driver.h → sources/backend/backend-driver.h
Executable file → Normal file
0
src/backend/backend.cpp → sources/backend/backend.cpp
Executable file → Normal file
0
src/backend/backend.cpp → sources/backend/backend.cpp
Executable file → Normal file
0
includes/backend/backend.h → sources/backend/backend.h
Executable file → Normal file
0
includes/backend/backend.h → sources/backend/backend.h
Executable file → Normal file
0
src/backend/charsets.cpp → sources/backend/charsets.cpp
Executable file → Normal file
0
src/backend/charsets.cpp → sources/backend/charsets.cpp
Executable file → Normal file
0
includes/backend/charsets.h → sources/backend/charsets.h
Executable file → Normal file
0
includes/backend/charsets.h → sources/backend/charsets.h
Executable file → Normal file
0
src/backend/data/data-processor.cpp → sources/backend/data/data-processor.cpp
Executable file → Normal file
0
src/backend/data/data-processor.cpp → sources/backend/data/data-processor.cpp
Executable file → Normal file
0
includes/backend/data/data-processor.h → sources/backend/data/data-processor.h
Executable file → Normal file
0
includes/backend/data/data-processor.h → sources/backend/data/data-processor.h
Executable file → Normal file
0
src/backend/data/ip-datahandler.cpp → sources/backend/data/ip-datahandler.cpp
Executable file → Normal file
0
src/backend/data/ip-datahandler.cpp → sources/backend/data/ip-datahandler.cpp
Executable file → Normal file
0
includes/backend/data/ip-datahandler.h → sources/backend/data/ip-datahandler.h
Executable file → Normal file
0
includes/backend/data/ip-datahandler.h → sources/backend/data/ip-datahandler.h
Executable file → Normal file
0
src/backend/data/journaline-datahandler.cpp → sources/backend/data/journaline-datahandler.cpp
Executable file → Normal file
0
src/backend/data/journaline-datahandler.cpp → sources/backend/data/journaline-datahandler.cpp
Executable file → Normal file
0
includes/backend/data/journaline-datahandler.h → sources/backend/data/journaline-datahandler.h
Executable file → Normal file
0
includes/backend/data/journaline-datahandler.h → sources/backend/data/journaline-datahandler.h
Executable file → Normal file
0
src/backend/data/journaline/NML.cpp → sources/backend/data/journaline/NML.cpp
Executable file → Normal file
0
src/backend/data/journaline/NML.cpp → sources/backend/data/journaline/NML.cpp
Executable file → Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user