diff --git a/SAS/TMSS/frontend/tmss_webapp/package-lock.json b/SAS/TMSS/frontend/tmss_webapp/package-lock.json
index 034f2620e09636da0d899ce4b5baddc21c44fe7d..17f76618b076e5cae4b28e1d5e206833d117f9a2 100644
--- a/SAS/TMSS/frontend/tmss_webapp/package-lock.json
+++ b/SAS/TMSS/frontend/tmss_webapp/package-lock.json
@@ -633,9 +633,9 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "node_modules/terser": {
-      "version": "5.22.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz",
-      "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==",
+      "version": "5.24.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz",
+      "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==",
       "dependencies": {
         "@jridgewell/source-map": "^0.3.3",
         "acorn": "^8.8.2",
@@ -671,6 +671,18 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/node-gyp/node_modules/@npmcli/fs": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+      "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
+      "dependencies": {
+        "@gar/promisify": "^1.1.3",
+        "semver": "^7.3.5"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/express/node_modules/debug": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -790,11 +802,6 @@
         "postcss": "^8.4.21"
       }
     },
-    "node_modules/pac-resolver/node_modules/ip": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
-      "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
-    },
     "node_modules/gauge": {
       "version": "4.0.4",
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
@@ -1025,6 +1032,28 @@
         "react": ">=16.8.0"
       }
     },
+    "node_modules/static-eval/node_modules/escodegen": {
+      "version": "1.14.3",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+      "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+      "dev": true,
+      "dependencies": {
+        "esprima": "^4.0.1",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
+      },
+      "engines": {
+        "node": ">=4.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
+      }
+    },
     "node_modules/memoize-one": {
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
@@ -1321,15 +1350,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/escodegen/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
     "node_modules/npm-check-updates/node_modules/minimatch": {
       "version": "9.0.3",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
@@ -1344,6 +1364,32 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "node_modules/node-gyp/node_modules/make-fetch-happen": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+      "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
+      "dependencies": {
+        "minipass-flush": "^1.0.5",
+        "minipass-fetch": "^2.0.3",
+        "minipass": "^3.1.6",
+        "minipass-pipeline": "^1.2.4",
+        "is-lambda": "^1.0.1",
+        "lru-cache": "^7.7.1",
+        "http-cache-semantics": "^4.1.0",
+        "ssri": "^9.0.0",
+        "socks-proxy-agent": "^7.0.0",
+        "cacache": "^16.1.0",
+        "https-proxy-agent": "^5.0.0",
+        "promise-retry": "^2.0.1",
+        "minipass-collect": "^1.0.2",
+        "http-proxy-agent": "^5.0.0",
+        "agentkeepalive": "^4.2.1",
+        "negotiator": "^0.6.3"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/make-dir": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
@@ -1949,9 +1995,9 @@
       }
     },
     "node_modules/@types/sockjs": {
-      "version": "0.3.35",
-      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.35.tgz",
-      "integrity": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw==",
+      "version": "0.3.36",
+      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
+      "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
       "dev": true,
       "dependencies": {
         "@types/node": "*"
@@ -2158,6 +2204,15 @@
         "postcss": "^8.4"
       }
     },
+    "node_modules/static-eval/node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
     "node_modules/jest-jasmine2/node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -2301,6 +2356,19 @@
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
+    "node_modules/jsonpath/node_modules/esprima": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz",
+      "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
     "node_modules/istanbul-lib-source-maps": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
@@ -2346,19 +2414,6 @@
         "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
       }
     },
-    "node_modules/@istanbuljs/load-nyc-config/node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true,
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/unicode-canonical-property-names-ecmascript": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -2406,14 +2461,14 @@
       }
     },
     "node_modules/@types/prop-types": {
-      "version": "15.7.9",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz",
-      "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g=="
+      "version": "15.7.10",
+      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz",
+      "integrity": "sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A=="
     },
     "node_modules/async": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
-      "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
+      "version": "3.2.5",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+      "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
       "dev": true
     },
     "node_modules/string.prototype.trimstart": {
@@ -2635,9 +2690,9 @@
       }
     },
     "node_modules/@types/yauzl": {
-      "version": "2.10.2",
-      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.2.tgz",
-      "integrity": "sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==",
+      "version": "2.10.3",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+      "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
       "optional": true,
       "dependencies": {
         "@types/node": "*"
@@ -2743,9 +2798,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001553",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz",
-      "integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==",
+      "version": "1.0.30001561",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz",
+      "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==",
       "funding": [
         {
           "type": "opencollective",
@@ -2762,9 +2817,9 @@
       ]
     },
     "node_modules/eslint": {
-      "version": "8.52.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
-      "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
+      "version": "8.53.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz",
+      "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==",
       "dev": true,
       "dependencies": {
         "ignore": "^5.2.0",
@@ -2782,7 +2837,7 @@
         "@ungap/structured-clone": "^1.2.0",
         "imurmurhash": "^0.1.4",
         "cross-spawn": "^7.0.2",
-        "@eslint/eslintrc": "^2.1.2",
+        "@eslint/eslintrc": "^2.1.3",
         "graphemer": "^1.4.0",
         "is-path-inside": "^3.0.3",
         "@nodelib/fs.walk": "^1.2.8",
@@ -2804,7 +2859,7 @@
         "find-up": "^5.0.0",
         "optionator": "^0.9.3",
         "escape-string-regexp": "^4.0.0",
-        "@eslint/js": "8.52.0"
+        "@eslint/js": "8.53.0"
       },
       "bin": {
         "eslint": "bin/eslint.js"
@@ -2988,6 +3043,18 @@
         "ajv": "^6.9.1"
       }
     },
+    "node_modules/react-scripts/node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
     "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
       "version": "5.1.1-v1",
       "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -3250,9 +3317,9 @@
       }
     },
     "node_modules/@types/istanbul-lib-coverage": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-      "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ=="
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+      "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="
     },
     "node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
@@ -3443,9 +3510,9 @@
       }
     },
     "node_modules/@types/yargs-parser": {
-      "version": "21.0.2",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz",
-      "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw=="
+      "version": "21.0.3",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+      "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
     },
     "node_modules/npm-check-updates/node_modules/brace-expansion": {
       "version": "2.0.1",
@@ -3664,9 +3731,9 @@
       }
     },
     "node_modules/pptr-testing-library/node_modules/@types/yargs": {
-      "version": "15.0.17",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.17.tgz",
-      "integrity": "sha512-cj53I8GUcWJIgWVTSVe2L7NJAB5XWGdsoMosVvUgv1jEnMbAcsbaCzt1coUcyi8Sda5PgTWAooG8jNyDTD+CWA==",
+      "version": "15.0.18",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.18.tgz",
+      "integrity": "sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ==",
       "dependencies": {
         "@types/yargs-parser": "*"
       }
@@ -3845,9 +3912,9 @@
       "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg=="
     },
     "node_modules/@types/semver": {
-      "version": "7.5.4",
-      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
-      "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==",
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz",
+      "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==",
       "dev": true
     },
     "node_modules/postcss-initial": {
@@ -3927,9 +3994,9 @@
       }
     },
     "node_modules/@types/scheduler": {
-      "version": "0.16.5",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz",
-      "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw=="
+      "version": "0.16.6",
+      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.6.tgz",
+      "integrity": "sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA=="
     },
     "node_modules/string-width-cjs": {
       "name": "string-width",
@@ -4065,9 +4132,9 @@
       }
     },
     "node_modules/@types/mime": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz",
-      "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==",
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+      "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
       "dev": true
     },
     "node_modules/shebang-regex": {
@@ -4079,9 +4146,9 @@
       }
     },
     "node_modules/cssdb": {
-      "version": "7.8.0",
-      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.8.0.tgz",
-      "integrity": "sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg==",
+      "version": "7.9.0",
+      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.9.0.tgz",
+      "integrity": "sha512-WPMT9seTQq6fPAa1yN4zjgZZeoTriSN2LqW9C+otjar12DQIWA4LuSfFrvFJiKp4oD0xIk1vumDLw8K9ur4NBw==",
       "dev": true,
       "funding": [
         {
@@ -4130,6 +4197,15 @@
         "react": "^15.0.2 || ^16.0.0 || ^17.0.0"
       }
     },
+    "node_modules/workbox-build/node_modules/universalify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
     "node_modules/jest-util/node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -4377,9 +4453,9 @@
       }
     },
     "node_modules/jest-editor-support/node_modules/@types/yargs": {
-      "version": "16.0.7",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz",
-      "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==",
+      "version": "16.0.8",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.8.tgz",
+      "integrity": "sha512-1GwLEkmFafeb/HbE6pC7tFlgYSQ4Iqh2qlWCq8xN+Qfaiaxr2PcLfuhfRFRYqI6XJyeFoLYyKnhFbNsst9FMtQ==",
       "dev": true,
       "dependencies": {
         "@types/yargs-parser": "*"
@@ -4589,9 +4665,9 @@
       }
     },
     "node_modules/chromium-bidi": {
-      "version": "0.4.32",
-      "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.32.tgz",
-      "integrity": "sha512-RJnw0PW3sNdx1WclINVfVVx8JUH+tWTHZNpnEzlcM+Qgvf40dUH34U7gJq+cc/0LE+rbPxeT6ldqWrCbUf4jeg==",
+      "version": "0.4.33",
+      "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.33.tgz",
+      "integrity": "sha512-IxoFM5WGQOIAd95qrSXzJUv4eXIrh+RvU3rwwqIiwYuvfE7U/Llj4fejbsJnjJMUYCuGtVQsY2gv7oGl4aTNSQ==",
       "dependencies": {
         "mitt": "3.0.1",
         "urlpattern-polyfill": "9.0.0"
@@ -4754,6 +4830,19 @@
         "node": ">= 0.4.0"
       }
     },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
     "node_modules/es6-weak-map": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
@@ -4900,9 +4989,9 @@
       "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
     },
     "node_modules/@types/http-cache-semantics": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz",
-      "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA=="
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+      "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
     },
     "node_modules/is-symbol": {
       "version": "1.0.4",
@@ -4919,6 +5008,14 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/node-gyp/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/react-scripts/node_modules/jest-leak-detector": {
       "version": "27.5.1",
       "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
@@ -5412,9 +5509,9 @@
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/@types/yargs": {
-      "version": "16.0.7",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz",
-      "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==",
+      "version": "16.0.8",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.8.tgz",
+      "integrity": "sha512-1GwLEkmFafeb/HbE6pC7tFlgYSQ4Iqh2qlWCq8xN+Qfaiaxr2PcLfuhfRFRYqI6XJyeFoLYyKnhFbNsst9FMtQ==",
       "dev": true,
       "dependencies": {
         "@types/yargs-parser": "*"
@@ -5517,13 +5614,9 @@
       }
     },
     "node_modules/jsonfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "dev": true,
-      "dependencies": {
-        "universalify": "^2.0.0"
-      },
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+      "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
       "optionalDependencies": {
         "graceful-fs": "^4.1.6"
       }
@@ -5541,9 +5634,9 @@
       "dev": true
     },
     "node_modules/eslint-formatter-gitlab": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-formatter-gitlab/-/eslint-formatter-gitlab-5.0.0.tgz",
-      "integrity": "sha512-4mF/Bam1xAzsNNYE7kWN/qBQD4mSMkDBEw5AoMLY4oU5iY7BxTxcAzs253FNnUKc5FvduD4Q4+/RW9l1xjz7Zg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-formatter-gitlab/-/eslint-formatter-gitlab-5.1.0.tgz",
+      "integrity": "sha512-IxhrjLYzDlbFgPWEnvZlWLwPjMeyymbyo0hDHWntZ3DSAP9AP9huj15KbU+BK3OqeO3OHhbFEh2TA6sR0KZhkA==",
       "dev": true,
       "dependencies": {
         "chalk": "^4.0.0",
@@ -5553,7 +5646,7 @@
         "url": "https://github.com/sponsors/remcohaszing"
       },
       "peerDependencies": {
-        "eslint": "^5 || ^6 || ^7 || ^8"
+        "eslint": ">=5"
       }
     },
     "node_modules/raw-body": {
@@ -6312,9 +6405,9 @@
       }
     },
     "node_modules/nanoid": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "version": "3.3.7",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
       "dev": true,
       "funding": [
         {
@@ -6348,9 +6441,9 @@
       }
     },
     "node_modules/tailwindcss": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.4.tgz",
-      "integrity": "sha512-JXZNOkggUAc9T5E7nCrimoXHcSf9h3NWFe5sh36CGD/3M5TRLuQeFnQoDsit2uVTqgoOZHLx5rTykLUu16vsMQ==",
+      "version": "3.3.5",
+      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz",
+      "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==",
       "dev": true,
       "dependencies": {
         "is-glob": "^4.0.3",
@@ -6581,9 +6674,9 @@
       }
     },
     "node_modules/@types/stack-utils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz",
-      "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+      "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
       "dev": true
     },
     "node_modules/tar/node_modules/yallist": {
@@ -6624,9 +6717,9 @@
       }
     },
     "node_modules/jest-jasmine2/node_modules/@types/yargs": {
-      "version": "16.0.7",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz",
-      "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==",
+      "version": "16.0.8",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.8.tgz",
+      "integrity": "sha512-1GwLEkmFafeb/HbE6pC7tFlgYSQ4Iqh2qlWCq8xN+Qfaiaxr2PcLfuhfRFRYqI6XJyeFoLYyKnhFbNsst9FMtQ==",
       "dev": true,
       "dependencies": {
         "@types/yargs-parser": "*"
@@ -6715,9 +6808,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.566",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.566.tgz",
-      "integrity": "sha512-mv+fAy27uOmTVlUULy15U3DVJ+jg+8iyKH1bpwboCRhtDC69GKf1PPTZvEIhCyDr81RFqfxZJYrbgp933a1vtg=="
+      "version": "1.4.578",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.578.tgz",
+      "integrity": "sha512-V0ZhSu1BQZKfG0yNEL6Dadzik8E1vAzfpVOapdSiT9F6yapEJ3Bk+4tZ4SMPdWiUchCgnM/ByYtBzp5ntzDMIA=="
     },
     "node_modules/@babel/parser": {
       "version": "7.23.0",
@@ -6774,9 +6867,9 @@
       }
     },
     "node_modules/streamx": {
-      "version": "2.15.1",
-      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz",
-      "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==",
+      "version": "2.15.2",
+      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.2.tgz",
+      "integrity": "sha512-b62pAV/aeMjUoRN2C/9F0n+G8AfcJjNC0zw/ZmOHeFsIe4m4GzjVW9m6VHXVjk536NbdU9JRwKMJRfkc+zUFTg==",
       "dependencies": {
         "fast-fifo": "^1.1.0",
         "queue-tick": "^1.0.1"
@@ -6968,9 +7061,9 @@
       }
     },
     "node_modules/ip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+      "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
     },
     "node_modules/sass-loader": {
       "version": "12.6.0",
@@ -7010,6 +7103,17 @@
         }
       }
     },
+    "node_modules/node-gyp/node_modules/fs-minipass": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
     "node_modules/jest-editor-support/node_modules/jest-worker": {
       "version": "27.5.1",
       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
@@ -7200,23 +7304,6 @@
         "elliptic": "^6.5.3"
       }
     },
-    "node_modules/escodegen/node_modules/optionator": {
-      "version": "0.8.3",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-      "dev": true,
-      "dependencies": {
-        "deep-is": "~0.1.3",
-        "fast-levenshtein": "~2.0.6",
-        "levn": "~0.3.0",
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2",
-        "word-wrap": "~1.2.3"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
     "node_modules/@xobotyi/scrollbar-width": {
       "version": "1.9.5",
       "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
@@ -7839,9 +7926,9 @@
       }
     },
     "node_modules/@types/estree": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz",
-      "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ=="
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
     },
     "node_modules/tempy/node_modules/type-fest": {
       "version": "0.16.0",
@@ -7871,11 +7958,12 @@
       }
     },
     "node_modules/selfsigned": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
-      "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
+      "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
       "dev": true,
       "dependencies": {
+        "@types/node-forge": "^1.3.0",
         "node-forge": "^1"
       },
       "engines": {
@@ -8003,6 +8091,17 @@
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
+    "node_modules/node-gyp/node_modules/ssri": {
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+      "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+      "dependencies": {
+        "minipass": "^3.1.1"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/urlpattern-polyfill": {
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz",
@@ -8799,6 +8898,19 @@
         "@babel/core": "^7.0.0-0"
       }
     },
+    "node_modules/static-eval/node_modules/levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
     "node_modules/babel-loader/node_modules/ajv": {
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -8831,9 +8943,9 @@
       }
     },
     "node_modules/@types/bonjour": {
-      "version": "3.5.12",
-      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.12.tgz",
-      "integrity": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg==",
+      "version": "3.5.13",
+      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
+      "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
       "dev": true,
       "dependencies": {
         "@types/node": "*"
@@ -9169,9 +9281,9 @@
       }
     },
     "node_modules/@types/express": {
-      "version": "4.17.20",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz",
-      "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==",
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+      "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
       "dev": true,
       "dependencies": {
         "@types/body-parser": "*",
@@ -9454,6 +9566,17 @@
         "node": ">=10"
       }
     },
+    "node_modules/node-gyp/node_modules/unique-slug": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+      "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
+      "dependencies": {
+        "imurmurhash": "^0.1.4"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/react-use-websocket": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/react-use-websocket/-/react-use-websocket-4.5.0.tgz",
@@ -9696,9 +9819,9 @@
       "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
     },
     "node_modules/@types/http-errors": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz",
-      "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==",
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+      "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
       "dev": true
     },
     "node_modules/methods": {
@@ -9924,19 +10047,6 @@
       "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
       "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
     },
-    "node_modules/svgo/node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true,
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/serve-index/node_modules/http-errors": {
       "version": "1.6.3",
       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
@@ -10054,24 +10164,24 @@
       }
     },
     "node_modules/axe-core": {
-      "version": "4.8.2",
-      "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz",
-      "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==",
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz",
+      "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==",
       "dev": true,
       "engines": {
         "node": ">=4"
       }
     },
     "node_modules/node-gyp": {
-      "version": "9.4.0",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz",
-      "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==",
+      "version": "9.4.1",
+      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
+      "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==",
       "dependencies": {
         "env-paths": "^2.2.0",
         "exponential-backoff": "^3.1.1",
         "glob": "^7.1.4",
         "graceful-fs": "^4.2.6",
-        "make-fetch-happen": "^11.0.3",
+        "make-fetch-happen": "^10.0.3",
         "nopt": "^6.0.0",
         "npmlog": "^6.0.0",
         "rimraf": "^3.0.2",
@@ -10119,9 +10229,9 @@
       }
     },
     "node_modules/@types/warning": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.2.tgz",
-      "integrity": "sha512-S/2+OjBIcBl8Kur23YLe0hG1e7J5m2bHfB4UuMNoLZjIFhQWhTf1FeS+WFoXHUC6QsCEfk4pftj4J1KIKC1glA=="
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz",
+      "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q=="
     },
     "node_modules/eastasianwidth": {
       "version": "0.2.0",
@@ -10327,9 +10437,9 @@
       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
     },
     "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/@types/yargs": {
-      "version": "17.0.29",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz",
-      "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==",
+      "version": "17.0.31",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz",
+      "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==",
       "dev": true,
       "dependencies": {
         "@types/yargs-parser": "*"
@@ -10544,9 +10654,9 @@
       }
     },
     "node_modules/@types/raf": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.2.tgz",
-      "integrity": "sha512-sM4HyDVlDFl4goOXPF+g9nNHJFZQGot+HgySjM4cRjqXzjdatcEvYrtG4Ia8XumR9T6k8G2tW9B7hnUj51Uf0A==",
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
+      "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
       "optional": true
     },
     "node_modules/ini": {
@@ -10811,9 +10921,9 @@
       }
     },
     "node_modules/@types/babel__generator": {
-      "version": "7.6.6",
-      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz",
-      "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==",
+      "version": "7.6.7",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz",
+      "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==",
       "dev": true,
       "dependencies": {
         "@babel/types": "^7.0.0"
@@ -10887,9 +10997,9 @@
       "dev": true
     },
     "node_modules/@types/express-serve-static-core": {
-      "version": "4.17.39",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz",
-      "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==",
+      "version": "4.17.41",
+      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
+      "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
       "dev": true,
       "dependencies": {
         "@types/node": "*",
@@ -10962,23 +11072,6 @@
       "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==",
       "dev": true
     },
-    "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
-      "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
-      "dev": true,
-      "dependencies": {
-        "json-schema": "^0.4.0",
-        "jsonpointer": "^5.0.0",
-        "leven": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "ajv": ">=8"
-      }
-    },
     "node_modules/jest-jasmine2/node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -11090,9 +11183,9 @@
       }
     },
     "node_modules/@types/serve-static": {
-      "version": "1.15.4",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz",
-      "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==",
+      "version": "1.15.5",
+      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
+      "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
       "dev": true,
       "dependencies": {
         "@types/http-errors": "*",
@@ -11275,6 +11368,19 @@
         "string.prototype.matchall": "^4.0.6"
       }
     },
+    "node_modules/@npmcli/move-file": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
+      "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
+      "deprecated": "This functionality has been moved to @npmcli/fs",
+      "dependencies": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/chrome-trace-event": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -11344,9 +11450,9 @@
       "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw=="
     },
     "node_modules/@types/q": {
-      "version": "1.5.7",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.7.tgz",
-      "integrity": "sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA==",
+      "version": "1.5.8",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz",
+      "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==",
       "dev": true
     },
     "node_modules/levn": {
@@ -11869,15 +11975,15 @@
       }
     },
     "node_modules/puppeteer-core": {
-      "version": "21.4.1",
-      "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.4.1.tgz",
-      "integrity": "sha512-Lh0e+oGhUquxVOi1U701gTfFLFvw5gDBFh3CWpnfAvtItmyZKUce4R54VNfOJfi+KKnzhVPdB/lDrg65gdRIng==",
+      "version": "21.5.0",
+      "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.5.0.tgz",
+      "integrity": "sha512-qG0RJ6qKgFz09UUZxDB9IcyTJGypQXMuE8WmEoHk7kgjutmRiOVv5RgsyUkY67AxDdBWx21bn1PHHRJnO/6b4A==",
       "dependencies": {
         "@puppeteer/browsers": "1.8.0",
-        "chromium-bidi": "0.4.32",
+        "chromium-bidi": "0.4.33",
         "cross-fetch": "4.0.0",
         "debug": "4.3.4",
-        "devtools-protocol": "0.0.1191157",
+        "devtools-protocol": "0.0.1203626",
         "ws": "8.14.2"
       },
       "engines": {
@@ -12040,9 +12146,9 @@
       }
     },
     "node_modules/@types/babel__traverse": {
-      "version": "7.20.3",
-      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz",
-      "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==",
+      "version": "7.20.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz",
+      "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==",
       "dev": true,
       "dependencies": {
         "@babel/types": "^7.20.7"
@@ -12118,11 +12224,11 @@
       }
     },
     "node_modules/@types/node": {
-      "version": "20.8.8",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.8.tgz",
-      "integrity": "sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==",
+      "version": "20.9.0",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
+      "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
       "dependencies": {
-        "undici-types": "~5.25.1"
+        "undici-types": "~5.26.4"
       }
     },
     "node_modules/path-scurry": {
@@ -12186,14 +12292,6 @@
         "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/get-uri/node_modules/universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
     "node_modules/smart-buffer": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
@@ -12227,6 +12325,18 @@
         "node": ">=8"
       }
     },
+    "node_modules/workbox-build/node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
     "node_modules/launch-editor": {
       "version": "2.6.1",
       "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz",
@@ -12382,26 +12492,6 @@
         "postcss": "^8.4"
       }
     },
-    "node_modules/degenerator/node_modules/escodegen": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
-      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
-      "dependencies": {
-        "esprima": "^4.0.1",
-        "estraverse": "^5.2.0",
-        "esutils": "^2.0.2"
-      },
-      "bin": {
-        "escodegen": "bin/escodegen.js",
-        "esgenerate": "bin/esgenerate.js"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "optionalDependencies": {
-        "source-map": "~0.6.1"
-      }
-    },
     "node_modules/postcss-color-functional-notation": {
       "version": "4.2.4",
       "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz",
@@ -12612,6 +12702,20 @@
         "entities": "^2.0.0"
       }
     },
+    "node_modules/react-scripts/node_modules/fs-extra": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/rc": {
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -12734,9 +12838,9 @@
       }
     },
     "node_modules/@types/qs": {
-      "version": "6.9.9",
-      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz",
-      "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==",
+      "version": "6.9.10",
+      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
+      "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==",
       "dev": true
     },
     "node_modules/tsconfig-paths/node_modules/json5": {
@@ -12775,9 +12879,9 @@
       }
     },
     "node_modules/punycode": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
