# Erzeugt von tasks/build_headers.py — nicht von Hand aendern.
# Ein CSP-Block je Seite, weil jede Seite eigene Inline-Bloecke hat.

/*
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  X-Content-Type-Options: nosniff
  Referrer-Policy: no-referrer
  Permissions-Policy: accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), publickey-credentials-get=(), screen-wake-lock=(), usb=(), xr-spatial-tracking=()
  Cross-Origin-Opener-Policy: same-origin
  Cross-Origin-Resource-Policy: same-origin
  X-Frame-Options: DENY
  ! Access-Control-Allow-Origin

# Seiten nie aus dem Cache beantworten: ein Sicherheitsupdate des
# Clients muss sofort greifen.
/*.html
  Cache-Control: no-cache, must-revalidate

# Icons und Manifest aendern sich selten; ohne Hash im Dateinamen
# bleibt es bei einer Woche statt immutable.
/assets/*
  Cache-Control: public, max-age=604800

/404
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-gWwIxMPzbmck7B8f+7SbZHFS6lKcMu4XU+EUXFluww0='; style-src-attr 'unsafe-inline'

/404.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-gWwIxMPzbmck7B8f+7SbZHFS6lKcMu4XU+EUXFluww0='; style-src-attr 'unsafe-inline'

/about
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-iBLK3p40D0uFEjfOe4toqGMNta01A9YznJdx5lUIkbg='; style-src-attr 'unsafe-inline'

/about.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-iBLK3p40D0uFEjfOe4toqGMNta01A9YznJdx5lUIkbg='; style-src-attr 'unsafe-inline'

/changelog
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-tLZHbG6qQru9zmtWtCfJI3LYUD6+dRqlhZJ+PMDvi6A='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-ruP8gUVeyBPJwqpliw6u6bfx8TubVLdkUtwwkdGg6Lo='; style-src-attr 'unsafe-inline'

/changelog.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-tLZHbG6qQru9zmtWtCfJI3LYUD6+dRqlhZJ+PMDvi6A='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-ruP8gUVeyBPJwqpliw6u6bfx8TubVLdkUtwwkdGg6Lo='; style-src-attr 'unsafe-inline'

/contact
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-hpHceMjvFXaDWZnHUKUUJZw3ywI3qlDqlE+hRP8sElI='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-JrU8OEZPi1r8hZ/uchrONlZUBjY+m0Cx+r8fWzPTcHk='; style-src-attr 'unsafe-inline'

/contact.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-hpHceMjvFXaDWZnHUKUUJZw3ywI3qlDqlE+hRP8sElI='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-JrU8OEZPi1r8hZ/uchrONlZUBjY+m0Cx+r8fWzPTcHk='; style-src-attr 'unsafe-inline'

/glossary
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-iYArpc8c8AfZw1Jvz7u5prBPUEQoePoGmqmDEknT3T0='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-eZMBd2tJwzCO+9i6V1FAIgIzs4nhNHbQ8NvfXji2QOA='; style-src-attr 'unsafe-inline'

/glossary.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-iYArpc8c8AfZw1Jvz7u5prBPUEQoePoGmqmDEknT3T0='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-eZMBd2tJwzCO+9i6V1FAIgIzs4nhNHbQ8NvfXji2QOA='; style-src-attr 'unsafe-inline'

/imprint
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-W66ctEq5fICc33rRDLhnKKgqgDwmKW/5pyk+mhRrF2E='; style-src-attr 'unsafe-inline'

/imprint.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-W66ctEq5fICc33rRDLhnKKgqgDwmKW/5pyk+mhRrF2E='; style-src-attr 'unsafe-inline'

/
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-nruar41+K9aU0fon8y//d8KNK+akTutlLAp1baHjOTg='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-ZRFqjBzQA8A2o1QouBFJ06J6tBeTWiDs/ZWMnmw0I7A='; style-src-attr 'unsafe-inline'

/index.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-nruar41+K9aU0fon8y//d8KNK+akTutlLAp1baHjOTg='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-ZRFqjBzQA8A2o1QouBFJ06J6tBeTWiDs/ZWMnmw0I7A='; style-src-attr 'unsafe-inline'

/limits
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-B31fisTfV42/hg+76TkCfODQ8IkO0TF5Rw+WkvuP0x0='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-RWSR4IqRVYGDDBnw0YlD49oz04ou1m3tHqOc1/0Rims='; style-src-attr 'unsafe-inline'

/limits.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-B31fisTfV42/hg+76TkCfODQ8IkO0TF5Rw+WkvuP0x0='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-RWSR4IqRVYGDDBnw0YlD49oz04ou1m3tHqOc1/0Rims='; style-src-attr 'unsafe-inline'

/opensource
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-F21ktGRP56ivHF6vs/oI8ybov3H3BJsV5L6krbbOa70='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-uk3iYguUmsmJL/crg2sIIpXHxRtW9kVaHOcpdOQ+Sj4='; style-src-attr 'unsafe-inline'

/opensource.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-F21ktGRP56ivHF6vs/oI8ybov3H3BJsV5L6krbbOa70='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-uk3iYguUmsmJL/crg2sIIpXHxRtW9kVaHOcpdOQ+Sj4='; style-src-attr 'unsafe-inline'

/privacy
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-W66ctEq5fICc33rRDLhnKKgqgDwmKW/5pyk+mhRrF2E='; style-src-attr 'unsafe-inline'

/privacy.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-W66ctEq5fICc33rRDLhnKKgqgDwmKW/5pyk+mhRrF2E='; style-src-attr 'unsafe-inline'

/status
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-CX2XwyHk7Ehcya2UYkyBTlST3IlMcpsmyqiQoeF89Ec='; style-src-attr 'unsafe-inline'

/status.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-CX2XwyHk7Ehcya2UYkyBTlST3IlMcpsmyqiQoeF89Ec='; style-src-attr 'unsafe-inline'

/verify
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-6nJZhxD1lpXQtPqBtkzm/5Gjp7pEi4SJjN3uIdMoctU='; style-src-attr 'unsafe-inline'

/verify.html
  Content-Security-Policy: default-src 'none'; img-src 'self' data:; font-src 'self' data:; connect-src 'none'; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'none'; manifest-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests; script-src 'sha256-Fbn8CdLE/xEV0GuX83oK5G+VGoSTa8Wb6+nksEnNzRA=' 'sha256-9eHFZleAYd5YQwTiNDg0/9Ejl291yi+SYtybXrQzJ/k='; style-src-elem 'sha256-CNDpugltMWHM80ZzHJkOk0gtpNJuRsAnNTrmMn6yzDo=' 'sha256-6nJZhxD1lpXQtPqBtkzm/5Gjp7pEi4SJjN3uIdMoctU='; style-src-attr 'unsafe-inline'
