diff --git a/doxygen-1.8.14-RHEL-81116.patch b/doxygen-1.8.14-RHEL-81116.patch
new file mode 100644
index 0000000..b07530d
--- /dev/null
+++ b/doxygen-1.8.14-RHEL-81116.patch
@@ -0,0 +1,1537 @@
+diff -Nur doxygen-1.8.14/templates/html.orig/doxygen.css doxygen-1.8.14/templates/html/doxygen.css
+--- doxygen-1.8.14/templates/html.orig/doxygen.css 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/doxygen.css 2025-03-04 13:22:48.992773395 +0100
+@@ -53,17 +53,24 @@
+ font-weight: bold;
+ }
+
+-div.multicol {
++ul.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
++ column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
++ column-count: 3;
+ }
+
+ p.startli, p.startdd {
+ margin-top: 2px;
+ }
+
++th p.starttd, th p.intertd, th p.endtd {
++ font-size: 100%;
++ font-weight: 700;
++}
++
+ p.starttd {
+ margin-top: 0px;
+ }
+@@ -80,6 +87,15 @@
+ margin-bottom: 2px;
+ }
+
++p.interli {
++}
++
++p.interdd {
++}
++
++p.intertd {
++}
++
+ /* @end */
+
+ caption {
+@@ -87,30 +103,96 @@
+ }
+
+ span.legend {
+- font-size: 70%;
+- text-align: center;
++ font-size: 70%;
++ text-align: center;
+ }
+
+ h3.version {
+- font-size: 90%;
+- text-align: center;
++ font-size: 90%;
++ text-align: center;
+ }
+
+-div.qindex, div.navtab{
+- background-color: ##ee;
+- border: 1px solid ##b0;
+- text-align: center;
++div.navtab {
++ border-right: 1px solid ##b0;
++ padding-right: 15px;
++ text-align: right;
++ line-height: 110%;
+ }
+
+-div.qindex, div.navpath {
++div.navtab table {
++ border-spacing: 0;
++}
++
++td.navtab {
++ padding-right: 6px;
++ padding-left: 6px;
++}
++td.navtabHL {
++ background-image: url('tab_a.png');
++ background-repeat:repeat-x;
++ padding-right: 6px;
++ padding-left: 6px;
++}
++
++td.navtabHL a, td.navtabHL a:visited {
++ color: #fff;
++ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
++}
++
++a.navtab {
++ font-weight: bold;
++}
++
++div.qindex{
++ text-align: center;
+ width: 100%;
+ line-height: 140%;
++ font-size: 130%;
++ color: #A0A0A0;
+ }
+
+-div.navtab {
+- margin-right: 15px;
++dt.alphachar{
++ font-size: 180%;
++ font-weight: bold;
+ }
+
++.alphachar a{
++ color: black;
++}
++
++.alphachar a:hover, .alphachar a:visited{
++ text-decoration: none;
++}
++
++.classindex dl {
++ padding: 25px;
++ column-count:1
++}
++
++.classindex dd {
++ display:inline-block;
++ margin-left: 50px;
++ width: 90%;
++ line-height: 1.15em;
++}
++
++.classindex dl.odd {
++ background-color: ##F9;
++}
++
++@media(min-width: 1120px) {
++ .classindex dl {
++ column-count:2
++ }
++}
++
++@media(min-width: 1320px) {
++ .classindex dl {
++ column-count:3
++ }
++}
++
++
+ /* @group Link Styling */
+
+ a {
+@@ -127,19 +209,8 @@
+ text-decoration: underline;
+ }
+
+-a.qindex {
+- font-weight: bold;
+-}
+-
+-a.qindexHL {
+- font-weight: bold;
+- background-color: ##AA;
+- color: #ffffff;
+- border: 1px double ##98;
+-}
+-
+ .contents a.qindexHL:visited {
+- color: #ffffff;
++ color: ##ff;
+ }
+
+ a.el {
+@@ -150,11 +221,11 @@
+ }
+
+ a.code, a.code:visited, a.line, a.line:visited {
+- color: #4665A2;
++ color: ##60;
+ }
+
+ a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+- color: #4665A2;
++ color: ##60;
+ }
+
+ /* @end */
+@@ -163,9 +234,28 @@
+ margin-left: -1cm;
+ }
+
++ul {
++ overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
++}
++
++#side-nav ul {
++ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
++}
++
++#main-nav ul {
++ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
++}
++
++.fragment {
++ text-align: left;
++ direction: ltr;
++ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
++ overflow-y: hidden;
++}
++
+ pre.fragment {
+- border: 1px solid #C4CFE5;
+- background-color: #FBFCFD;
++ border: 1px solid ##CC;
++ background-color: ##FC;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+@@ -177,8 +267,8 @@
+ }
+
+ div.fragment {
+- padding: 0px;
+- margin: 4px 8px 4px 2px;
++ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
++ margin: 4px 8px 4px 2px;
+ background-color: ##FC;
+ border: 1px solid ##CC;
+ }
+@@ -248,7 +338,7 @@
+ div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+- color: #ffffff;
++ color: ##ff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+@@ -324,7 +414,7 @@
+
+ }
+
+-img.formulaInl {
++img.formulaInl, img.inline {
+ vertical-align: middle;
+ }
+
+@@ -402,6 +492,13 @@
+ padding: 0 12px 0 16px;
+ }
+
++blockquote.DocNodeRTL {
++ border-left: 0;
++ border-right: 2px solid ##AA;
++ margin: 0 4px 0 24px;
++ padding: 0 16px 0 12px;
++}
++
+ /* @end */
+
+ /*
+@@ -488,7 +585,7 @@
+ }
+
+ .memSeparator {
+- border-bottom: 1px solid #DEE4F0;
++ border-bottom: 1px solid ##E2;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+@@ -498,7 +595,7 @@
+ white-space: nowrap;
+ }
+
+-.memItemRight {
++.memItemRight, .memTemplItemRight {
+ width: 100%;
+ }
+
+@@ -618,7 +715,7 @@
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+- background-color: #FFFFFF;
++ background-color: ##ff;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+@@ -666,17 +763,17 @@
+ padding-left: 0px;
+ }
+
+-.params .paramname, .retval .paramname {
++.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+ font-weight: bold;
+ vertical-align: top;
+ }
+
+-.params .paramtype {
++.params .paramtype, .tparams .paramtype {
+ font-style: italic;
+ vertical-align: top;
+ }
+
+-.params .paramdir {
++.params .paramdir, .tparams .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+ }
+@@ -890,7 +987,7 @@
+
+ table.doxtable th {
+ background-color: ##47;
+- color: #FFFFFF;
++ color: ##ff;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+@@ -1081,72 +1178,143 @@
+ padding: 5px 5px 5px 10px;
+ }
+
+-dl
+-{
+- padding: 0 0 0 10px;
+-}
+-
+-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+-dl.section
+-{
+- margin-left: 0px;
+- padding-left: 0px;
++.PageDocRTL-title div.headertitle {
++ text-align: right;
++ direction: rtl;
+ }
+
+-dl.note
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #D0C000;
+-}
+-
+-dl.warning, dl.attention
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #FF0000;
+-}
+-
+-dl.pre, dl.post, dl.invariant
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #00D000;
+-}
+-
+-dl.deprecated
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #505050;
+-}
+-
+-dl.todo
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #00C0E0;
++dl {
++ padding: 0 0 0 0;
+ }
+
+-dl.test
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #3030E0;
++/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
++dl.section {
++ margin-left: 0px;
++ padding-left: 0px;
+ }
+
+-dl.bug
+-{
+- margin-left:-7px;
+- padding-left: 3px;
+- border-left:4px solid;
+- border-color: #C08050;
++dl.section.DocNodeRTL {
++ margin-right: 0px;
++ padding-right: 0px;
++}
++
++dl.note {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #D0C000;
++}
++
++dl.note.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #D0C000;
++}
++
++dl.warning, dl.attention {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #FF0000;
++}
++
++dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #FF0000;
++}
++
++dl.pre, dl.post, dl.invariant {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #00D000;
++}
++
++dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #00D000;
++}
++
++dl.deprecated {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #505050;
++}
++
++dl.deprecated.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #505050;
++}
++
++dl.todo {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #00C0E0;
++}
++
++dl.todo.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #00C0E0;
++}
++
++dl.test {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #3030E0;
++}
++
++dl.test.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #3030E0;
++}
++
++dl.bug {
++ margin-left: -7px;
++ padding-left: 3px;
++ border-left: 4px solid;
++ border-color: #C08050;
++}
++
++dl.bug.DocNodeRTL {
++ margin-left: 0;
++ padding-left: 0;
++ border-left: 0;
++ margin-right: -7px;
++ padding-right: 3px;
++ border-right: 4px solid;
++ border-color: #C08050;
+ }
+
+ dl.section dd {
+@@ -1245,10 +1413,12 @@
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
++ text-align:right;
++ width:52px;
+ }
+
+ dl.citelist dd {
+- margin:2px 0;
++ margin:2px 0 2px 72px;
+ padding:5px 0;
+ }
+
+@@ -1263,6 +1433,11 @@
+ width: 200px;
+ }
+
++.PageDocRTL-title div.toc {
++ float: left !important;
++ text-align: right;
++}
++
+ div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+@@ -1271,6 +1446,12 @@
+ padding-top: 2px;
+ }
+
++.PageDocRTL-title div.toc li {
++ background-position-x: right !important;
++ padding-left: 0 !important;
++ padding-right: 10px;
++}
++
+ div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: ##60;
+@@ -1300,6 +1481,32 @@
+ margin-left: 45px;
+ }
+
++span.emoji {
++ /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
++ * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
++ */
++}
++
++.PageDocRTL-title div.toc li.level1 {
++ margin-left: 0 !important;
++ margin-right: 0;
++}
++
++.PageDocRTL-title div.toc li.level2 {
++ margin-left: 0 !important;
++ margin-right: 15px;
++}
++
++.PageDocRTL-title div.toc li.level3 {
++ margin-left: 0 !important;
++ margin-right: 30px;
++}
++
++.PageDocRTL-title div.toc li.level4 {
++ margin-left: 0 !important;
++ margin-right: 45px;
++}
++
+ .inherit_header {
+ font-weight: bold;
+ color: gray;
+@@ -1413,7 +1620,7 @@
+ }
+
+ #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+- border-top-color: #ffffff;
++ border-top-color: ##ff;
+ border-width: 10px;
+ margin: 0px -10px;
+ }
+@@ -1441,7 +1648,7 @@
+ }
+
+ #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+- border-bottom-color: #ffffff;
++ border-bottom-color: ##ff;
+ border-width: 10px;
+ margin: 0px -10px;
+ }
+@@ -1468,7 +1675,7 @@
+ left: 100%;
+ }
+ #powerTip.e:after {
+- border-left-color: #ffffff;
++ border-left-color: ##ff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+@@ -1484,7 +1691,7 @@
+ right: 100%;
+ }
+ #powerTip.w:after {
+- border-right-color: #ffffff;
++ border-right-color: ##ff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+@@ -1517,7 +1724,6 @@
+
+ /* @group Markdown */
+
+-/*
+ table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+@@ -1529,68 +1735,59 @@
+ padding: 3px 7px 2px;
+ }
+
+-table.markdownTableHead tr {
+-}
+-
+-table.markdownTableBodyLeft td, table.markdownTable th {
+- border: 1px solid ##37;
+- padding: 3px 7px 2px;
++table.markdownTable tr {
+ }
+
+-th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
++th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: ##47;
+- color: #FFFFFF;
++ color: ##ff;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ }
+
+-th.markdownTableHeadLeft {
++th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+ }
+
+-th.markdownTableHeadRight {
++th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+ }
+
+-th.markdownTableHeadCenter {
++th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+ }
+-*/
+
+-table.markdownTable {
+- border-collapse:collapse;
+- margin-top: 4px;
+- margin-bottom: 4px;
+-}
+-
+-table.markdownTable td, table.markdownTable th {
+- border: 1px solid ##37;
+- padding: 3px 7px 2px;
++.DocNodeRTL {
++ text-align: right;
++ direction: rtl;
+ }
+
+-table.markdownTable tr {
++.DocNodeLTR {
++ text-align: left;
++ direction: ltr;
+ }
+
+-th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+- background-color: #374F7F;
+- color: #FFFFFF;
+- font-size: 110%;
+- padding-bottom: 4px;
+- padding-top: 5px;
++table.DocNodeRTL {
++ width: auto;
++ margin-right: 0;
++ margin-left: auto;
+ }
+
+-th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+- text-align: left
++table.DocNodeLTR {
++ width: auto;
++ margin-right: auto;
++ margin-left: 0;
+ }
+
+-th.markdownTableHeadRight, td.markdownTableBodyRight {
+- text-align: right
++tt, code, kbd, samp
++{
++ display: inline-block;
++ direction:ltr;
+ }
++/* @end */
+
+-th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+- text-align: center
++u {
++ text-decoration: underline;
+ }
+
+-
+-/* @end */
+diff -Nur doxygen-1.8.14/templates/html.orig/dynsections.js doxygen-1.8.14/templates/html/dynsections.js
+--- doxygen-1.8.14/templates/html.orig/dynsections.js 2017-12-24 11:20:24.000000000 +0100
++++ doxygen-1.8.14/templates/html/dynsections.js 2025-03-04 13:22:55.618929360 +0100
+@@ -1,25 +1,26 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
++ The MIT License (MIT)
+
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
++ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
++ and associated documentation files (the "Software"), to deal in the Software without restriction,
++ including without limitation the rights to use, copy, modify, merge, publish, distribute,
++ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice shall be included in all copies or
++ substantial portions of the Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+ function toggleVisibility(linkObj)
+ {
+@@ -60,7 +61,7 @@
+ $(this).show();
+ } else if (l==level+1) {
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+- a.html('▶');
++ a.html('►');
+ $(this).show();
+ } else {
+ $(this).hide();
+@@ -87,7 +88,7 @@
+ // replace down arrow by right arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+- currentRowSpans.filter(".arrow").html('▶');
++ currentRowSpans.filter(".arrow").html('►');
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+ } else { // we are SHOWING
+ // replace right arrow by down arrow for current row
+@@ -97,7 +98,7 @@
+ // replace down arrows by right arrows for child rows
+ var childRowsSpans = childRows.find("span");
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+- childRowsSpans.filter(".arrow").html('▶');
++ childRowsSpans.filter(".arrow").html('►');
+ childRows.show(); //show all children
+ }
+ updateStripes();
+diff -Nur doxygen-1.8.14/templates/html.orig/extsearch.js doxygen-1.8.14/templates/html/extsearch.js
+--- doxygen-1.8.14/templates/html.orig/extsearch.js 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/extsearch.js 2025-03-04 13:22:55.618929360 +0100
+@@ -1,25 +1,26 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
++ The MIT License (MIT)
+
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
++ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
++ and associated documentation files (the "Software"), to deal in the Software without restriction,
++ including without limitation the rights to use, copy, modify, merge, publish, distribute,
++ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice shall be included in all copies or
++ substantial portions of the Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+ function SearchBox(name, resultsPath, inFrame, label)
+ {
+diff -Nur doxygen-1.8.14/templates/html.orig/menu.js doxygen-1.8.14/templates/html/menu.js
+--- doxygen-1.8.14/templates/html.orig/menu.js 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/menu.js 2025-03-04 13:22:55.619929384 +0100
+@@ -1,25 +1,26 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
++ The MIT License (MIT)
+
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
++ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
++ and associated documentation files (the "Software"), to deal in the Software without restriction,
++ including without limitation the rights to use, copy, modify, merge, publish, distribute,
++ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice shall be included in all copies or
++ substantial portions of the Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
+ function makeTree(data,relPath) {
+@@ -40,9 +41,9 @@
+ $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+ if (searchEnabled) {
+ if (serverSide) {
+- $('#main-menu').append('
');
++ $('#main-menu').append('');
+ } else {
+- $('#main-menu').append('');
++ $('#main-menu').append('');
+ }
+ }
+ $('#main-menu').smartmenus();
+diff -Nur doxygen-1.8.14/templates/html.orig/navtree.css doxygen-1.8.14/templates/html/navtree.css
+--- doxygen-1.8.14/templates/html.orig/navtree.css 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/navtree.css 2025-03-04 13:22:48.992773395 +0100
+@@ -96,7 +96,7 @@
+ .ui-resizable-e {
+ background-image:url("splitbar.png");
+ background-size:100%;
+- background-repeat:no-repeat;
++ background-repeat:repeat-y;
+ background-attachment: scroll;
+ cursor:ew-resize;
+ height:100%;
+diff -Nur doxygen-1.8.14/templates/html.orig/navtree.js doxygen-1.8.14/templates/html/navtree.js
+--- doxygen-1.8.14/templates/html.orig/navtree.js 2017-12-24 11:20:24.000000000 +0100
++++ doxygen-1.8.14/templates/html/navtree.js 2025-03-04 13:22:55.620929408 +0100
+@@ -1,29 +1,30 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
++ The MIT License (MIT)
+
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
++ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
++ and associated documentation files (the "Software"), to deal in the Software without restriction,
++ including without limitation the rights to use, copy, modify, merge, publish, distribute,
++ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice shall be included in all copies or
++ substantial portions of the Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+ var navTreeSubIndices = new Array();
+ var arrowDown = '▼';
+-var arrowRight = '▶';
++var arrowRight = '►';
+
+ function getData(varName)
+ {
+@@ -70,7 +71,6 @@
+ }
+ }
+
+-
+ function storeLink(link)
+ {
+ if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) {
+@@ -102,14 +102,6 @@
+ script.type = 'text/javascript';
+ script.onload = func;
+ script.src = scriptName+'.js';
+- if ($.browser.msie && $.browser.version<=8) {
+- // script.onload does not work with older versions of IE
+- script.onreadystatechange = function() {
+- if (script.readyState=='complete' || script.readyState=='loaded') {
+- func(); if (show) showRoot();
+- }
+- }
+- }
+ head.appendChild(script);
+ }
+
+@@ -153,6 +145,7 @@
+ var pos, docContent = $('#doc-content');
+ var ancParent = $(anchor.parent());
+ if (ancParent.hasClass('memItemLeft') ||
++ ancParent.hasClass('memtitle') ||
+ ancParent.hasClass('fieldname') ||
+ ancParent.hasClass('fieldtype') ||
+ ancParent.is(':header'))
+@@ -265,7 +258,7 @@
+ (function (){ // retry until we can scroll to the selected item
+ try {
+ var navtree=$('#nav-tree');
+- navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
++ navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
+ } catch (err) {
+ setTimeout(arguments.callee, 0);
+ }
+@@ -284,12 +277,8 @@
+ } else {
+ if (!node.childrenVisited) {
+ getNode(o, node);
+- } if (imm || ($.browser.msie && $.browser.version>8)) {
+- // somehow slideDown jumps to the start of tree for IE9 :-(
+- $(node.getChildrenUL()).show();
+- } else {
+- $(node.getChildrenUL()).slideDown("fast");
+ }
++ $(node.getChildrenUL()).slideDown("fast");
+ node.plus_img.innerHTML = arrowDown;
+ node.expanded = true;
+ }
+@@ -319,7 +308,6 @@
+ } else {
+ glowEffect(anchor.next(),1000); // normal member
+ }
+- gotoAnchor(anchor,aname,false);
+ }
+
+ function selectAndHighlight(hash,n)
+@@ -481,6 +469,18 @@
+ }
+ }
+
++var loadTriggered = false;
++var readyTriggered = false;
++var loadObject,loadToRoot,loadUrl,loadRelPath;
++
++$(window).on('load',function(){
++ if (readyTriggered) { // ready first
++ navTo(loadObject,loadToRoot,loadUrl,loadRelPath);
++ showRoot();
++ }
++ loadTriggered=true;
++});
++
+ function initNavTree(toroot,relpath)
+ {
+ var o = new Object();
+@@ -511,10 +511,16 @@
+ navSync.click(function(){ toggleSyncButton(relpath); });
+ }
+
+- $(window).load(function(){
++ if (loadTriggered) { // load before ready
+ navTo(o,toroot,hashUrl(),relpath);
+ showRoot();
+- });
++ } else { // ready before load
++ loadObject = o;
++ loadToRoot = toroot;
++ loadUrl = hashUrl();
++ loadRelPath = relpath;
++ readyTriggered=true;
++ }
+
+ $(window).bind('hashchange', function(){
+ if (window.location.hash && window.location.hash.length>1){
+diff -Nur doxygen-1.8.14/templates/html.orig/resize.js doxygen-1.8.14/templates/html/resize.js
+--- doxygen-1.8.14/templates/html.orig/resize.js 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/resize.js 2025-03-04 13:22:55.620929408 +0100
+@@ -1,25 +1,26 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
++ The MIT License (MIT)
+
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
++ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
++ and associated documentation files (the "Software"), to deal in the Software without restriction,
++ including without limitation the rights to use, copy, modify, merge, publish, distribute,
++ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice shall be included in all copies or
++ substantial portions of the Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+ function initResizable()
+ {
+@@ -91,6 +92,9 @@
+ }
+ collapsedWidth=width;
+ }
++ if (location.hash.slice(1)) {
++ (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
++ }
+ }
+
+ function collapseExpand()
+@@ -131,6 +135,6 @@
+ var _preventDefault = function(evt) { evt.preventDefault(); };
+ $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
+ $(".ui-resizable-handle").dblclick(collapseExpand);
+- $(window).load(resizeHeight);
++ $(window).on('load',resizeHeight);
+ }
+ /* @license-end */
+diff -Nur doxygen-1.8.14/templates/html.orig/search.css doxygen-1.8.14/templates/html/search.css
+--- doxygen-1.8.14/templates/html.orig/search.css 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/search.css 2025-03-04 13:22:48.993773419 +0100
+@@ -1,98 +1,82 @@
+ /*---------------- Search Box */
+
+-#FSearchBox {
+- float: left;
+-}
+-
+ #MSearchBox {
+ white-space : nowrap;
+- float: none;
+- margin-top: 8px;
+- right: 0px;
+- width: 170px;
+- height: 24px;
++ background: white;
++ border-radius: 0.65em;
++ box-shadow: inset 0.5px 0.5px 3px 0px #555;
+ z-index: 102;
+ }
+
+-#MSearchBox .left
+-{
+- display:block;
+- position:absolute;
+- left:10px;
+- width:20px;
+- height:19px;
+- background:url('search_l.png') no-repeat;
+- background-position:right;
++#MSearchBox .left {
++ display: inline-block;
++ vertical-align: middle;
++ height: 1.4em;
+ }
+
+ #MSearchSelect {
+- display:block;
+- position:absolute;
+- width:20px;
+- height:19px;
+-}
+-
+-.left #MSearchSelect {
+- left:4px;
+-}
+-
+-.right #MSearchSelect {
+- right:5px;
++ display: inline-block;
++ vertical-align: middle;
++ height: 1.4em;
++ padding: 0 0 0 0.3em;
++ margin: 0;
+ }
+
+ #MSearchField {
+- display:block;
+- position:absolute;
+- height:19px;
+- background:url('search_m.png') repeat-x;
++ display: inline-block;
++ vertical-align: middle;
++ width: 7.5em;
++ height: 1.1em;
++ margin: 0 0.15em;
++ padding: 0;
++ line-height: 1em;
+ border:none;
+- width:115px;
+- margin-left:20px;
+- padding-left:4px;
+ color: #909090;
+ outline: none;
+- font: 9pt Arial, Verdana, sans-serif;
++ font-family: Arial, Verdana, sans-serif;
+ -webkit-border-radius: 0px;
++ border-radius: 0px;
++ background: none;
+ }
+
+-#FSearchBox #MSearchField {
+- margin-left:15px;
+-}
+
+ #MSearchBox .right {
+- display:block;
+- position:absolute;
+- right:10px;
+- top:8px;
+- width:20px;
+- height:19px;
+- background:url('search_r.png') no-repeat;
+- background-position:left;
++ display: inline-block;
++ vertical-align: middle;
++ width: 1.4em;
++ height: 1.4em;
+ }
+
+ #MSearchClose {
+ display: none;
+- position: absolute;
+- top: 4px;
++ font-size: inherit;
+ background : none;
+ border: none;
+- margin: 0px 4px 0px 0px;
+- padding: 0px 0px;
++ margin: 0;
++ padding: 0;
+ outline: none;
+-}
+
+-.left #MSearchClose {
+- left: 6px;
+ }
+
+-.right #MSearchClose {
+- right: 2px;
++#MSearchCloseImg {
++ height: 1.4em;
++ padding: 0.3em;
++ margin: 0;
+ }
+
+ .MSearchBoxActive #MSearchField {
+ color: #000000;
+ }
+
++#main-menu > li:last-child {
++ /* This object is the parent of the search bar */
++ display: flex;
++ justify-content: center;
++ align-items: center;
++ height: 36px;
++ margin-right: 1em;
++}
++
+ /*---------------- Search filter selection */
+
+ #MSearchSelectWindow {
+@@ -220,19 +204,21 @@
+
+ span.SRScope {
+ padding-left: 4px;
++ font-family: Arial, Verdana, sans-serif;
+ }
+
+ .SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
++ font-family: Arial, Verdana, sans-serif;
+ }
+
+ .SRResult {
+ display: none;
+ }
+
+-DIV.searchresults {
++div.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+diff -Nur doxygen-1.8.14/templates/html.orig/search.js doxygen-1.8.14/templates/html/search.js
+--- doxygen-1.8.14/templates/html.orig/search.js 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/search.js 2025-03-04 13:22:55.620929408 +0100
+@@ -1,25 +1,26 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
++ The MIT License (MIT)
+
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
++ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
++ and associated documentation files (the "Software"), to deal in the Software without restriction,
++ including without limitation the rights to use, copy, modify, merge, publish, distribute,
++ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice shall be included in all copies or
++ substantial portions of the Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+ function convertToId(search)
+ {
+@@ -79,9 +80,10 @@
+ storing this instance. Is needed to be able to set timeouts.
+ resultPath - path to use for external files
+ */
+-function SearchBox(name, resultsPath, inFrame, label)
++function SearchBox(name, resultsPath, inFrame, label, extension)
+ {
+ if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
++ if (!extension || extension == "") { extension = ".html"; }
+
+ // ---------- Instance variables
+ this.name = name;
+@@ -96,6 +98,7 @@
+ this.searchActive = false;
+ this.insideFrame = inFrame;
+ this.searchLabel = label;
++ this.extension = extension;
+
+ // ----------- DOM Elements
+
+@@ -200,10 +203,9 @@
+ }
+ return;
+ }
+- else if (window.frames.MSearchResults.searchResults)
++ else
+ {
+- var elem = window.frames.MSearchResults.searchResults.NavNext(0);
+- if (elem) elem.focus();
++ window.frames.MSearchResults.postMessage("take_focus", "*");
+ }
+ }
+ else if (e.keyCode==27) // Escape out of the search field
+@@ -347,13 +349,13 @@
+ if (idx!=-1)
+ {
+ var hexCode=idx.toString(16);
+- resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
++ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+ hasResultsPage = true;
+ }
+ else // nothing available for this search term
+ {
+- resultsPage = this.resultsPath + '/nomatches.html';
++ resultsPage = this.resultsPath + '/nomatches' + this.extension;
+ resultsPageWithSearch = resultsPage;
+ hasResultsPage = false;
+ }
+@@ -364,7 +366,7 @@
+ if (domPopupSearchResultsWindow.style.display!='block')
+ {
+ var domSearchBox = this.DOMSearchBox();
+- this.DOMSearchClose().style.display = 'inline';
++ this.DOMSearchClose().style.display = 'inline-block';
+ if (this.insideFrame)
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+@@ -439,12 +441,12 @@
+
+ while (element && element!=parentElement)
+ {
+- if (element.nodeName == 'DIV' && element.className == 'SRChildren')
++ if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
+ {
+ return element;
+ }
+
+- if (element.nodeName == 'DIV' && element.hasChildNodes())
++ if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
+ {
+ element = element.firstChild;
+ }
+diff -Nur doxygen-1.8.14/templates/html.orig/svgpan.js doxygen-1.8.14/templates/html/svgpan.js
+--- doxygen-1.8.14/templates/html.orig/svgpan.js 2017-10-31 20:36:00.000000000 +0100
++++ doxygen-1.8.14/templates/html/svgpan.js 2025-03-04 13:22:55.621929431 +0100
+@@ -1,57 +1,37 @@
+ /*
+- @licstart The following is the entire license notice for the
+- JavaScript code in this file.
++ @licstart The following is the entire license notice for the JavaScript code in this file.
++ The code below is based on SVGPan Library 1.2 and was modified for doxygen
++ to support both zooming and panning via the mouse and via embedded buttons.
++
++ This code is licensed under the following BSD license:
++
++ Copyright 2009-2010 Andrea Leofreddi . All rights reserved.
++
++ Redistribution and use in source and binary forms, with or without modification, are
++ permitted provided that the following conditions are met:
++
++ 1. Redistributions of source code must retain the above copyright notice, this list of
++ conditions and the following disclaimer.
++
++ 2. Redistributions in binary form must reproduce the above copyright notice, this list
++ of conditions and the following disclaimer in the documentation and/or other materials
++ provided with the distribution.
++
++ THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
++ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
++ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
++ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
++ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
++ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++ The views and conclusions contained in the software and documentation are those of the
++ authors and should not be interpreted as representing official policies, either expressed
++ or implied, of Andrea Leofreddi.
+
+- Copyright (C) 1997-2017 by Dimitri van Heesch
+-
+- 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.,
+- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+-
+- @licend The above is the entire license notice
+- for the JavaScript code in this file
+- */
+-/**
+- * The code below is based on SVGPan Library 1.2 and was modified for doxygen
+- * to support both zooming and panning via the mouse and via embedded bottons.
+- *
+- * This code is licensed under the following BSD license:
+- *
+- * Copyright 2009-2010 Andrea Leofreddi . All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without modification, are
+- * permitted provided that the following conditions are met:
+- *
+- * 1. Redistributions of source code must retain the above copyright notice, this list of
+- * conditions and the following disclaimer.
+- *
+- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+- * of conditions and the following disclaimer in the documentation and/or other materials
+- * provided with the distribution.
+- *
+- * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
+- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
+- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+- *
+- * The views and conclusions contained in the software and documentation are those of the
+- * authors and should not be interpreted as representing official policies, either expressed
+- * or implied, of Andrea Leofreddi.
++ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+
+ var root = document.documentElement;
+diff -Nur doxygen-1.8.14/templates/html.orig/tabs.css doxygen-1.8.14/templates/html/tabs.css
+--- doxygen-1.8.14/templates/html.orig/tabs.css 2025-03-04 13:01:41.264195861 +0100
++++ doxygen-1.8.14/templates/html/tabs.css 2025-03-04 13:22:48.994773442 +0100
+@@ -1 +1 @@
+-.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
+\ Kein Zeilenumbruch am Dateiende.
++.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
diff --git a/doxygen.spec b/doxygen.spec
index bd327f9..60548f2 100644
--- a/doxygen.spec
+++ b/doxygen.spec
@@ -8,7 +8,7 @@ Summary: A documentation system for C/C++
Name: doxygen
Epoch: 1
Version: 1.8.14
-Release: 13%{?dist}
+Release: 14%{?dist}
# No version is specified.
License: GPL+
@@ -19,6 +19,7 @@ Source1: doxywizard.png
Source2: doxywizard.desktop
Patch0: doxygen-1.8.14-jquery-CVE-2020-11023-CVE-2020-11022.patch
+Patch1: doxygen-1.8.14-RHEL-81116.patch
# upstream patches
@@ -180,6 +181,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2}
%endif
%changelog
+* Mon Mar 10 2025 Than Ngo - 1:1.8.14-14
+- Resolves: RHEL-81116, Treeview does not work
+
* Fri Feb 07 2025 Than Ngo - 1:1.8.14-13
- Resolves: RHEL-78141, CVE-2020-11023, CVE-2020-11022