-      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
       "engines": {
         "node": ">=6"
       }
@@ -12807,9 +12911,9 @@
       "dev": true
     },
     "node_modules/istanbul-lib-coverage": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
-      "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.1.tgz",
+      "integrity": "sha512-opCrKqbthmq3SKZ10mFMQG9dk3fTa3quaOLD35kJa5ejwZHd9xAr+kLuziiZz2cG32s4lMZxNdmdcEQnTDP4+g==",
       "dev": true,
       "engines": {
         "node": ">=8"
@@ -12982,17 +13086,16 @@
       }
     },
     "node_modules/fs-extra": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
-      "dev": true,
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+      "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
       "dependencies": {
         "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=6 <7 || >=8"
       }
     },
     "node_modules/cacache/node_modules/minipass": {
@@ -13279,9 +13382,9 @@
       }
     },
     "node_modules/@types/react-dom": {
-      "version": "18.2.14",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz",
-      "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==",
+      "version": "18.2.15",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.15.tgz",
+      "integrity": "sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg==",
       "dev": true,
       "dependencies": {
         "@types/react": "*"
@@ -13449,6 +13552,11 @@
         "node": ">= 14"
       }
     },
+    "node_modules/infer-owner": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
+    },
     "node_modules/builtins": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
@@ -13560,9 +13668,9 @@
       }
     },
     "node_modules/@types/yargs": {
-      "version": "17.0.29",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz",
-      "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==",
+      "version": "17.0.31",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz",
+      "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==",
       "dev": true,
       "dependencies": {
         "@types/yargs-parser": "*"
@@ -13827,27 +13935,15 @@
       "dev": true
     },
     "node_modules/core-js-pure": {
-      "version": "3.33.1",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.1.tgz",
-      "integrity": "sha512-wCXGbLjnsP10PlK/thHSQlOLlLKNEkaWbTzVvHHZ79fZNeN1gUmw2gBlpItxPv/pvqldevEXFh/d5stdNvl6EQ==",
+      "version": "3.33.2",
+      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.2.tgz",
+      "integrity": "sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==",
       "hasInstallScript": true,
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/core-js"
       }
     },
-    "node_modules/escodegen/node_modules/type-check": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
-      "dev": true,
-      "dependencies": {
-        "prelude-ls": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
     "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
@@ -14027,15 +14123,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/has": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
-      "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
     "node_modules/end-of-stream": {
       "version": "1.4.4",
       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -14192,19 +14279,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/escodegen/node_modules/levn": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
-      "dev": true,
-      "dependencies": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
     "node_modules/popper.js": {
       "version": "1.16.1",
       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
@@ -14953,27 +15027,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/jsdom/node_modules/escodegen": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
-      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
-      "dev": true,
-      "dependencies": {
-        "esprima": "^4.0.1",
-        "estraverse": "^5.2.0",
-        "esutils": "^2.0.2"
-      },
-      "bin": {
-        "escodegen": "bin/escodegen.js",
-        "esgenerate": "bin/esgenerate.js"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "optionalDependencies": {
-        "source-map": "~0.6.1"
-      }
-    },
     "node_modules/@babel/plugin-transform-dynamic-import": {
       "version": "7.22.11",
       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz",
@@ -15046,15 +15099,35 @@
       "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
       "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
       "dependencies": {
-        "bn.js": "^5.1.1",
-        "browserify-rsa": "^4.0.1",
+        "bn.js": "^5.2.1",
+        "browserify-rsa": "^4.1.0",
         "create-hash": "^1.2.0",
         "create-hmac": "^1.1.7",
-        "elliptic": "^6.5.3",
+        "elliptic": "^6.5.4",
         "inherits": "^2.0.4",
-        "parse-asn1": "^5.1.5",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
+        "parse-asn1": "^5.1.6",
+        "readable-stream": "^3.6.2",
+        "safe-buffer": "^5.2.1"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/static-eval/node_modules/optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "dev": true,
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
       }
     },
     "node_modules/jsx-ast-utils": {
@@ -15417,11 +15490,11 @@
       "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
     },
     "node_modules/interactjs": {
-      "version": "1.10.19",
-      "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.19.tgz",
-      "integrity": "sha512-5zWXBrfLnXAyhrxKlhRiud/JxWd3GvZkvdTf8bqjeHWDx9zgiu+qFNA3nnJMszadFCig2GU5zKx9PYrkT87OKA==",
+      "version": "1.10.20",
+      "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.20.tgz",
+      "integrity": "sha512-jNFZiuBUL/j9Kkv6c89l+v5NpOn1m2LE8t7TrQOQBpBaYObYG6y6FHfqIMlF2XEcR6gCFLUQGQ3F0qBjqUMZvQ==",
       "dependencies": {
-        "@interactjs/types": "1.10.19"
+        "@interactjs/types": "1.10.20"
       }
     },
     "node_modules/@babel/plugin-syntax-numeric-separator": {
@@ -15790,9 +15863,9 @@
       }
     },
     "node_modules/@types/serve-index": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.3.tgz",
-      "integrity": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg==",
+      "version": "1.9.4",
+      "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
+      "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
       "dev": true,
       "dependencies": {
         "@types/express": "*"
@@ -15829,27 +15902,6 @@
         "react-dom": ">=16.6.0"
       }
     },
-    "node_modules/jest-editor-support/node_modules/@babel/traverse": {
-      "version": "7.20.10",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz",
-      "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.7",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/parser": "^7.20.7",
-        "@babel/types": "^7.20.7",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
     "node_modules/postcss-preset-env": {
       "version": "7.8.3",
       "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz",
@@ -15936,14 +15988,6 @@
         "popper.js": "^1.16.1"
       }
     },
-    "node_modules/get-uri/node_modules/jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
     "node_modules/safe-regex-test": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
@@ -16086,9 +16130,9 @@
       }
     },
     "node_modules/@types/json-schema": {
-      "version": "7.0.14",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
-      "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw=="
+      "version": "7.0.15",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
     },
     "node_modules/pptr-testing-library/node_modules/@jest/types": {
       "version": "26.6.2",
@@ -16222,9 +16266,9 @@
       }
     },
     "node_modules/@types/range-parser": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz",
-      "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==",
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+      "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
       "dev": true
     },
     "node_modules/is-promise": {
@@ -16864,9 +16908,9 @@
       "dev": true
     },
     "node_modules/@interactjs/types": {
-      "version": "1.10.19",
-      "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.19.tgz",
-      "integrity": "sha512-oEqGmt9/Ob+jz0FUaBzpDXBmf+2dfdhPuEwQcMGH6nQTR2ETGtYIlAnQtADHvnCin+cVkrmqVohfHBysyQr4Lw=="
+      "version": "1.10.20",
+      "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.20.tgz",
+      "integrity": "sha512-59QRmyawJCCSx9H9tE7MaIC9dYprc27vspJ+zvwfIpt1/ZmosM64c1XiqM3Z2/FZ2/C5BTGZ/bJJLEokr56aJg=="
     },
     "node_modules/handle-thing": {
       "version": "2.0.1",
@@ -16925,14 +16969,14 @@
       "dev": true
     },
     "node_modules/jest-editor-support": {
-      "version": "31.1.1",
-      "resolved": "https://registry.npmjs.org/jest-editor-support/-/jest-editor-support-31.1.1.tgz",
-      "integrity": "sha512-bCKpKWAMLhjK7QDX9geBDzfyvZacl937hnT3Z+yfERBx8bB7yZg2uhvCBErqO51Ie+wgg42Ffo8rn+Nhdr2hHQ==",
+      "version": "31.1.2",
+      "resolved": "https://registry.npmjs.org/jest-editor-support/-/jest-editor-support-31.1.2.tgz",
+      "integrity": "sha512-QlCN8dWVxMcmvzbkH2G1gSNjMPFM+69+Lx9WZcpYiHEaqrb1QKuVJrVNfbjHrlv0PhgCvzf1EdYKh8qqrQ3Rhw==",
       "dev": true,
       "dependencies": {
         "@babel/parser": "^7.20.7",
         "@babel/runtime": "^7.20.7",
-        "@babel/traverse": "7.20.10",
+        "@babel/traverse": "7.23.2",
         "@babel/types": "^7.20.7",
         "core-js": "^3.17.3",
         "jest-snapshot": "^27.2.0"
@@ -16982,9 +17026,9 @@
       }
     },
     "node_modules/@types/body-parser": {
-      "version": "1.19.4",
-      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz",
-      "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==",
+      "version": "1.19.5",
+      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+      "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
       "dev": true,
       "dependencies": {
         "@types/connect": "*",
@@ -17124,27 +17168,27 @@
       }
     },
     "node_modules/eslint-plugin-jsx-a11y": {
-      "version": "6.7.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz",
-      "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==",
+      "version": "6.8.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz",
+      "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==",
       "dev": true,
       "dependencies": {
-        "ast-types-flow": "^0.0.7",
-        "semver": "^6.3.0",
-        "axobject-query": "^3.1.1",
-        "@babel/runtime": "^7.20.7",
-        "language-tags": "=1.0.5",
-        "axe-core": "^4.6.2",
-        "array.prototype.flatmap": "^1.3.1",
-        "aria-query": "^5.1.3",
-        "object.fromentries": "^2.0.6",
+        "ast-types-flow": "^0.0.8",
+        "axobject-query": "^3.2.1",
+        "hasown": "^2.0.0",
+        "@babel/runtime": "^7.23.2",
+        "language-tags": "^1.0.9",
+        "axe-core": "=4.7.0",
+        "array.prototype.flatmap": "^1.3.2",
+        "aria-query": "^5.3.0",
+        "object.fromentries": "^2.0.7",
         "emoji-regex": "^9.2.2",
+        "es-iterator-helpers": "^1.0.15",
         "minimatch": "^3.1.2",
-        "object.entries": "^1.1.6",
-        "has": "^1.0.3",
+        "object.entries": "^1.1.7",
         "damerau-levenshtein": "^1.0.8",
-        "jsx-ast-utils": "^3.3.3",
-        "array-includes": "^3.1.6"
+        "jsx-ast-utils": "^3.3.5",
+        "array-includes": "^3.1.7"
       },
       "engines": {
         "node": ">=4.0"
@@ -17508,9 +17552,9 @@
       "dev": true
     },
     "node_modules/acorn": {
-      "version": "8.10.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
-      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+      "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -17707,19 +17751,6 @@
         "get-intrinsic": "^1.2.1"
       }
     },
-    "node_modules/get-uri/node_modules/fs-extra": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-      "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=6 <7 || >=8"
-      }
-    },
     "node_modules/npmlog": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
@@ -17886,9 +17917,9 @@
       }
     },
     "node_modules/react-scripts/node_modules/@types/yargs": {
-      "version": "16.0.7",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz",
-      "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==",
+      "version": "16.0.8",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.8.tgz",
+      "integrity": "sha512-1GwLEkmFafeb/HbE6pC7tFlgYSQ4Iqh2qlWCq8xN+Qfaiaxr2PcLfuhfRFRYqI6XJyeFoLYyKnhFbNsst9FMtQ==",
       "dev": true,
       "dependencies": {
         "@types/yargs-parser": "*"
@@ -17971,9 +18002,9 @@
       }
     },
     "node_modules/@types/hoist-non-react-statics": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.4.tgz",
-      "integrity": "sha512-ZchYkbieA+7tnxwX/SCBySx9WwvWR8TaP5tb2jRAzwvLb/rWchGw3v0w3pqUbUvj0GCwW2Xz/AVPSk6kUGctXQ==",
+      "version": "3.3.5",
+      "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz",
+      "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==",
       "dependencies": {
         "@types/react": "*",
         "hoist-non-react-statics": "^3.3.0"
@@ -17989,9 +18020,9 @@
       }
     },
     "node_modules/@types/eslint": {
-      "version": "8.44.6",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz",
-      "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==",
+      "version": "8.44.7",
+      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz",
+      "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==",
       "dependencies": {
         "@types/estree": "*",
         "@types/json-schema": "*"
@@ -18059,9 +18090,9 @@
       "peer": true
     },
     "node_modules/@types/eslint-scope": {
-      "version": "3.7.6",
-      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz",
-      "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==",
+      "version": "3.7.7",
+      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+      "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
       "dependencies": {
         "@types/eslint": "*",
         "@types/estree": "*"
@@ -18165,9 +18196,9 @@
       }
     },
     "node_modules/ast-types-flow": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-      "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==",
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+      "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
       "dev": true
     },
     "node_modules/semver": {
@@ -18295,9 +18326,9 @@
       }
     },
     "node_modules/ua-parser-js": {
-      "version": "1.0.36",
-      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz",
-      "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==",
+      "version": "1.0.37",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz",
+      "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -18693,9 +18724,9 @@
       }
     },
     "node_modules/@types/aria-query": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.3.tgz",
-      "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==",
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
+      "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
       "dev": true
     },
     "node_modules/tempy": {
@@ -19085,9 +19116,9 @@
       }
     },
     "node_modules/@types/istanbul-lib-report": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz",
-      "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+      "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
       "dependencies": {
         "@types/istanbul-lib-coverage": "*"
       }
@@ -19296,6 +19327,15 @@
         }
       }
     },
+    "node_modules/static-eval/node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
     "node_modules/graphemer": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
@@ -19357,9 +19397,9 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "node_modules/@types/http-proxy": {
-      "version": "1.17.13",
-      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.13.tgz",
-      "integrity": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw==",
+      "version": "1.17.14",
+      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+      "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
       "dev": true,
       "dependencies": {
         "@types/node": "*"
@@ -19742,6 +19782,17 @@
         "@babel/core": "^7.0.0-0"
       }
     },
+    "node_modules/node-gyp/node_modules/minipass": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+      "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -19823,6 +19874,15 @@
         "node": ">=10"
       }
     },
+    "node_modules/@types/node-forge": {
+      "version": "1.3.9",
+      "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.9.tgz",
+      "integrity": "sha512-meK88cx/sTalPSLSoCzkiUB4VPIFHmxtXm5FaaqRDqBX2i/Sy8bJ4odsan0b20RBjPh06dAQ+OTTdnyQyhJZyQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/detect-port-alt/node_modules/ms": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -20079,6 +20139,17 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
+    "node_modules/node-gyp/node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -20099,22 +20170,21 @@
       }
     },
     "node_modules/esprima": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz",
-      "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==",
-      "dev": true,
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
       "bin": {
         "esparse": "bin/esparse.js",
         "esvalidate": "bin/esvalidate.js"
       },
       "engines": {
-        "node": ">=0.4.0"
+        "node": ">=4"
       }
     },
     "node_modules/@types/graceful-fs": {
-      "version": "4.1.8",
-      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz",
-      "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==",
+      "version": "4.1.9",
+      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+      "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
       "dev": true,
       "dependencies": {
         "@types/node": "*"
@@ -20180,9 +20250,9 @@
       }
     },
     "node_modules/@eslint-community/regexpp": {
-      "version": "4.9.1",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
-      "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
+      "version": "4.10.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+      "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
       "dev": true,
       "engines": {
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -20255,9 +20325,9 @@
       }
     },
     "node_modules/@types/babel__template": {
-      "version": "7.4.3",
-      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz",
-      "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==",
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+      "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
       "dev": true,
       "dependencies": {
         "@babel/parser": "^7.1.0",
@@ -20509,6 +20579,15 @@
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
       "dev": true
     },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
     "node_modules/create-react-context": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz",
@@ -20568,9 +20647,9 @@
       }
     },
     "node_modules/@types/ws": {
-      "version": "8.5.8",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz",
-      "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==",
+      "version": "8.5.9",
+      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz",
+      "integrity": "sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==",
       "dev": true,
       "dependencies": {
         "@types/node": "*"
@@ -20802,9 +20881,9 @@
       "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
     },
     "node_modules/@types/istanbul-reports": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz",
-      "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+      "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
       "dependencies": {
         "@types/istanbul-lib-report": "*"
       }
@@ -21046,9 +21125,9 @@
       }
     },
     "node_modules/@types/react-transition-group": {
-      "version": "4.4.8",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.8.tgz",
-      "integrity": "sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg==",
+      "version": "4.4.9",
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz",
+      "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==",
       "dependencies": {
         "@types/react": "*"
       }
@@ -21246,9 +21325,9 @@
       }
     },
     "node_modules/@types/babel__core": {
-      "version": "7.20.3",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz",
-      "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==",
+      "version": "7.20.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz",
+      "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==",
       "dev": true,
       "dependencies": {
         "@babel/parser": "^7.20.7",
@@ -21431,9 +21510,9 @@
       "dev": true
     },
     "node_modules/core-js-compat": {
-      "version": "3.33.1",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz",
-      "integrity": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==",
+      "version": "3.33.2",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz",
+      "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==",
       "dev": true,
       "dependencies": {
         "browserslist": "^4.22.1"
@@ -21643,9 +21722,9 @@
       }
     },
     "node_modules/@types/react-redux": {
-      "version": "7.1.28",
-      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.28.tgz",
-      "integrity": "sha512-EQr7cChVzVUuqbA+J8ArWK1H0hLAHKOs21SIMrskKZ3nHNeE+LFYA+IsoZGhVOT8Ktjn3M20v4rnZKN3fLbypw==",
+      "version": "7.1.30",
+      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.30.tgz",
+      "integrity": "sha512-i2kqM6YaUwFKduamV6QM/uHbb0eCP8f8ZQ/0yWf+BsAVVsZPRYJ9eeGWZ3uxLfWwwA0SrPRMTPTqsPFkY3HZdA==",
       "dependencies": {
         "@types/hoist-non-react-statics": "^3.3.0",
         "@types/react": "*",
@@ -21953,9 +22032,9 @@
       }
     },
     "node_modules/@types/trusted-types": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.5.tgz",
-      "integrity": "sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.6.tgz",
+      "integrity": "sha512-HYtNooPvUY9WAVRBr4u+4Qa9fYD1ze2IUlAD3HoA6oehn1taGwBx3Oa52U4mTslTS+GAExKpaFu39Y5xUEwfjg==",
       "dev": true
     },
     "node_modules/has-proto": {
@@ -22149,12 +22228,15 @@
       }
     },
     "node_modules/language-tags": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
-      "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==",
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+      "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
       "dev": true,
       "dependencies": {
-        "language-subtag-registry": "~0.3.2"
+        "language-subtag-registry": "^0.3.20"
+      },
+      "engines": {
+        "node": ">=0.10"
       }
     },
     "node_modules/process": {
@@ -22242,12 +22324,11 @@
       }
     },
     "node_modules/universalify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-      "dev": true,
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
       "engines": {
-        "node": ">= 10.0.0"
+        "node": ">= 4.0.0"
       }
     },
     "node_modules/stack-utils/node_modules/escape-string-regexp": {
@@ -22297,14 +22378,11 @@
       }
     },
     "node_modules/node-gyp/node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
       "engines": {
-        "node": ">=10"
+        "node": ">=12"
       }
     },
     "node_modules/postcss-svgo/node_modules/mdn-data": {
@@ -22349,6 +22427,15 @@
         "node": ">= 14"
       }
     },
+    "node_modules/react-scripts/node_modules/universalify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
     "node_modules/rollup-plugin-terser/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -22362,9 +22449,9 @@
       }
     },
     "node_modules/jspdf-autotable": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.7.0.tgz",
-      "integrity": "sha512-K6R5U4W4E2RoINRMUvcAKmTwGMyN5DE634G35dcXyGuqzhjY4AgOBDss5+M91HEznvZ28k7rk0gAo8WfeDIXLw==",
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.7.1.tgz",
+      "integrity": "sha512-5fgjqE8nIwUoNz5l/i/aD/uONKofE4yp/kJ097EKBllPVTPGnGV5OWHld30db3+CvNrgzrRl8gmTnKF6vag05g==",
       "peerDependencies": {
         "jspdf": "^2.5.1"
       }
@@ -22396,6 +22483,23 @@
         "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
       }
     },
+    "node_modules/@apideck/better-ajv-errors": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
+      "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
+      "dev": true,
+      "dependencies": {
+        "json-schema": "^0.4.0",
+        "jsonpointer": "^5.0.0",
+        "leven": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "ajv": ">=8"
+      }
+    },
     "node_modules/npm-install-checks": {
       "version": "6.3.0",
       "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz",
@@ -22439,9 +22543,9 @@
       }
     },
     "node_modules/@types/connect": {
-      "version": "3.4.37",
-      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz",
-      "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==",
+      "version": "3.4.38",
+      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+      "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
       "dev": true,
       "dependencies": {
         "@types/node": "*"
@@ -22486,19 +22590,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/jsdom/node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true,
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/timers-browserify": {
       "version": "2.0.12",
       "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
@@ -22523,6 +22614,11 @@
         "node": ">= 14"
       }
     },
+    "node_modules/socks/node_modules/ip": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+    },
     "node_modules/ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -22764,6 +22860,18 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
       "version": "7.5.4",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -22859,6 +22967,34 @@
       "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
       "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
     },
+    "node_modules/node-gyp/node_modules/cacache": {
+      "version": "16.1.3",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+      "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
+      "dependencies": {
+        "minipass-flush": "^1.0.5",
+        "unique-filename": "^2.0.0",
+        "infer-owner": "^1.0.4",
+        "@npmcli/move-file": "^2.0.0",
+        "promise-inflight": "^1.0.1",
+        "tar": "^6.1.11",
+        "minipass": "^3.1.6",
+        "minipass-pipeline": "^1.2.4",
+        "lru-cache": "^7.7.1",
+        "ssri": "^9.0.0",
+        "chownr": "^2.0.0",
+        "mkdirp": "^1.0.4",
+        "minipass-collect": "^1.0.2",
+        "fs-minipass": "^2.1.0",
+        "@npmcli/fs": "^2.1.0",
+        "p-map": "^4.0.0",
+        "rimraf": "^3.0.2",
+        "glob": "^8.0.1"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/postcss-normalize-charset": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
@@ -22931,9 +23067,9 @@
       }
     },
     "node_modules/jiti": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz",
-      "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
+      "version": "1.21.0",
+      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+      "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
       "dev": true,
       "bin": {
         "jiti": "bin/jiti.js"
@@ -22984,9 +23120,9 @@
       }
     },
     "node_modules/core-js": {
-      "version": "3.33.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.1.tgz",
-      "integrity": "sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q==",
+      "version": "3.33.2",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz",
+      "integrity": "sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==",
       "hasInstallScript": true,
       "funding": {
         "type": "opencollective",
@@ -22994,9 +23130,9 @@
       }
     },
     "node_modules/@eslint/eslintrc": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
-      "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz",
+      "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==",
       "dev": true,
       "dependencies": {
         "ajv": "^6.12.4",
@@ -23065,9 +23201,9 @@
       }
     },
     "node_modules/@types/jest": {
-      "version": "29.5.6",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.6.tgz",
-      "integrity": "sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==",
+      "version": "29.5.8",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz",
+      "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==",
       "dev": true,
       "dependencies": {
         "expect": "^29.0.0",
@@ -23119,6 +23255,17 @@
         "next-tick": "1"
       }
     },
+    "node_modules/node-gyp/node_modules/semver/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/@babel/helper-wrap-function": {
       "version": "7.22.20",
       "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
@@ -23853,9 +24000,9 @@
       }
     },
     "node_modules/domain-browser": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz",
-      "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==",
+      "version": "4.23.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz",
+      "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==",
       "engines": {
         "node": ">=10"
       },
@@ -23895,9 +24042,9 @@
       }
     },
     "node_modules/@types/connect-history-api-fallback": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz",
-      "integrity": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q==",
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.3.tgz",
+      "integrity": "sha512-6mfQ6iNvhSKCZJoY6sIG3m0pKkdUcweVNOLuBBKvoWGzl2yRxOJcYOTRyLKt3nxXvBLJWa6QkW//tgbIwJehmA==",
       "dev": true,
       "dependencies": {
         "@types/express-serve-static-core": "*",
@@ -23938,15 +24085,6 @@
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
     },
-    "node_modules/escodegen/node_modules/prelude-ls": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
     "node_modules/jest-jasmine2/node_modules/jest-each": {
       "version": "27.5.1",
       "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
@@ -24320,9 +24458,9 @@
       }
     },
     "node_modules/fast-glob": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
-      "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -24342,18 +24480,6 @@
         "node": ">=6.0.0"
       }
     },
-    "node_modules/json-schema-ref-parser/node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -24411,6 +24537,11 @@
         "node": ">= 6.0.0"
       }
     },
