From f71a71fce0ea281c50d759f819db2d0f1e5b4d90 Mon Sep 17 00:00:00 2001
From: Hamza Remmal <2861-remmal@users.noreply.gitlab.epfl.ch>
Date: Thu, 26 Dec 2024 15:32:40 +0000
Subject: [PATCH] Add favicons

---
 .../epfl/autograde/config/SecurityConfig.java |   2 +-
 .../favicons/android-chrome-192x192.png       | Bin 0 -> 1247 bytes
 .../favicons/android-chrome-512x512.png       | Bin 0 -> 2396 bytes
 .../images/favicons/apple-touch-icon.png      | Bin 0 -> 1208 bytes
 .../static/images/favicons/favicon-120.png    | Bin 0 -> 845 bytes
 .../static/images/favicons/favicon-128.png    | Bin 0 -> 873 bytes
 .../static/images/favicons/favicon-152.png    | Bin 0 -> 969 bytes
 .../static/images/favicons/favicon-16.png     | Bin 0 -> 619 bytes
 .../static/images/favicons/favicon-180.png    | Bin 0 -> 1143 bytes
 .../static/images/favicons/favicon-228.png    | Bin 0 -> 1323 bytes
 .../static/images/favicons/favicon-32.png     | Bin 0 -> 795 bytes
 .../static/images/favicons/favicon-57.png     | Bin 0 -> 436 bytes
 .../static/images/favicons/favicon-76.png     | Bin 0 -> 628 bytes
 .../static/images/favicons/favicon-96.png     | Bin 0 -> 658 bytes
 .../static/images/favicons/favicon.ico        | Bin 0 -> 15086 bytes
 .../main/resources/templates/error/4xx.html   |  20 ++++++++++++++++++
 .../main/resources/templates/error/5xx.html   |  20 ++++++++++++++++++
 17 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/android-chrome-192x192.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/android-chrome-512x512.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/apple-touch-icon.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-120.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-128.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-152.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-16.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-180.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-228.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-32.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-57.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-76.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon-96.png
 create mode 100644 autograde-service/src/main/resources/static/images/favicons/favicon.ico

