diff --git a/.github/workflows/trigger_rebuild_packages.yml b/.github/workflows/trigger_rebuild_packages.yml index 4eb740f3..e74a09b1 100644 --- a/.github/workflows/trigger_rebuild_packages.yml +++ b/.github/workflows/trigger_rebuild_packages.yml @@ -49,8 +49,6 @@ jobs: - 'scripts/package-build/hsflowd/**' isc-dhcp: - 'scripts/package-build/isc-dhcp/**' - kea: - - 'scripts/package-build/kea/**' keepalived: - 'scripts/package-build/keepalived/**' libnss-mapuser: @@ -167,10 +165,6 @@ jobs: trigger_build "isc-dhcp" fi - if [ "${{ steps.changes.outputs.kea }}" == "true" ]; then - trigger_build "kea" - fi - if [ "${{ steps.changes.outputs.keepalived }}" == "true" ]; then trigger_build "keepalived" fi diff --git a/data/architectures/amd64.toml b/data/architectures/amd64.toml index 8676ad2f..2e83358f 100644 --- a/data/architectures/amd64.toml +++ b/data/architectures/amd64.toml @@ -19,3 +19,8 @@ packages = [ [additional_repositories.zabbix] url = "https://repo.zabbix.com/zabbix/6.0/debian" + +[additional_repositories.kea] + architecture = "amd64" + url = "https://dl.cloudsmith.io/public/isc/kea-3-0/deb/debian" + distribution = "bookworm" diff --git a/data/live-build-config/archives/isc-kea.key.chroot b/data/live-build-config/archives/isc-kea.key.chroot new file mode 100644 index 00000000..0277c929 --- /dev/null +++ b/data/live-build-config/archives/isc-kea.key.chroot @@ -0,0 +1,24 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGNBGhVJw8BDACXwlMdVKg40L87xcyG6fuo1KAOdk3cqx0jcojtYXYo16R5A1xD +ILW/Nw/b9qWkoXAjCOL8xgspSYx8Cqg73o+Jy2tzBNSzXGYmh/8sDicJmTGBt9n7 +AhwlhW7ztzYYNaJeyyGvWR+JMqGtPWuc/LixtCu/SzA6siMKCTZfUp/3nqiWQiYV +zyYCuUI9MTaS0/LCfEclORE2GU5cED4LJli5iZFcJ8RXXTfaCncIeYFFvJTPf9TP +mbKS8QGPYMPdtwsvqBEpej3pDXHetWuIIchPokq/rSa3QX7NmBhvh14ptaIu0usn +i+5XvExH4a5RC0qgHFdLeYskzlRqw3dLwGHYZZ8geLaSrLSdla2rjQFzZhEcIDKI +FnGaoAj0B3WtpJPvhmWW/1Ecryq0iOgtdNXdYxnun8eCEW6Bo5ebAW7NAI9kmWto +i+YFsVUYAZF+gP856BSaiDMFi7LV4bOu9p78o0s6DGmBe+yVPW1Lo7Vi0X8dcLnZ +07Cy0JoN+QRlqgMAEQEAAbQ4Q2xvdWRzbWl0aCBQYWNrYWdlIChpc2Mva2VhLTMt +MCkgPHN1cHBvcnRAY2xvdWRzbWl0aC5pbz6JAc4EEwEIADgWIQSdpXC7GSIRiF5O +soCxbETNRVFMPAUCaFUnDwIbLwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRCx +bETNRVFMPPxAC/0eSSK+2Z4AOsyGun2zBDLPp3qEFrAl5KjAeZCgtYJs3UiQ65DX +0iuvdq39SRWkSRw5w5og+nZbPdDzhw3KFSVgdCsQBv83DUH0Zlmn5Wf6eTh72T5F +lmaaE02picOD3/9L0RdxZOEns/19f2OtSzRHxRMKuv7crcAsnJlkWYP2w96AM0ln +QqmpVDbI8XWtQclJUkPPU+I/m6nG7Z+tc8miJ1uBfA0wP22Zj6HzRTWf9patcfTy +IDr9rO5KmiAlO+f3YbVsKGNcuxdbMusDwpe13BRfKFDlwLKbdrSeSIw1JQc2uhhX +/u1QTAXfLSoP4VAYwbfotgG9a/LKRJGG/M9mMtroOQYO15y+Vo2uSN4q5krv589h +l6MAPFr2sDiedibMl9SGAPtT83afCrSZ6BgobytsdtV3u2WOqxrVUXDpvhZKjxX6 +pXrrSV9tPhZlq5pZvnDCS392FlMfHmjR4BUxzwD4Wnax8G7uQfEUWMkTaqQAZfuN +EsbY2TeLjn3ZojI= +=+igW +-----END PGP PUBLIC KEY BLOCK----- diff --git a/data/live-build-config/hooks/live/18-enable-disable_services.chroot b/data/live-build-config/hooks/live/18-enable-disable_services.chroot index 04ca7f3e..7e20f02a 100755 --- a/data/live-build-config/hooks/live/18-enable-disable_services.chroot +++ b/data/live-build-config/hooks/live/18-enable-disable_services.chroot @@ -5,9 +5,9 @@ systemctl disable syslog.service systemctl disable rsyslog.service systemctl disable arpwatch.service systemctl disable smartd.service -systemctl disable kea-ctrl-agent.service -systemctl disable kea-dhcp4-server.service -systemctl disable kea-dhcp6-server.service +systemctl disable kea-dhcp4.service +systemctl disable kea-dhcp6.service +systemctl disable kea-dhcp-ddns.service systemctl disable isc-dhcp-relay.service systemctl disable nfacctd.service systemctl disable pmacctd.service diff --git a/scripts/package-build/kea/.gitignore b/scripts/package-build/kea/.gitignore deleted file mode 100644 index 70219f63..00000000 --- a/scripts/package-build/kea/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/isc-kea/ diff --git a/scripts/package-build/kea/build.py b/scripts/package-build/kea/build.py deleted file mode 120000 index 3c76af73..00000000 --- a/scripts/package-build/kea/build.py +++ /dev/null @@ -1 +0,0 @@ -../build.py \ No newline at end of file diff --git a/scripts/package-build/kea/package.toml b/scripts/package-build/kea/package.toml deleted file mode 100644 index 872be441..00000000 --- a/scripts/package-build/kea/package.toml +++ /dev/null @@ -1,4 +0,0 @@ -[[packages]] -name = "isc-kea" -commit_id = "debian/2.6.1-2" -scm_url = "https://salsa.debian.org/debian/isc-kea" diff --git a/scripts/package-build/kea/patches/isc-kea/0001-Add-multithreading-test-mode.patch b/scripts/package-build/kea/patches/isc-kea/0001-Add-multithreading-test-mode.patch deleted file mode 100644 index 981e6f1d..00000000 --- a/scripts/package-build/kea/patches/isc-kea/0001-Add-multithreading-test-mode.patch +++ /dev/null @@ -1,135 +0,0 @@ -From cb2b064162e2d5bf09331c619abf76a40130ade1 Mon Sep 17 00:00:00 2001 -From: sarthurdev -Date: Wed, 2 Apr 2025 08:48:48 +0000 -Subject: [PATCH 1/2] Add multithreading test mode - ---- - src/bin/dhcp4/json_config_parser.cc | 4 ++++ - src/bin/dhcp6/json_config_parser.cc | 6 +++++- - src/lib/config/cmd_http_listener.cc | 3 +++ - src/lib/tcp/mt_tcp_listener_mgr.cc | 3 +++ - src/lib/util/multi_threading_mgr.cc | 3 ++- - src/lib/util/multi_threading_mgr.h | 19 +++++++++++++++++++ - 6 files changed, 36 insertions(+), 2 deletions(-) - -diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc -index c2e34c5..1350816 100644 ---- a/src/bin/dhcp4/json_config_parser.cc -+++ b/src/bin/dhcp4/json_config_parser.cc -@@ -718,6 +718,10 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, - LOG_DEBUG(dhcp4_logger, DBG_DHCP4_COMMAND, DHCP4_CONFIG_START) - .arg(server.redactConfig(config_set)->str()); - -+ if (check_only) { -+ MultiThreadingMgr::instance().setTestMode(true); -+ } -+ - auto answer = processDhcp4Config(config_set); - - int status_code = CONTROL_RESULT_SUCCESS; -diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc -index 671d69a..a74a568 100644 ---- a/src/bin/dhcp6/json_config_parser.cc -+++ b/src/bin/dhcp6/json_config_parser.cc -@@ -850,6 +850,10 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, - LOG_DEBUG(dhcp6_logger, DBG_DHCP6_COMMAND, DHCP6_CONFIG_START) - .arg(server.redactConfig(config_set)->str()); - -+ if (check_only) { -+ MultiThreadingMgr::instance().setTestMode(true); -+ } -+ - auto answer = processDhcp6Config(config_set); - - int status_code = CONTROL_RESULT_SUCCESS; -@@ -953,7 +957,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, - // configuration. This will add created subnets and option values into - // the server's configuration. - // This operation should be exception safe but let's make sure. -- if (status_code == CONTROL_RESULT_SUCCESS && (!check_only || extra_checks)) { -+ if (status_code == CONTROL_RESULT_SUCCESS && !check_only) { - try { - - // Setup the command channel. -diff --git a/src/lib/config/cmd_http_listener.cc b/src/lib/config/cmd_http_listener.cc -index 9dfea59..394806e 100644 ---- a/src/lib/config/cmd_http_listener.cc -+++ b/src/lib/config/cmd_http_listener.cc -@@ -40,6 +40,9 @@ CmdHttpListener::~CmdHttpListener() { - - void - CmdHttpListener::start() { -+ if (MultiThreadingMgr::instance().isTestMode()) { -+ return; -+ } - // We must be in multi-threading mode. - if (!MultiThreadingMgr::instance().getMode()) { - isc_throw(InvalidOperation, "CmdHttpListener cannot be started" -diff --git a/src/lib/tcp/mt_tcp_listener_mgr.cc b/src/lib/tcp/mt_tcp_listener_mgr.cc -index e880284..4680717 100644 ---- a/src/lib/tcp/mt_tcp_listener_mgr.cc -+++ b/src/lib/tcp/mt_tcp_listener_mgr.cc -@@ -40,6 +40,9 @@ MtTcpListenerMgr::~MtTcpListenerMgr() { - - void - MtTcpListenerMgr::start() { -+ if (MultiThreadingMgr::instance().isTestMode()) { -+ return; -+ } - // We must be in multi-threading mode. - if (!MultiThreadingMgr::instance().getMode()) { - isc_throw(InvalidOperation, "MtTcpListenerMgr cannot be started" -diff --git a/src/lib/util/multi_threading_mgr.cc b/src/lib/util/multi_threading_mgr.cc -index d1526b9..cab284d 100644 ---- a/src/lib/util/multi_threading_mgr.cc -+++ b/src/lib/util/multi_threading_mgr.cc -@@ -14,7 +14,8 @@ namespace isc { - namespace util { - - MultiThreadingMgr::MultiThreadingMgr() -- : enabled_(false), critical_section_count_(0), thread_pool_size_(0) { -+ : enabled_(false), test_mode_(false), critical_section_count_(0), -+ thread_pool_size_(0) { - } - - MultiThreadingMgr::~MultiThreadingMgr() { -diff --git a/src/lib/util/multi_threading_mgr.h b/src/lib/util/multi_threading_mgr.h -index e86c488..f3da67b 100644 ---- a/src/lib/util/multi_threading_mgr.h -+++ b/src/lib/util/multi_threading_mgr.h -@@ -154,6 +154,22 @@ public: - /// @param enabled The new mode. - void setMode(bool enabled); - -+ /// @brief Sets or clears the test mode for @c MultiThreadingMgr. -+ /// -+ /// @param test_mode A flag which indicates that the @c MultiThreadingMgr is -+ /// in the test mode (if true), or not (if false). -+ void setTestMode(const bool test_mode) { -+ test_mode_ = test_mode; -+ } -+ -+ /// @brief Checks if the @c MultiThreadingMgr is in the test mode. -+ /// -+ /// @return true if the @c MultiThreadingMgr is in the test mode, false -+ /// otherwise. -+ bool isTestMode() const { -+ return (test_mode_); -+ } -+ - /// @brief Enter critical section. - /// - /// When entering @ref MultiThreadingCriticalSection, increment internal -@@ -308,6 +324,9 @@ private: - /// otherwise. - bool enabled_; - -+ /// @brief Indicates if the @c MultiThreadingMgr is in the test mode. -+ bool test_mode_; -+ - /// @brief The critical section count. - /// - /// In case the configuration is applied within a --- -2.39.5 - diff --git a/scripts/package-build/kea/patches/isc-kea/0002-Add-ping_check-hook-library.patch b/scripts/package-build/kea/patches/isc-kea/0002-Add-ping_check-hook-library.patch deleted file mode 100644 index c2f172ca..00000000 --- a/scripts/package-build/kea/patches/isc-kea/0002-Add-ping_check-hook-library.patch +++ /dev/null @@ -1,13277 +0,0 @@ -From 6f198a187195a7fa4ad2cf9d147532bd64724f65 Mon Sep 17 00:00:00 2001 -From: sarthurdev <965089+sarthurdev@users.noreply.github.com> -Date: Mon, 24 Mar 2025 19:38:34 +0100 -Subject: [PATCH] Add ping_check hook library - ---- - configure.ac | 3 + - src/hooks/dhcp/Makefile.am | 2 +- - src/hooks/dhcp/ping_check/Doxyfile | 2568 +++++++++++++++++ - src/hooks/dhcp/ping_check/Makefile.am | 104 + - src/hooks/dhcp/ping_check/config_cache.cc | 107 + - src/hooks/dhcp/ping_check/config_cache.h | 146 + - src/hooks/dhcp/ping_check/icmp_endpoint.h | 134 + - src/hooks/dhcp/ping_check/icmp_msg.cc | 112 + - src/hooks/dhcp/ping_check/icmp_msg.h | 223 ++ - src/hooks/dhcp/ping_check/icmp_socket.h | 359 +++ - .../dhcp/ping_check/libloadtests/.gitignore | 1 + - .../dhcp/ping_check/libloadtests/Makefile.am | 60 + - .../libloadtests/load_unload_unittests.cc | 107 + - .../dhcp/ping_check/libloadtests/meson.build | 21 + - .../ping_check/libloadtests/run_unittests.cc | 19 + - src/hooks/dhcp/ping_check/meson.build | 41 + - src/hooks/dhcp/ping_check/ping_channel.cc | 466 +++ - src/hooks/dhcp/ping_check/ping_channel.h | 371 +++ - src/hooks/dhcp/ping_check/ping_check.dox | 44 + - .../dhcp/ping_check/ping_check_callouts.cc | 240 ++ - .../dhcp/ping_check/ping_check_config.cc | 98 + - src/hooks/dhcp/ping_check/ping_check_config.h | 134 + - src/hooks/dhcp/ping_check/ping_check_log.cc | 17 + - src/hooks/dhcp/ping_check/ping_check_log.h | 23 + - .../dhcp/ping_check/ping_check_messages.cc | 99 + - .../dhcp/ping_check/ping_check_messages.h | 50 + - .../dhcp/ping_check/ping_check_messages.mes | 229 ++ - src/hooks/dhcp/ping_check/ping_check_mgr.cc | 798 +++++ - src/hooks/dhcp/ping_check/ping_check_mgr.h | 436 +++ - src/hooks/dhcp/ping_check/ping_context.cc | 237 ++ - src/hooks/dhcp/ping_check/ping_context.h | 280 ++ - .../dhcp/ping_check/ping_context_store.cc | 144 + - .../dhcp/ping_check/ping_context_store.h | 240 ++ - src/hooks/dhcp/ping_check/tests/.gitignore | 1 + - src/hooks/dhcp/ping_check/tests/Makefile.am | 70 + - .../tests/config_cache_unittests.cc | 245 ++ - .../tests/icmp_endpoint_unittests.cc | 44 + - .../ping_check/tests/icmp_msg_unittests.cc | 172 ++ - .../ping_check/tests/icmp_socket_unittests.cc | 380 +++ - src/hooks/dhcp/ping_check/tests/meson.build | 21 + - .../tests/ping_channel_unittests.cc | 821 ++++++ - .../tests/ping_check_config_unittests.cc | 287 ++ - .../tests/ping_check_mgr_unittests.cc | 1878 ++++++++++++ - .../tests/ping_context_store_unittests.cc | 467 +++ - .../tests/ping_context_unittests.cc | 146 + - .../dhcp/ping_check/tests/ping_test_utils.h | 396 +++ - .../dhcp/ping_check/tests/run_unittests.cc | 19 + - src/hooks/dhcp/ping_check/version.cc | 17 + - 48 files changed, 12876 insertions(+), 1 deletion(-) - create mode 100644 src/hooks/dhcp/ping_check/Doxyfile - create mode 100644 src/hooks/dhcp/ping_check/Makefile.am - create mode 100644 src/hooks/dhcp/ping_check/config_cache.cc - create mode 100644 src/hooks/dhcp/ping_check/config_cache.h - create mode 100644 src/hooks/dhcp/ping_check/icmp_endpoint.h - create mode 100644 src/hooks/dhcp/ping_check/icmp_msg.cc - create mode 100644 src/hooks/dhcp/ping_check/icmp_msg.h - create mode 100644 src/hooks/dhcp/ping_check/icmp_socket.h - create mode 100644 src/hooks/dhcp/ping_check/libloadtests/.gitignore - create mode 100644 src/hooks/dhcp/ping_check/libloadtests/Makefile.am - create mode 100644 src/hooks/dhcp/ping_check/libloadtests/load_unload_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/libloadtests/meson.build - create mode 100644 src/hooks/dhcp/ping_check/libloadtests/run_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/meson.build - create mode 100644 src/hooks/dhcp/ping_check/ping_channel.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_channel.h - create mode 100644 src/hooks/dhcp/ping_check/ping_check.dox - create mode 100644 src/hooks/dhcp/ping_check/ping_check_callouts.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_check_config.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_check_config.h - create mode 100644 src/hooks/dhcp/ping_check/ping_check_log.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_check_log.h - create mode 100644 src/hooks/dhcp/ping_check/ping_check_messages.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_check_messages.h - create mode 100644 src/hooks/dhcp/ping_check/ping_check_messages.mes - create mode 100644 src/hooks/dhcp/ping_check/ping_check_mgr.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_check_mgr.h - create mode 100644 src/hooks/dhcp/ping_check/ping_context.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_context.h - create mode 100644 src/hooks/dhcp/ping_check/ping_context_store.cc - create mode 100644 src/hooks/dhcp/ping_check/ping_context_store.h - create mode 100644 src/hooks/dhcp/ping_check/tests/.gitignore - create mode 100644 src/hooks/dhcp/ping_check/tests/Makefile.am - create mode 100644 src/hooks/dhcp/ping_check/tests/config_cache_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/icmp_endpoint_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/icmp_msg_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/icmp_socket_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/meson.build - create mode 100644 src/hooks/dhcp/ping_check/tests/ping_channel_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/ping_check_config_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/ping_check_mgr_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/ping_context_store_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/ping_context_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/tests/ping_test_utils.h - create mode 100644 src/hooks/dhcp/ping_check/tests/run_unittests.cc - create mode 100644 src/hooks/dhcp/ping_check/version.cc - -diff --git a/configure.ac b/configure.ac -index cc1b31af71..23c8eefb81 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1582,6 +1582,9 @@ AC_CONFIG_FILES([src/hooks/dhcp/lease_cmds/tests/Makefile]) - AC_CONFIG_FILES([src/hooks/dhcp/mysql_cb/Makefile]) - AC_CONFIG_FILES([src/hooks/dhcp/mysql_cb/libloadtests/Makefile]) - AC_CONFIG_FILES([src/hooks/dhcp/mysql_cb/tests/Makefile]) -+AC_CONFIG_FILES([src/hooks/dhcp/ping_check/Makefile]) -+AC_CONFIG_FILES([src/hooks/dhcp/ping_check/libloadtests/Makefile]) -+AC_CONFIG_FILES([src/hooks/dhcp/ping_check/tests/Makefile]) - AC_CONFIG_FILES([src/hooks/dhcp/pgsql_cb/Makefile]) - AC_CONFIG_FILES([src/hooks/dhcp/pgsql_cb/libloadtests/Makefile]) - AC_CONFIG_FILES([src/hooks/dhcp/pgsql_cb/tests/Makefile]) -diff --git a/src/hooks/dhcp/Makefile.am b/src/hooks/dhcp/Makefile.am -index 1b77976424..806e310a17 100644 ---- a/src/hooks/dhcp/Makefile.am -+++ b/src/hooks/dhcp/Makefile.am -@@ -8,4 +8,4 @@ if HAVE_PGSQL - SUBDIRS += pgsql_cb - endif - --SUBDIRS += run_script stat_cmds user_chk -+SUBDIRS += run_script stat_cmds user_chk ping_check -diff --git a/src/hooks/dhcp/ping_check/Doxyfile b/src/hooks/dhcp/ping_check/Doxyfile -new file mode 100644 -index 0000000000..7c8554b557 ---- /dev/null -+++ b/src/hooks/dhcp/ping_check/Doxyfile -@@ -0,0 +1,2568 @@ -+# Doxyfile 1.9.1 -+ -+# This file describes the settings to be used by the documentation system -+# doxygen (www.doxygen.org) for a project. -+# -+# All text after a double hash (##) is considered a comment and is placed in -+# front of the TAG it is preceding. -+# -+# All text after a single hash (#) is considered a comment and will be ignored. -+# The format is: -+# TAG = value [value, ...] -+# For lists, items can also be appended using: -+# TAG += value [value, ...] -+# Values that contain spaces should be placed between quotes (\" \"). -+ -+#--------------------------------------------------------------------------- -+# Project related configuration options -+#--------------------------------------------------------------------------- -+ -+# This tag specifies the encoding used for all characters in the configuration -+# file that follow. The default is UTF-8 which is also the encoding used for all -+# text before the first occurrence of this tag. Doxygen uses libiconv (or the -+# iconv built into libc) for the transcoding. See -+# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -+# The default value is: UTF-8. -+ -+DOXYFILE_ENCODING = UTF-8 -+ -+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -+# double-quotes, unless you are using Doxywizard) that should identify the -+# project for which the documentation is generated. This name is used in the -+# title of most generated pages and in a few other places. -+# The default value is: My Project. -+ -+PROJECT_NAME = "Kea Ping Check Hooks Library" -+ -+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -+# could be handy for archiving the generated documentation or if some version -+# control system is used. -+ -+PROJECT_NUMBER = -+ -+# Using the PROJECT_BRIEF tag one can provide an optional one line description -+# for a project that appears at the top of each page and should give viewer a -+# quick idea about the purpose of the project. Keep the description short. -+ -+PROJECT_BRIEF = -+ -+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -+# in the documentation. The maximum height of the logo should not exceed 55 -+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -+# the logo to the output directory. -+ -+PROJECT_LOGO = ../../../../../doc/images/kea-logo-100x70.png -+ -+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -+# into which the generated documentation will be written. If a relative path is -+# entered, it will be relative to the location where doxygen was started. If -+# left blank the current directory will be used. -+ -+OUTPUT_DIRECTORY = html -+ -+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -+# directories (in 2 levels) under the output directory of each output format and -+# will distribute the generated files over these directories. Enabling this -+# option can be useful when feeding doxygen a huge amount of source files, where -+# putting all generated files in the same directory would otherwise causes -+# performance problems for the file system. -+# The default value is: NO. -+ -+CREATE_SUBDIRS = YES -+ -+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -+# characters to appear in the names of generated files. If set to NO, non-ASCII -+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -+# U+3044. -+# The default value is: NO. -+ -+ALLOW_UNICODE_NAMES = NO -+ -+# The OUTPUT_LANGUAGE tag is used to specify the language in which all -+# documentation generated by doxygen is written. Doxygen will use this -+# information to generate all constant output in the proper language. -+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -+# Ukrainian and Vietnamese. -+# The default value is: English. -+ -+OUTPUT_LANGUAGE = English -+ -+# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all -+# documentation generated by doxygen is written. Doxygen will use this -+# information to generate all generated output in the proper direction. -+# Possible values are: None, LTR, RTL and Context. -+# The default value is: None. -+ -+OUTPUT_TEXT_DIRECTION = None -+ -+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -+# descriptions after the members that are listed in the file and class -+# documentation (similar to Javadoc). Set to NO to disable this. -+# The default value is: YES. -+ -+BRIEF_MEMBER_DESC = YES -+ -+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -+# description of a member or function before the detailed description -+# -+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -+# brief descriptions will be completely suppressed. -+# The default value is: YES. -+ -+REPEAT_BRIEF = YES -+ -+# This tag implements a quasi-intelligent brief description abbreviator that is -+# used to form the text in various listings. Each string in this list, if found -+# as the leading text of the brief description, will be stripped from the text -+# and the result, after processing the whole list, is used as the annotated -+# text. Otherwise, the brief description is used as-is. If left blank, the -+# following values are used ($name is automatically replaced with the name of -+# the entity):The $name class, The $name widget, The $name file, is, provides, -+# specifies, contains, represents, a, an and the. -+ -+ABBREVIATE_BRIEF = -+ -+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -+# doxygen will generate a detailed section even if there is only a brief -+# description. -+# The default value is: NO. -+ -+ALWAYS_DETAILED_SEC = NO -+ -+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -+# inherited members of a class in the documentation of that class as if those -+# members were ordinary class members. Constructors, destructors and assignment -+# operators of the base classes will not be shown. -+# The default value is: NO. -+ -+INLINE_INHERITED_MEMB = NO -+ -+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -+# before files name in the file list and in the header files. If set to NO the -+# shortest path that makes the file name unique will be used -+# The default value is: YES. -+ -+FULL_PATH_NAMES = NO -+ -+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -+# Stripping is only done if one of the specified strings matches the left-hand -+# part of the path. The tag can be used to show relative paths in the file list. -+# If left blank the directory from which doxygen is run is used as the path to -+# strip. -+# -+# Note that you can specify absolute paths here, but also relative paths, which -+# will be relative from the directory where doxygen is started. -+# This tag requires that the tag FULL_PATH_NAMES is set to YES. -+ -+STRIP_FROM_PATH = -+ -+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -+# path mentioned in the documentation of a class, which tells the reader which -+# header file to include in order to use a class. If left blank only the name of -+# the header file containing the class definition is used. Otherwise one should -+# specify the list of include paths that are normally passed to the compiler -+# using the -I flag. -+ -+STRIP_FROM_INC_PATH = -+ -+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -+# less readable) file names. This can be useful is your file systems doesn't -+# support long names like on DOS, Mac, or CD-ROM. -+# The default value is: NO. -+ -+SHORT_NAMES = NO -+ -+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -+# first line (until the first dot) of a Javadoc-style comment as the brief -+# description. If set to NO, the Javadoc-style will behave just like regular Qt- -+# style comments (thus requiring an explicit @brief command for a brief -+# description.) -+# The default value is: NO. -+ -+JAVADOC_AUTOBRIEF = YES -+ -+# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -+# such as -+# /*************** -+# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -+# Javadoc-style will behave just like regular comments and it will not be -+# interpreted by doxygen. -+# The default value is: NO. -+ -+JAVADOC_BANNER = NO -+ -+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -+# line (until the first dot) of a Qt-style comment as the brief description. If -+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -+# requiring an explicit \brief command for a brief description.) -+# The default value is: NO. -+ -+QT_AUTOBRIEF = NO -+ -+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -+# a brief description. This used to be the default behavior. The new default is -+# to treat a multi-line C++ comment block as a detailed description. Set this -+# tag to YES if you prefer the old behavior instead. -+# -+# Note that setting this tag to YES also means that rational rose comments are -+# not recognized any more. -+# The default value is: NO. -+ -+MULTILINE_CPP_IS_BRIEF = NO -+ -+# By default Python docstrings are displayed as preformatted text and doxygen's -+# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -+# doxygen's special commands can be used and the contents of the docstring -+# documentation blocks is shown as doxygen documentation. -+# The default value is: YES. -+ -+PYTHON_DOCSTRING = YES -+ -+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -+# documentation from any documented member that it re-implements. -+# The default value is: YES. -+ -+INHERIT_DOCS = YES -+ -+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -+# page for each member. If set to NO, the documentation of a member will be part -+# of the file/class/namespace that contains it. -+# The default value is: NO. -+ -+SEPARATE_MEMBER_PAGES = NO -+ -+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -+# uses this value to replace tabs by spaces in code fragments. -+# Minimum value: 1, maximum value: 16, default value: 4. -+ -+TAB_SIZE = 4 -+ -+# This tag can be used to specify a number of aliases that act as commands in -+# the documentation. An alias has the form: -+# name=value -+# For example adding -+# "sideeffect=@par Side Effects:\n" -+# will allow you to put the command \sideeffect (or @sideeffect) in the -+# documentation, which will result in a user-defined paragraph with heading -+# "Side Effects:". You can put \n's in the value part of an alias to insert -+# newlines (in the resulting output). You can put ^^ in the value part of an -+# alias to insert a newline as if a physical newline was in the original file. -+# When you need a literal { or } or , in the value part of an alias you have to -+# escape them by means of a backslash (\), this can lead to conflicts with the -+# commands \{ and \} for these it is advised to use the version @{ and @} or use -+# a double escape (\\{ and \\}) -+ -+ALIASES = -+ -+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -+# only. Doxygen will then generate output that is more tailored for C. For -+# instance, some of the names that are used will be different. The list of all -+# members will be omitted, etc. -+# The default value is: NO. -+ -+OPTIMIZE_OUTPUT_FOR_C = NO -+ -+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -+# Python sources only. Doxygen will then generate output that is more tailored -+# for that language. For instance, namespaces will be presented as packages, -+# qualified scopes will look different, etc. -+# The default value is: NO. -+ -+OPTIMIZE_OUTPUT_JAVA = NO -+ -+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -+# sources. Doxygen will then generate output that is tailored for Fortran. -+# The default value is: NO. -+ -+OPTIMIZE_FOR_FORTRAN = NO -+ -+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -+# sources. Doxygen will then generate output that is tailored for VHDL. -+# The default value is: NO. -+ -+OPTIMIZE_OUTPUT_VHDL = NO -+ -+# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -+# sources only. Doxygen will then generate output that is more tailored for that -+# language. For instance, namespaces will be presented as modules, types will be -+# separated into more groups, etc. -+# The default value is: NO. -+ -+OPTIMIZE_OUTPUT_SLICE = NO -+ -+# Doxygen selects the parser to use depending on the extension of the files it -+# parses. With this tag you can assign which parser to use for a given -+# extension. Doxygen has a built-in mapping, but you can override or extend it -+# using this tag. The format is ext=language, where ext is a file extension, and -+# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -+# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, -+# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -+# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -+# tries to guess whether the code is fixed or free formatted code, this is the -+# default for Fortran type files). For instance to make doxygen treat .inc files -+# as Fortran files (default is PHP), and .f files as C (default is Fortran), -+# use: inc=Fortran f=C. -+# -+# Note: For files without extension you can use no_extension as a placeholder. -+# -+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -+# the files are not read by doxygen. When specifying no_extension you should add -+# * to the FILE_PATTERNS. -+# -+# Note see also the list of default file extension mappings. -+ -+EXTENSION_MAPPING = -+ -+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -+# according to the Markdown format, which allows for more readable -+# documentation. See https://daringfireball.net/projects/markdown/ for details. -+# The output of markdown processing is further processed by doxygen, so you can -+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -+# case of backward compatibilities issues. -+# The default value is: YES. -+ -+MARKDOWN_SUPPORT = YES -+ -+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -+# to that level are automatically included in the table of contents, even if -+# they do not have an id attribute. -+# Note: This feature currently applies only to Markdown headings. -+# Minimum value: 0, maximum value: 99, default value: 5. -+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. -+ -+TOC_INCLUDE_HEADINGS = 5 -+ -+# When enabled doxygen tries to link words that correspond to documented -+# classes, or namespaces to their corresponding documentation. Such a link can -+# be prevented in individual cases by putting a % sign in front of the word or -+# globally by setting AUTOLINK_SUPPORT to NO. -+# The default value is: YES. -+ -+AUTOLINK_SUPPORT = YES -+ -+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -+# to include (a tag file for) the STL sources as input, then you should set this -+# tag to YES in order to let doxygen match functions declarations and -+# definitions whose arguments contain STL classes (e.g. func(std::string); -+# versus func(std::string) {}). This also make the inheritance and collaboration -+# diagrams that involve STL classes more complete and accurate. -+# The default value is: NO. -+ -+BUILTIN_STL_SUPPORT = YES -+ -+# If you use Microsoft's C++/CLI language, you should set this option to YES to -+# enable parsing support. -+# The default value is: NO. -+ -+CPP_CLI_SUPPORT = NO -+ -+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -+# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -+# will parse them like normal C++ but will assume all classes use public instead -+# of private inheritance when no explicit protection keyword is present. -+# The default value is: NO. -+ -+SIP_SUPPORT = NO -+ -+# For Microsoft's IDL there are propget and propput attributes to indicate -+# getter and setter methods for a property. Setting this option to YES will make -+# doxygen to replace the get and set methods by a property in the documentation. -+# This will only work if the methods are indeed getting or setting a simple -+# type. If this is not the case, or you want to show the methods anyway, you -+# should set this option to NO. -+# The default value is: YES. -+ -+IDL_PROPERTY_SUPPORT = YES -+ -+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -+# tag is set to YES then doxygen will reuse the documentation of the first -+# member in the group (if any) for the other members of the group. By default -+# all members of a group must be documented explicitly. -+# The default value is: NO. -+ -+DISTRIBUTE_GROUP_DOC = NO -+ -+# If one adds a struct or class to a group and this option is enabled, then also -+# any nested class or struct is added to the same group. By default this option -+# is disabled and one has to add nested compounds explicitly via \ingroup. -+# The default value is: NO. -+ -+GROUP_NESTED_COMPOUNDS = NO -+ -+# Set the SUBGROUPING tag to YES to allow class member groups of the same type -+# (for instance a group of public functions) to be put as a subgroup of that -+# type (e.g. under the Public Functions section). Set it to NO to prevent -+# subgrouping. Alternatively, this can be done per class using the -+# \nosubgrouping command. -+# The default value is: YES. -+ -+SUBGROUPING = YES -+ -+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -+# are shown inside the group in which they are included (e.g. using \ingroup) -+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -+# and RTF). -+# -+# Note that this feature does not work in combination with -+# SEPARATE_MEMBER_PAGES. -+# The default value is: NO. -+ -+INLINE_GROUPED_CLASSES = NO -+ -+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -+# with only public data fields or simple typedef fields will be shown inline in -+# the documentation of the scope in which they are defined (i.e. file, -+# namespace, or group documentation), provided this scope is documented. If set -+# to NO, structs, classes, and unions are shown on a separate page (for HTML and -+# Man pages) or section (for LaTeX and RTF). -+# The default value is: NO. -+ -+INLINE_SIMPLE_STRUCTS = NO -+ -+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -+# enum is documented as struct, union, or enum with the name of the typedef. So -+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -+# with name TypeT. When disabled the typedef will appear as a member of a file, -+# namespace, or class. And the struct will be named TypeS. This can typically be -+# useful for C code in case the coding convention dictates that all compound -+# types are typedef'ed and only the typedef is referenced, never the tag name. -+# The default value is: NO. -+ -+TYPEDEF_HIDES_STRUCT = NO -+ -+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -+# cache is used to resolve symbols given their name and scope. Since this can be -+# an expensive process and often the same symbol appears multiple times in the -+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -+# doxygen will become slower. If the cache is too large, memory is wasted. The -+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -+# symbols. At the end of a run doxygen will report the cache usage and suggest -+# the optimal cache size from a speed point of view. -+# Minimum value: 0, maximum value: 9, default value: 0. -+ -+LOOKUP_CACHE_SIZE = 0 -+ -+# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use -+# during processing. When set to 0 doxygen will based this on the number of -+# cores available in the system. You can set it explicitly to a value larger -+# than 0 to get more control over the balance between CPU load and processing -+# speed. At this moment only the input processing can be done using multiple -+# threads. Since this is still an experimental feature the default is set to 1, -+# which effectively disables parallel processing. Please report any issues you -+# encounter. Generating dot graphs in parallel is controlled by the -+# DOT_NUM_THREADS setting. -+# Minimum value: 0, maximum value: 32, default value: 1. -+ -+NUM_PROC_THREADS = 1 -+ -+#--------------------------------------------------------------------------- -+# Build related configuration options -+#--------------------------------------------------------------------------- -+ -+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -+# documentation are documented, even if no documentation was available. Private -+# class members and static file members will be hidden unless the -+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -+# Note: This will also disable the warnings about undocumented members that are -+# normally produced when WARNINGS is set to YES. -+# The default value is: NO. -+ -+EXTRACT_ALL = YES -+ -+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -+# be included in the documentation. -+# The default value is: NO. -+ -+EXTRACT_PRIVATE = NO -+ -+# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -+# methods of a class will be included in the documentation. -+# The default value is: NO. -+ -+EXTRACT_PRIV_VIRTUAL = NO -+ -+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -+# scope will be included in the documentation. -+# The default value is: NO. -+ -+EXTRACT_PACKAGE = NO -+ -+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -+# included in the documentation. -+# The default value is: NO. -+ -+EXTRACT_STATIC = NO -+ -+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -+# locally in source files will be included in the documentation. If set to NO, -+# only classes defined in header files are included. Does not have any effect -+# for Java sources. -+# The default value is: YES. -+ -+EXTRACT_LOCAL_CLASSES = YES -+ -+# This flag is only useful for Objective-C code. If set to YES, local methods, -+# which are defined in the implementation section but not in the interface are -+# included in the documentation. If set to NO, only methods in the interface are -+# included. -+# The default value is: NO. -+ -+EXTRACT_LOCAL_METHODS = NO -+ -+# If this flag is set to YES, the members of anonymous namespaces will be -+# extracted and appear in the documentation as a namespace called -+# 'anonymous_namespace{file}', where file will be replaced with the base name of -+# the file that contains the anonymous namespace. By default anonymous namespace -+# are hidden. -+# The default value is: NO. -+ -+EXTRACT_ANON_NSPACES = NO -+ -+# If this flag is set to YES, the name of an unnamed parameter in a declaration -+# will be determined by the corresponding definition. By default unnamed -+# parameters remain unnamed in the output. -+# The default value is: YES. -+ -+RESOLVE_UNNAMED_PARAMS = YES -+ -+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -+# undocumented members inside documented classes or files. If set to NO these -+# members will be included in the various overviews, but no documentation -+# section is generated. This option has no effect if EXTRACT_ALL is enabled. -+# The default value is: NO. -+ -+HIDE_UNDOC_MEMBERS = NO -+ -+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -+# undocumented classes that are normally visible in the class hierarchy. If set -+# to NO, these classes will be included in the various overviews. This option -+# has no effect if EXTRACT_ALL is enabled. -+# The default value is: NO. -+ -+HIDE_UNDOC_CLASSES = NO -+ -+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -+# declarations. If set to NO, these declarations will be included in the -+# documentation. -+# The default value is: NO. -+ -+HIDE_FRIEND_COMPOUNDS = NO -+ -+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -+# documentation blocks found inside the body of a function. If set to NO, these -+# blocks will be appended to the function's detailed documentation block. -+# The default value is: NO. -+ -+HIDE_IN_BODY_DOCS = NO -+ -+# The INTERNAL_DOCS tag determines if documentation that is typed after a -+# \internal command is included. If the tag is set to NO then the documentation -+# will be excluded. Set it to YES to include the internal documentation. -+# The default value is: NO. -+ -+INTERNAL_DOCS = NO -+ -+# With the correct setting of option CASE_SENSE_NAMES doxygen will better be -+# able to match the capabilities of the underlying filesystem. In case the -+# filesystem is case sensitive (i.e. it supports files in the same directory -+# whose names only differ in casing), the option must be set to YES to properly -+# deal with such files in case they appear in the input. For filesystems that -+# are not case sensitive the option should be be set to NO to properly deal with -+# output files written for symbols that only differ in casing, such as for two -+# classes, one named CLASS and the other named Class, and to also support -+# references to files without having to specify the exact matching casing. On -+# Windows (including Cygwin) and MacOS, users should typically set this option -+# to NO, whereas on Linux or other Unix flavors it should typically be set to -+# YES. -+# The default value is: system dependent. -+ -+CASE_SENSE_NAMES = YES -+ -+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -+# their full class and namespace scopes in the documentation. If set to YES, the -+# scope will be hidden. -+# The default value is: NO. -+ -+HIDE_SCOPE_NAMES = NO -+ -+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -+# append additional text to a page's title, such as Class Reference. If set to -+# YES the compound reference will be hidden. -+# The default value is: NO. -+ -+HIDE_COMPOUND_REFERENCE= NO -+ -+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -+# the files that are included by a file in the documentation of that file. -+# The default value is: YES. -+ -+SHOW_INCLUDE_FILES = YES -+ -+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -+# grouped member an include statement to the documentation, telling the reader -+# which file to include in order to use the member. -+# The default value is: NO. -+ -+SHOW_GROUPED_MEMB_INC = NO -+ -+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -+# files with double quotes in the documentation rather than with sharp brackets. -+# The default value is: NO. -+ -+FORCE_LOCAL_INCLUDES = NO -+ -+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -+# documentation for inline members. -+# The default value is: YES. -+ -+INLINE_INFO = YES -+ -+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -+# (detailed) documentation of file and class members alphabetically by member -+# name. If set to NO, the members will appear in declaration order. -+# The default value is: YES. -+ -+SORT_MEMBER_DOCS = YES -+ -+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -+# descriptions of file, namespace and class members alphabetically by member -+# name. If set to NO, the members will appear in declaration order. Note that -+# this will also influence the order of the classes in the class list. -+# The default value is: NO. -+ -+SORT_BRIEF_DOCS = YES -+ -+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -+# (brief and detailed) documentation of class members so that constructors and -+# destructors are listed first. If set to NO the constructors will appear in the -+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -+# member documentation. -+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -+# detailed member documentation. -+# The default value is: NO. -+ -+SORT_MEMBERS_CTORS_1ST = YES -+ -+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -+# of group names into alphabetical order. If set to NO the group names will -+# appear in their defined order. -+# The default value is: NO. -+ -+SORT_GROUP_NAMES = YES -+ -+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -+# fully-qualified names, including namespaces. If set to NO, the class list will -+# be sorted only by class name, not including the namespace part. -+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -+# Note: This option applies only to the class list, not to the alphabetical -+# list. -+# The default value is: NO. -+ -+SORT_BY_SCOPE_NAME = NO -+ -+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -+# type resolution of all parameters of a function it will reject a match between -+# the prototype and the implementation of a member function even if there is -+# only one candidate or it is obvious which candidate to choose by doing a -+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -+# accept a match between prototype and implementation in such cases. -+# The default value is: NO. -+ -+STRICT_PROTO_MATCHING = NO -+ -+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -+# list. This list is created by putting \todo commands in the documentation. -+# The default value is: YES. -+ -+GENERATE_TODOLIST = YES -+ -+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -+# list. This list is created by putting \test commands in the documentation. -+# The default value is: YES. -+ -+GENERATE_TESTLIST = YES -+ -+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -+# list. This list is created by putting \bug commands in the documentation. -+# The default value is: YES. -+ -+GENERATE_BUGLIST = YES -+ -+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -+# the deprecated list. This list is created by putting \deprecated commands in -+# the documentation. -+# The default value is: YES. -+ -+GENERATE_DEPRECATEDLIST= YES -+ -+# The ENABLED_SECTIONS tag can be used to enable conditional documentation -+# sections, marked by \if ... \endif and \cond -+# ... \endcond blocks. -+ -+ENABLED_SECTIONS = -+ -+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -+# initial value of a variable or macro / define can have for it to appear in the -+# documentation. If the initializer consists of more lines than specified here -+# it will be hidden. Use a value of 0 to hide initializers completely. The -+# appearance of the value of individual variables and macros / defines can be -+# controlled using \showinitializer or \hideinitializer command in the -+# documentation regardless of this setting. -+# Minimum value: 0, maximum value: 10000, default value: 30. -+ -+MAX_INITIALIZER_LINES = 30 -+ -+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -+# the bottom of the documentation of classes and structs. If set to YES, the -+# list will mention the files that were used to generate the documentation. -+# The default value is: YES. -+ -+SHOW_USED_FILES = YES -+ -+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -+# will remove the Files entry from the Quick Index and from the Folder Tree View -+# (if specified). -+# The default value is: YES. -+ -+SHOW_FILES = YES -+ -+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -+# page. This will remove the Namespaces entry from the Quick Index and from the -+# Folder Tree View (if specified). -+# The default value is: YES. -+ -+SHOW_NAMESPACES = YES -+ -+# The FILE_VERSION_FILTER tag can be used to specify a program or script that -+# doxygen should invoke to get the current version for each file (typically from -+# the version control system). Doxygen will invoke the program by executing (via -+# popen()) the command command input-file, where command is the value of the -+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -+# by doxygen. Whatever the program writes to standard output is used as the file -+# version. For an example see the documentation. -+ -+FILE_VERSION_FILTER = -+ -+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -+# by doxygen. The layout file controls the global structure of the generated -+# output files in an output format independent way. To create the layout file -+# that represents doxygen's defaults, run doxygen with the -l option. You can -+# optionally specify a file name after the option, if omitted DoxygenLayout.xml -+# will be used as the name of the layout file. -+# -+# Note that if you run doxygen from a directory containing a file called -+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -+# tag is left empty. -+ -+LAYOUT_FILE = -+ -+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -+# the reference definitions. This must be a list of .bib files. The .bib -+# extension is automatically appended if omitted. This requires the bibtex tool -+# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -+# For LaTeX the style of the bibliography can be controlled using -+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -+# search path. See also \cite for info how to create references. -+ -+CITE_BIB_FILES = -+ -+#--------------------------------------------------------------------------- -+# Configuration options related to warning and progress messages -+#--------------------------------------------------------------------------- -+ -+# The QUIET tag can be used to turn on/off the messages that are generated to -+# standard output by doxygen. If QUIET is set to YES this implies that the -+# messages are off. -+# The default value is: NO. -+ -+QUIET = YES -+ -+# The WARNINGS tag can be used to turn on/off the warning messages that are -+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -+# this implies that the warnings are on. -+# -+# Tip: Turn warnings on while writing the documentation. -+# The default value is: YES. -+ -+WARNINGS = YES -+ -+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -+# will automatically be disabled. -+# The default value is: YES. -+ -+WARN_IF_UNDOCUMENTED = YES -+ -+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -+# potential errors in the documentation, such as not documenting some parameters -+# in a documented function, or documenting parameters that don't exist or using -+# markup commands wrongly. -+# The default value is: YES. -+ -+WARN_IF_DOC_ERROR = YES -+ -+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -+# are documented, but have no documentation for their parameters or return -+# value. If set to NO, doxygen will only warn about wrong or incomplete -+# parameter documentation, but not about the absence of documentation. If -+# EXTRACT_ALL is set to YES then this flag will automatically be disabled. -+# The default value is: NO. -+ -+WARN_NO_PARAMDOC = NO -+ -+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -+# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -+# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -+# at the end of the doxygen process doxygen will return with a non-zero status. -+# Possible values are: NO, YES and FAIL_ON_WARNINGS. -+# The default value is: NO. -+ -+WARN_AS_ERROR = NO -+ -+# The WARN_FORMAT tag determines the format of the warning messages that doxygen -+# can produce. The string should contain the $file, $line, and $text tags, which -+# will be replaced by the file and line number from which the warning originated -+# and the warning text. Optionally the format may contain $version, which will -+# be replaced by the version of the file (if it could be obtained via -+# FILE_VERSION_FILTER) -+# The default value is: $file:$line: $text. -+ -+WARN_FORMAT = "$file:$line: $text" -+ -+# The WARN_LOGFILE tag can be used to specify a file to which warning and error -+# messages should be written. If left blank the output is written to standard -+# error (stderr). -+ -+WARN_LOGFILE = -+ -+#--------------------------------------------------------------------------- -+# Configuration options related to the input files -+#--------------------------------------------------------------------------- -+ -+# The INPUT tag is used to specify the files and/or directories that contain -+# documented source files. You may enter file names like myfile.cpp or -+# directories like /usr/src/myproject. Separate the files or directories with -+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -+# Note: If this tag is empty the current directory is searched. -+ -+INPUT = -+ -+# This tag can be used to specify the character encoding of the source files -+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -+# documentation (see: -+# https://www.gnu.org/software/libiconv/) for the list of possible encodings. -+# The default value is: UTF-8. -+ -+INPUT_ENCODING = UTF-8 -+ -+# If the value of the INPUT tag contains directories, you can use the -+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -+# *.h) to filter out the source-files in the directories. -+# -+# Note that for custom extensions or not directly supported extensions you also -+# need to set EXTENSION_MAPPING for the extension otherwise the files are not -+# read by doxygen. -+# -+# Note the list of default checked file patterns might differ from the list of -+# default file extension mappings. -+# -+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -+# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), -+# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, -+# *.ucf, *.qsf and *.ice. -+ -+FILE_PATTERNS = *.c \ -+ *.cc \ -+ *.h \ -+ *.hpp \ -+ *.dox -+ -+# The RECURSIVE tag can be used to specify whether or not subdirectories should -+# be searched for input files as well. -+# The default value is: NO. -+ -+RECURSIVE = NO -+ -+# The EXCLUDE tag can be used to specify files and/or directories that should be -+# excluded from the INPUT source files. This way you can easily exclude a -+# subdirectory from a directory tree whose root is specified with the INPUT tag. -+# -+# Note that relative paths are relative to the directory from which doxygen is -+# run. -+ -+EXCLUDE = -+ -+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -+# directories that are symbolic links (a Unix file system feature) are excluded -+# from the input. -+# The default value is: NO. -+ -+EXCLUDE_SYMLINKS = NO -+ -+# If the value of the INPUT tag contains directories, you can use the -+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -+# certain files from those directories. -+# -+# Note that the wildcards are matched against the file with absolute path, so to -+# exclude all test directories for example use the pattern */test/* -+ -+EXCLUDE_PATTERNS = -+ -+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -+# (namespaces, classes, functions, etc.) that should be excluded from the -+# output. The symbol name can be a fully qualified name, a word, or if the -+# wildcard * is used, a substring. Examples: ANamespace, AClass, -+# AClass::ANamespace, ANamespace::*Test -+# -+# Note that the wildcards are matched against the file with absolute path, so to -+# exclude all test directories use the pattern */test/* -+ -+EXCLUDE_SYMBOLS = -+ -+# The EXAMPLE_PATH tag can be used to specify one or more files or directories -+# that contain example code fragments that are included (see the \include -+# command). -+ -+EXAMPLE_PATH = -+ -+# If the value of the EXAMPLE_PATH tag contains directories, you can use the -+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -+# *.h) to filter out the source-files in the directories. If left blank all -+# files are included. -+ -+EXAMPLE_PATTERNS = -+ -+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -+# searched for input files to be used with the \include or \dontinclude commands -+# irrespective of the value of the RECURSIVE tag. -+# The default value is: NO. -+ -+EXAMPLE_RECURSIVE = NO -+ -+# The IMAGE_PATH tag can be used to specify one or more files or directories -+# that contain images that are to be included in the documentation (see the -+# \image command). -+ -+IMAGE_PATH = ../../../../../doc/images -+ -+# The INPUT_FILTER tag can be used to specify a program that doxygen should -+# invoke to filter for each input file. Doxygen will invoke the filter program -+# by executing (via popen()) the command: -+# -+# -+# -+# where is the value of the INPUT_FILTER tag, and is the -+# name of an input file. Doxygen will then use the output that the filter -+# program writes to standard output. If FILTER_PATTERNS is specified, this tag -+# will be ignored. -+# -+# Note that the filter must not add or remove lines; it is applied before the -+# code is scanned, but not when the output code is generated. If lines are added -+# or removed, the anchors will not be placed correctly. -+# -+# Note that for custom extensions or not directly supported extensions you also -+# need to set EXTENSION_MAPPING for the extension otherwise the files are not -+# properly processed by doxygen. -+ -+INPUT_FILTER = -+ -+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -+# basis. Doxygen will compare the file name with each pattern and apply the -+# filter if there is a match. The filters are a list of the form: pattern=filter -+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -+# patterns match the file name, INPUT_FILTER is applied. -+# -+# Note that for custom extensions or not directly supported extensions you also -+# need to set EXTENSION_MAPPING for the extension otherwise the files are not -+# properly processed by doxygen. -+ -+FILTER_PATTERNS = -+ -+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -+# INPUT_FILTER) will also be used to filter the input files that are used for -+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -+# The default value is: NO. -+ -+FILTER_SOURCE_FILES = NO -+ -+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -+# it is also possible to disable source filtering for a specific pattern using -+# *.ext= (so without naming a filter). -+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. -+ -+FILTER_SOURCE_PATTERNS = -+ -+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -+# is part of the input, its contents will be placed on the main page -+# (index.html). This can be useful if you have a project on for instance GitHub -+# and want to reuse the introduction page also for the doxygen output. -+ -+USE_MDFILE_AS_MAINPAGE = -+ -+#--------------------------------------------------------------------------- -+# Configuration options related to source browsing -+#--------------------------------------------------------------------------- -+ -+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -+# generated. Documented entities will be cross-referenced with these sources. -+# -+# Note: To get rid of all source code in the generated output, make sure that -+# also VERBATIM_HEADERS is set to NO. -+# The default value is: NO. -+ -+SOURCE_BROWSER = YES -+ -+# Setting the INLINE_SOURCES tag to YES will include the body of functions, -+# classes and enums directly into the documentation. -+# The default value is: NO. -+ -+INLINE_SOURCES = NO -+ -+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -+# special comment blocks from generated source code fragments. Normal C, C++ and -+# Fortran comments will always remain visible. -+# The default value is: YES. -+ -+STRIP_CODE_COMMENTS = YES -+ -+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -+# entity all documented functions referencing it will be listed. -+# The default value is: NO. -+ -+REFERENCED_BY_RELATION = YES -+ -+# If the REFERENCES_RELATION tag is set to YES then for each documented function -+# all documented entities called/used by that function will be listed. -+# The default value is: NO. -+ -+REFERENCES_RELATION = YES -+ -+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -+# to YES then the hyperlinks from functions in REFERENCES_RELATION and -+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -+# link to the documentation. -+# The default value is: YES. -+ -+REFERENCES_LINK_SOURCE = YES -+ -+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -+# source code will show a tooltip with additional information such as prototype, -+# brief description and links to the definition and documentation. Since this -+# will make the HTML file larger and loading of large files a bit slower, you -+# can opt to disable this feature. -+# The default value is: YES. -+# This tag requires that the tag SOURCE_BROWSER is set to YES. -+ -+SOURCE_TOOLTIPS = YES -+ -+# If the USE_HTAGS tag is set to YES then the references to source code will -+# point to the HTML generated by the htags(1) tool instead of doxygen built-in -+# source browser. The htags tool is part of GNU's global source tagging system -+# (see https://www.gnu.org/software/global/global.html). You will need version -+# 4.8.6 or higher. -+# -+# To use it do the following: -+# - Install the latest version of global -+# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -+# - Make sure the INPUT points to the root of the source tree -+# - Run doxygen as normal -+# -+# Doxygen will invoke htags (and that will in turn invoke gtags), so these -+# tools must be available from the command line (i.e. in the search path). -+# -+# The result: instead of the source browser generated by doxygen, the links to -+# source code will now point to the output of htags. -+# The default value is: NO. -+# This tag requires that the tag SOURCE_BROWSER is set to YES. -+ -+USE_HTAGS = NO -+ -+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -+# verbatim copy of the header file for each class for which an include is -+# specified. Set to NO to disable this. -+# See also: Section \class. -+# The default value is: YES. -+ -+VERBATIM_HEADERS = YES -+ -+#--------------------------------------------------------------------------- -+# Configuration options related to the alphabetical class index -+#--------------------------------------------------------------------------- -+ -+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -+# compounds will be generated. Enable this if the project contains a lot of -+# classes, structs, unions or interfaces. -+# The default value is: YES. -+ -+ALPHABETICAL_INDEX = YES -+ -+# In case all classes in a project start with a common prefix, all classes will -+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -+# can be used to specify a prefix (or a list of prefixes) that should be ignored -+# while generating the index headers. -+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. -+ -+IGNORE_PREFIX = -+ -+#--------------------------------------------------------------------------- -+# Configuration options related to the HTML output -+#--------------------------------------------------------------------------- -+ -+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -+# The default value is: YES. -+ -+GENERATE_HTML = YES -+ -+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -+# it. -+# The default directory is: html. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_OUTPUT = ../html -+ -+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -+# generated HTML page (for example: .htm, .php, .asp). -+# The default value is: .html. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_FILE_EXTENSION = .html -+ -+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -+# each generated HTML page. If the tag is left blank doxygen will generate a -+# standard header. -+# -+# To get valid HTML the header file that includes any scripts and style sheets -+# that doxygen needs, which is dependent on the configuration options used (e.g. -+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -+# default header using -+# doxygen -w html new_header.html new_footer.html new_stylesheet.css -+# YourConfigFile -+# and then modify the file new_header.html. See also section "Doxygen usage" -+# for information on how to generate the default header that doxygen normally -+# uses. -+# Note: The header is subject to change so you typically have to regenerate the -+# default header when upgrading to a newer version of doxygen. For a description -+# of the possible markers and block names see the documentation. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_HEADER = -+ -+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -+# generated HTML page. If the tag is left blank doxygen will generate a standard -+# footer. See HTML_HEADER for more information on how to generate a default -+# footer and what special commands can be used inside the footer. See also -+# section "Doxygen usage" for information on how to generate the default footer -+# that doxygen normally uses. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_FOOTER = -+ -+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -+# sheet that is used by each HTML page. It can be used to fine-tune the look of -+# the HTML output. If left blank doxygen will generate a default style sheet. -+# See also section "Doxygen usage" for information on how to generate the style -+# sheet that doxygen normally uses. -+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -+# it is more robust and this tag (HTML_STYLESHEET) will in the future become -+# obsolete. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_STYLESHEET = -+ -+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -+# cascading style sheets that are included after the standard style sheets -+# created by doxygen. Using this option one can overrule certain style aspects. -+# This is preferred over using HTML_STYLESHEET since it does not replace the -+# standard style sheet and is therefore more robust against future updates. -+# Doxygen will copy the style sheet files to the output directory. -+# Note: The order of the extra style sheet files is of importance (e.g. the last -+# style sheet in the list overrules the setting of the previous ones in the -+# list). For an example see the documentation. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_EXTRA_STYLESHEET = -+ -+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -+# other source files which should be copied to the HTML output directory. Note -+# that these files will be copied to the base HTML output directory. Use the -+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -+# files will be copied as-is; there are no commands or markers available. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_EXTRA_FILES = -+ -+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -+# will adjust the colors in the style sheet and background images according to -+# this color. Hue is specified as an angle on a colorwheel, see -+# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -+# purple, and 360 is red again. -+# Minimum value: 0, maximum value: 359, default value: 220. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_COLORSTYLE_HUE = 148 -+ -+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -+# in the HTML output. For a value of 0 the output will use grayscales only. A -+# value of 255 will produce the most vivid colors. -+# Minimum value: 0, maximum value: 255, default value: 100. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_COLORSTYLE_SAT = 93 -+ -+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -+# luminance component of the colors in the HTML output. Values below 100 -+# gradually make the output lighter, whereas values above 100 make the output -+# darker. The value divided by 100 is the actual gamma applied, so 80 represents -+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -+# change the gamma. -+# Minimum value: 40, maximum value: 240, default value: 80. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_COLORSTYLE_GAMMA = 80 -+ -+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -+# page will contain the date and time when the page was generated. Setting this -+# to YES can help to show when doxygen was last run and thus if the -+# documentation is up to date. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_TIMESTAMP = YES -+ -+# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -+# documentation will contain a main index with vertical navigation menus that -+# are dynamically created via JavaScript. If disabled, the navigation index will -+# consists of multiple levels of tabs that are statically embedded in every HTML -+# page. Disable this option to support browsers that do not have JavaScript, -+# like the Qt help browser. -+# The default value is: YES. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_DYNAMIC_MENUS = YES -+ -+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -+# documentation will contain sections that can be hidden and shown after the -+# page has loaded. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_DYNAMIC_SECTIONS = YES -+ -+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -+# shown in the various tree structured indices initially; the user can expand -+# and collapse entries dynamically later on. Doxygen will expand the tree to -+# such a level that at most the specified number of entries are visible (unless -+# a fully collapsed tree already exceeds this amount). So setting the number of -+# entries 1 will produce a full collapsed tree by default. 0 is a special value -+# representing an infinite number of entries and will result in a full expanded -+# tree by default. -+# Minimum value: 0, maximum value: 9999, default value: 100. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_INDEX_NUM_ENTRIES = 100 -+ -+# If the GENERATE_DOCSET tag is set to YES, additional index files will be -+# generated that can be used as input for Apple's Xcode 3 integrated development -+# environment (see: -+# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -+# create a documentation set, doxygen will generate a Makefile in the HTML -+# output directory. Running make will produce the docset in that directory and -+# running make install will install the docset in -+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -+# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -+# genXcode/_index.html for more information. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+GENERATE_DOCSET = NO -+ -+# This tag determines the name of the docset feed. A documentation feed provides -+# an umbrella under which multiple documentation sets from a single provider -+# (such as a company or product suite) can be grouped. -+# The default value is: Doxygen generated docs. -+# This tag requires that the tag GENERATE_DOCSET is set to YES. -+ -+DOCSET_FEEDNAME = "Doxygen generated docs" -+ -+# This tag specifies a string that should uniquely identify the documentation -+# set bundle. This should be a reverse domain-name style string, e.g. -+# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -+# The default value is: org.doxygen.Project. -+# This tag requires that the tag GENERATE_DOCSET is set to YES. -+ -+DOCSET_BUNDLE_ID = org.doxygen.Project -+ -+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -+# the documentation publisher. This should be a reverse domain-name style -+# string, e.g. com.mycompany.MyDocSet.documentation. -+# The default value is: org.doxygen.Publisher. -+# This tag requires that the tag GENERATE_DOCSET is set to YES. -+ -+DOCSET_PUBLISHER_ID = org.doxygen.Publisher -+ -+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -+# The default value is: Publisher. -+# This tag requires that the tag GENERATE_DOCSET is set to YES. -+ -+DOCSET_PUBLISHER_NAME = Publisher -+ -+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -+# (see: -+# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. -+# -+# The HTML Help Workshop contains a compiler that can convert all HTML output -+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -+# files are now used as the Windows 98 help format, and will replace the old -+# Windows help format (.hlp) on all Windows platforms in the future. Compressed -+# HTML files also contain an index, a table of contents, and you can search for -+# words in the documentation. The HTML workshop also contains a viewer for -+# compressed HTML files. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+GENERATE_HTMLHELP = NO -+ -+# The CHM_FILE tag can be used to specify the file name of the resulting .chm -+# file. You can add a path in front of the file if the result should not be -+# written to the html output directory. -+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. -+ -+CHM_FILE = -+ -+# The HHC_LOCATION tag can be used to specify the location (absolute path -+# including file name) of the HTML help compiler (hhc.exe). If non-empty, -+# doxygen will try to run the HTML help compiler on the generated index.hhp. -+# The file has to be specified with full path. -+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. -+ -+HHC_LOCATION = -+ -+# The GENERATE_CHI flag controls if a separate .chi index file is generated -+# (YES) or that it should be included in the main .chm file (NO). -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. -+ -+GENERATE_CHI = NO -+ -+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -+# and project file content. -+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. -+ -+CHM_INDEX_ENCODING = -+ -+# The BINARY_TOC flag controls whether a binary table of contents is generated -+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -+# enables the Previous and Next buttons. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. -+ -+BINARY_TOC = NO -+ -+# The TOC_EXPAND flag can be set to YES to add extra items for group members to -+# the table of contents of the HTML help documentation and to the tree view. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. -+ -+TOC_EXPAND = NO -+ -+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -+# (.qch) of the generated HTML documentation. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+GENERATE_QHP = NO -+ -+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -+# the file name of the resulting .qch file. The path specified is relative to -+# the HTML output folder. -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QCH_FILE = -+ -+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -+# Project output. For more information please see Qt Help Project / Namespace -+# (see: -+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -+# The default value is: org.doxygen.Project. -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QHP_NAMESPACE = -+ -+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -+# Help Project output. For more information please see Qt Help Project / Virtual -+# Folders (see: -+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). -+# The default value is: doc. -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QHP_VIRTUAL_FOLDER = doc -+ -+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -+# filter to add. For more information please see Qt Help Project / Custom -+# Filters (see: -+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QHP_CUST_FILTER_NAME = -+ -+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -+# custom filter to add. For more information please see Qt Help Project / Custom -+# Filters (see: -+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QHP_CUST_FILTER_ATTRS = -+ -+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -+# project's filter section matches. Qt Help Project / Filter Attributes (see: -+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QHP_SECT_FILTER_ATTRS = -+ -+# The QHG_LOCATION tag can be used to specify the location (absolute path -+# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to -+# run qhelpgenerator on the generated .qhp file. -+# This tag requires that the tag GENERATE_QHP is set to YES. -+ -+QHG_LOCATION = -+ -+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -+# generated, together with the HTML files, they form an Eclipse help plugin. To -+# install this plugin and make it available under the help contents menu in -+# Eclipse, the contents of the directory containing the HTML and XML files needs -+# to be copied into the plugins directory of eclipse. The name of the directory -+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -+# After copying Eclipse needs to be restarted before the help appears. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+GENERATE_ECLIPSEHELP = NO -+ -+# A unique identifier for the Eclipse help plugin. When installing the plugin -+# the directory name containing the HTML and XML files should also have this -+# name. Each documentation set should have its own identifier. -+# The default value is: org.doxygen.Project. -+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. -+ -+ECLIPSE_DOC_ID = org.doxygen.Project -+ -+# If you want full control over the layout of the generated HTML pages it might -+# be necessary to disable the index and replace it with your own. The -+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -+# of each HTML page. A value of NO enables the index and the value YES disables -+# it. Since the tabs in the index contain the same information as the navigation -+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+DISABLE_INDEX = NO -+ -+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -+# structure should be generated to display hierarchical information. If the tag -+# value is set to YES, a side panel will be generated containing a tree-like -+# index structure (just like the one that is generated for HTML Help). For this -+# to work a browser that supports JavaScript, DHTML, CSS and frames is required -+# (i.e. any modern browser). Windows users are probably better off using the -+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -+# further fine-tune the look of the index. As an example, the default style -+# sheet generated by doxygen has an example that shows how to put an image at -+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -+# the same information as the tab index, you could consider setting -+# DISABLE_INDEX to YES when enabling this option. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+GENERATE_TREEVIEW = YES -+ -+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -+# doxygen will group on one line in the generated HTML documentation. -+# -+# Note that a value of 0 will completely suppress the enum values from appearing -+# in the overview section. -+# Minimum value: 0, maximum value: 20, default value: 4. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+ENUM_VALUES_PER_LINE = 4 -+ -+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -+# to set the initial width (in pixels) of the frame in which the tree is shown. -+# Minimum value: 0, maximum value: 1500, default value: 250. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+TREEVIEW_WIDTH = 180 -+ -+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -+# external symbols imported via tag files in a separate window. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+EXT_LINKS_IN_WINDOW = NO -+ -+# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg -+# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -+# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -+# the HTML output. These images will generally look nicer at scaled resolutions. -+# Possible values are: png (the default) and svg (looks nicer but requires the -+# pdf2svg or inkscape tool). -+# The default value is: png. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+HTML_FORMULA_FORMAT = png -+ -+# Use this tag to change the font size of LaTeX formulas included as images in -+# the HTML documentation. When you change the font size after a successful -+# doxygen run you need to manually remove any form_*.png images from the HTML -+# output directory to force them to be regenerated. -+# Minimum value: 8, maximum value: 50, default value: 10. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+FORMULA_FONTSIZE = 10 -+ -+# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -+# generated for formulas are transparent PNGs. Transparent PNGs are not -+# supported properly for IE 6.0, but are supported on all modern browsers. -+# -+# Note that when changing this option you need to delete any form_*.png files in -+# the HTML output directory before the changes have effect. -+# The default value is: YES. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+FORMULA_TRANSPARENT = YES -+ -+# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -+# to create new LaTeX commands to be used in formulas as building blocks. See -+# the section "Including formulas" for details. -+ -+FORMULA_MACROFILE = -+ -+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -+# https://www.mathjax.org) which uses client side JavaScript for the rendering -+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -+# installed or if you want to formulas look prettier in the HTML output. When -+# enabled you may also need to install MathJax separately and configure the path -+# to it using the MATHJAX_RELPATH option. -+# The default value is: NO. -+# This tag requires that the tag GENERATE_HTML is set to YES. -+ -+USE_MATHJAX = NO -+ -+# When MathJax is enabled you can set the default output format to be used for -+# the MathJax output. See the MathJax site (see: -+# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. -+# Possible values are: HTML-CSS (which is slower, but has the best -+# compatibility), NativeMML (i.e. MathML) and SVG. -+# The default value is: HTML-CSS. -+# This tag requires that the tag USE_MATHJAX is set to YES. -+ -+MATHJAX_FORMAT = HTML-CSS -+ -+# When MathJax is enabled you need to specify the location relative to the HTML -+# output directory using the MATHJAX_RELPATH option. The destination directory -+# should contain the MathJax.js script. For instance, if the mathjax directory -+# is located at the same level as the HTML output directory, then -+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -+# Content Delivery Network so you can quickly see the result without installing -+# MathJax. However, it is strongly recommended to install a local copy of -+# MathJax from https://www.mathjax.org before deployment. -+# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. -+# This tag requires that the tag USE_MATHJAX is set to YES. -+ -+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest -+ -+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -+# extension names that should be enabled during MathJax rendering. For example -+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -+# This tag requires that the tag USE_MATHJAX is set to YES. -+ -+MATHJAX_EXTENSIONS = -+ -+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -+# of code that will be used on startup of the MathJax code. See the MathJax site -+# (see: -+# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -+# example see the documentation. -+# This tag requires that the tag USE_MATHJAX is set to YES. -+ -+MATHJAX_CODEFILE = -+ -+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -+# the HTML output. The underlying search engine uses javascript and DHTML and -+# should work on any modern browser. Note that when using HTML help -+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -+# there is already a search function so this one should typically be disabled. -+# For large projects the javascript based search engine can be slow, then -+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -+# search using the keyboard; to jump to the search box use + S -+# (what the is depends on the OS and browser, but it is typically -+# , /