+    "node_modules/@gar/promisify": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+      "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
+    },
     "node_modules/serve-index/node_modules/statuses": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -24606,6 +24737,24 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
+    "node_modules/node-gyp/node_modules/cacache/node_modules/glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -24671,18 +24820,6 @@
         "js-yaml": "bin/js-yaml.js"
       }
     },
-    "node_modules/degenerator/node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/replace-in-file/node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -24741,6 +24878,15 @@
         "randombytes": "^2.1.0"
       }
     },
+    "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+      "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+      "dev": true,
+      "dependencies": {
+        "dequal": "^2.0.3"
+      }
+    },
     "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz",
@@ -25154,9 +25300,9 @@
       }
     },
     "node_modules/@eslint/js": {
-      "version": "8.52.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
-      "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
+      "version": "8.53.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz",
+      "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -25737,6 +25883,17 @@
         "util-deprecate": "~1.0.1"
       }
     },
+    "node_modules/node-gyp/node_modules/unique-filename": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+      "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
+      "dependencies": {
+        "unique-slug": "^3.0.0"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
     "node_modules/makeerror": {
       "version": "1.0.12",
       "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
@@ -26093,6 +26250,18 @@
         "postcss": "^8.2.15"
       }
     },
+    "node_modules/static-eval/node_modules/type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
     "node_modules/postcss-normalize-unicode": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
@@ -26136,22 +26305,20 @@
       "dev": true
     },
     "node_modules/escodegen": {
-      "version": "1.14.3",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
-      "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
-      "dev": true,
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
       "dependencies": {
         "esprima": "^4.0.1",
-        "estraverse": "^4.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1"
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2"
       },
       "bin": {
         "escodegen": "bin/escodegen.js",
         "esgenerate": "bin/esgenerate.js"
       },
       "engines": {
-        "node": ">=4.0"
+        "node": ">=6.0"
       },
       "optionalDependencies": {
         "source-map": "~0.6.1"
@@ -26387,9 +26554,9 @@
       }
     },
     "node_modules/react-live-clock": {
-      "version": "6.1.16",
-      "resolved": "https://registry.npmjs.org/react-live-clock/-/react-live-clock-6.1.16.tgz",
-      "integrity": "sha512-J8w3Af/gLG6Q+QB9+jAYm9cFBv6B1238KVSTBgpFiOHJkk7qJNlgTlEgUNDTBvKlHNauvk8QT+DyIZSCOIE6tg==",
+      "version": "6.1.18",
+      "resolved": "https://registry.npmjs.org/react-live-clock/-/react-live-clock-6.1.18.tgz",
+      "integrity": "sha512-NeNMHVMkzV4lqAlI2fRUW3j4i8uc44dR1/lRr5MAdmsVUUtrn9m9oNYL/rkPjcuaIhKniDtwJQyZhU8uC2X+nw==",
       "dependencies": {
         "moment": "^2.29.1",
         "moment-timezone": "^0.5.33"
@@ -26840,19 +27007,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/escodegen/node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true,
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/jest-resolve/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -27012,14 +27166,14 @@
       }
     },
     "node_modules/puppeteer": {
-      "version": "21.4.1",
-      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.4.1.tgz",
-      "integrity": "sha512-opJqQeYMjAB3ICG8lCF3wtSs9k05dozmrEMrHgo3ZWbISiy8qbv/yAJz/6Io221qSh3yURfVf6Z7crrlzKZjLQ==",
+      "version": "21.5.0",
+      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.5.0.tgz",
+      "integrity": "sha512-prvy9rdauyIaaEgefQRcw9zhQnYQbl8O1Gj5VJazKJ7kwNx703+Paw/1bwA+b96jj/S+r55hrmF5SfiEG5PUcg==",
       "hasInstallScript": true,
       "dependencies": {
         "@puppeteer/browsers": "1.8.0",
         "cosmiconfig": "8.3.6",
-        "puppeteer-core": "21.4.1"
+        "puppeteer-core": "21.5.0"
       },
       "engines": {
         "node": ">=16.3.0"
@@ -27062,9 +27216,9 @@
       }
     },
     "node_modules/undici-types": {
-      "version": "5.25.3",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
-      "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
+      "version": "5.26.5",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
     },
     "node_modules/string.prototype.trimend": {
       "version": "1.0.7",
@@ -27095,9 +27249,9 @@
       }
     },
     "node_modules/devtools-protocol": {
-      "version": "0.0.1191157",
-      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1191157.tgz",
-      "integrity": "sha512-Fu2mUhX7zkzLHMJZk5wQTiHdl1eJrhK0GypUoSzogUt51MmYEv/46pCz4PtGGFlr0f2ZyYDzzx5CPtbEkuvcTA=="
+      "version": "0.0.1203626",
+      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1203626.tgz",
+      "integrity": "sha512-nEzHZteIUZfGCZtTiS1fRpC8UZmsfD1SiyPvaUNvS13dvKf666OAm8YTi0+Ca3n1nLEyu49Cy4+dPWpaHFJk9g=="
     },
     "node_modules/ag-grid-community": {
       "version": "24.1.0",
@@ -27876,6 +28030,22 @@
         "node": ">=8"
       }
     },
+    "node_modules/node-gyp/node_modules/minipass-fetch": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+      "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+      "dependencies": {
+        "minipass": "^3.1.6",
+        "minipass-sized": "^1.0.3",
+        "minizlib": "^2.1.2"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      },
+      "optionalDependencies": {
+        "encoding": "^0.1.13"
+      }
+    },
     "node_modules/react-scripts/node_modules/resolve.exports": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz",
@@ -28087,9 +28257,9 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "node_modules/@types/parse-json": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz",
-      "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+      "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
       "dev": true
     },
     "node_modules/html-encoding-sniffer": {
@@ -28118,9 +28288,9 @@
       }
     },
     "node_modules/@types/react": {
-      "version": "18.2.31",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.31.tgz",
-      "integrity": "sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g==",
+      "version": "18.2.37",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.37.tgz",
+      "integrity": "sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==",
       "dependencies": {
         "@types/prop-types": "*",
         "@types/scheduler": "*",
@@ -28269,9 +28439,9 @@
       }
     },
     "node_modules/@types/send": {
-      "version": "0.17.3",
-      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz",
-      "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==",
+      "version": "0.17.4",
+      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+      "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
       "dev": true,
       "dependencies": {
         "@types/mime": "^1",
@@ -28685,9 +28855,9 @@
       }
     },
     "node_modules/yaml": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz",