diff --git a/autograde-service/src/main/java/ch/epfl/autograde/config/SecurityConfig.java b/autograde-service/src/main/java/ch/epfl/autograde/config/SecurityConfig.java
index dfcd2b73..66e0ee38 100644
--- a/autograde-service/src/main/java/ch/epfl/autograde/config/SecurityConfig.java
+++ b/autograde-service/src/main/java/ch/epfl/autograde/config/SecurityConfig.java
@@ -103,7 +103,7 @@ public class SecurityConfig {
                 .sessionManagement(AbstractHttpConfigurer::disable)
                 .formLogin(AbstractHttpConfigurer::disable)
                 .authorizeHttpRequests(auth -> {
-                    auth.requestMatchers("/error", "/css/error-pages.css").permitAll();
+                    auth.requestMatchers("/error", "/css/error-pages.css", "/images/favicons/**").permitAll();
                     auth.anyRequest().hasAuthority(AutogradeAuthorities.SYSTEM_ACCESS.getAuthority());
                 })
                 .build();
diff --git a/autograde-service/src/main/resources/static/images/favicons/android-chrome-192x192.png b/autograde-service/src/main/resources/static/images/favicons/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..5926013400203af684ce3ef315f2fcb8e245c3ee
GIT binary patch
literal 1247
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$SkfJR9T^xl_H+M9WMyDr
zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7&QZYLR|m<
z|NozXVH6Pvf&c$+w086|Ffb&R1o;Is2uSdWaPf$3n4$6e_3h(*Ufeed8a{mL6#tqy
zz3QLosQ^QJ|JJ`N1P>TEs^y)TJ$cV*CF|!-vmUHgkkvGIuRZifbZ@uAi%l73QyDK<
zeavV6{P_H|ApZGo9EW>_WK>V^axR|s!H$7}ficP3-G!lpRn~)nfq}EYBeIx*fy)wv
z8S{$8A2Tp8u$OrHy0SlJ=HXQ~)7V+=&%nUA($mE;q~g}w8|nUs0z?`T9YP#J?pO$H
zZ+di3n)UmEz3%`2&o@}8+jwtU%L%KKziVE<J-bk!S99fQQ2Jp&0}T;*{hQl_o>g?8
z$vpEe!>Di8Y3T=-=luMt%lOpAd&AbXwpS+FFW-D(&bl{!d5>2t=VL0_Tbp>3an?0^
z1sjLUY)jcQoG&pe9X`Zt5<i#4g?ZHm)dZJ#Ia%rX9e&U98n-JXoJu=aV#<^@XZsVT
zq{{A(3wBEBb9}JwTe+Fxdd`uExx!Kpyd+kC4q_JTx$3%-(fiQ*1DihFKX7W*&Rt=*
z8@}@1eKzgtHX(sa{%_vAdn+&VOfLB3n`O$$=QbK055CC|>{VH}Y$`*vdTX)YRNiNM
z*IsToG4n%1?P-}r#)+S~FEUOKKPBVIc-?&aD;Y(`nY(|tA6MUP8OmSb_qyiP?Kw+?
zK77jB@blUI9?SQq=JcOpoAOD;Pjsg8qxCF|ECLP=Pnm=auco^)8JW%h^7TK1^)>V2
zr<@x;`!X=H2q>5?h^f1?>wZ)`2U?gyxB*@E#lBe^cCKXH&A`B*TH+c}l9E`GYL#4+
znpl#`U}RuuscT@YYiJZ=Xl!L{YGrDoZD43+V4xE(k%^)qH$NpatrE9}Sf&M685kHO
zK{f>Er<If^7Ns(jmzV2h=4BTrCl;jY<rk&TerF@az`zh*6%tVrlvu7%P?VpRnUkte
zQdy9ykXcZY%)n4F=kX^Vj>0evjZ^-o&v-r!VqjM0)=TCVRu=Z2EW#|T;L>1nIE7hx
sbBMy}8&^&oIdeqj2>a;<j|E<O46nomOFlW7P6c`0)78&qol`;+0HiX>NB{r;

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/android-chrome-512x512.png b/autograde-service/src/main/resources/static/images/favicons/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..d661705cd9f9325fcc65c822ee94d6c15e703dcc
GIT binary patch
literal 2396
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

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/apple-touch-icon.png b/autograde-service/src/main/resources/static/images/favicons/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d2e0b73a90fffa9c0b344a5e3b392ada793efd3
GIT binary patch
literal 1208
zcmeAS@N?(olHy`uVBq!ia0y~yVAuk}9Lx+13|zwB7#J8BSkfJR9T^xl_H+M9WMyDr
zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7)1hnLR|m<
z|NozXVH6=k;QxQF@6U7?7#N~Tg8YIRA~q;5nAu($E-vk~YH5ST6<&>mA0IO2F!lSL
z%$HawuWeU-MC};ojHK_u2P*5eR*P(p>y^8lnDg39!J+lp@!RZN(;QFCy(#$j<NdSi
zb!s@6ceCC7Q!t^z<b_eT>23xF2F4_BcNc~ZR#^`Q1_sUokH}&M2F|G<%xJiAVmJc>
z1AB?5uPggwW*%N;ZSVck(-;^S=Xts~hE&{od-HnGAqSC$L>87etQ!={bUIe7xFO(r
z^xp1gf8|{ixeuwW?rTb!`+xW8ljk1pPnvn~DHABspx}ZAwe6EC4?Lb~^7~KYv{RyM
zUy0@(Wq$k2+5PMyYhKmQ4%6T6&a3yYbX{NNx}icL#jZtK_V2t4%M-UGe&NrM$mMw@
zk?T^@BbQZBQgUOFRn-xhzP?_6pJ|Jerd|xbCVKg6FW)M@DT~sz(l!?w&RN~#w<63!
z`If1Eo9Em`;ztSsm%mUo^m!?=SEo%|%60v+qXoXRGtU2Vd#Rnj+3;et<mECap^1w&
zKdVrm`*(+RS#hgyb&{(?+{XCzFND_D%$!<xq_#|1E@bVA6YD?w_1LY6Tj=`b;>NOz
zA5;9I9{zbT<@lyUjThAwAAWiBN2w}v^P~5R*1LFph$>Qc-91%1De36iJ&)GKUA(_9
z=E_CBeS)28voaRtE`I-6Y-?ZLhPoq<-!IC&Vs-17@I@El*bg#cM*Mp^)W6!R#k=j-
zvOn~Fa|TLKLOB1=O2@xh>AdsN{Wb;$2GtVRh?11Vl2ohYqSVBaR0bmhLrYx)V_id|
z5JO`tV^b>=V{HRND+2@7Ahk*q4Y~O#nQ4`{HH7fbJIcVoAPKS|I6tkVJh3R1p}f3Y
zFEcN@I61K(RWH9NefB#WDFz0H@T!oAlAy$Lg@U5|w9K4Tg_6pGRE5lfl4J&kiaC!z
z@o*G|X=t4CKYhmYX%GXmGPhnbx3IFX_hb=fVFi~4lfx;@%9}$JPT#n4;>ejJGDp}?
dH+U@Y(qnifE?Dx($#g2n>z=NDF6*2UngHC$#a;ja

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-120.png b/autograde-service/src/main/resources/static/images/favicons/favicon-120.png
new file mode 100644
index 0000000000000000000000000000000000000000..e923f2d7f4ad95445e54b9cc27c4be4fee556b14
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yV5k6L4mJh`2Fnz)OAHJQoCO|{#S9GGLLkg|>2BR0
z1_q}8o-U3d6?5L+J)0}+DC6+)zY?G2E`}vbm=E<zFJt!N5EZcMu=Zfz!LowkawGSH
z1S=0M36pKAI_KBfe`B`HzwaN#>3b&S@$@yvttSR8o#GU;KIe2=f(7$oNr`g@3fS6=
z4dygH<l#xDiO_oM`pVE!al!JV71El%-=Ed>bles*)>Tdt)U4IF`;`CA=6$l^y>qoo
zw%nOn9cX;oC}@|y8~Zief+M~zH5zWe3vU;_`%}NqCG>A+N4rO6oQ+b_rN@>2S$6+j
z7sM}Gul(rtH!lOP<VxOi_Gd3Am9QM!a$=Ty=-YU&k8Rv@f=a(#EPK~cF8I+<$<F;q
z|D%u6*VXlIq#gZpynmPLRo8?+EYC%A>Lz_o(pu^-_;G8+8MoP@KfB%bx|r{^-KFXF
zU`69>Cp%H)f;|Ujw}xE4y(rX>>H6{BzCTO;-jd$kwW>-(?q<%_0^>z-pYL2&HkX`c
z{l9LN<@+~h8-Koja{ce=zsFA2ORWB`oHXmxmF4o?w~9|Zetx$2#SHP!*JYpApUX7#
z|2gB?`oagvI`5n3U;p0ip25>N|N8WIQ{1*6;Hr2aQ?@NG@cp|lJ!b-Lw}#(V{~q#O
zFNp8#-U$5#eXhCp^#1Ifo4lg<|N6GudOj~}4X;g~axU_zS>`Rhm@g*(T|byxJpje(
z4!gMK*IREU?0=BEUCt-UMt$|V@{?`cG9NcfSibvW`*8a6-0tTo+y2en#J9%<k|vyU
z#lJoMaCb%CtZm%CcNmA7=S$B$zw}hJ*P~BDytGLtIFezc%OBRYW!F!LEQ>K?U|?YI
MboFyt=akR{0LoB)FaQ7m

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-128.png b/autograde-service/src/main/resources/static/images/favicons/favicon-128.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e793c3c1c932073709989b4a1130e21de899bcb
GIT binary patch
literal 873
zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+I14-?iy0WWg+Q3`(%rg0
z3=GWDo-U3d6?5L+I#_twLBio-y(HhANy^)oFr=NBD6Od|E1;#I>cF~$*@->CaT4E|
zxy~;bw0=n5OjFySEy=CPS@+(0U2^6do9giFsb_c!Z9mnYPh%)xV@Rhr(XU?lbLkwn
zBblal_aamD{#hKqdSY?u`Q4oz{u6)htty#SyhTUp^P6iM`;{KmJidQ-V<uCFMNh}{
zt1l{k_onyR{#*aNwj;>S?a1vDdshB?b^qK)^Ka>P|1`E}KDhcxc>6DtN312h8@A8k
z^UAC}{UAWRk^S^ahskRhf5og9PrUtV_TuP!rpK)AUjOs)m+<{hYF?J|5&U<qmG>#$
z-qTiXT+R?a(ek}|?&Xi(FT-xUU;T0F<atwnmOcN`|Ms8Agqwex?ZY2y|0rch<=wEt
zZHo)%gC$atlJ_K-ZoFmivg`@cQ+ibS^#<3!*@>%M6YhKczj^KU>Y2x{-k9+3vHUvy
z@4x<Juw00GYcFfzKEM0Ko)?vG9A~OEoLQa5vf4cF-P`jUkH6p6Qa_(5YW3fsT?+cE
zKPG;y{^$^B-n8y|ID5qrhJ8FbT!kKtHQgQ8Csu~ker-NmYk%On^$h-K?(Mh5Uf;iC
zo_}_mc(uP<4(s;5&k7*fzxk~B%fCwPD&Di=SXs;VmV=TEa~KauGTgcIoq5i>@=M!7
z?~Cr)-B-2F&TMAN?#g!zd}eQse^>nLxBq(eSHql1-oDEjESMXN8FuV^&n~fgYp(UP
zb9ZvjR`$*A?6*Hz9cQ#zN~Ap)VkX#NdJ_{|kNE$;RM&8l`LqH90|SGntDnm{r-UW|
D(*$Xk

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-152.png b/autograde-service/src/main/resources/static/images/favicons/favicon-152.png
new file mode 100644
index 0000000000000000000000000000000000000000..a180a6f4b17ee75b677801f50a8defe9d9b469c8
GIT binary patch
literal 969
zcmeAS@N?(olHy`uVBq!ia0y~yV3+~I9Bd2>3=)SF6d4#8I14-?iy0WWg+Q3`(%rg0
z3=GWGo-U3d6?5L+KAn3fOrq`Kd`Gc+uBUaFj>z6nJt2BSRz-D5^9|W0EK?`&>69-h
zdBC)3g0=<YQo|Zc5litp<K{D;8ScoOwy`?W{V>;L%Qdc`x`Gr>A&EdHWv>Jm&K`|M
zK~;lAEN)W{bPTNEufnf$`44|y^=q$m{CVH4-!|U9ZLsI<v9jXu(C=4oy}h|+>(>11
zTTJeMx3A}m%6^>}dOi0}Zr<*Be`>GKegEua<-WPbyRXGQpZ!bLe~+cB-|w}n?p-(d
z6MMM8^rvu+Yr^Na@T+T2d{f_$sxPOMtj~1&T(@YRlHR3X<r7ca$^7{Le)q(~&-UD^
z@zRxif3K|b&E;q3zATcp-*9c+?v26ce^&H<UAF4qs#WuM)z^Q?<~@8mEBAKBJHJiW
zj30|c@-z0G-=DWCOS5D8U5?Ex-?kq2UtYiKqyD^d<ugJN>+8J_++(>`eYdw}<9Xg=
zuEICcAGiK9(1|?||0nk0I-&B3-;MiO=gEGsdHML6Q%(8j;<#MBchluUYi3ml+HJp9
zFaB)q=KoRW&j!Y~$$cyOvF&#JyVUPj$}XR^+#b4j?v3M#*<UyPuFtN?_;q}#d`m4y
zj&;7=yr~<F8_!DH?~L<}sotpC=qr7=>idU;&=_{hZ{f@8=k0tQRdhnRDfii)`)3Mw
zmxg@K{`=G=+g7{txX5G2|C^=%uGzX!+WYk0l6ldu+4XnNRpJzeCz%zG>r<;F`1Wqz
z^*Q7(XL?1B|3`QE_q!+F-Sa6u#ouao@@o-KSaN!GBYtLF_W$5X#dfKAYdgiS6@Om4
u^?xYu<Lgn1M>Qu6n$(Ax_WeTtvWtqBMkum+U1VTjVDNPHb6Mw<&;$UmWS$iO

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-16.png b/autograde-service/src/main/resources/static/images/favicons/favicon-16.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b73142eaf898ff019462b828ca90393090dd02a
GIT binary patch
literal 619
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*TmUKs7M+SzC{oH>NSs54@
z6p}rHd>I(3)EF2VS{N99F)%PRykKA`HDF+PmB7GYHG_dcykO3*KpO@IhJ*m05ZC|z
z|Nm!TpcVT6e}8qeECU0Bd`XaBFhk{{>W2A!3(97DRD{gfwxcP^M3>osU*0OimXp`Z
z<<`GAkW$7ZZ+91l4pvzY1_lPs0*}aI1_p*(Ak3&F&Qig^z`$PO>Fdh=n3;!HS<m|F
zdr1Zc1_w_U#}J9j$q5UD6H=1W5>t~?o<C^eDk%K?VbjM#!%rWaSy@<GD_UJyT#o*5
zJ$jHyXp&9PB_1Ioo=uaAz7(l380}@sb9vl!ih+SawZt`|BqgyV)hf9tHL)a>!N|bS
zQrEy(*U%`$(Adh@)XKz6+rZGuz@R*f^B#(Z-29Zxv`X9>*vvO3F)%Plf@}!RPb(=;
zEJ|f4FE7{2%*!rLPAo{(%P&fw{mw>;fq@~sDkP#LD6w3jpeR2rGbdG{q_QAYA+w+)
znSr5V&f`x!9ED*T8mIhEpYePe#K5e~t(VL#tSsz3S%g_w!KK0Ea0;{X<`9L`H?EvG
ma^{H45%$v!9t*tm7+#4BmV9zDoyx$#z~JfX=d#Wzp$P!iM!>TG

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-180.png b/autograde-service/src/main/resources/static/images/favicons/favicon-180.png
new file mode 100644
index 0000000000000000000000000000000000000000..301120d34d5d7936f33c3b9263728d3fc7e237e9
GIT binary patch
literal 1143
zcmeAS@N?(olHy`uVBq!ia0y~yVAuk}9Bd2>47O+4j2IXgI14-?iy0WWg+Q3`(%rg0
z3=Axqo-U3d6?5L+Iaqi*OrrIo{7juqo2TD&m35JgkUb)6@zO!o<=p{Q4cQ&d9<nDy
zU0yn@dXVZ-oXD>sB*G}L$1<Hw`T~=~Bjc}M7&c|E6<zY<;7pay1)WM6i#TR!G^uqB
zDW<*Ozm#3?Hm$Pzdd>g&uBhr8yS}d5{d#Tn+~a3Ig@p27z4h?++g(?)i*82SPrbIT
zDq5~6Z`<EHO}_FaS8uPXx*l!)_FtUQwZfYHbJta`TXjCPG<dD;w|`&Drtf`wCjVWr
zv88ig;hvSN_(Q+?m)^}Sy}Ryzh>ypG$G<nowblGBJ$Hu1wl{v&t8><0|FGE3HJ@E*
zYAp0+%e~O+bFb<g+&MdWT5?Cfa$fceox^6|UoSjVcE7Fi#F+zM`*PoX$`8H!u40bv
zG{KT=^S!0Z3(bE-?0WaNYSy|}*Y73Y|Gjp5+Kl6@d-c)}Pk6jF>i3??>-+BSW<A_@
zljE1fTHCWVqEl>HYWFBUPA<M=EcoT49$U`C8TKKT4Ga3e*Bua>SCu`ZWkLVN($$e2
z_Ut){zwg%f<VjvGdwhn;W^cvq7X{+XeNU5&cNcEmd1UYT>1XBp+ka&)x&HLw)Zh00
zYqwt33k}aLl{l_nUOoS~#c#`!o$q9iPgwdYZOPyGy*u_RuK&Aje)NZ=6NYQk!+$?h
zeUbV1-~L~v`x%<%os*xvy7Nqirn$Om<-I+|-9K6OIQOTEeu{q`DPTDNjLiIBb-SNm
zdcW@Yw0CvIq95{VjsGh?e!5=%;;pZp)8<!a-^lJ$JpSs)-@DPj*IwIoZ`b7?7LRpj
z&;NEOymtSB>rZneiUeFQxCojAviOQP3PYIFitN8c#1}_f@AsR2c<#-ek*D^`?A9}o
z$+~{k{LuMcMRsJx&t^QWkooz#sQt}*)!%)|XEayU=6!#YfBmz>=}G6#YV5k|zF)Bw
lRSS|;Lxwqd@v48!kGnmK!sf?LU|?Wi@O1TaS?83{1OT7p{)PYm

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-228.png b/autograde-service/src/main/resources/static/images/favicons/favicon-228.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cc8d19a64eab4ae8f59af6c560bb31cfd6dee07
GIT binary patch
literal 1323
zcmeAS@N?(olHy`uVBq!ia0y~yV0Z$;9Bd2>3?1Pey$lQtoCO|{#S9GGLLkg|>2BR0
z1_qY9o-U3d6?5L+JvdP$l%e5a-f3ocqX|4uUhsA}7)=l`VKQVo>2QWYIpHLOQG)RW
zj(MiLlPfb?C2u7Dd-rqSs-0gNtA3Z&@7jL<^}Wg-Lq^{CpLP!I3W_ch1e82D1XWr%
zgq&D76`NWF9GyCbyYO?~qIv6=Rmx2~|M=*SX^;O3CD+=Y{k%GJUj3YBKOZLX96$U1
z^Zy^;&ws7lCvkuO<C>ZyGwlA=Mr~Zb{m;?0SImE(|89PG{`2z7CVOWbtEhY_T+A7>
z>07O}@8$g8#?P0X=i?~yElWRpU4GA(<gY9{?d<(Ozxh<Um}RG*{hd2s5{p@O#_g~B
z78_B-vNKO#ua;?>+l1HOGG;wzpKiw)y=h+Q3BzYcH?E6cX2`c&x~lqSW&NyWcPAaY
z{MYEX;XL2VUw)RyT{qo7`zcRlUh<x~$9C-EtmuiIV=rr|ls#Em>BKC<vi;(AmPsM~
zV(t;Tj$&`m&A9yK_d(^^&wqC(ubHH<J5JWn=(N1F;)!+k`n61Y6BTy%S-$QpS7y0c
z`s3P;yK|$=94DCWmNxnPr|f^pam97|wWqeZOc33!_)hHSefgc153&kdu3CNfo9nE<
z_1)YLmItO^mUu7jZh!tU^YPya|9Af9v@ZGgapCTbyVt)y`{>0b&F9~<_V*lSJSY7`
zqW$l@lHW`IygvGIcj4Cm2lsmS@4L|S_p8aV|Lm2&Z}s=vTUXxtId{%c{^yfQ@9wcp
zNM_j?m%rynRyE5`zxucHc@mRZcG_JxH}5^RK{BD4Wv5>Koi`6Q3MOo3*~#}lPwu4D
z<CVsbw^bHbUjJIR^TE>6J*NxrDLnsqv~l)|_jmV*JvMn)#anbs|5$yN%l6lc$~Q(n
zEPH-_^U;q>gU_x1@6%WC&iKjUX7LNhf8-UedHw1^`KvkCntRW^Px~p0GkaXyJiT<@
z@kclARwbQ(p|xk;v&sJ!uDjcOKm9ke+d1sHD@E?{mDg_%ES#e_GV>owDYIh6vX}W6
Y^FBK0=bsU0U|?YIboFyt=akR{0FM+5=l}o!

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-32.png b/autograde-service/src/main/resources/static/images/favicons/favicon-32.png
new file mode 100644
index 0000000000000000000000000000000000000000..1db16314e4565f8c80bd617146658d0224895064
GIT binary patch
literal 795
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^xl_H+M9WCckk
zdj$D1FjT2AFf_C<F#KX*U}$*3z))(y!0;-8fx&791A}<MoLzx73=9lQ1AIbU|NsC0
zpMhaeqyPUkD>5n>7#K`Tg8YIR#5QEeuUOWa?5?n~Bfwx@@0}w)KRh{@%s8jMa^CSf
z?|_HYg%JK&J>I|sOA7}%=^G6i`r+C~O*|PG7#Neh-CY<uSY<sJ7#KJUJR*x37#O#J
zFr$x>?+*qB2KEw9Usv|W%sjlx1_y6ls$yVZnCj``7-Dhy?S!2|O%4LA;$i{UOI=)D
zTtA9k=kEXhfB!R&1ku@&nGWp1vB9yzJp!int&fc^eg3=P;gowhJEuA<TwB_Hfw#K0
z)!}uci|U6(i8B2hCo7D;E}C+et7Qgb4daY-C!L0+qHC^6FVaoie*PxE%T7^^mSZxU
z%P*a`QSC9D?q8rg<M!T)Df2$m>@$D4et-05RsH2#`Q(dF9yViOU{Eb_jVMV;EJ?LW
zE=o--No6oHFtpS)FxE9R3NbXcGB&j`vCuX!v@$SI4=rj&(U6;;l9^VCTSFMfDSHM6
z21$?&!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lgja<`lmsP~D-;yvr)B1(
zDwI?fq$*?<lq54SRLpt&iHD;wOhe<8|LHTHPlFhkmAUnjxrLR5y(fz>3oE!Zm>f=F
wR^A+<aQeoT6GzS*kvYPCy1`?Cmmb3_alw*LPNq{C7#J8lUHx3vIVCg!0D@Kxj{pDw

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-57.png b/autograde-service/src/main/resources/static/images/favicons/favicon-57.png
new file mode 100644
index 0000000000000000000000000000000000000000..7a6521242ca40b9b16227ae176e0eb5b8f8dd9d3
GIT binary patch
literal 436
zcmeAS@N?(olHy`uVBq!ia0y~yV6X&X4mJh`h8~ILRt5$J&H|6fVg?3oArNM~bhqvg
z0|R54r;B4qM&sL=XMGPl2)ONcyz}tHMb#zDKI|n7vMqd0>;+HRWI<d_MfbjU2^S7|
z6_)*(9Gl2pduFoR#B}#$`}b9{Cl{?sc;0jGf@)`hr&!D+*6Aq+RU=WE$5dUjI$pS#
zs9)J8P}z1O)$#ta$*a$r{#!V655oqw4W`Q61@j8K%o*0Jac@y8Ucqa;o#}&s>-y?6
z<>mQ;mXoSin5o_N-(JQ&@x$)U<5#~|MBcxty1pt+aYJ)f)%DeWxf6E1?|D1<)|`E*
zE$3O(SubR0Y!5vCaaX!d?_A64CHId#F-kreeuBLrdU9;T$EUwG_uPAYk-Nb?Sa{mh
zrxnJY^LKvQ=i1{f_c>FqY{s0kD$C!$nRN94+eN3Z*WdkOS-m58c~4%D<)m`MphKIl
zsoS&rGu!4f@T_aA|9JoEev{1)Ch6=@;nq9Z<h==l`DYTtJ_c#2cjirAU-}ss7#KWV
L{an^LB{Ts5n-RPW

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-76.png b/autograde-service/src/main/resources/static/images/favicons/favicon-76.png
new file mode 100644
index 0000000000000000000000000000000000000000..37a35c74a07f0a276820ead19640ddc6a8e10274
GIT binary patch
literal 628
zcmeAS@N?(olHy`uVBq!ia0y~yVDJH94mJh`hU3!%wHX)~I14-?iy0WWg+Q3`(%rg0
z3=B+ao-U3d6?5LsJ{!p7DBxDD!+-C|3ty)PFMOR0Sk5*G7%)342pcjxDKMKhZFAF*
z*?u$iUem7B+Vxp{)+O%`tbY4*p~BAHomJ<abSWkZa5j5LxExXtVw-5t(c-AWqeP0(
zlRZ{8OVy2MxBM$hd$#Y^Grj1=W>0o(ovC}~?^+4t{_i4-ZlC<wZCg3}U+{$by}?({
zOq+N3_3e`K`@iOxoA1{Cw5&R5*R4IO`Eh?O`L`^b`sC^J%M&hH>@gB}<!$syqH5n}
zK3nOyGi!7%PMmpn=FL*Y+-<q-MYBuxmI?jhE}q}M&uW^Y`O=!dQD3&4ooe`fx}=-u
zG~vGoUjA=cYQkF^zvk@TwJOJZ@BA^jYn~LQn0+|(`Hpw?ag+Xrb?@LZy}d_pzy7k-
zzK3R*YM1{0{d@cBlxK<C>!lS^9?$Yl-?BGr_LScr_URtH`aEs3&eJJwy&LuZMJdia
z{OR1!vht_%oLpr46PBLdG_U*hoND1kb%JwM6@}O=)1nJAIOp?beA@T^PT!NCmuv5z
zR4O=g@rBu!nskw>e|@hXy(ksY^5m#I^y#~2ihAt3FQ=QW_PWo%lNRS&Bl^o++C`O<
ioR~n3LKfrS4A1_bdh%}R!V(4s1_n=8KbLh*2~7Y?_!5Nx

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon-96.png b/autograde-service/src/main/resources/static/images/favicons/favicon-96.png
new file mode 100644
index 0000000000000000000000000000000000000000..44e042030dd3693bf8686fd734f317b46b65abce
GIT binary patch
literal 658
zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RWI14-?iy0WWg+Q3`(%rg0
z3=B*zo-U3d6?5L+IhZT#DB<w1UVt@#p?!*jmPZg{fTxDyO9j;(EGrt$8g9Sf==EU6
z?S7dF2dt&5BaT%`ezD6Gxf$1gz3$Yz3Vywrl8^R$+MF)Qkj5~BF@ddtI*iv$QzorG
z{>~=6-tzo&ji-BV&7WWF%YA!$@89>itKwEKzW9&%p8JvO8c)@{DuZpU7F=(B_x<Vm
z{qtA3vl)M~eDLY!;foGctUG$oTr%N{oTdEe%S+R&-%MX_FISd&Y_IUy&S<*boARr+
z&4rR&(#j5+>Vc=0?XrKgZ&$iOcDUp9&A0PsUpsxeePZlaoAj$@`~U8In^v|vcm6i*
zm2VaMHvQc?rCv@jeCOO(7iR4Dd;NLZ@ny5}@7{U7`T1G-`KxwX_XVD3jQ`jEp26^e
z=Z|QYnw~TK6MyclDsgyyj`8zrb-{AM!ob|^=PudsPy88hclU1p%WrBf?(%=px##-Q
zj^iiZ6kl9*-NyF&%Z@*C48{y=t}DKH^72+)_nB>P<N6-&+a8*It7`2XJHEA7r^l_&
zoxe=)_4l~<YYQtlnj{&ny^gvNWjnp|bGGB}{pL37uUBV3(tm!)hUFj+gE7My1_R~;
fRANj}dc=OTy=VHKB`Jvv3=9mOu6{1-oD!M<+rJn>

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/static/images/favicons/favicon.ico b/autograde-service/src/main/resources/static/images/favicons/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..d5f51c1f3bd1eac0a7d135342d27f3d1e73f027a
GIT binary patch
literal 15086
zcmZQzU}RusFfaho3Jfb$85qnM7#I{3pnL%ahI^_E3<3fWeg+EzLz@``g9ZZwg8>5r
zLjnUtoB;$>K*T5>4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu;sYKOpoEe3}F
z4mhwB#J2xNP<asu9~=2!52^;L2VKp74yZgfyKK-^6VLy@f`Q@xe;haiV$S~)Q277|
z9~=392UHDI54xKF3Q&1$c6~rsO*|j&{yhu~|2xpIIm8^Qy8jQF9UwdFA@-0%!rfnh
zTQ^nR{{y!@<jDN5U|;~peKrHbe-9+=iZBiC{u*c+wqaoSFUP>}pAkt-3)GwpBr`zf
zIYZRI(+`#14>6sA;r|4*^oe8--2Lcj7nCn#U?xE5|1;3cfu?O*x&OZ(0|Ph?3enPK
zGsHb067K$$P&E@782;afx^ops1p~wXFdXJU(>BfA4=aC&N&g-Yw}Qz3#!&Y^2JxV2
z2NXYq${(b7h3KS=gy&ySyo1s!GM0sy4G;fnXxa{BVEDfg>i$DeHL&t?5>yScInoRa
zG!K7J*r8)+Si;?pF8`i^;lCA{`_a{a_z5(0e<U<bgUVra3@iUr7#RLHAYo8B1kxu8
zaXX0opNPjCP+Aj&$|L0~kiJno8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Auw1%
z;6E6EdfOnz;G_RB+s{8x&%gkt|1&WBtGAzj9@J}w(anqx!2H7uA3^lLdK<9(KYNRQ
zFrS&R0Yv|2?mqygLEZ%EA0#wrot6Rv1A_zdIxT_0k~&7+F&YA+Aut*OqaiRF0_Y*|
zA2jZMgMr~cG6sz!Ye2>HQFXx8gO)ENN&OFpsz){lI<JMK41)<D^Y3L~_zxOG2VqMF
zhW`ejRty8fe+yJCaP^?77D?(qXig2(A^_=!VL2oPIGF#X7#RLvU|{$k0<{xlFF%wG
zGB1{a0X%Qb3o!t$9yGrJQVYVo3=A;)A*x6x!SjnC`#?AV$$k(Ygnu(I{Le#}`~Ltm
zd_Z!bc@(Js5h{pd{g-E8`2T}};lC#X19<)&GzZUwWWN~$!+%Z&hW}F;82-OvV1TQ4
zMpI9&{jfQ6*t{KRegoP6^B5TZgVM$w28RDfkmgvHLFXz!>V3!$|NmkP4F5NvVUS-y
z;R2es17VO|tqcrcwb;}rGcf#jhnPWJsE?`|4S~@R7!85Z5Exk@03NO&k@%s%PyXlo
zegA*I-}nDd;<5j~-|YMUBcbj8kHj_-P5S>IG)@5;mH>@aFfxEh1_lO}krf9+%eSDl
zC*ZavsC{Y+X^Vk;02YU}Nxh)$9~Y1eD*oTZ!0<ncf#JUi0|R*7mM#Ose`W>-usEpg
z3To?u*5!cM@~C=2Jn(uq(E2x!{h;+feGCl$w?WtMR6^U$J3uP2<NqKvix?RGgVqIs
z`W5pT82*FI0EsVPVEA9g!0>-IcD<vb0~G=|SIhoqV7Q&n!0_We1H+5;NIeixF9Zn#
E01+fDwg3PC

literal 0
HcmV?d00001

diff --git a/autograde-service/src/main/resources/templates/error/4xx.html b/autograde-service/src/main/resources/templates/error/4xx.html
index 2fcb34ca..a232ac92 100644
--- a/autograde-service/src/main/resources/templates/error/4xx.html
+++ b/autograde-service/src/main/resources/templates/error/4xx.html
@@ -5,6 +5,26 @@
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <link rel="stylesheet" th:href="@{/css/error-pages.css}">
+
+    <!-- FAVICONS EXTRACTED FROM https://epfl.ch-->
+    <link rel="shortcut icon"    th:href="@{/images/favicons/favicon.ico}">
+    <link rel="apple-touch-icon-precomposed" th:href="@{/images/favicons/favicon-152.png}">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-16.png}" sizes="16x16">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-32.png}" sizes="32x32">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-57.png}" sizes="57x57">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-76.png}" sizes="76x76">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-96.png}" sizes="96x96">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-120.png}" sizes="120x120">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-128.png}" sizes="128x128">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-152.png}" sizes="152x152">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-180.png}" sizes="180x180">
+    <link rel="shortcut icon"    th:href="@{/images/favicons/android-chrome-192x192.png}" sizes="192x192">
+    <link rel="shortcut icon"    th:href="@{/images/favicons/android-chrome-512x512.png}" sizes="512x512">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-228.png}" sizes="228x228">
+    <link rel="apple-touch-icon" th:href="@{/images/favicons/apple-touch-icon.png}">
+    <link rel="apple-touch-icon" th:href="@{/images/favicons/favicon-152.png}" sizes="152x152">
+    <link rel="apple-touch-icon" th:href="@{/images/favicons/favicon-180.png}" sizes="180x180">
+
   </head>
   <body>
     <div class="error-page">
diff --git a/autograde-service/src/main/resources/templates/error/5xx.html b/autograde-service/src/main/resources/templates/error/5xx.html
index 96134cb4..9b45e1ab 100644
--- a/autograde-service/src/main/resources/templates/error/5xx.html
+++ b/autograde-service/src/main/resources/templates/error/5xx.html
@@ -5,6 +5,26 @@
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <link rel="stylesheet" th:href="@{/css/error-pages.css}">
+
+    <!-- FAVICONS EXTRACTED FROM https://epfl.ch-->
+    <link rel="shortcut icon"    th:href="@{/images/favicons/favicon.ico}">
+    <link rel="apple-touch-icon-precomposed" th:href="@{/images/favicons/favicon-152.png}">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-16.png}" sizes="16x16">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-32.png}" sizes="32x32">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-57.png}" sizes="57x57">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-76.png}" sizes="76x76">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-96.png}" sizes="96x96">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-120.png}" sizes="120x120">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-128.png}" sizes="128x128">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-152.png}" sizes="152x152">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-180.png}" sizes="180x180">
+    <link rel="shortcut icon"    th:href="@{/images/favicons/android-chrome-192x192.png}" sizes="192x192">
+    <link rel="shortcut icon"    th:href="@{/images/favicons/android-chrome-512x512.png}" sizes="512x512">
+    <link rel="icon"             th:href="@{/images/favicons/favicon-228.png}" sizes="228x228">
+    <link rel="apple-touch-icon" th:href="@{/images/favicons/apple-touch-icon.png}">
+    <link rel="apple-touch-icon" th:href="@{/images/favicons/favicon-152.png}" sizes="152x152">
+    <link rel="apple-touch-icon" th:href="@{/images/favicons/favicon-180.png}" sizes="180x180">
+
   </head>
   <body>
     <div class="error-page">
-- 
GitLab