From bc5641327306d170a0832ba8b7e6d32e9c646d95 Mon Sep 17 00:00:00 2001
From: bartvbl <bartvblokl@gmail.com>
Date: Fri, 21 Mar 2025 13:39:46 +0100
Subject: [PATCH] Mirror of projects

---
 .../_folder_Projects/sudoku/Documentation.pdf |  Bin 0 -> 95693 bytes
 templates/_folder_Projects/sudoku/GUI.cpp     |  206 ++
 templates/_folder_Projects/sudoku/GUI.h       |   61 +
 templates/_folder_Projects/sudoku/README.md   |    5 +
 templates/_folder_Projects/sudoku/Sudoku.cpp  |  150 ++
 templates/_folder_Projects/sudoku/Sudoku.h    |   30 +
 templates/_folder_Projects/sudoku/Tile.cpp    |   45 +
 templates/_folder_Projects/sudoku/Tile.h      |   23 +
 .../sudoku/game-files/almost_solved.txt       |    9 +
 .../sudoku/game-files/easy.txt                |    9 +
 .../sudoku/game-files/hard.txt                |    9 +
 .../sudoku/game-files/medium.txt              |    9 +
 templates/_folder_Projects/sudoku/main.cpp    |   12 +
 .../_folder_Projects/text-editor/README.md    |   16 +
 .../text-editor/TextEditor.cpp                |   65 +
 .../_folder_Projects/text-editor/TextEditor.h |   52 +
 .../_folder_Projects/text-editor/main.cpp     |   10 +
 .../_folder_Projects/tic-tac-toe/README.md    |   27 +
 .../tic-tac-toe/TicTacToeWindow.cpp           |  228 ++
 .../tic-tac-toe/TicTacToeWindow.h             |  106 +
 .../docs/html/_tic_tac_toe_window_8cpp.html   |  448 ++++
 .../docs/html/_tic_tac_toe_window_8cpp.js     |   16 +
 .../docs/html/_tic_tac_toe_window_8h.html     |  144 ++
 .../docs/html/_tic_tac_toe_window_8h.js       |    4 +
 .../html/_tic_tac_toe_window_8h_source.html   |  188 ++
 .../tic-tac-toe/docs/html/annotated.html      |  122 +
 .../tic-tac-toe/docs/html/annotated_dup.js    |    4 +
 .../tic-tac-toe/docs/html/bc_s.png            |  Bin 0 -> 676 bytes
 .../tic-tac-toe/docs/html/bc_sd.png           |  Bin 0 -> 635 bytes
 .../class_tic_tac_toe_window-members.html     |  140 +
 .../docs/html/class_tic_tac_toe_window.html   |  777 ++++++
 .../docs/html/class_tic_tac_toe_window.js     |   23 +
 .../docs/html/class_tic_tac_toe_window.png    |  Bin 0 -> 640 bytes
 .../tic-tac-toe/docs/html/classes.html        |  123 +
 .../tic-tac-toe/docs/html/clipboard.js        |   61 +
 .../tic-tac-toe/docs/html/closed.png          |  Bin 0 -> 132 bytes
 .../tic-tac-toe/docs/html/cookie.js           |   58 +
 .../tic-tac-toe/docs/html/doc.svg             |   12 +
 .../tic-tac-toe/docs/html/docd.svg            |   12 +
 .../tic-tac-toe/docs/html/doxygen.css         | 2255 +++++++++++++++++
 .../tic-tac-toe/docs/html/doxygen.svg         |   28 +
 .../tic-tac-toe/docs/html/doxygen_crawl.html  |   65 +
 .../tic-tac-toe/docs/html/dynsections.js      |  198 ++
 .../tic-tac-toe/docs/html/files.html          |  124 +
 .../tic-tac-toe/docs/html/files_dup.js        |    6 +
 .../tic-tac-toe/docs/html/folderclosed.svg    |   11 +
 .../tic-tac-toe/docs/html/folderclosedd.svg   |   11 +
 .../tic-tac-toe/docs/html/folderopen.svg      |   17 +
 .../tic-tac-toe/docs/html/folderopend.svg     |   12 +
 .../tic-tac-toe/docs/html/functions.html      |  136 +
 .../tic-tac-toe/docs/html/functions_func.html |  128 +
 .../tic-tac-toe/docs/html/functions_vars.html |  124 +
 .../tic-tac-toe/docs/html/globals.html        |  131 +
 .../tic-tac-toe/docs/html/globals_func.html   |  118 +
 .../tic-tac-toe/docs/html/globals_vars.html   |  129 +
 .../tic-tac-toe/docs/html/hierarchy.html      |  123 +
 .../tic-tac-toe/docs/html/hierarchy.js        |    6 +
 .../tic-tac-toe/docs/html/index.html          |  118 +
 .../tic-tac-toe/docs/html/jquery.js           |  204 ++
 .../tic-tac-toe/docs/html/main_8cpp.html      |  184 ++
 .../tic-tac-toe/docs/html/main_8cpp.js        |    5 +
 .../tic-tac-toe/docs/html/minus.svg           |    8 +
 .../tic-tac-toe/docs/html/minusd.svg          |    8 +
 .../tic-tac-toe/docs/html/nav_f.png           |  Bin 0 -> 153 bytes
 .../tic-tac-toe/docs/html/nav_fd.png          |  Bin 0 -> 169 bytes
 .../tic-tac-toe/docs/html/nav_g.png           |  Bin 0 -> 95 bytes
 .../tic-tac-toe/docs/html/nav_h.png           |  Bin 0 -> 98 bytes
 .../tic-tac-toe/docs/html/nav_hd.png          |  Bin 0 -> 114 bytes
 .../tic-tac-toe/docs/html/navtree.css         |  149 ++
 .../tic-tac-toe/docs/html/navtree.js          |  483 ++++
 .../tic-tac-toe/docs/html/navtreedata.js      |   55 +
 .../tic-tac-toe/docs/html/navtreeindex0.js    |   55 +
 .../tic-tac-toe/docs/html/open.png            |  Bin 0 -> 123 bytes
 .../tic-tac-toe/docs/html/plus.svg            |    9 +
 .../tic-tac-toe/docs/html/plusd.svg           |    9 +
 .../tic-tac-toe/docs/html/resize.js           |  147 ++
 .../tic-tac-toe/docs/html/search/all_0.js     |    9 +
 .../tic-tac-toe/docs/html/search/all_1.js     |    9 +
 .../tic-tac-toe/docs/html/search/all_2.js     |    6 +
 .../tic-tac-toe/docs/html/search/all_3.js     |    4 +
 .../tic-tac-toe/docs/html/search/all_4.js     |    4 +
 .../tic-tac-toe/docs/html/search/all_5.js     |    4 +
 .../tic-tac-toe/docs/html/search/all_6.js     |    4 +
 .../tic-tac-toe/docs/html/search/all_7.js     |    5 +
 .../tic-tac-toe/docs/html/search/all_8.js     |    5 +
 .../tic-tac-toe/docs/html/search/all_9.js     |    6 +
 .../tic-tac-toe/docs/html/search/all_a.js     |   10 +
 .../tic-tac-toe/docs/html/search/all_b.js     |    6 +
 .../tic-tac-toe/docs/html/search/all_c.js     |    5 +
 .../tic-tac-toe/docs/html/search/classes_0.js |    4 +
 .../tic-tac-toe/docs/html/search/close.svg    |   18 +
 .../tic-tac-toe/docs/html/search/files_0.js   |    4 +
 .../tic-tac-toe/docs/html/search/files_1.js   |    5 +
 .../docs/html/search/functions_0.js           |    7 +
 .../docs/html/search/functions_1.js           |    6 +
 .../docs/html/search/functions_2.js           |    4 +
 .../docs/html/search/functions_3.js           |    4 +
 .../docs/html/search/functions_4.js           |    5 +
 .../docs/html/search/functions_5.js           |    4 +
 .../docs/html/search/functions_6.js           |    4 +
 .../docs/html/search/functions_7.js           |    4 +
 .../tic-tac-toe/docs/html/search/mag.svg      |   24 +
 .../tic-tac-toe/docs/html/search/mag_d.svg    |   24 +
 .../tic-tac-toe/docs/html/search/mag_sel.svg  |   31 +
 .../tic-tac-toe/docs/html/search/mag_seld.svg |   31 +
 .../tic-tac-toe/docs/html/search/search.css   |  286 +++
 .../tic-tac-toe/docs/html/search/search.js    |  694 +++++
 .../docs/html/search/searchdata.js            |   27 +
 .../docs/html/search/variables_0.js           |    9 +
 .../docs/html/search/variables_1.js           |    5 +
 .../docs/html/search/variables_2.js           |    4 +
 .../docs/html/search/variables_3.js           |    4 +
 .../docs/html/search/variables_4.js           |    4 +
 .../docs/html/search/variables_5.js           |    6 +
 .../docs/html/search/variables_6.js           |    9 +
 .../docs/html/search/variables_7.js           |    4 +
 .../tic-tac-toe/docs/html/splitbar.png        |  Bin 0 -> 314 bytes
 .../tic-tac-toe/docs/html/splitbard.png       |  Bin 0 -> 282 bytes
 .../tic-tac-toe/docs/html/sync_off.png        |  Bin 0 -> 853 bytes
 .../tic-tac-toe/docs/html/sync_on.png         |  Bin 0 -> 845 bytes
 .../tic-tac-toe/docs/html/tab_a.png           |  Bin 0 -> 142 bytes
 .../tic-tac-toe/docs/html/tab_ad.png          |  Bin 0 -> 135 bytes
 .../tic-tac-toe/docs/html/tab_b.png           |  Bin 0 -> 169 bytes
 .../tic-tac-toe/docs/html/tab_bd.png          |  Bin 0 -> 173 bytes
 .../tic-tac-toe/docs/html/tab_h.png           |  Bin 0 -> 177 bytes
 .../tic-tac-toe/docs/html/tab_hd.png          |  Bin 0 -> 180 bytes
 .../tic-tac-toe/docs/html/tab_s.png           |  Bin 0 -> 184 bytes
 .../tic-tac-toe/docs/html/tab_sd.png          |  Bin 0 -> 188 bytes
 .../tic-tac-toe/docs/html/tabs.css            |    1 +
 .../tic-tac-toe/game_results.txt              |   57 +
 .../_folder_Projects/tic-tac-toe/main.cpp     |   32 +
 131 files changed, 9658 insertions(+)
 create mode 100644 templates/_folder_Projects/sudoku/Documentation.pdf
 create mode 100644 templates/_folder_Projects/sudoku/GUI.cpp
 create mode 100644 templates/_folder_Projects/sudoku/GUI.h
 create mode 100644 templates/_folder_Projects/sudoku/README.md
 create mode 100644 templates/_folder_Projects/sudoku/Sudoku.cpp
 create mode 100644 templates/_folder_Projects/sudoku/Sudoku.h
 create mode 100644 templates/_folder_Projects/sudoku/Tile.cpp
 create mode 100644 templates/_folder_Projects/sudoku/Tile.h
 create mode 100644 templates/_folder_Projects/sudoku/game-files/almost_solved.txt
 create mode 100644 templates/_folder_Projects/sudoku/game-files/easy.txt
 create mode 100644 templates/_folder_Projects/sudoku/game-files/hard.txt
 create mode 100644 templates/_folder_Projects/sudoku/game-files/medium.txt
 create mode 100644 templates/_folder_Projects/sudoku/main.cpp
 create mode 100644 templates/_folder_Projects/text-editor/README.md
 create mode 100644 templates/_folder_Projects/text-editor/TextEditor.cpp
 create mode 100644 templates/_folder_Projects/text-editor/TextEditor.h
 create mode 100644 templates/_folder_Projects/text-editor/main.cpp
 create mode 100644 templates/_folder_Projects/tic-tac-toe/README.md
 create mode 100644 templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.cpp
 create mode 100644 templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.h
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h_source.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/annotated.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/annotated_dup.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/bc_s.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/bc_sd.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window-members.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/classes.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/clipboard.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/closed.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/cookie.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/doc.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/docd.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.css
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/doxygen_crawl.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/dynsections.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/files.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/files_dup.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/folderclosed.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/folderclosedd.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/folderopen.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/folderopend.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/functions.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/functions_func.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/functions_vars.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/globals.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/globals_func.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/globals_vars.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/index.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/jquery.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.html
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/minus.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/minusd.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/nav_f.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/nav_fd.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/nav_g.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/nav_h.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/nav_hd.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/navtree.css
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/navtree.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/navtreedata.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/navtreeindex0.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/open.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/plus.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/plusd.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/resize.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_0.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_1.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_2.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_3.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_4.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_5.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_6.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_7.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_8.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_9.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_a.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_b.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/all_c.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/classes_0.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/close.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/files_0.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/files_1.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_0.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_1.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_2.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_3.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_4.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_5.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_6.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_7.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/mag.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_d.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_sel.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_seld.svg
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/search.css
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/search.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/searchdata.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_0.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_1.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_2.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_3.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_4.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_5.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_6.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_7.js
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/splitbar.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/splitbard.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/sync_off.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/sync_on.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_a.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_ad.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_b.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_bd.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_h.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_hd.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_s.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tab_sd.png
 create mode 100644 templates/_folder_Projects/tic-tac-toe/docs/html/tabs.css
 create mode 100644 templates/_folder_Projects/tic-tac-toe/game_results.txt
 create mode 100644 templates/_folder_Projects/tic-tac-toe/main.cpp