-      "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==",
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+      "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
       "dev": true,
       "engines": {
         "node": ">= 14"
@@ -28965,9 +29135,9 @@
       }
     },
     "node_modules/@types/invariant": {
-      "version": "2.2.36",
-      "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.36.tgz",
-      "integrity": "sha512-WdRjvN2y1PiXCmCIEBbe+eoHGylBQa2oIBGEQsfKMJzqff7fwv2OhyXcGQn70+dWII6a5W8Y3ipYwVnhf+IXig=="
+      "version": "2.2.37",
+      "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.37.tgz",
+      "integrity": "sha512-IwpIMieE55oGWiXkQPSBY1nw1nFs6bsKXTFskNY8sdS17K24vyEBRQZEwlRS7ZmXCWnJcQtbxWzly+cODWGs2A=="
     },
     "node_modules/http-proxy": {
       "version": "1.18.1",
diff --git a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js
index 63857a11b9a1d4e589ac2fe28735367914f86e1b..ddb2d68e3c0c752553dc0a2d14394d91526284e8 100644
--- a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js
+++ b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js
@@ -222,6 +222,7 @@ getTemplateFiles('../../backend/src/tmss/tmssapp/schemas').then(async (backEndFi
 					taskTemplate.type_value = "ingest";
 				}
 
+				if (taskTemplate?.schema?.properties?.beamformer) { taskTemplate.schema.properties.beamformer["$ref"] = "#/definitions/beamformer"; }
 				if (taskTemplate?.schema?.properties?.station_configuration) { taskTemplate.schema.properties.station_configuration["$ref"] = "#/definitions/station_configuration"; }
 				if (taskTemplate?.schema?.properties?.QA) taskTemplate.schema.properties.QA["$ref"] = "#/definitions/QA";
 				if (taskTemplate?.schema?.properties?.duration) taskTemplate.schema.properties.duration["$ref"] = "#/definitions/duration";
diff --git a/SAS/TMSS/frontend/tmss_webapp/public/index.html b/SAS/TMSS/frontend/tmss_webapp/public/index.html
index 4d5295648ddd04e625e8c19fb890c91f89629b5f..88a552b440609a910caa366a381cd8dfaf47556e 100644
--- a/SAS/TMSS/frontend/tmss_webapp/public/index.html
+++ b/SAS/TMSS/frontend/tmss_webapp/public/index.html
@@ -3,41 +3,14 @@
   <head>
     <meta charset="utf-8" />
     <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
-    <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="theme-color" content="#000000" />
-    <meta
-      name="description"
-      content="Telescope Manager Specification System"
-    />
+    <meta name="viewport" content="width=device-width, initial-scale=1.00, maximum-scale=3.00, minimum-scale=1.00">
+    <meta name="description" content="Telescope Manager Specification System" />
     <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
-    <!--
-      manifest.json provides metadata used when your web app is installed on a
-      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-    -->
     <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
-    <!--
-      Notice the use of %PUBLIC_URL% in the tags above.
-      It will be replaced with the URL of the `public` folder during the build.
-      Only files inside the `public` folder can be referenced from the HTML.
-
-      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
-      work correctly both with client-side routing and a non-root public URL.
-      Learn how to configure a non-root public URL by running `npm run build`.
-    -->
     <title>TMSS</title>
   </head>
   <body>
     <noscript>You need to enable JavaScript to run this app.</noscript>
     <div id="root"></div>
-    <!--
-      This HTML file is a template.
-      If you open it directly in the browser, you will see an empty page.
-
-      You can add webfonts, meta tags, or analytics to this file.
-      The build step will place the bundled scripts into the <body> tag.
-
-      To begin the development, run `npm start` or `yarn start`.
-      To create a production bundle, use `npm run build` or `yarn build`.
-    -->
   </body>
 </html>
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/App.js b/SAS/TMSS/frontend/tmss_webapp/src/App.js
index 06f9f40318a417bda2628d769ab7ffda38fd3964..0093bcdce0d3e12657aac0152cf56fb689bb5464 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/App.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/App.js
@@ -1,11 +1,10 @@
-import React, {Component} from 'react';
-import { Redirect, BrowserRouter as Router} from 'react-router-dom';
+import  { Component } from 'react';
+import { Redirect, BrowserRouter as Router } from 'react-router-dom';
 
 import classNames from 'classnames';
 import { AppTopbar } from './layout/components/AppTopbar';
-import  AppMenu  from './layout/components/AppMenu';
-import {AppFooter } from './layout/components/AppFooter';
-import {RoutedContent} from './routes';
+import AppMenu from './layout/components/AppMenu';
+import { RoutedContent } from './routes';
 import AppBreadcrumb from "./layout/components/AppBreadcrumb";
 import handleResponse from "./response.handler"
 import 'primeicons/primeicons.css';
@@ -16,18 +15,18 @@ import './layout/layout.scss';
 import 'primeflex/primeflex.css';
 import './App.scss';
 import './App.css';
-import Auth from'./authenticate/auth';
-import { Login } from './authenticate/login';
+import Auth from './authenticate/auth';
+
 
 import pubsub from './utils/pubSub';
 import { CustomDialog } from './layout/components/CustomDialog';
 
 import AuthStore from './authenticate/auth.store';
-import {Provider} from "react-redux";
+import { Provider } from "react-redux";
 import AuthComponent from './components/AuthComponent';
 
 
-const {  publish, subscribe } = pubsub();
+const { publish, subscribe } = pubsub();
 
 export {
     publish,
@@ -37,17 +36,19 @@ class App extends Component {
     constructor() {
         super();
         this.state = {
-        layoutMode: 'static',
-        currentMenu: '',
-        currentPath: '/',
-        PageTitle:'',
-        staticMenuInactive: localStorage.getItem('staticMenuInactive') === 'true',
-        overlayMenuActive: localStorage.getItem('overlayMenuActive') === 'true',
-        mobileMenuActive: localStorage.getItem('mobileMenuActive') === 'true',
-        authenticated: true,
-        findObjectPlaceholder: 'Sub Task',
-        redirect: window.location.pathname === '/'? '/su/timelineview/week': window.location.pathname,
-        isLogin: true
+            layoutMode: 'static',
+            currentMenu: '',
+            currentPath: '/',
+            PageTitle: '',
+            isBreadCrumbVisible: false,
+            isDateTimeVisible:true,
+            staticMenuInactive: localStorage.getItem('staticMenuInactive') === 'true',
+            overlayMenuActive: localStorage.getItem('overlayMenuActive') === 'true',
+            mobileMenuActive: localStorage.getItem('mobileMenuActive') === 'true',
+            authenticated: true,
+            findObjectPlaceholder: 'Sub Task',
+            redirect: window.location.pathname === '/' ? '/su/timelineview/week' : window.location.pathname,
+            isLogin: true
         };
         this.onWrapperClick = this.onWrapperClick.bind(this);
         this.onToggleMenu = this.onToggleMenu.bind(this);
@@ -59,16 +60,16 @@ class App extends Component {
         this.setSearchField = this.setSearchField.bind(this);
         this.toggleEditToggle = this.toggleEditToggle.bind(this);
 
-        this.menu = [ 
+        this.menu = [
             //{label: 'Dashboard', icon: 'pi pi-fw pi-home', to:'/dashboard',section: 'dashboard'},
-        {label: 'Cycle', icon:'pi pi-fw pi-spinner', to:'/cycle',section: 'cycle'},
-        {label: 'Project', icon: 'pi pi-fw pi-compass', to:'/project',section: 'project'},
-        {label: 'Scheduling Units', icon: 'pi pi-fw pi-calendar', to:'/schedulingunit',section: 'schedulingunit'},
-        {label: 'Tasks', icon: 'pi pi-fw pi-check-square', to:'/task'},
-        {label: 'Workflow', icon: 'pi pi-fw pi-sitemap', to:'/su/workflow',section: 'workflow'},
-        {label: 'Week View', icon: 'pi pi-fw pi-calendar-times', to:'/su/timelineview/week',section: 'su/timelineview/week'},
-        {label: 'Reports', icon: 'pi pi-fw pi-chart-bar', to:'/reports',section: 'reports'},
-    ];
+            { label: 'Cycle', icon: 'pi pi-fw pi-spinner', to: '/cycle', section: 'cycle', isBreadCrumbVisible: true,isDateTimeVisible:false },
+            { label: 'Project', icon: 'pi pi-fw pi-compass', to: '/project', section: 'project', isBreadCrumbVisible: true ,isDateTimeVisible:false},
+            { label: 'Scheduling Units', icon: 'pi pi-fw pi-calendar', to: '/schedulingunit', section: 'schedulingunit', isBreadCrumbVisible: true ,isDateTimeVisible:false},
+            { label: 'Tasks', icon: 'pi pi-fw pi-check-square', to: '/task', isBreadCrumbVisible: true ,isDateTimeVisible:false},
+            { label: 'Workflow', icon: 'pi pi-fw pi-sitemap', to: '/su/workflow', section: 'workflow', isBreadCrumbVisible: true,isDateTimeVisible:false },
+            { label: 'Week View', icon: 'pi pi-fw pi-calendar-times', to: '/su/timelineview/week', section: 'su/timelineview/week', isBreadCrumbVisible: false ,isDateTimeVisible:true},
+            { label: 'Reports', icon: 'pi pi-fw pi-chart-bar', to: '/reports', section: 'reports', isBreadCrumbVisible: false ,isDateTimeVisible:false},
+        ];
     }
     onWrapperClick() {
         if (!this.menuClick) {
@@ -107,7 +108,7 @@ class App extends Component {
             }
             );
         }
-       event.preventDefault();
+        event.preventDefault();
     }
 
     onSidebarClick() {
@@ -115,10 +116,10 @@ class App extends Component {
     }
 
     onMenuItemClick(event) {
-        this.setState({currentMenu:event.item.label, currentPath: event.item.path});
+        this.setState({ currentMenu: event.item.label, currentPath: event.item.path, isBreadCrumbVisible: event.item.isBreadCrumbVisible, isDateTimeVisible:event.item.isDateTimeVisible });
     }
-		
-	isDesktop() {
+
+    isDesktop() {
         return window.innerWidth > 1024;
     }
 
@@ -126,7 +127,7 @@ class App extends Component {
         if (PageTitle !== this.state.PageTitle) {
             this.setState({ PageTitle })
         }
-    } 
+    }
 
     /**
      * Callback function from login page to set the authentication state to true amd redirect to the 
@@ -138,7 +139,7 @@ class App extends Component {
      */
     logout() {
         Auth.logout();
-        this.setState({ redirect:"/login", isLogin: false});
+        this.setState({ redirect: "/login", isLogin: false });
     }
 
     /**
@@ -148,7 +149,7 @@ class App extends Component {
     validateAndLogout() {
         if (this.state.isEditDirty) {
             this.toggleDirtyDialog(this.logout);
-        }   else {
+        } else {
             this.logout();
         }
     }
@@ -158,7 +159,7 @@ class App extends Component {
     }
 
     componentDidMount() {
-  
+
         subscribe('edit-dirty', (flag) => {
             this.setState({ isEditDirty: flag }, () => {
                 if (flag) {
@@ -166,21 +167,21 @@ class App extends Component {
                     window.history.pushState(null, document.title, window.location.href);
                     window.addEventListener('popstate', this.onBackButtonEvent);
                 } else {
-                    window.removeEventListener("beforeunload",reloadDirty);
+                    window.removeEventListener("beforeunload", reloadDirty);
                 }
             });
         });
 
-        let  reloadDirty =function  (e) {
+        let reloadDirty = function (e) {
             let confirmationMessage = "\\o/";
-            (e || window.event).returnValue = confirmationMessage; //Gecko + IE
-            return confirmationMessage;   
+            (e).returnValue = confirmationMessage; //Gecko + IE
+            return confirmationMessage;
         };
     }
 
     componentDidUpdate() {
-        if(window.location.pathname === '/'){
-            this.setState({redirect : '/su/timelineview/week'})
+        if (window.location.pathname === '/') {
+            this.setState({ redirect: '/su/timelineview/week', isBreadCrumbVisible: false ,isDateTimeVisible:true})
         }
     }
 
@@ -189,21 +190,21 @@ class App extends Component {
         if (this.state.isEditDirty) {
             const leavePage = window.confirm("Do you want to discard your changes? Your changes may not be saved.");
             if (leavePage) {
-                this.setState({isEditDirty: false});
-                window.history.back(); 
+                this.setState({ isEditDirty: false });
+                window.history.back();
             } else {
                 window.history.pushState(null, document.title, window.location.href);
-            } 
+            }
         }
     }
 
-    close = () => {     
-        this.setState({showDirtyDialog: false});
+    close = () => {
+        this.setState({ showDirtyDialog: false });
     }
     /**
      * Cancel edit and redirect to Cycle View page
      */
-    cancelEdit = () => {        
+    cancelEdit = () => {
         this.setState({ isEditDirty: false, showDirtyDialog: false });
         this.state.toPathCallback();
     }
@@ -220,69 +221,67 @@ class App extends Component {
         callback();
     }
 
-     /**
-     * Set search param
-     * @param {*} key 
-     * @param {*} value 
-     */
-      setSearchField(key, value) {
+    /**
+    * Set search param
+    * @param {*} key 
+    * @param {*} value 
+    */
+    setSearchField(key, value) {
         this.setState({
-            objectType: key, 
-            findObjectId: value, 
-            redirect:"/find/object/"+key+"/"+value
+            objectType: key,
+            findObjectId: value,
+            redirect: "/find/object/" + key + "/" + value
         });
     }
-    
+
     render() {
         const wrapperClass = classNames('layout-wrapper', {
             'layout-overlay': this.state.layoutMode === 'overlay',
             'layout-static': this.state.layoutMode === 'static',
             'layout-static-sidebar-inactive': this.state.staticMenuInactive && this.state.layoutMode === 'static',
             'layout-overlay-sidebar-active': this.state.overlayMenuActive && this.state.layoutMode === 'overlay',
-            'layout-mobile-sidebar-active': this.state.mobileMenuActive			
+            'layout-mobile-sidebar-active': this.state.mobileMenuActive
         });
         return (
-            <React.Fragment>
+    
                 <div className="App">
                     <Provider store={AuthStore}>
-                    {/* <div className={wrapperClass} onClick={this.onWrapperClick}> */}
-                    <div className={wrapperClass}>
-                        {/* Load main routes and application only if the application is authenticated */}
-                        <>
-                        {this.state.redirect &&
-                        // <AuthComponent isLogin = {this.state.isLogin}>
-                        <AuthComponent>
-                            <AppTopbar 
-                                onToggleMenu={this.onToggleMenu} 
-                                isLoggedIn={this.state.authenticated} 
-                                onLogout={this.validateAndLogout} 
-                                setSearchField={this.setSearchField}
-                            />
-                            <Router basename={ this.state.currentPath }>
-    
-                                <AppMenu model={this.menu} toggleDirtyDialog={this.toggleDirtyDialog} isEditDirty={this.state.isEditDirty} onMenuItemClick={this.onMenuItemClick} layoutMode={this.state.la} active={this.state.menuActive}/>
-                                <div className="layout-main">
-                                    {(this.state.redirect || this.state.redirect==="/login") &&
-                                        <Redirect to={{pathname: this.state.redirect==="/login"?"/su/timelineview/week":this.state.redirect, state: {userrole: this.state.userrole}}} />}
-                                    <AppBreadcrumb setPageTitle={this.setPageTitle} section={this.state.currentMenu} onBreadcrumbClick={this.onBreadcrumbClick} />
-                                    <RoutedContent />
-                                </div>
-                            </Router>   
+                        <div className={wrapperClass}>
+                            {/* Load main routes and application only if the application is authenticated */}
+                                {this.state.redirect &&
+                                    // <AuthComponent isLogin = {this.state.isLogin}>
+                                    <AuthComponent>
+                                        <AppTopbar
+                                            onToggleMenu={this.onToggleMenu}
+                                            isLoggedIn={this.state.authenticated}
+                                            onLogout={this.validateAndLogout}
+                                            setSearchField={this.setSearchField}
+                                            isDateTimeVisible={this.state.isDateTimeVisible}
+                                        />
+                                        <Router basename={this.state.currentPath}>
+
+                                            <AppMenu model={this.menu} toggleDirtyDialog={this.toggleDirtyDialog} isEditDirty={this.state.isEditDirty} onMenuItemClick={this.onMenuItemClick} layoutMode={this.state.la} active={this.state.menuActive} />
+                                            <div className="layout-main">
+                                                {(this.state.redirect || this.state.redirect === "/login") &&
+                                                    <Redirect to={{ pathname: this.state.redirect === "/login" ? "/su/timelineview/week" : this.state.redirect, state: { userrole: this.state.userrole } }} />}
+                                                {(this.state.isBreadCrumbVisible) &&
+                                                    <AppBreadcrumb setPageTitle={this.setPageTitle} section={this.state.currentMenu} onBreadcrumbClick={this.onBreadcrumbClick} />
+                                                }
+                                                <RoutedContent />
+                                            </div>
+                                        </Router>
 
-                            <AppFooter></AppFooter>
-                            </AuthComponent>
-                        }
-                        </>
-                        <CustomDialog type="confirmation" visible={this.state.showDirtyDialog} width="40vw"
-                            header={'Confirmation'} message={'Do you want to discard your changes? Your changes may not be saved.'} 
-                            content={''} onClose={this.close} 
-                            actions={ [ {id:"yes", title: 'Discard', callback: this.cancelEdit, className:'act-btn-dispose'},
-                                    {id:"no", title: 'Cancel', className:'act-btn-cancel', callback: this.close} ]}>
-                        </CustomDialog>
-                    </div>
+                                           </AuthComponent>
+                                }
+                            <CustomDialog type="confirmation" visible={this.state.showDirtyDialog} width="40vw"
+                                header={'Confirmation'} message={'Do you want to discard your changes? Your changes may not be saved.'}
+                                content={''} onClose={this.close}
+                                actions={[{ id: "yes", title: 'Discard', callback: this.cancelEdit, className: 'act-btn-dispose' },
+                                { id: "no", title: 'Cancel', className: 'act-btn-cancel', callback: this.close }]}>
+                            </CustomDialog>
+                        </div>
                     </Provider>
                 </div>
-            </React.Fragment>
         );
     }
 }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json
index ee125d2478a14e12ceec1556fa741bf536e71094..d27e1dc2012b55b433312fea09d7463e0d97acac 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json
+++ b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json
@@ -533,6 +533,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -2219,6 +2361,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -3905,6 +4189,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -5591,6 +6017,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -7277,6 +7845,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -8963,6 +9673,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -10649,6 +11501,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -12335,6 +13329,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -13515,7 +14651,7 @@
                         }
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/3#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "duration": {
@@ -14055,6 +15191,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -15217,7 +16495,7 @@
                         }
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/3#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "duration": {
@@ -15264,7 +16542,7 @@
                         }
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "duration": {
@@ -15804,6 +17082,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -16966,7 +18386,7 @@
                         }
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "duration": {
@@ -17545,6 +18965,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -19280,6 +20842,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -20474,7 +22178,7 @@
                         "default": {}
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "calibrator": {
@@ -21024,6 +22728,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -22178,7 +24024,7 @@
                         "default": {}
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "calibrator": {
@@ -22769,6 +24615,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -24510,6 +26498,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -25706,7 +27836,7 @@
                         "default": {}
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "correlator": {
@@ -26251,6 +28381,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -27405,7 +29677,7 @@
                         "default": {}
                     },
                     "beamformer": {
-                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer",
+                        "$ref": "#/definitions/beamformer",
                         "default": {}
                     },
                     "correlator": {
@@ -27986,6 +30258,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -29717,6 +32131,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -31448,6 +34004,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -33275,6 +35973,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -35199,6 +38039,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -37123,6 +40105,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -39047,6 +42171,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -40975,6 +44241,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -43075,6 +46483,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -45340,6 +48890,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -47605,6 +51297,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
@@ -49874,6 +53708,148 @@
                         ],
                         "type": "object"
                     },
+                    "lofar2antennafield": {
+                        "additionalProperties": false,
+                        "properties": {
+                            "SAPs": {
+                                "default": [
+                                    {}
+                                ],
+                                "items": {
+                                    "sap": {
+                                        "default": {},
+                                        "properties": {
+                                            "pointing": {
+                                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                                "default": {}
+                                            },
+                                            "subbands": {
+                                                "default": [
+                                                    0
+                                                ],
+                                                "items": {
+                                                    "maximum": 511,
+                                                    "minimum": 0,
+                                                    "type": "number"
+                                                },
+                                                "minItems": 1,
+                                                "type": "array"
+                                            }
+                                        },
+                                        "required": [
+                                            "subbands",
+                                            "pointing"
+                                        ],
+                                        "type": "object"
+                                    }
+                                },
+                                "minItems": 1,
+                                "type": "array"
+                            },
+                            "antenna_field": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field",
+                                "default": "HBA"
+                            },
+                            "antenna_set": {
+                                "default": "ALL",
+                                "description": "Fields & antennas to use",
+                                "enum": [
+                                    "ALL",
+                                    "INNER",
+                                    "OUTER",
+                                    "SPARSE_EVEN",
+                                    "SPARSE_ODD"
+                                ],
+                                "type": "string"
+                            },
+                            "lead_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta",
+                                "default": 2,
+                                "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.",
+                                "minimum": 0
+                            },
+                            "filter": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter",
+                                "default": "HBA_110_190"
+                            },
+                            "first_beamlet": {
+                                "default": 0,
+                                "minimum": 0,
+                                "type": "number"
+                            },
+                            "observation_id": {
+                                "default": 1,
+                                "minimum": 1,
+                                "type": "number"
+                            },
+                            "start_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp"
+                            },
+                            "stop_time": {
+                                "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp",
+                                "default": "2100-01-01T00:00:00Z"
+                            },
+                            "HBA": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "tile_beam": {
+                                        "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing",
+                                        "default": {}
+                                    },
+                                    "DAB_filter": {
+                                        "type": "boolean",
+                                        "default": false,
+                                        "description": "Enable hardware filter on DAB frequencies"
+                                    },
+                                    "element_selection": {
+                                        "type": "string",
+                                        "default": "ALL",
+                                        "description": "Which element(s) to enable in each tile",
+                                        "enum": [
+                                            "ALL",
+                                            "GENERIC_201512"
+                                        ]
+                                    }
+                                }
+                            },
+                            "dithering": {
+                                "type": "object",
+                                "additionalProperties": false,
+                                "default": {},
+                                "properties": {
+                                    "enabled": {
+                                        "type": "boolean",
+                                        "default": false
+                                    },
+                                    "power": {
+                                        "type": "number",
+                                        "description": "Power of dithering signal, in dBm",
+                                        "minimum": -25,
+                                        "maximum": -4,
+                                        "default": -4
+                                    },
+                                    "frequency": {
+                                        "type": "number",
+                                        "description": "Frequency of dithering signal, in Hz",
+                                        "default": 102000000
+                                    }
+                                }
+                            }
+                        },
+                        "required": [
+                            "observation_id",
+                            "stop_time",
+                            "antenna_field",
+                            "antenna_set",
+                            "filter",
+                            "SAPs"
+                        ],
+                        "title": "lofar2antennafield",
+                        "type": "object",
+                        "version": 2
+                    },
                     "cluster_resources": {
                         "additionalProperties": false,
                         "default": {},
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
index 697cddebebd8a594eea8a03c6025e511e53fb2ea..1565cce1d0d563868a1be233a7d07f23e8ff961e 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
@@ -875,7 +875,7 @@ function Jeditor(props) {
                 // };
 
                 // properties[propertyKey] = newProperty;
-            }   else if (propertyValue['$ref'] && propertyValue['$ref'].toLowerCase().indexOf('#/definitions/timestamp')>=0) {
+            }   else if ( propertyValue?.['$ref'] && propertyValue?.['$ref'].toLowerCase().indexOf('#/definitions/timestamp')>=0) {
                 let newProperty = {};
                 newProperty.format = 'datetime-local';
                 newProperty.validationType = 'dateTime';
@@ -900,7 +900,7 @@ function Jeditor(props) {
                     newProperty.options.flatpickr["defaultMinute"] = systemTime.minutes();
                 }
                 properties[propertyKey] = {...propertyValue, ...newProperty};
-            }   else if (propertyValue['$ref'] && propertyValue['$ref'].toLowerCase().indexOf('#/definitions/timedelta')>=0) {
+            }   else if (propertyValue?.['$ref'] && propertyValue?.['$ref'].toLowerCase().indexOf('#/definitions/timedelta')>=0) {
                 //TODO: Customization is applied only for constraints transit_offset fields as it is required to keep just time value (seconds) in some places like integration_time
                 // set 'required' field value, it required in fields validation
                 if (parentProps && parentProps.transit_offset) {
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/_overrides.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/_overrides.scss
index 698947e1e4f065c6a7fa206d5bbcd7e34489ace1..c395c8127779d3bcd8f458914ac6b301da478a1e 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/_overrides.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/_overrides.scss
@@ -311,8 +311,6 @@ In Excel View the for Accordion  background color override
 .__react_component_tooltip.place-left {
     font-size: 14px;
     width: 170px;
-}
-.__react_component_tooltip.place-left {
     padding-left: 10px;
     background-color: black;
     margin-left: -3px;
@@ -419,9 +417,7 @@ h3 + div + p {
     margin-bottom: 0.25em !important;
     width: fit-content;
 }
-.chips .p-inputtext {
-    // display: none;
-}
+
 .chipsview .p-chips-token-icon {
     display: none;
 }
@@ -452,6 +448,7 @@ h3 + div + p {
     padding-top: 0px;
     padding-bottom: 0px;
     line-height: 2;
+    margin-left:5px;
 }
 
 .timeline-filters .p-button-icon-only {
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/_variables.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/_variables.scss
index fe7ba49deb049db953fea7be0292bbe662059c70..5c69ac830b2a843eac8b32dc8fc110eb65970889 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/_variables.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/_variables.scss
@@ -37,6 +37,7 @@ $menuitemDarkBorderColor:rgba(246, 248, 252, 0.918);
 
 /* Topbar */
 $topbarLeftBgColor:#3d4977;
+$topbarLighterColor:#5C568A;
 $topbarRightBgColor:#3d4977;
 $topbarItemBadgeBgColor:#ef6262;
 $topbarItemBadgeColor:#ffffff;
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppFooter.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppFooter.js
deleted file mode 100644
index 2040255cb5d32bf11d7e6ca48996674ecd5798df..0000000000000000000000000000000000000000
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppFooter.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Component } from 'react';
-
-export class AppFooter extends Component {
-
-    render() {
-        return  (
-            <div className="layout-footer">
-                <span className="footer-text" style={{'marginRight': '5px', color:'#0066CC'}}><strong>TMSS</strong> by <strong>ASTRON</strong><span className="footer-version" >v0.1.4</span></span>
-            </div>
-        );
-    }
-}
-
-export default AppFooter;
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppFooter.test.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppFooter.test.js
deleted file mode 100644
index 2a6dd7e71ea2a44fce754d335333324feb0bb596..0000000000000000000000000000000000000000
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppFooter.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { render } from '@testing-library/react';
-import AppFooter from './AppFooter';
-import {removeReact18ConsoleErrors} from "../../utils/test.helper";
-
-removeReact18ConsoleErrors()
-
-test('renders ASTRON in footer', () => {
-  const { getByText } = render(<AppFooter />);
-  const linkElement = getByText("ASTRON");
-  expect(linkElement).toBeInTheDocument();
-});
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppTopbar.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppTopbar.js
index 25d5931f056c4195502bf8220a5cc43049aee0de..03e8e60b54347ada33e404bd578952206551a46f 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppTopbar.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/AppTopbar.js
@@ -7,6 +7,7 @@ import 'primeflex/primeflex.css';
 import { PropTypes } from 'prop-types';
 import Auth from '../../authenticate/auth';
 import { FindObject } from './FindObject';
+import DateTimeInfo from "./DateTimeInfo";
 export class AppTopbar extends Component {
 
     constructor(props) {
@@ -21,36 +22,50 @@ export class AppTopbar extends Component {
     }
     
     static propTypes = {
-        onToggleMenu: PropTypes.func.isRequired
+        onToggleMenu: PropTypes.func.isRequired,
+        isLoggedIn: PropTypes.bool,
+        isDateTimeVisible:PropTypes.bool,
+        setSearchField:PropTypes.func
     }
     
     render() {
         return (
-            <React.Fragment>
                 <div className="layout-wrapper layout-static layout-static-sidebar-inactive">
                     <div className="layout-topbar clearfix">
                         
                         <button className="p-link layout-menu-button" onClick={this.props.onToggleMenu}>
 						<i className="pi pi-bars"></i></button>
                         <span className="header-title">TMSS</span>
+                        <span className="header-by">by</span>
+                        <span className="header-company">ASTRON</span>
                        
                         {this.props.isLoggedIn &&
+                        <React.Fragment>
+                                
+                            {this.props.isDateTimeVisible && 
+                            <div className="top-date-bar">
+                            <DateTimeInfo/>
+                            </div>
+                }
+
                             <div className="top-right-bar">
+                          
                                 <a className="p-link layout-menu-button" style= {{marginLeft: '8px', marginRight: '8px'}} title="Documentation"
-                                href="https://support.astron.nl/confluence/display/public/TMSS+User+Documentation">
+                                href="https://support.astron.nl/confluence/display/public/TMSS+User+Manual" target="_blank" rel="noreferrer ">
                                 <i className="pi pi-file-o"></i></a>
-                                <a className="p-link layout-menu-button"  title="Helpdesk" href="https://support.astron.nl/sdchelpdesk">
+                                <a className="p-link layout-menu-button"  title="Helpdesk" href="https://support.astron.nl/sdchelpdesk" target="_blank" rel="noreferrer ">
                                 <span><i className="pi pi-question-circle"></i></span></a>
                                 <button className="p-link layout-menu-button" onClick={this.props.onLogout} title="Logout">
                                 <i className="pi pi-power-off"></i></button>
                                 <span style= {{marginLeft: '8px'}}><i className="fa fa-user" title={`Logged in as ${this.state.username}`}></i></span>
                             </div>
+                            </React.Fragment>
                         }
                        <FindObject setSearchField={this.props.setSearchField} />
                     </div>
                         
                 </div>
-            </React.Fragment>
+
         )
     }
 }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeInfo.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/DateTimeInfo.js
similarity index 80%
rename from SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeInfo.js
rename to SAS/TMSS/frontend/tmss_webapp/src/layout/components/DateTimeInfo.js
index 474da6ad2c0f7503cfb81448ca63fb9cfe16fdc0..a142fa92b4f893040800481abe9eeb7778cabdc3 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeInfo.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/DateTimeInfo.js
@@ -1,30 +1,28 @@
 import  {useEffect, useState} from "react";
-import UtilService from "../../../../services/util.service";
+import UtilService from "../../services/util.service";
 import moment from "moment";
-import UIConstants from "../../../../utils/ui.constants";
+import UIConstants from "../../utils/ui.constants";
 
 import { ProgressSpinner } from 'primereact/progressspinner';
 import Clock from 'react-live-clock';
 
 function getDateOrTimeElement(title, element) {
-    return <div className="element" data-testid={title + "-element"}>
-        <label >{title}:</label>
+    return <span className="date-element" data-testid={title + "-element"}>
+        <span  className="date-title">{title}</span>
         {element}
-    </div>;
+    </span>;
 }
 
 export default function DateTimeInfo() {
     const [currentUTC, setCurrentUTC] = useState()
     const [currentLST, setCurrentLST] = useState()
 
-
-    useEffect(() => { // initializer
+    async function fetchUTC() {
+        let utc = await UtilService.getUTC()
+        setCurrentUTC(moment(utc))
+    }
+        useEffect(() => { // initializer
         if (!currentUTC) {
-            async function fetchUTC() {
-                let utc = await UtilService.getUTC()
-                setCurrentUTC(moment(utc))
-            }
-
             fetchUTC().catch(e => console.error("Couldn't get current utc from the server", e))
         }
     }, [])
@@ -51,16 +49,16 @@ export default function DateTimeInfo() {
 
     if (currentUTC.isValid() && currentLST.isValid()) {
         return <div className="datetime-info-container">
-            {getDateOrTimeElement("Date", <span className="h5"
+            {getDateOrTimeElement("Date", <span className="clock-time"
                                                 title={currentUTC.format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)}>
                     {currentUTC.format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)}
                 </span>)}
-            {getDateOrTimeElement("UTC", <Clock className="h5"
+            {getDateOrTimeElement("UTC", <Clock className="clock-time"
                                                 date={currentUTC.format(UIConstants.CALENDAR_DATETIME_FORMAT)}
                                                 format="HH:mm:ss"
                                                 interval={1000}
                                                 ticking={true}/>)}
-            {getDateOrTimeElement("LST", <Clock className="h5"
+            {getDateOrTimeElement("LST", <Clock className="clock-time"
                                                 date={currentLST.format(UIConstants.CALENDAR_DATETIME_FORMAT)}
                                                 format="HH:mm:ss"
                                                 interval={1000}
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeInfo.test.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/DateTimeInfo.test.js
similarity index 91%
rename from SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeInfo.test.js
rename to SAS/TMSS/frontend/tmss_webapp/src/layout/components/DateTimeInfo.test.js
index b0dbd5c57cfdc5131cfbefbd1682dfab9f169487..2f14041e79b7a70efb8504b398eb62884c95dd42 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeInfo.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/DateTimeInfo.test.js
@@ -1,12 +1,12 @@
 import DateTimeInfo from "./DateTimeInfo";
 import {render} from "@testing-library/react";
-import UtilService from "../../../../services/util.service";
-import {removeReact18ConsoleErrors} from "../../../../utils/test.helper";
+import UtilService from "../../services/util.service";
+import {removeReact18ConsoleErrors} from "../../utils/test.helper";
 import {act} from "react-dom/test-utils";
 
 removeReact18ConsoleErrors()
 
-jest.mock('../../../../services/util.service');
+jest.mock('../../services/util.service');
 
 describe('DateTimeInfo Component', () => {
     beforeEach(() => {
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js
index e41d255572650b3ef0ff91db6376eb789137781c..8c13b34ba618f26ff5b3d79acf47f4c78f6488c2 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js
@@ -1,7 +1,7 @@
 
 import { Link } from "react-router-dom";
-
-//TODO: old component (should test + refactor)
+import { Button } from 'primereact/button';
+import { Dropdown } from 'primereact/dropdown';
 const PageActionMenu = ({ actions, className }) => {
     const onClickLink = (action) => {
         if (action.link) {
@@ -31,14 +31,32 @@ const PageActionMenu = ({ actions, className }) => {
             action.props.callback(e);
         }
     }
-
+    const setSelected= (e, action) => {
+        if (action.actOn && action.actOn === 'select') {
+            action.props.callback(e.value);
+        }
+    }
 
 
     return <div className={"page-action-menu " + className}>
         {(actions || []).map((action) => {
-            if (action.type === 'button') {
+                 if (action.type === 'buttonv2') {
+                    return (
+                        <Button  key={action.title + '_page_header'} title={action.title || ''}
+                            style={action.style}
+                            icon={`pi ${action.icon}`} disabled={action.disabled}
+                                onMouseOver={(e) => action.disabled ? '' : onButtonMouseOver(e, action)}
+                                onFocus={(e) => action.disabled ? '' : onButtonMouseOver(e, action)}
+                                onClick={(e) => action.disabled ? '' : onButtonClick(e, action)}
+                                onKeyDown={(e) => action.disabled ? '' : handleOnKeyDown(e, action)}
+                            >
+                        </Button>
+                    );
+                }
+            switch(action.type) {
+            case  'button' :
                 return (
-                    <button className="p-link" key={action.title + '_page_header'} title={action.title || ''}
+                    <button  className="p-link" key={action.title + '_page_header'} title={action.title || '' }
                         style={action.style}>
                         <i className={`${action.iconType ? action.iconType : 'fa'} ${action.disabled ? 'fa-disabled' : ''} ${action.icon} ${action.classes}`}
                             onMouseOver={(e) => action.disabled ? '' : onButtonMouseOver(e, action)}
@@ -47,21 +65,33 @@ const PageActionMenu = ({ actions, className }) => {
                             onKeyDown={(e) => action.disabled ? '' : handleOnKeyDown(e, action)} />
                     </button>
                 );
-            } else if (action.type === 'element') {
+            case 'divider':
+                return (<span className="action-divider" key={action.title}></span>);
+            case  'element':
                 return (
                     <div key={`index`} className={action.classes} dangerouslySetInnerHTML={{ __html: action.element }} />
                 )
-            } else if (action.type === 'ext_link') {
+            case 'dropdown':
+                return (<div  className={action.classes}> <span className="dropdown-title">{action.title} </span><Dropdown value={action.selected} onChange={(e) => setSelected(e,action)} options={action.options} optionLabel="value"  className="w-full md:w-14rem" /></div> )
+
+            case  'ext_link':
                 return (
                     <a href={action.props.pathname} title={action.title || ''} key={action.title}
                         target={action.target ? action.target : "_blank"} rel="noreferrer">{action.label}</a>
                 );
-            } else if (action.type === 'tag') {
+            case  'tag': 
                 return (
                     <span key={action.title + '_page_header'} className={action.className}
                         title={action.title || ''}>{action.content}</span>
                 );
-            } else {
+                case  'tagv2': 
+                return (
+                    <span key={action.title + '_page_header'} className={action.className}
+                        title={action.title || ''}>{action.content}</span>
+                );    
+
+
+            default:
                 return (
                     <Link key={action.title + '_page_header'} className={action.classname}
                         to={action.disabled ? {} : { ...action.props }}
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_breadcrumb.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_breadcrumb.scss
index 8c27dd9432d5d7d0bb79b84ec2e6694b0aa9d95e..4b7d31a50e12a29433c54ff5509d75288d4f0244 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_breadcrumb.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_breadcrumb.scss
@@ -7,6 +7,7 @@ body .p-breadcrumb{
     margin-bottom: 5px;
     box-shadow: 2px 2px #d6d9d9;
     border: none;
+    margin-top:10px;
 }
 .p-breadcrumb .pi{
   color: #535252;
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_content.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_content.scss
index dc1c2f8c6dd3f60f5c9276af8a140a692b454e00..7df17bae02ce067cbe8f9f5e36c939d524592d3f 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_content.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_content.scss
@@ -1,6 +1,6 @@
 .layout-main {
     @include transition(margin-left $transitionDuration);
-    padding: 60px 16px 10px 25px;
+    padding: 50px 7px 00px 25px;
     min-height: 95vh;
     background-color: white;
 }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_report.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_report.scss
index ac9ed42c071bbe40358cff2eb0ae364966d6d024..37841aedfbc98b339ace109e74d933c8aacc205d 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_report.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_report.scss
@@ -13,7 +13,9 @@
     font-size: 12px;
     color: black;
 }
-
+.routerpage {
+    margin-top:5px;
+}
 .print-btn {
     margin-top: 10px;
     cursor: pointer;
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_responsive.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_responsive.scss
index 8db4dd4239880dd812faa09bc21c46f495a2b438..0ff6acb631ffd242746a5255bf795454f9ea9d53 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_responsive.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_responsive.scss
@@ -34,11 +34,10 @@
             }
     
             .layout-main, .layout-footer {
-                margin-left: 175px;
+                margin-left: 162px;
             }
     
             &.layout-static-sidebar-inactive {
-			    
                 .layout-sidebar {
                     left: 0;
                     width: 50px;
@@ -50,7 +49,7 @@
                 }
 
                 .layout-main, .layout-footer {
-                    margin-left: 50px;
+                    margin-left: 37px;
                 }
             }
 			
@@ -71,9 +70,11 @@
         .layout-sidebar {
             left: -250px;
             margin-top: 50px;
-            z-index: 1;
+            z-index: 10000;
+            padding-top:10px;
         }
 
+       
         .layout-mask {
             display: none;
             position: fixed;
@@ -100,4 +101,9 @@
     .body-overflow-hidden {
         overflow: hidden;
     }
+
+    .layout-wrapper.layout-static.layout-static-sidebar-inactive ul li a span {
+        display: inline !important;
+
+    }
 }
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss
index 4abd138bfc4e82f48d67a25d67a30f2166d211ec..0f817888083e74795164a809e22fbcaf1587052b 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss
@@ -1,6 +1,6 @@
 .sticky {
   position: sticky;
-  top: 33px;
+  top: 0px;
   z-index: 999;
 }
 
@@ -9,8 +9,7 @@
 }
 
 .react-calendar-timeline {
-  padding-bottom: 25rem;
-  min-width: calc(50vw - 225px);
+    min-width: calc(50vw - 225px);
   
   .rct-header-root {
     background-color: #f0f0f0;
@@ -19,8 +18,8 @@
 
 .timeline-tools {
   display: flex;
-  justify-content: center;
-  margin-bottom: 1.125rem;
+  justify-content: left;
+  margin-bottom: 5px;
 
   .header {
     display: flex;
@@ -32,12 +31,7 @@
     padding-bottom: 1rem;
   }
 
-  .section {
-    border-right: 2px solid var(--gray-100);
-    padding: 0 1rem;
-    height: calc(100% - 0.5rem);
-  }
-
+  
   .group {
     display: flex;
     width: 100%;
@@ -48,7 +42,12 @@
     }
   }
 }
-
+.sectiontitle {
+  margin-bottom: 0px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  line-height: 29px;
+}
 .current-marker {
   position: absolute;
   top: 0;
@@ -74,7 +73,39 @@
   position: fixed;
   top: 14rem;
 }
+.fix-element {
+  position: fixed;
+  top:100px;
+  width: 100vw;
+}
 
+.action-divider {
+  margin-right: 10px;
+  margin-top:5px;
+  padding-right:5px;
+  height: 30px;
+  border-right: 1px solid var(--gray-200);
+}
+
+.timeline-header-dropdown{
+  display: flex;
+  float:left;
+  margin-right: 10px;
+  margin-top:5px;
+  padding-right:5px;
+  height: 30px;
+  width:230px;
+  border-right: 1px solid var(--gray-200);
+  border-left : 1px solid var(--gray-200);
+  .dropdown-title {
+    
+    padding-right: 5px;
+    padding-left: 5px;
+    font-size: 14px;
+    line-height: 28px;
+    min-width: 70px;
+  }
+}
 .hide-element {
   display: none;
 }
@@ -155,6 +186,11 @@
 }
 
 .timeline-datetime-navigator {
+  margin-left: 5px;
+  
+  .p-panel-content {
+    height: 180px;
+  }
   .datetime-info-container {
     display: inline-grid;
 
@@ -169,7 +205,6 @@
   }
 
   .p-button.p-button-icon-only {
-    line-height: 0;
     padding: 0.1rem;
     margin-right: 0.1rem;
   }
@@ -185,7 +220,7 @@
     }
 
     .jump-to-input {
-      width: 8.75rem;
+      width: 134px;
 
       input {
         width: inherit;
@@ -220,6 +255,17 @@
 }
 
 .timeline-zoom-and-move {
+  
+    margin-left:5px;
+    margin-right: 5px;
+.p-panel-content
+{
+  height: 180px;
+}
+  .p-panel-header {
+    padding-top:5px;
+    padding-bottom: 5px;
+  }
   .p-dropdown {
     width: 7rem !important;
   }
@@ -283,14 +329,13 @@
   font-size: 1rem;
   font-weight: 600;
   color: #004B93;
-  padding-bottom: 1rem;
 }
 
 .legendbar {
   font-size: 0.75rem;
   flex-wrap: wrap;
-  overflow: scroll;
-  margin-right: 1.25rem;
+  overflow: hidden;
+  
 
   .left,
   .right {
@@ -302,13 +347,19 @@
     .section {
       display: flex;
       flex-direction: row;
-
+      border-bottom: 1px solid var(--gray-100);
+      height:28px;
+      line-height: 12px;
+      margin-bottom: 1px;
+      
       label {
         text-overflow: ellipsis;
         overflow: hidden;
         text-align: end;
       }
     }
+
+
   }
 }
 
@@ -326,24 +377,24 @@
 }
 
 .calendar-input {
-  width: 70% !important;
+  width: 134px !important;
   border-top-right-radius: 0px !important;
   border-bottom-right-radius: 0px !important;
   font-size: 12px !important;
   height: 29px;
+  margin-right: 5px;
 }
 
 .time-input {
   width: 5rem;
-  border-top-right-radius: 0 !important;
-  border-bottom-right-radius: 0 !important;
+  
   font-size: 12px !important;
   height: 29px;
 }
 
 .calendar-button {
   position: relative;
-  width: 20px !important;
+  width: 36px !important;
   height: 29px;
   margin-left: -2px !important;
   border-radius: 20% !important;
@@ -361,6 +412,9 @@
 .timeline-details-pane {
   font-size: 14px;
   flex-direction: column;
+  max-height: 80vh;
+  min-height: 80vh;
+  overflow-y: scroll;
 }
 
 .timeline-details-header {
@@ -678,7 +732,7 @@
 
 .su-legend {
   padding: 0.5rem;
-  margin-bottom: 0.5rem;
+  margin-bottom: 1px;
   width: calc(100% * 1);
   overflow: clip;
   text-overflow: ellipsis;
@@ -741,6 +795,7 @@ body .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container
 .timeline-view-toolbar .p-multiselect .p-multiselect-label {
   padding: 0 0.2rem 0 0.2rem;
   max-width: 5rem;
+
 }
 
 #reserv-reasons .p-multiselect-panel {
@@ -835,17 +890,21 @@ body .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container
   background-color: #1ff811 !important;
   color: black !important;
 }
-
+.legend-panel {
+  margin-left:15px;
+  margin-bottom: 5px;
+  cursor:default;
+  user-select: none;
+}
 .timeline-panel {
-  max-height: 85vh;
   overflow-y: scroll;
   padding-left: 0 !important;
-  width: 100%;
-
+  width:100%;
   &.summary {
     border-left: 1px solid white;
     margin-top: 0;
     background-color: var(--gray-50);
+    width:500px;
   }
 }
 
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_topbar.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_topbar.scss
index 8ee0d4fd1435eb8d4399f0876443aba0fcd6b0b1..5021ae3aee2de7dffeef6f3896521536d247e160 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_topbar.scss
+++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_topbar.scss
@@ -6,12 +6,28 @@
     z-index: 1000;
     right: 0;
     @include clearfix();
-    @include linear-gradient-left($topbarLeftBgColor,$topbarRightBgColor);
+    @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);
     @include transition(left $transitionDuration);
 
     .header-title {
         font-size: 22px;
         margin-left: 10px;
+        cursor:default;
+        user-select: none;
+    }
+
+    .header-by {
+        font-size: 14px;
+        margin-left: 5px;
+        cursor:default;
+        user-select: none;
+    }
+
+    .header-company {
+        font-size: 22px;
+        margin-left: 5px;
+        cursor:default;
+        user-select: none;
     }
 
     .layout-topbar-icons {
@@ -21,7 +37,7 @@
         -webkit-animation-duration: .5s;
         animation-duration: .5s;
 
-        
+
         button {
             position: relative;
             color: $topbarItemColor;
@@ -82,10 +98,29 @@
                 margin: 0px;
                 @include border-radius(2px);
 
-                &::-webkit-input-placeholder { color:$topbarSearchInputColor; opacity: .7; @include transition(opacity $transitionDuration);}
-                &:-moz-placeholder { color:$topbarSearchInputColor; opacity: .7; @include transition(opacity $transitionDuration);}
-                &::-moz-placeholder { color:$topbarSearchInputColor; opacity: .7; @include transition(opacity $transitionDuration);}
-                &:-ms-input-placeholder { color:$topbarSearchInputColor; opacity: .7; @include transition(opacity $transitionDuration);}
+                &::-webkit-input-placeholder {
+                    color: $topbarSearchInputColor;
+                    opacity: .7;
+                    @include transition(opacity $transitionDuration);
+                }
+
+                &:-moz-placeholder {
+                    color: $topbarSearchInputColor;
+                    opacity: .7;
+                    @include transition(opacity $transitionDuration);
+                }
+
+                &::-moz-placeholder {
+                    color: $topbarSearchInputColor;
+                    opacity: .7;
+                    @include transition(opacity $transitionDuration);
+                }
+
+                &:-ms-input-placeholder {
+                    color: $topbarSearchInputColor;
+                    opacity: .7;
+                    @include transition(opacity $transitionDuration);
+                }
             }
 
             .layout-topbar-search-icon {
@@ -98,10 +133,22 @@
             &:hover {
                 input {
                     border-bottom-color: $topbarItemHoverColor;
-                    &::-webkit-input-placeholder { opacity: 1 }
-                    &:-moz-placeholder {opacity: 1}
-                    &::-moz-placeholder {opacity: 1}
-                    &:-ms-input-placeholder {opacity: 1}
+
+                    &::-webkit-input-placeholder {
+                        opacity: 1
+                    }
+
+                    &:-moz-placeholder {
+                        opacity: 1
+                    }
+
+                    &::-moz-placeholder {
+                        opacity: 1
+                    }
+
+                    &:-ms-input-placeholder {
+                        opacity: 1
+                    }
                 }
 
                 .layout-topbar-search-icon {
@@ -119,7 +166,7 @@
         @include transition(color $transitionDuration);
 
         // Search type dropdown arrow looks bigger in topbar,
-       /* span {
+        /* span {
             font-size: 2em;
         }*/
 
@@ -133,9 +180,71 @@
     }
 }
 
+@media (max-width: 1024px) {
+    .date-title {
+        font-size: 8px;
+
+        padding-right: 2px;
+    }
+
+    .top-date-bar {
+        right: 70%;
+    }
+}
+
+@media (max-width: 970px) {
+    .date-title {
+        display: none;
+    }
+
+    .top-date-bar {
+        left: 120px;
+        width: 180px;
+
+    }
+
+    .clock-time {
+        font-size: 10px;
+    }
+
+}
+
+.top-date-bar {
+    position: fixed;
+    top: 0px;
+    right: 50%;
+
+    color: white;
+    font-family: monospace;
+    font-size: 14px;
+    height: 50px;
+    border-right: 1px solid white;
+    border-left: 1px solid white;
+    background-color: $topbarLighterColor;
+}
+
 .top-right-bar {
     float: right;
-    padding-top: 5px
+    padding-top: 5px;
+    height: 50px;
+
+    span {
+        padding-right: 5px;
+    }
+
+}
+
+.date-title {
+    padding-right: 10px;
+
+}
+
+.date-element {
+    line-height: 50px;
+
+    padding-left: 5px;
+    padding-right: 5px;
+
 }
 
 .top-right-bar span>i {
@@ -148,9 +257,11 @@
 
 .find-object-search {
     padding-top: 0px;
+
     .p-dropdown-label {
         background-color: #ffffff;
     }
+
     .p-dropdown-trigger {
         background-color: #ffffff;
         margin-left: -1px;
@@ -173,8 +284,6 @@
 
 .find-object-type {
     width: 13em;
-    right:1em;
-    height:29px
-}
-
- 
\ No newline at end of file
+    right: 1em;
+    height: 29px
+}
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/index.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/index.js
index 76602b79e0d3d7609297758f33e314960848d81d..ff5557dba198662f8c3f55bf8739565b83f259c9 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/index.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/index.js
@@ -23,8 +23,9 @@ class ReportHome extends Component {
     render() {
         return (
             <React.Fragment>
-            <PageHeader location={this.props.location} title={'Reports'} actions={[{icon:'fa-window-close', title:'Click to Close Report',
-                   type: 'button',  actOn: 'click', props:{ callback: this.close }}]}/>
+                <div className='routerpage'>
+            <PageHeader location={this.props.location} title={'Reports'} actions={[{icon:'pi pi-times', title:'Click to Close Report',
+                   type: 'buttonv2',  actOn: 'click', props:{ callback: this.close }}]}/>
             <TabView activeIndex={this.state.reportIndex} onTabChange={(e) => this.setState({reportIndex: e.index})}>
                 <TabPanel header="Cycle">
                     <CycleReportMain></CycleReportMain>
@@ -33,7 +34,7 @@ class ReportHome extends Component {
                     <ProjectReportMain ></ProjectReportMain>
                 </TabPanel>
             </TabView>
-            
+            </div>
             </React.Fragment>
         );
     }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js
index dfb467cf66aaf15600ca91a0bccbe2625a21ea8a..f3e4c38fe4389a6d3cc5ac7fb9fede6ca9614feb 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js
@@ -278,7 +278,7 @@ export class TaskEdit extends Component {
                 fieldsToDisable: this.state.fieldsToDisable,    // Array of field names to disable eg. [SAPs.0.name, specification_doc.name,...]
                 callback: this.setEditorOutput,
                 parentFunction: this.setEditorFunction,
-                observationType: template.name,
+                observationType: template?.name,
                 targetObservation: this.state.targetTask,
             });
         }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js
index 1f9f8ec0e84463d3691b0235e07ce14c5a8dca90..56100573a50883e7b32b0d965ec5b3d55b3498b9 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js
@@ -6,6 +6,7 @@ import mockConsole from 'jest-mock-console'
 import _ from 'lodash';
 import { TaskEdit } from './edit';
 import TaskService from '../../services/task.service';
+import UtilService from '../../services/util.service';
 import TaskServiceMock from '../../__mocks__/task.service.data';
 import AuthService from '../../services/auth.service';
 import AuthServiceMock from '../../__mocks__/auth.service.data';
@@ -29,7 +30,7 @@ afterEach(() => {
 /**
  * To set mock spy for Services that have API calls to the back end to fetch data
  */
-const setMockSpy = (() => {
+const setMockSpy =  (  () => {
     taskPermissionSpy = jest.spyOn(AuthService, 'getAccessControlMethod');
     taskPermissionSpy.mockImplementation((url) => {
         if (_.startsWith(url, "task_draft")) {
@@ -61,7 +62,12 @@ const setMockSpy = (() => {
 
     taskTemplateSpy = jest.spyOn(TaskService, 'getTaskTemplate');
     taskTemplateSpy.mockImplementation((templateId) => {
-        return Promise.resolve(_.find(TaskServiceMock.getTaskTemplates(), {"id":templateId}));
+        let template = _.find(TaskServiceMock.getTaskTemplates(), {"id":templateId});
+        return Promise.resolve(template);
+        //let resolvedtemplate =  UtilService.resolveSchema(template);
+
+        //return resolvedtemplate
+       // 
     });
 
     taskTemplatesSpy = jest.spyOn(TaskService, 'getTaskTemplates');
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js
index 58da93b8083498502af34cbbe849a56ff9581256..3c754e4bc45018274dc82bf28df31132711ab8f5 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js
@@ -9,10 +9,11 @@ import { TaskView } from './view';
 import TaskService from '../../services/task.service';
 import TaskServiceMock from '../../__mocks__/task.service.data';
 import AuthService from '../../services/auth.service';
+
 import AuthServiceMock from '../../__mocks__/auth.service.data';
 
-let taskPermissionSpy, taskFilterDefSpy, subtaskTypesSpy, taskDetailsSpy, taskTemplateSpy, 
-schedulingUnitSpy;
+let taskPermissionSpy, taskFilterDefSpy, subtaskTypesSpy, taskDetailsSpy, taskTemplateSpy,
+    schedulingUnitSpy;
 let restoreConsole;
 
 beforeEach(() => {
@@ -35,34 +36,35 @@ const setMockSpy = (() => {
     taskPermissionSpy.mockImplementation((url) => {
         if (_.startsWith(url, "task_draft")) {
             return Promise.resolve(AuthServiceMock.task["1"]);
-        }   else if (_.startsWith(url, "task_blueprint")) {
+        } else if (_.startsWith(url, "task_blueprint")) {
             return Promise.resolve(AuthServiceMock.task_blueprint["9"]);
-        }   else if (_.startsWith(url, "subtask")) {
+        } else if (_.startsWith(url, "subtask")) {
             return Promise.resolve(AuthServiceMock.subtask["2000011"]);
         }
     });
     taskFilterDefSpy = jest.spyOn(TaskService, 'getTaskFilterDefinition');
-    taskFilterDefSpy.mockImplementation(() => { return Promise.resolve(TaskServiceMock.getTaskFilterDefinition)});
+    taskFilterDefSpy.mockImplementation(() => { return Promise.resolve(TaskServiceMock.getTaskFilterDefinition) });
     subtaskTypesSpy = jest.spyOn(TaskService, 'getSubtaskType');
-    subtaskTypesSpy.mockImplementation(() => { return Promise.resolve(TaskServiceMock.subTaskTypes)});
+    subtaskTypesSpy.mockImplementation(() => { return Promise.resolve(TaskServiceMock.subTaskTypes) });
     taskDetailsSpy = jest.spyOn(TaskService, 'getTaskDetails');
-    taskDetailsSpy.mockImplementation((taskType, taskId, fetchSubtask) => { 
+    taskDetailsSpy.mockImplementation((taskType, taskId, fetchSubtask) => {
         if (taskType === "draft") {
-            return Promise.resolve(_.find(TaskServiceMock.taskDrafts, {"id": parseInt(taskId)}));
-        }   else {
-            return Promise.resolve(_.find(TaskServiceMock.taskBlueprints, {"id": parseInt(taskId)}));
+            return Promise.resolve(_.find(TaskServiceMock.taskDrafts, { "id": parseInt(taskId) }));
+        } else {
+            return Promise.resolve(_.find(TaskServiceMock.taskBlueprints, { "id": parseInt(taskId) }));
         }
     });
     taskTemplateSpy = jest.spyOn(TaskService, 'getTaskTemplate');
     taskTemplateSpy.mockImplementation((templateId) => {
-        return Promise.resolve(_.find(TaskServiceMock.getTaskTemplates(), {"id":templateId}));
+        let template = _.find(TaskServiceMock.getTaskTemplates(), { "id": templateId });
+        return Promise.resolve(template);
     });
     schedulingUnitSpy = jest.spyOn(TaskService, "getSchedulingUnit");
     schedulingUnitSpy.mockImplementation((type, id, loadTasks) => {
         if (type === "draft") {
-            return Promise.resolve(_.find(TaskServiceMock.schedulingUnitDrafts, {"id": id}));
-        }   else {
-            return Promise.resolve(_.find(TaskServiceMock.schedulingUnitBlueprints, {"id": id}));
+            return Promise.resolve(_.find(TaskServiceMock.schedulingUnitDrafts, { "id": id }));
+        } else {
+            return Promise.resolve(_.find(TaskServiceMock.schedulingUnitBlueprints, { "id": id }));
         }
     });
 });
@@ -72,24 +74,24 @@ const clearMockSpy = (() => {
     taskFilterDefSpy.mockRestore();
     subtaskTypesSpy.mockRestore();
     taskDetailsSpy.mockRestore();
-    taskTemplateSpy.mockRestore(); 
+    taskTemplateSpy.mockRestore();
     schedulingUnitSpy.mockRestore();
 });
 
 it("renders Task details page", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "9", type:"draft"}}} history={{}} location="/task/view/draft/9" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "9", type: "draft" } }} history={{}} location="/task/view/draft/9" /></Router>);
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
 });
 
 
- 
+
 it("test Combined Observation Task Draft view of IM LBA Survey - 3 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "9", type:"draft"}}} history={{}} location="/task/view/draft/9" key="CombinedTest"/></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "9", type: "draft" } }} history={{}} location="/task/view/draft/9" key="CombinedTest" /></Router>);
         await new Promise((r) => setTimeout(r, 5000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -102,38 +104,38 @@ it("test Combined Observation Task Draft view of IM LBA Survey - 3 Beams", async
     expect(content.getByText("Pipeline target2")).toBeInTheDocument();
     expect(content.getByText("Pipeline target1")).toBeInTheDocument();
     expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument();
-    await waitFor(()=>expect(content.getByText("Auto-select")).toBeInTheDocument());
-    expect(content.getByText("Auto-select")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument();
-    expect(content.getAllByText("Reference frame").length).toBe(5);
-    expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument();
-    expect(content.getByText("Storage cluster")).toBeInTheDocument();
-    expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument();
-    expect(content.getByText("Channels/subband")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument();
-    expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument();
-    await waitFor(()=> expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument());
-    await waitFor(()=> expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument());
-    await waitFor(()=> expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Auto-select")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Auto-select")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getAllByText("Reference frame").length).toBe(5));
+    await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[duration]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Storage cluster")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Channels/subband")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument());
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
     expect(content.getByText("Antenna set")).toBeInTheDocument();
     expect(content.getByText("Band-pass filter")).toBeInTheDocument();
@@ -156,7 +158,7 @@ it("test Combined Observation Task Draft view of IM LBA Survey - 3 Beams", async
 it("test Combined Observation Task Draft view of IM LBA LoDSS - 5 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "1", type:"draft"}}} history={{}} location="/task/view/draft/1" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "1", type: "draft" } }} history={{}} location="/task/view/draft/1" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -170,7 +172,7 @@ it("test Combined Observation Task Draft view of IM LBA LoDSS - 5 Beams", async
     expect(content.getByText("Pipeline target2")).toBeInTheDocument();
     expect(content.getByText("Pipeline target1")).toBeInTheDocument();
     expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument();
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
@@ -236,7 +238,7 @@ it("test Combined Observation Task Draft view of IM LBA LoDSS - 5 Beams", async
 it("test Calibrator Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "2", type:"draft"}}} history={{}} location="/task/view/draft/2" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "2", type: "draft" } }} history={{}} location="/task/view/draft/2" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -246,7 +248,7 @@ it("test Calibrator Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async (
     expect(content.getByText("preprocessing pipeline")).toBeInTheDocument();
     expect(content.getByText("Combined Observation")).toBeInTheDocument();
     expect(content.getByText("Ingest")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument();
@@ -274,7 +276,7 @@ it("test Calibrator Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async (
 it("test Target Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "7", type:"draft"}}} history={{}} location="/task/view/draft/7" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "7", type: "draft" } }} history={{}} location="/task/view/draft/7" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -299,11 +301,11 @@ it("test Target Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () =>
     expect(content.getByText("Ignore target")).toBeInTheDocument();
     expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument();
     expect(content.getByText("RFI flagging strategy")).toBeInTheDocument();
-   
+
     expect(content.getByText("Flag outer channels")).toBeInTheDocument();
 
     expect(content.getByText("Flag auto correlations")).toBeInTheDocument();
-    
+
     expect(content.getByText("Storage Manager")).toBeInTheDocument();
     expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument();
@@ -314,13 +316,12 @@ it("test Target Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () =>
 it("test IM BF Cal&Tgt Task Draft view", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "68", type:"draft"}}} history={{}} location="/task/view/draft/68" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "68", type: "draft" } }} history={{}} location="/task/view/draft/68" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
     expect(content.getByText("IM BF Cal&Tgt")).toBeInTheDocument();
     expect(content.getByText("Observation")).toBeInTheDocument();
-    // expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument();
     expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument();
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
@@ -330,10 +331,10 @@ it("test IM BF Cal&Tgt Task Draft view", async () => {
     expect(content.getAllByText("Reference frame").length).toBe(3);
     expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Beamformer")).toBeInTheDocument();
     expect(content.getByText("Pipelines")).toBeInTheDocument();
-    
+
     expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getAllByText("SAPs").length).toBe(3);
     expect(content.getAllByText("Output quantisation settings").length).toBe(3);
@@ -347,7 +348,7 @@ it("test IM BF Cal&Tgt Task Draft view", async () => {
     expect(content.getAllByText("Channels/subband").length).toBe(4);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -355,7 +356,7 @@ it("test IM BF Cal&Tgt Task Draft view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -363,32 +364,32 @@ it("test IM BF Cal&Tgt Task Draft view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument();
     expect(content.getAllByText("Station groups").length).toBe(2);
     expect(content.getAllByRole("selected_stations").length).toBe(1);
     expect(content.getAllByRole("selected_stations")[0].children.length).toBe(21);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument();
     expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument();
-    
-    
+
+
     expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument();
     expect(content.getByText("Storage cluster")).toBeInTheDocument();
     expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument();
     expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Antenna set")).toBeInTheDocument();
     expect(content.getByText("Band-pass filter")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument();
@@ -406,20 +407,19 @@ it("test IM BF Cal&Tgt Task Draft view", async () => {
 it("test Simple Beamforming Observation Task Draft view", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "53", type:"draft"}}} history={{}} location="/task/view/draft/53" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "53", type: "draft" } }} history={{}} location="/task/view/draft/53" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
     expect(content.getByText("Simple Beamforming Observation")).toBeInTheDocument();
     expect(content.getByText("Observation")).toBeInTheDocument();
-    // expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument();
     expect(content.getByText("beamforming observation")).toBeInTheDocument();
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Beamformer")).toBeInTheDocument();
     expect(content.getByText("Pipelines")).toBeInTheDocument();
-    
+
     expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getAllByText("SAPs").length).toBe(3);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument();
@@ -440,13 +440,13 @@ it("test Simple Beamforming Observation Task Draft view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument();
     expect(content.getAllByText("Stokes").length).toBe(3);
-    
+
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getAllByText("Channels/subband").length).toBe(3);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -454,7 +454,7 @@ it("test Simple Beamforming Observation Task Draft view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -462,23 +462,23 @@ it("test Simple Beamforming Observation Task Draft view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument();
     expect(content.getAllByText("Station groups").length).toBe(2);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument();
     expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Antenna set")).toBeInTheDocument();
     expect(content.getByText("Band-pass filter")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument();
@@ -487,7 +487,7 @@ it("test Simple Beamforming Observation Task Draft view", async () => {
 it("test Target Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "23", type:"draft"}}} history={{}} location="/task/view/draft/23" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "23", type: "draft" } }} history={{}} location="/task/view/draft/23" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -498,7 +498,7 @@ it("test Target Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy",
     expect(content.getByText('Pipeline target2')).toBeInTheDocument();
     expect(content.getByText('Pipeline target1')).toBeInTheDocument();
     expect(content.getByText("target observation")).toBeInTheDocument();
-    
+
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument();
@@ -545,12 +545,12 @@ it("test Target Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy",
     expect(content.getByText("Inspection Plots")).toBeInTheDocument();
     expect(content.getByText("autocorrelation")).toBeInTheDocument();
     expect(content.getByText("crosscorrelation")).toBeInTheDocument();
-}); 
+});
 
 it("test Calibrator Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "21", type:"draft"}}} history={{}} location="/task/view/draft/21" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "21", type: "draft" } }} history={{}} location="/task/view/draft/21" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -561,7 +561,7 @@ it("test Calibrator Observation Task Draft vew of IM HBA LoTSS - 2 Beams strateg
     expect(content.getByText('Cal1 3Cabc')).toBeInTheDocument();
     expect(content.getByText('Calibrator Pipeline 1')).toBeInTheDocument();
     expect(content.getByText("calibrator observation")).toBeInTheDocument();
-    
+
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
@@ -575,7 +575,7 @@ it("test Calibrator Observation Task Draft vew of IM HBA LoTSS - 2 Beams strateg
 it("test Calibrator Pipeline Task Draft view of IM HBA LoTSS - 2 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "22", type:"draft"}}} history={{}} location="/task/view/draft/22" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "22", type: "draft" } }} history={{}} location="/task/view/draft/22" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -585,7 +585,7 @@ it("test Calibrator Pipeline Task Draft view of IM HBA LoTSS - 2 Beams", async (
     expect(content.getByText("preprocessing pipeline")).toBeInTheDocument();
     expect(content.getByText("Calibrator Observation 1")).toBeInTheDocument();
     expect(content.getByText("Ingest")).toBeInTheDocument();
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument();
@@ -613,7 +613,7 @@ it("test Calibrator Pipeline Task Draft view of IM HBA LoTSS - 2 Beams", async (
 it("test Pulsar Pipeline Task Draft view", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "50", type:"draft"}}} history={{}} location="/task/view/draft/50" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "50", type: "draft" } }} history={{}} location="/task/view/draft/50" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -621,13 +621,12 @@ it("test Pulsar Pipeline Task Draft view", async () => {
     expect(content.getByText("BF Pulsar Timing")).toBeInTheDocument();
     expect(content.getByText("Ingest")).toBeInTheDocument();
     expect(content.getByText("Cleanup")).toBeInTheDocument();
-    // expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument();
     expect(content.getByText("pulsar pipeline")).toBeInTheDocument();
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[dspsr][digifil][dm]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[dspsr][digifil][channels_per_part]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[dspsr][digifil][integration_time_factor]")).toBeInTheDocument();
-    
+
     expect(content.getAllByText("Coherent Dedispersion").length).toBe(2);
     expect(content.getAllByText("Enabled").length).toBe(5);
     expect(content.getByLabelText("specification[dspsr][filterbank][channels_per_part]")).toBeInTheDocument();
@@ -637,7 +636,7 @@ it("test Pulsar Pipeline Task Draft view", async () => {
     expect(content.getByText("Single pulse subintegration")).toBeInTheDocument();
     expect(content.getByLabelText("specification[output][quantisation][scale]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[output][dynamic_spectrum][time_average]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[presto][input][nr_blocks]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[presto][input][decode_sigma]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[presto][input][samples_per_block]")).toBeInTheDocument();
@@ -646,10 +645,10 @@ it("test Pulsar Pipeline Task Draft view", async () => {
     expect(content.getByLabelText("specification[presto][prepdata][dm]")).toBeInTheDocument();
     expect(content.getByText("Enable prepfold")).toBeInTheDocument();
     expect(content.getByText("Fold")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[pulsar][name]")).toBeInTheDocument();
     expect(content.getByText("Strategy")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument();
     expect(content.getByText("Cluster")).toBeInTheDocument();
@@ -661,7 +660,7 @@ it("test Combined Observation Task Blueprint view of IM LBA Survey - 3 Beams", a
     jest.setTimeout(120000)
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "9", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/9" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "9", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/9" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -680,9 +679,6 @@ it("test Combined Observation Task Blueprint view of IM LBA Survey - 3 Beams", a
     expect(content.getAllByRole("tablehead").length).toBe(13);
     expect(content.getAllByRole("row").length).toBe(4);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
-    
-    // expect(content.getByTitle("Don't have permission to cancel ")).not.toBeInTheDocument();
-    // expect(content.getByTitle("Don't have permission to mark as obsolete")).not.toBeInTheDocument();
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
@@ -735,7 +731,7 @@ it("test Combined Observation Task Blueprint view of IM LBA Survey - 3 Beams", a
 it("test Combined Observation Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "1", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/1" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "1", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/1" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -756,8 +752,6 @@ it("test Combined Observation Task Blueprint view of IM LBA LoDSS - 5 Beams", as
     expect(content.getAllByRole("row").length).toBe(4);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    // expect(content.getByTitle("Don't have permission to cancel ")).not.toBeInTheDocument();
-    // expect(content.getByTitle("Don't have permission to mark as obsolete")).not.toBeInTheDocument();
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
@@ -821,7 +815,7 @@ it("test Combined Observation Task Blueprint view of IM LBA LoDSS - 5 Beams", as
 it("test Calibrator Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "2", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/draft/blueprint" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "2", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/draft/blueprint" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -838,7 +832,7 @@ it("test Calibrator Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", asy
     expect(content.getAllByRole("row").length).toBe(2);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument();
@@ -866,7 +860,7 @@ it("test Calibrator Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", asy
 it("test Target Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "7", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/7" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "7", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/7" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -883,7 +877,7 @@ it("test Target Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async (
     expect(content.getAllByRole("row").length).toBe(2);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument();
@@ -911,13 +905,12 @@ it("test Target Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async (
 it("test IM BF Cal&Tgt Task Blueprint view", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "68", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/68" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "68", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/68" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
     expect(content.getByText("IM BF Cal&Tgt")).toBeInTheDocument();
     expect(content.getAllByText("Observation").length).toBe(3);
-    // expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument();
     expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument();
     expect(content.getAllByText("Observation Start Time").length).toBe(1);
     expect(content.getAllByText("Observation End Time").length).toBe(1);
@@ -928,9 +921,7 @@ it("test IM BF Cal&Tgt Task Blueprint view", async () => {
     expect(content.getAllByRole("row").length).toBe(4);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    // expect(content.getByTitle("Don't have permission to cancel ")).not.toBeInTheDocument();
-    // expect(content.getByTitle("Don't have permission to mark as obsolete")).not.toBeInTheDocument();
-    
+
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
@@ -939,10 +930,10 @@ it("test IM BF Cal&Tgt Task Blueprint view", async () => {
     expect(content.getAllByText("Reference frame").length).toBe(3);
     expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Beamformer")).toBeInTheDocument();
     expect(content.getByText("Pipelines")).toBeInTheDocument();
-    
+
     expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getAllByText("SAPs").length).toBe(3);
     expect(content.getAllByText("Output quantisation settings").length).toBe(3);
@@ -956,7 +947,7 @@ it("test IM BF Cal&Tgt Task Blueprint view", async () => {
     expect(content.getAllByText("Channels/subband").length).toBe(4);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -964,7 +955,7 @@ it("test IM BF Cal&Tgt Task Blueprint view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -972,32 +963,32 @@ it("test IM BF Cal&Tgt Task Blueprint view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument();
     expect(content.getAllByText("Station groups").length).toBe(2);
     expect(content.getAllByRole("selected_stations").length).toBe(1);
     expect(content.getAllByRole("selected_stations")[0].children.length).toBe(21);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument();
     expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument();
-    
-    
+
+
     expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument();
     expect(content.getByText("Storage cluster")).toBeInTheDocument();
     expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument();
     expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Antenna set")).toBeInTheDocument();
     expect(content.getByText("Band-pass filter")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument();
@@ -1016,13 +1007,12 @@ it("test IM BF Cal&Tgt Task Blueprint view", async () => {
 it("test Simple Beamforming Observation Task Blueprint view", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "53", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/53" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "53", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/53" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
     expect(content.getByText("Simple Beamforming Observation")).toBeInTheDocument();
     expect(content.getAllByText("Observation").length).toBe(3);
-    // expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument();
     expect(content.getByText("beamforming observation")).toBeInTheDocument();
     expect(content.getAllByText("Observation Start Time").length).toBe(1);
     expect(content.getAllByText("Observation End Time").length).toBe(1);
@@ -1033,15 +1023,13 @@ it("test Simple Beamforming Observation Task Blueprint view", async () => {
     expect(content.getAllByRole("row").length).toBe(2);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    // expect(content.getByTitle("Don't have permission to cancel ")).not.toBeInTheDocument();
-    // expect(content.getByTitle("Don't have permission to mark as obsolete")).not.toBeInTheDocument();
-    
+
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Beamformer")).toBeInTheDocument();
     expect(content.getByText("Pipelines")).toBeInTheDocument();
-    
+
     expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getAllByText("SAPs").length).toBe(3);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument();
@@ -1064,13 +1052,13 @@ it("test Simple Beamforming Observation Task Blueprint view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument();
     expect(content.getAllByText("Stokes").length).toBe(3);
-    
+
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getAllByText("Channels/subband").length).toBe(3);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -1078,7 +1066,7 @@ it("test Simple Beamforming Observation Task Blueprint view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument();
@@ -1086,23 +1074,23 @@ it("test Simple Beamforming Observation Task Blueprint view", async () => {
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument();
     expect(content.getAllByText("Station groups").length).toBe(2);
     expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument();
     expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument();
-    
+
     expect(content.getByText("Antenna set")).toBeInTheDocument();
     expect(content.getByText("Band-pass filter")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument();
@@ -1111,7 +1099,7 @@ it("test Simple Beamforming Observation Task Blueprint view", async () => {
 it("test Target Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strategy", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "24", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/24" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "24", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/24" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1131,9 +1119,6 @@ it("test Target Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strateg
     expect(content.getAllByRole("row").length).toBe(4);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    // expect(content.getByTitle("Don't have permission to cancel ")).not.toBeInTheDocument();
-    // expect(content.getByTitle("Don't have permission to mark as obsolete")).not.toBeInTheDocument();
-    
     expect(content.getByText("Task Specification")).toBeInTheDocument();
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument();
@@ -1185,7 +1170,7 @@ it("test Target Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strateg
 it("test Calibrator Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strategy", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "22", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/22" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "22", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/22" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1205,7 +1190,7 @@ it("test Calibrator Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams str
     expect(content.getAllByRole("row").length).toBe(4);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument();
@@ -1218,7 +1203,7 @@ it("test Calibrator Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams str
 it("test Calibrator Pipeline Task Blueprint view of IM HBA LoTSS - 2 Beams", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "23", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/23" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "23", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/23" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1235,8 +1220,8 @@ it("test Calibrator Pipeline Task Blueprint view of IM HBA LoTSS - 2 Beams", asy
     expect(content.getAllByRole("row").length).toBe(2);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument();
@@ -1263,7 +1248,7 @@ it("test Calibrator Pipeline Task Blueprint view of IM HBA LoTSS - 2 Beams", asy
 it("test Pulsar Pipeline Task Blueprint view", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "50", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/50" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "50", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/50" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1271,7 +1256,6 @@ it("test Pulsar Pipeline Task Blueprint view", async () => {
     expect(content.getByText("BF Pulsar Timing")).toBeInTheDocument();
     expect(content.getAllByText("Ingest").length).toBe(2);
     expect(content.getAllByText("Cleanup").length).toBe(2);
-    // expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument();
     expect(content.getByText("pulsar pipeline")).toBeInTheDocument();
     expect(content.getAllByText("Process Start Time").length).toBe(2);
     expect(content.getAllByText("Process End Time").length).toBe(2);
@@ -1280,14 +1264,11 @@ it("test Pulsar Pipeline Task Blueprint view", async () => {
     expect(content.getAllByRole("row").length).toBe(2);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
     expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
-    // expect(content.getByTitle("Don't have permission to cancel ")).not.toBeInTheDocument();
-    // expect(content.getByTitle("Don't have permission to mark as obsolete")).not.toBeInTheDocument();
-    
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByLabelText("specification[dspsr][digifil][dm]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[dspsr][digifil][channels_per_part]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[dspsr][digifil][integration_time_factor]")).toBeInTheDocument();
-    
+
     expect(content.getAllByText("Coherent Dedispersion").length).toBe(2);
     expect(content.getAllByText("Enabled").length).toBe(5);
     expect(content.getByLabelText("specification[dspsr][filterbank][channels_per_part]")).toBeInTheDocument();
@@ -1297,7 +1278,7 @@ it("test Pulsar Pipeline Task Blueprint view", async () => {
     expect(content.getByText("Single pulse subintegration")).toBeInTheDocument();
     expect(content.getByLabelText("specification[output][quantisation][scale]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[output][dynamic_spectrum][time_average]")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[presto][input][nr_blocks]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[presto][input][decode_sigma]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[presto][input][samples_per_block]")).toBeInTheDocument();
@@ -1306,10 +1287,10 @@ it("test Pulsar Pipeline Task Blueprint view", async () => {
     expect(content.getByLabelText("specification[presto][prepdata][dm]")).toBeInTheDocument();
     expect(content.getByText("Enable prepfold")).toBeInTheDocument();
     expect(content.getByText("Fold")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[pulsar][name]")).toBeInTheDocument();
     expect(content.getByText("Strategy")).toBeInTheDocument();
-    
+
     expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument();
     expect(content.getByText("Cluster")).toBeInTheDocument();
@@ -1320,7 +1301,7 @@ it("test Pulsar Pipeline Task Blueprint view", async () => {
 it("test IM+BF Observation Task Draft vew of Solar Campaign strategy", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "69", type:"draft"}}} history={{}} location="/task/view/draft/69" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "69", type: "draft" } }} history={{}} location="/task/view/draft/69" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1328,7 +1309,7 @@ it("test IM+BF Observation Task Draft vew of Solar Campaign strategy", async ()
     expect(content.getAllByText("IM+BF").length).toBe(2);
     expect(content.getByText('IM+BF Observation')).toBeInTheDocument();
     expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument();
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument(), { timeout:2000});
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument(), { timeout: 2000 });
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument();
@@ -1399,14 +1380,14 @@ it("test IM+BF Observation Task Draft vew of Solar Campaign strategy", async ()
     expect(content.getByText("Inspection Plots")).toBeInTheDocument();
     expect(content.getByText("autocorrelation")).toBeInTheDocument();
     expect(content.getByText("crosscorrelation")).toBeInTheDocument();
-}); 
+});
 
 it("test IM+BF Observation Task Blueprint vew of IM Solar Campaign strategy", async () => {
-    
+
     jest.setTimeout(120000);
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "69", type:"blueprint"}}} history={{}} isUnitTest={true} location="/task/view/blueprint/69" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "69", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/69" /></Router>);
         await new Promise((r) => setTimeout(r, 500));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1421,8 +1402,8 @@ it("test IM+BF Observation Task Blueprint vew of IM Solar Campaign strategy", as
     expect(content.getAllByRole("tablehead").length).toBe(13);
     expect(content.getAllByRole("row").length).toBe(2);
     expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument();
-    expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);    
-    await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument());
+    expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1);
+    await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument());
     expect(content.getByLabelText("specification[duration]")).toBeInTheDocument();
     expect(content.getByText("Auto-select")).toBeInTheDocument();
     expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument();
@@ -1492,13 +1473,13 @@ it("test IM+BF Observation Task Blueprint vew of IM Solar Campaign strategy", as
     expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument();
     expect(content.getByText("Inspection Plots")).toBeInTheDocument();
     expect(content.getByText("autocorrelation")).toBeInTheDocument();
-    expect(content.getByText("crosscorrelation")).toBeInTheDocument();    
+    expect(content.getByText("crosscorrelation")).toBeInTheDocument();
 });
 
 it("Checking Correctness of Custom fields in JEditor using Simple Observation draft", async () => {
     let content;
     await act(async () => {
-        content = render(<Router><TaskView match={{params:{id: "70", type:"draft"}}} history={{}} isUnitTest={true} location="/task/view/draft/70" /></Router>);
+        content = render(<Router><TaskView match={{ params: { id: "70", type: "draft" } }} history={{}} isUnitTest={true} location="/task/view/draft/70" /></Router>);
         await new Promise((r) => setTimeout(r, 2000));
     });
     expect(content.getByText("Task - Details")).toBeInTheDocument();
@@ -1506,7 +1487,7 @@ it("Checking Correctness of Custom fields in JEditor using Simple Observation dr
     expect(content.getAllByText('Observation').length).toBe(1);
     expect(content.getByText('Observation')).toBeInTheDocument();
 
- 
+
     expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument();
     const freqRes = content.getByLabelText("specification[correlator][frequency_resolution]");
     expect(freqRes.value).toBe('3.05');
@@ -1518,11 +1499,11 @@ it("Checking Correctness of Custom fields in JEditor using Simple Observation dr
     expect(freqSAP.value).toBe('99.9-147.6');
 
 
-    
-    await waitFor(()=>expect(content.getByRole("textbox",{name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]"})).toBeInTheDocument());
-    await waitFor(()=>expect(content.getByRole("textbox",{name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]"})).toBeInTheDocument());
-    const angle1El =content.getByRole("textbox",{name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]"});
-    const angle1E2 =content.getByRole("textbox",{name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]"});
+
+    await waitFor(() => expect(content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]" })).toBeInTheDocument());
+    await waitFor(() => expect(content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]" })).toBeInTheDocument());
+    const angle1El = content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]" });
+    const angle1E2 = content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]" });
 
     expect(angle1El.value).toBe('03h06m00s');
     expect(angle1E2.value).toBe('89d59m00s');
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js
index a525af14cc6ffb502ba9c54674980c8777e0d0e3..13e5b5559b42a1ec677cb95fcfec74cb8ef970e0 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js
@@ -69,8 +69,6 @@ export class CalendarTimeline extends Component {
             weekDay = moment.utc(moment(weekDay).format(UTC_DATE_FORMAT));
         }
         const defaultZoomLevel = _.find(ZOOM_LEVELS, { name: DEFAULT_ZOOM_LEVEL });
-        //   const defaultStartTime = props.startTime?(weekDay?weekDay.clone():props.startTime.clone()):null || moment().utc().add(-1 * defaultZoomLevel.value/2, 'seconds');
-        //   const defaultEndTime = props.endTime?(weekDay?weekDay.clone().hours(23).minutes(59).seconds(59):props.endTime.clone()):null || moment().utc().add(1 * defaultZoomLevel.value/2, 'seconds');
         const defaultStartTime = props.startTime ? props.startTime.clone() : null || moment().utc().add(-1 * defaultZoomLevel.value / 2, 'seconds');
         const defaultEndTime = props.endTime ? props.endTime.clone() : null || moment().utc().add(1 * defaultZoomLevel.value / 2, 'seconds');
         this.state = {
@@ -1593,7 +1591,6 @@ export class CalendarTimeline extends Component {
                 this.changeWeek(null, true);
             }
 
-        // console.log("rendering: ", this.state.showTimelineItems)
         return (
             <React.Fragment>
                 <div className="timeline-tools">
@@ -1671,16 +1668,7 @@ export class CalendarTimeline extends Component {
                                 <DateHeader unit={this.state.lstDateHeaderUnit}
                                     intervalRenderer={({ getIntervalProps, intervalContext, data }) => { return this.renderLSTDateHeader({ getIntervalProps, intervalContext, data }) }}>
                                 </DateHeader>
-                                // This method will render once but will not update the values after fetching from server
-                                // <DateHeader unit={this.state.lstDateHeaderUnit} intervalRenderer={this.renderLSTDateHeader}></DateHeader>
                             }
-                            {/* Suntime Header in normal view with sunrise, sunset and night time  */}
-                            {/* {this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL && this.state.sunTimeMap && 
-                            <CustomHeader height={30} unit="minute" 
-                                children={({ headerContext: { intervals }, getRootProps, getIntervalProps, showPeriod, data})=> {
-                                    return this.renderNormalSuntimeHeader({ headerContext: { intervals }, getRootProps, getIntervalProps, showPeriod, data})}}>
-                            </CustomHeader>
-                            } */}
                         </TimelineHeaders>
 
                         <TimelineMarkers>
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js
index 3fc61eb1dbcf0c35af7dca91c5d68b7069094c61..4419d0f6c8ccd33d930fe555e1ab1d047acbe2e8 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js
@@ -1,5 +1,5 @@
 import Filters from "./components/toolbar/Filters";
-import {useEffect, useRef, useState} from "react";
+import { useEffect, useRef, useState } from "react";
 //TODO: this import does something magical for the timeline; find out what
 import CalendarTimeline from './CalendarTimeline';
 import Timeline, {
@@ -11,33 +11,33 @@ import Timeline, {
     TimelineMarkers
 } from "react-calendar-timeline";
 import moment from "moment";
-import {getIntervalRendererLST} from "./helpers/timeline.headers.helper";
+import { getIntervalRendererLST } from "./helpers/timeline.headers.helper";
 import UIConstants from "../../utils/ui.constants";
-import {groupRenderer, itemRenderer} from "./helpers/timeline.renderer.helper";
+import { groupRenderer, itemRenderer } from "./helpers/timeline.renderer.helper";
 import containerResizeDetector from "react-calendar-timeline/lib/resize-detector/container";
 import TimelineItemPopover from "./components/TimelineItemPopover";
 import {
-    calculateSizeAndSetPanelClassName,
     createGroups,
     getCursorDateTimes,
     getHeaderActions,
     getPageHeaderOptionsMenuItems,
     getSchedulerActions,
+    getNavigationActions,
+    getGroupedByActions,
     updateSchedulerStatuses,
 } from "./helpers/week.view.helper";
-import {getStore} from "../../services/store.helper";
+import { getStore } from "../../services/store.helper";
 import DateTimeNavigator from "./components/toolbar/DateTimeNavigator";
 import ZoomAndMove from "./components/toolbar/ZoomAndMove";
-import {ProgressBar} from "primereact/progressbar";
+import { ProgressBar } from "primereact/progressbar";
 import Legendbar from "./components/Legendbar";
-import PanelButtons from "./components/PanelButtons";
 import SchedulingUnitSummary from "../Scheduling/summary";
-import {useLocation} from "react-router-dom";
-import {editConstraintSettings, updateSUConstraintTemplate} from "../Scheduling/summary.helper";
+import { useLocation } from "react-router-dom";
+import { editConstraintSettings, updateSUConstraintTemplate } from "../Scheduling/summary.helper";
 import PageHeader from "../../layout/components/PageHeader";
-import {CustomDialog} from "../../layout/components/CustomDialog";
+import { CustomDialog } from "../../layout/components/CustomDialog";
 import DynamicScheduler from "../../components/DynamicScheduler";
-import {TieredMenu} from "primereact/tieredmenu";
+import { TieredMenu } from "primereact/tieredmenu";
 
 import { ProgressSpinner } from 'primereact/progressspinner';
 import ReservationSummary from "../Reservation/reservation.summary";
@@ -57,17 +57,17 @@ import ReservationService from "../../services/reservation.service";
 function getTimelineHeaders(headerSettings) {
     return <TimelineHeaders className="sticky">
         <SidebarHeader>
-            {({getRootProps}) => { //getRootProps is mandatory for the library
+            {({ getRootProps }) => { //getRootProps is mandatory for the library
                 return <div {...getRootProps()} className="sidebar-header">
                     <div className="sidebar-header-row">UTC</div>
                     <div className="sidebar-header-row" title="Approximate LST">~ LST</div>
                 </div>
             }}
         </SidebarHeader>
-        <DateHeader unit={headerSettings.unit} labelFormat="HH:mm"/>
-        <DateHeader unit={headerSettings.unit} intervalRenderer={({getIntervalProps, intervalContext}) => {
-            return getIntervalRendererLST({getIntervalProps, intervalContext}, headerSettings.lstShiftInSeconds)
-        }}/>
+        <DateHeader unit={headerSettings.unit} labelFormat="HH:mm" />
+        <DateHeader unit={headerSettings.unit} intervalRenderer={({ getIntervalProps, intervalContext }) => {
+            return getIntervalRendererLST({ getIntervalProps, intervalContext }, headerSettings.lstShiftInSeconds)
+        }} />
     </TimelineHeaders>;
 }
 
@@ -75,17 +75,17 @@ function getTimelineMarkers(setCursorDate) {
     const now = moment(moment().utc(false).format(UIConstants.UTC_DATE_TIME_FORMAT))
     return <TimelineMarkers>
         <CustomMarker date={now.valueOf()}>
-            {({styles}) => {
+            {({ styles }) => {
                 const customStyles = {
                     ...styles,
                     backgroundColor: 'var(--green)',
                     zIndex: 998
                 }
-                return <div style={customStyles}/>
+                return <div style={customStyles} />
             }}
         </CustomMarker>
         <CursorMarker>
-            {({styles, date}) => {
+            {({ styles, date }) => {
                 setCursorDate(date) //TODO: don't do this but find a better solution
                 const customStyles = {
                     ...styles,
@@ -93,7 +93,7 @@ function getTimelineMarkers(setCursorDate) {
                     zIndex: 998,
                     height: "100%"
                 }
-                return <div style={customStyles}/>
+                return <div style={customStyles} />
             }}
         </CursorMarker>
     </TimelineMarkers>;
@@ -119,15 +119,20 @@ export default function WeekView() {
     })
     const [showSchedulerSettingsDialog, setShowSchedulerSettingsDialog] = useState(false)
 
+    const [grouping, setGrouping] = useState("Date")
+
     //data info
     const [isLoading, setIsLoading] = useState(false)
     const [refetchToggle, setRefetchToggle] = useState(false)
+    const [isExpanded, setIsExpanded] = useState(true)
     const [data, setData] = useState({
         schedulingUnits: [],
         reservations: [],
     })
 
     //timeline component
+    
+    const [weekNumbers, setWeekNumbers] = useState("");
     const [startTime, setStartTime] = useState(moment().startOf('day'))
     const [endTime, setEndTime] = useState(moment().endOf('day').add(UIConstants.WEEKVIEW_SHOW_NUMBER_OF_DAYS, 'days'))
     const [groups, setGroups] = useState(createGroups(moment().startOf('day')))
@@ -148,7 +153,7 @@ export default function WeekView() {
 
     //timeline item pop-over component
     const [mouseOverItem, setMouseOverItem] = useState()
-    const [popPosition, setPopPosition] = useState({display: 'none'})
+    const [popPosition, setPopPosition] = useState({ display: 'none' })
     const [summaryItem, setSummaryItem] = useState()
 
     //marker that also displays time information on thge group
@@ -158,15 +163,10 @@ export default function WeekView() {
         lst: undefined,
     })
 
-    //left-right panel elements TODO: combine states (into left + right sections)
-    const [showLegendbar, setShowLegendbar] = useState(false)
+        const [showLegendbar, setShowLegendbar] = useState(false)
     const [showSummary, setShowSummary] = useState(false)
-    const [panelClassNames, setPanelClassNames] = useState({
-        leftPanelClassName: "timeline-panel",
-        middlePanelClassName: "timeline-panel",
-        rightPanelClassName: "timeline-panel"
-    })
-    const [leftPanelSize, setLeftPanelSize] = useState(30) //30% of the screen
+    
+
 
     //details summary
     const [summarySettings, setSummarySettings] = useState({
@@ -183,7 +183,7 @@ export default function WeekView() {
     useEffect(() => { //TODO: extract
         const currentGroupIndex = groups.findIndex(group => group.title === mouseOverItem?.group)
         if (currentGroupIndex >= 0) {
-            const currentGroupDate = moment(groups[currentGroupIndex].title, UIConstants.CALENDAR_GROUP_FORMAT).format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)
+            const currentGroupDate =groups[currentGroupIndex].date;
             getCursorDateTimes(cursorTimeUTC, currentGroupIndex, currentGroupDate, headerSettings.lstShiftInSeconds, setCursorInformation);
             let newGroups = groups.map(group => Object.assign({}, group));
             newGroups.forEach(group => delete group.cursorInfo)
@@ -194,6 +194,7 @@ export default function WeekView() {
 
 
     useEffect(() => { //initializer
+        
         setIsLoading(true)
         setGroups(createGroups(startTime))
         if (!Object.values(visibleTime).some(value => value === undefined)) { //TODO: extract
@@ -207,7 +208,7 @@ export default function WeekView() {
                 end: startDateWithVisibleEndTime
             })
         }
-
+        setWeekString( startTime, endTime);
         const loadingStates = []
         loadingStates.push(fetchTimelineData(startTime, endTime, setData).catch(e => console.error("Couldn't get scheduling units and/or reservations", e)))
         loadingStates.push(fetchSunTimings(startTime, setItems).catch(e => console.error("Couldn't retrieve sun timings", e)))
@@ -221,10 +222,7 @@ export default function WeekView() {
         Promise.all(loadingStates).then(() => setIsLoading(false))
     }, [startTime, endTime, refetchToggle])
 
-    useEffect(() => { //resizing
-        calculateSizeAndSetPanelClassName(showLegendbar, showSummary, leftPanelSize, setPanelClassNames)
-    }, [showLegendbar, showSummary, leftPanelSize])
-
+ 
     useEffect(() => { //summary information
         if (summaryItem === undefined) {
             setShowSummary(false)
@@ -248,21 +246,35 @@ export default function WeekView() {
         }
     }, [summaryItem]);
 
+    function setWeekString( newStart, newEnd) {
+        let  weekString = newStart.week() === newEnd.week() ? newStart.week() : newStart.week() + "," + newEnd.week();
+        weekString = "Week " + weekString;
+        setWeekNumbers(weekString);
+    }
+
+    function navigateToWeek(addingWeeks) {
+            const newStart =  moment(startTime).endOf('day').add(addingWeeks, 'weeks')
+            setStartTime(newStart);
+            const newEnd =  moment(endTime).endOf('day').add(addingWeeks, 'weeks')
+            setEndTime(newEnd);
+            setWeekString( newStart, newEnd);
+         
+    }
     // websocket handling
 
     /**
      * Function to call wnen websocket is connected
      */
     function onConnect() {
-        try{
+        try {
             console.log("WS Opened");
             const userDets = localStorage.getItem("user");
             if (userDets) {
-                sendMessage(JSON.stringify({"token": JSON.parse(userDets).websocket_token}));
+                sendMessage(JSON.stringify({ "token": JSON.parse(userDets).websocket_token }));
                 console.log("Auth token submitted");
             }
-        }catch (err) {
-            console.log('err',err)
+        } catch (err) {
+            console.log('err', err)
         }
     }
 
@@ -284,7 +296,7 @@ export default function WeekView() {
                 switch (jsonData.action) {
                     case 'delete': {
                         const schedulingUnits = data.schedulingUnits
-                        _.remove(schedulingUnits, function (su) { return su.id === jsonData.object_details.id});
+                        _.remove(schedulingUnits, function (su) { return su.id === jsonData.object_details.id });
                         setData(prevData => ({
                             ...prevData,
                             schedulingUnits: schedulingUnits
@@ -298,7 +310,7 @@ export default function WeekView() {
                         setData(prevData => ({
                             ...prevData,
                             schedulingUnits: prevData.schedulingUnits.map(
-                                unit => unit.id === jsonData.object_details.id? {...unit, ...jsonData.object_details}: unit
+                                unit => unit.id === jsonData.object_details.id ? { ...unit, ...jsonData.object_details } : unit
                             )
                         }));
                         if (summaryItem?.id === jsonData.object_details.id) {
@@ -313,19 +325,19 @@ export default function WeekView() {
                             // }));
                             //
                             // Instead, trigger a full refresh of the details panel:
-                            setSummaryItem({id: jsonData.object_details.id, type: "SCHEDULE"});
+                            setSummaryItem({ id: jsonData.object_details.id, type: "SCHEDULE" });
                         }
                         break;
                     }
                     case 'create': {
                         // The websocket message only contains a subset of the details we need, so fetch the full set
                         ScheduleService.getTimelineSlimBlueprints(undefined, undefined, jsonData.object_details.id)   // todo: check time
-                        .then((response) => {
-                            setData(prevData => ({
-                                ...prevData,
-                                schedulingUnits: prevData.schedulingUnits.concat(response)
-                            }));
-                        });
+                            .then((response) => {
+                                setData(prevData => ({
+                                    ...prevData,
+                                    schedulingUnits: prevData.schedulingUnits.concat(response)
+                                }));
+                            });
                         break;
                     }
                     default: { break; }
@@ -336,7 +348,7 @@ export default function WeekView() {
                 switch (jsonData.action) {
                     case 'delete': {
                         const reservations = data.reservations
-                        _.remove(reservations, function (res) { return res.id === jsonData.object_details.id});
+                        _.remove(reservations, function (res) { return res.id === jsonData.object_details.id });
                         setData(prevData => ({
                             ...prevData,
                             reservations: reservations
@@ -350,12 +362,12 @@ export default function WeekView() {
                         setData(prevData => ({
                             ...prevData,
                             reservations: prevData.reservations.map(
-                                res => res.id === jsonData.object_details.id? {...res, ...jsonData.object_details}: res
+                                res => res.id === jsonData.object_details.id ? { ...res, ...jsonData.object_details } : res
                             ),
                         }));
                         if (summaryItem?.id === jsonData.object_details.id) {
                             // Trigger a full refresh of the details panel
-                            setSummaryItem({id: jsonData.object_details.id, type: "RESERVATION"});
+                            setSummaryItem({ id: jsonData.object_details.id, type: "RESERVATION" });
                         }
                         break;
                     }
@@ -364,12 +376,12 @@ export default function WeekView() {
                         if (shouldFetchReservations) {
                             // The websocket message only contains a subset of the details we need, so fetch the full set
                             ReservationService.getTimelineReservations(undefined, undefined, jsonData.object_details.id)  // todo: check time
-                            .then((response) => {
-                                setData(prevData => ({
-                                    ...prevData,
-                                    reservations: prevData.reservations.concat(response)
-                                }));
-                            });
+                                .then((response) => {
+                                    setData(prevData => ({
+                                        ...prevData,
+                                        reservations: prevData.reservations.concat(response)
+                                    }));
+                                });
                         }
                         break;
                     }
@@ -381,66 +393,77 @@ export default function WeekView() {
         }
     }
 
+
+    /**
+     * Toggles Legend, and when not expanded , expand
+     * @param {boolean} newState - State of Legend
+     */
+
+    function toggleLegend(newState)    {
+        if (newState&&!isExpanded)    {
+            setIsExpanded(true);
+        }
+        setShowLegendbar(newState);
+    }
+
+
     // websocket hook that opens and allows interaction via the wss connection
     const {
-      sendMessage,
-      sendJsonMessage,
-      lastMessage,
-      lastJsonMessage,
-      readyState,
-      getWebSocket,
+        sendMessage,
+        sendJsonMessage,
+        lastMessage,
+        lastJsonMessage,
+        readyState,
+        getWebSocket,
     } = useWebSocket(process.env.REACT_APP_WEBSOCKET_URL, {
-      onOpen: () => onConnect(),
-      onClose: () => onDisconnect(),
-      onMessage: (event) => handleData(event),
-      onError: (event) => { console.error(event); },
-      shouldReconnect: (closeEvent) => true,
+        onOpen: () => onConnect(),
+        onClose: () => onDisconnect(),
+        onMessage: (event) => handleData(event),
+        onError: (event) => { console.error(event); },
+        shouldReconnect: (closeEvent) => true,
     });
 
     return <div>
-        <div className={(isLoading ? "" : "hide-element")}>
+        <div className={(isLoading ? "fix-element" : "hide-element")}>
             <ProgressBar className={isLoading ? "" : "hide-element"} mode="indeterminate"
-                         style={{height: '0.25rem'}}/>
+                style={{ height: '0.25rem' }} />
         </div>
-        {!permissions ? <ProgressSpinner className="m-4" style={{color: "var(--primary-300)"}}/> :
+        {!permissions ? <ProgressSpinner className="m-4" style={{ color: "var(--primary-300)" }} /> :
             <TieredMenu className="app-header-menu" popup ref={actionsMenuRef}
-                        model={getPageHeaderOptionsMenuItems(permissions)}/>}
-        <PageHeader location={location} title={'Scheduling Units - Week View'}
-                    actions={getSchedulerActions(schedulerSettings, setShowSchedulerSettingsDialog)
-                        .concat(getHeaderActions(isLoading, setRefetchToggle, actionsMenuRef))}/>
+                model={getPageHeaderOptionsMenuItems(permissions)} />}
+        <PageHeader location={location} title={'Scheduling Units - ' +  weekNumbers  + ' View'  } 
+            actions={getNavigationActions(navigateToWeek).concat(getSchedulerActions(schedulerSettings, setShowSchedulerSettingsDialog))
+                .concat(getHeaderActions(isLoading, setRefetchToggle, actionsMenuRef, isExpanded, setIsExpanded, showLegendbar, toggleLegend))} />
         <div className="p-grid">
-            <div className={panelClassNames.leftPanelClassName}>
-                <Legendbar className={showLegendbar ? undefined : "hide-element"}/>
-            </div>
+         
+
+            <div className="timeline-panel">
+           
+ <div className="timeline-tools" style={{display: isExpanded? 'flex': 'none'}}>
+ 
+ <Filters timelineStore={timelineStore}
+            visibleStartTime={visibleTime.start}
+            setItems={setItems}
+            data={data}
+            setRefetchToggle={setRefetchToggle}
+           />
+        <DateTimeNavigator timelineStore={timelineStore}
+            startTime={startTime}
+            setStartTime={setStartTime}
+            setEndTime={setEndTime}
+        />
+        <ZoomAndMove timelineStore={timelineStore}
+            startTime={startTime}
+            setVisibleTime={setVisibleTime}
+            visibleTime={visibleTime}
+            headerSettings={headerSettings}
+            setHeaderSettings={setHeaderSettings}
+        />
+        <Legendbar className={showLegendbar ? undefined : "hide-element"} />
+        
+        </div>
+            
 
-            <div className={panelClassNames.middlePanelClassName}>
-                <PanelButtons showLegendbar={showLegendbar}
-                              setShowLegendbar={setShowLegendbar}
-                              leftPanelSize={leftPanelSize}
-                              setLeftPanelSize={setLeftPanelSize}/>
-
-                <div className="timeline-tools">
-                    <Filters timelineStore={timelineStore}
-                             visibleStartTime={visibleTime.start}
-                             setItems={setItems}
-                             data={data}
-                             setRefetchToggle={setRefetchToggle}
-
-                    />
-                    <DateTimeNavigator timelineStore={timelineStore}
-                                       startTime={startTime}
-                                       endTime={endTime}
-                                       setStartTime={setStartTime}
-                                       setEndTime={setEndTime}
-                    />
-                    <ZoomAndMove timelineStore={timelineStore}
-                                 startTime={startTime}
-                                 setVisibleTime={setVisibleTime}
-                                 visibleTime={visibleTime}
-                                 headerSettings={headerSettings}
-                                 setHeaderSettings={setHeaderSettings}
-                    />
-                </div>
                 {Object.values(visibleTime).some(value => value === undefined) ? <ProgressSpinner /> :
                     <Timeline
                         groups={groups}
@@ -460,14 +483,14 @@ export default function WeekView() {
                         canResize={false}
                         stackItems={true}
                         //render settings
-                        groupRenderer={({group}) => groupRenderer({group})}
+                        groupRenderer={({ group }) => groupRenderer({ group })}
                         itemRenderer={({
-                                           item,
-                                           timelineContext,
-                                           itemContext,
-                                           getItemProps,
-                                           getResizeProps
-                                       }) => itemRenderer({
+                            item,
+                            timelineContext,
+                            itemContext,
+                            getItemProps,
+                            getResizeProps
+                        }) => itemRenderer({
                             item,
                             timelineContext,
                             itemContext,
@@ -479,54 +502,57 @@ export default function WeekView() {
                         {getTimelineMarkers(setCursorTimeUTC)}
                     </Timeline>}
             </div>
-            <div className={panelClassNames.rightPanelClassName + " summary"}>
+            {showSummary && (
+            <div className="timeline-panel summary">
                 {showSummary &&
-                    (summarySettings.isLoading ? <ProgressSpinner className="m-4" style={{color: "var(--primary-300)"}}/>
-                            : (summaryItem.type === "RESERVATION" ?
-                                (summarySettings.reservationItem === undefined ?
-                                    <ProgressSpinner className="m-4" style={{color: "var(--primary-300)"}}/> :
-                                    <ReservationSummary reservation={summarySettings.reservationItem}
-                                                        viewInNewWindow
-                                                        location={location}
-                                                        closeCallback={() => setShowSummary(false)}>
-                                    </ReservationSummary>) :
-                                (summarySettings.schedulingUnitItem === undefined ?
-                                    <ProgressSpinner className="m-4" style={{color: "var(--primary-300)"}}/> :
-                                    <SchedulingUnitSummary
-                                        schedulingUnit={summarySettings.schedulingUnitItem}
-                                        viewInNewWindow
-                                        constraintsTemplate={summarySettings.summaryConstraintTemplate}
-                                        onUpdate={(suId, updatedConstraintTemplate) =>
-                                            updateSUConstraintTemplate(suId, updatedConstraintTemplate, setOnClose, setOnSaveDisabled, setShowSummary)}
-                                        newPopupvalue={() => {
-                                        }}
-                                        onClose={onClose}
-                                        onSavedisable={onSaveDisabled}
-                                        onCloseFn={(val) => editConstraintSettings(val, setOnClose, setOnSaveDisabled, setCancelStatus)}
-                                        closeCallback={() => setShowSummary(false)}
-                                        cancelCheckstatus={(val) => setCancelStatus(val)}
-                                        cancelStatus={cancelStatus}
-                                        location={location}>
-                                    </SchedulingUnitSummary>))
+                    (summarySettings.isLoading ? <ProgressSpinner className="m-4" style={{ color: "var(--primary-300)" }} />
+                        : (summaryItem.type === "RESERVATION" ?
+                            (summarySettings.reservationItem === undefined ?
+                                <ProgressSpinner className="m-4" style={{ color: "var(--primary-300)" }} /> :
+                                <ReservationSummary reservation={summarySettings.reservationItem}
+                                    viewInNewWindow
+                                    location={location}
+                                    closeCallback={() => setShowSummary(false)}>
+                                </ReservationSummary>) :
+                            (summarySettings.schedulingUnitItem === undefined ?
+                                <ProgressSpinner className="m-4" style={{ color: "var(--primary-300)" }} /> :
+                                <SchedulingUnitSummary
+                                    schedulingUnit={summarySettings.schedulingUnitItem}
+                                    viewInNewWindow
+                                    constraintsTemplate={summarySettings.summaryConstraintTemplate}
+                                    onUpdate={(suId, updatedConstraintTemplate) =>
+                                        updateSUConstraintTemplate(suId, updatedConstraintTemplate, setOnClose, setOnSaveDisabled, setShowSummary)}
+                                    newPopupvalue={() => {
+                                    }}
+                                    onClose={onClose}
+                                    onSavedisable={onSaveDisabled}
+                                    onCloseFn={(val) => editConstraintSettings(val, setOnClose, setOnSaveDisabled, setCancelStatus)}
+                                    closeCallback={() => setShowSummary(false)}
+                                    cancelCheckstatus={(val) => setCancelStatus(val)}
+                                    cancelStatus={cancelStatus}
+                                    location={location}>
+                                </SchedulingUnitSummary>))
 
                     )}
-            </div>
+            </div> )}
         </div>
         {mouseOverItem && mouseOverItem.type !== "SUNTIME" ?
             <div className="p-overlaypanel p-component timeline-popover"
-                 style={{...popPosition}}>
-                <TimelineItemPopover mouseOverItem={mouseOverItem}/>
+                style={{ ...popPosition }}>
+                <TimelineItemPopover mouseOverItem={mouseOverItem} />
             </div> : null}
         <div className="p-grid" data-testid="confirm_dialog">
             <CustomDialog type="success"
-                          visible={showSchedulerSettingsDialog}
-                          showIcon={false}
-                          header="Scheduling Settings"
-                          message={<DynamicScheduler callBack={async (val, status) =>
-                              await updateSchedulerStatuses(val, status, setSchedulerSettings)}
-                          />}
-                          onClose={() => setShowSchedulerSettingsDialog(false)}
+                visible={showSchedulerSettingsDialog}
+                showIcon={false}
+                header="Scheduling Settings"
+                message={<DynamicScheduler callBack={async (val, status) =>
+                    await updateSchedulerStatuses(val, status, setSchedulerSettings)}
+                />}
+                onClose={() => setShowSchedulerSettingsDialog(false)}
             />
         </div>
     </div>
-}
\ No newline at end of file
+}
+
+
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/Legendbar.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/Legendbar.js
index 858df58df428d85e8805b0d2032a64ccca15d674..02459eae6f780b76a0e6faa282745ff5d0ed5d03 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/Legendbar.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/Legendbar.js
@@ -1,8 +1,8 @@
 import UIConstants from "../../../utils/ui.constants";
-
+import { Panel } from 'primereact/panel';
 function getLegendItem(section, index) {
     return <div className="section" key={"section-" + index}>
-        <label className="col-2"
+        <label className="sectiontitle col-2"
                title={section.subtitle ? section.subtitle : section.title}>{section.title}:</label>
         {section.elements.map((element, index) => <div className={`su-legend ${element.classKey}`}
                                                        key={element.classKey + "-" + index}
@@ -13,8 +13,7 @@ function getLegendItem(section, index) {
 }
 
 export default function Legendbar(props) {
-    return <div className={props.className}>
-        <div className="legend-header">Legend</div>
+    return <Panel header="Legend"  className={props.className}>
         <div className="p-grid legendbar">
             <div className="left">
                 {UIConstants.LEGEND_INFO.slice(0, 4).map((section, index) => getLegendItem(section, index))}
@@ -23,5 +22,5 @@ export default function Legendbar(props) {
                 {UIConstants.LEGEND_INFO.slice(4).map((section, index) => getLegendItem(section, index))}
             </div>
         </div>
-    </div>
+    </Panel>
 }
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js
index 1e73d8049f3dadbb5b692d3a6c6ea74e1376b861..237378696f0dda2396e34d90f7ac95fb6e8d8811 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js
@@ -1,12 +1,13 @@
 import Flatpickr from "react-flatpickr";
 import {Button} from "primereact/button";
 import {useEffect, useState} from "react";
-import DateTimeInfo from "./DateTimeInfo";
+import JumpToSUId  from "./JumpToSuid";
 import moment from "moment";
 import UIConstants from "../../../../utils/ui.constants";
-import {InputNumber} from "primereact/inputnumber";
+
 import axios from "axios";
 import {getStore} from "../../../../services/store.helper";
+import { Panel } from 'primereact/panel';
 
 function DateSelector(props) {  //TODO: extract to separate class
     const {
@@ -62,72 +63,9 @@ function DateSelector(props) {  //TODO: extract to separate class
     </div>
 }
 
-function WeekChanger(props) {  //TODO: extract to separate class
-    const {
-        isRange,
-        startTime,
-        endTime,
-        setStartAndEndTimeCallback
-    } = props
 
-    if (isRange || !startTime || !endTime) {
-        return null
-    }
-    const weekNumbers = startTime.week() === endTime.week() ? startTime.week() : startTime.week() + "," + endTime.week()
-
-    return <div className="week-changer" data-testid="nav-week-changer">
-        <label>Week:  </label><span className="h5 text-normal">{weekNumbers}</span>
-        <div>
-            <Button className="p-button-icon-only week-button"
-                    data-testid="nav-week-previous"
-                    icon="pi pi-angle-double-left"
-                    title="Previous 7 days"
-                    onClick={() => {
-                        const newStartTime = moment(startTime).startOf('day').subtract(1, 'weeks');
-                        const newEndTIme = moment(endTime).endOf('day').subtract(1, 'weeks');
-                        setStartAndEndTimeCallback(newStartTime, newEndTIme)
 
-                    }}/>
 
-            <Button className="p-button-icon-only week-button"
-                    data-testid="nav-week-next"
-                    icon="pi pi-angle-double-right"
-                    title="Next 7 days"
-                    onClick={() => {
-                        const newStartTime = moment(startTime).startOf('day').add(1, 'weeks');
-                        const newEndTIme = moment(endTime).endOf('day').add(1, 'weeks');
-                        setStartAndEndTimeCallback(newStartTime, newEndTIme)
-                    }}/>
-        </div>
-
-    </div>
-}
-
-function JumpToSUId(props) { //TODO: extract to separate class
-    const {
-        suId,
-        setSUId,
-        setSearchForSUIdTrigger
-    } = props
-
-    return <div data-testid="nav-jump-to-suid">
-        <label>Jump to SU id</label>
-        <div>
-            <InputNumber data-testid="jump-to-input"
-                         className="jump-to-input"
-                         value={suId}
-                         format={false}
-                         onValueChange={(e) => setSUId(e.value)}
-            />
-            <Button className="p-button-icon-only calendar-button"
-                    title="Set the week to the scheduling unit's on sky or process start time."
-                    data-testid="nav-jump-to-button"
-                    onClick={() => setSearchForSUIdTrigger(prevState => !prevState)}>
-                <i className="fas fa-search"></i>
-            </Button>
-        </div>
-    </div>
-}
 
 function changeStartAndEndTimeCallback(setStartTime, setEndTime) {
     return (newStartTime, newEndTime) => {
@@ -139,7 +77,6 @@ function changeStartAndEndTimeCallback(setStartTime, setEndTime) {
 export default function DateTimeNavigator(props) {
     const {
         startTime,
-        endTime,
         setStartTime,
         setEndTime
     } = props
@@ -169,14 +106,9 @@ export default function DateTimeNavigator(props) {
     }, [searchForSUIdTrigger])
 
     return <div className="p-grid timeline-datetime-navigator">
-        <div className="section">
-            <div className="header">Navigation</div>
+        <Panel header="Navigation">
             <div className="group">
-                <div className="info-container">
-                    <DateTimeInfo/>
-                    <WeekChanger isRange={false} startTime={startTime} endTime={endTime}
-                                 setStartAndEndTimeCallback={changeStartAndEndTimeCallback(setStartTime, setEndTime)}/>
-                </div>
+                
                 <div className="selector-container">
                     <DateSelector isRange={false} startTime={startTime}
                                   setStartAndEndTimeCallback={changeStartAndEndTimeCallback(setStartTime, setEndTime)}/>
@@ -184,6 +116,6 @@ export default function DateTimeNavigator(props) {
                                 setSearchForSUIdTrigger={setSearchForSUIdTrigger}/>
                 </div>
             </div>
-        </div>
+        </Panel>
     </div>
 }
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js
index c9bc7b482acfffb75be5a42cd784fdbcbd1e9dd7..0b74d484eb25c25f098dc99c7eb947aa07e1c9c9 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js
@@ -1,11 +1,13 @@
 import moment from "moment";
-import DateTimeNavigator from "./DateTimeNavigator";
-import { fireEvent, render ,act, waitFor} from "@testing-library/react";
+import  DateTimeNavigator from "./DateTimeNavigator";
+import {  render } from "@testing-library/react";
 import { clickItem, removeReact18ConsoleErrors } from "../../../../utils/test.helper";
-import UtilService from "../../../../services/util.service";
+
 
 removeReact18ConsoleErrors()
 
+
+
 describe('DateTimeNavigator', () => {
     const mockSetStartTime = jest.fn();
     const mockSetEndTime = jest.fn();
@@ -14,7 +16,6 @@ describe('DateTimeNavigator', () => {
         const pageContent = render(
             <DateTimeNavigator
                 startTime={moment()}
-                endTime={moment()}
                 setStartTime={mockSetStartTime}
                 setEndTime={mockSetEndTime}
             />
@@ -22,89 +23,41 @@ describe('DateTimeNavigator', () => {
 
         const dateSelector = pageContent.getByTestId('nav-datetime-selector');
         const resetButton = pageContent.getByTestId('nav-reset-button');
-        const nextWeekButton = pageContent.getByTestId('nav-week-next');
-        const previousWeekButton = pageContent.getByTestId('nav-week-previous');
         const jumpToSUIdButton = pageContent.getByTestId('nav-jump-to-button');
 
         expect(dateSelector).toBeInTheDocument();
         expect(dateSelector.textContent).toBe("Showing week from");
         expect(resetButton).toBeInTheDocument();
         expect(resetButton.title).toBe("Reset to the current week");
-        expect(nextWeekButton).toBeInTheDocument();
-        expect(nextWeekButton.title).toBe("Next 7 days");
-        expect(previousWeekButton).toBeInTheDocument();
-        expect(previousWeekButton.title).toBe("Previous 7 days");
         expect(jumpToSUIdButton).toBeInTheDocument();
         expect(jumpToSUIdButton.title).toBe("Set the week to the scheduling unit's on sky or process start time.")
     });
 
     it('Clicks buttons; reset, previous+next week', () => {
         const mockStartTime = moment('2023-08-15');
-        const mockEndTime = moment('2023-08-22');
         const pageContent = render(
             <DateTimeNavigator
                 startTime={mockStartTime}
-                endTime={mockEndTime}
                 setStartTime={mockSetStartTime}
                 setEndTime={mockSetEndTime}
             />
         );
 
         const resetButton = pageContent.getByTestId('nav-reset-button');
-        const nextWeekButton = pageContent.getByTestId('nav-week-next');
-        const previousWeekButton = pageContent.getByTestId('nav-week-previous');
-
-
+   
         clickItem(resetButton)
         expect(mockSetStartTime).toHaveBeenCalledTimes(1);
         expect(mockSetEndTime).toHaveBeenCalledTimes(1);
-
-        clickItem(previousWeekButton)
-        expect(mockSetStartTime).toHaveBeenCalledTimes(2);
-        expect(mockSetEndTime).toHaveBeenCalledTimes(2);
-
-        clickItem(nextWeekButton)
-        expect(mockSetStartTime).toHaveBeenCalledTimes(3);
-        expect(mockSetEndTime).toHaveBeenCalledTimes(3);
     });
 
 
-    // TODO : Fix Unit Test Sets the start time for an SU ID upon search click
-    it.skip('Sets the start time for an SU ID upon search click', async () => {
-  
-        const utcTime = '2023-08-11 06:20:45';
-        let utcSpy = jest.spyOn(UtilService, 'getUTC').mockResolvedValue(utcTime);
-
-        let pageContent;
-        act(() =>
-            pageContent = render(
-                <DateTimeNavigator
-                    startTime={moment('2023-08-15')}
-                    endTime={moment('2023-08-22')}
-                    setStartTime={mockSetStartTime}
-                    setEndTime={mockSetEndTime}
-                />
-            ));
-        await waitFor (() => expect (pageContent.queryByTestId('jump-to-input')).toBeInTheDocument());
-        const suIdInput = pageContent.getByTestId('jump-to-input');
-        const jumpToButton = pageContent.getByTestId('nav-jump-to-button');
-
-        const suId = 456
-        clickItem(suIdInput)
-        
-        act(() => fireEvent.change(suIdInput, { target: { value: suId } }));
-        clickItem(jumpToButton)
-
-        expect(mockSetStartTime).toHaveBeenCalledWith(expect.any(Date));
-        expect(utcSpy).toHaveBeenCalled();
-    })
+
 
     it('does not render week changer or date selector when startTime is not provided', () => {
 
         const pageContent = render(
             <DateTimeNavigator
                 startTime={undefined}
-                endTime={moment()}
                 setStartTime={mockSetStartTime}
                 setEndTime={mockSetEndTime}
             />
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/Filters.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/Filters.js
index c0f3c27dfb159fee4b1fd57781b1e513418644aa..6ceda45009b748886ebf8b53e8b2d98ee527f924 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/Filters.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/Filters.js
@@ -3,6 +3,7 @@ import {MultiSelect} from "primereact/multiselect";
 import {useEffect, useState} from "react";
 import {updateStore} from "../../../../services/store.helper";
 import UIConstants from "../../../../utils/ui.constants";
+import { Panel } from 'primereact/panel';
 import {
     getReservationItem,
     getTimelineItem,
@@ -172,9 +173,8 @@ export default function Filters(props) {
 
     return <div className="p-grid timeline-view-toolbar">
         {multiSelectAllOptions.isLoading ? <ProgressSpinner  className="m-5" style={{color: "var(--primary-300)"}}/> :
-            <div className="section">
-                <div className="header">Filters</div>
-                <div className="group">
+            <Panel className="section" header="Filters">
+               <div className="group">
                     <Toggle labelName="On Sky" tooltipText="Show on-sky system durations"
                             checkedValue={onSkyToggle} onChangeCallback={setOnSkyToggle}/>
                 </div>
@@ -255,7 +255,7 @@ export default function Filters(props) {
                         />
                     </div>
                 </div>
-            </div>
+            </Panel>
         }
     </div>
 }
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js
new file mode 100644
index 0000000000000000000000000000000000000000..4656714d330b0d8966b67d3510f0527da3666a45
--- /dev/null
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js
@@ -0,0 +1,36 @@
+import { Button } from "primereact/button";
+import { InputNumber } from "primereact/inputnumber";
+import PropTypes from 'prop-types';
+
+const  JumpToSUId = (props) => {
+    const {
+        suId,
+        setSUId,
+        setSearchForSUIdTrigger
+    } = props
+
+    return <div data-testid="nav-jump-to-suid">
+        <label>Jump to SU id</label>
+        <div>
+            <InputNumber data-testid="jump-to-input"
+                className="jump-to-input"
+                value={suId}
+                format={false}
+                onValueChange={(e) => setSUId(e.value)}
+            />
+            <Button className="p-button-icon-only calendar-button"
+                title="Set the week to the scheduling unit's on sky or process start time."
+                data-testid="nav-jump-to-button"
+                onClick={() =>      setSearchForSUIdTrigger(prevState => !prevState)  }>
+                <i className="fas fa-search"></i>
+            </Button>
+        </div>
+    </div>
+}
+JumpToSUId.propTypes = {
+    suId: PropTypes.number,
+    setSUId:PropTypes.func,
+    setSearchForSUIdTrigger:PropTypes.func
+};
+
+export default JumpToSUId
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..e66f6b3a0acbd03f6c487ff16668f2ddc7637250
--- /dev/null
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.test.js
@@ -0,0 +1,37 @@
+import JumpToSUId from "./JumpToSuid";
+import { fireEvent, render, act, waitFor } from "@testing-library/react";
+import { clickItem, removeReact18ConsoleErrors } from "../../../../utils/test.helper";
+
+
+removeReact18ConsoleErrors()
+
+describe('JumpToSUId', () => {
+
+    it('Triggers function for an jump to input change', async () => {
+        const mockSetSUId = jest.fn();
+        const mockSetSearchForSUIdTrigger = jest.fn();
+        let pageContent;
+        act(() =>
+            pageContent = render(
+                <JumpToSUId
+                    suid="1"
+                    setSUId={mockSetSUId}
+                    setSearchForSUIdTrigger={mockSetSearchForSUIdTrigger}
+                />
+            ));
+        await waitFor(() => expect(pageContent.queryByTestId('jump-to-input')).toBeInTheDocument());
+        const suIdInput = pageContent.getByTestId('jump-to-input');
+        const jumpToButton = pageContent.getByTestId('nav-jump-to-button');
+
+        const suId = 456
+        clickItem(suIdInput)
+        expect(mockSetSUId).toHaveBeenCalled();
+
+        act(() => fireEvent.change(suIdInput, { target: { value: suId } }));
+        clickItem(jumpToButton)
+
+        
+         expect(mockSetSearchForSUIdTrigger).toHaveBeenCalled();
+    })
+});
+
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/ZoomAndMove.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/ZoomAndMove.js
index 2d34a0bb0b97a0e0ac6ddb03f4609e91eab7bbfc..8e4ea1914020230d5b462526336fa7a297128123 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/ZoomAndMove.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/ZoomAndMove.js
@@ -4,6 +4,8 @@ import { ProgressSpinner } from 'primereact/progressspinner';
 import UIConstants from "../../../../utils/ui.constants";
 import { Button } from "primereact/button";
 import { Dropdown } from "primereact/dropdown";
+import { Panel } from 'primereact/panel';
+import { Ripple } from 'primereact/ripple';
 import {
     getMovePossibilities,
     getTimeStepsForZoom,
@@ -197,6 +199,31 @@ export default function ZoomAndMove(props) {
         setHeaderSettings
     } = props
 
+
+    const template = (options) => {
+        const UndoIcon = 'pi pi-undo';
+        const className = `${options.className} justify-content-start`;
+        const titleClassName = `${options.titleClassName}  p-panel-title`;
+        
+
+        return (
+            <div className={className}>
+            
+                <span className={titleClassName} >Zoom</span>
+                <button   data-testid="zoom-reset-button" className={options.togglerClassName} title="Reset span to 1 day, time steps to 1 hour and time to now." onClick={() => setZoomSettings({
+                zoomLevelName: UIConstants.DEFAULT_ZOOM_LEVEL.name,
+                selectedTime: undefined
+            })}>
+                    <span className={UndoIcon}></span>
+                    <Ripple />
+                </button>
+            </div>
+        );
+     
+
+    };
+
+
     const [zoomSettings, setZoomSettings] = useState({
         zoomLevelName: timelineStore.zoomLevelName ?? UIConstants.DEFAULT_ZOOM_LEVEL.name,
         selectedTime: timelineStore.selectedTime,
@@ -262,19 +289,8 @@ export default function ZoomAndMove(props) {
         </div>
     }
 
-    return <div className="timeline-zoom-and-move section">
-        <div className="header">
-            Zoom
-            <Button icon="fas fa-undo"
-                className="p-button p-button-primary reset-button"
-                onClick={() => setZoomSettings({
-                    zoomLevelName: UIConstants.DEFAULT_ZOOM_LEVEL.name,
-                    selectedTime: undefined
-                })}
-                title="Reset span to 1 day, time steps to 1 hour and time to now."
-                data-testid="zoom-reset-button"
-            />
-        </div>
+    return <Panel className="timeline-zoom-and-move section" headerTemplate={template}>
+ 
         <div className="group group--row">
             <ZoomSelect currentZoomLevelName={zoomSettings.zoomLevelName}
                 allOptions={UIConstants.ALL_ZOOM_LEVELS_WEEK}
@@ -309,5 +325,5 @@ export default function ZoomAndMove(props) {
                 setVisibleTime={setVisibleTime}
                 timeSteps={headerSettings.timeSteps} />
         </div>
-    </div>
+    </Panel>
 }
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js
index cb2b097c2e06810e55341e13738a7b5c937e1aa6..498f6249c1a58d0fb407e2335abb678513ced0e0 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js
@@ -115,10 +115,10 @@ export function getStationsInfo(stations) {
 export function getTimelineItem(suBlueprint, displayDate, shouldShowOnSkyTimes = false) {
     const duration = `${(UnitConverter.getSecsToHrsWithFractionDigits(suBlueprint.duration))}Hrs`;
     const onSkyDuration = `${(UnitConverter.getSecsToHrsWithFractionDigits(suBlueprint.on_sky_duration))}Hrs`;
-    const startTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.process_start_time.split('T')[1]}`);
-    const endTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.process_stop_time.split('T')[1]}`)
-    const onSkyStartTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.on_sky_start_time.split('T')[1]}`);
-    const onSkyEndTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.on_sky_stop_time.split('T')[1]}`)
+    const startTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.process_start_time?.split('T')[1]}`);
+    const endTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.process_stop_time?.split('T')[1]}`)
+    const onSkyStartTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.on_sky_start_time?.split('T')[1]}`);
+    const onSkyEndTimeWithDisplayDate = moment(`${displayDate.format('YYYY-MM-DD')} ${suBlueprint.on_sky_stop_time?.split('T')[1]}`)
     const band = suBlueprint.antenna_set?.split("_")[0]  //Example: antenna sets LBA_OUTER -> band = LBA
     const currentGroup = moment(shouldShowOnSkyTimes ? suBlueprint.on_sky_start_time : suBlueprint.process_start_time).format(UIConstants.CALENDAR_GROUP_FORMAT)
     const stations = getStationsInfo(suBlueprint.specified_stations);
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/week.view.helper.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/week.view.helper.js
index 4f5c4d292520f26c24675f6a0f493806bb3e550b..f957af7fd8f3d307c64f03b19c1e4202a14a0953 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/week.view.helper.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/week.view.helper.js
@@ -8,42 +8,11 @@ export function createGroups(startTime, amountOfGroups = 7) {
     for (let groupIndex = 0; groupIndex < amountOfGroups; groupIndex++) {
         const group = moment(startDate).add(groupIndex, "days");
         const groupTitle = group.format(UIConstants.CALENDAR_GROUP_FORMAT)
-        groups.push({id: groupTitle, title: groupTitle})
+        groups.push({id: groupTitle, title: groupTitle, date:group})
     }
     return groups
 }
 
-const MAX_COLUMNS_WHOLE_PAGE = 12;
-
-function getClassName(size) {
-    if (size === 0) {
-        return "hide-element"
-    }
-    if (size === MAX_COLUMNS_WHOLE_PAGE) { //max columns for a whole page; so no columns needs to be set
-        return ""
-    }
-    return `col-lg-${size} col-md-${size} col-sm-${size}`
-}
-
-export function calculateSizeAndSetPanelClassName(showLeft, showRight, leftPanelSize, setPanelClassNames) {
-    if (!showLeft) {
-        leftPanelSize = 0
-    }
-    if (showRight) { //set it to a fixed column size (resizing is not possible)
-        leftPanelSize = 10
-    }
-
-    const mapForSize = UIConstants.PANEL_SIZE_CLASS_MAP.find(panelMapper => panelMapper.size === leftPanelSize);
-    const leftSize = showLeft ? mapForSize.left : 0;
-    const rightSize = showRight ? mapForSize.right : 0;
-    const middleSize = MAX_COLUMNS_WHOLE_PAGE - leftSize - rightSize
-    setPanelClassNames({
-        leftPanelClassName: "timeline-panel " + getClassName(leftSize),
-        middlePanelClassName: "timeline-panel " + getClassName(middleSize),
-        rightPanelClassName: "timeline-panel " + getClassName(rightSize),
-    })
-}
-
 export async function updateSchedulerStatuses(switchValue, status, setSchedulerSettings) {
     if (status === "fixed") {
         setSchedulerSettings(prevState => ({
@@ -65,7 +34,7 @@ export async function updateSchedulerStatuses(switchValue, status, setSchedulerS
     }
 }
 
-const actionObject = (title, icon, classes, className, callbackProp, content, type, actOn) => ({
+const actionObject = (title, icon, classes, className, callbackProp, content, type, actOn,options,selected) => ({
     title: title,
     icon: icon,
     classes: classes,
@@ -73,31 +42,99 @@ const actionObject = (title, icon, classes, className, callbackProp, content, ty
     content: content,
     type: type,
     actOn: actOn,
-    props: callbackProp
+    props: callbackProp,
+    options:options,
+    selected:selected
 })
 
 const actionButtonObject = (title, icon, classes, callbackProp) => (
-    actionObject(title, icon, classes, undefined, callbackProp, undefined, "button", "click")
+    actionObject(title, icon, classes, undefined, callbackProp, undefined, "buttonv2", "click",undefined,undefined)
 )
 
 const actionTagObject = (title, content, className) => (
-    actionObject(title, undefined, undefined, className, undefined, content, "tag", "click")
+    actionObject(title, undefined, undefined, className, undefined, content, "tagv2", "click",undefined,undefined)
+)
+
+const actionDropDownObject = (title, options, callbackProp,selected,classes) => (
+    actionObject(title, undefined, classes, undefined, callbackProp, undefined, "dropdown", "select",options,selected)
 )
 
-export function getHeaderActions(isLoading, setRefetchToggle, actionsMenuRef) {
+const actionDivider = (title) => (
+    actionObject(title, undefined, undefined, undefined, undefined, undefined, "divider", undefined,undefined,undefined)
+)
+
+export function getHeaderActions(isLoading, setRefetchToggle, actionsMenuRef,isExpanded, setIsExpanded, isLegendVisible, setIsLegendVisable) {
     return [
         actionButtonObject(
             isLoading ? "System is already reloading the timeline data" : "Reload the timeline data",
-            "fa-" + (isLoading ? "hourglass fa-spin" : "sync-alt"),
+            (isLoading ? "pi-spin pi-hourglass " : "pi-sync"),
             `subsystem subsystem--${isLoading ? "on" : "standard"}`,
             {callback: () => setRefetchToggle(prevState => !prevState)}
         ),
         actionButtonObject(
             "Options",
-            "fa-bars",
-            "subsystem subsystem--standard",
+            "pi-bars",
+            "",
             {callback: (ev) => actionsMenuRef.current.toggle(ev)}
         ),
+        actionButtonObject(
+            (isLegendVisible?  "Hide Legend" : "Show Legend"),
+            (isLegendVisible? "pi-bookmark":"pi-bookmark-fill"),
+            (isLegendVisible? "":"color:grey"),
+            {callback: () => setIsLegendVisable(prevState=>!prevState)}
+        ),
+        
+        actionButtonObject(
+            (isExpanded?  "Hide Filters" : "Show Filter"),
+            (isExpanded? "pi-chevron-up":"pi-chevron-down"),
+            "",
+            {callback: () => setIsExpanded(prevState=>!prevState)}
+        ),
+
+        
+    ];
+}
+  /**
+     * getGroupedByActions
+     * Returns actions used to group by
+     * @param {function}setGroupedBy {
+     */
+export function getGroupedByActions(selected , setGroupedBy) {
+    return [
+        actionDropDownObject(
+                 "Group By",
+                 [
+                    { label:"Date" , value: "Date"},
+                    { label:"Priority Queue", value: "Priority Queue"},
+                    {label:"Project", value: "Project"},
+                    {label:"Station", value: "Station"},
+                    {label:"Station Group", value: "Station Group"} ,
+                    {label:"Scheduling Unit", value: "Scheduling Unit"},
+                    {label:"Scheduler Type", value: "Scheduler Type"}
+                 ],
+            {callback: (groupingby) => setGroupedBy(groupingby)},
+            selected,
+            "timeline-header-dropdown"
+        ),
+    ]
+
+}
+
+export function getNavigationActions(AddWeeks,currentweeks) {
+    return [
+         actionButtonObject(
+            "previous 7 days",
+            "pi pi-angle-double-left",
+            "", 
+            {callback: () => AddWeeks(-1)}
+        ),
+        actionButtonObject(
+            "next 7 days",
+            "pi pi-angle-double-right",
+            "", 
+            {callback: () => AddWeeks(1)}
+        ),
+        actionDivider("navigationbreaker")
     ];
 }
 
@@ -117,10 +154,13 @@ export function getSchedulerActions(schedulerSettings, setShowSchedulerSettingsD
         actionButtonObject(
             (schedulerSettings.isDynamicSchedulerActive ? "Dynamic Scheduler is Active" :
                 (schedulerSettings.isDynamicSchedulerOn ? "Dynamic Scheduler is Idle" : "Dynamic Scheduler is stopped")) + ". Click to change the scheduler",
-            "fa-" + (schedulerSettings.isDynamicSchedulerActive ? "play" : (schedulerSettings.isDynamicSchedulerOn ? "pause" : "stop")),
+            "pi-" + (schedulerSettings.isDynamicSchedulerActive ? "play" : (schedulerSettings.isDynamicSchedulerOn ? "pause" : "stop")),
             "subsystem subsystem--" + (schedulerSettings.isDynamicSchedulerActive ? "on" : (schedulerSettings.isDynamicSchedulerOn ? "paused" : "off")),
             {callback: () => setShowSchedulerSettingsDialog(true)}
-        )
+        ),
+      
+
+        
     ];
 }
 
@@ -169,11 +209,11 @@ export function getPageHeaderOptionsMenuItems(permissions) { //TODO factory meth
 }
 
 export function getCursorDateTimes(cursorTimeUTC, groupIndex, groupDate, lstShiftInSeconds, setCursorDateTimes) {
-    const cursorTime = moment(cursorTimeUTC).format(UIConstants.CALENDAR_TIME_FORMAT);
+    const cursorTime = moment(cursorTimeUTC)
     if (groupIndex >= 0) {
-        const cursorDateTimeUTC = moment(groupDate + " " + cursorTime)
+        const cursorDateTimeUTC = groupDate.set({hour:cursorTime.get('hour'), minute:cursorTime.get('minute'), second:cursorTime.get('second') });
         const shiftForGroup = {'minute': 3 * groupIndex, 'second': 45 * groupIndex};
-        const cursorDateTimeLST = moment(moment(cursorDateTimeUTC).add(lstShiftInSeconds, 'second')).add(shiftForGroup)
+        const cursorDateTimeLST = moment(cursorDateTimeUTC).add(lstShiftInSeconds, 'second').add(shiftForGroup)
         setCursorDateTimes({
             utc: cursorDateTimeUTC.format("HH:mm"),
             lst: cursorDateTimeLST.format("HH:mm"),
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/services/auth.service.js b/SAS/TMSS/frontend/tmss_webapp/src/services/auth.service.js
index 38137e19b403174672c7ffd5647c2e361f8e9909..438faf40677fc16d97e704d9c8e234a413c3b079 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/services/auth.service.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/services/auth.service.js
@@ -4,7 +4,8 @@ const AuthService = {
     authenticate: async(user, pass) => {
         try {
             delete axios.defaults.headers.common['Authorization'];
-            const response = await axios.post("/api/token-auth/", {username: user, password: pass});
+            delete axios.defaults.headers.common['X-Csrftoken'];
+            const response = await axios.post("/api/token-auth/", {username: user, password: pass} );
             axios.defaults.headers.common['Authorization'] = `Token ${response.data.token}`;
             return response.data;
         }   catch(error) {
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/ui.constants.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/ui.constants.js
index cba11c84d761e28a1bb9e94c3541e2f6beffbcaf..44b70ccea21ab7b4040d77e0f6d95659d37a14d2 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/utils/ui.constants.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/ui.constants.js
@@ -103,7 +103,7 @@ const UIConstants = {
         {
             name: '2 Hours', value: {
                 minute: 0,
-                hour: 3,
+                hour: 2,
             }
         },
         {