diff --git a/templates/_folder_Projects/sudoku/Documentation.pdf b/templates/_folder_Projects/sudoku/Documentation.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7a9074c11dcdd2a6848220c0f9f6481ac809d170
GIT binary patch
literal 95693
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

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/sudoku/GUI.cpp b/templates/_folder_Projects/sudoku/GUI.cpp
new file mode 100644
index 0000000..c078273
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/GUI.cpp
@@ -0,0 +1,206 @@
+#include "GUI.h"
+
+// Konstruktør for grafikkvinduet
+SudokuWindow::SudokuWindow(int x, int y, const std::string& title) : 
+	// Initialiser medlemsvariabler, bruker konstruktøren til AnimationWindow-klassen
+	AnimationWindow{x, y, width, height, title}, 
+    check_button{button_pos, button_width, button_height, "Check board"},
+    victory_box{box_pos, box_width, box_height, "You won!"}
+    {
+        // Fyller brettet med tiles
+        tiles.resize(num_rows);
+        for (int row = 0; row < num_rows; row++) {
+            for (int col = 0; col < num_cols; col++) {
+                TDT4102::Point board_pos = {row, col};
+                tiles.at(row).emplace_back(new Tile{board_pos, TDT4102::Point{pad_size + col * tile_size, pad_size + row * tile_size}, tile_size});
+                tiles.at(row).back()->setCallback(std::bind(&SudokuWindow::cb_click, this));
+			    auto temp = tiles.at(row).back().get();
+			    add(*temp); 
+            }
+            
+        }
+
+        // Legger til knapp for å sjekke brett
+        check_button.setCallback(std::bind(&SudokuWindow::cb_check, this));
+        victory_box.setVisible(false);
+        add(check_button);
+        add(victory_box);
+
+}
+
+// Returnerer tilen som inneholder spesifisert punkt i vinduet
+std::shared_ptr<Tile>& SudokuWindow::get_tile(TDT4102::Point xy)  {
+    return tiles[xy.y / tile_size][xy.x / tile_size];
+}
+
+// Velger en gitt tile, for å kunne endre tallet
+void SudokuWindow::select_tile(std::shared_ptr<Tile>& tile) {
+    if(tile->changeable) {
+        if(selected_tile) {
+            selected_tile->is_highlighted = false;
+            selected_tile->update();
+        }
+
+        selected_tile = tile;
+        selected_tile->is_highlighted = true;
+        selected_tile->update();
+    }
+}
+
+// Sjekker om et punkt er innenfor vinduet
+bool SudokuWindow::in_range(TDT4102::Point xy) const { 
+    return (xy.x >= 0 && xy.x< width && xy.y >= 0 && xy.y < height); 
+}
+
+// Kjører programmet. Tar inn et forhåndslagd brett fra en tekstfil
+void SudokuWindow::run(std::string board_filename) {
+    while(!should_close()) {
+
+        if(won) {  
+            toggle_visible(false);
+            victory_box.setVisible(true);
+            next_frame();
+        }
+
+        else {
+
+            if(!game_started) {
+                try{
+                    sudoku_board->load_board_from_file(board_filename);
+                }
+                catch(const std::ios_base::failure& e) {
+                    std::cerr << "Error: " << e.what() << std::endl;
+                }
+                
+                initialize_tiles();
+                game_started = true;
+            }
+            draw_grid();
+            handle_input();
+            next_frame();
+        }
+    }
+}
+
+// Initialiserer det grafiske brettet. Henter forhåndsbestemte tall fra spillbrettet
+void SudokuWindow::initialize_tiles() {
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            int num = sudoku_board->get_cell(row, col);
+            std::shared_ptr<Tile> tile = tiles.at(row).at(col);
+            if(num) {
+                tile->changeable = false; // Kan ikke endre på de forhåndsbestemte tallene
+            }
+            try{
+                tile->set(num);
+            }
+            // Setter tile til 0 hvis den møter på et ugyldig tall
+            catch(const std::out_of_range& e) {
+                std::cerr << "Error: " << e.what() << std::endl
+                          << "Could not load invalid number, tile set to 0" << std::endl;
+            }
+        }
+    }
+}
+
+// Setter verdiene i spillbrettet basert på tallene i Tiles
+void SudokuWindow::set_tiles() {
+    int num;
+    for(int row = 0; row < num_rows; row++) {
+        for(int col = 0; col < num_cols; col++) {
+            num = tiles.at(row).at(col)->number;
+            sudoku_board->set_cell(row, col, num);
+        }
+    }
+}
+
+// Slår av eller på synligheten til brettet
+void SudokuWindow::toggle_visible(bool visibility) {
+    for(int row = 0; row < num_rows; row++) {
+        for(int col = 0; col < num_cols; col++) {
+            tiles.at(row).at(col)->setVisible(visibility);
+        }
+    }
+}
+
+// Tegner rutenett
+void SudokuWindow::draw_grid() {
+    int corr = 3; // Korreksjonsfaktor for å få nettet til å line up
+
+    for(int row = 0; row < num_rows; row++) {
+        for(int col = 0; col < num_cols; col++) {
+            if (col % 3 == 0 && col != 0) {
+                int x = pad_size + col * tile_size;
+                draw_line({x + corr, pad_size}, {x+ corr, pad_size + board_height});
+            }
+        }
+        if (row % 3 == 0 && row != 0) {
+            int y = pad_size + row * tile_size;
+            draw_line({pad_size, y + corr}, {pad_size + board_height, y + corr});
+        }
+    }
+}
+
+// Callback-funksjon for når brukeren klikker på en tile
+void SudokuWindow::cb_click() {
+	
+    std::shared_ptr<Tile> tile;
+	TDT4102::Point xy{this->get_mouse_coordinates()};
+	if (!in_range(xy)) {
+        std::cout << "Out of range!" << std::endl;
+		return;
+	}
+	if (this->is_left_mouse_button_down()) {
+		tile = get_tile(xy);
+        select_tile(tile);
+	}
+}
+
+// Sjekker om hele brettet er fyllt inn, og gyldig
+void SudokuWindow::cb_check() {
+    set_tiles();
+    std::cout << "Board checked" << std::endl;
+    if (sudoku_board->check_board() && sudoku_board->check_complete()) {
+        std::cout << "You won!" << std::endl;
+        won = true;
+    }
+}
+
+// Sjekker for input fra tastaturet. Registerer om en tast går fra å ikke være trykket
+// inn, til å være trykket inn
+void SudokuWindow::handle_input() {
+
+    static bool last_0_state = false;
+    static bool last_1_state = false;
+    static bool last_2_state = false;
+    static bool last_3_state = false;
+    static bool last_4_state = false;
+    static bool last_5_state = false;
+    static bool last_6_state = false;
+    static bool last_7_state = false;
+    static bool last_8_state = false;
+    static bool last_9_state = false;
+
+    bool current_0_state = is_key_down(KeyboardKey::KEY_0);
+    bool current_1_state = is_key_down(KeyboardKey::KEY_1);
+    bool current_2_state = is_key_down(KeyboardKey::KEY_2);
+    bool current_3_state = is_key_down(KeyboardKey::KEY_3);
+    bool current_4_state = is_key_down(KeyboardKey::KEY_4);
+    bool current_5_state = is_key_down(KeyboardKey::KEY_5);
+    bool current_6_state = is_key_down(KeyboardKey::KEY_6);
+    bool current_7_state = is_key_down(KeyboardKey::KEY_7);
+    bool current_8_state = is_key_down(KeyboardKey::KEY_8);
+    bool current_9_state = is_key_down(KeyboardKey::KEY_9);
+
+    if (current_0_state && !last_0_state) { selected_tile->set(0); }
+    if (current_1_state && !last_1_state) { selected_tile->set(1); }
+    if (current_2_state && !last_2_state) { selected_tile->set(2); }
+    if (current_3_state && !last_3_state) { selected_tile->set(3); }
+    if (current_4_state && !last_4_state) { selected_tile->set(4); }
+    if (current_5_state && !last_5_state) { selected_tile->set(5); }
+    if (current_6_state && !last_6_state) { selected_tile->set(6); }
+    if (current_7_state && !last_7_state) { selected_tile->set(7); }
+    if (current_8_state && !last_8_state) { selected_tile->set(8); }
+    if (current_9_state && !last_9_state) { selected_tile->set(9); }
+
+}
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/GUI.h b/templates/_folder_Projects/sudoku/GUI.h
new file mode 100644
index 0000000..88d2201
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/GUI.h
@@ -0,0 +1,61 @@
+#pragma once
+#include <memory>
+#include "AnimationWindow.h"
+#include "Tile.h"
+#include "Sudoku.h"
+#include "widgets/TextInput.h"
+
+class SudokuWindow : public TDT4102::AnimationWindow
+{
+    private:
+
+        // Konstanter for grafikkvinduet
+        static constexpr int tile_size = 33;
+        static constexpr int board_width = num_cols*tile_size;
+        static constexpr int board_height = num_rows*tile_size;
+        static constexpr int pad_size = 10;
+        static constexpr int button_width = board_width;
+        static constexpr int box_width = board_width;
+        static constexpr int button_height = 40;
+        static constexpr int box_height = 60;
+
+        static constexpr int width = 2 * pad_size + board_width;
+        static constexpr int height = 3 * pad_size + board_height + button_height;
+
+        static constexpr TDT4102::Point button_pos = {pad_size + tile_size/4, 2*pad_size + board_height};
+        static constexpr TDT4102::Point box_pos = {pad_size, (height-box_height)/2};
+
+
+        // 2D-vektor med Tiles, som utgjør det grafiske brettet
+        std::vector<std::vector<std::shared_ptr<Tile>>> tiles;
+        std::shared_ptr<Tile> selected_tile;
+
+        // Øvrige GUI-elementer
+        TDT4102::Button check_button;
+        TDT4102::TextInput victory_box;
+
+        // Spillbrett-objektet som kjører spillogikken
+        std::shared_ptr<Sudoku> sudoku_board = std::make_shared<Sudoku>();
+        bool game_started = false;
+        bool won = false;
+
+
+        // Medlemsfunksjoner
+        std::shared_ptr<Tile>& get_tile(TDT4102::Point);
+        void select_tile(std::shared_ptr<Tile>& tile);
+        bool in_range(TDT4102::Point xy) const;
+        void handle_input();
+        void cb_click();
+        void cb_check();
+        void initialize_tiles();
+        void set_tiles();
+        void toggle_visible(bool visible);
+        void draw_grid();
+
+    public:
+        // konstruktør
+        SudokuWindow(int x, int y, const std::string& title);
+        // kjører programmet
+        void run(std::string board_filename);
+
+};
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/README.md b/templates/_folder_Projects/sudoku/README.md
new file mode 100644
index 0000000..345a59b
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/README.md
@@ -0,0 +1,5 @@
+# Sudoku
+
+En enkel versjon av Sudoku skrevet i C++.
+
+Dokumentasjon ligger i egen PDF-fil. Merk at denne er lenger og mer utfyllende enn det som er forventet av dere i prosjektet!
diff --git a/templates/_folder_Projects/sudoku/Sudoku.cpp b/templates/_folder_Projects/sudoku/Sudoku.cpp
new file mode 100644
index 0000000..acf5d52
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/Sudoku.cpp
@@ -0,0 +1,150 @@
+#include "Sudoku.h"
+
+// Default-konstruktør for spillbrettet
+Sudoku::Sudoku() {
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            this->board[row][col] = 0;
+        }
+    }
+}
+
+// Konstruktør som oppretter spillbrettet basert på et eksisterende array
+Sudoku::Sudoku(int board[9][9]) {
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            this->board[row][col] = board[row][col];
+        }
+    }
+}
+
+// Printer ut spillbrettet til terminal
+void Sudoku::print_board() {
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            std::cout << board[row][col] << " ";
+            if(col == 2 || col == 5){
+                std::cout << "| ";
+            }
+        }
+        if(row == 2 || row == 5){
+            std::cout << std::endl;
+            std::cout << "---------------------";
+        }
+        std::cout << std::endl;
+    }
+    std::cout << std::endl;
+}
+
+// Sjekker om en rad er gyldig
+bool Sudoku::check_row(int row) {
+
+    bool seen[10] = {false}; // Array to track numbers 1-9 (index 0 is unused)
+
+    for (int col = 0; col < num_cols; col++) {
+        int num = board[row][col];
+        if (num) { // Ignore empty tiles
+            if (seen[num]) {
+                std::cout << "Row " << row + 1 << " not valid" << std::endl;
+                return false; // Duplicate found
+            }
+            seen[num] = true;
+        }
+    }
+    return true; // No duplicates found
+}
+
+// Sjekker om en kolonne er gyldig
+bool Sudoku::check_col(int col) {
+
+    bool seen[10] = {false}; // Array to track numbers 1-9 (index 0 is unused)
+
+    for (int row = 0; row < num_rows; row++) {
+        int num = board[row][col];
+        if (num) { // Ignore empty tiles
+            if (seen[num]) {
+                std::cout << "Column " << col + 1 << " not valid" << std::endl;
+                return false; // Duplicate found
+            }
+            seen[num] = true;
+        }
+    }
+    return true; // No duplicates found
+}
+
+// Sjekker om en boks (3x3 seksjon) er gyldig
+bool Sudoku::check_box(int box) {
+    bool seen[10] = {false};
+    int start_row = (box/3) * 3;
+    int start_col = (box%3) * 3;
+    for (int row = start_row; row < start_row + 3; row++) {
+        for (int col = start_col; col < start_col + 3; col++) {
+            int num = board[row][col];
+            if (num) {
+                if (seen[num]) {
+                    std::cout << "Box " << box + 1 << " not valid" << std::endl;
+                    return false; // Duplicate found
+                }
+                seen[num] = true;
+            }
+        }
+    }
+    return true;
+}
+
+// Lagrer spillbrettet til spesifisert tekstfil
+void Sudoku::save_board_to_file(std::string filename){
+    std::filesystem::path save_file{filename};
+    std::ofstream ofs{save_file};
+    if(!ofs) {
+        throw std::ios_base::failure("Could not open file: " + filename);
+    }
+
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            ofs << board[row][col] << " ";
+        }
+        ofs << '\n';
+    }
+}
+
+// Laster inn et spillbrett fra spesifisert tekstfil
+void Sudoku::load_board_from_file(std::string filename) {
+    std::filesystem::path load_file{filename};
+    std::ifstream ifs{load_file};
+    if(!ifs) {
+        throw std::ios_base::failure("Could not open file: " + filename);
+    }
+    int num;
+
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            ifs >> num;
+            set_cell(row, col, num);
+        }
+    }
+}
+
+// Sjekker om hele brettet er gyldig
+bool Sudoku::check_board() {
+    for (int i = 0; i < num_rows; i++) {
+        if(!check_row(i) || !check_col(i) || !check_box(i)) {
+            std::cout << "Board not valid" << std::endl;
+            return false;
+        }
+    }
+    return true;
+}
+
+// Sjekker om hele brettet er fylt inn
+bool Sudoku::check_complete() {
+    for (int row = 0; row < num_rows; row++) {
+        for (int col = 0; col < num_cols; col++) {
+            if(!board[row][col]) {
+                std::cout << "Board incomplete" << std::endl;
+                return false;
+            }
+        }
+    }
+    return true;
+}
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/Sudoku.h b/templates/_folder_Projects/sudoku/Sudoku.h
new file mode 100644
index 0000000..8d7c648
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/Sudoku.h
@@ -0,0 +1,30 @@
+#pragma once
+#include "Tile.h"
+#include <iostream>
+#include <fstream>
+#include <filesystem>
+
+constexpr int num_rows = 9;
+constexpr int num_cols = 9;
+
+
+class Sudoku {
+    private:
+        int board[9][9];
+    public:
+        Sudoku();
+        Sudoku(int board[9][9]);
+
+        void set_cell(int row, int col, int num) {board[row][col] = num;}
+        int get_cell(int row, int col) { return board[row][col];}
+        void save_board_to_file(std::string filename);
+        void load_board_from_file(std::string filename);
+        void print_board();
+
+        bool check_row(int row);
+        bool check_col(int col);
+        bool check_box(int box);
+        bool check_board();
+        bool check_complete();
+
+};
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/Tile.cpp b/templates/_folder_Projects/sudoku/Tile.cpp
new file mode 100644
index 0000000..2020ece
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/Tile.cpp
@@ -0,0 +1,45 @@
+#include "Tile.h"
+
+Tile::Tile(TDT4102::Point board_pos, TDT4102::Point pos, int size, int num) : 
+Button(pos, 1.5*size, size, "") {
+
+    if (num > 9 || num < 0) {
+        throw(std::out_of_range("Number " + std::to_string(num) + " not between 0-9"));
+    }
+    this->number = num;
+    this->is_highlighted = false;
+    update();
+}
+
+// Oppdaterer grafikken til tilen. Sjekker om den er tom, om den er valgt, og om den kan endres
+void Tile::update() {
+    if(number) {
+        setLabel(std::to_string(number));
+    }
+    else {
+        setLabel("");
+    }
+
+    if(is_highlighted) {
+        setButtonColor(highlight_color);
+    }
+    else {
+        setButtonColor(default_color);
+    }
+    if(changeable) {
+        setLabelColor(default_label_color);
+    }
+    else {
+        setLabelColor(unchangeable_label_color);
+    }
+
+}
+
+// Setter verdien på tilen til det gitte tallet
+void Tile::set(int num) {
+    if (num > 9 || num < 0) {
+        throw(std::out_of_range("Number " + std::to_string(num) + " not between 0-9"));
+    }
+    number = num;
+    update();
+}
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/Tile.h b/templates/_folder_Projects/sudoku/Tile.h
new file mode 100644
index 0000000..ea2eb4c
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/Tile.h
@@ -0,0 +1,23 @@
+#pragma once
+#include <iostream>
+#include "AnimationWindow.h"
+#include "widgets/Button.h"
+
+const TDT4102::Color default_color = TDT4102::Color::white;
+const TDT4102::Color highlight_color = TDT4102::Color::sky_blue;
+const TDT4102::Color default_label_color = TDT4102::Color::dim_grey;
+const TDT4102::Color unchangeable_label_color = TDT4102::Color::black;
+
+struct Tile : public TDT4102::Button{
+    
+    Tile(TDT4102::Point board_pos, TDT4102::Point pos, int size, int number = 0);
+
+    int number;
+    bool is_highlighted;
+    bool changeable = true;
+    TDT4102::Point board_pos;
+    
+    void set(int num);
+    void update();
+
+};
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/game-files/almost_solved.txt b/templates/_folder_Projects/sudoku/game-files/almost_solved.txt
new file mode 100644
index 0000000..b0a2f51
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/game-files/almost_solved.txt
@@ -0,0 +1,9 @@
+0 3 5 2 6 9 7 8 1
+6 8 2 5 7 1 4 9 3
+1 9 7 8 3 4 5 6 2
+8 2 6 1 9 5 3 4 7
+3 7 4 6 8 2 9 1 5
+9 5 1 7 4 3 6 2 8
+5 1 9 3 2 6 8 7 4
+2 4 8 9 5 7 1 3 6
+7 6 3 4 1 8 2 5 9
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/game-files/easy.txt b/templates/_folder_Projects/sudoku/game-files/easy.txt
new file mode 100644
index 0000000..9c8fc1e
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/game-files/easy.txt
@@ -0,0 +1,9 @@
+0 0 2 6 0 7 0 1 0
+6 8 0 0 0 7 0 9 0
+1 9 0 0 4 5 0 0 0
+8 2 0 1 0 0 0 4 0
+0 4 6 0 2 9 0 0 0
+5 0 0 0 3 0 0 2 8
+0 9 3 0 0 7 0 4 0
+4 0 5 0 0 0 3 6 0
+7 3 0 1 8 0 0 0 0
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/game-files/hard.txt b/templates/_folder_Projects/sudoku/game-files/hard.txt
new file mode 100644
index 0000000..c74b47e
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/game-files/hard.txt
@@ -0,0 +1,9 @@
+2 0 0 5 0 7 4 0 6
+0 0 0 0 3 1 0 0 0
+0 0 0 0 0 0 2 3 0
+0 0 0 0 2 0 0 0 0
+8 6 0 3 1 0 0 0 0
+0 4 5 0 0 0 0 0 0
+0 0 9 0 0 0 7 0 0
+0 0 6 9 5 0 0 0 2
+0 0 1 0 0 6 0 0 8
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/game-files/medium.txt b/templates/_folder_Projects/sudoku/game-files/medium.txt
new file mode 100644
index 0000000..815ad59
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/game-files/medium.txt
@@ -0,0 +1,9 @@
+0 0 0 5 0 7 0 0 0
+0 4 0 2 6 3 0 0 0
+1 0 7 4 0 0 0 0 0
+3 6 0 0 0 0 0 4 5
+0 0 2 0 5 0 7 0 0
+7 9 0 0 0 0 0 6 2
+0 0 0 0 0 9 4 0 1
+0 0 0 1 3 4 0 9 0
+0 0 0 6 0 5 0 0 0
\ No newline at end of file
diff --git a/templates/_folder_Projects/sudoku/main.cpp b/templates/_folder_Projects/sudoku/main.cpp
new file mode 100644
index 0000000..037dcd1
--- /dev/null
+++ b/templates/_folder_Projects/sudoku/main.cpp
@@ -0,0 +1,12 @@
+#include "Sudoku.h"
+#include "GUI.h"
+
+int main() {
+
+	TDT4102::Point start_point{200, 300};
+
+    SudokuWindow sw{start_point.x, start_point.y, "Sudoku"};
+    sw.run("game-files/easy.txt");
+
+    return 0;
+}
\ No newline at end of file
diff --git a/templates/_folder_Projects/text-editor/README.md b/templates/_folder_Projects/text-editor/README.md
new file mode 100644
index 0000000..82d3fac
--- /dev/null
+++ b/templates/_folder_Projects/text-editor/README.md
@@ -0,0 +1,16 @@
+# Text Editor
+
+En enkel GUI-basert teksteditor skrevet i C++ som lar brukeren laste inn og lagre tekstfiler.
+
+## Funksjonalitet
+- Ã…pne og vise innholdet i en tekstfil.
+- Redigere tekst i et grafisk grensesnitt.
+- Lagre tekstinnhold til en spesifisert fil.
+- Feilhåndtering for filoperasjoner.
+
+## Bruk
+1. Start programmet.
+2. Skriv inn filnavnet i tekstfeltet.
+3. Trykk "Load text" for å laste inn en fil.
+4. Rediger tekst i tekstboksen.
+5. Trykk "Save text" for å lagre filen.
diff --git a/templates/_folder_Projects/text-editor/TextEditor.cpp b/templates/_folder_Projects/text-editor/TextEditor.cpp
new file mode 100644
index 0000000..e4650f4
--- /dev/null
+++ b/templates/_folder_Projects/text-editor/TextEditor.cpp
@@ -0,0 +1,65 @@
+#include "TextEditor.h"
+
+// Constructs and opens the text editor window 
+TextEditor::TextEditor(TDT4102::Point pos) : TDT4102::AnimationWindow{pos.x, pos.y, windowWidth, windowHeight, "Text Editor"},
+    loadButton{loadPos, buttonWidth, buttonHeight, "Load text"}, 
+    saveButton{savePos, buttonWidth, buttonHeight, "Save text"},
+    textBox{textboxPos, textboxWidth, textboxHeight},
+    fileTextBox{fileTextboxPos, fileTextboxWidth, fileTextboxHeight}
+{
+    // Adds GUI elements and sets callbacks
+    add(loadButton);
+    add(saveButton);
+    add(textBox);
+    add(fileTextBox);
+    loadButton.setCallback(std::bind(&TextEditor::cb_load, this));
+    saveButton.setCallback(std::bind(&TextEditor::cb_save, this));
+}
+
+// Loads text from file specified in text box
+void TextEditor::loadFromFile() {
+    storedText = "";
+    filename = fileTextBox.getText();
+    std::filesystem::path loadPath{filename};
+    std::ifstream ifs{loadPath};
+    if (!ifs) {
+        throw std::ios_base::failure("Could not open load file: " + filename);
+    }
+    std::string s;
+    while(getline(ifs, s)) {
+        storedText += s;
+    }
+    textBox.setText(storedText);
+}
+
+// Saves text to file specified in text box
+void TextEditor::saveToFile() {
+    storedText = textBox.getText();
+    filename = fileTextBox.getText();
+    std::filesystem::path savePath{filename};
+    std::ofstream ofs{savePath};
+    if (!ofs) {
+        throw std::ios_base::failure("Could not open save file: " + filename);
+    }
+    ofs << storedText;
+}
+
+// Callback funtion for "Load text"-button
+void TextEditor::cb_load() {
+    try{
+        loadFromFile();
+    }
+    catch(const std::ios_base::failure& e) {
+        std::cerr << "Error: " << e.what() << std::endl;
+    }
+}
+
+// Callback function for "Save text"-button
+void TextEditor::cb_save() {
+    try{
+        saveToFile();
+    }
+    catch(const std::ios_base::failure& e) {
+        std::cerr << "Error: " << e.what() << std::endl;
+    }
+}
\ No newline at end of file
diff --git a/templates/_folder_Projects/text-editor/TextEditor.h b/templates/_folder_Projects/text-editor/TextEditor.h
new file mode 100644
index 0000000..c0cca7b
--- /dev/null
+++ b/templates/_folder_Projects/text-editor/TextEditor.h
@@ -0,0 +1,52 @@
+#pragma once
+#include <fstream>
+#include <iostream>
+#include "AnimationWindow.h"
+#include "widgets/Button.h"
+#include "widgets/TextInput.h"
+
+
+class TextEditor : public TDT4102::AnimationWindow {
+    private:
+        // Constants defining GUI element sizes
+        static constexpr int textboxHeight = 400;
+        static constexpr int textboxWidth = 300;
+        static constexpr int padSize = 10;
+        static constexpr int fileTextboxHeight = 30;
+        static constexpr int fileTextboxWidth = textboxWidth;
+        static constexpr int buttonHeight = 50;
+        static constexpr int buttonWidth = 100;
+
+        static constexpr int windowHeight = 3*padSize + textboxHeight + fileTextboxHeight;
+        static constexpr int windowWidth = 3*padSize + textboxWidth + buttonWidth;
+
+        static constexpr TDT4102::Point loadPos = {2*padSize + textboxWidth, padSize};
+        static constexpr TDT4102::Point savePos =  {2*padSize + textboxWidth, 2*padSize + buttonHeight};
+        static constexpr TDT4102::Point textboxPos = {padSize, padSize};
+        static constexpr TDT4102::Point fileTextboxPos = {padSize, 2*padSize + textboxHeight};
+
+        // Buttons
+        TDT4102::Button loadButton;
+        TDT4102::Button saveButton;
+
+        // Text inputs
+        TDT4102::TextInput textBox;
+        TDT4102::TextInput fileTextBox;
+
+        // Variables to store filename and text
+        std::string filename;
+        std::string storedText;
+
+        // File handling
+        void loadFromFile();
+        void saveToFile();
+
+        // Callback functions
+        void cb_load();
+        void cb_save();
+
+    
+    public:
+        // Constructor
+        TextEditor(TDT4102::Point pos);
+};
\ No newline at end of file
diff --git a/templates/_folder_Projects/text-editor/main.cpp b/templates/_folder_Projects/text-editor/main.cpp
new file mode 100644
index 0000000..a493387
--- /dev/null
+++ b/templates/_folder_Projects/text-editor/main.cpp
@@ -0,0 +1,10 @@
+#include "TextEditor.h"
+
+
+int main() {
+
+    TextEditor te{{300, 200}};
+    te.wait_for_close();
+
+    return 0;
+}
diff --git a/templates/_folder_Projects/tic-tac-toe/README.md b/templates/_folder_Projects/tic-tac-toe/README.md
new file mode 100644
index 0000000..03fec51
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/README.md
@@ -0,0 +1,27 @@
+# Tic Tac Toe Game
+
+A simple Tic Tac Toe game built using C++.
+
+## Documentation
+
+The documentation for this project is generated using [Doxygen](https://www.doxygen.nl/). The documentation can be found in the `docs` folder. Please note that the `html` folder needs to be downloaded for the Doxygen documentation to be opened properly. To view the documentation, navigate to the `docs/html` folder and open the `index.html` file in your web browser.
+
+## Mini Guide to Doxygen
+
+### Downloads
+1. Download and install Doxygen from [here](https://www.doxygen.nl/download.html).
+
+### Create Config File
+1. After downloading open a terminal or command prompt.
+2. Navigate to your project directory.
+3. Run the command: `doxygen -g Doxyfile` to generate a default configuration file named `Doxyfile`.
+
+### Generate Documentation
+1. Open the `Doxyfile` in a text editor. For example, you can use the command `code Doxyfile` to open it in VS Code.
+2. Set the `INPUT` field to the directories containing your source code.
+3. Set the `OUTPUT_DIRECTORY` field to the desired output directory (e.g., `docs`).
+4. Save the `Doxyfile`.
+5. Run the command: `doxygen Doxyfile` to generate the documentation.
+
+The generated documentation will be available in the specified output directory. Note that it is recommended to adjust additional variables inside the `Doxyfile` to match the desired level of documentation for your project, such as `RECURSIVE`, `EXTRACT_ALL`, and `EXTRACT_PRIVATE`.
+
diff --git a/templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.cpp b/templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.cpp
new file mode 100644
index 0000000..9105b3a
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.cpp
@@ -0,0 +1,228 @@
+/**
+ * @file TicTacToeWindow.cpp
+ * @brief Contains the implementation of the TicTacToeWindow class.
+ * 
+ * @details This file uses the following libraries and resources:
+ * - TicTacToeWindow.h for class definition
+ * - iostream for standard input/output operations
+ */
+
+#include "TicTacToeWindow.h"
+#include <iostream>
+
+constexpr int BUTTON_WIDTH = 100;
+constexpr int BUTTON_HEIGHT = 30;
+constexpr int RESET_BUTTON_X = 10;
+constexpr int RESET_BUTTON_Y = 10;
+constexpr int QUIT_BUTTON_X = 120;
+constexpr int QUIT_BUTTON_Y = 10;
+constexpr int RESULT_TEXT_X = 240;
+constexpr int RESULT_TEXT_Y = 10;
+
+constexpr int BOARD_SIZE = 600;
+constexpr int CELL_SIZE = BOARD_SIZE / 3;
+constexpr int BOARD_X = 20;
+constexpr int BOARD_Y = 60;
+constexpr int FONT_SIZE = 100;
+
+/**
+ * @brief Constructs the TicTacToeWindow object and initializes the game.
+ * @param x X-coordinate of the window.
+ * @param y Y-coordinate of the window.
+ * @param width Width of the window.
+ * @param height Height of the window.
+ * @param title Title of the window.
+ */
+TicTacToeWindow::TicTacToeWindow(int x, int y, int width, int height, const std::string& title)
+    : AnimationWindow(x, y, width, height, title), current_player('X'), reset_button({RESET_BUTTON_X, RESET_BUTTON_Y}, BUTTON_WIDTH, BUTTON_HEIGHT, "Reset"), quit_button({QUIT_BUTTON_X, QUIT_BUTTON_Y}, BUTTON_WIDTH, BUTTON_HEIGHT, "Quit"), game_over(false) { 
+    reset_game();
+    add(reset_button);
+    add(quit_button);
+    reset_button.setCallback(std::bind(&TicTacToeWindow::cb_reset, this));
+    quit_button.setCallback(std::bind(&TicTacToeWindow::cb_quit, this));
+}
+
+/**
+ * @brief Starts the game loop.
+ */
+void TicTacToeWindow::play() {
+    while (!should_close()) {
+        if (is_left_mouse_button_down() && !game_over) {
+            auto [x, y] = get_mouse_coordinates();
+            if (x >= RESET_BUTTON_X && x <= RESET_BUTTON_X + BUTTON_WIDTH && y >= RESET_BUTTON_Y && y <= RESET_BUTTON_Y + BUTTON_HEIGHT) {
+                cb_reset();
+            } else if (x >= QUIT_BUTTON_X && x <= QUIT_BUTTON_X + BUTTON_WIDTH && y >= QUIT_BUTTON_Y && y <= QUIT_BUTTON_Y + BUTTON_HEIGHT) {
+                cb_quit();
+            } else {
+                try {
+                    handle_click(x, y);
+                } catch (const std::out_of_range& e) {
+                    std::cerr << "Error: " << e.what() << std::endl;
+                }
+            }
+        }
+
+        if (check_winner()) {
+            result_text = "Player " + std::string(1, last_player) + " wins!";
+            draw_winning_line();
+            if (!game_over) {
+                write_result_to_file(result_text);
+            }
+            game_over = true;
+        } else if (check_draw()) {
+            result_text = "The game is a draw!";
+            if (!game_over) {
+                write_result_to_file(result_text);
+            }
+            game_over = true;
+        }
+
+        draw_board();
+        draw_marks();
+        draw_text({RESULT_TEXT_X, RESULT_TEXT_Y}, result_text, TDT4102::Color::black, 30);
+
+        next_frame();
+    }
+}
+
+/**
+ * @brief Draws the Tic Tac Toe board grid.
+ */
+void TicTacToeWindow::draw_board() {
+    for (int i = 1; i < 3; ++i) {
+        draw_line({BOARD_X + i * CELL_SIZE, BOARD_Y}, {BOARD_X + i * CELL_SIZE, BOARD_Y + BOARD_SIZE}, TDT4102::Color::black);
+        draw_line({BOARD_X, BOARD_Y + i * CELL_SIZE}, {BOARD_X + BOARD_SIZE, BOARD_Y + i * CELL_SIZE}, TDT4102::Color::black);
+    }
+}
+
+/**
+ * @brief Draws the marks (X and O) on the board.
+ */
+void TicTacToeWindow::draw_marks() {
+    for (int row = 0; row < 3; ++row) {
+        for (int col = 0; col < 3; ++col) {
+            if (board[row][col] == 'X') {
+                draw_text({BOARD_X * 3 / 2 + col * CELL_SIZE + FONT_SIZE / 2, BOARD_Y + row * CELL_SIZE + FONT_SIZE / 2}, "X", TDT4102::Color::red, FONT_SIZE);
+            } else if (board[row][col] == 'O') {
+                draw_text({BOARD_X * 3 / 2 + col * CELL_SIZE + FONT_SIZE / 2, BOARD_Y + row * CELL_SIZE + FONT_SIZE / 2}, "O", TDT4102::Color::blue, FONT_SIZE);
+            }
+        }
+    }
+}
+
+/**
+ * @brief Draws the line indicating the winning combination on the board.
+ */
+void TicTacToeWindow::draw_winning_line() {
+    draw_line(winning_line.first, winning_line.second, TDT4102::Color::yellow);
+}
+
+/**
+ * @brief Handles mouse click events and updates the board with marks.
+ * @param x X-coordinate of the mouse click.
+ * @param y Y-coordinate of the mouse click.
+ * @throws std::out_of_range if the clicked position is outside the board.
+ */
+void TicTacToeWindow::handle_click(int x, int y) {
+    int row = (y - BOARD_Y) / CELL_SIZE;
+    int col = (x - BOARD_X) / CELL_SIZE;
+
+    if (row < 0 || row >= 3 || col < 0 || col >= 3) {
+        throw std::out_of_range("Invalid board position");
+    }
+
+    if (board[row][col] == ' ') {
+        board[row][col] = current_player;
+        last_player = current_player; 
+        current_player = (current_player == 'X') ? 'O' : 'X';
+    }
+}
+
+/**
+ * @brief Checks if there is a winner in the game.
+ * @return true if there is a winner, false otherwise.
+ */
+bool TicTacToeWindow::check_winner() {
+    // Check rows and columns
+    for (int i = 0; i < 3; ++i) {
+        if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ') {
+            winning_line = {{BOARD_X, BOARD_Y + i * CELL_SIZE + CELL_SIZE / 2}, {BOARD_X + BOARD_SIZE, BOARD_Y + i * CELL_SIZE + CELL_SIZE / 2}};
+            return true;
+        }
+        if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') {
+            winning_line = {{BOARD_X + i * CELL_SIZE + CELL_SIZE / 2, BOARD_Y}, {BOARD_X + i * CELL_SIZE + CELL_SIZE / 2, BOARD_Y + BOARD_SIZE}};
+            return true;
+        }
+    }
+
+    // Check diagonals
+    if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ') {
+        winning_line = {{BOARD_X, BOARD_Y}, {BOARD_X + BOARD_SIZE, BOARD_Y + BOARD_SIZE}};
+        return true;
+    }
+    if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != ' ') {
+        winning_line = {{BOARD_X + BOARD_SIZE, BOARD_Y}, {BOARD_X, BOARD_Y + BOARD_SIZE}};
+        return true;
+    }
+
+    return false;
+}
+
+/**
+ * @brief Checks if the game has ended in a draw.
+ * @return true if the game is a draw, false otherwise.
+ */
+bool TicTacToeWindow::check_draw() {
+    for (const auto& row : board) {
+        for (char cell : row) {
+            if (cell == ' ') {
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+/**
+ * @brief Resets the game to its initial state.
+ */
+void TicTacToeWindow::reset_game() {
+    std::cout << "Resetting game..." << std::endl; 
+    board = std::vector<std::vector<char>>(3, std::vector<char>(3, ' '));
+    current_player = 'X';
+    game_over = false;
+    result_text.clear();
+    std::cout << "Game reset complete." << std::endl;
+}
+
+/**
+ * @brief Writes the game result to a file.
+ * @param result The result string to write.
+ */
+void TicTacToeWindow::write_result_to_file(const std::string& result) {
+    try {
+        std::ofstream file("game_results.txt", std::ios::app);
+        if (!file) {
+            throw std::ios_base::failure("Failed to open file");
+        }
+        file << result << std::endl;
+    } catch (const std::ios_base::failure& e) {
+        show_error_dialog("Error writing to file: " + std::string(e.what()));
+    }
+}
+
+/**
+ * @brief Callback function for the reset button.
+ */
+void TicTacToeWindow::cb_reset() {
+    std::cout << "Reset button pressed." << std::endl;
+    reset_game();
+}
+
+/**
+ * @brief Callback function for the quit button.
+ */
+void TicTacToeWindow::cb_quit() {
+    std::cout << "Quit button pressed." << std::endl; 
+    close();
+}
diff --git a/templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.h b/templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.h
new file mode 100644
index 0000000..8c2e092
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/TicTacToeWindow.h
@@ -0,0 +1,106 @@
+/**
+ * @file TicTacToeWindow.h
+ * @brief Defines the TicTacToeWindow class for handling game logic and UI.
+ * 
+ * @details This file uses the following libraries and resources:
+ * - AnimationWindow from TDT4102
+ * - Button widget from TDT4102
+ * - Standard C++ libraries: vector, fstream, stdexcept
+ */
+
+#pragma once
+
+#include "AnimationWindow.h"
+#include "widgets/Button.h"
+#include <vector>
+#include <fstream>
+#include <stdexcept>
+
+using namespace TDT4102;
+
+/**
+ * @class TicTacToeWindow
+ * @brief Handles the Tic Tac Toe game logic and user interface.
+ */
+class TicTacToeWindow : public TDT4102::AnimationWindow {
+public:
+    /**
+     * @brief Constructs a TicTacToeWindow object.
+     * @param x X-coordinate of the window.
+     * @param y Y-coordinate of the window.
+     * @param width Width of the window.
+     * @param height Height of the window.
+     * @param title Title of the window.
+     */
+    TicTacToeWindow(int x, int y, int width, int height, const std::string& title);
+
+    /**
+     * @brief Starts the game loop.
+     */
+    void play();
+
+private:
+    /**
+     * @brief Draws the Tic Tac Toe board.
+     */
+    void draw_board();
+
+    /**
+     * @brief Draws the marks (X and O) on the board.
+     */
+    void draw_marks();
+
+    /**
+     * @brief Draws a line to indicate the winning combination.
+     */
+    void draw_winning_line();
+
+    /**
+     * @brief Handles mouse click events to place marks.
+     * @param x X-coordinate of the click.
+     * @param y Y-coordinate of the click.
+     */
+    void handle_click(int x, int y);
+
+    /**
+     * @brief Checks if there is a winner.
+     * @return true if a player has won, false otherwise.
+     */
+    bool check_winner();
+
+    /**
+     * @brief Checks if the game is a draw.
+     * @return true if the game is a draw, false otherwise.
+     */
+    bool check_draw();
+
+    /**
+     * @brief Resets the game to its initial state.
+     */
+    void reset_game();
+
+    /**
+     * @brief Writes the game result to a file.
+     * @param result The result string to write.
+     */
+    void write_result_to_file(const std::string& result);
+
+    /**
+     * @brief Callback function for the reset button.
+     */
+    void cb_reset();
+
+    /**
+     * @brief Callback function for the quit button.
+     */
+    void cb_quit();
+
+    std::vector<std::vector<char>> board; ///< 3x3 board representation.
+    char current_player;  ///< Current player ('X' or 'O').
+    char last_player;     ///< Last player to have made a move.
+    Button reset_button;  ///< Button to reset the game.
+    Button quit_button;   ///< Button to quit the game.
+    bool game_over;       ///< Flag indicating if the game is over.
+    std::string result_text; ///< Text indicating the winner.
+    std::pair<Point, Point> winning_line; ///< Coordinates for the winning line.
+};
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.html b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.html
new file mode 100644
index 0000000..505c1d9
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.html
@@ -0,0 +1,448 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: TicTacToeWindow.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_tic_tac_toe_window_8cpp.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle"><div class="title">TicTacToeWindow.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Contains the implementation of the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> class.  
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="_tic_tac_toe_window_8h_source.html">TicTacToeWindow.h</a>&quot;</code><br />
+<code>#include &lt;iostream&gt;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a5abca8d83548cc8db6c91b204fc0fc3e" id="r_a5abca8d83548cc8db6c91b204fc0fc3e"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5abca8d83548cc8db6c91b204fc0fc3e">BUTTON_WIDTH</a> = 100</td></tr>
+<tr class="separator:a5abca8d83548cc8db6c91b204fc0fc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b3ba52cbf88acec5e16bc4637e77007" id="r_a3b3ba52cbf88acec5e16bc4637e77007"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3b3ba52cbf88acec5e16bc4637e77007">BUTTON_HEIGHT</a> = 30</td></tr>
+<tr class="separator:a3b3ba52cbf88acec5e16bc4637e77007"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a46907144aa852e2450a4784f7bd67702" id="r_a46907144aa852e2450a4784f7bd67702"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a46907144aa852e2450a4784f7bd67702">RESET_BUTTON_X</a> = 10</td></tr>
+<tr class="separator:a46907144aa852e2450a4784f7bd67702"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65f9c1ca2be2ebd241cba5b02ae39514" id="r_a65f9c1ca2be2ebd241cba5b02ae39514"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a65f9c1ca2be2ebd241cba5b02ae39514">RESET_BUTTON_Y</a> = 10</td></tr>
+<tr class="separator:a65f9c1ca2be2ebd241cba5b02ae39514"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a907d240438ef5a233d89f060d2ab7ce6" id="r_a907d240438ef5a233d89f060d2ab7ce6"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a907d240438ef5a233d89f060d2ab7ce6">QUIT_BUTTON_X</a> = 120</td></tr>
+<tr class="separator:a907d240438ef5a233d89f060d2ab7ce6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7c67ea62ace270bfbc30fa241530f5f9" id="r_a7c67ea62ace270bfbc30fa241530f5f9"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7c67ea62ace270bfbc30fa241530f5f9">QUIT_BUTTON_Y</a> = 10</td></tr>
+<tr class="separator:a7c67ea62ace270bfbc30fa241530f5f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae32dfc3a976f735ff01c1757ba107610" id="r_ae32dfc3a976f735ff01c1757ba107610"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae32dfc3a976f735ff01c1757ba107610">RESULT_TEXT_X</a> = 240</td></tr>
+<tr class="separator:ae32dfc3a976f735ff01c1757ba107610"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba7c1f86d23ea3fad3d8099789a51311" id="r_aba7c1f86d23ea3fad3d8099789a51311"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aba7c1f86d23ea3fad3d8099789a51311">RESULT_TEXT_Y</a> = 10</td></tr>
+<tr class="separator:aba7c1f86d23ea3fad3d8099789a51311"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad61312467c560853b884baba85ccb6cc" id="r_ad61312467c560853b884baba85ccb6cc"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad61312467c560853b884baba85ccb6cc">BOARD_SIZE</a> = 600</td></tr>
+<tr class="separator:ad61312467c560853b884baba85ccb6cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb719a6797676ba986f056e63fa45a25" id="r_afb719a6797676ba986f056e63fa45a25"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afb719a6797676ba986f056e63fa45a25">CELL_SIZE</a> = <a class="el" href="#ad61312467c560853b884baba85ccb6cc">BOARD_SIZE</a> / 3</td></tr>
+<tr class="separator:afb719a6797676ba986f056e63fa45a25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a734171bf86d25d8fea97ec3db770f339" id="r_a734171bf86d25d8fea97ec3db770f339"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a734171bf86d25d8fea97ec3db770f339">BOARD_X</a> = 20</td></tr>
+<tr class="separator:a734171bf86d25d8fea97ec3db770f339"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a25c54899aa5eb9067fa355bd0fd2f0" id="r_a7a25c54899aa5eb9067fa355bd0fd2f0"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7a25c54899aa5eb9067fa355bd0fd2f0">BOARD_Y</a> = 60</td></tr>
+<tr class="separator:a7a25c54899aa5eb9067fa355bd0fd2f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36f8b4b0227f9dac9b5018b20c9a1f51" id="r_a36f8b4b0227f9dac9b5018b20c9a1f51"><td class="memItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a36f8b4b0227f9dac9b5018b20c9a1f51">FONT_SIZE</a> = 100</td></tr>
+<tr class="separator:a36f8b4b0227f9dac9b5018b20c9a1f51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Contains the implementation of the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> class. </p>
+<p>This file uses the following libraries and resources:</p><ul>
+<li><a class="el" href="_tic_tac_toe_window_8h.html" title="Defines the TicTacToeWindow class for handling game logic and UI.">TicTacToeWindow.h</a> for class definition</li>
+<li>iostream for standard input/output operations </li>
+</ul>
+</div><h2 class="groupheader">Variable Documentation</h2>
+<a id="ad61312467c560853b884baba85ccb6cc" name="ad61312467c560853b884baba85ccb6cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad61312467c560853b884baba85ccb6cc">&#9670;&#160;</a></span>BOARD_SIZE</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int BOARD_SIZE = 600</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a734171bf86d25d8fea97ec3db770f339" name="a734171bf86d25d8fea97ec3db770f339"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a734171bf86d25d8fea97ec3db770f339">&#9670;&#160;</a></span>BOARD_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int BOARD_X = 20</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a7a25c54899aa5eb9067fa355bd0fd2f0" name="a7a25c54899aa5eb9067fa355bd0fd2f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a25c54899aa5eb9067fa355bd0fd2f0">&#9670;&#160;</a></span>BOARD_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int BOARD_Y = 60</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3b3ba52cbf88acec5e16bc4637e77007" name="a3b3ba52cbf88acec5e16bc4637e77007"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b3ba52cbf88acec5e16bc4637e77007">&#9670;&#160;</a></span>BUTTON_HEIGHT</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int BUTTON_HEIGHT = 30</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a5abca8d83548cc8db6c91b204fc0fc3e" name="a5abca8d83548cc8db6c91b204fc0fc3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5abca8d83548cc8db6c91b204fc0fc3e">&#9670;&#160;</a></span>BUTTON_WIDTH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int BUTTON_WIDTH = 100</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afb719a6797676ba986f056e63fa45a25" name="afb719a6797676ba986f056e63fa45a25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb719a6797676ba986f056e63fa45a25">&#9670;&#160;</a></span>CELL_SIZE</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int CELL_SIZE = <a class="el" href="#ad61312467c560853b884baba85ccb6cc">BOARD_SIZE</a> / 3</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a36f8b4b0227f9dac9b5018b20c9a1f51" name="a36f8b4b0227f9dac9b5018b20c9a1f51"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a36f8b4b0227f9dac9b5018b20c9a1f51">&#9670;&#160;</a></span>FONT_SIZE</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int FONT_SIZE = 100</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a907d240438ef5a233d89f060d2ab7ce6" name="a907d240438ef5a233d89f060d2ab7ce6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a907d240438ef5a233d89f060d2ab7ce6">&#9670;&#160;</a></span>QUIT_BUTTON_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int QUIT_BUTTON_X = 120</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a7c67ea62ace270bfbc30fa241530f5f9" name="a7c67ea62ace270bfbc30fa241530f5f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7c67ea62ace270bfbc30fa241530f5f9">&#9670;&#160;</a></span>QUIT_BUTTON_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int QUIT_BUTTON_Y = 10</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a46907144aa852e2450a4784f7bd67702" name="a46907144aa852e2450a4784f7bd67702"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46907144aa852e2450a4784f7bd67702">&#9670;&#160;</a></span>RESET_BUTTON_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int RESET_BUTTON_X = 10</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a65f9c1ca2be2ebd241cba5b02ae39514" name="a65f9c1ca2be2ebd241cba5b02ae39514"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65f9c1ca2be2ebd241cba5b02ae39514">&#9670;&#160;</a></span>RESET_BUTTON_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int RESET_BUTTON_Y = 10</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae32dfc3a976f735ff01c1757ba107610" name="ae32dfc3a976f735ff01c1757ba107610"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae32dfc3a976f735ff01c1757ba107610">&#9670;&#160;</a></span>RESULT_TEXT_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int RESULT_TEXT_X = 240</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aba7c1f86d23ea3fad3d8099789a51311" name="aba7c1f86d23ea3fad3d8099789a51311"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aba7c1f86d23ea3fad3d8099789a51311">&#9670;&#160;</a></span>RESULT_TEXT_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int RESULT_TEXT_Y = 10</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="_tic_tac_toe_window_8cpp.html">TicTacToeWindow.cpp</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.js b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.js
new file mode 100644
index 0000000..2a6ec32
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8cpp.js
@@ -0,0 +1,16 @@
+var _tic_tac_toe_window_8cpp =
+[
+    [ "BOARD_SIZE", "_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc", null ],
+    [ "BOARD_X", "_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339", null ],
+    [ "BOARD_Y", "_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0", null ],
+    [ "BUTTON_HEIGHT", "_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007", null ],
+    [ "BUTTON_WIDTH", "_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e", null ],
+    [ "CELL_SIZE", "_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25", null ],
+    [ "FONT_SIZE", "_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51", null ],
+    [ "QUIT_BUTTON_X", "_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6", null ],
+    [ "QUIT_BUTTON_Y", "_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9", null ],
+    [ "RESET_BUTTON_X", "_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702", null ],
+    [ "RESET_BUTTON_Y", "_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514", null ],
+    [ "RESULT_TEXT_X", "_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610", null ],
+    [ "RESULT_TEXT_Y", "_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311", null ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.html b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.html
new file mode 100644
index 0000000..26ac491
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: TicTacToeWindow.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_tic_tac_toe_window_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">TicTacToeWindow.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Defines the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> class for handling game logic and UI.  
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;AnimationWindow.h&quot;</code><br />
+<code>#include &quot;widgets/Button.h&quot;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+<code>#include &lt;fstream&gt;</code><br />
+<code>#include &lt;stdexcept&gt;</code><br />
+</div>
+<p><a href="_tic_tac_toe_window_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the Tic Tac Toe game logic and user interface.  <a href="class_tic_tac_toe_window.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Defines the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> class for handling game logic and UI. </p>
+<p>This file uses the following libraries and resources:</p><ul>
+<li>AnimationWindow from TDT4102</li>
+<li>Button widget from TDT4102</li>
+<li>Standard C++ libraries: vector, fstream, stdexcept </li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="_tic_tac_toe_window_8h.html">TicTacToeWindow.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.js b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.js
new file mode 100644
index 0000000..5dfe35c
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h.js
@@ -0,0 +1,4 @@
+var _tic_tac_toe_window_8h =
+[
+    [ "TicTacToeWindow", "class_tic_tac_toe_window.html", "class_tic_tac_toe_window" ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h_source.html b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h_source.html
new file mode 100644
index 0000000..4c51852
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/_tic_tac_toe_window_8h_source.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: TicTacToeWindow.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_tic_tac_toe_window_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">TicTacToeWindow.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_tic_tac_toe_window_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &quot;AnimationWindow.h&quot;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">#include &quot;widgets/Button.h&quot;</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="preprocessor">#include &lt;fstream&gt;</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="preprocessor">#include &lt;stdexcept&gt;</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">using namespace </span>TDT4102;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span></div>
+<div class="foldopen" id="foldopen00025" data-start="{" data-end="};">
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html">   25</a></span><span class="keyword">class </span><a class="code hl_function" href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow</a> : <span class="keyword">public</span> TDT4102::AnimationWindow {</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>    <a class="code hl_function" href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> std::string&amp; title);</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8">play</a>();</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870">draw_board</a>();</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f">draw_marks</a>();</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c">draw_winning_line</a>();</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0">handle_click</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>    <span class="keywordtype">bool</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4">check_winner</a>();</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span></div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="keywordtype">bool</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a">check_draw</a>();</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span></div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d">reset_game</a>();</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e">write_result_to_file</a>(<span class="keyword">const</span> std::string&amp; result);</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4">cb_reset</a>();</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span></div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205">cb_quit</a>();</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec">   98</a></span>    std::vector&lt;std::vector&lt;char&gt;&gt; <a class="code hl_variable" href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec">board</a>; </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801">   99</a></span>    <span class="keywordtype">char</span> <a class="code hl_variable" href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801">current_player</a>;  </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b">  100</a></span>    <span class="keywordtype">char</span> <a class="code hl_variable" href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b">last_player</a>;     </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644">  101</a></span>    Button <a class="code hl_variable" href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644">reset_button</a>;  </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40">  102</a></span>    Button <a class="code hl_variable" href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40">quit_button</a>;   </div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48">  103</a></span>    <span class="keywordtype">bool</span> <a class="code hl_variable" href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48">game_over</a>;       </div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925">  104</a></span>    std::string <a class="code hl_variable" href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925">result_text</a>; </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e">  105</a></span>    std::pair&lt;Point, Point&gt; <a class="code hl_variable" href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e">winning_line</a>; </div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>};</div>
+</div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a02a67ddb17bb56a4e34ce07b75d4c4c8"><div class="ttname"><a href="class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8">TicTacToeWindow::play</a></div><div class="ttdeci">void play()</div><div class="ttdoc">Starts the game loop.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:48</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a0fde7a5bc88317c24139a2a997f49b0e"><div class="ttname"><a href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e">TicTacToeWindow::winning_line</a></div><div class="ttdeci">std::pair&lt; Point, Point &gt; winning_line</div><div class="ttdoc">Coordinates for the winning line.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:105</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a256a8423cb3c6e7b6e3ca6251866867d"><div class="ttname"><a href="class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d">TicTacToeWindow::reset_game</a></div><div class="ttdeci">void reset_game()</div><div class="ttdoc">Resets the game to its initial state.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:189</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a2fa1df2b5d6d7f69eef48cd28d588562"><div class="ttname"><a href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow::TicTacToeWindow</a></div><div class="ttdeci">TicTacToeWindow(int x, int y, int width, int height, const std::string &amp;title)</div><div class="ttdoc">Constructs a TicTacToeWindow object.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:36</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a3ecf87bb2c63d9173859ffc791dba65a"><div class="ttname"><a href="class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a">TicTacToeWindow::check_draw</a></div><div class="ttdeci">bool check_draw()</div><div class="ttdoc">Checks if the game is a draw.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:175</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a43bc194a5b454fdd4e586b29862ead48"><div class="ttname"><a href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48">TicTacToeWindow::game_over</a></div><div class="ttdeci">bool game_over</div><div class="ttdoc">Flag indicating if the game is over.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:103</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a721a06d7b66e4891e1c4e4714828e9e4"><div class="ttname"><a href="class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4">TicTacToeWindow::cb_reset</a></div><div class="ttdeci">void cb_reset()</div><div class="ttdoc">Callback function for the reset button.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:217</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a7e59cd0a04b03284ce8a95ae104a40a0"><div class="ttname"><a href="class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0">TicTacToeWindow::handle_click</a></div><div class="ttdeci">void handle_click(int x, int y)</div><div class="ttdoc">Handles mouse click events to place marks.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:126</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a80d700fab549c892da6454ddf134e73f"><div class="ttname"><a href="class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f">TicTacToeWindow::draw_marks</a></div><div class="ttdeci">void draw_marks()</div><div class="ttdoc">Draws the marks (X and O) on the board.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:101</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a87e9e26b5d34f5bd3cadee4e2778df3e"><div class="ttname"><a href="class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e">TicTacToeWindow::write_result_to_file</a></div><div class="ttdeci">void write_result_to_file(const std::string &amp;result)</div><div class="ttdoc">Writes the game result to a file.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:202</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_a98f8a4942b7eb70471c720297c492925"><div class="ttname"><a href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925">TicTacToeWindow::result_text</a></div><div class="ttdeci">std::string result_text</div><div class="ttdoc">Text indicating the winner.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:104</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_aa984f2d95bc444451acfb242a0cd3644"><div class="ttname"><a href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644">TicTacToeWindow::reset_button</a></div><div class="ttdeci">Button reset_button</div><div class="ttdoc">Button to reset the game.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:101</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_ac5767923f6cfdd1cdc0e38646817c0ec"><div class="ttname"><a href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec">TicTacToeWindow::board</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; char &gt; &gt; board</div><div class="ttdoc">3x3 board representation.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:98</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_ac85e0fda6ce6f20bfad83a38cf7d6b40"><div class="ttname"><a href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40">TicTacToeWindow::quit_button</a></div><div class="ttdeci">Button quit_button</div><div class="ttdoc">Button to quit the game.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:102</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_ad6b36f228408151798ccf6f93ae6bb9c"><div class="ttname"><a href="class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c">TicTacToeWindow::draw_winning_line</a></div><div class="ttdeci">void draw_winning_line()</div><div class="ttdoc">Draws a line to indicate the winning combination.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:116</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_ae1d2eddf2ec46d88ec2850088bf83801"><div class="ttname"><a href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801">TicTacToeWindow::current_player</a></div><div class="ttdeci">char current_player</div><div class="ttdoc">Current player (&#39;X&#39; or &#39;O&#39;).</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:99</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_aea9364e6964b4d713db301e1dca05870"><div class="ttname"><a href="class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870">TicTacToeWindow::draw_board</a></div><div class="ttdeci">void draw_board()</div><div class="ttdoc">Draws the Tic Tac Toe board.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:91</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_af06d97a6bc5af57d20496efef4b42205"><div class="ttname"><a href="class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205">TicTacToeWindow::cb_quit</a></div><div class="ttdeci">void cb_quit()</div><div class="ttdoc">Callback function for the quit button.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:225</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_af31e8259796b4c713695f76a2e9ebbb4"><div class="ttname"><a href="class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4">TicTacToeWindow::check_winner</a></div><div class="ttdeci">bool check_winner()</div><div class="ttdoc">Checks if there is a winner.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.cpp:145</div></div>
+<div class="ttc" id="aclass_tic_tac_toe_window_html_afacdc2b25347aec3b74b3a0a89cf121b"><div class="ttname"><a href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b">TicTacToeWindow::last_player</a></div><div class="ttdeci">char last_player</div><div class="ttdoc">Last player to have made a move.</div><div class="ttdef"><b>Definition</b> TicTacToeWindow.h:100</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="_tic_tac_toe_window_8h.html">TicTacToeWindow.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/annotated.html b/templates/_folder_Projects/tic-tac-toe/docs/html/annotated.html
new file mode 100644
index 0000000..35de5ae
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/annotated.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Class List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('annotated.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class List</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_tic_tac_toe_window.html" target="_self">TicTacToeWindow</a></td><td class="desc">Handles the Tic Tac Toe game logic and user interface </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/annotated_dup.js b/templates/_folder_Projects/tic-tac-toe/docs/html/annotated_dup.js
new file mode 100644
index 0000000..ae5296c
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/annotated_dup.js
@@ -0,0 +1,4 @@
+var annotated_dup =
+[
+    [ "TicTacToeWindow", "class_tic_tac_toe_window.html", "class_tic_tac_toe_window" ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/bc_s.png b/templates/_folder_Projects/tic-tac-toe/docs/html/bc_s.png
new file mode 100644
index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2
GIT binary patch
literal 676
zcmV;V0$crwP)<h;3K|Lk000e1NJLTq000O80015c1^@s65rAI}0007ONkl<ZcmeI5
z%WD%+6voe;xyj6=NhXt~4{e$zF*P<SZp4L@2Hd!iQY<tJD@e5{RU55hl&Talf{KWb
zN*6A=C`Gqz5#NvcXzNOCOH(I9n<#?l<k5ws2omoMCgj%s3y1G=&gJ~>y__>=_9%My
z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s
z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK
ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS
zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3
zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U
zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o%
zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2
zBrW#G7Ss9wvzr@>H*`r>zE<Gz)cj&*s5lRy$b&*W@2j<GZEpXZ$P|Z!4Q$_|`5gj>
z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66
zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000<
KMNUMnLSTYoA~SLT

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/bc_sd.png b/templates/_folder_Projects/tic-tac-toe/docs/html/bc_sd.png
new file mode 100644
index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1
GIT binary patch
literal 635
zcmV->0)+jEP)<h;3K|Lk000e1NJLTq000O80015c1^@s65rAI}0006)Nkl<ZcmeI5
z%WD%+6vn?hGsz_BG}An0CMId~a1z?2@1!l&KD1&hN-bD~LQoLFg%1h=btAfQrT8}#
z3Wb7hbmdl%7_p+bkU-OdEt;+haU+O==ZX_E^FIvdH|INN4tMUkkG+_kSV4Z~DiQ-{
z;P(0visfy<EG{=E&fjlNuRPJr;xe4DqlF9WF1aJGbq{R<c>Jwi0r1~gdSq#w{Bu1q
z`craw(p2!<S-^e8ry2oOOW$qO-@LFDq=px{zr>hu$4C_$Oc3X(sI6e=9QSTwPt{G)
z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd<Pyf6{jQBpfP;O2vJy5MYx^t)6*`&7L
zk1yW4Y2_GywLP=M2DSV{5Z#%B-6~kD_XGf&edtglet$T5qp?$c$)cGl05-eEMCrPb
z82v&mFR>%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa
zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ
zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW
zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ
zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{
Vj14gnt9}3g002ovPDHLkV1n!oC4m3{

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window-members.html b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window-members.html
new file mode 100644
index 0000000..357f22e
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window-members.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('class_tic_tac_toe_window.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">TicTacToeWindow Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec">board</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205">cb_quit</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4">cb_reset</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a">check_draw</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4">check_winner</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801">current_player</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870">draw_board</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f">draw_marks</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c">draw_winning_line</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48">game_over</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0">handle_click</a>(int x, int y)</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b">last_player</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8">play</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40">quit_button</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644">reset_button</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d">reset_game</a>()</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925">result_text</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow</a>(int x, int y, int width, int height, const std::string &amp;title)</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e">winning_line</a></td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e">write_result_to_file</a>(const std::string &amp;result)</td><td class="entry"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.html b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.html
new file mode 100644
index 0000000..207ef00
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.html
@@ -0,0 +1,777 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: TicTacToeWindow Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('class_tic_tac_toe_window.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pri-methods">Private Member Functions</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="class_tic_tac_toe_window-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">TicTacToeWindow Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Handles the Tic Tac Toe game logic and user interface.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_tic_tac_toe_window_8h_source.html">TicTacToeWindow.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for TicTacToeWindow:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="class_tic_tac_toe_window.png" alt=""/>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a2fa1df2b5d6d7f69eef48cd28d588562" id="r_a2fa1df2b5d6d7f69eef48cd28d588562"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow</a> (int x, int y, int width, int height, const std::string &amp;title)</td></tr>
+<tr class="memdesc:a2fa1df2b5d6d7f69eef48cd28d588562"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> object.  <br /></td></tr>
+<tr class="separator:a2fa1df2b5d6d7f69eef48cd28d588562"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02a67ddb17bb56a4e34ce07b75d4c4c8" id="r_a02a67ddb17bb56a4e34ce07b75d4c4c8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a02a67ddb17bb56a4e34ce07b75d4c4c8">play</a> ()</td></tr>
+<tr class="memdesc:a02a67ddb17bb56a4e34ce07b75d4c4c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the game loop.  <br /></td></tr>
+<tr class="separator:a02a67ddb17bb56a4e34ce07b75d4c4c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
+Private Member Functions</h2></td></tr>
+<tr class="memitem:aea9364e6964b4d713db301e1dca05870" id="r_aea9364e6964b4d713db301e1dca05870"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aea9364e6964b4d713db301e1dca05870">draw_board</a> ()</td></tr>
+<tr class="memdesc:aea9364e6964b4d713db301e1dca05870"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the Tic Tac Toe board.  <br /></td></tr>
+<tr class="separator:aea9364e6964b4d713db301e1dca05870"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a80d700fab549c892da6454ddf134e73f" id="r_a80d700fab549c892da6454ddf134e73f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a80d700fab549c892da6454ddf134e73f">draw_marks</a> ()</td></tr>
+<tr class="memdesc:a80d700fab549c892da6454ddf134e73f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the marks (X and O) on the board.  <br /></td></tr>
+<tr class="separator:a80d700fab549c892da6454ddf134e73f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6b36f228408151798ccf6f93ae6bb9c" id="r_ad6b36f228408151798ccf6f93ae6bb9c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad6b36f228408151798ccf6f93ae6bb9c">draw_winning_line</a> ()</td></tr>
+<tr class="memdesc:ad6b36f228408151798ccf6f93ae6bb9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a line to indicate the winning combination.  <br /></td></tr>
+<tr class="separator:ad6b36f228408151798ccf6f93ae6bb9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e59cd0a04b03284ce8a95ae104a40a0" id="r_a7e59cd0a04b03284ce8a95ae104a40a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7e59cd0a04b03284ce8a95ae104a40a0">handle_click</a> (int x, int y)</td></tr>
+<tr class="memdesc:a7e59cd0a04b03284ce8a95ae104a40a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles mouse click events to place marks.  <br /></td></tr>
+<tr class="separator:a7e59cd0a04b03284ce8a95ae104a40a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af31e8259796b4c713695f76a2e9ebbb4" id="r_af31e8259796b4c713695f76a2e9ebbb4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af31e8259796b4c713695f76a2e9ebbb4">check_winner</a> ()</td></tr>
+<tr class="memdesc:af31e8259796b4c713695f76a2e9ebbb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if there is a winner.  <br /></td></tr>
+<tr class="separator:af31e8259796b4c713695f76a2e9ebbb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ecf87bb2c63d9173859ffc791dba65a" id="r_a3ecf87bb2c63d9173859ffc791dba65a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3ecf87bb2c63d9173859ffc791dba65a">check_draw</a> ()</td></tr>
+<tr class="memdesc:a3ecf87bb2c63d9173859ffc791dba65a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the game is a draw.  <br /></td></tr>
+<tr class="separator:a3ecf87bb2c63d9173859ffc791dba65a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a256a8423cb3c6e7b6e3ca6251866867d" id="r_a256a8423cb3c6e7b6e3ca6251866867d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a256a8423cb3c6e7b6e3ca6251866867d">reset_game</a> ()</td></tr>
+<tr class="memdesc:a256a8423cb3c6e7b6e3ca6251866867d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the game to its initial state.  <br /></td></tr>
+<tr class="separator:a256a8423cb3c6e7b6e3ca6251866867d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87e9e26b5d34f5bd3cadee4e2778df3e" id="r_a87e9e26b5d34f5bd3cadee4e2778df3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a87e9e26b5d34f5bd3cadee4e2778df3e">write_result_to_file</a> (const std::string &amp;result)</td></tr>
+<tr class="memdesc:a87e9e26b5d34f5bd3cadee4e2778df3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes the game result to a file.  <br /></td></tr>
+<tr class="separator:a87e9e26b5d34f5bd3cadee4e2778df3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a721a06d7b66e4891e1c4e4714828e9e4" id="r_a721a06d7b66e4891e1c4e4714828e9e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a721a06d7b66e4891e1c4e4714828e9e4">cb_reset</a> ()</td></tr>
+<tr class="memdesc:a721a06d7b66e4891e1c4e4714828e9e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function for the reset button.  <br /></td></tr>
+<tr class="separator:a721a06d7b66e4891e1c4e4714828e9e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af06d97a6bc5af57d20496efef4b42205" id="r_af06d97a6bc5af57d20496efef4b42205"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af06d97a6bc5af57d20496efef4b42205">cb_quit</a> ()</td></tr>
+<tr class="memdesc:af06d97a6bc5af57d20496efef4b42205"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function for the quit button.  <br /></td></tr>
+<tr class="separator:af06d97a6bc5af57d20496efef4b42205"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:ac5767923f6cfdd1cdc0e38646817c0ec" id="r_ac5767923f6cfdd1cdc0e38646817c0ec"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::vector&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac5767923f6cfdd1cdc0e38646817c0ec">board</a></td></tr>
+<tr class="memdesc:ac5767923f6cfdd1cdc0e38646817c0ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">3x3 board representation.  <br /></td></tr>
+<tr class="separator:ac5767923f6cfdd1cdc0e38646817c0ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae1d2eddf2ec46d88ec2850088bf83801" id="r_ae1d2eddf2ec46d88ec2850088bf83801"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae1d2eddf2ec46d88ec2850088bf83801">current_player</a></td></tr>
+<tr class="memdesc:ae1d2eddf2ec46d88ec2850088bf83801"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current player ('X' or 'O').  <br /></td></tr>
+<tr class="separator:ae1d2eddf2ec46d88ec2850088bf83801"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afacdc2b25347aec3b74b3a0a89cf121b" id="r_afacdc2b25347aec3b74b3a0a89cf121b"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afacdc2b25347aec3b74b3a0a89cf121b">last_player</a></td></tr>
+<tr class="memdesc:afacdc2b25347aec3b74b3a0a89cf121b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Last player to have made a move.  <br /></td></tr>
+<tr class="separator:afacdc2b25347aec3b74b3a0a89cf121b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa984f2d95bc444451acfb242a0cd3644" id="r_aa984f2d95bc444451acfb242a0cd3644"><td class="memItemLeft" align="right" valign="top">Button&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa984f2d95bc444451acfb242a0cd3644">reset_button</a></td></tr>
+<tr class="memdesc:aa984f2d95bc444451acfb242a0cd3644"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button to reset the game.  <br /></td></tr>
+<tr class="separator:aa984f2d95bc444451acfb242a0cd3644"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac85e0fda6ce6f20bfad83a38cf7d6b40" id="r_ac85e0fda6ce6f20bfad83a38cf7d6b40"><td class="memItemLeft" align="right" valign="top">Button&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac85e0fda6ce6f20bfad83a38cf7d6b40">quit_button</a></td></tr>
+<tr class="memdesc:ac85e0fda6ce6f20bfad83a38cf7d6b40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Button to quit the game.  <br /></td></tr>
+<tr class="separator:ac85e0fda6ce6f20bfad83a38cf7d6b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43bc194a5b454fdd4e586b29862ead48" id="r_a43bc194a5b454fdd4e586b29862ead48"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a43bc194a5b454fdd4e586b29862ead48">game_over</a></td></tr>
+<tr class="memdesc:a43bc194a5b454fdd4e586b29862ead48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag indicating if the game is over.  <br /></td></tr>
+<tr class="separator:a43bc194a5b454fdd4e586b29862ead48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98f8a4942b7eb70471c720297c492925" id="r_a98f8a4942b7eb70471c720297c492925"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a98f8a4942b7eb70471c720297c492925">result_text</a></td></tr>
+<tr class="memdesc:a98f8a4942b7eb70471c720297c492925"><td class="mdescLeft">&#160;</td><td class="mdescRight">Text indicating the winner.  <br /></td></tr>
+<tr class="separator:a98f8a4942b7eb70471c720297c492925"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0fde7a5bc88317c24139a2a997f49b0e" id="r_a0fde7a5bc88317c24139a2a997f49b0e"><td class="memItemLeft" align="right" valign="top">std::pair&lt; Point, Point &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0fde7a5bc88317c24139a2a997f49b0e">winning_line</a></td></tr>
+<tr class="memdesc:a0fde7a5bc88317c24139a2a997f49b0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coordinates for the winning line.  <br /></td></tr>
+<tr class="separator:a0fde7a5bc88317c24139a2a997f49b0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Handles the Tic Tac Toe game logic and user interface. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a2fa1df2b5d6d7f69eef48cd28d588562" name="a2fa1df2b5d6d7f69eef48cd28d588562"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2fa1df2b5d6d7f69eef48cd28d588562">&#9670;&#160;</a></span>TicTacToeWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">TicTacToeWindow::TicTacToeWindow </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>x</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>y</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>width</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>height</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const std::string &amp;</td>          <td class="paramname"><span class="paramname"><em>title</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> object. </p>
+<p>Constructs the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> object and initializes the game.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>X-coordinate of the window. </td></tr>
+    <tr><td class="paramname">y</td><td>Y-coordinate of the window. </td></tr>
+    <tr><td class="paramname">width</td><td>Width of the window. </td></tr>
+    <tr><td class="paramname">height</td><td>Height of the window. </td></tr>
+    <tr><td class="paramname">title</td><td>Title of the window. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="af06d97a6bc5af57d20496efef4b42205" name="af06d97a6bc5af57d20496efef4b42205"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af06d97a6bc5af57d20496efef4b42205">&#9670;&#160;</a></span>cb_quit()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::cb_quit </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Callback function for the quit button. </p>
+
+</div>
+</div>
+<a id="a721a06d7b66e4891e1c4e4714828e9e4" name="a721a06d7b66e4891e1c4e4714828e9e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a721a06d7b66e4891e1c4e4714828e9e4">&#9670;&#160;</a></span>cb_reset()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::cb_reset </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Callback function for the reset button. </p>
+
+</div>
+</div>
+<a id="a3ecf87bb2c63d9173859ffc791dba65a" name="a3ecf87bb2c63d9173859ffc791dba65a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ecf87bb2c63d9173859ffc791dba65a">&#9670;&#160;</a></span>check_draw()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool TicTacToeWindow::check_draw </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Checks if the game is a draw. </p>
+<p>Checks if the game has ended in a draw.</p>
+<dl class="section return"><dt>Returns</dt><dd>true if the game is a draw, false otherwise. </dd></dl>
+
+</div>
+</div>
+<a id="af31e8259796b4c713695f76a2e9ebbb4" name="af31e8259796b4c713695f76a2e9ebbb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af31e8259796b4c713695f76a2e9ebbb4">&#9670;&#160;</a></span>check_winner()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool TicTacToeWindow::check_winner </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Checks if there is a winner. </p>
+<p>Checks if there is a winner in the game.</p>
+<dl class="section return"><dt>Returns</dt><dd>true if a player has won, false otherwise.</dd>
+<dd>
+true if there is a winner, false otherwise. </dd></dl>
+
+</div>
+</div>
+<a id="aea9364e6964b4d713db301e1dca05870" name="aea9364e6964b4d713db301e1dca05870"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea9364e6964b4d713db301e1dca05870">&#9670;&#160;</a></span>draw_board()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::draw_board </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Draws the Tic Tac Toe board. </p>
+<p>Draws the Tic Tac Toe board grid. </p>
+
+</div>
+</div>
+<a id="a80d700fab549c892da6454ddf134e73f" name="a80d700fab549c892da6454ddf134e73f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a80d700fab549c892da6454ddf134e73f">&#9670;&#160;</a></span>draw_marks()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::draw_marks </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Draws the marks (X and O) on the board. </p>
+
+</div>
+</div>
+<a id="ad6b36f228408151798ccf6f93ae6bb9c" name="ad6b36f228408151798ccf6f93ae6bb9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6b36f228408151798ccf6f93ae6bb9c">&#9670;&#160;</a></span>draw_winning_line()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::draw_winning_line </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Draws a line to indicate the winning combination. </p>
+<p>Draws the line indicating the winning combination on the board. </p>
+
+</div>
+</div>
+<a id="a7e59cd0a04b03284ce8a95ae104a40a0" name="a7e59cd0a04b03284ce8a95ae104a40a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7e59cd0a04b03284ce8a95ae104a40a0">&#9670;&#160;</a></span>handle_click()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::handle_click </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>x</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>y</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Handles mouse click events to place marks. </p>
+<p>Handles mouse click events and updates the board with marks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>X-coordinate of the click. </td></tr>
+    <tr><td class="paramname">y</td><td>Y-coordinate of the click.</td></tr>
+    <tr><td class="paramname">x</td><td>X-coordinate of the mouse click. </td></tr>
+    <tr><td class="paramname">y</td><td>Y-coordinate of the mouse click. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname">std::out_of_range</td><td>if the clicked position is outside the board. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a02a67ddb17bb56a4e34ce07b75d4c4c8" name="a02a67ddb17bb56a4e34ce07b75d4c4c8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a02a67ddb17bb56a4e34ce07b75d4c4c8">&#9670;&#160;</a></span>play()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::play </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Starts the game loop. </p>
+
+</div>
+</div>
+<a id="a256a8423cb3c6e7b6e3ca6251866867d" name="a256a8423cb3c6e7b6e3ca6251866867d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a256a8423cb3c6e7b6e3ca6251866867d">&#9670;&#160;</a></span>reset_game()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::reset_game </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Resets the game to its initial state. </p>
+
+</div>
+</div>
+<a id="a87e9e26b5d34f5bd3cadee4e2778df3e" name="a87e9e26b5d34f5bd3cadee4e2778df3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87e9e26b5d34f5bd3cadee4e2778df3e">&#9670;&#160;</a></span>write_result_to_file()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TicTacToeWindow::write_result_to_file </td>
+          <td>(</td>
+          <td class="paramtype">const std::string &amp;</td>          <td class="paramname"><span class="paramname"><em>result</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Writes the game result to a file. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">result</td><td>The result string to write. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="ac5767923f6cfdd1cdc0e38646817c0ec" name="ac5767923f6cfdd1cdc0e38646817c0ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac5767923f6cfdd1cdc0e38646817c0ec">&#9670;&#160;</a></span>board</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::vector&lt;std::vector&lt;char&gt; &gt; TicTacToeWindow::board</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>3x3 board representation. </p>
+
+</div>
+</div>
+<a id="ae1d2eddf2ec46d88ec2850088bf83801" name="ae1d2eddf2ec46d88ec2850088bf83801"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae1d2eddf2ec46d88ec2850088bf83801">&#9670;&#160;</a></span>current_player</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">char TicTacToeWindow::current_player</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Current player ('X' or 'O'). </p>
+
+</div>
+</div>
+<a id="a43bc194a5b454fdd4e586b29862ead48" name="a43bc194a5b454fdd4e586b29862ead48"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43bc194a5b454fdd4e586b29862ead48">&#9670;&#160;</a></span>game_over</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool TicTacToeWindow::game_over</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Flag indicating if the game is over. </p>
+
+</div>
+</div>
+<a id="afacdc2b25347aec3b74b3a0a89cf121b" name="afacdc2b25347aec3b74b3a0a89cf121b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afacdc2b25347aec3b74b3a0a89cf121b">&#9670;&#160;</a></span>last_player</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">char TicTacToeWindow::last_player</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Last player to have made a move. </p>
+
+</div>
+</div>
+<a id="ac85e0fda6ce6f20bfad83a38cf7d6b40" name="ac85e0fda6ce6f20bfad83a38cf7d6b40"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac85e0fda6ce6f20bfad83a38cf7d6b40">&#9670;&#160;</a></span>quit_button</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">Button TicTacToeWindow::quit_button</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Button to quit the game. </p>
+
+</div>
+</div>
+<a id="aa984f2d95bc444451acfb242a0cd3644" name="aa984f2d95bc444451acfb242a0cd3644"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa984f2d95bc444451acfb242a0cd3644">&#9670;&#160;</a></span>reset_button</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">Button TicTacToeWindow::reset_button</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Button to reset the game. </p>
+
+</div>
+</div>
+<a id="a98f8a4942b7eb70471c720297c492925" name="a98f8a4942b7eb70471c720297c492925"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a98f8a4942b7eb70471c720297c492925">&#9670;&#160;</a></span>result_text</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::string TicTacToeWindow::result_text</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Text indicating the winner. </p>
+
+</div>
+</div>
+<a id="a0fde7a5bc88317c24139a2a997f49b0e" name="a0fde7a5bc88317c24139a2a997f49b0e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0fde7a5bc88317c24139a2a997f49b0e">&#9670;&#160;</a></span>winning_line</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::pair&lt;Point, Point&gt; TicTacToeWindow::winning_line</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel private">private</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Coordinates for the winning line. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="_tic_tac_toe_window_8h_source.html">TicTacToeWindow.h</a></li>
+<li><a class="el" href="_tic_tac_toe_window_8cpp.html">TicTacToeWindow.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.js b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.js
new file mode 100644
index 0000000..e687632
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.js
@@ -0,0 +1,23 @@
+var class_tic_tac_toe_window =
+[
+    [ "TicTacToeWindow", "class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562", null ],
+    [ "cb_quit", "class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205", null ],
+    [ "cb_reset", "class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4", null ],
+    [ "check_draw", "class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a", null ],
+    [ "check_winner", "class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4", null ],
+    [ "draw_board", "class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870", null ],
+    [ "draw_marks", "class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f", null ],
+    [ "draw_winning_line", "class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c", null ],
+    [ "handle_click", "class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0", null ],
+    [ "play", "class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8", null ],
+    [ "reset_game", "class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d", null ],
+    [ "write_result_to_file", "class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e", null ],
+    [ "board", "class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec", null ],
+    [ "current_player", "class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801", null ],
+    [ "game_over", "class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48", null ],
+    [ "last_player", "class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b", null ],
+    [ "quit_button", "class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40", null ],
+    [ "reset_button", "class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644", null ],
+    [ "result_text", "class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925", null ],
+    [ "winning_line", "class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e", null ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.png b/templates/_folder_Projects/tic-tac-toe/docs/html/class_tic_tac_toe_window.png
new file mode 100644
index 0000000000000000000000000000000000000000..9908752a5abfd2f156b1dfca91a470892502e00f
GIT binary patch
literal 640
zcmV-`0)PF9P)<h;3K|Lk000e1NJLTq005`}002-30{{R3x>U~c0000RP)t-s|Ns90
z008Lh^>vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006D
zNkl<ZcmeI5-L@ht41_B;R=xidk2XIIG;DQtJV(}KNr@yh{Usq@!^~_4!ASD^6`&;P
zsQ@KOPZiMIT4`?9kDqBn+15<;kmaJ9F4p5EGv6X{O-4_u7VQqz0G=l|=iS32$+c$g
z29#to-U01@4yM9?0ezIC1XA*J1b9@cMtg2+;?Bm$ciq{C^0%NvZqw=Ywa0r;cOBW;
z+Z$u&eh;)>p&qoY&n!R9)w_V!t?4uIUE+HV+NW@Sv1<QKK$Gjg0PTB!)~5A|3Fx%+
zv+^uJODHdO{UoEG1RdL`QjDM_gHzDbxMM|Ept<3Pu3v-pJ6E72`MnBIlJr!7lBA~s
zlq5a16R4Tl1_A(g-2h+*?E-qcZ9=*W=$&&9(rrMa>jA)50SW+~3Qz#>RDc42rvelJ
zJQbh-;Hdxw08a%d0C*}u0l-rM3ILu8Pyp~$fC7N0{%ue*vmFGJr0-XNN|L7nRFXXP
z95gqb>b_!-bdIU<cqXfNy`P<zGJ4rEeP&{8KqWQflc2{7bI$U2TK!<`GkUK|_ML|<
zLy^>tw?ONOC;1a&Axu+Uors?U?JIXNUO>~Q;~l5V4VI))zX46%GY8F`^%bCFJ1>pH
z%^9Z>iX^S|;XAqj9oy&?hF^AlD)Y~O1!J6T*ZYD>(*Lahl_XCEs3dtRKqbjjJAs;+
aZJ<9^mdfZ`xz-5)0000<MNUMnLSTXlYb4zO

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/classes.html b/templates/_folder_Projects/tic-tac-toe/docs/html/classes.html
new file mode 100644
index 0000000..1e036b5
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/classes.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Class Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('classes.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class Index</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_T">T</a></div>
+<div class="classindex">
+<dl class="classindex even">
+<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
+<dd><a class="el" href="class_tic_tac_toe_window.html">TicTacToeWindow</a></dd></dl>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/clipboard.js b/templates/_folder_Projects/tic-tac-toe/docs/html/clipboard.js
new file mode 100644
index 0000000..9da9f3c
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/clipboard.js
@@ -0,0 +1,61 @@
+/**
+
+The code below is based on the Doxygen Awesome project, see
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2021 - 2022 jothepro
+
+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.
+
+*/
+
+let clipboard_title = "Copy to clipboard"
+let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#888" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
+let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
+let clipboard_successDuration = 1000
+
+$(function() {
+  if(navigator.clipboard) {
+    const fragments = document.getElementsByClassName("fragment")
+    for(const fragment of fragments) {
+      const clipboard_div = document.createElement("div")
+      clipboard_div.classList.add("clipboard")
+      clipboard_div.innerHTML = clipboard_icon
+      clipboard_div.title = clipboard_title
+      $(clipboard_div).click(function() {
+        const content = this.parentNode.cloneNode(true)
+        // filter out line number and folded fragments from file listings
+        content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
+        let text = content.textContent
+        // remove trailing newlines and trailing spaces from empty lines
+        text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
+        navigator.clipboard.writeText(text);
+        this.classList.add("success")
+        this.innerHTML = clipboard_successIcon
+        window.setTimeout(() => { // switch back to normal icon after timeout
+            this.classList.remove("success")
+            this.innerHTML = clipboard_icon
+        }, clipboard_successDuration);
+      })
+      fragment.insertBefore(clipboard_div, fragment.firstChild)
+    }
+  }
+})
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/closed.png b/templates/_folder_Projects/tic-tac-toe/docs/html/closed.png
new file mode 100644
index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5
GIT binary patch
literal 132
zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8<G4C~~x2bkCl7
zlF9slZh~6z%aUT|WfKm3{P*dDAfv<6>{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf
f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/cookie.js b/templates/_folder_Projects/tic-tac-toe/docs/html/cookie.js
new file mode 100644
index 0000000..53ad21d
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/cookie.js
@@ -0,0 +1,58 @@
+/*!
+ Cookie helper functions
+ Copyright (c) 2023 Dimitri van Heesch
+ Released under MIT license.
+*/
+let Cookie = {
+  cookie_namespace: 'doxygen_',
+
+  readSetting(cookie,defVal) {
+    if (window.chrome) {
+      const val = localStorage.getItem(this.cookie_namespace+cookie) ||
+                  sessionStorage.getItem(this.cookie_namespace+cookie);
+      if (val) return val;
+    } else {
+      let myCookie = this.cookie_namespace+cookie+"=";
+      if (document.cookie) {
+        const index = document.cookie.indexOf(myCookie);
+        if (index != -1) {
+          const valStart = index + myCookie.length;
+          let valEnd = document.cookie.indexOf(";", valStart);
+          if (valEnd == -1) {
+            valEnd = document.cookie.length;
+          }
+          return document.cookie.substring(valStart, valEnd);
+        }
+      }
+    }
+    return defVal;
+  },
+
+  writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
+    if (window.chrome) {
+      if (days==0) {
+        sessionStorage.setItem(this.cookie_namespace+cookie,val);
+      } else {
+        localStorage.setItem(this.cookie_namespace+cookie,val);
+      }
+    } else {
+      let date = new Date();
+      date.setTime(date.getTime()+(days*24*60*60*1000));
+      const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
+      document.cookie = this.cookie_namespace + cookie + "=" +
+                        val + "; SameSite=Lax;" + expiration + "path=/";
+    }
+  },
+
+  eraseSetting(cookie) {
+    if (window.chrome) {
+      if (localStorage.getItem(this.cookie_namespace+cookie)) {
+        localStorage.removeItem(this.cookie_namespace+cookie);
+      } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
+        sessionStorage.removeItem(this.cookie_namespace+cookie);
+      }
+    } else {
+      this.writeSetting(cookie,'',-1);
+    }
+  },
+}
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/doc.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/doc.svg
new file mode 100644
index 0000000..0b928a5
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/doc.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#4665A2">
+<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
+</g>
+<g style="fill:#D8DFEE;stroke-width:0">
+<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
+<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
+</g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/docd.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/docd.svg
new file mode 100644
index 0000000..ac18b27
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/docd.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#C4CFE5">
+<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
+</g>
+<g style="fill:#4665A2;stroke-width:0">
+<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
+<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
+</g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.css b/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.css
new file mode 100644
index 0000000..4947e24
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.css
@@ -0,0 +1,2255 @@
+/* The standard CSS for doxygen 1.13.2*/
+
+html {
+/* page base colors */
+--page-background-color: white;
+--page-foreground-color: black;
+--page-link-color: #3D578C;
+--page-visited-link-color: #4665A2;
+
+/* index */
+--index-odd-item-bg-color: #F8F9FC;
+--index-even-item-bg-color: white;
+--index-header-color: black;
+--index-separator-color: #A0A0A0;
+
+/* header */
+--header-background-color: #F9FAFC;
+--header-separator-color: #C4CFE5;
+--header-gradient-image: url('nav_h.png');
+--group-header-separator-color: #879ECB;
+--group-header-color: #354C7B;
+--inherit-header-color: gray;
+
+--footer-foreground-color: #2A3D61;
+--footer-logo-width: 104px;
+--citation-label-color: #334975;
+--glow-color: cyan;
+
+--title-background-color: white;
+--title-separator-color: #5373B4;
+--directory-separator-color: #9CAFD4;
+--separator-color: #4A6AAA;
+
+--blockquote-background-color: #F7F8FB;
+--blockquote-border-color: #9CAFD4;
+
+--scrollbar-thumb-color: #9CAFD4;
+--scrollbar-background-color: #F9FAFC;
+
+--icon-background-color: #728DC1;
+--icon-foreground-color: white;
+--icon-doc-image: url('doc.svg');
+--icon-folder-open-image: url('folderopen.svg');
+--icon-folder-closed-image: url('folderclosed.svg');
+
+/* brief member declaration list */
+--memdecl-background-color: #F9FAFC;
+--memdecl-separator-color: #DEE4F0;
+--memdecl-foreground-color: #555;
+--memdecl-template-color: #4665A2;
+
+/* detailed member list */
+--memdef-border-color: #A8B8D9;
+--memdef-title-background-color: #E2E8F2;
+--memdef-title-gradient-image: url('nav_f.png');
+--memdef-proto-background-color: #DFE5F1;
+--memdef-proto-text-color: #253555;
+--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+--memdef-doc-background-color: white;
+--memdef-param-name-color: #602020;
+--memdef-template-color: #4665A2;
+
+/* tables */
+--table-cell-border-color: #2D4068;
+--table-header-background-color: #374F7F;
+--table-header-foreground-color: #FFFFFF;
+
+/* labels */
+--label-background-color: #728DC1;
+--label-left-top-border-color: #5373B4;
+--label-right-bottom-border-color: #C4CFE5;
+--label-foreground-color: white;
+
+/** navigation bar/tree/menu */
+--nav-background-color: #F9FAFC;
+--nav-foreground-color: #364D7C;
+--nav-gradient-image: url('tab_b.png');
+--nav-gradient-hover-image: url('tab_h.png');
+--nav-gradient-active-image: url('tab_a.png');
+--nav-gradient-active-image-parent: url("../tab_a.png");
+--nav-separator-image: url('tab_s.png');
+--nav-breadcrumb-image: url('bc_s.png');
+--nav-breadcrumb-border-color: #C2CDE4;
+--nav-splitbar-image: url('splitbar.png');
+--nav-font-size-level1: 13px;
+--nav-font-size-level2: 10px;
+--nav-font-size-level3: 9px;
+--nav-text-normal-color: #283A5D;
+--nav-text-hover-color: white;
+--nav-text-active-color: white;
+--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-menu-button-color: #364D7C;
+--nav-menu-background-color: white;
+--nav-menu-foreground-color: #555555;
+--nav-menu-toggle-color: rgba(255, 255, 255, 0.5);
+--nav-arrow-color: #9CAFD4;
+--nav-arrow-selected-color: #9CAFD4;
+
+/* table of contents */
+--toc-background-color: #F4F6FA;
+--toc-border-color: #D8DFEE;
+--toc-header-color: #4665A2;
+--toc-down-arrow-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='10px' width='5px' fill='grey'><text x='0' y='5' font-size='10'>&%238595;</text></svg>");
+
+/** search field */
+--search-background-color: white;
+--search-foreground-color: #909090;
+--search-magnification-image: url('mag.svg');
+--search-magnification-select-image: url('mag_sel.svg');
+--search-active-color: black;
+--search-filter-background-color: #F9FAFC;
+--search-filter-foreground-color: black;
+--search-filter-border-color: #90A5CE;
+--search-filter-highlight-text-color: white;
+--search-filter-highlight-bg-color: #3D578C;
+--search-results-foreground-color: #425E97;
+--search-results-background-color: #EEF1F7;
+--search-results-border-color: black;
+--search-box-shadow: inset 0.5px 0.5px 3px 0px #555;
+
+/** code fragments */
+--code-keyword-color: #008000;
+--code-type-keyword-color: #604020;
+--code-flow-keyword-color: #E08000;
+--code-comment-color: #800000;
+--code-preprocessor-color: #806020;
+--code-string-literal-color: #002080;
+--code-char-literal-color: #008080;
+--code-xml-cdata-color: black;
+--code-vhdl-digit-color: #FF00FF;
+--code-vhdl-char-color: #000000;
+--code-vhdl-keyword-color: #700070;
+--code-vhdl-logic-color: #FF0000;
+--code-link-color: #4665A2;
+--code-external-link-color: #4665A2;
+--fragment-foreground-color: black;
+--fragment-background-color: #FBFCFD;
+--fragment-border-color: #C4CFE5;
+--fragment-lineno-border-color: #00FF00;
+--fragment-lineno-background-color: #E8E8E8;
+--fragment-lineno-foreground-color: black;
+--fragment-lineno-link-fg-color: #4665A2;
+--fragment-lineno-link-bg-color: #D8D8D8;
+--fragment-lineno-link-hover-fg-color: #4665A2;
+--fragment-lineno-link-hover-bg-color: #C8C8C8;
+--fragment-copy-ok-color: #2EC82E;
+--tooltip-foreground-color: black;
+--tooltip-background-color: white;
+--tooltip-border-color: gray;
+--tooltip-doc-color: grey;
+--tooltip-declaration-color: #006318;
+--tooltip-link-color: #4665A2;
+--tooltip-shadow: 1px 1px 7px gray;
+--fold-line-color: #808080;
+--fold-minus-image: url('minus.svg');
+--fold-plus-image: url('plus.svg');
+--fold-minus-image-relpath: url('../../minus.svg');
+--fold-plus-image-relpath: url('../../plus.svg');
+
+/** font-family */
+--font-family-normal: Roboto,sans-serif;
+--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed;
+--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+--font-family-title: Tahoma,Arial,sans-serif;
+--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif;
+--font-family-search: Arial,Verdana,sans-serif;
+--font-family-icon: Arial,Helvetica;
+--font-family-tooltip: Roboto,sans-serif;
+
+/** special sections */
+--warning-color-bg: #f8d1cc;
+--warning-color-hl: #b61825;
+--warning-color-text: #75070f;
+--note-color-bg: #faf3d8;
+--note-color-hl: #f3a600;
+--note-color-text: #5f4204;
+--todo-color-bg: #e4f3ff;
+--todo-color-hl: #1879C4;
+--todo-color-text: #274a5c;
+--test-color-bg: #e8e8ff;
+--test-color-hl: #3939C4;
+--test-color-text: #1a1a5c;
+--deprecated-color-bg: #ecf0f3;
+--deprecated-color-hl: #5b6269;
+--deprecated-color-text: #43454a;
+--bug-color-bg: #e4dafd;
+--bug-color-hl: #5b2bdd;
+--bug-color-text: #2a0d72;
+--invariant-color-bg: #d8f1e3;
+--invariant-color-hl: #44b86f;
+--invariant-color-text: #265532;
+}
+
+@media (prefers-color-scheme: dark) {
+  html:not(.dark-mode) {
+    color-scheme: dark;
+
+/* page base colors */
+--page-background-color: black;
+--page-foreground-color: #C9D1D9;
+--page-link-color: #90A5CE;
+--page-visited-link-color: #A3B4D7;
+
+/* index */
+--index-odd-item-bg-color: #0B101A;
+--index-even-item-bg-color: black;
+--index-header-color: #C4CFE5;
+--index-separator-color: #334975;
+
+/* header */
+--header-background-color: #070B11;
+--header-separator-color: #141C2E;
+--header-gradient-image: url('nav_hd.png');
+--group-header-separator-color: #283A5D;
+--group-header-color: #90A5CE;
+--inherit-header-color: #A0A0A0;
+
+--footer-foreground-color: #5B7AB7;
+--footer-logo-width: 60px;
+--citation-label-color: #90A5CE;
+--glow-color: cyan;
+
+--title-background-color: #090D16;
+--title-separator-color: #354C79;
+--directory-separator-color: #283A5D;
+--separator-color: #283A5D;
+
+--blockquote-background-color: #101826;
+--blockquote-border-color: #283A5D;
+
+--scrollbar-thumb-color: #283A5D;
+--scrollbar-background-color: #070B11;
+
+--icon-background-color: #334975;
+--icon-foreground-color: #C4CFE5;
+--icon-doc-image: url('docd.svg');
+--icon-folder-open-image: url('folderopend.svg');
+--icon-folder-closed-image: url('folderclosedd.svg');
+
+/* brief member declaration list */
+--memdecl-background-color: #0B101A;
+--memdecl-separator-color: #2C3F65;
+--memdecl-foreground-color: #BBB;
+--memdecl-template-color: #7C95C6;
+
+/* detailed member list */
+--memdef-border-color: #233250;
+--memdef-title-background-color: #1B2840;
+--memdef-title-gradient-image: url('nav_fd.png');
+--memdef-proto-background-color: #19243A;
+--memdef-proto-text-color: #9DB0D4;
+--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9);
+--memdef-doc-background-color: black;
+--memdef-param-name-color: #D28757;
+--memdef-template-color: #7C95C6;
+
+/* tables */
+--table-cell-border-color: #283A5D;
+--table-header-background-color: #283A5D;
+--table-header-foreground-color: #C4CFE5;
+
+/* labels */
+--label-background-color: #354C7B;
+--label-left-top-border-color: #4665A2;
+--label-right-bottom-border-color: #283A5D;
+--label-foreground-color: #CCCCCC;
+
+/** navigation bar/tree/menu */
+--nav-background-color: #101826;
+--nav-foreground-color: #364D7C;
+--nav-gradient-image: url('tab_bd.png');
+--nav-gradient-hover-image: url('tab_hd.png');
+--nav-gradient-active-image: url('tab_ad.png');
+--nav-gradient-active-image-parent: url("../tab_ad.png");
+--nav-separator-image: url('tab_sd.png');
+--nav-breadcrumb-image: url('bc_sd.png');
+--nav-breadcrumb-border-color: #2A3D61;
+--nav-splitbar-image: url('splitbard.png');
+--nav-font-size-level1: 13px;
+--nav-font-size-level2: 10px;
+--nav-font-size-level3: 9px;
+--nav-text-normal-color: #B6C4DF;
+--nav-text-hover-color: #DCE2EF;
+--nav-text-active-color: #DCE2EF;
+--nav-text-normal-shadow: 0px 1px 1px black;
+--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-menu-button-color: #B6C4DF;
+--nav-menu-background-color: #05070C;
+--nav-menu-foreground-color: #BBBBBB;
+--nav-menu-toggle-color: rgba(255, 255, 255, 0.2);
+--nav-arrow-color: #334975;
+--nav-arrow-selected-color: #90A5CE;
+
+/* table of contents */
+--toc-background-color: #151E30;
+--toc-border-color: #202E4A;
+--toc-header-color: #A3B4D7;
+--toc-down-arrow-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='10px' width='5px'><text x='0' y='5' font-size='10' fill='grey'>&%238595;</text></svg>");
+
+/** search field */
+--search-background-color: black;
+--search-foreground-color: #C5C5C5;
+--search-magnification-image: url('mag_d.svg');
+--search-magnification-select-image: url('mag_seld.svg');
+--search-active-color: #C5C5C5;
+--search-filter-background-color: #101826;
+--search-filter-foreground-color: #90A5CE;
+--search-filter-border-color: #7C95C6;
+--search-filter-highlight-text-color: #BCC9E2;
+--search-filter-highlight-bg-color: #283A5D;
+--search-results-background-color: #101826;
+--search-results-foreground-color: #90A5CE;
+--search-results-border-color: #7C95C6;
+--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C;
+
+/** code fragments */
+--code-keyword-color: #CC99CD;
+--code-type-keyword-color: #AB99CD;
+--code-flow-keyword-color: #E08000;
+--code-comment-color: #717790;
+--code-preprocessor-color: #65CABE;
+--code-string-literal-color: #7EC699;
+--code-char-literal-color: #00E0F0;
+--code-xml-cdata-color: #C9D1D9;
+--code-vhdl-digit-color: #FF00FF;
+--code-vhdl-char-color: #C0C0C0;
+--code-vhdl-keyword-color: #CF53C9;
+--code-vhdl-logic-color: #FF0000;
+--code-link-color: #79C0FF;
+--code-external-link-color: #79C0FF;
+--fragment-foreground-color: #C9D1D9;
+--fragment-background-color: #090D16;
+--fragment-border-color: #30363D;
+--fragment-lineno-border-color: #30363D;
+--fragment-lineno-background-color: black;
+--fragment-lineno-foreground-color: #6E7681;
+--fragment-lineno-link-fg-color: #6E7681;
+--fragment-lineno-link-bg-color: #303030;
+--fragment-lineno-link-hover-fg-color: #8E96A1;
+--fragment-lineno-link-hover-bg-color: #505050;
+--fragment-copy-ok-color: #0EA80E;
+--tooltip-foreground-color: #C9D1D9;
+--tooltip-background-color: #202020;
+--tooltip-border-color: #C9D1D9;
+--tooltip-doc-color: #D9E1E9;
+--tooltip-declaration-color: #20C348;
+--tooltip-link-color: #79C0FF;
+--tooltip-shadow: none;
+--fold-line-color: #808080;
+--fold-minus-image: url('minusd.svg');
+--fold-plus-image: url('plusd.svg');
+--fold-minus-image-relpath: url('../../minusd.svg');
+--fold-plus-image-relpath: url('../../plusd.svg');
+
+/** font-family */
+--font-family-normal: Roboto,sans-serif;
+--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed;
+--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+--font-family-title: Tahoma,Arial,sans-serif;
+--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif;
+--font-family-search: Arial,Verdana,sans-serif;
+--font-family-icon: Arial,Helvetica;
+--font-family-tooltip: Roboto,sans-serif;
+
+/** special sections */
+--warning-color-bg: #2e1917;
+--warning-color-hl: #ad2617;
+--warning-color-text: #f5b1aa;
+--note-color-bg: #3b2e04;
+--note-color-hl: #f1b602;
+--note-color-text: #ceb670;
+--todo-color-bg: #163750;
+--todo-color-hl: #1982D2;
+--todo-color-text: #dcf0fa;
+--test-color-bg: #121258;
+--test-color-hl: #4242cf;
+--test-color-text: #c0c0da;
+--deprecated-color-bg: #2e323b;
+--deprecated-color-hl: #738396;
+--deprecated-color-text: #abb0bd;
+--bug-color-bg: #2a2536;
+--bug-color-hl: #7661b3;
+--bug-color-text: #ae9ed6;
+--invariant-color-bg: #303a35;
+--invariant-color-hl: #76ce96;
+--invariant-color-text: #cceed5;
+}}
+body {
+    background-color: var(--page-background-color);
+    color: var(--page-foreground-color);
+}
+
+body, table, div, p, dl {
+	font-weight: 400;
+	font-size: 14px;
+	font-family: var(--font-family-normal);
+	line-height: 22px;
+}
+
+/* @group Heading Levels */
+
+.title {
+	font-family: var(--font-family-normal);
+	line-height: 28px;
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h1.groupheader {
+	font-size: 150%;
+}
+
+h2.groupheader {
+	border-bottom: 1px solid var(--group-header-separator-color);
+	color: var(--group-header-color);
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
+	width: 100%;
+}
+
+h3.groupheader {
+	font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px var(--glow-color);
+}
+
+dt {
+	font-weight: bold;
+}
+
+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;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+	font-size: 70%;
+	text-align: center;
+}
+
+h3.version {
+	font-size: 90%;
+	text-align: center;
+}
+
+div.navtab {
+	padding-right: 15px;
+	text-align: right;
+	line-height: 110%;
+}
+
+div.navtab table {
+	border-spacing: 0;
+}
+
+td.navtab {
+	padding-right: 6px;
+	padding-left: 6px;
+}
+
+td.navtabHL {
+	background-image: var(--nav-gradient-active-image);
+	background-repeat:repeat-x;
+	padding-right: 6px;
+	padding-left: 6px;
+}
+
+td.navtabHL a, td.navtabHL a:visited {
+	color: var(--nav-text-hover-color);
+	text-shadow: var(--nav-text-hover-shadow);
+}
+
+a.navtab {
+	font-weight: bold;
+}
+
+div.qindex{
+	text-align: center;
+	width: 100%;
+	line-height: 140%;
+	font-size: 130%;
+	color: var(--index-separator-color);
+}
+
+#main-menu a:focus {
+	outline: auto;
+	z-index: 10;
+	position: relative;
+}
+
+dt.alphachar{
+	font-size: 180%;
+	font-weight: bold;
+}
+
+.alphachar a{
+	color: var(--index-header-color);
+}
+
+.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.even {
+	background-color: var(--index-even-item-bg-color);
+}
+
+.classindex dl.odd {
+	background-color: var(--index-odd-item-bg-color);
+}
+
+@media(min-width: 1120px) {
+	.classindex dl {
+		column-count:2
+	}
+}
+
+@media(min-width: 1320px) {
+	.classindex dl {
+		column-count:3
+	}
+}
+
+
+/* @group Link Styling */
+
+a {
+	color: var(--page-link-color);
+	font-weight: normal;
+	text-decoration: none;
+}
+
+.contents a:visited {
+	color: var(--page-visited-link-color);
+}
+
+a:hover {
+	text-decoration: none;
+	background:   linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%);
+}
+
+a:hover > span.arrow {
+        text-decoration: none;
+        background : var(--nav-background-color);
+}
+
+a.el {
+	font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+	color: var(--code-link-color);
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+	color: var(--code-external-link-color);
+}
+
+a.code.hl_class { /* style for links to class names in code snippets */ }
+a.code.hl_struct { /* style for links to struct names in code snippets */ }
+a.code.hl_union { /* style for links to union names in code snippets */ }
+a.code.hl_interface { /* style for links to interface names in code snippets */ }
+a.code.hl_protocol { /* style for links to protocol names in code snippets */ }
+a.code.hl_category { /* style for links to category names in code snippets */ }
+a.code.hl_exception { /* style for links to exception names in code snippets */ }
+a.code.hl_service { /* style for links to service names in code snippets */ }
+a.code.hl_singleton { /* style for links to singleton names in code snippets */ }
+a.code.hl_concept { /* style for links to concept names in code snippets */ }
+a.code.hl_namespace { /* style for links to namespace names in code snippets */ }
+a.code.hl_package { /* style for links to package names in code snippets */ }
+a.code.hl_define { /* style for links to macro names in code snippets */ }
+a.code.hl_function { /* style for links to function names in code snippets */ }
+a.code.hl_variable { /* style for links to variable names in code snippets */ }
+a.code.hl_typedef { /* style for links to typedef names in code snippets */ }
+a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }
+a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }
+a.code.hl_signal { /* style for links to Qt signal names in code snippets */ }
+a.code.hl_slot { /* style for links to Qt slot names in code snippets */ }
+a.code.hl_friend { /* style for links to friend names in code snippets */ }
+a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }
+a.code.hl_property { /* style for links to property names in code snippets */ }
+a.code.hl_event { /* style for links to event names in code snippets */ }
+a.code.hl_sequence { /* style for links to sequence names in code snippets */ }
+a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+ul.check {
+  list-style:none;
+  text-indent: -16px;
+  padding-left: 38px;
+}
+li.unchecked:before {
+  content: "\2610\A0";
+}
+li.checked:before {
+  content: "\2611\A0";
+}
+
+ol {
+  text-indent: 0px;
+}
+
+ul {
+  text-indent: 0px;
+  overflow: visible;
+}
+
+ul.multicol {
+        -moz-column-gap: 1em;
+        -webkit-column-gap: 1em;
+        column-gap: 1em;
+        -moz-column-count: 3;
+        -webkit-column-count: 3;
+        column-count: 3;
+        list-style-type: none;
+}
+
+#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;
+  overflow-y: hidden;
+  position: relative;
+  min-height: 12px;
+  margin: 10px 0px;
+  padding: 10px 10px;
+  border: 1px solid var(--fragment-border-color);
+  border-radius: 4px;
+  background-color: var(--fragment-background-color);
+  color: var(--fragment-foreground-color);
+}
+
+pre.fragment {
+  word-wrap: break-word;
+  font-size:  10pt;
+  line-height: 125%;
+  font-family: var(--font-family-monospace);
+}
+
+.clipboard {
+        width: 24px;
+        height: 24px;
+        right: 5px;
+        top: 5px;
+        opacity: 0;
+        position: absolute;
+        display: inline;
+        overflow: hidden;
+        justify-content: center;
+        align-items: center;
+        cursor: pointer;
+}
+
+.clipboard.success {
+        border: 1px solid var(--fragment-foreground-color);
+        border-radius: 4px;
+}
+
+.fragment:hover .clipboard, .clipboard.success {
+        opacity: .4;
+}
+
+.clipboard:hover, .clipboard.success {
+        opacity: 1 !important;
+}
+
+.clipboard:active:not([class~=success]) svg {
+        transform: scale(.91);
+}
+
+.clipboard.success svg {
+        fill: var(--fragment-copy-ok-color);
+}
+
+.clipboard.success {
+        border-color: var(--fragment-copy-ok-color);
+}
+
+div.line {
+	font-family: var(--font-family-monospace);
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.2;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
+	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+div.line:after {
+    content:"\000A";
+    white-space: pre;
+}
+
+div.line.glow {
+	background-color: var(--glow-color);
+	box-shadow: 0 0 10px var(--glow-color);
+}
+
+span.fold {
+        margin-left: 5px;
+        margin-right: 1px;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+	display: inline-block;
+	width: 12px;
+	height: 12px;
+	background-repeat:no-repeat;
+        background-position:center;
+}
+
+span.lineno {
+	padding-right: 4px;
+        margin-right: 9px;
+	text-align: right;
+	border-right: 2px solid var(--fragment-lineno-border-color);
+	color: var(--fragment-lineno-foreground-color);
+	background-color: var(--fragment-lineno-background-color);
+        white-space: pre;
+}
+span.lineno a, span.lineno a:visited {
+	color: var(--fragment-lineno-link-fg-color);
+	background-color: var(--fragment-lineno-link-bg-color);
+}
+
+span.lineno a:hover {
+	color: var(--fragment-lineno-link-hover-fg-color);
+	background-color: var(--fragment-lineno-link-hover-bg-color);
+}
+
+.lineno {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+div.classindex ul {
+        list-style: none;
+        padding-left: 0;
+}
+
+div.classindex span.ai {
+        display: inline-block;
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
+	font-style: italic;
+}
+
+body {
+	color: var(--page-foreground-color);
+        margin: 0;
+}
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.dark-mode-visible {
+	display: none;
+}
+img.light-mode-visible {
+	display: none;
+}
+
+img.formulaInl, img.inline {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+	width: var(--footer-logo-width);
+}
+
+.compoundTemplParams {
+	color: var(--memdecl-template-color);
+	font-size: 80%;
+	line-height: 120%;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: var(--code-keyword-color);
+}
+
+span.keywordtype {
+	color: var(--code-type-keyword-color);
+}
+
+span.keywordflow {
+	color: var(--code-flow-keyword-color);
+}
+
+span.comment {
+	color: var(--code-comment-color);
+}
+
+span.preprocessor {
+	color: var(--code-preprocessor-color);
+}
+
+span.stringliteral {
+	color: var(--code-string-literal-color);
+}
+
+span.charliteral {
+	color: var(--code-char-literal-color);
+}
+
+span.xmlcdata {
+	color: var(--code-xml-cdata-color);
+}
+
+span.vhdldigit { 
+	color: var(--code-vhdl-digit-color);
+}
+
+span.vhdlchar { 
+	color: var(--code-vhdl-char-color);
+}
+
+span.vhdlkeyword { 
+	color: var(--code-vhdl-keyword-color);
+}
+
+span.vhdllogic { 
+	color: var(--code-vhdl-logic-color);
+}
+
+blockquote {
+        background-color: var(--blockquote-background-color);
+        border-left: 2px solid var(--blockquote-border-color);
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid var(--table-cell-border-color);
+}
+
+th.dirtab {
+	background-color: var(--table-header-background-color);
+	color: var(--table-header-foreground-color);
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid var(--separator-color);
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: var(--glow-color);
+	box-shadow: 0 0 15px var(--glow-color);
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: var(--memdecl-background-color);
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: var(--memdecl-foreground-color);
+}
+
+.memSeparator {
+        border-bottom: 1px solid var(--memdecl-separator-color);
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: var(--memdecl-template-color);
+        white-space: nowrap;
+	font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+	padding: 8px;
+	border-top: 1px solid var(--memdef-border-color);
+	border-left: 1px solid var(--memdef-border-color);
+	border-right: 1px solid var(--memdef-border-color);
+	border-top-right-radius: 4px;
+	border-top-left-radius: 4px;
+	margin-bottom: -1px;
+	background-image: var(--memdef-title-gradient-image);
+	background-repeat: repeat-x;
+	background-color: var(--memdef-title-background-color);
+	line-height: 1.25;
+	font-weight: 300;
+	float:left;
+}
+
+.permalink
+{
+        font-size: 65%;
+        display: inline-block;
+        vertical-align: middle;
+}
+
+.memtemplate {
+	font-size: 80%;
+	color: var(--memdef-template-color);
+	font-weight: normal;
+	margin-left: 9px;
+}
+
+.mempage {
+	width: 100%;
+}
+
+.memitem {
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px var(--glow-color);
+}
+
+.memname {
+        font-weight: 400;
+        margin-left: 6px;
+}
+
+.memname td {
+	vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid var(--memdef-border-color);
+        border-left: 1px solid var(--memdef-border-color);
+        border-right: 1px solid var(--memdef-border-color);
+        padding: 6px 0px 6px 0px;
+        color: var(--memdef-proto-text-color);
+        font-weight: bold;
+        text-shadow: var(--memdef-proto-text-shadow);
+        background-color: var(--memdef-proto-background-color);
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+}
+
+.overload {
+        font-family: var(--font-family-monospace);
+	font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid var(--memdef-border-color);
+        border-left: 1px solid var(--memdef-border-color);
+        border-right: 1px solid var(--memdef-border-color);
+        padding: 6px 10px 2px 10px;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: var(--memdef-doc-background-color);
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+	text-align: right;
+}
+
+.paramtype {
+	white-space: nowrap;
+	padding: 0px;
+	padding-bottom: 1px;
+}
+
+.paramname {
+	white-space: nowrap;
+        padding: 0px;
+        padding-bottom: 1px;
+        margin-left: 2px;
+}
+
+.paramname em {
+	color: var(--memdef-param-name-color);
+	font-style: normal;
+	margin-right: 1px;
+}
+
+.paramname .paramdefval {
+	font-family: var(--font-family-monospace);
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+        font-family: var(--font-family-monospace);
+        vertical-align: top;
+}
+
+table.mlabels {
+	border-spacing: 0px;
+}
+
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
+}
+
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: var(--label-background-color);
+        border-top:1px solid var(--label-left-top-border-color);
+        border-left:1px solid var(--label-left-top-border-color);
+        border-right:1px solid var(--label-right-bottom-border-color);
+        border-bottom:1px solid var(--label-right-bottom-border-color);
+	text-shadow: none;
+	color: var(--label-foreground-color);
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid var(--directory-separator-color);
+        border-bottom: 1px solid var(--directory-separator-color);
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+	padding-top: 3px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.odd {
+	padding-left: 6px;
+	background-color: var(--index-odd-item-bg-color);
+}
+
+.directory tr.even {
+	padding-left: 6px;
+	background-color: var(--index-even-item-bg-color);
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: var(--page-link-color);
+}
+
+.arrow {
+    color: var(--nav-arrow-color);
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    cursor: pointer;
+    font-size: 80%;
+    display: inline-block;
+    width: 16px;
+    height: 22px;
+}
+
+.icon {
+    font-family: var(--font-family-icon);
+    line-height: normal;
+    font-weight: bold;
+    font-size: 12px;
+    height: 14px;
+    width: 16px;
+    display: inline-block;
+    background-color: var(--icon-background-color);
+    color: var(--icon-foreground-color);
+    text-align: center;
+    border-radius: 4px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+.icona {
+    width: 24px;
+    height: 22px;
+    display: inline-block;
+}
+
+.iconfopen {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:var(--icon-folder-open-image);
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.iconfclosed {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:var(--icon-folder-closed-image);
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.icondoc {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:var(--icon-doc-image);
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+address {
+	font-style: normal;
+	color: var(--footer-foreground-color);
+}
+
+table.doxtable caption {
+	caption-side: top;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid var(--table-cell-border-color);
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: var(--table-header-background-color);
+	color: var(--table-header-foreground-color);
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+table.fieldtable {
+        margin-bottom: 10px;
+        border: 1px solid var(--memdef-border-color);
+        border-spacing: 0px;
+        border-radius: 4px;
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit {
+        white-space: nowrap;
+        border-right: 1px solid var(--memdef-border-color);
+        border-bottom: 1px solid var(--memdef-border-color);
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fieldinit {
+        padding-top: 3px;
+        text-align: right;
+}
+
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid var(--memdef-border-color);
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image: var(--memdef-title-gradient-image);
+        background-repeat:repeat-x;
+        background-color: var(--memdef-title-background-color);
+        font-size: 90%;
+        color: var(--memdef-proto-text-color);
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        font-weight: 400;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid var(--memdef-border-color);
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: var(--nav-gradient-image);
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image: var(--nav-gradient-image);
+	background-repeat:repeat-x;
+	background-position: 0 -5px;
+	height:30px;
+	line-height:30px;
+	color:var(--nav-text-normal-color);
+	border:solid 1px var(--nav-breadcrumb-border-color);
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:var(--nav-breadcrumb-image);
+	background-repeat:no-repeat;
+	background-position:right;
+	color: var(--nav-foreground-color);
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	outline: none;
+	color: var(--nav-text-normal-color);
+	font-family: var(--font-family-nav);
+	text-shadow: var(--nav-text-normal-shadow);
+	text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+	color: var(--nav-text-hover-color);
+	text-shadow: var(--nav-text-hover-shadow);
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color: var(--footer-foreground-color);
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+table.classindex
+{
+        margin: 10px;
+        white-space: nowrap;
+        margin-left: 3%;
+        margin-right: 3%;
+        width: 94%;
+        border: 0;
+        border-spacing: 0;
+        padding: 0;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image: var(--header-gradient-image);
+        background-repeat:repeat-x;
+	background-color: var(--header-background-color);
+	margin:  0px;
+	border-bottom: 1px solid var(--header-separator-color);
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+  text-align: right;
+  direction: rtl;
+}
+
+dl {
+        padding: 0 0 0 0;
+}
+
+/*
+
+dl.section {
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.note {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #D0C000;
+}
+
+dl.warning, dl.attention, dl.important {
+  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.test {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.bug {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #C08050;
+}
+
+*/
+
+dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a {
+    font-weight: bold !important;
+}
+
+dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug,
+dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark {
+    padding: 10px;
+    margin: 10px 0px;
+    overflow: hidden;
+    margin-left: 0;
+    border-radius: 4px;
+}
+
+dl.section dd {
+    margin-bottom: 2px;
+}
+
+dl.warning, dl.attention, dl.important {
+    background: var(--warning-color-bg);
+    border-left: 8px solid var(--warning-color-hl);
+    color: var(--warning-color-text);
+}
+
+dl.warning dt, dl.attention dt, dl.important dt {
+    color: var(--warning-color-hl);
+}
+
+dl.note, dl.remark {
+    background: var(--note-color-bg);
+    border-left: 8px solid var(--note-color-hl);
+    color: var(--note-color-text);
+}
+
+dl.note dt, dl.remark dt {
+    color: var(--note-color-hl);
+}
+
+dl.todo {
+    background: var(--todo-color-bg);
+    border-left: 8px solid var(--todo-color-hl);
+    color: var(--todo-color-text);
+}
+
+dl.todo dt {
+    color: var(--todo-color-hl);
+}
+
+dl.test {
+    background: var(--test-color-bg);
+    border-left: 8px solid var(--test-color-hl);
+    color: var(--test-color-text);
+}
+
+dl.test dt {
+    color: var(--test-color-hl);
+}
+
+dl.bug dt a {
+    color: var(--bug-color-hl) !important;
+}
+
+dl.bug {
+    background: var(--bug-color-bg);
+    border-left: 8px solid var(--bug-color-hl);
+    color: var(--bug-color-text);
+}
+
+dl.bug dt a {
+    color: var(--bug-color-hl) !important;
+}
+
+dl.deprecated {
+    background: var(--deprecated-color-bg);
+    border-left: 8px solid var(--deprecated-color-hl);
+    color: var(--deprecated-color-text);
+}
+
+dl.deprecated dt a {
+    color: var(--deprecated-color-hl) !important;
+}
+
+dl.note dd, dl.warning dd, dl.pre dd, dl.post dd,
+dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd,
+dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd {
+    margin-inline-start: 0px;
+}
+
+dl.invariant, dl.pre, dl.post {
+    background: var(--invariant-color-bg);
+    border-left: 8px solid var(--invariant-color-hl);
+    color: var(--invariant-color-text);
+}
+
+dl.invariant dt, dl.pre dt, dl.post dt {
+    color: var(--invariant-color-hl);
+}
+
+
+#projectrow
+{
+	height: 56px;
+}
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+
+#projectlogo img
+{
+	border: 0px none;
+}
+
+#projectalign
+{
+        vertical-align: middle;
+        padding-left: 0.5em;
+}
+
+#projectname
+{
+	font-size: 200%;
+	font-family: var(--font-family-title);
+	margin: 0px;
+	padding: 2px 0px;
+}
+
+#side-nav #projectname
+{
+	font-size: 130%;
+}
+
+#projectbrief
+{
+	font-size: 90%;
+        font-family: var(--font-family-title);
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font-size: 50%;
+	font-family: 50% var(--font-family-title);
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid var(--title-separator-color);
+	background-color: var(--title-background-color);
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.plantumlgraph
+{
+        text-align: center;
+}
+
+.diagraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:var(--citation-label-color);
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+        text-align:right;
+        width:52px;
+}
+
+dl.citelist dd {
+        margin:2px 0 2px 72px;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: var(--toc-background-color);
+        border: 1px solid var(--toc-border-color);
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 8px 10px 10px;
+        width: 200px;
+}
+
+div.toc li {
+        background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 var(--font-family-toc);
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 var(--font-family-toc);
+	color: var(--toc-header-color);
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}
+
+div.toc li[class^='level'] {
+        margin-left: 15px;
+}
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.empty {
+        background-image: none;
+        margin-top: 0px;
+}
+
+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;
+         */
+}
+
+span.obfuscator {
+  display: none;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: var(--inherit-header-color);
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+	cursor: default;
+	/*white-space: nowrap;*/
+        color: var(--tooltip-foreground-color);
+	background-color: var(--tooltip-background-color);
+	border: 1px solid var(--tooltip-border-color);
+	border-radius: 4px 4px 4px 4px;
+	box-shadow: var(--tooltip-shadow);
+	display: none;
+	font-size: smaller;
+	max-width: 80%;
+	opacity: 0.9;
+	padding: 1ex 1em 1em;
+	position: absolute;
+	z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: var(--tooltip-doc-color);
+	font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip a {
+	color: var(--tooltip-link-color);
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: var(--tooltip-declaration-color);
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font-size: 12px;
+       	font-family: var(--font-family-tooltip);
+	line-height: 16px;
+}
+
+#powerTip:before, #powerTip:after {
+	content: "";
+	position: absolute;
+	margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+	border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+	border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+	top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+	border-top-color: var(--tooltip-background-color);
+	border-width: 10px;
+	margin: 0px -10px;
+}
+#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before {
+	border-top-color: var(--tooltip-border-color);
+	border-width: 11px;
+	margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+	left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+	right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+	left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+	border-bottom-color: var(--tooltip-background-color);
+	border-width: 10px;
+	margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+	border-bottom-color: var(--tooltip-border-color);
+	border-width: 11px;
+	margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+	left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+	right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+	left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+	left: 100%;
+}
+#powerTip.e:after {
+	border-left-color: var(--tooltip-border-color);
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.e:before {
+	border-left-color: var(--tooltip-border-color);
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+	right: 100%;
+}
+#powerTip.w:after {
+	border-right-color: var(--tooltip-border-color);
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.w:before {
+	border-right-color: var(--tooltip-border-color);
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
+/* @group Markdown */
+
+table.markdownTable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+	border: 1px solid var(--table-cell-border-color);
+	padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+	background-color: var(--table-header-background-color);
+	color: var(--table-header-foreground-color);
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+	text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+	text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+	text-align: center
+}
+
+tt, code, kbd
+{
+  display: inline-block;
+}
+tt, code, kbd
+{
+  vertical-align: top;
+}
+/* @end */
+
+u {
+	text-decoration: underline;
+}
+
+details>summary {
+  list-style-type: none;
+}
+
+details > summary::-webkit-details-marker {
+    display: none;
+}
+
+details>summary::before {
+    content: "\25ba";
+    padding-right:4px;
+    font-size: 80%;
+}
+
+details[open]>summary::before {
+    content: "\25bc";
+    padding-right:4px;
+    font-size: 80%;
+}
+
+body {
+    scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color);
+}
+
+::-webkit-scrollbar {
+        background-color: var(--scrollbar-background-color);
+        height: 12px;
+        width: 12px;
+}
+::-webkit-scrollbar-thumb {
+        border-radius: 6px;
+        box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color);
+        border: solid 2px transparent;
+}
+::-webkit-scrollbar-corner {
+        background-color: var(--scrollbar-background-color);
+}
+
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.svg
new file mode 100644
index 0000000..79a7635
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="a">
+   <stop stop-color="#5373B4" offset="0"/>
+   <stop stop-color="#7C95C6" offset="1"/>
+  </linearGradient>
+  <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#C0CCE3" offset="0"/>
+   <stop stop-color="#EEF1F7" offset="1"/>
+  </linearGradient>
+  <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+   <feGaussianBlur stdDeviation="0.45293203"/>
+  </filter>
+ </defs>
+ <g>
+  <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696"/>
+  <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+  <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
+  <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+  <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen_crawl.html b/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen_crawl.html
new file mode 100644
index 0000000..c71878f
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/doxygen_crawl.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<title>Validator / crawler helper</title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+</head>
+<body>
+<a href="_tic_tac_toe_window_8cpp.html"/>
+<a href="_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51"/>
+<a href="_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007"/>
+<a href="_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702"/>
+<a href="_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e"/>
+<a href="_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514"/>
+<a href="_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339"/>
+<a href="_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0"/>
+<a href="_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9"/>
+<a href="_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6"/>
+<a href="_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311"/>
+<a href="_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc"/>
+<a href="_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610"/>
+<a href="_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25"/>
+<a href="_tic_tac_toe_window_8h.html"/>
+<a href="_tic_tac_toe_window_8h_source.html"/>
+<a href="annotated.html"/>
+<a href="class_tic_tac_toe_window-members.html"/>
+<a href="class_tic_tac_toe_window.html"/>
+<a href="class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8"/>
+<a href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e"/>
+<a href="class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d"/>
+<a href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562"/>
+<a href="class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a"/>
+<a href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48"/>
+<a href="class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4"/>
+<a href="class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0"/>
+<a href="class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f"/>
+<a href="class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e"/>
+<a href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925"/>
+<a href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644"/>
+<a href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec"/>
+<a href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40"/>
+<a href="class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c"/>
+<a href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801"/>
+<a href="class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870"/>
+<a href="class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205"/>
+<a href="class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4"/>
+<a href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b"/>
+<a href="classes.html"/>
+<a href="doxygen_crawl.html"/>
+<a href="files.html"/>
+<a href="functions.html"/>
+<a href="functions_func.html"/>
+<a href="functions_vars.html"/>
+<a href="globals.html"/>
+<a href="globals_func.html"/>
+<a href="globals_vars.html"/>
+<a href="hierarchy.html"/>
+<a href="index.html"/>
+<a href="main_8cpp.html"/>
+<a href="main_8cpp.html#adfe9299470a3da06f80456efb1e52945"/>
+<a href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"/>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/dynsections.js b/templates/_folder_Projects/tic-tac-toe/docs/html/dynsections.js
new file mode 100644
index 0000000..b05f4c8
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/dynsections.js
@@ -0,0 +1,198 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ 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) {
+  return dynsection.toggleVisibility(linkObj);
+}
+
+let dynsection = {
+
+  // helper function
+  updateStripes : function() {
+    $('table.directory tr').
+      removeClass('even').filter(':visible:even').addClass('even');
+    $('table.directory tr').
+      removeClass('odd').filter(':visible:odd').addClass('odd');
+  },
+
+  toggleVisibility : function(linkObj) {
+    const base = $(linkObj).attr('id');
+    const summary = $('#'+base+'-summary');
+    const content = $('#'+base+'-content');
+    const trigger = $('#'+base+'-trigger');
+    const src=$(trigger).attr('src');
+    if (content.is(':visible')===true) {
+      content.hide();
+      summary.show();
+      $(linkObj).addClass('closed').removeClass('opened');
+      $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+    } else {
+      content.show();
+      summary.hide();
+      $(linkObj).removeClass('closed').addClass('opened');
+      $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+    }
+    return false;
+  },
+
+  toggleLevel : function(level) {
+    $('table.directory tr').each(function() {
+      const l = this.id.split('_').length-1;
+      const i = $('#img'+this.id.substring(3));
+      const a = $('#arr'+this.id.substring(3));
+      if (l<level+1) {
+        i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+        a.html('&#9660;');
+        $(this).show();
+      } else if (l==level+1) {
+        i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+        a.html('&#9658;');
+        $(this).show();
+      } else {
+        $(this).hide();
+      }
+    });
+    this.updateStripes();
+  },
+
+  toggleFolder : function(id) {
+    // the clicked row
+    const currentRow = $('#row_'+id);
+
+    // all rows after the clicked row
+    const rows = currentRow.nextAll("tr");
+
+    const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+    // only match elements AFTER this one (can't hide elements before)
+    const childRows = rows.filter(function() { return this.id.match(re); });
+
+    // first row is visible we are HIDING
+    if (childRows.filter(':first').is(':visible')===true) {
+      // replace down arrow by right arrow for current row
+      const currentRowSpans = currentRow.find("span");
+      currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+      currentRowSpans.filter(".arrow").html('&#9658;');
+      rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+    } else { // we are SHOWING
+      // replace right arrow by down arrow for current row
+      const currentRowSpans = currentRow.find("span");
+      currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+      currentRowSpans.filter(".arrow").html('&#9660;');
+      // replace down arrows by right arrows for child rows
+      const childRowsSpans = childRows.find("span");
+      childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+      childRowsSpans.filter(".arrow").html('&#9658;');
+      childRows.show(); //show all children
+    }
+    this.updateStripes();
+  },
+
+  toggleInherit : function(id) {
+    const rows = $('tr.inherit.'+id);
+    const img = $('tr.inherit_header.'+id+' img');
+    const src = $(img).attr('src');
+    if (rows.filter(':first').is(':visible')===true) {
+      rows.css('display','none');
+      $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+    } else {
+      rows.css('display','table-row'); // using show() causes jump in firefox
+      $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+    }
+  },
+};
+
+let codefold = {
+  opened : true,
+
+  // in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes
+  plusImg:  [ "var(--fold-plus-image)",  "var(--fold-plus-image-relpath)" ],
+  minusImg: [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ],
+
+  // toggle all folding blocks
+  toggle_all : function(relPath) {
+    if (this.opened) {
+      $('#fold_all').css('background-image',this.plusImg[relPath]);
+      $('div[id^=foldopen]').hide();
+      $('div[id^=foldclosed]').show();
+    } else {
+      $('#fold_all').css('background-image',this.minusImg[relPath]);
+      $('div[id^=foldopen]').show();
+      $('div[id^=foldclosed]').hide();
+    }
+    this.opened=!this.opened;
+  },
+
+  // toggle single folding block
+  toggle : function(id) {
+    $('#foldopen'+id).toggle();
+    $('#foldclosed'+id).toggle();
+  },
+
+  init : function(relPath) {
+    $('span[class=lineno]').css({
+      'padding-right':'4px',
+      'margin-right':'2px',
+      'display':'inline-block',
+      'width':'54px',
+      'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'
+    });
+    // add global toggle to first line
+    $('span[class=lineno]:first').append('<span class="fold" id="fold_all" '+
+      'onclick="javascript:codefold.toggle_all('+relPath+');" '+
+      'style="background-image:'+this.minusImg[relPath]+';"></span>');
+    // add vertical lines to other rows
+    $('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
+    // add toggle controls to lines with fold divs
+    $('div[class=foldopen]').each(function() {
+      // extract specific id to use
+      const id    = $(this).attr('id').replace('foldopen','');
+      // extract start and end foldable fragment attributes
+      const start = $(this).attr('data-start');
+      const end   = $(this).attr('data-end');
+      // replace normal fold span with controls for the first line of a foldable fragment
+      $(this).find('span[class=fold]:first').replaceWith('<span class="fold" '+
+                   'onclick="javascript:codefold.toggle(\''+id+'\');" '+
+                   'style="background-image:'+codefold.minusImg[relPath]+';"></span>');
+      // append div for folded (closed) representation
+      $(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
+      // extract the first line from the "open" section to represent closed content
+      const line = $(this).children().first().clone();
+      // remove any glow that might still be active on the original line
+      $(line).removeClass('glow');
+      if (start) {
+        // if line already ends with a start marker (e.g. trailing {), remove it
+        $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
+      }
+      // replace minus with plus symbol
+      $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]);
+      // append ellipsis
+      $(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
+      // insert constructed line into closed div
+      $('#foldclosed'+id).html(line);
+    });
+  },
+};
+/* @license-end */
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/files.html b/templates/_folder_Projects/tic-tac-toe/docs/html/files.html
new file mode 100644
index 0000000..b283855
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/files.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('files.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">File List</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="main_8cpp.html" target="_self">main.cpp</a></td><td class="desc">Entry point for the Tic Tac Toe game </td></tr>
+<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="_tic_tac_toe_window_8cpp.html" target="_self">TicTacToeWindow.cpp</a></td><td class="desc">Contains the implementation of the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> class </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_tic_tac_toe_window_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_tic_tac_toe_window_8h.html" target="_self">TicTacToeWindow.h</a></td><td class="desc">Defines the <a class="el" href="class_tic_tac_toe_window.html" title="Handles the Tic Tac Toe game logic and user interface.">TicTacToeWindow</a> class for handling game logic and UI </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/files_dup.js b/templates/_folder_Projects/tic-tac-toe/docs/html/files_dup.js
new file mode 100644
index 0000000..0fb50fd
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/files_dup.js
@@ -0,0 +1,6 @@
+var files_dup =
+[
+    [ "main.cpp", "main_8cpp.html", "main_8cpp" ],
+    [ "TicTacToeWindow.cpp", "_tic_tac_toe_window_8cpp.html", "_tic_tac_toe_window_8cpp" ],
+    [ "TicTacToeWindow.h", "_tic_tac_toe_window_8h.html", "_tic_tac_toe_window_8h" ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/folderclosed.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/folderclosed.svg
new file mode 100644
index 0000000..b04bed2
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/folderclosed.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#4665A2;">
+<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
+</g>
+<g style="fill:#D8DFEE;stroke-width:0;">
+<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
+</g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/folderclosedd.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/folderclosedd.svg
new file mode 100644
index 0000000..52f0166
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/folderclosedd.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#C4CFE5;">
+<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
+</g>
+<g style="fill:#4665A2;stroke-width:0;">
+<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
+</g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/folderopen.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/folderopen.svg
new file mode 100644
index 0000000..f6896dd
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/folderopen.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#4665A2;">
+<path
+   d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"
+   id="path2" />
+</g>
+<g style="fill:#D8DFEE;stroke-width:0;">
+<path
+   d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z"
+   id="path199" /><path
+   d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z"
+   id="path201" />
+</g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/folderopend.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/folderopend.svg
new file mode 100644
index 0000000..2d1f06e
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/folderopend.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#C4CFE5;">
+<path d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"/>
+</g>
+<g style="fill:#4665A2;stroke-width:0;">
+<path d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z" />
+<path d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z" />
+</g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/functions.html b/templates/_folder_Projects/tic-tac-toe/docs/html/functions.html
new file mode 100644
index 0000000..84c1022
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/functions.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('functions.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div><ul>
+<li>board&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec">TicTacToeWindow</a></li>
+<li>cb_quit()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205">TicTacToeWindow</a></li>
+<li>cb_reset()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4">TicTacToeWindow</a></li>
+<li>check_draw()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a">TicTacToeWindow</a></li>
+<li>check_winner()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4">TicTacToeWindow</a></li>
+<li>current_player&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801">TicTacToeWindow</a></li>
+<li>draw_board()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870">TicTacToeWindow</a></li>
+<li>draw_marks()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f">TicTacToeWindow</a></li>
+<li>draw_winning_line()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c">TicTacToeWindow</a></li>
+<li>game_over&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48">TicTacToeWindow</a></li>
+<li>handle_click()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0">TicTacToeWindow</a></li>
+<li>last_player&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b">TicTacToeWindow</a></li>
+<li>play()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8">TicTacToeWindow</a></li>
+<li>quit_button&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40">TicTacToeWindow</a></li>
+<li>reset_button&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644">TicTacToeWindow</a></li>
+<li>reset_game()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d">TicTacToeWindow</a></li>
+<li>result_text&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925">TicTacToeWindow</a></li>
+<li>TicTacToeWindow()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow</a></li>
+<li>winning_line&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e">TicTacToeWindow</a></li>
+<li>write_result_to_file()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e">TicTacToeWindow</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/functions_func.html b/templates/_folder_Projects/tic-tac-toe/docs/html/functions_func.html
new file mode 100644
index 0000000..16beade
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/functions_func.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('functions_func.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all functions with links to the classes they belong to:</div><ul>
+<li>cb_quit()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205">TicTacToeWindow</a></li>
+<li>cb_reset()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4">TicTacToeWindow</a></li>
+<li>check_draw()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a">TicTacToeWindow</a></li>
+<li>check_winner()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4">TicTacToeWindow</a></li>
+<li>draw_board()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870">TicTacToeWindow</a></li>
+<li>draw_marks()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f">TicTacToeWindow</a></li>
+<li>draw_winning_line()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c">TicTacToeWindow</a></li>
+<li>handle_click()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0">TicTacToeWindow</a></li>
+<li>play()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8">TicTacToeWindow</a></li>
+<li>reset_game()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d">TicTacToeWindow</a></li>
+<li>TicTacToeWindow()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562">TicTacToeWindow</a></li>
+<li>write_result_to_file()&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e">TicTacToeWindow</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/functions_vars.html b/templates/_folder_Projects/tic-tac-toe/docs/html/functions_vars.html
new file mode 100644
index 0000000..23e683d
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/functions_vars.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Class Members - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('functions_vars.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all variables with links to the classes they belong to:</div><ul>
+<li>board&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec">TicTacToeWindow</a></li>
+<li>current_player&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801">TicTacToeWindow</a></li>
+<li>game_over&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48">TicTacToeWindow</a></li>
+<li>last_player&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b">TicTacToeWindow</a></li>
+<li>quit_button&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40">TicTacToeWindow</a></li>
+<li>reset_button&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644">TicTacToeWindow</a></li>
+<li>result_text&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925">TicTacToeWindow</a></li>
+<li>winning_line&#160;:&#160;<a class="el" href="class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e">TicTacToeWindow</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/globals.html b/templates/_folder_Projects/tic-tac-toe/docs/html/globals.html
new file mode 100644
index 0000000..7091b61
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/globals.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('globals.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div><ul>
+<li>BOARD_SIZE&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc">TicTacToeWindow.cpp</a></li>
+<li>BOARD_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339">TicTacToeWindow.cpp</a></li>
+<li>BOARD_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0">TicTacToeWindow.cpp</a></li>
+<li>BUTTON_HEIGHT&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007">TicTacToeWindow.cpp</a></li>
+<li>BUTTON_WIDTH&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e">TicTacToeWindow.cpp</a></li>
+<li>CELL_SIZE&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25">TicTacToeWindow.cpp</a></li>
+<li>FONT_SIZE&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51">TicTacToeWindow.cpp</a></li>
+<li>main()&#160;:&#160;<a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main.cpp</a></li>
+<li>play_tick_tack_toe()&#160;:&#160;<a class="el" href="main_8cpp.html#adfe9299470a3da06f80456efb1e52945">main.cpp</a></li>
+<li>QUIT_BUTTON_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6">TicTacToeWindow.cpp</a></li>
+<li>QUIT_BUTTON_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9">TicTacToeWindow.cpp</a></li>
+<li>RESET_BUTTON_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702">TicTacToeWindow.cpp</a></li>
+<li>RESET_BUTTON_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514">TicTacToeWindow.cpp</a></li>
+<li>RESULT_TEXT_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610">TicTacToeWindow.cpp</a></li>
+<li>RESULT_TEXT_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311">TicTacToeWindow.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/globals_func.html b/templates/_folder_Projects/tic-tac-toe/docs/html/globals_func.html
new file mode 100644
index 0000000..78c413e
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/globals_func.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('globals_func.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all functions with links to the files they belong to:</div><ul>
+<li>main()&#160;:&#160;<a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main.cpp</a></li>
+<li>play_tick_tack_toe()&#160;:&#160;<a class="el" href="main_8cpp.html#adfe9299470a3da06f80456efb1e52945">main.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/globals_vars.html b/templates/_folder_Projects/tic-tac-toe/docs/html/globals_vars.html
new file mode 100644
index 0000000..d71648a
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/globals_vars.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('globals_vars.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all variables with links to the files they belong to:</div><ul>
+<li>BOARD_SIZE&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc">TicTacToeWindow.cpp</a></li>
+<li>BOARD_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339">TicTacToeWindow.cpp</a></li>
+<li>BOARD_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0">TicTacToeWindow.cpp</a></li>
+<li>BUTTON_HEIGHT&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007">TicTacToeWindow.cpp</a></li>
+<li>BUTTON_WIDTH&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e">TicTacToeWindow.cpp</a></li>
+<li>CELL_SIZE&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25">TicTacToeWindow.cpp</a></li>
+<li>FONT_SIZE&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51">TicTacToeWindow.cpp</a></li>
+<li>QUIT_BUTTON_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6">TicTacToeWindow.cpp</a></li>
+<li>QUIT_BUTTON_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9">TicTacToeWindow.cpp</a></li>
+<li>RESET_BUTTON_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702">TicTacToeWindow.cpp</a></li>
+<li>RESET_BUTTON_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514">TicTacToeWindow.cpp</a></li>
+<li>RESULT_TEXT_X&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610">TicTacToeWindow.cpp</a></li>
+<li>RESULT_TEXT_Y&#160;:&#160;<a class="el" href="_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311">TicTacToeWindow.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.html b/templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.html
new file mode 100644
index 0000000..f9eb97d
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Class Hierarchy</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('hierarchy.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class Hierarchy</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>TDT4102::AnimationWindow</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_tic_tac_toe_window.html" target="_self">TicTacToeWindow</a></td><td class="desc">Handles the Tic Tac Toe game logic and user interface </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.js b/templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.js
new file mode 100644
index 0000000..4c044ae
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/hierarchy.js
@@ -0,0 +1,6 @@
+var hierarchy =
+[
+    [ "TDT4102::AnimationWindow", null, [
+      [ "TicTacToeWindow", "class_tic_tac_toe_window.html", null ]
+    ] ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/index.html b/templates/_folder_Projects/tic-tac-toe/docs/html/index.html
new file mode 100644
index 0000000..7667759
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/index.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('index.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">My Project Documentation</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="doxygen_crawl.html"></a>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/jquery.js b/templates/_folder_Projects/tic-tac-toe/docs/html/jquery.js
new file mode 100644
index 0000000..875ada7
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/jquery.js
@@ -0,0 +1,204 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}
+var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},
+push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(
+e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,
+O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp(
+"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType
+}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c
+)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){
+return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(
+":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id")
+)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push(
+"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(
+a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,
+null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(
+"string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne
+).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType
+)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(
+function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){
+return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);
+for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n
+){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(
+e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);
+break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(
+function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){
+for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(
+this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(
+var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){
+return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(
+){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),
+S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,
+r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,
+o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(
+"object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){
+var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),
+1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){
+Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t
+){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c
+].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;
+return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),
+"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n
+)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,
+f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(
+arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i
+]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(
+e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;
+this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t
+}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,
+r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),
+r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){
+1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(
+"string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t
+,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(
+l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[
+0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(
+!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(
+e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(
+e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(
+this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},
+S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),
+originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}
+S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(
+le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),
+null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"
+],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},
+S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{
+set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o
+)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(
+" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;
+t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode
+,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),
+e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(
+new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};
+var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();
+return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",
+isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(
+t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global
+)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(
+v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();
+while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))
+}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),
+t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){
+return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(
+e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r]
+,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(
+function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,
+"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}
+),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(
+"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){
+return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
+/*! jQuery UI - v1.13.2 - 2022-08-01
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}
+function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],h.call(s[n],e)&&void 0!==i&&(y.isPlainObject(i)?t[e]=y.isPlainObject(t[e])?y.widget.extend({},t[e],i):y.widget.extend({},i):t[e]=i);return t},y.widget.bridge=function(o,e){var h=e.prototype.widgetFullName||o;y.fn[o]=function(i){var t="string"==typeof i,s=a.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,
+e=y.data(this,h);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?y.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:y.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=y.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=y.data(this,h);t?(t.option(i||{}),t._init&&t._init()):y.data(this,h,new e(i,this))})),n}},y.Widget=function(){},y.Widget._childConstructors=[],y.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t
+){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t
+]=y.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=y(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},
+disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],h=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=h.classesElementLookup[t[s]]||y(),i=n.add?(function(){var i=[];n.element.each(function(t,e){y.map(h.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),h._on(y(i),{remove:"_untrackClassesElement"})}(),y(y.uniqueSort(i.get().concat(n.element.get())))):y(i.not(n.element).get()),h.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=y.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;y.each(s.classesElementLookup,function(t,e){-1!==y.inArray(i.target,e)&&(s.classesElementLookup[t]=y(e.not(i.target).get()))}),this._off(y(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){
+return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var h,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=h=y(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,h=this.widget()),y.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!y(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||y.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+a.eventNamespace,s=s[2];s?h.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=y(this.bindings.not(t).get()),this.focusable=y(this.focusable.not(t).get()),this.hoverable=y(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return(
+"string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(y(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(y(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(y(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(y(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=y.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},y.each({show:"fadeIn",hide:"fadeOut"},function(o,h){y.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t
+)?!0!==t&&"number"!=typeof t&&t.effect||h:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!y.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&y.effects&&y.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){y(this)[o](),i&&i.call(e[0]),t()})}});var s,x,D,o,r,l,u,p,W;y.widget;function E(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function H(t,e){return parseInt(y.css(t,e),10)||0}function S(t){return null!=t&&t===t.window}x=Math.max,D=Math.abs,o=/left|center|right/,r=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,u=/^\w+/,p=/%$/,W=y.fn.position,y.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=y("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},
+getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?y.position.scrollbarWidth():0,height:e?y.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=y(t||window),i=S(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?y(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},y.fn.position=function(p){if(!p||!p.of)return W.apply(this,arguments);var d,c,f,g,m,t,_="string"==typeof(p=y.extend({},p)).of?y(document).find(p.of):y(p.of),w=y.position.getWithinInfo(p.within),v=y.position.getScrollInfo(w),b=(p.collision||"flip").split(" "),z={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:S(t)?{width:e.width(),height:e.height(),offset:{
+top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(p.at="left top"),c=e.width,f=e.height,m=y.extend({},g=e.offset),y.each(["my","at"],function(){var t,e,i=(p[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),z[this]=[t?t[0]:0,e?e[0]:0],p[this]=[u.exec(i[0])[0],u.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===p.at[0]?m.left+=c:"center"===p.at[0]&&(m.left+=c/2),"bottom"===p.at[1]?m.top+=f:"center"===p.at[1]&&(m.top+=f/2),d=E(z.at,c,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,h=y(this),a=h.outerWidth(),r=h.outerHeight(),e=H(this,"marginLeft"),s=H(this,"marginTop"),n=a+e+H(this,"marginRight")+v.width,o=r+s+H(this,"marginBottom")+v.height,l=y.extend({},m),u=E(z.my,h.outerWidth()
+,h.outerHeight());"right"===p.my[0]?l.left-=a:"center"===p.my[0]&&(l.left-=a/2),"bottom"===p.my[1]?l.top-=r:"center"===p.my[1]&&(l.top-=r/2),l.left+=u[0],l.top+=u[1],i={marginLeft:e,marginTop:s},y.each(["left","top"],function(t,e){y.ui.position[b[t]]&&y.ui.position[b[t]][e](l,{targetWidth:c,targetHeight:f,elemWidth:a,elemHeight:r,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+u[0],d[1]+u[1]],my:p.my,at:p.at,within:w,elem:h})}),p.using&&(t=function(t){var e=g.left-l.left,i=e+c-a,s=g.top-l.top,n=s+f-r,o={target:{element:_,left:g.left,top:g.top,width:c,height:f},element:{element:h,left:l.left,top:l.top,width:a,height:r},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};c<a&&D(e+i)<c&&(o.horizontal="center"),f<r&&D(s+n)<f&&(o.vertical="middle"),x(D(e),D(i))>x(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,
+s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0<h&&a<=0?(i=t.left+h+e.collisionWidth-n-s,t.left+=h-i):t.left=!(0<a&&h<=0)&&a<h?s+n-e.collisionWidth:s:0<h?t.left+=h:0<a?t.left-=a:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,h=s-o,a=o+e.collisionHeight-n-s;e.collisionHeight>n?0<h&&a<=0?(i=t.top+h+e.collisionHeight-n-s,t.top+=h-i):t.top=!(0<a&&h<=0)&&a<h?s+n-e.collisionHeight:s:0<h?t.top+=h:0<a?t.top-=a:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,h=t.left-e.collisionPosition.marginLeft,a=h-o,r=h+e.collisionWidth-n-o,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];a<0?((s=t.left+l+i+h+e.collisionWidth-n-s)<0||s<D(a)
+)&&(t.left+=l+i+h):0<r&&(0<(o=t.left-e.collisionPosition.marginLeft+l+i+h-o)||D(o)<r)&&(t.left+=l+i+h)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,h=t.top-e.collisionPosition.marginTop,a=h-o,r=h+e.collisionHeight-n-o,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];a<0?((s=t.top+l+i+h+e.collisionHeight-n-s)<0||s<D(a))&&(t.top+=l+i+h):0<r&&(0<(o=t.top-e.collisionPosition.marginTop+l+i+h-o)||D(o)<r)&&(t.top+=l+i+h)}},flipfit:{left:function(){y.ui.position.flip.left.apply(this,arguments),y.ui.position.fit.left.apply(this,arguments)},top:function(){y.ui.position.flip.top.apply(this,arguments),y.ui.position.fit.top.apply(this,arguments)}}};var t;y.ui.position,y.extend(y.expr.pseudos,{data:y.expr.createPseudo?y.expr.createPseudo(function(e){return function(t){return!!y.data(t,e)}}):function(t,e,i){return!!y.data(t,i[3])}}),y.fn.extend({
+disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});y.ui.focusable=function(t,e){var i,s,n,o,h=t.nodeName.toLowerCase();return"area"===h?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=y("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(h)?(n=!t.disabled)&&(o=y(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===h&&t.href||e,n&&y(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(y(t)))},y.extend(y.expr.pseudos,{focusable:function(t){return y.ui.focusable(t,null!=y.attr(t,"tabindex"))}});var e,d;y.ui.focusable,y.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):y(this[0].form)},y.ui.formResetMixin={_formResetHandler:function(
+){var e=y(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");y.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(y.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};y.expr.pseudos||(y.expr.pseudos=y.expr[":"]),y.uniqueSort||(y.uniqueSort=y.unique),y.escapeSelector||(e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,d=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},y.escapeSelector=function(t){return(t+"").replace(e,d)}),y.fn.even&&y.fn.odd||y.fn.extend({even:function(){
+return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});y.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},y.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+y.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},y.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=y(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:y(this[0].ownerDocument||document)},y.extend(y.expr.pseudos,{tabbable:function(t){
+var e=y.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&y.ui.focusable(t,i)}}),y.fn.extend({uniqueId:(c=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++c)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&y(this).removeAttr("id")})}}),y.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var c,f=!1;y(document).on("mouseup",function(){f=!1});y.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===y.data(t.target,e.widgetName+".preventClickEvent"))return y.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off(
+"mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!f){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&y(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===y.data(t.target,this.widgetName+".preventClickEvent")&&y.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),f=!0)):!0}},
+_mouseMove:function(t){if(this._mouseMoved){if(y.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&y.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),
+delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,f=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}};y.widget("ui.resizable",y.ui.mouse,{version:"1.13.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,
+handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===y(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),y.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(y("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),
+this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t
+).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(
+","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=y("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(
+this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{
+width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),
+!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){
+this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)
+),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height
+,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({
+height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||y("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,
+i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left
+)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e
+){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),
+i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth(
+)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,
+function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0
+]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<c,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<c-l?(e.size.height=c,e.position.top=o.top-p):(c=l-t.height,e.size.height=c,e.position.top=o.top+n.height-c),0<d-r?(e.size.width=d,e.position.left=o.left-u):(d=r-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});y.ui.resizable});
+/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"===typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9e9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case"number":case"string":if(
+/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e=h(e);break}e=l?$(e):$(e,q);case"object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&&"%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};
+$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()},set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,
+delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){
+targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se",
+"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(
+session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}
+closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;
+openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2
+);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",
+position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;
+top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(
+placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(
+session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,
+function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);
+tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,
+finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));
+return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}
+function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),
+elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,
+viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});
+/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,
+"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
+/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),
+mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend(
+$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(
+this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData(
+"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id"
+).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(
+this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(
+var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){
+return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((
+!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(
+this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0
+]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass(
+"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){
+t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]"
+)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){
+t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),
+a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(
+e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,
+downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2)
+)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t
+)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),
+canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},
+rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}
+return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,
+bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.html b/templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.html
new file mode 100644
index 0000000..a1ae9d8
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.html
@@ -0,0 +1,184 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.13.2"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>My Project: main.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+  $(function() { init_search(); });
+/* @license-end */
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">My Project
+   </div>
+  </td>
+    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
+          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.13.2 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('main_8cpp.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle"><div class="title">main.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Entry point for the Tic Tac Toe game.  
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="_tic_tac_toe_window_8h_source.html">TicTacToeWindow.h</a>&quot;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:adfe9299470a3da06f80456efb1e52945" id="r_adfe9299470a3da06f80456efb1e52945"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adfe9299470a3da06f80456efb1e52945">play_tick_tack_toe</a> ()</td></tr>
+<tr class="memdesc:adfe9299470a3da06f80456efb1e52945"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes and starts the Tic Tac Toe game.  <br /></td></tr>
+<tr class="separator:adfe9299470a3da06f80456efb1e52945"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4" id="r_ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
+<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main function, starts the game.  <br /></td></tr>
+<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Entry point for the Tic Tac Toe game. </p>
+<p>This file uses the following libraries and resources:</p><ul>
+<li><a class="el" href="_tic_tac_toe_window_8h.html" title="Defines the TicTacToeWindow class for handling game logic and UI.">TicTacToeWindow.h</a> for the game window class </li>
+</ul>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</a></span>main()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int main </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Main function, starts the game. </p>
+<dl class="section return"><dt>Returns</dt><dd>int Exit status. </dd></dl>
+
+</div>
+</div>
+<a id="adfe9299470a3da06f80456efb1e52945" name="adfe9299470a3da06f80456efb1e52945"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adfe9299470a3da06f80456efb1e52945">&#9670;&#160;</a></span>play_tick_tack_toe()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void play_tick_tack_toe </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initializes and starts the Tic Tac Toe game. </p>
+<p>&lt; X-coordinate of the window.</p>
+<p>&lt; Y-coordinate of the window.</p>
+<p>&lt; Width of the window.</p>
+<p>&lt; Height of the window.</p>
+<p>&lt; Title of the game window.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="main_8cpp.html">main.cpp</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.js b/templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.js
new file mode 100644
index 0000000..0cfc8e6
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/main_8cpp.js
@@ -0,0 +1,5 @@
+var main_8cpp =
+[
+    [ "main", "main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
+    [ "play_tick_tack_toe", "main_8cpp.html#adfe9299470a3da06f80456efb1e52945", null ]
+];
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/minus.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/minus.svg
new file mode 100644
index 0000000..f70d0c1
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/minus.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#fcfcfc;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+  </g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/minusd.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/minusd.svg
new file mode 100644
index 0000000..5f8e879
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/minusd.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#000000;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+  </g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/nav_f.png b/templates/_folder_Projects/tic-tac-toe/docs/html/nav_f.png
new file mode 100644
index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2
GIT binary patch
literal 153
zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc)
zn!W8uqtnIQ>_<lqdB{jiFDSaaN3W^xbJMH7CDK7=Q3_$6tQ&<~Cp4L6ZEndC`8;cO
zrss?`_g+2sGU&M|cu~La_w1Rnf~7w`e!jQgteDwDLg6kW!`DinT@0SCelF{r5}E+Y
CM>z8U

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/nav_fd.png b/templates/_folder_Projects/tic-tac-toe/docs/html/nav_fd.png
new file mode 100644
index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb
GIT binary patch
literal 169
zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8
zt<j{B<-5i=y8aRCp6>7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF&
zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY
Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/nav_g.png b/templates/_folder_Projects/tic-tac-toe/docs/html/nav_g.png
new file mode 100644
index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81
GIT binary patch
literal 95
zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE
tr?otc=hd~V+ws&_A@j8Fiv!K<?EJwDd;c`qumW{3c)I$ztaD0e0syCC7$E=v

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/nav_h.png b/templates/_folder_Projects/tic-tac-toe/docs/html/nav_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..33389b101d9cd9b4c98ad286b5d9c46a6671f650
GIT binary patch
literal 98
zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t22D>F$B+ufw|5=67#uj90@pIL
wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&v<Kx}xDV3h>FVdQ&MBb@0HFXL<NyEw

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/nav_hd.png b/templates/_folder_Projects/tic-tac-toe/docs/html/nav_hd.png
new file mode 100644
index 0000000000000000000000000000000000000000..de80f18ad6488b9990303f267a76fdc83f0ffd80
GIT binary patch
literal 114
zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t21`#D$B+ufw|9379#G(63FK{W
z5s<eodL#E@zbS9{Dekh>6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg
M>FVdQ&MBb@0Bdt1Qvd(}

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/navtree.css b/templates/_folder_Projects/tic-tac-toe/docs/html/navtree.css
new file mode 100644
index 0000000..69211d4
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/navtree.css
@@ -0,0 +1,149 @@
+#nav-tree .children_ul {
+  margin:0;
+  padding:4px;
+}
+
+#nav-tree ul {
+  list-style:none outside none;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree li {
+  white-space:nowrap;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .plus {
+  margin:0px;
+}
+
+#nav-tree .selected {
+  background-image: url('tab_a.png');
+  background-repeat:repeat-x;
+  color: var(--nav-text-active-color);
+  text-shadow: var(--nav-text-active-shadow);
+}
+
+#nav-tree .selected .arrow {
+  color: var(--nav-arrow-selected-color);
+  text-shadow: none;
+}
+
+#nav-tree img {
+  margin:0px;
+  padding:0px;
+  border:0px;
+  vertical-align: middle;
+}
+
+#nav-tree a {
+  text-decoration:none;
+  padding:0px;
+  margin:0px;
+}
+
+#nav-tree .label {
+  margin:0px;
+  padding:0px;
+  font: 12px var(--font-family-nav);
+}
+
+#nav-tree .label a {
+  padding:2px;
+}
+
+#nav-tree .selected a {
+  text-decoration:none;
+  color:var(--nav-text-active-color);
+}
+
+#nav-tree .children_ul {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .item {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree {
+  padding: 0px 0px;
+  font-size:14px;
+  overflow:auto;
+}
+
+#doc-content {
+  overflow:auto;
+  display:block;
+  padding:0px;
+  margin:0px;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#side-nav {
+  padding:0 6px 0 0;
+  margin: 0px;
+  display:block;
+  position: absolute;
+  left: 0px;
+  width: $width;
+  overflow : hidden;
+}
+
+.ui-resizable .ui-resizable-handle {
+  display:block;
+}
+
+.ui-resizable-e {
+  background-image:var(--nav-splitbar-image);
+  background-size:100%;
+  background-repeat:repeat-y;
+  background-attachment: scroll;
+  cursor:ew-resize;
+  height:100%;
+  right:0;
+  top:0;
+  width:6px;
+}
+
+.ui-resizable-handle {
+  display:none;
+  font-size:0.1px;
+  position:absolute;
+  z-index:1;
+}
+
+#nav-tree-contents {
+  margin: 6px 0px 0px 0px;
+}
+
+#nav-tree {
+  background-repeat:repeat-x;
+  background-color: var(--nav-background-color);
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#nav-sync {
+  position:absolute;
+  top:5px;
+  right:24px;
+  z-index:0;
+}
+
+#nav-sync img {
+  opacity:0.3;
+}
+
+#nav-sync img:hover {
+  opacity:0.9;
+}
+
+@media print
+{
+  #nav-tree { display: none; }
+  div.ui-resizable-handle { display: none; position: relative; }
+}
+
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/navtree.js b/templates/_folder_Projects/tic-tac-toe/docs/html/navtree.js
new file mode 100644
index 0000000..2d4fa84
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/navtree.js
@@ -0,0 +1,483 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ 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 initNavTree(toroot,relpath) {
+  let navTreeSubIndices = [];
+  const ARROW_DOWN = '&#9660;';
+  const ARROW_RIGHT = '&#9658;';
+  const NAVPATH_COOKIE_NAME = ''+'navpath';
+
+  const getData = function(varName) {
+    const i = varName.lastIndexOf('/');
+    const n = i>=0 ? varName.substring(i+1) : varName;
+    return eval(n.replace(/-/g,'_'));
+  }
+
+  const stripPath = function(uri) {
+    return uri.substring(uri.lastIndexOf('/')+1);
+  }
+
+  const stripPath2 = function(uri) {
+    const i = uri.lastIndexOf('/');
+    const s = uri.substring(i+1);
+    const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
+    return m ? uri.substring(i-6) : s;
+  }
+
+  const hashValue = function() {
+    return $(location).attr('hash').substring(1).replace(/[^\w-]/g,'');
+  }
+
+  const hashUrl = function() {
+    return '#'+hashValue();
+  }
+
+  const pathName = function() {
+    return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, '');
+  }
+
+  const storeLink = function(link) {
+    if (!$("#nav-sync").hasClass('sync')) {
+      Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0);
+    }
+  }
+
+  const deleteLink = function() {
+    Cookie.eraseSetting(NAVPATH_COOKIE_NAME);
+  }
+
+  const cachedLink = function() {
+    return Cookie.readSetting(NAVPATH_COOKIE_NAME,'');
+  }
+
+  const getScript = function(scriptName,func) {
+    const head = document.getElementsByTagName("head")[0];
+    const script = document.createElement('script');
+    script.id = scriptName;
+    script.type = 'text/javascript';
+    script.onload = func;
+    script.src = scriptName+'.js';
+    head.appendChild(script);
+  }
+
+  const createIndent = function(o,domNode,node) {
+    let level=-1;
+    let n = node;
+    while (n.parentNode) { level++; n=n.parentNode; }
+    if (node.childrenData) {
+      const imgNode = document.createElement("span");
+      imgNode.className = 'arrow';
+      imgNode.style.paddingLeft=(16*level).toString()+'px';
+      imgNode.innerHTML=ARROW_RIGHT;
+      node.plus_img = imgNode;
+      node.expandToggle = document.createElement("a");
+      node.expandToggle.href = "javascript:void(0)";
+      node.expandToggle.onclick = function() {
+        if (node.expanded) {
+          $(node.getChildrenUL()).slideUp("fast");
+          node.plus_img.innerHTML=ARROW_RIGHT;
+          node.expanded = false;
+        } else {
+          expandNode(o, node, false, true);
+        }
+      }
+      node.expandToggle.appendChild(imgNode);
+      domNode.appendChild(node.expandToggle);
+    } else {
+      let span = document.createElement("span");
+      span.className = 'arrow';
+      span.style.width   = 16*(level+1)+'px';
+      span.innerHTML = '&#160;';
+      domNode.appendChild(span);
+    }
+  }
+
+  let animationInProgress = false;
+
+  const gotoAnchor = function(anchor,aname) {
+    let pos, docContent = $('#doc-content');
+    let ancParent = $(anchor.parent());
+    if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle')  ||
+        ancParent.hasClass('fieldname')   || ancParent.hasClass('fieldtype') ||
+        ancParent.is(':header')) {
+      pos = ancParent.offset().top;
+    } else if (anchor.position()) {
+      pos = anchor.offset().top;
+    }
+    if (pos) {
+      const dcOffset    = docContent.offset().top;
+      const dcHeight    = docContent.height();
+      const dcScrHeight = docContent[0].scrollHeight
+      const dcScrTop    = docContent.scrollTop();
+      let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop));
+      animationInProgress = true;
+      docContent.animate({
+        scrollTop: pos + dcScrTop - dcOffset
+      },Math.max(50,Math.min(500,dist)),function() {
+        animationInProgress=false;
+        if (anchor.parent().attr('class')=='memItemLeft') {
+          let rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
+          glowEffect(rows.children(),300); // member without details
+        } else if (anchor.parent().attr('class')=='fieldname') {
+          glowEffect(anchor.parent().parent(),1000); // enum value
+        } else if (anchor.parent().attr('class')=='fieldtype') {
+          glowEffect(anchor.parent().parent(),1000); // struct field
+        } else if (anchor.parent().is(":header")) {
+          glowEffect(anchor.parent(),1000); // section header
+        } else {
+          glowEffect(anchor.next(),1000); // normal member
+        }
+      });
+    }
+  }
+
+  const newNode = function(o, po, text, link, childrenData, lastNode) {
+    const node = {
+      children     : [],
+      childrenData : childrenData,
+      depth        : po.depth + 1,
+      relpath      : po.relpath,
+      isLast       : lastNode,
+      li           : document.createElement("li"),
+      parentNode   : po,
+      itemDiv      : document.createElement("div"),
+      labelSpan    : document.createElement("span"),
+      label        : document.createTextNode(text),
+      expanded     : false,
+      childrenUL   : null,
+      getChildrenUL : function() {
+        if (!this.childrenUL) {
+          this.childrenUL = document.createElement("ul");
+          this.childrenUL.className = "children_ul";
+          this.childrenUL.style.display = "none";
+          this.li.appendChild(node.childrenUL);
+        }
+        return node.childrenUL;
+      },
+    };
+
+    node.itemDiv.className = "item";
+    node.labelSpan.className = "label";
+    createIndent(o,node.itemDiv,node);
+    node.itemDiv.appendChild(node.labelSpan);
+    node.li.appendChild(node.itemDiv);
+
+    const a = document.createElement("a");
+    node.labelSpan.appendChild(a);
+    po.getChildrenUL().appendChild(node.li);
+    a.appendChild(node.label);
+    if (link) {
+      let url;
+      if (link.substring(0,1)=='^') {
+        url = link.substring(1);
+        link = url;
+      } else {
+        url = node.relpath+link;
+      }
+      a.className = stripPath(link.replace('#',':'));
+      if (link.indexOf('#')!=-1) {
+        const aname = '#'+link.split('#')[1];
+        const srcPage = stripPath(pathName());
+        const targetPage = stripPath(link.split('#')[0]);
+        a.href = srcPage!=targetPage ? url : aname;
+        a.onclick = function() {
+          storeLink(link);
+          aPPar = $(a).parent().parent();
+          if (!aPPar.hasClass('selected')) {
+            $('.item').removeClass('selected');
+            $('.item').removeAttr('id');
+            aPPar.addClass('selected');
+            aPPar.attr('id','selected');
+          }
+          const anchor = $(aname);
+          gotoAnchor(anchor,aname);
+        };
+      } else {
+        a.href = url;
+        a.onclick = () => storeLink(link);
+      }
+    } else if (childrenData != null) {
+      a.className = "nolink";
+      a.href = "javascript:void(0)";
+      a.onclick = node.expandToggle.onclick;
+    }
+    return node;
+  }
+
+  const showRoot = function() {
+    const headerHeight = $("#top").height();
+    const footerHeight = $("#nav-path").height();
+    const windowHeight = $(window).height() - headerHeight - footerHeight;
+    (function() { // retry until we can scroll to the selected item
+      try {
+        const navtree=$('#nav-tree');
+        navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
+      } catch (err) {
+        setTimeout(arguments.callee, 0);
+      }
+    })();
+  }
+
+  const expandNode = function(o, node, imm, setFocus) {
+    if (node.childrenData && !node.expanded) {
+      if (typeof(node.childrenData)==='string') {
+        const varName = node.childrenData;
+        getScript(node.relpath+varName,function() {
+          node.childrenData = getData(varName);
+          expandNode(o, node, imm, setFocus);
+        });
+      } else {
+        if (!node.childrenVisited) {
+          getNode(o, node);
+        }
+        $(node.getChildrenUL()).slideDown("fast");
+        node.plus_img.innerHTML = ARROW_DOWN;
+        node.expanded = true;
+        if (setFocus) {
+          $(node.expandToggle).focus();
+        }
+      }
+    }
+  }
+
+  const glowEffect = function(n,duration) {
+    n.addClass('glow').delay(duration).queue(function(next) {
+      $(this).removeClass('glow');next();
+    });
+  }
+
+  const highlightAnchor = function() {
+    const aname = hashUrl();
+    const anchor = $(aname);
+    gotoAnchor(anchor,aname);
+  }
+
+  const selectAndHighlight = function(hash,n) {
+    let a;
+    if (hash) {
+      const link=stripPath(pathName())+':'+hash.substring(1);
+      a=$('.item a[class$="'+link+'"]');
+    }
+    if (a && a.length) {
+      a.parent().parent().addClass('selected');
+      a.parent().parent().attr('id','selected');
+      highlightAnchor();
+    } else if (n) {
+      $(n.itemDiv).addClass('selected');
+      $(n.itemDiv).attr('id','selected');
+    }
+    let topOffset=5;
+    if ($('#nav-tree-contents .item:first').hasClass('selected')) {
+      topOffset+=25;
+    }
+    $('#nav-sync').css('top',topOffset+'px');
+    showRoot();
+  }
+
+  const showNode = function(o, node, index, hash) {
+    if (node && node.childrenData) {
+      if (typeof(node.childrenData)==='string') {
+        const varName = node.childrenData;
+        getScript(node.relpath+varName,function() {
+          node.childrenData = getData(varName);
+          showNode(o,node,index,hash);
+        });
+      } else {
+        if (!node.childrenVisited) {
+          getNode(o, node);
+        }
+        $(node.getChildrenUL()).css({'display':'block'});
+        node.plus_img.innerHTML = ARROW_DOWN;
+        node.expanded = true;
+        const n = node.children[o.breadcrumbs[index]];
+        if (index+1<o.breadcrumbs.length) {
+          showNode(o,n,index+1,hash);
+        } else if (typeof(n.childrenData)==='string') {
+          const varName = n.childrenData;
+          getScript(n.relpath+varName,function() {
+            n.childrenData = getData(varName);
+            node.expanded=false;
+            showNode(o,node,index,hash); // retry with child node expanded
+          });
+        } else {
+          const rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
+          if (rootBase=="index" || rootBase=="pages" || rootBase=="search") {
+            expandNode(o, n, true, false);
+          }
+          selectAndHighlight(hash,n);
+        }
+      }
+    } else {
+      selectAndHighlight(hash);
+    }
+  }
+
+  const removeToInsertLater = function(element) {
+    const parentNode = element.parentNode;
+    const nextSibling = element.nextSibling;
+    parentNode.removeChild(element);
+    return function() {
+      if (nextSibling) {
+        parentNode.insertBefore(element, nextSibling);
+      } else {
+        parentNode.appendChild(element);
+      }
+    };
+  }
+
+  const getNode = function(o, po) {
+    const insertFunction = removeToInsertLater(po.li);
+    po.childrenVisited = true;
+    const l = po.childrenData.length-1;
+    for (let i in po.childrenData) {
+      const nodeData = po.childrenData[i];
+      po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], i==l);
+    }
+    insertFunction();
+  }
+
+  const gotoNode = function(o,subIndex,root,hash,relpath) {
+    const nti = navTreeSubIndices[subIndex][root+hash];
+    o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
+    if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
+      navTo(o,NAVTREE[0][1],"",relpath);
+      $('.item').removeClass('selected');
+      $('.item').removeAttr('id');
+    }
+    if (o.breadcrumbs) {
+      o.breadcrumbs.unshift(0); // add 0 for root node
+      showNode(o, o.node, 0, hash);
+    }
+  }
+
+  const navTo = function(o,root,hash,relpath) {
+    const link = cachedLink();
+    if (link) {
+      const parts = link.split('#');
+      root = parts[0];
+      hash = parts.length>1 ? '#'+parts[1].replace(/[^\w-]/g,'') : '';
+    }
+    if (hash.match(/^#l\d+$/)) {
+      const anchor=$('a[name='+hash.substring(1)+']');
+      glowEffect(anchor.parent(),1000); // line number
+      hash=''; // strip line number anchors
+    }
+    const url=root+hash;
+    let i=-1;
+    while (NAVTREEINDEX[i+1]<=url) i++;
+    if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
+    if (navTreeSubIndices[i]) {
+      gotoNode(o,i,root,hash,relpath)
+    } else {
+      getScript(relpath+'navtreeindex'+i,function() {
+        navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
+        if (navTreeSubIndices[i]) {
+          gotoNode(o,i,root,hash,relpath);
+        }
+      });
+    }
+  }
+
+  const showSyncOff = function(n,relpath) {
+    n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>');
+  }
+
+  const showSyncOn = function(n,relpath) {
+    n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>');
+  }
+
+  const o = {
+    toroot : toroot,
+    node   : {
+      childrenData  : NAVTREE,
+      children      : [],
+      childrenUL    : document.createElement("ul"),
+      getChildrenUL : function() { return this.childrenUL },
+      li            : document.getElementById("nav-tree-contents"),
+      depth         : 0,
+      relpath       : relpath,
+      expanded      : false,
+      isLast        : true,
+      plus_img      : document.createElement("span"),
+    },
+  };
+  o.node.li.appendChild(o.node.childrenUL);
+  o.node.plus_img.className = 'arrow';
+  o.node.plus_img.innerHTML = ARROW_RIGHT;
+
+  const navSync = $('#nav-sync');
+  if (cachedLink()) {
+    showSyncOff(navSync,relpath);
+    navSync.removeClass('sync');
+  } else {
+    showSyncOn(navSync,relpath);
+  }
+
+  navSync.click(() => {
+    const navSync = $('#nav-sync');
+    if (navSync.hasClass('sync')) {
+      navSync.removeClass('sync');
+      showSyncOff(navSync,relpath);
+      storeLink(stripPath2(pathName())+hashUrl());
+    } else {
+      navSync.addClass('sync');
+      showSyncOn(navSync,relpath);
+      deleteLink();
+    }
+  });
+
+  navTo(o,toroot,hashUrl(),relpath);
+  showRoot();
+
+  $(window).bind('hashchange', () => {
+    if (!animationInProgress) {
+      if (window.location.hash && window.location.hash.length>1) {
+        let a;
+        if ($(location).attr('hash')) {
+          const clslink=stripPath(pathName())+':'+hashValue();
+          a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]');
+        }
+        if (a==null || !$(a).parent().parent().hasClass('selected')) {
+          $('.item').removeClass('selected');
+          $('.item').removeAttr('id');
+        }
+        const link=stripPath2(pathName());
+        navTo(o,link,hashUrl(),relpath);
+        } else {
+        $('#doc-content').scrollTop(0);
+        $('.item').removeClass('selected');
+        $('.item').removeAttr('id');
+        navTo(o,toroot,hashUrl(),relpath);
+      }
+    }
+  });
+
+  $("div.toc a[href]").click(function(e) {
+    e.preventDefault();
+    const aname = $(this).attr("href");
+    gotoAnchor($(aname),aname);
+  });
+}
+/* @license-end */
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/navtreedata.js b/templates/_folder_Projects/tic-tac-toe/docs/html/navtreedata.js
new file mode 100644
index 0000000..a348294
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/navtreedata.js
@@ -0,0 +1,55 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ 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 NAVTREE =
+[
+  [ "My Project", "index.html", [
+    [ "Classes", "annotated.html", [
+      [ "Class List", "annotated.html", "annotated_dup" ],
+      [ "Class Index", "classes.html", null ],
+      [ "Class Hierarchy", "hierarchy.html", "hierarchy" ],
+      [ "Class Members", "functions.html", [
+        [ "All", "functions.html", null ],
+        [ "Functions", "functions_func.html", null ],
+        [ "Variables", "functions_vars.html", null ]
+      ] ]
+    ] ],
+    [ "Files", "files.html", [
+      [ "File List", "files.html", "files_dup" ],
+      [ "File Members", "globals.html", [
+        [ "All", "globals.html", null ],
+        [ "Functions", "globals_func.html", null ],
+        [ "Variables", "globals_vars.html", null ]
+      ] ]
+    ] ]
+  ] ]
+];
+
+var NAVTREEINDEX =
+[
+"_tic_tac_toe_window_8cpp.html"
+];
+
+var SYNCONMSG = 'click to disable panel synchronization';
+var SYNCOFFMSG = 'click to enable panel synchronization';
\ No newline at end of file
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/navtreeindex0.js b/templates/_folder_Projects/tic-tac-toe/docs/html/navtreeindex0.js
new file mode 100644
index 0000000..e0b607b
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/navtreeindex0.js
@@ -0,0 +1,55 @@
+var NAVTREEINDEX0 =
+{
+"_tic_tac_toe_window_8cpp.html":[1,0,1],
+"_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51":[1,0,1,6],
+"_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007":[1,0,1,3],
+"_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702":[1,0,1,9],
+"_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e":[1,0,1,4],
+"_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514":[1,0,1,10],
+"_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339":[1,0,1,1],
+"_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0":[1,0,1,2],
+"_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9":[1,0,1,8],
+"_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6":[1,0,1,7],
+"_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311":[1,0,1,12],
+"_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc":[1,0,1,0],
+"_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610":[1,0,1,11],
+"_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25":[1,0,1,5],
+"_tic_tac_toe_window_8h.html":[1,0,2],
+"_tic_tac_toe_window_8h_source.html":[1,0,2],
+"annotated.html":[0,0],
+"class_tic_tac_toe_window.html":[0,0,0],
+"class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8":[0,0,0,9],
+"class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e":[0,0,0,19],
+"class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d":[0,0,0,10],
+"class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562":[0,0,0,0],
+"class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a":[0,0,0,3],
+"class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48":[0,0,0,14],
+"class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4":[0,0,0,2],
+"class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0":[0,0,0,8],
+"class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f":[0,0,0,6],
+"class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e":[0,0,0,11],
+"class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925":[0,0,0,18],
+"class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644":[0,0,0,17],
+"class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec":[0,0,0,12],
+"class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40":[0,0,0,16],
+"class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c":[0,0,0,7],
+"class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801":[0,0,0,13],
+"class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870":[0,0,0,5],
+"class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205":[0,0,0,1],
+"class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4":[0,0,0,4],
+"class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b":[0,0,0,15],
+"classes.html":[0,1],
+"files.html":[1,0],
+"functions.html":[0,3,0],
+"functions_func.html":[0,3,1],
+"functions_vars.html":[0,3,2],
+"globals.html":[1,1,0],
+"globals_func.html":[1,1,1],
+"globals_vars.html":[1,1,2],
+"hierarchy.html":[0,2],
+"index.html":[],
+"main_8cpp.html":[1,0,0],
+"main_8cpp.html#adfe9299470a3da06f80456efb1e52945":[1,0,0,1],
+"main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4":[1,0,0,0],
+"pages.html":[]
+};
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/open.png b/templates/_folder_Projects/tic-tac-toe/docs/html/open.png
new file mode 100644
index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b
GIT binary patch
literal 123
zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y
znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM<Rdl=8h
W@EqZ{ytxBt8iS{+pUXO@geCxcDJg#d

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/plus.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/plus.svg
new file mode 100644
index 0000000..0752016
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/plus.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#fcfcfc;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+    <rect style="fill:#808080;stroke-width:0" width="15.874998" height="52.916668" x="44.979168" y="26.458332" />
+  </g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/plusd.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/plusd.svg
new file mode 100644
index 0000000..0c65bfe
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/plusd.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#000000;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+    <rect style="fill:#808080;stroke-width:0" width="15.874998" height="52.916668" x="44.979168" y="26.458332" />
+  </g>
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/resize.js b/templates/_folder_Projects/tic-tac-toe/docs/html/resize.js
new file mode 100644
index 0000000..178d03b
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/resize.js
@@ -0,0 +1,147 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ 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(treeview) {
+  let sidenav,navtree,content,header,footer,barWidth=6;
+  const RESIZE_COOKIE_NAME = ''+'width';
+
+  function resizeWidth() {
+    const sidenavWidth = $(sidenav).outerWidth();
+    content.css({marginLeft:parseInt(sidenavWidth)+"px"});
+    if (typeof page_layout!=='undefined' && page_layout==1) {
+      footer.css({marginLeft:parseInt(sidenavWidth)+"px"});
+    }
+    Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
+  }
+
+  function restoreWidth(navWidth) {
+    content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+    if (typeof page_layout!=='undefined' && page_layout==1) {
+      footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+    }
+    sidenav.css({width:navWidth + "px"});
+  }
+
+  function resizeHeight(treeview) {
+    const headerHeight = header.outerHeight();
+    const windowHeight = $(window).height();
+    let contentHeight;
+    if (treeview)
+    {
+      const footerHeight = footer.outerHeight();
+      let navtreeHeight,sideNavHeight;
+      if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
+        contentHeight = windowHeight - headerHeight - footerHeight;
+        navtreeHeight = contentHeight;
+        sideNavHeight = contentHeight;
+      } else if (page_layout==1) { /* DISABLE_INDEX=YES */
+        contentHeight = windowHeight - footerHeight;
+        navtreeHeight = windowHeight - headerHeight;
+        sideNavHeight = windowHeight;
+      }
+      navtree.css({height:navtreeHeight + "px"});
+      sidenav.css({height:sideNavHeight + "px"});
+    }
+    else
+    {
+      contentHeight = windowHeight - headerHeight;
+    }
+    content.css({height:contentHeight + "px"});
+    if (location.hash.slice(1)) {
+      (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
+    }
+  }
+
+  function collapseExpand() {
+    let newWidth;
+    if (sidenav.width()>0) {
+      newWidth=0;
+    } else {
+      const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
+      newWidth = (width>250 && width<$(window).width()) ? width : 250;
+    }
+    restoreWidth(newWidth);
+    const sidenavWidth = $(sidenav).outerWidth();
+    Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
+  }
+
+  header  = $("#top");
+  content = $("#doc-content");
+  footer  = $("#nav-path");
+  sidenav = $("#side-nav");
+  if (!treeview) {
+//    title   = $("#titlearea");
+//    titleH  = $(title).height();
+//    let animating = false;
+//    content.on("scroll", function() {
+//      slideOpts = { duration: 200,
+//                    step: function() {
+//                        contentHeight = $(window).height() - header.outerHeight();
+//                        content.css({ height : contentHeight + "px" });
+//                      },
+//                    done: function() { animating=false; }
+//                  };
+//      if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) {
+//        title.slideUp(slideOpts);
+//        animating=true;
+//      } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) {
+//        title.slideDown(slideOpts);
+//        animating=true;
+//      }
+//    });
+  } else {
+    navtree = $("#nav-tree");
+    $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+    $(sidenav).resizable({ minWidth: 0 });
+  }
+  $(window).resize(function() { resizeHeight(treeview); });
+  if (treeview)
+  {
+    const device = navigator.userAgent.toLowerCase();
+    const touch_device = device.match(/(iphone|ipod|ipad|android)/);
+    if (touch_device) { /* wider split bar for touch only devices */
+      $(sidenav).css({ paddingRight:'20px' });
+      $('.ui-resizable-e').css({ width:'20px' });
+      $('#nav-sync').css({ right:'34px' });
+      barWidth=20;
+    }
+    const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
+    if (width) { restoreWidth(width); } else { resizeWidth(); }
+  }
+  resizeHeight(treeview);
+  const url = location.href;
+  const i=url.indexOf("#");
+  if (i>=0) window.location.hash=url.substr(i);
+  const _preventDefault = function(evt) { evt.preventDefault(); };
+  if (treeview)
+  {
+    $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
+    $(".ui-resizable-handle").dblclick(collapseExpand);
+    // workaround for firefox
+    $("body").css({overflow: "hidden"});
+  }
+  $(window).on('load',function() { resizeHeight(treeview); });
+}
+/* @license-end */
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_0.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_0.js
new file mode 100644
index 0000000..9c4e6b4
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_0.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['board_0',['board',['../class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec',1,'TicTacToeWindow']]],
+  ['board_5fsize_1',['BOARD_SIZE',['../_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc',1,'TicTacToeWindow.cpp']]],
+  ['board_5fx_2',['BOARD_X',['../_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339',1,'TicTacToeWindow.cpp']]],
+  ['board_5fy_3',['BOARD_Y',['../_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0',1,'TicTacToeWindow.cpp']]],
+  ['button_5fheight_4',['BUTTON_HEIGHT',['../_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007',1,'TicTacToeWindow.cpp']]],
+  ['button_5fwidth_5',['BUTTON_WIDTH',['../_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_1.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_1.js
new file mode 100644
index 0000000..5ee50af
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_1.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['cb_5fquit_0',['cb_quit',['../class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205',1,'TicTacToeWindow']]],
+  ['cb_5freset_1',['cb_reset',['../class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4',1,'TicTacToeWindow']]],
+  ['cell_5fsize_2',['CELL_SIZE',['../_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25',1,'TicTacToeWindow.cpp']]],
+  ['check_5fdraw_3',['check_draw',['../class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a',1,'TicTacToeWindow']]],
+  ['check_5fwinner_4',['check_winner',['../class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4',1,'TicTacToeWindow']]],
+  ['current_5fplayer_5',['current_player',['../class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_2.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_2.js
new file mode 100644
index 0000000..baca892
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_2.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['draw_5fboard_0',['draw_board',['../class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870',1,'TicTacToeWindow']]],
+  ['draw_5fmarks_1',['draw_marks',['../class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f',1,'TicTacToeWindow']]],
+  ['draw_5fwinning_5fline_2',['draw_winning_line',['../class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_3.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_3.js
new file mode 100644
index 0000000..6787f05
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['font_5fsize_0',['FONT_SIZE',['../_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_4.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_4.js
new file mode 100644
index 0000000..9573636
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['game_5fover_0',['game_over',['../class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_5.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_5.js
new file mode 100644
index 0000000..cb3fc35
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['handle_5fclick_0',['handle_click',['../class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_6.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_6.js
new file mode 100644
index 0000000..91d457d
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['last_5fplayer_0',['last_player',['../class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_7.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_7.js
new file mode 100644
index 0000000..6e458bb
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_7.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['main_0',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]],
+  ['main_2ecpp_1',['main.cpp',['../main_8cpp.html',1,'']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_8.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_8.js
new file mode 100644
index 0000000..f443a5b
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_8.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['play_0',['play',['../class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8',1,'TicTacToeWindow']]],
+  ['play_5ftick_5ftack_5ftoe_1',['play_tick_tack_toe',['../main_8cpp.html#adfe9299470a3da06f80456efb1e52945',1,'main.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_9.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_9.js
new file mode 100644
index 0000000..6511a11
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_9.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['quit_5fbutton_0',['quit_button',['../class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40',1,'TicTacToeWindow']]],
+  ['quit_5fbutton_5fx_1',['QUIT_BUTTON_X',['../_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6',1,'TicTacToeWindow.cpp']]],
+  ['quit_5fbutton_5fy_2',['QUIT_BUTTON_Y',['../_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_a.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_a.js
new file mode 100644
index 0000000..c3a41e3
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_a.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+  ['reset_5fbutton_0',['reset_button',['../class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644',1,'TicTacToeWindow']]],
+  ['reset_5fbutton_5fx_1',['RESET_BUTTON_X',['../_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702',1,'TicTacToeWindow.cpp']]],
+  ['reset_5fbutton_5fy_2',['RESET_BUTTON_Y',['../_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514',1,'TicTacToeWindow.cpp']]],
+  ['reset_5fgame_3',['reset_game',['../class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d',1,'TicTacToeWindow']]],
+  ['result_5ftext_4',['result_text',['../class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925',1,'TicTacToeWindow']]],
+  ['result_5ftext_5fx_5',['RESULT_TEXT_X',['../_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610',1,'TicTacToeWindow.cpp']]],
+  ['result_5ftext_5fy_6',['RESULT_TEXT_Y',['../_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_b.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_b.js
new file mode 100644
index 0000000..17b0d26
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_b.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['tictactoewindow_0',['TicTacToeWindow',['../class_tic_tac_toe_window.html',1,'TicTacToeWindow'],['../class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562',1,'TicTacToeWindow::TicTacToeWindow()']]],
+  ['tictactoewindow_2ecpp_1',['TicTacToeWindow.cpp',['../_tic_tac_toe_window_8cpp.html',1,'']]],
+  ['tictactoewindow_2eh_2',['TicTacToeWindow.h',['../_tic_tac_toe_window_8h.html',1,'']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_c.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_c.js
new file mode 100644
index 0000000..dac93d1
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/all_c.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['winning_5fline_0',['winning_line',['../class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e',1,'TicTacToeWindow']]],
+  ['write_5fresult_5fto_5ffile_1',['write_result_to_file',['../class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/classes_0.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/classes_0.js
new file mode 100644
index 0000000..bed3446
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/classes_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['tictactoewindow_0',['TicTacToeWindow',['../class_tic_tac_toe_window.html',1,'']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/close.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/search/close.svg
new file mode 100644
index 0000000..337d6cc
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/close.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 11 11"
+   height="11"
+   width="11"
+   id="svg2"
+   version="1.1">
+  <defs
+     id="defs6" />
+  <path
+     id="path12"
+     d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
+     style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/files_0.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/files_0.js
new file mode 100644
index 0000000..695b4fd
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/files_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['main_2ecpp_0',['main.cpp',['../main_8cpp.html',1,'']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/files_1.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/files_1.js
new file mode 100644
index 0000000..6c30e31
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/files_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['tictactoewindow_2ecpp_0',['TicTacToeWindow.cpp',['../_tic_tac_toe_window_8cpp.html',1,'']]],
+  ['tictactoewindow_2eh_1',['TicTacToeWindow.h',['../_tic_tac_toe_window_8h.html',1,'']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_0.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_0.js
new file mode 100644
index 0000000..3cc2582
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_0.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['cb_5fquit_0',['cb_quit',['../class_tic_tac_toe_window.html#af06d97a6bc5af57d20496efef4b42205',1,'TicTacToeWindow']]],
+  ['cb_5freset_1',['cb_reset',['../class_tic_tac_toe_window.html#a721a06d7b66e4891e1c4e4714828e9e4',1,'TicTacToeWindow']]],
+  ['check_5fdraw_2',['check_draw',['../class_tic_tac_toe_window.html#a3ecf87bb2c63d9173859ffc791dba65a',1,'TicTacToeWindow']]],
+  ['check_5fwinner_3',['check_winner',['../class_tic_tac_toe_window.html#af31e8259796b4c713695f76a2e9ebbb4',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_1.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_1.js
new file mode 100644
index 0000000..baca892
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_1.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['draw_5fboard_0',['draw_board',['../class_tic_tac_toe_window.html#aea9364e6964b4d713db301e1dca05870',1,'TicTacToeWindow']]],
+  ['draw_5fmarks_1',['draw_marks',['../class_tic_tac_toe_window.html#a80d700fab549c892da6454ddf134e73f',1,'TicTacToeWindow']]],
+  ['draw_5fwinning_5fline_2',['draw_winning_line',['../class_tic_tac_toe_window.html#ad6b36f228408151798ccf6f93ae6bb9c',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_2.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_2.js
new file mode 100644
index 0000000..cb3fc35
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['handle_5fclick_0',['handle_click',['../class_tic_tac_toe_window.html#a7e59cd0a04b03284ce8a95ae104a40a0',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_3.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_3.js
new file mode 100644
index 0000000..8abf631
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['main_0',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_4.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_4.js
new file mode 100644
index 0000000..f443a5b
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['play_0',['play',['../class_tic_tac_toe_window.html#a02a67ddb17bb56a4e34ce07b75d4c4c8',1,'TicTacToeWindow']]],
+  ['play_5ftick_5ftack_5ftoe_1',['play_tick_tack_toe',['../main_8cpp.html#adfe9299470a3da06f80456efb1e52945',1,'main.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_5.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_5.js
new file mode 100644
index 0000000..6d64820
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['reset_5fgame_0',['reset_game',['../class_tic_tac_toe_window.html#a256a8423cb3c6e7b6e3ca6251866867d',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_6.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_6.js
new file mode 100644
index 0000000..d2dfc6a
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['tictactoewindow_0',['TicTacToeWindow',['../class_tic_tac_toe_window.html#a2fa1df2b5d6d7f69eef48cd28d588562',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_7.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_7.js
new file mode 100644
index 0000000..cbf9998
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/functions_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['write_5fresult_5fto_5ffile_0',['write_result_to_file',['../class_tic_tac_toe_window.html#a87e9e26b5d34f5bd3cadee4e2778df3e',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag.svg
new file mode 100644
index 0000000..ffb6cf0
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 20 19"
+   height="19"
+   width="20"
+   id="svg2"
+   version="1.1">
+  <defs
+     id="defs6" />
+  <circle
+     r="3.5"
+     cy="8.5"
+     cx="5.5"
+     id="path4611"
+     style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+  <path
+     id="path4630"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_d.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_d.svg
new file mode 100644
index 0000000..4122773
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_d.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 20 19"
+   height="19"
+   width="20"
+   id="svg2"
+   version="1.1">
+  <defs
+     id="defs6" />
+  <circle
+     r="3.5"
+     cy="8.5"
+     cx="5.5"
+     id="path4611"
+     style="fill:#000000;fill-opacity:0;stroke:#C5C5C5;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+  <path
+     id="path4630"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     style="fill:none;stroke:#C5C5C5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_sel.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_sel.svg
new file mode 100644
index 0000000..553dba8
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_sel.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="svg2"
+   width="20"
+   height="19"
+   viewBox="0 0 20 19"
+  >
+  <defs
+     id="defs6" />
+  <circle
+     style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4611"
+     cx="5.5"
+     cy="8.5"
+     r="3.5" />
+  <path
+     style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 11,7 13.5,10 16,7 Z"
+     id="path4609"
+     />
+  <path
+     style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     id="path4630"
+     />
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_seld.svg b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_seld.svg
new file mode 100644
index 0000000..c906f84
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/mag_seld.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="svg2"
+   width="20"
+   height="19"
+   viewBox="0 0 20 19"
+  >
+  <defs
+     id="defs6" />
+  <circle
+     style="fill:#000000;fill-opacity:0;stroke:#c5C5C5;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4611"
+     cx="5.5"
+     cy="8.5"
+     r="3.5" />
+  <path
+     style="fill:#c5C5C5;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 11,7 13.5,10 16,7 Z"
+     id="path4609"
+     />
+  <path
+     style="fill:none;stroke:#c5C5C5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     id="path4630"
+     />
+</svg>
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/search.css b/templates/_folder_Projects/tic-tac-toe/docs/html/search/search.css
new file mode 100644
index 0000000..a53214f
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/search.css
@@ -0,0 +1,286 @@
+/*---------------- Search Box */
+
+#MSearchBox {
+    position: absolute;
+    right: 5px;
+}
+/*---------------- Search box styling */
+
+.SRPage * {
+    font-weight: normal;
+    line-height: normal;
+}
+
+dark-mode-toggle {
+    margin-left: 5px;
+    display: flex;
+    float: right;
+}
+
+#MSearchBox {
+    display: inline-block;
+    white-space : nowrap;
+    background: var(--search-background-color);
+    border-radius: 0.65em;
+    box-shadow: var(--search-box-shadow);
+    z-index: 102;
+}
+
+#MSearchBox .left {
+    display: inline-block;
+    vertical-align: middle;
+    height: 1.4em;
+}
+
+#MSearchSelect {
+    display: inline-block;
+    vertical-align: middle;
+    width: 20px;
+    height: 19px;
+    background-image: var(--search-magnification-select-image);
+    margin: 0 0 0 0.3em;
+    padding: 0;
+}
+
+#MSearchSelectExt {
+    display: inline-block;
+    vertical-align: middle;
+    width: 10px;
+    height: 19px;
+    background-image: var(--search-magnification-image);
+    margin: 0 0 0 0.5em;
+    padding: 0;
+}
+
+
+#MSearchField {
+    display: inline-block;
+    vertical-align: middle;
+    width: 7.5em;
+    height: 19px;
+    margin: 0 0.15em;
+    padding: 0;
+    line-height: 1em;
+    border:none;
+    color: var(--search-foreground-color);
+    outline: none;
+    font-family: var(--font-family-search);
+    -webkit-border-radius: 0px;
+    border-radius: 0px;
+    background: none;
+}
+
+@media(hover: none) {
+    /* to avoid zooming on iOS */
+    #MSearchField {
+        font-size: 16px;
+    }
+}
+
+#MSearchBox .right {
+    display: inline-block;
+    vertical-align: middle;
+    width: 1.4em;
+    height: 1.4em;
+}
+
+#MSearchClose {
+    display: none;
+    font-size: inherit;
+    background : none;
+    border: none;
+    margin: 0;
+    padding: 0;
+    outline: none;
+
+}
+
+#MSearchCloseImg {
+    padding: 0.3em;
+    margin: 0;
+}
+
+.MSearchBoxActive #MSearchField {
+    color: var(--search-active-color);
+}
+
+
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid var(--search-filter-border-color);
+    background-color: var(--search-filter-background-color);
+    z-index: 10001;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    -moz-border-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+    font: 8pt var(--font-family-search);
+    padding-left:  2px;
+    padding-right: 12px;
+    border: 0px;
+}
+
+span.SelectionMark {
+    margin-right: 4px;
+    font-family: var(--font-family-monospace);
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem {
+    display: block;
+    outline-style: none;
+    color: var(--search-filter-foreground-color);
+    text-decoration: none;
+    padding-left:   6px;
+    padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+    color: var(--search-filter-foreground-color);
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem:hover {
+    color: var(--search-filter-highlight-text-color);
+    background-color: var(--search-filter-highlight-bg-color);
+    outline-style: none;
+    text-decoration: none;
+    cursor: pointer;
+    display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+    /*width: 60ex;*/
+    height: 15em;
+}
+
+#MSearchResultsWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid var(--search-results-border-color);
+    background-color: var(--search-results-background-color);
+    z-index:10000;
+    width: 300px;
+    height: 400px;
+    overflow: auto;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+    clear:both; 
+}
+
+.SREntry {
+    font-size: 10pt;
+    padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+    font-size: 8pt;
+    padding: 1px 5px;
+}
+
+div.SRPage {
+    margin: 5px 2px;
+    background-color: var(--search-results-background-color);
+}
+
+.SRChildren {
+    padding-left: 3ex; padding-bottom: .5em 
+}
+
+.SRPage .SRChildren {
+    display: none;
+}
+
+.SRSymbol {
+    font-weight: bold;
+    color: var(--search-results-foreground-color);
+    font-family: var(--font-family-search);
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRScope {
+    display: block;
+    color: var(--search-results-foreground-color);
+    font-family: var(--font-family-search);
+    font-size: 8pt;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+    text-decoration: underline;
+}
+
+span.SRScope {
+    padding-left: 4px;
+    font-family: var(--font-family-search);
+}
+
+.SRPage .SRStatus {
+    padding: 2px 5px;
+    font-size: 8pt;
+    font-style: italic;
+    font-family: var(--font-family-search);
+}
+
+.SRResult {
+    display: none;
+}
+
+div.searchresults {
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.pages b {
+   color: white;
+   padding: 5px 5px 3px 5px;
+   background-image: var(--nav-gradient-active-image-parent);
+   background-repeat: repeat-x;
+   text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+    line-height: 17px;
+    margin-left: 4px;
+    text-decoration: none;
+}
+
+.hl {
+    font-weight: bold;
+}
+
+#searchresults {
+    margin-bottom: 20px;
+}
+
+.searchpages {
+    margin-top: 10px;
+}
+
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/search.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/search.js
new file mode 100644
index 0000000..666af01
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/search.js
@@ -0,0 +1,694 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ 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
+ */
+const SEARCH_COOKIE_NAME = ''+'search_grp';
+
+const searchResults = new SearchResults();
+
+/* A class handling everything associated with the search panel.
+
+   Parameters:
+   name - The name of the global variable that will be
+          storing this instance.  Is needed to be able to set timeouts.
+   resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, extension) {
+  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
+  if (!extension || extension == "") { extension = ".html"; }
+
+  function getXPos(item) {
+    let x = 0;
+    if (item.offsetWidth) {
+      while (item && item!=document.body) {
+        x   += item.offsetLeft;
+        item = item.offsetParent;
+      }
+    }
+    return x;
+  }
+
+  function getYPos(item) {
+    let y = 0;
+    if (item.offsetWidth) {
+      while (item && item!=document.body) {
+        y   += item.offsetTop;
+        item = item.offsetParent;
+      }
+    }
+    return y;
+  }
+
+  // ---------- Instance variables
+  this.name                  = name;
+  this.resultsPath           = resultsPath;
+  this.keyTimeout            = 0;
+  this.keyTimeoutLength      = 500;
+  this.closeSelectionTimeout = 300;
+  this.lastSearchValue       = "";
+  this.lastResultsPage       = "";
+  this.hideTimeout           = 0;
+  this.searchIndex           = 0;
+  this.searchActive          = false;
+  this.extension             = extension;
+
+  // ----------- DOM Elements
+
+  this.DOMSearchField              = () => document.getElementById("MSearchField");
+  this.DOMSearchSelect             = () => document.getElementById("MSearchSelect");
+  this.DOMSearchSelectWindow       = () => document.getElementById("MSearchSelectWindow");
+  this.DOMPopupSearchResults       = () => document.getElementById("MSearchResults");
+  this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow");
+  this.DOMSearchClose              = () => document.getElementById("MSearchClose");
+  this.DOMSearchBox                = () => document.getElementById("MSearchBox");
+
+  // ------------ Event Handlers
+
+  // Called when focus is added or removed from the search field.
+  this.OnSearchFieldFocus = function(isActive) {
+    this.Activate(isActive);
+  }
+
+  this.OnSearchSelectShow = function() {
+    const searchSelectWindow = this.DOMSearchSelectWindow();
+    const searchField        = this.DOMSearchSelect();
+
+    const left = getXPos(searchField);
+    const top  = getYPos(searchField) + searchField.offsetHeight;
+
+    // show search selection popup
+    searchSelectWindow.style.display='block';
+    searchSelectWindow.style.left =  left + 'px';
+    searchSelectWindow.style.top  =  top  + 'px';
+
+    // stop selection hide timer
+    if (this.hideTimeout) {
+      clearTimeout(this.hideTimeout);
+      this.hideTimeout=0;
+    }
+    return false; // to avoid "image drag" default event
+  }
+
+  this.OnSearchSelectHide = function() {
+    this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this),
+                                  this.closeSelectionTimeout);
+  }
+
+  // Called when the content of the search field is changed.
+  this.OnSearchFieldChange = function(evt) {
+    if (this.keyTimeout) { // kill running timer
+      clearTimeout(this.keyTimeout);
+      this.keyTimeout = 0;
+    }
+
+    const e = evt ? evt : window.event; // for IE
+    if (e.keyCode==40 || e.keyCode==13) {
+      if (e.shiftKey==1) {
+        this.OnSearchSelectShow();
+        const win=this.DOMSearchSelectWindow();
+        for (let i=0;i<win.childNodes.length;i++) {
+          const child = win.childNodes[i]; // get span within a
+          if (child.className=='SelectItem') {
+            child.focus();
+            return;
+          }
+        }
+        return;
+      } else {
+        const elem = searchResults.NavNext(0);
+        if (elem) elem.focus();
+      }
+    } else if (e.keyCode==27) { // Escape out of the search field
+      e.stopPropagation();
+      this.DOMSearchField().blur();
+      this.DOMPopupSearchResultsWindow().style.display = 'none';
+      this.DOMSearchClose().style.display = 'none';
+      this.lastSearchValue = '';
+      this.Activate(false);
+      return;
+    }
+
+    // strip whitespaces
+    const searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+    if (searchValue != this.lastSearchValue) { // search value has changed
+      if (searchValue != "") { // non-empty search
+        // set timer for search update
+        this.keyTimeout = setTimeout(this.Search.bind(this), this.keyTimeoutLength);
+      } else { // empty search field
+        this.DOMPopupSearchResultsWindow().style.display = 'none';
+        this.DOMSearchClose().style.display = 'none';
+        this.lastSearchValue = '';
+      }
+    }
+  }
+
+  this.SelectItemCount = function() {
+    let count=0;
+    const win=this.DOMSearchSelectWindow();
+    for (let i=0;i<win.childNodes.length;i++) {
+      const child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem') {
+        count++;
+      }
+    }
+    return count;
+  }
+
+  this.GetSelectionIdByName = function(name) {
+    let j=0;
+    const win=this.DOMSearchSelectWindow();
+    for (let i=0;i<win.childNodes.length;i++) {
+      const child = win.childNodes[i];
+      if (child.className=='SelectItem') {
+        if (child.childNodes[1].nodeValue==name) {
+          return j;
+        }
+        j++;
+      }
+    }
+    return 0;
+  }
+
+  this.SelectItemSet = function(id) {
+    let j=0;
+    const win=this.DOMSearchSelectWindow();
+    for (let i=0;i<win.childNodes.length;i++) {
+      const child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem') {
+        const node = child.firstChild;
+        if (j==id) {
+          node.innerHTML='&#8226;';
+          Cookie.writeSetting(SEARCH_COOKIE_NAME, child.childNodes[1].nodeValue, 0)
+        } else {
+          node.innerHTML='&#160;';
+        }
+        j++;
+      }
+    }
+  }
+
+  // Called when an search filter selection is made.
+  // set item with index id as the active item
+  this.OnSelectItem = function(id) {
+    this.searchIndex = id;
+    this.SelectItemSet(id);
+    const searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+    if (searchValue!="" && this.searchActive) { // something was found -> do a search
+      this.Search();
+    }
+  }
+
+  this.OnSearchSelectKey = function(evt) {
+    const e = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) { // Down
+      this.searchIndex++;
+      this.OnSelectItem(this.searchIndex);
+    } else if (e.keyCode==38 && this.searchIndex>0) { // Up
+      this.searchIndex--;
+      this.OnSelectItem(this.searchIndex);
+    } else if (e.keyCode==13 || e.keyCode==27) {
+      e.stopPropagation();
+      this.OnSelectItem(this.searchIndex);
+      this.CloseSelectionWindow();
+      this.DOMSearchField().focus();
+    }
+    return false;
+  }
+
+  // --------- Actions
+
+  // Closes the results window.
+  this.CloseResultsWindow = function() {
+    this.DOMPopupSearchResultsWindow().style.display = 'none';
+    this.DOMSearchClose().style.display = 'none';
+    this.Activate(false);
+  }
+
+  this.CloseSelectionWindow = function() {
+    this.DOMSearchSelectWindow().style.display = 'none';
+  }
+
+  // Performs a search.
+  this.Search = function() {
+    this.keyTimeout = 0;
+
+    // strip leading whitespace
+    const searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+    const code = searchValue.toLowerCase().charCodeAt(0);
+    let idxChar = searchValue.substr(0, 1).toLowerCase();
+    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair
+      idxChar = searchValue.substr(0, 2);
+    }
+
+    let jsFile;
+    let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+    if (idx!=-1) {
+      const hexCode=idx.toString(16);
+      jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js';
+    }
+
+    const loadJS = function(url, impl, loc) {
+      const scriptTag = document.createElement('script');
+      scriptTag.src = url;
+      scriptTag.onload = impl;
+      scriptTag.onreadystatechange = impl;
+      loc.appendChild(scriptTag);
+    }
+
+    const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+    const domSearchBox = this.DOMSearchBox();
+    const domPopupSearchResults = this.DOMPopupSearchResults();
+    const domSearchClose = this.DOMSearchClose();
+    const resultsPath = this.resultsPath;
+
+    const handleResults = function() {
+      document.getElementById("Loading").style.display="none";
+      if (typeof searchData !== 'undefined') {
+        createResults(resultsPath);
+        document.getElementById("NoMatches").style.display="none";
+      }
+
+      if (idx!=-1) {
+        searchResults.Search(searchValue);
+      } else { // no file with search results => force empty search results
+        searchResults.Search('====');
+      }
+
+      if (domPopupSearchResultsWindow.style.display!='block') {
+        domSearchClose.style.display = 'inline-block';
+        let left = getXPos(domSearchBox) + 150;
+        let top  = getYPos(domSearchBox) + 20;
+        domPopupSearchResultsWindow.style.display = 'block';
+        left -= domPopupSearchResults.offsetWidth;
+        const maxWidth  = document.body.clientWidth;
+        const maxHeight = document.body.clientHeight;
+        let width = 300;
+        if (left<10) left=10;
+        if (width+left+8>maxWidth) width=maxWidth-left-8;
+        let height = 400;
+        if (height+top+8>maxHeight) height=maxHeight-top-8;
+        domPopupSearchResultsWindow.style.top     = top  + 'px';
+        domPopupSearchResultsWindow.style.left    = left + 'px';
+        domPopupSearchResultsWindow.style.width   = width + 'px';
+        domPopupSearchResultsWindow.style.height  = height + 'px';
+      }
+    }
+
+    if (jsFile) {
+      loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow());
+    } else {
+      handleResults();
+    }
+
+    this.lastSearchValue = searchValue;
+  }
+
+  // -------- Activation Functions
+
+  // Activates or deactivates the search panel, resetting things to
+  // their default values if necessary.
+  this.Activate = function(isActive) {
+    if (isActive || // open it
+      this.DOMPopupSearchResultsWindow().style.display == 'block'
+    ) {
+      this.DOMSearchBox().className = 'MSearchBoxActive';
+      this.searchActive = true;
+    } else if (!isActive) { // directly remove the panel
+      this.DOMSearchBox().className = 'MSearchBoxInactive';
+      this.searchActive             = false;
+      this.lastSearchValue          = ''
+      this.lastResultsPage          = '';
+      this.DOMSearchField().value   = '';
+    }
+  }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults() {
+
+  function convertToId(search) {
+    let result = '';
+    for (let i=0;i<search.length;i++) {
+      const c = search.charAt(i);
+      const cn = c.charCodeAt(0);
+      if (c.match(/[a-z0-9\u0080-\uFFFF]/)) {
+        result+=c;
+      } else if (cn<16) {
+        result+="_0"+cn.toString(16);
+      } else {
+        result+="_"+cn.toString(16);
+      }
+    }
+    return result;
+  }
+
+  // The number of matches from the last run of <Search()>.
+  this.lastMatchCount = 0;
+  this.lastKey = 0;
+  this.repeatOn = false;
+
+  // Toggles the visibility of the passed element ID.
+  this.FindChildElement = function(id) {
+    const parentElement = document.getElementById(id);
+    let element = parentElement.firstChild;
+
+    while (element && element!=parentElement) {
+      if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') {
+        return element;
+      }
+
+      if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) {
+        element = element.firstChild;
+      } else if (element.nextSibling) {
+        element = element.nextSibling;
+      } else {
+        do {
+          element = element.parentNode;
+        }
+        while (element && element!=parentElement && !element.nextSibling);
+
+        if (element && element!=parentElement) {
+          element = element.nextSibling;
+        }
+      }
+    }
+  }
+
+  this.Toggle = function(id) {
+    const element = this.FindChildElement(id);
+    if (element) {
+      if (element.style.display == 'block') {
+        element.style.display = 'none';
+      } else {
+        element.style.display = 'block';
+      }
+    }
+  }
+
+  // Searches for the passed string.  If there is no parameter,
+  // it takes it from the URL query.
+  //
+  // Always returns true, since other documents may try to call it
+  // and that may or may not be possible.
+  this.Search = function(search) {
+    if (!search) { // get search word from URL
+      search = window.location.search;
+      search = search.substring(1);  // Remove the leading '?'
+      search = unescape(search);
+    }
+
+    search = search.replace(/^ +/, ""); // strip leading spaces
+    search = search.replace(/ +$/, ""); // strip trailing spaces
+    search = search.toLowerCase();
+    search = convertToId(search);
+
+    const resultRows = document.getElementsByTagName("div");
+    let matches = 0;
+
+    let i = 0;
+    while (i < resultRows.length) {
+      const row = resultRows.item(i);
+      if (row.className == "SRResult") {
+        let rowMatchName = row.id.toLowerCase();
+        rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+        if (search.length<=rowMatchName.length &&
+          rowMatchName.substr(0, search.length)==search) {
+          row.style.display = 'block';
+          matches++;
+        } else {
+          row.style.display = 'none';
+        }
+      }
+      i++;
+    }
+    document.getElementById("Searching").style.display='none';
+    if (matches == 0) { // no results
+      document.getElementById("NoMatches").style.display='block';
+    } else { // at least one result
+      document.getElementById("NoMatches").style.display='none';
+    }
+    this.lastMatchCount = matches;
+    return true;
+  }
+
+  // return the first item with index index or higher that is visible
+  this.NavNext = function(index) {
+    let focusItem;
+    for (;;) {
+      const focusName = 'Item'+index;
+      focusItem = document.getElementById(focusName);
+      if (focusItem && focusItem.parentNode.parentNode.style.display=='block') {
+        break;
+      } else if (!focusItem) { // last element
+        break;
+      }
+      focusItem=null;
+      index++;
+    }
+    return focusItem;
+  }
+
+  this.NavPrev = function(index) {
+    let focusItem;
+    for (;;) {
+      const focusName = 'Item'+index;
+      focusItem = document.getElementById(focusName);
+      if (focusItem && focusItem.parentNode.parentNode.style.display=='block') {
+        break;
+      } else if (!focusItem) { // last element
+        break;
+      }
+      focusItem=null;
+      index--;
+    }
+    return focusItem;
+  }
+
+  this.ProcessKeys = function(e) {
+    if (e.type == "keydown") {
+      this.repeatOn = false;
+      this.lastKey = e.keyCode;
+    } else if (e.type == "keypress") {
+      if (!this.repeatOn) {
+        if (this.lastKey) this.repeatOn = true;
+        return false; // ignore first keypress after keydown
+      }
+    } else if (e.type == "keyup") {
+      this.lastKey = 0;
+      this.repeatOn = false;
+    }
+    return this.lastKey!=0;
+  }
+
+  this.Nav = function(evt,itemIndex) {
+    const e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==13) return true;
+    if (!this.ProcessKeys(e)) return false;
+
+    if (this.lastKey==38) { // Up
+      const newIndex = itemIndex-1;
+      let focusItem = this.NavPrev(newIndex);
+      if (focusItem) {
+        let child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+        if (child && child.style.display == 'block') { // children visible
+          let n=0;
+          let tmpElem;
+          for (;;) { // search for last child
+            tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+            if (tmpElem) {
+              focusItem = tmpElem;
+            } else { // found it!
+              break;
+            }
+            n++;
+          }
+        }
+      }
+      if (focusItem) {
+        focusItem.focus();
+      } else { // return focus to search field
+        document.getElementById("MSearchField").focus();
+      }
+    } else if (this.lastKey==40) { // Down
+      const newIndex = itemIndex+1;
+      let focusItem;
+      const item = document.getElementById('Item'+itemIndex);
+      const elem = this.FindChildElement(item.parentNode.parentNode.id);
+      if (elem && elem.style.display == 'block') { // children visible
+        focusItem = document.getElementById('Item'+itemIndex+'_c0');
+      }
+      if (!focusItem) focusItem = this.NavNext(newIndex);
+      if (focusItem)  focusItem.focus();
+    } else if (this.lastKey==39) { // Right
+      const item = document.getElementById('Item'+itemIndex);
+      const elem = this.FindChildElement(item.parentNode.parentNode.id);
+      if (elem) elem.style.display = 'block';
+    } else if (this.lastKey==37) { // Left
+      const item = document.getElementById('Item'+itemIndex);
+      const elem = this.FindChildElement(item.parentNode.parentNode.id);
+      if (elem) elem.style.display = 'none';
+    } else if (this.lastKey==27) { // Escape
+      e.stopPropagation();
+      searchBox.CloseResultsWindow();
+      document.getElementById("MSearchField").focus();
+    } else if (this.lastKey==13) { // Enter
+      return true;
+    }
+    return false;
+  }
+
+  this.NavChild = function(evt,itemIndex,childIndex) {
+    const e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==13) return true;
+    if (!this.ProcessKeys(e)) return false;
+
+    if (this.lastKey==38) { // Up
+      if (childIndex>0) {
+        const newIndex = childIndex-1;
+        document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+      } else { // already at first child, jump to parent
+        document.getElementById('Item'+itemIndex).focus();
+      }
+    } else if (this.lastKey==40) { // Down
+      const newIndex = childIndex+1;
+      let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+      if (!elem) { // last child, jump to parent next parent
+        elem = this.NavNext(itemIndex+1);
+      }
+      if (elem) {
+        elem.focus();
+      }
+    } else if (this.lastKey==27) { // Escape
+      e.stopPropagation();
+      searchBox.CloseResultsWindow();
+      document.getElementById("MSearchField").focus();
+    } else if (this.lastKey==13) { // Enter
+      return true;
+    }
+    return false;
+  }
+}
+
+function createResults(resultsPath) {
+
+  function setKeyActions(elem,action) {
+    elem.setAttribute('onkeydown',action);
+    elem.setAttribute('onkeypress',action);
+    elem.setAttribute('onkeyup',action);
+  }
+
+  function setClassAttr(elem,attr) {
+    elem.setAttribute('class',attr);
+    elem.setAttribute('className',attr);
+  }
+
+  const results = document.getElementById("SRResults");
+  results.innerHTML = '';
+  searchData.forEach((elem,index) => {
+    const id = elem[0];
+    const srResult = document.createElement('div');
+    srResult.setAttribute('id','SR_'+id);
+    setClassAttr(srResult,'SRResult');
+    const srEntry = document.createElement('div');
+    setClassAttr(srEntry,'SREntry');
+    const srLink = document.createElement('a');
+    srLink.setAttribute('id','Item'+index);
+    setKeyActions(srLink,'return searchResults.Nav(event,'+index+')');
+    setClassAttr(srLink,'SRSymbol');
+    srLink.innerHTML = elem[1][0];
+    srEntry.appendChild(srLink);
+    if (elem[1].length==2) { // single result
+      srLink.setAttribute('href',resultsPath+elem[1][1][0]);
+      srLink.setAttribute('onclick','searchBox.CloseResultsWindow()');
+      if (elem[1][1][1]) {
+       srLink.setAttribute('target','_parent');
+      } else {
+       srLink.setAttribute('target','_blank');
+      }
+      const srScope = document.createElement('span');
+      setClassAttr(srScope,'SRScope');
+      srScope.innerHTML = elem[1][1][2];
+      srEntry.appendChild(srScope);
+    } else { // multiple results
+      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+      const srChildren = document.createElement('div');
+      setClassAttr(srChildren,'SRChildren');
+      for (let c=0; c<elem[1].length-1; c++) {
+        const srChild = document.createElement('a');
+        srChild.setAttribute('id','Item'+index+'_c'+c);
+        setKeyActions(srChild,'return searchResults.NavChild(event,'+index+','+c+')');
+        setClassAttr(srChild,'SRScope');
+        srChild.setAttribute('href',resultsPath+elem[1][c+1][0]);
+        srChild.setAttribute('onclick','searchBox.CloseResultsWindow()');
+        if (elem[1][c+1][1]) {
+         srChild.setAttribute('target','_parent');
+        } else {
+         srChild.setAttribute('target','_blank');
+        }
+        srChild.innerHTML = elem[1][c+1][2];
+        srChildren.appendChild(srChild);
+      }
+      srEntry.appendChild(srChildren);
+    }
+    srResult.appendChild(srEntry);
+    results.appendChild(srResult);
+  });
+}
+
+function init_search() {
+  const results = document.getElementById("MSearchSelectWindow");
+
+  results.tabIndex=0;
+  for (let key in indexSectionLabels) {
+    const link = document.createElement('a');
+    link.setAttribute('class','SelectItem');
+    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+    link.href='javascript:void(0)';
+    link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+    results.appendChild(link);
+  }
+
+  const input = document.getElementById("MSearchSelect");
+  const searchSelectWindow = document.getElementById("MSearchSelectWindow");
+  input.tabIndex=0;
+  input.addEventListener("keydown", function(event) {
+    if (event.keyCode==13 || event.keyCode==40) {
+      event.preventDefault();
+      if (searchSelectWindow.style.display == 'block') {
+        searchBox.CloseSelectionWindow();
+      } else {
+        searchBox.OnSearchSelectShow();
+        searchBox.DOMSearchSelectWindow().focus();
+      }
+    }
+  });
+  const name = Cookie.readSetting(SEARCH_COOKIE_NAME,0);
+  const id = searchBox.GetSelectionIdByName(name);
+  searchBox.OnSelectItem(id);
+}
+/* @license-end */
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/searchdata.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/searchdata.js
new file mode 100644
index 0000000..a7cc9e9
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/searchdata.js
@@ -0,0 +1,27 @@
+var indexSectionsWithContent =
+{
+  0: "bcdfghlmpqrtw",
+  1: "t",
+  2: "mt",
+  3: "cdhmprtw",
+  4: "bcfglqrw"
+};
+
+var indexSectionNames =
+{
+  0: "all",
+  1: "classes",
+  2: "files",
+  3: "functions",
+  4: "variables"
+};
+
+var indexSectionLabels =
+{
+  0: "All",
+  1: "Classes",
+  2: "Files",
+  3: "Functions",
+  4: "Variables"
+};
+
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_0.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_0.js
new file mode 100644
index 0000000..9c4e6b4
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_0.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['board_0',['board',['../class_tic_tac_toe_window.html#ac5767923f6cfdd1cdc0e38646817c0ec',1,'TicTacToeWindow']]],
+  ['board_5fsize_1',['BOARD_SIZE',['../_tic_tac_toe_window_8cpp.html#ad61312467c560853b884baba85ccb6cc',1,'TicTacToeWindow.cpp']]],
+  ['board_5fx_2',['BOARD_X',['../_tic_tac_toe_window_8cpp.html#a734171bf86d25d8fea97ec3db770f339',1,'TicTacToeWindow.cpp']]],
+  ['board_5fy_3',['BOARD_Y',['../_tic_tac_toe_window_8cpp.html#a7a25c54899aa5eb9067fa355bd0fd2f0',1,'TicTacToeWindow.cpp']]],
+  ['button_5fheight_4',['BUTTON_HEIGHT',['../_tic_tac_toe_window_8cpp.html#a3b3ba52cbf88acec5e16bc4637e77007',1,'TicTacToeWindow.cpp']]],
+  ['button_5fwidth_5',['BUTTON_WIDTH',['../_tic_tac_toe_window_8cpp.html#a5abca8d83548cc8db6c91b204fc0fc3e',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_1.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_1.js
new file mode 100644
index 0000000..2711767
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['cell_5fsize_0',['CELL_SIZE',['../_tic_tac_toe_window_8cpp.html#afb719a6797676ba986f056e63fa45a25',1,'TicTacToeWindow.cpp']]],
+  ['current_5fplayer_1',['current_player',['../class_tic_tac_toe_window.html#ae1d2eddf2ec46d88ec2850088bf83801',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_2.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_2.js
new file mode 100644
index 0000000..6787f05
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['font_5fsize_0',['FONT_SIZE',['../_tic_tac_toe_window_8cpp.html#a36f8b4b0227f9dac9b5018b20c9a1f51',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_3.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_3.js
new file mode 100644
index 0000000..9573636
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['game_5fover_0',['game_over',['../class_tic_tac_toe_window.html#a43bc194a5b454fdd4e586b29862ead48',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_4.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_4.js
new file mode 100644
index 0000000..91d457d
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['last_5fplayer_0',['last_player',['../class_tic_tac_toe_window.html#afacdc2b25347aec3b74b3a0a89cf121b',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_5.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_5.js
new file mode 100644
index 0000000..6511a11
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_5.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['quit_5fbutton_0',['quit_button',['../class_tic_tac_toe_window.html#ac85e0fda6ce6f20bfad83a38cf7d6b40',1,'TicTacToeWindow']]],
+  ['quit_5fbutton_5fx_1',['QUIT_BUTTON_X',['../_tic_tac_toe_window_8cpp.html#a907d240438ef5a233d89f060d2ab7ce6',1,'TicTacToeWindow.cpp']]],
+  ['quit_5fbutton_5fy_2',['QUIT_BUTTON_Y',['../_tic_tac_toe_window_8cpp.html#a7c67ea62ace270bfbc30fa241530f5f9',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_6.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_6.js
new file mode 100644
index 0000000..dc78441
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_6.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['reset_5fbutton_0',['reset_button',['../class_tic_tac_toe_window.html#aa984f2d95bc444451acfb242a0cd3644',1,'TicTacToeWindow']]],
+  ['reset_5fbutton_5fx_1',['RESET_BUTTON_X',['../_tic_tac_toe_window_8cpp.html#a46907144aa852e2450a4784f7bd67702',1,'TicTacToeWindow.cpp']]],
+  ['reset_5fbutton_5fy_2',['RESET_BUTTON_Y',['../_tic_tac_toe_window_8cpp.html#a65f9c1ca2be2ebd241cba5b02ae39514',1,'TicTacToeWindow.cpp']]],
+  ['result_5ftext_3',['result_text',['../class_tic_tac_toe_window.html#a98f8a4942b7eb70471c720297c492925',1,'TicTacToeWindow']]],
+  ['result_5ftext_5fx_4',['RESULT_TEXT_X',['../_tic_tac_toe_window_8cpp.html#ae32dfc3a976f735ff01c1757ba107610',1,'TicTacToeWindow.cpp']]],
+  ['result_5ftext_5fy_5',['RESULT_TEXT_Y',['../_tic_tac_toe_window_8cpp.html#aba7c1f86d23ea3fad3d8099789a51311',1,'TicTacToeWindow.cpp']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_7.js b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_7.js
new file mode 100644
index 0000000..0d79aeb
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/search/variables_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['winning_5fline_0',['winning_line',['../class_tic_tac_toe_window.html#a0fde7a5bc88317c24139a2a997f49b0e',1,'TicTacToeWindow']]]
+];
diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/splitbar.png b/templates/_folder_Projects/tic-tac-toe/docs/html/splitbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e
GIT binary patch
literal 314
zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc>
z_*`QK&+BH@jW<lVxsx`Ym~nPnqw$O~`M84{XS6<Mm0<Zit<Tk``D^RashfFq{wG<#
zZG2vRxL<$IhkFMSBd@N1`uRtp)t>rYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O
zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|E<fHWtM%;-WUJ&>EGLnJsniYK!2U1
Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/splitbard.png b/templates/_folder_Projects/tic-tac-toe/docs/html/splitbard.png
new file mode 100644
index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068
GIT binary patch
literal 282
zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf<Wq_r;B4q1>@VhhFKy35^fiT
zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb<d2ww+4sWx@iO~d@7T)Z$L;%F
z_Vvfjr-#*_i?>&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE=
zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O
V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd?

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/sync_off.png b/templates/_folder_Projects/tic-tac-toe/docs/html/sync_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc
GIT binary patch
literal 853
zcmV-b1FHOqP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0009VNkl<ZcmeI*
zOK4PA7{KxW<S|JmGnqI|rb(KahDirA+8B+gVk8A)%pe9yF;+3L5iKZG7xuBS&@L(k
z33MTXOIxMHjirbWgs8M;qhM?(_-v^nS(KzU#%Ih_`hB-^XYSm&39)2*I6vmhow@fr
z=iKj{vvuv-e;!~uA+biR6pf-n<cdGVuox5<#BBg4c>oT|#XixUYy%lpuf3i8{fX!o
zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh
zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V
zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py;
zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK
zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh
zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO<q-Bsh$IuZaopT|9E
z-75alp&U9s%(|8uI^NA(#AD;nc=%{ivdZX(QFJ7~-yf%_Adjk`W@NhjJTyZ8*;|!n
z9=K#TJuZz+={YZ#>8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK&
z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sT<tBHx6XfOFDx2(ijpMiR>xLGlJY5nc&Re
zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y
zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb
zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E
f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j*

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/sync_on.png b/templates/_folder_Projects/tic-tac-toe/docs/html/sync_on.png
new file mode 100644
index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76
GIT binary patch
literal 845
zcmV-T1G4;yP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0009NNkl<ZcmeI*
zUr1D09KiAKIOC-Ar)j4&EoU~y1|7@QCTmeCsMH~fFw#|0OWK8m>Y;xxyHF2B5Wzm|
zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I<ojWskx{8*sm){4kXJ+p2oO6HY
zoL5W7@h*VL_(ZL!7GaSmtl}SWU-XD;q7T4~4ZuW>_))aP?*T)ow&n59{}X4$3Goat
zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F<o_Z}1zllSWC8!Z+rkFN>={P0Y^?$4t
z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K
zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ
z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT
zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m
zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M
z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu
zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU#
z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+
z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a
z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$M<u9&-IHqnYs=DL+lbi3lG2ysF!p!_2H=p
zj-g89hmThki^;JHknVE4V`@zS$(ZbTd?1=dsrXLRiJbUBq7weAmVjEk@rP>j4Uq05
X8=0q~qBNan00000NkvXXu0mjfptF>5

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_a.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_a.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247
GIT binary patch
literal 142
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD#
z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD
r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_ad.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_ad.png
new file mode 100644
index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d
GIT binary patch
literal 135
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In
zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4
jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6<r_{TVK|

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_b.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_b.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18
GIT binary patch
literal 169
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr
z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn<f<Rf3mJ=+uzfrOMlc%s`x4TZtnrR|B~W{
zyZP0m7vvtXV80W5^J2vvp97)4WrPK1-P<H^B$Ll|TGvzm;+92|BpdT89$b1Qf7x5g
UZ&RH}7SL`6Pgg&ebxsLQ0A}n&iU0rr

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_bd.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_bd.png
new file mode 100644
index 0000000000000000000000000000000000000000..91c25249869ffe5269c24f8c441e3f1bf75df400
GIT binary patch
literal 173
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QYD@)jv*C{Z|_EP9WoGMxiEXC
z*+er<&!~9SeFB;qdWZkM*Qnb6=Y<v@&*3w2PyYNmP%60gwdFMP&wo;^^nBV|3(M2*
z*jxC7^WBy{T+w*t)CB)8J1;C}`Wg1Eu&qNNCxPc5OM{{Il5M+!8{(pt&)hOwq4#ZF
XiX*3<piHC_(0&F_S3j3^P6<r_`0_!v

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_h.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd5cb705488e60fcf30f56fcc951dee74f3b095b
GIT binary patch
literal 177
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QWc&qjv*C{Z}0jF9dr<AdpNI7
zaOs_6=O($9b?lc?Qk=SJVv5%FA{O^TY1^*qJ@<p}E}!uH_1eoPJ&tpVl={bg{Skd2
zp1FO|;|R90%G3WYZM5AU=A4%H?3qaQhHt%H9G|xYJ)ff*|MmI*zD3`*Z|LP?7d&26
cn!ZiLK0QM$CeyB_80ZEDPgg&ebxsLQ0C?O;!~g&Q

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_hd.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_hd.png
new file mode 100644
index 0000000000000000000000000000000000000000..2489273d4ce1d11d3f7557335244c02b9959351b
GIT binary patch
literal 180
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq`U=jv*C{Z|8b*9dZzG*}eKq
zLz7a+10_jMu|=F8x0f5va$Ursw|7c<-`q2fuRgxI>y&q2{!U5bk+Tso_B!YCpDh>v
z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796<RKfbH6P<&Zg{jpvTk5
g<odruKTrK<y!3{DoqTGTH_#ajp00i_>zopr0EBT&m;e9(

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_s.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_s.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50
GIT binary patch
literal 184
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7)
zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$
z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan
kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tab_sd.png b/templates/_folder_Projects/tic-tac-toe/docs/html/tab_sd.png
new file mode 100644
index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19
GIT binary patch
literal 188
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9%
zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK
z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`<jkg7
oB>4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>%

literal 0
HcmV?d00001

diff --git a/templates/_folder_Projects/tic-tac-toe/docs/html/tabs.css b/templates/_folder_Projects/tic-tac-toe/docs/html/tabs.css
new file mode 100644
index 0000000..7fa4268
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/docs/html/tabs.css
@@ -0,0 +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:var(--nav-menu-button-color);-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:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.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:var(--nav-menu-toggle-color);-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:var(--nav-menu-background-color)}.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:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);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:var(--nav-gradient-image);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:var(--nav-text-normal-color) 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:var(--nav-separator-image);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:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) 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 var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-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 var(--nav-menu-foreground-color);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:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);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 var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) 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:var(--nav-gradient-image)}.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:var(--nav-menu-background-color)}}
diff --git a/templates/_folder_Projects/tic-tac-toe/game_results.txt b/templates/_folder_Projects/tic-tac-toe/game_results.txt
new file mode 100644
index 0000000..86de3f4
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/game_results.txt
@@ -0,0 +1,57 @@
+The game is a draw!
+The game is a draw!
+Player O wins!
+Player O wins!
+Player X wins!
+The game is a draw!
+The game is a draw!
+Player O wins!
+Player O wins!
+The game is a draw!
+The game is a draw!
+Player O wins!
+Player O wins!
+The game is a draw!
+Player O wins!
+Player O wins!
+Player X wins!
+Player O wins!
+Player X wins!
+Player X wins!
+Player O wins!
+Player O wins!
+Player X wins!
+Player X wins!
+Player O wins!
+The game is a draw!
+Player O wins!
+Player X wins!
+The game is a draw!
+The game is a draw!
+Player X wins!
+Player X wins!
+The game is a draw!
+The game is a draw!
+The game is a draw!
+Player O wins!
+Player O wins!
+Player X wins!
+Player O wins!
+Player O wins!
+Player O wins!
+Player X wins!
+The game is a draw!
+Player O wins!
+Player X wins!
+The game is a draw!
+The game is a draw!
+Player O wins!
+Player X wins!
+Player X wins!
+Player X wins!
+Player X wins!
+Player X wins!
+Player X wins!
+Player X wins!
+Player X wins!
+Player O wins!
diff --git a/templates/_folder_Projects/tic-tac-toe/main.cpp b/templates/_folder_Projects/tic-tac-toe/main.cpp
new file mode 100644
index 0000000..8ccdd43
--- /dev/null
+++ b/templates/_folder_Projects/tic-tac-toe/main.cpp
@@ -0,0 +1,32 @@
+/**
+ * @file main.cpp
+ * @brief Entry point for the Tic Tac Toe game.
+ * 
+ * @details This file uses the following libraries and resources:
+ * - TicTacToeWindow.h for the game window class
+ */
+
+#include "TicTacToeWindow.h"
+
+/**
+ * @brief Initializes and starts the Tic Tac Toe game.
+ */
+void play_tick_tack_toe() {
+    int x = 100;      ///< X-coordinate of the window.
+    int y = 50;       ///< Y-coordinate of the window.
+    int width = 640;  ///< Width of the window.
+    int height = 660; ///< Height of the window.
+    std::string title = "Tic Tac Toe"; ///< Title of the game window.
+
+    TicTacToeWindow game(x, y, width, height, title);
+    game.play();
+}
+
+/**
+ * @brief Main function, starts the game.
+ * @return int Exit status.
+ */
+int main() {
+    play_tick_tack_toe();
+    return 0;
+}
-- 
GitLab