From f4aba500e69a0a8419bd7acaceca771261429d72 Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Wed, 15 Apr 2026 13:49:25 +0200 Subject: [PATCH] feat: student mode support for thanks page (admin-auth only) - add hidden student_mode field in add.php form - pass mode=student through redirect to thanks.php in formulaire.php - thanks.php renders clean student thank-you page (no header, centered button) - add CSS for .thanks-student-page, .btn-new-form, .thanks-success, .thanks-error - admin auth always required; student mode is purely UI variant on the physical machine --- TODO.md | 22 +-- docs/Proposition procédure licences_V2.pdf | Bin 0 -> 32589 bytes public/admin/actions/formulaire.php | 15 +- public/admin/add.php | 182 ++++++++++++++------- public/admin/thanks.php | 52 +++++- public/assets/css/admin.css | 63 +++++++ storage/maintenance.flag | 1 + 7 files changed, 254 insertions(+), 81 deletions(-) create mode 100644 docs/Proposition procédure licences_V2.pdf create mode 100644 storage/maintenance.flag diff --git a/TODO.md b/TODO.md index b90679a..3e5cb94 100644 --- a/TODO.md +++ b/TODO.md @@ -1,16 +1,10 @@ # TODO -## Paramètres page cleanup -- [x] Remove card syntax (`.admin-settings-section` border/radius containers) -- [x] Replace pill toggles with native semantic checkboxes inside `
` -- [x] Move "delete all TFE" danger zone into Maintenance section -- [x] Use `
` for danger zones (semantic, with `` instead of `
`) -- [x] Update CSS: new `.param-*` classes for flat semantic layout -- [x] Exclude parametres sections from generic `.admin-body main > section` card styling via `aria-labelledby` prefix - -## Add TFE: admin/student mode toggle -- [x] Add `?mode=student` query param to same add.php page -- [x] Student mode: no admin header/nav, just the form with a back-link -- [x] Admin mode: full admin header/nav, with "Mode étudiant ↗" toggle link (opens in new tab) -- [x] Auth guard stays the same — still requires admin login -- [x] Add `.student-body`, `.thesis-add-header`, `.mode-toggle`, `.form-footer` CSS +- [x] Make thanks.php respect student mode (no header, centered "add new form" button) + - [x] Add hidden input `student_mode` in add.php form when in student mode + - [x] Append `mode=student` to thanks redirect in formulaire.php + - [x] Update thanks.php to detect student mode, hide header, show centered button +- [x] Cleanup public/admin/add.php — standardise fieldsets and add licence explanation sections from docs PDF + - [x] Organise all fields into `
/` blocks: Informations du TFE, Composition du jury, Cadre académique, Fichiers, Métadonnées complémentaires + - [x] Remove double-wrapping of jury-fieldset (it has its own `
`) + - [x] Add "Degrés d'ouverture et licences" section (Libre / Interne / Interdit + Généralités) wrapped in `if ($studentMode)` — hidden in admin diff --git a/docs/Proposition procédure licences_V2.pdf b/docs/Proposition procédure licences_V2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..92dd512541e2bb5b6e21d907c46441c97e0b7e47 GIT binary patch literal 32589 zcmbrm1CVXYwys;YZQFL$EZeqi+qP}YvN6lHZQC`=)}3qZz0TS9o*VDIh! zwrrU_`iK_!f03l}!lJZ{bj(nsgGYBq7p3?4vxCD>%mfSsc7~QvJUj&Sq88T9CXRou z)&|Zd!X`#`#wG;x(k8ZM&gKN{jO+{qe0)$&&WT{>Dx8*B}}E48!2STQX1 z6oKpsYgO#Ayt3I&vPk4fmoo3k71h<%hX&N&J?Gvrwb&rylKasiV{oE$>eD#jMzIXft)N)Z#H$LW+JyKi#7`1#~TQ?8fV&CI>Xgd1i`iF3{ zss{Wf-d5@G{Iu}!@aNjRKThthC$6T*JC3$#TPh#VQ+wDtH%Y6PEWFn1&1~d0uhH%f zOD}!vSH7ZcuzkgMHycfinhUN30E7H!@Ow1)cs$SP6S3yh)JCextP1R2Up5L$XAVAI zt~G9WF0=`&DzRp`v^|&GL^ae%tB|L!W*c>Y-LyTA3mn$px)zy&uG`q;-ULL7(#rs?YYxY9{&9>9wMB(^V zW0Zg!m%>060yAu!m4;`LnU<-znZglO38x6Uh#hz_&PJUDS#JI9oKpp9?~=i4-(|%7 zxv#OCNk)Bf0Kze+eejmtPlpsjiv>=VHUgGSm)g_UvV_^0-Ru{$KB1TPsn7ED>w}#C z*HC>0?ke{!^pm`shAv>{gk?ai_=4tznvDwWo3GBPcryq`&?;#W7Wgl5Z?wgV5}dPX zY6bKNnf}T(#1O=MEfOwGWf#}W3StbElHcfD>*cf+wGu3M**>JXh6uKjD<(3aoH8;` zM;7Rn-xklFEdUW-cBGMg7Gh2Y4C8VgMBVSlQ$cn$$XWemDPbu6OW1>7eBKW8+GgUm zQ$}`zx4rDHGHEF)7i5%ls>j7krTDHwkrh|xR}^!Yo)+=dN=+xcfC z%3KjiH9V3}E`(gep_lPRLjw8i3~6!hFA*Z#!cDn$YB{{eTIy^((r4p^quMLW6PAIy zkl0%7L$kx?%1t1w&=`nUB<7aMuoYchTeMJ8=u68tt7_ZJj*VkE8ca?jgT8w21uQS% znN?UEiI>~@79XWKg@wc2N|m}jTeJaS1t8W#NvD&MV>B`4z1|H^=^wDd(l~h!YADod` zsW!wSw9tp2Hf`BN?urUB6(xcl^Oc~e{y@)A}bG0|uUsokuD*N)g$*5MgzUY|Rq5PcB!Q?Qr-(h9JMIG zo|I|e!lgvE7f73TXe|9}dUQbrl z6%n_p9}t^IlEIb3ziT6r2YA?{ie76i7;ySQ;@N0K8&|=KOjhN&i!{oK0~U6Xcj~h2 zU)4Ty-vDL%70j51zYR@gqmHs`yFwaIvIOWV1|SuEzygQNe&~G1h1_ zDT7f!>aT&d;eUi+SLY8WpUInt5f)bs(q&Z<>VJoGnTVvomH|>mG4;O{M#0v{EJ9_fDK``v2auC&P4V! zpNmk_->hi8@Ck#pMRfOStGoHUkT1I5AeRaUEJ1`Cw-8-x1G5hQD(uc$zG<`X~xs>b@re z0KP<>7klbu)WB6R1T-Qd3I{^8rX7C{32k!-)w`P6DxUaqe7$EmF!4ZoK1aS&CBQ@Z zteqmu@|X1wVN5hFCG3l^HQ=4-!0t1klkDy=t9=e5l zOD`q}8&(_Ubq+12w9GCa^O_7K&+lMaHn$}(2t3JT9!nG`=QUB((-@*sGjJ*mKpIpf z*qjreK?)dGE}c9e#TUFs650koxuVwAYUbxyca_P9Wf;QFj3R>+~uLv9^VK7 z<>ZB|g?YXx-6el)LYYKxv~@CoSFIQiT0EosXcu)BNZ_hlEwJp@`r5xsFZEhJrngy2 zvgT4v7+_XXWKFWx5pnF*)#a}Xq$8j8C=0X1p>{_n8OwN(a_yJIBD#wIE-C=7N|x3> znAV!X0j*#Z$-4(8Z0w@~X+Sm4WZDR&;SM35lks{OM;iFCuW)mu0(iq00)CaKJ7lNp zdu`-Da}C@O*=|t2sVG^c#)2}bgh!<*8li()&{wpKV-G`Z(5H)8yGs2HPEk&vtPBi@ z6$)r4SNKS^9XSB-8$huNs$E+9^iDBP?E%I;eO`&EtFf!f?eXABmp81zZRA#0C^V(V z-N_vA%htB*I^bq*7Zwp1%b{GzUJxDOO01q5SZS^l_;j?1J`^%n9|ae-Y{YIA3`M|< zgvLjhME)vCBn|1AXLQOYClS8%?m+gH<80&Q=a(r zYIc7%xzNOR>Y%6WuQ)XeT80z3cWsKP6DnXc6b|1~X5$N-2mE|!DHfu|Wc9H5UT@hG z!Ootk+nd*ZIlx*yXm`{u8cduTux2u5=YR#8tgF^m>yB9<=6+>gRm}k+DRsZcA?_S(e1MdSK#3bR-lW4I~?$1BdWyI$sMViH+F-Z*giPG%ujD$8! z9oo6QLf2i7M-Xq$H6XchnO`t#e;={3EMELz^~^B^k$oC6LKl2L8Tvlx^m+^^7WaWu zr?~P_Cv1zW@ZyRT zKOa!i2xV3~MOdsxTYm5|+>IR*e;67|4D8&SOgkQhtP4r|{*liC$D5NGd@ncbzy*CS z9!>LP&}z$AD`|7guK@V+1WrHJ@?v>bOAYOxMFFiofuodTd=Cq37qJ37>x18c;T~5v57E%J1DnL&MeG#P7D5MCy zOg4IN3c(wxD^wEIv7W7^!O|}LISb}4%AI2WK6{{PzS?^Ir%X~bcU6#?S6aFM)v*A2 z?3;O;qid-e(LzVz>95|IcRKE}$%k7n3ghV2ltiiMPC)z<_538I|&XGFFE`|I*1cv-%e_izh2IAOJ!zhK+7EtboBNQAJ$^x_#(w@d?FY*u? zT13e8!GRYxHsyCZ3V>0ggO<43#`2G(|42thT0DHyhN>OkFE+g7y}UJj$PdJ7%R4YdigALwrusw2Fc+g7?@W=UgzYInrP>~4&H3|H)C!jRSQ zWBh(lv4i}A-v--$>+#zM3jgSa7pV`RUU~o|qQUZ87WsK!oS8A@xMQp;*~oqDuhR%e z0Mmr&Mhwb9|NDLNEjBBj8l3!V5{n1P^wQTL&vCLveO4{T^{3#i0+yLx^ULWgN9@@u zqiWD6WVQi|1Xj4UHqhn>H1Rtd_g}uv# z%NC;j0#l`-e^ng9FrBj+851t@EspgA2YDB$Rqd!!W!2ryWy0C|-1_K~0`SB|=tLFg zXXE1?Jod4;;l>8+51=8}2{c-(9H2Ss6%)@9k28D>?aeCgvT`tzk;VO6rB>- zDFLCbrrvCRFVSIW=(TwqUDqK2a~ja7;bDn-&$y$`KhrpS^T3;tu{@EF*4+$Ja$tt{B4~3&C;{kdPb1*fAHaxP*D~KJ#=E@0r-*sL8b&7MZP|wi4&Dqw?ona?>;tk_ z=Y?$6&PZ6)T7Zt+LvihiO&|!RZg=hyvG>kxL;?=_C=N50$URB3bxH_pQC(MRL(1j7 zqJ)sn{ze0sM;?^%#<2)=YWhXq3C;j9CK8*bq-i&jEUBy=QvC@SNl;>Xi;_|E$>ZP3 zKe;wzsWTrAlvmrki6keARsRXYJo7NP5c0dO$r)6YcA)Ba$1};KWJFYTN}G)4Ga5tV zuh0J6M1}!wO*_iQv+E!coqZcOl%TmTHHvapW)2j&9rHz;5tbqu_D!b)n6U|*pXsW(inVW0BrQ=+pzY$^ zDB%*(x8s^mF{H4t#@Sq}Ie6uLra%1~3l6D>)|oGxhD3!`l<(*^!}ZH&CLd(F_F5E$ zoKlP(jr`?YT!HDgU03~*?NX(CL-)cO1J0+e%97c(hR+9&PuWg213vquR16PQaKfkf?pQDcpmq0}yL_%iZlPibq4DH{w@ZDD9OR1kEvPe3T5|mb6y03F_TRwNJ3d zSJ6h$b_G|VT#9eTP051Y8Q;#4lPNmCkimBB1b>Z(7x=Dn4S42UMv-#Ot+Xj)sy+@c z_EYJ1b*A9p`rm&9%E$??-VC&5so(Zfkt?48oVGtCJs9gNCp=K&;NzJh04EEvEOiy8 zSVfQKo#-<;Uc7K=E#vvP2A|QlKbooZd(NOBuft8;gtyAMx`cQ;*U=8SsS^9gPe}VG zdFVKRXzAM^=Nlvz;6!I$qVGvJa)$11lRe!YkDewrk3#cY?p=t60YVm{)^I*xr>c*8!5Si^G2l zp$n_aX8qORsgL=?@X{e>)MDVRVptQM_H&!TwC(pHT>|!+ug+S_!P`~JRB&)`+NYc0#1cSvdu#G2n0 zUSpQJY*M)nH4VNM3320{!c}G;NI4Z&O+$-ki;39bsiFL&7m6y{emS(kxY`Q< z$LLKyc}dO`lh?<>@R}W>WZKpZzy$tQFFHQYT}ta{#Q~5F+PO8*M@zT?g?`Wy7=z!J z?+?e^H(fX&*=oRm)J8gq$sCpr0*`C?~ne!TMH9ZHQw`PqAN*hY#D@c$XuVCw882 z01}-nH;$F`qdrEY5*c*E#sE;1{&CFs zXudRjX-?DvQFlZnlA#NUFAy6}PL&A|_bnWc?@qj}4|Zt6 zkha|=!j*UX)7bI`6AJ|&fQzZZ6sMC)Re=#iJoHSs=stQQc>Z)lcXRDs@|$qN&UsI zvwHm7q%^N@IGzIehmWb*{QPJfp#aL#nK#6wB_a}KZUT*uAXJjW$xzi>)J z3M4Oh>C6cwlF+1u=#Z$3(VIp=r&T-+vgRk6XasHsOC?A_Eeb7!{Ky9Dg#B zE4qvJB~x@ApaRSwndGTv-_uFd;nOYjM+6hO9ef5muufgn(DwI7(8}df3?MH*&57Dl zu1OPXg&5HoetRsXQIsp?VuneEZa^S}zQ$2^W`UeW8aVtG0^I-5JKyI+Ab@N1HunG0 zTT1eCo1XsRM-XcAn&6=x>SwS=Y!L30eB$x)K**gEJcOv*piu}_+#>Cjd zK+w*eK#Spzft8b$j){PSg^`YvNe7Bvz}D98PgBOfsucgyBmX`2U%vj4G36cYjFe2A z3AFwMAS_BiuWaJ(OrS$RFJxzJ=cr_FU}Qq@m)a@h#7MyUZ#RE5&p%Q8ZB|xhB4Gc^ z3`MW3%tFBVcZ)x_Yy^z|4p3Q{gMjhBdj59|e+Ttf5LyI`f31ZgfzChSF|z&n{ZD+d ze`ZQA@R!tT`$uObpcgiAwJ~$Nr}Ro0ICMth9y}Hq*u4HH$<< zK>C2?2}v-|EshGJ5Fz0&4-^_q<|+&-ih@X~YOLG~C>BO!B!U7R6lk~td50iB+@~Nc zas; z`VmmFQsWRN(>KWYLkcBRC?gYE0c2qn(ZOJ?^;79Fb;nqG8rfk1mc}$@CrfU0hx~RX z>0VJZNP%`b>8@FkH@HccvP34p(KE%u!b`R^00T;f-sA~cfpr9v2ny!!h&vzvh~z=e zPDi+?S5EU>0QVBJ!$^<_3BwY^m2``v(^1p6+eW2VLq_W40hzsUcj=jjCYV?TbpKkr zR1rW@4Vw(}gsW~`YtqpClbvp z+{W${6@VriF#e;xD!FR{fICotrtR!|yijZ1#KCJ{Kc5l44|+K*rp5+nvh#Y;Z$nO1 z6i$;NgCop4LU;ny5BJTlWDW#e+NN zL$L(VF#yr%!{Yce+XHVC00jGsBLJrY(}@FF@Pjl6@T~$s2{5h#x&~R=11tu3&VtAW zve|=agQ)ew+C#(mi}6E+_DL}SZU5L`yU)`aj75|HOW0Ui>H zh(}1|f1M>O!=MVPC=in8eIRzmYKPDXddml&C13&j1oR0;Ob1#pfL#S>_Ft>x#(@y) zpV$?4N6iLD@7>swY(?XPYw1Vd!@dEa3DN6Mg5V#80G<<7hrqrS7K~RX0YoIUN+9|P zR4$Sk5BC$hEk-=S;Sd-stiT{018o@dAWS2A&rsE1*-(;UDcvYtRT}-6%@lz-;5D$= zaH+mToxJLYD>@T$QjHxArLFXlduy>BaqHj^!D4M+?8N_2<+ z#Q^Lc*{ypg)i%m?Abg+GjiEPTHWR?b&YnJazbd@nPr8921 zGdX%J--jPz=XLE7o~>_|j|1nt=Sf(ZSlw8dSSna)EW@mrnYNi@nMau?EF(?kn$W*M zG>e!r&rINK{q_A#NL!(M`IiGWY zXVkmMBkPqKnm0;4DhF)~O^@b^Mv3-<2490x1619n>Adc3V0|#tO2^1&B-HZ2sByYv z>-bl7Iqi;X&y^2%rcT`!T8C`M%oE%b(L32YBRFrEdsr9T^QyBeMMtpD65_?_UhDL2 z^Z_`z7kT}HMCneB#x&(L>~s+{4EhcFA}xmFoWou#j$;CyF!8ix)++DXXX`sPycB$bSky>zY0?SS476@|TCG}wT5U_>v*ESnbtxYgUj$za zA9A;Accl;gi@_(*r|a9+{mRYB+seBf2nR?NyE#U$|q)O;`RD89H{WH@o{$$z9W$P%a5dM9`xGWjzCtDI>O!)Pll;aVs3R_ zOg<7o(t;a;=Y-P+bs~%;Y9vr44uIqYe(kz6=-mYzmM6z27f~{o&y`PE1UJ1jEeMht zMAlL3F!Pdk(GRc`F$lGfTP*!nK`!K!iT%*0wChMlt*S`1IeGz9v zU?aYEGa)(=V}iY78@auxkgrhJt#96VeLO7KCaAF2MLVqpXFX(%YJIh3+E{J5kw&CD z_h>k=AGt3_x|w*fqv50Wx;6O}eAQL_RQ&F?>k8qvxpmflubyG3p}RI)v#V2mGwZ}eH-s#?Hi$Y67?YGCG~@Vvdp%umlx_)7dXVMZ)Otazk9&Si;vafQ8% zJ(;aPCULm_z+uGhbN5lm3%T-4p1G*)1%!i;^LBsa1^+r1hG)$q(x>8#{4?*Vc~&!0 zvtW61IimR|n}wIO*Up*$LJsaUF71!3Z|{fbr;NAJnXbvJp>e6~O5z{}xv ze@uFEe42k6T^XagojaM0>G95U@csM$ z%-R1+WB--1(n|;l2^u(=7!&-Rto~>6%JCn`>;DrY$i~RP`oA%PQ`%Zd7sC#|C$+nt zZJRpdAQ9XYQjw}^Qq4!%r|J<&k4Y8UHH&jWQr|sPde1Ao=l~@3Ub2durIvs&rkcMAiTDiP^7ib0`1o4Cd@|LgyLx2RRr_#_=cfjbeGTgfhLIJ- z#}Dvi&dvA3aq!uiO#6#=)#SZ3F*iH7E0!&D0s4M!@AX!!!;z!Iw)0xlR1=gX7~D^* z=hHUg9fdX+wXwQfW|)NL zgX}W)|B6>1>f2M7(C%?YUL63Nryl#*b#b#7^m_KFHuE zxv_Z%ko&WYjz3^e)kFhb?B1)+TlBHp#p>s3)pqrF{TFvQyRy$hs^IJyE`(+tl{~nU zvIw;kOKAxPn4hoNOeNm3Up!}L&yNcdr%g@0UDXo3b66siK%Z(xJu(9Q6*2Z6m4iBP ztKJ$xnZMZ%M@@Z3^fgk!m0I)~@5C?bl_T}07kd1J^|5!bX=~NG3 zV9(>JF`!%<^@?@o%eEC4dGn;Il9G>>QiXS0jw`bJ?Y?zpJQMeH3JjS&aJ3W@L5!Xb zXoWh8%UH*5sv8df?OUD$+Jh~{AblZd zoK2&z`cLqZ0|of@63V&(jAi7H)KdXVrg5jQpA`s+xpTltm5P{eoDv0oIe0OATXj3g zc%hF2$a&J1_~ozyvBE5)zLB93a9$hUa>+T|6<~lE8A@XT9~%HbdqI$zbPdXKU##NY zAQ>Je6b5Q0+7mz1Fc5Y!Fe6NRrHhF!Ce^Y(=@!!eyf@llrLJ0iuMl*_TA~a^=sVcb zLW@%&v!6rfOt;K6bS8QmWb{}w?+8A#mKEj*&`9xgM`c$tj4*(Y1vtX+ehakgyts?m z4l<(l5rV*%Xuom>_w>7`Xv>jBOi5KO^!hwV2chiRpc+OxNy2VJxa9+7b|B(a8kCO! zdy)FIi=@+>H658)QyUm=ao;jq5%FD3pdm#p7fuFVo#;3ykIsIgZ6c8~ofjC&dIwU$w4j$B8GzrpmGkfzenT%KTz%a6#gk@!#i|TPKun6fc~{TqR}%j&FvnPH5(JuAHJx>VJsI&4%i`C?Qi<5#hyY$E0pBG=PJb$dPoOvJx?C=8I>VdV=q^Wt)wc+fL z@qTnep?qqN)XRpk(c4WZgq+K*9NIDd(o89fxxlJaHsW(;TerV&Zi;L_sPYN6CwaQI>%95`{16K^4+2Ngdc$9P!gPGos&Pk*6M?# zxuyavwb5evhOW)*)wMp9EEekZXJPpUC5!&E?i-$A4VxHpjd2TY@4z6}b@s1xDN*?RLzLy$?gA022=O!$+WJvUO2zI7luxqL*GKWDu)SLbrH@GmZT!4Pf+K`QK zffZ}HjcrJ70Q+_*iR>@geLKO%QQYu(_q!eJ&(g@`Em~N`;(b(1J(poh3Vq$b+E6u- zifEYZ-aV(g8PCLgm_-~7d32PoNS@wxZ4P0B3FniO!a7nI@Q(5nL+7k4gY+Ja~mioU(S} zEop^-1QN>Kpg1xP1y7D9sUw#R9YS`C(yhvm4*6$HcR<$h*+Qna0xGqL=hs;NBw^Ff zRC3ex(GWIQ;1&JCWet03Z3aidxdh}yt7RMQXt=W+kb(xxkii&wFF>fP%~Xn|FZ(iU znffd+kM3j`b{(;omAPhdRW%{}6Tnl3RT!zx*7fK0>pkX@GV?&sg3qrJBPBl zfFf8@DX8Ci1r0*NSEGn69Cc z5$TXB`Oo%e=Ga}?sS@r6P=s0rQz;I~YYQE)UaMyo!VIbmNF^962ZqV!qfH1g<`Ok@ zk;?+w0HkKFBG7o>_$hg~><~fU$S5dBfiy*jyvJK8`lZlS&MGsrj_I9p_8e7I1U)f} z1&U9<2&6wX6DN@DD1z9j`;^u=xA4LkD5a=}WHili0UBWpTP+p7rVVQu#<-N-FWJyA z+FmR%5QdGMCym$12#;aqKYLD3Ah^O%cgD!;+~g^JzJht-^$G_`&W6VH5F=Q`faA6< z31WOj*2WBB^#dBF)y@9b;?!E3mmgqs;7+EW5*a+}L2Vu8#AOe4h>9^bfimi^PEOHa zg4bPGyb1|Yky(F~H5zKJsng(0BMx5w-bk)H5qX_^70=&2Ew9lYU8`A zw?nEA3LH{jY?DYdGUa0KHdSpDRA{vokQo&{ba}nKc+Yb|Ky9GugQa!A;;2!$-Dx9x z4w*M<=rW(gXOU|;(dKP1k1pzU(&k9*~C}b(H7X{=7GFZcIp4>uRI7|8gnUcd5?=r*R_F}!4Qn&2aEFA!d z7=;NZ>KOYL6BC>v%9A;%$dkjzIi1McO&IYW5xAm+@Hl1{+jZZZB8nswtgbA6Hia+I zP_-N1(U0k{ywVC*((ns6p(VSjg%)wOh)$b(z-RR&hB`O};w0YrFH4WAp&AWnPLHQE z5!Z)Vs;jj}fh2EGJg3-6S8RAj`LAC=XwQzexbs!gz^80D;^S;CZYt#G3r8lGhrg2= zXE{d*9BCT~hM{BJ3DYGnaAdMMw>#N0){PjEid6mg4&UX1njnkNNPBnY(T#VfR*CXh^JU_oY0UX_+g z2;~!mN*LpjW-2?vw3tpDy*#=^RGdQuDZpKM!mqj6O{mj8ia4=RH1}a?fCUGF)DI|# zk?`2Nt{q9|Ir#o6@>41yjR7;q^B*IJzrxVfGiVr z{>xuSv#?fvuC5`4rxTJBrMkV3ZmtNIrCHy`Wo?>w3i2@D69tKxT>amWx$zq*VHXOb zC%*|=IJ)>+)xR2Q;w+(p((f?M;IKF~zotFk7v80=!e5rkLjr~)&bz!t7~xiZN!AjE z0B#)!T!t2*@Ulxrbusj213p)Slf$9~YCzHXAf6M+BuJftaV-shu{(OY;&@yy6g51c z^QUCC;NKIYxE}Dz$=9zZ8v;=`t2-hymW39ak`i(jsGD{_WRcgsZ>k;(%9M_vLt|1a z_SX8dE2BrssqO0U;dkNJ?TjmY+I#HQmucc*D9O5_Z0=S(qZR!gT8&l|-t3-MPp zrQ`@ruWTPX9gwub)Qd{_V+j)5FOQ@G_#_9oDr5`cxhISL@^0o}r&&)m^MN^a3r2IS zVisTHj?hZZ_sp0gF69`TPkvytkp;nqt0b~|Rnrw+EiF6SdkEGQg(hzT#0PYbBNbKn zQMwK@rh31FH9YRfOLa>Solt8r=J8Q%CYq$~h$yVh&-mdp-_z8W&#Q@`9Us#=vVP;{ z>CCVB5zqQYuOsF-SU5mtYHot=R3SE0NJ{pgX!=KPwUt}KF`p&1eh#ry&mJ=FE~e%N zQ~S`eZYJy(dlMRByVNsMCbjpKSG4F?#A7F9|D8ZIPgX2)gg^mGDgjy1bhO@2IqeR! zFbm_gY*CD+Xq7WiLeBDL(MR(ae}TjA~6MWLC|1$c}$#lZKxKgQT?t~+CHkq%%il_5iiI-mr8Q&Z6xu;m->jd=$}nFRofF1cWjxqLxF44W6W z2jp|#`?byxI*W!jnWR=!52etk(Dl9+iYpUndk|g3b~~uR>{_b!+Y$m2#k_hjg5)PD zLHmYk@O&#AqY&g)L2iwdLZ-LNXDSe4DKVa^k|!hVs{1E`Cpyx8++fM@a^hZ{>pOa~^$y9s3ka3wd#vV_c>y6 zb%`mDNNNxYu#~y$@_l0o%`~?KXsWG@`!uWqP^j8%^VG9_kM4*GxhE;oPQAIY2rvOZ z68}VxF40Vwm+&|fP&baKz|)x2b6 znZ20DsrS(TbYtjl}XK+Y~4fVct=6EmaP`UtsB zaHeuLIt(%TzPJ_dV<3yOT{)jHq_JemoajZy@Xx<=&=V)7((;ku-@NPTt8vGG54a(( z)hlKymkmtTE5_Bw1mDIl>^l`iNjtol4Avh>M+-V-4#Mu3t{vPI0e|RV0vXxK4l!Df`GNE)0)-;IJ49oY zBQk-+n}+7v5cElxK8Qe&Ot6KwLD^r^!vB<6%S=bv!{|3rQLB= zn)j0OJmt+;l513YTlN(dzg}Q9`5=UnJ9SQ^>8fHtpreaVLTahIxd=?>T9XP4N3K1{ zS?(eqL-|xi6pBU`w{>Qk=lC9bP5$*%%?!$LM>if^TCKR9BqmCZlo7vRjR#Jkg)c73 z_L=fP3{yfk1D^`2lj4;p!PP-A&Pz^Y#X0nuyIKM{VMaYs$Nrv>cR9g|NcWg)y#IMG z1O?4Nv|<*N0vgH&85IhMKQ+3dV#1snz!K##jahQX`dUon9j(+r^*E)p(ejrp-^Mo12 zNaAp=v9YHmEP-KFFeE@$$jTPM?IO?~fEbdTWy|FZ+?U(UaPXXbaJ2=8^x&%E?`Hwo8;JE9-$i4Vv!$TvS^!y;{JrB>k4Fh$Dg5)0Lty{g8 z7=QwN@_^a-fN$-30sfyd0^?uA%s+g~{}=X$@!wp{f5AVDe~AqLLH|JgPx|LSaG$@s z|1;kIU*6{*vgiK*e*W)}&tDYNKLh{wM4kRmZ0Rq6hy4$+^cQvH@;CfMFJ)ou^oL3M z7a8>Tg8k80{$ox|e=$w}yK5l>X9H_Hvwwk9PX8vT{u?-A`cL9Y=+C(f&K7pI!hbPE z6vA9g3`}ecEDY?7tPE_-Y?=%Vsa0%{i!5xAJcPAl0 za0u=McZVQBLU4EIH6%GF*?Zr6&%0y1A8(D(^r~6j%&MAeeqYsMFm^CyFfeAcW3;n% z1TwcwbtRPPt$?&G8z7U7`WMaX@1x*}R`%~cC_6YC|7go2)b=A%=>1wx1txe zwK9@Z{y|3*HFh*~Ft>BEb$|o>mBx0uTK+FPUmC5S= z46t$#Gpd;zIhj4G96LJ)F$*UbF*`Fe9PmTT#>P$z;NS%2V0n~1-9O46Kab(x)BK^K zztF-*`rOZRL0EvSw|_i11o(^o>#Pu+m;sB=OwYtFuHon>#L9P@aGBo3q8{cVZ=Zu( znOi|r(-|4Bv>p&p$mN7raWY&#P7yqDf=xA&2yiB4d|$!+ zm9Au~;*3(h-6mZ@#Hx#llwK4_{Nk$<@prShwa{=L9 zAY1WAfFAJ3Q54a)lQcFrHFJXF0K&$MFP)67RUdQ68tWUG+n7EnrTUK)#B9J>n^EYs z>62a(vvL4Ka{8`6LQj=HH46wZ8w20~kA%tJ37$`aU!DJHXGNV4ZfuQ9am7`yR@H2RU)xFNq z(b?`K1Z@HZ85%ApvHoE`og2$Y06Q*)LZqs1-C#8xm94wemU_>4qXlq*yvu&E$heU{ za+S_ltA$siB8a~Wh9Rht;luJg!0B6TeZ~1=|Ivvfh_`}DP%H22H!yK(D_wO9L6*`g zi__glj?ATQ)n~>J{bc~Rj8=PmqWiWguH~|#kS+K|JGt<^haN^DI+WcuKge(21mThN zT&(Qs3_VuzX=~p3B$Z~x-jNTZ=Z9R|7?0?s(L&Bdtk{u%461{g%sA}8++*c(f^@BZ zh7_Fk=}OHwn8MOgiSoXl$kts*LF2UCW5s6pN)cxFo7xbIaP+R z#xfk^_1K%Iho6A;_^W+GE*a}5)$CNheFhPhtO6bbX@L#NBG3ky3Z3#PhEPu zyJh89Wi~V76C9JQs>#Y5yf*hfUr8+t-iN8dY08h0zuLc_)0#RaJU-H22u3jn6r~I& z_^uOgwWp?&=F{YbQ%ucZ?s+|7{f-K~+RbpElK04}pG)e$A$a{NwSY_?)>h?vvL@@6(S zJn666r*phn0ZGVHYxP+`X459wC%K-2YBL`A`n<|*6B3*>E1CAx#^}QK0;e*l`5Ck2 z$X#dRBPReo$qUt_gpWyyqxaQ3Z)}lu<=%~So^_pVt&65;(@}fh9=gYK?zZH95)IZE z4pB9C1B&OIp+UrVYX)-3$F_jY;SF#l}9?S1nTTX?vj)!KPelE&Ta$x1NrhoOjV@UHlQ2 z7>u-DIlL%1F?7sUo>O%yC9Y?}&T?j4%oJDaj5f()vV3BBJHk5Jj2Z4#2CwdGT6;lW zFU_j&iWLNNrrZ@S`-EZcuSzfT60N;13@#54%CCw(u{I*~YJ;wrDa%PWCto%a0U_`W zMl4&Lc(GUJ#Z}ujpwrhSq2mBXy4HxrocFm&=!v7z4*=SIzigSO_@8#ozhpn-ALD+H zf65O`3zWhAHI4(A_R%K#RmbD^W12_1>Q@=RzBwP;@v}}AHa0kBV2gim6USryKid5C z{j1)`@}J^>c^}LDRmQJ!|1fQTCuIFx{n#FVnSUZ@{b7g2551jZLJzudgJaAOM}eAe zlSCOe`xv8sDv{^qd&~J;304sX{%gxpy=?vz-P_K-=9&W+*-Fz9cCSVG+st)WhaW*$m|u48^BN1GGl;#6Lh&&*hP7mdef&T4BpcQ2&xTXOfmYN`$BP`hPq>nN70 zs;}Ld(BqZ&-Z;lb&KgZ6?Ba$O@b}r2!_4>DRKTPeX91%Ul1hMo^=i7My>XPSFGJNW zp{vz9mD$C+Nk2xW^3ZiKRP37Oa`l5z*++wb+o2ArLNZ`4iyK0KP`p{_@1Pm8!kpG? z%2C2l4K+D}Ql}_(1usUm)g? zQoL4m3{){NHOA0SFjG}UQ4O_=S9uiZaL~$rHJ!(qc5T(2$5H)|#|1CYL8Ff$AE>fQ ztfLXA(gDZRL1Q0X62ykf=pqEHny1o4{oN6zh%X!Nf%r=bb&Avk6@L|fNkejViUUjQ z1ib|8*qiTOmp462-mb{K&G8{}Qg-FAMZIX$lIiBb(ZZGF*nu?El3&%X!zq-avD@jW z$z}Xq3u67(ym~Gl%_rIQ_AX8L1!{BKWt*M50KF;Y%4x-~bdw-Jf# zyc$KBj=Af)0SX`kk0?J#TR6!QIQtJoW!SEAA{L|8Gzk8(V-TIwvr%mXjaWb!FmAIjy`r3ppaf!0+wX;l%>Cq75ni6YiwsUk;hD&vmELCP`z!o5OhS>1Yd;&GZ@@AR?%?s4q{(>5v5{q0OG34 z_Q*z|l%K!sn!@@3W~)Jrb5NCokaEONQ3om*r&n1naqnZ)V?)V((PJIP#qXt^(z){2 zl+zj2`W9Eeo)})Kd(%E-z=RizW#$Sh7H$@AnpQM(%BEA?$6Z4AF@;u?TF4ya^SBJBW^gYY3{?hGB2HCcziLg+u|vD>?w5Gz3DI^2^i>q*pR zNusfU9O7hwVd-2k7K~sXVMB9Nho)5js3^rbi0r)cT46c0;;PZ*l&$JY3bz9?bl?9T z291ToF;ep#Dw%;fO_v`uJ9XO@LtKCl>enTPm z!k%{Oy^eay++$1M9Q>xCcE88NE^ zE(rYc)9N`C>oqkrB?V!F(#`0KOO#7-tLq!nlt{1w3|7NF#by|<^khQO^Tg`9oc2t7 zYjQyAnAs?agzZg3T`lZT(6Vo@A}#xxWUD)2YAlu9SYd1NKx)4?nXJ{uC5^0>Axifwuh`yoDeJ_hBqB?m zC!C|d7pbeeJ5|86AYi?K_gjBIGE(a`>%GD5Fg^T3iu$U?2x~-O6{Zjb!kZ8YK%s1a zO1gCJGAA`<#fdXjeELmk(PHKP)jebbVfw_N$|++}o>nME=+qvx#uE6Qiej@Mq5)|n z0v+QzOt8c}gxKm4mXkc(e)6sJL`HpM%hqSx)a{+tptf1bi}Jd~BA;$sFga@y0O($Y z($@Y5eOyh=5DL|4CXyih=}9H{@>5@w&h(%JJ(mDEI~OxEr}obSeD#pw32~c@0=k#g z_ib~XXE)Q7P*^wdZfnCu5iqmq+T-2SJqbZp!?PawG+P47xChZ|mZ#?mx>I~ThDoL> z`Qj$fHlrkEPD>?yZnWVxfO(_OU75k@`d2|D7J$IOY}7h9YQAFAfK7WJ04dpzUTEs#Itf9Wn&5 zc-5$uI5ro2O0ehZh3s+bZ#=!RtJ%Lbe@(zA=iyCt3nP7VB+HAEWU%jcpi`9!ZriZs z^Kf|0?Fw6|GYRvG5DX>A7!}79d!RfliS`;<%n>x~{v>pPKd7MEPu?aQ!T`K#_8BAy z#z0e)a?ET(WA-TGm_vH5Zfzt=gym?7!41#pNEcwV)9;I5cc@!XK-Ku*SF-^by}a=dsKVzTi9M<+wrTb-tIvlavgn|;Tt4%lv1&)_ zO5zzN)&t~e9962!lxU2?E5bUbCp)1{iqGlig=nW|^jgDBQK`y`vng_?zeER3J7nLfs<;_*1IozLAbIkbkVIEWBY{56*T)ZD!qWb3znQ49le2j{c1)44cR|~ zUGT$dr~kP{wK&{GVDPL7XjD;4i`k-PqBobZ2m3=xn=3k&lFcLG6N zb6f_oWy+6TRZ}A>S;s4nZ!zGiRDNJ7TW`*pYam-Ahf+7%f|FeCWg5_E69fIE4v9TvqAF1ul<^(1HzRGO^wcYPjxH_`8*8@5(gg$@ zl#p2F?<`a?#Y;GILCZGpO`Ci?vE{FWe@dwi5VWzhny9C#s7aOwK2Tkh>SfKzbiQ+;w2`5Oq2(M)YxUZ$X=To$?BL?h_M<-) zLx_V~oy-ml5@mnZrOpo0t9^(=0o-ulXstpZ-uQ6*&i=vn7K=H?w2(|AL?%{Mw*z(^ zPxpgo)fIZC%E|HT7X{6G``}sMMkJ8v3kx8_L5JP-957?8LE-nSA|fqN@LrAtVi&1bmHvjE-Syu)6ajJ&^H{wZ1lyU zOh)?w8O9p)c<;GC%P;rts#wVtza9 z`M@}|p0Q4Kp3%ZWg(;aMBi<>$OrBke8%QXq6LGuzEgxi8;LVj11&YIvJMp*sveK;W zy_tzsbTu@bsxN@|TqY+bJI9F`O1dM_hB0Ali8L>XYTbI!zQZ;hJBhn?9M2}-4ocxP z1g$Zy$lGMnTD;wMdT&|NJb#Ljk37~c%WtwpO&oAW1zW8PU$ooQw=j8U@rVGMlX}A_$R_q1cn#l7*7Lx=y3+~Zu>}9RbqXBH@ z!Yl@|1|ur1mOd5XErqXqXbX)c<|YR*?i0^33ib1F_UlkBZHR7e_8d>=DmrN~RBk9m z%hE8=D&A2VJrHn8Jb*EAf($boW)MLq^XqYR=uM^Ig{XilfqELK1b7)4Z)Ofp&XKJo zp*r9VS+Q*F+A>C*kA$A&!RFTJ%yC6E?rf!9XVW&wEbOv<^YXW!tfxUHq-Zmj zvctU*zDAcTF4jl^;k-)5EUutv-J5UOIdAbnH?yRS{HoBXwV6q3Z6=~r!ET}Y{-$7o zK;b~UXTtKOQrY>neHD^&lHLTOSYuN_ks7jVV7PCU?EQBX5pT!k&^h}YXyK_7a4Oli z+v%0@YW(U+-#lf#qgrxTBG_SyM?m+~r>EeFsn9VcOjUWNMm4dy;Z-$=zi6bO4CWzN zrl@0QrtNHsX1zU58*{5U(Q1id?0rQjuwT_=JGnCVmVN^s-hMnfdopE=AFVq=!<2`c zp7>!mXggQ2@M4WRLN*dH!dUB5XK#rDv^G;*p8(<)*{gRi*M*< zmnr|Nz6mNMM!H(snFUz$>tg$i>Iv+TejStjcefZ<c!$7bGzr4)<(LP(zQf{pl_ z_|^i~f|9++UjEUUaKq~fUx?V%B z2V2&xYDMp0w}_&&V%7AKJrof=l);_~`lu{d@b>7G>J4_^M&9B zAs8J5$32VzGsH-ajd`A)Fr55(@iZ$#Mn^(_re_ihc~3UJakQ)t2JoI`ItJLeHgi#jo{lVPI{m!h1;XVs__o&!|}(=pimy81c=FFLr5;EEN51a9ZgVz5y! zmv%3NeXyp31~D%|UV#!Zo+1un--C|{x+B5_=hUs{Vfo~?BD3;AOyz)hGq@nPq~>IG zD?z^hs9d-DosHtcPVB1Sj;HLK+)W5=G;|W0f)c4J#Y?_j)b5JYf9*g}Vs^RY*j;A9){&&7miT@tqW%+TU$#0%emLE(3 zpts$FR40yNb27+umr zjgwXGu9hmYaOwUA?hK1|)d$N2ED-^1s_>@L-1l@w^dECUgq8Nu_I;m~hb(#!ljqTp z?fX4z;$8)R7VD7o23Zg$Iny0NxJ?9~0Vqy)xTg$@`DSjL|HAaZKFI08DZ8$&!t;id zqp{9x9J#SM6zA`n^7Q}w^$Y*oYyRK(!v3Zp|KEVMEI*hW|8|5u34V3{mm`ds`O&NQ zQ`tB<{u8WLX-7s`3tiV^gv<0p>Mnjh*F=1KL{GOQO`4%0^1uiF*+?bWGF(5dx!LC| z8grk+I&2IoG@X`^)$F(oj{U0i)W z*Sh4M-h5H|VNs}DkTw~_g3OOV4~FZF&DWa4mWI$v9}ss+bObB8u4vH%_?2#m%wT?6 z^etat0ZLZ_mS>It~a5}txMoCgZV(E^TBV821UG` z0^!hm=zU~no=($8M7JR)26Hlb_Q8tRtUf4IJx-l-p)5f!o)Zyaj(37ef@3)}A*sX+ z#U{drr5`vNNt;N;sHj|AAA5!E9=)(_`VNE(j)Lj@R2fxFHxf3fsgTmQjJ4FyBA;Ic zXp?4eizIA5DKn}XYr~DzioGW(&qL+L$%*sk*VXxAC}D1g z?Oq{|a97Ds$0Q_4FU%hIb*NG>4_7&(Fn3 zgV)68M|8YYJcQLb1j72qY+mf^fGvY1n4O3I*WO)PYr7~$3IQ5WOW$8y9db5*;G!nP zeJHbvnihH^IoB=1$Ce+CcOR)!*I+6)HP@wMkhSgYUcINSYlh^cLtZ`gG&-uStOpj~WBN7K(&)^={ zv|q^CBf9qVd5i-hYbJJ^7acwdrJEYb$dkT{(TSkgc<_#K9>IrZTp4dJ%)dw zalhgo%X<9$&XoFz+HvChXlKiA_Qbph*pY~y3T-|Kn2|AqSf>cb!F^zY}I{hT`4 zIDy=*{~75Uu$lkCxMG+P)6;yv3-JsBf*QwI}I?YA^ttRj7@9@n9gvIo^c z3{GbuvpDg*^u!LHvTk8~=^Z>ZuVz6 zpjKnnyZLcXt%TT%`m##ENJZ~WT@s@DnwNWgBoOms=)(m5 zq&kH|5RqO&$j6Vs@Tm}{YG{Eqq-EXFc~}Qcg)0?&(VCZ;k$ysf1`MbwY>|9rr)X9Q zf_lKwKDU^DLWm|#In=kvZ6jZmT&~r~a%uF!E)-z0kEF$@s*#c9;^0QC>dWN7r9@(x z{B@1?@+A#+ziLT%o0OS8EC*) zl>Gw(4M+?iX8bQ0Xn&x4e_@~jr;)!f(4GXp`u)qOVdVg_@_rdLEbMHL+`4~wi`wrX ze2Ln>(7pLOK@K^WZ~n8aPH2MfSmnSgA=pCT;cQThUTABmh{Dih2dW5pW%~}xDhnzq z`kU>*Lr91P;8csrvf9+izCukQPfljEMc-V_XplqQxLF^WxtnUPmCxWFC>!QdskRrn zreTG!7Qq*$Ra%`UTah4LR%xJgo3OCV3K!~KSGoOImoUx09bBux`>fb&7tuE9GCndT z;I8Y?JE6&@Ynjsx;x0YDZcykdh3ygINfmbAbY2Z;D-sT$DE7xI&5dFHK@^wx=Ey`gC026O2HQJ+taT~>O?+0B zFn2r;4w`v-ET7!RazVq*P(GsT zh!y1!_#WWiTRO?^1}o{^f<;B6T+;fnqjVSfse;KtALsh=qiK>Hinj5f&(UGWefEI+ zMCyrw@vR7)?Qj@v<{hbc0K4@e0TcjE&xUEx9#oUiGs@otUJlWV(qq~-GPym|{S^B; zXjJ;@lb?5V8p5ZTQTH|%+EO4wXAlqW#dZvxN-$1Fa4h&PhITyrs2A;u7_ztnVl5CX zhRhu=QVh*+265U98 zJBYoNAXyAzaXdUO4P6kJQ(f-Xb3)^H1O;GIx#64a+wC=+s2krLXCoejCXIMg8gi}`z1_QKP?kFu|-Rfhem);A!C#C!#6}62gF#noll1|v?|g;@#+p0 z!NHE%HjXxyPOi|AoeD=))9d{NW3@MQ$nKjmaP@wQd|nYJ(J47a&}4gEs2NdFN9kOv zUW@`n!&dV2V{f7&w7}9yF41BomD(K1ISMdH)~s*)zEsJI!}Ep-LPap)(3@1@6qqgZ ztU}*|s`#B@6Fo3CxW3;Ee&rDoqZkd``f2jKm{VlT_YBZ1O!mzvSy}VAPr_qvUT)Gi ziEw53Y=l?12v&iHPKv1t#|h(DllI;LiuRMqXs=kx(4B-3OT{($;VhF@32&>13E}Bp zEo`fsBotkFjiO!x1Syhvn+an6`kIA&5tiVp4|<#H%L-%ZYYC>=UHLxbomZ5o`c)DK)hErc=c@;OnO)Q^i`8In0rQ-sJ?Cf zq{r3ahZ;fmt2Cl5H6QcNm-B@BBYjw>)*f$t2;z>d_4fo|QciOZP+xi6;5C(RZJiwj z_gij;S1Ooayj5+x1kuAl%$x)84Ju%WW@L0^`X-fHFcKA|aUY(5czcm@Q&||!r4Jde zgUtor^}m&MXKbQzlLv1mu~6h3ekIRSil2AtnywZw^8TV>r{yl`Mjca)&3D~#lv#E( z8>BN(^>gDX(K7G#f!$SZA{4G?>{~OCeZw{#kOkZ3KCg(K?T0t%m7+}Y4^Z${KG=C6 z!b85%v`z@6l|G*(3u9%8K~M)oJa`E80R44e$c;Igoi_>j%(w%{2njpuwC4+6dE4j+ z%|lx(k;?Wvc*BvlQ&oK5dh^Ky-{XKmo~7i<=%Dj#zJu&!1CyvpSl2q7#Q-X4%|=LQws8a(ximEK(uqO~;zGDNQc-$aml zDnESqZpU~d;q5?w#5`ycvw>8VGsjeDA!dwMj~MG?uE$N)VFn+eX^Cl6rYXKQ8M7oL z5iZWkdU_AWJLMb3aya`L;)P6c%xAi15iv&tbE@MljJD%n&#Wi#Di1Qzs!utb$L{BJ zT!H&JY9CI6ss`rE`6Ov_U_0AC${{715m(C`4&Pju`;%9$p54Kj#Jr`{i%WnmLUd2* z&hDm6ef_}yRSJ!!vjJ{7balr*zaWwXvap~h!+7ZqfgHMKW(41LIBF$8&xM(EjYiMt z@J&C(E#eCpeME`|;@n_}K!<{IwU4Zt@^lq`o2Ik4UI^N4{p+3G(_7~HZ{9;&mftt8 zmZae;a1}RKH`nnCUnln0J4aYtB{(y`qJ}+U)9h&q%AtZ=UmLEd#bNI6a^9Rf@>48C zDx|3T8kxpLa+2TTFQ~ilon3qz^Im?olEM*OKu;CZKS6#uFWxv5*EjlVv$-2J2;Ds0 zIlVbd0}KPis_R=+DmyE^t*lp43-3~@XcJbVaXN2oroGan!IksH!s5*MCcOIvnYNq0 ze(2S8$!k@8GN?>P0Whc+awHQZvUNg3+HO_eFsa$*Y&*hy|)y(IDaD{A4yg# zjx|FxtgsLSul%s+M{qP6m%PTV8YM5?a@)07gPgLMLwp50JG70hgr^Q+krM(_*$zu5 zXvUU)qT_75lX2R~c#^2n;@Az?H*)WeG1LMS!6V0?PZ4%5yzPBvFo7q%YopybdB5C^ z5zP<(0tfyzEtF-vUOoC&bM)Y=T+Cd=B7G`w^}1Qik<4|QYp{8Nh5&23hm)Lqc-44K z!syd>}2P|ASZW>UOEQ>t}#IJ$IS z-^#$VqyBk)&@fy=tiin`f<2R_9aQIriD9v}MBqq8VjXt4`D8T+FKM1JfJn@4O|SY{ zW!!fTE!aHa4>7RqWU9SkvRqg!{F%nm3SqN2Aj~I~w+g`z78=qY!)peY60EP{uU;Vd zwqdWKO@iv{LP&K{#)Uq#ynCn6Zh1pU40r)90qNs6Fx(#$IjEL{Db=$^733mhGIs42H+Qhil=EXgICCTg$u02&PwA zb22gM%o?D(fUda4Jbey*##EdQ1(RDM9cD4!n5ZHl8JxNh*D?O~cb0~1{8h=V56_~y$ZWJ*$F9DdSy~ZhxadTS$VnG2hH!b3_X1ARU<-V*!e9?0S>zv@5ZnJM$? zVhtRF*rzs&?x4og|DtEDXQ3W{uXXL-phnNDpj&)Hx=}TW8-8tMqN!sj?oJdq^6fg8_HyOW2X0*giSjx)xtus&i^d@^-e=pb zOO4?%y{6=#iYlkK#9!|kWU=Vx><@0(6al_d0J+5nb=MxpRcb-(MkB~hr2=vkS3M^h zCkU;u{0e2O;0x$L9N)>wNID;*DsmYTNY8rQww@e|miv`KEsE4yn))uEKZb+Ut+ zYjQLANe%T8@|DhOi*z>=j#U6jrKOF?m$~c62<9 z?eXMGvE(!F{qDYR-;NwLD-^&VtW6`Tzks$+m|iT1+6I%{A4K)ax8A`W7W!bQUF3YM zXx5e}MoIUU>puNjbBPX1M*p6}XAn!(e=(RfJ?wn1tNnC5v*c6-<2-*)MfAEyn-Uzo z!}=Dt^(~!#J~5KK4R6+)vV;U?AZ=q9anFBrrh4! zIjqf3B*<*A+{Y{%bGcH#c`HgbGr;C*zdhuEm9_YczT7=r5xK8B%Yh|@y+-6TS&Dt3 zaMp^)Y?sQU_T97dv=x*}5)uY3&-Mq<%V)%;e}5`>buc!813JIh;egw?eqO}vY;3@% zRukf%G7bRnN&6{|*yg8mM@UuCK@4kAKL1g#MHPSh@bzmVZpg&d&bVzAx84kJrEY#>~zN+$Q%I854jD$a?-uIyTO~=jHrcTYz{7&{g@Dyc|G^^WSAaSLR>S zakBlbUJh0cpuh0Xws124?f(m4VgtGz|B{Z2i}|m40Zg2a{@Fju1F*3IeH?$4G5@V^ z05%S$zqSv+!ST4q`Ooq=nAra=;{qZ@|4QfNpby*<=getMessage()); $_SESSION['form_data'] = $_POST; + $redirect = '../add.php'; + if ($studentMode) { + $redirect .= '?mode=student'; + } + $autofocusField = ThesisCreateController::autofocusFieldForError($e->getMessage()); if ($autofocusField !== null) { App::flashAutofocus($autofocusField); } - header('Location: ../add.php'); + header('Location: ' . $redirect); exit(); } diff --git a/public/admin/add.php b/public/admin/add.php index f45e202..d8d9390 100644 --- a/public/admin/add.php +++ b/public/admin/add.php @@ -23,11 +23,9 @@ try { $formData = $_SESSION['form_data'] ?? []; unset($_SESSION['form_data']); $autofocusField = App::consumeAutofocus(); -// Flash error consumed by the flash-messages partial below. /** * Merge autofocus into the $attrs array for a given field. - * Only adds the attribute when $autofocusField matches $fieldName. */ function withAutofocus(string $fieldName, array $attrs = []): array { global $autofocusField; @@ -74,83 +72,147 @@ if ($studentMode) {
"> + + + - - - 'name']); include APP_ROOT . '/templates/partials/form/text-field.php'; ?> - 'email']; include APP_ROOT . '/templates/partials/form/text-field.php'; ?> + +
+ Informations du TFE - -
- - Si cette case est cochée, votre contact apparaîtra sur la page publique de votre TFE. -
+ + + 'name']); include APP_ROOT . '/templates/partials/form/text-field.php'; ?> + 'email']; include APP_ROOT . '/templates/partials/form/text-field.php'; ?> +
+ + Si cette case est cochée, votre contact apparaîtra sur la page publique de votre TFE. +
+ +
+ + +
+
+ + - 2000, 'max' => date('Y') + 1]); - include APP_ROOT . '/templates/partials/form/text-field.php'; - ?> + +
+ Cadre académique - + 2000, 'max' => date('Y') + 1]); + include APP_ROOT . '/templates/partials/form/text-field.php'; + ?> - + + + - + + - + +
- + +
+ Fichiers - + + + +
- -
- - -
+ +
+ Métadonnées complémentaires - + - + - + - + $at['id'], 'name' => $at['name']]; + }, $enabledAccessTypes); + $defaultAccessType = 2; + $selectedAccessType = isset($formData['access_type_id']) + ? (int)$formData['access_type_id'] + : $defaultAccessType; + $name = 'access_type_id'; + $label = 'Visibilité / Accès :'; + $options = $accessOptions; + $selected = $selectedAccessType; + $placeholder = null; + $required = true; + $attrs = []; + include APP_ROOT . '/templates/partials/form/select-field.php'; + ?> +
- + + +
+ Degrés d'ouverture et licences - +
+

Je veux que mon TFE soit disponible sous les conditions suivantes :

- $at['id'], 'name' => $at['name']]; - }, $enabledAccessTypes); - // Default: Interne (id=2) - $defaultAccessType = 2; - $selectedAccessType = isset($formData['access_type_id']) - ? (int)$formData['access_type_id'] - : $defaultAccessType; - $name = 'access_type_id'; - $label = 'Visibilité / Accès :'; - $options = $accessOptions; - $selected = $selectedAccessType; - $placeholder = null; - $required = true; - $attrs = []; - include APP_ROOT . '/templates/partials/form/select-field.php'; - ?> +
+

🔓 Libre

+

Mon TFE est en libre accès à tout le monde sur la plateforme des TFE ainsi que dans la bibliothèque de l'erg. Je suis conscient·e des responsabilités et obligations légales qui viennent avec une diffusion externe – et acquiesce avoir lu la documentation prévue à cet effet par l'erg, ainsi qu'avoir discuté des enjeux d'une publication avec l'équipe pédagogique. J'accepte de partager mes droits de diffusion avec l'erg, ce uniquement dans le cadre d'une diffusion sur la plateforme xamxam.

+
    +
  • +
  • +
+

Au moins une des deux cases doit être cochée pour le degré Libre.

+
+ +
+

🔒 Interne

+

Mon TFE et ma note d'intention ne sont accessibles que sur place en physique ainsi que sur la plateforme xamxam par la communauté erg. Une note descriptive est disponible sur le site à toustes. J'autorise une (ré-)utilisation et diffusion dans un contexte académique et didactique au sein de l'erg.

+

La diffusion limitée est protégée par le cadre académique/didactique, le travail pourrait donc être diffusé en interne et être cité par d'autres étudiant·es sans implications légales pour l'auteur·ice ni pour l'école.

+
    +
  • +
  • +
+

Au moins une des deux cases doit être cochée.

+
+ +
+

🚫 Interdit

+

Mon TFE n'est pas disponible en physique ni sur le site. Une note descriptive est disponible sur le site.

+
+
+ +
+

Généralités

+
    +
  • L'auteur·ice peut décider entre trois degrés de partage de son travail : libre, interne, interdit.
  • +
  • L'auteur·ice peut, à tout moment, décider de restreindre le degré d'accès à son travail. Il ne peut néanmoins pas l'ouvrir davantage.
  • +
  • Le choix effectué dans ce formulaire sera d'application une semaine après la soutenance orale de l'auteur·ice. Celui-ci peut donc décider de restreindre ce choix avant sa publication (mais pas l'ouvrir).
  • +
  • L'erg se réserve le droit de restreindre le degré d'ouverture du TFE – ce en accord avec le règlement.
  • +
  • Dans tous les cas, l'auteur·ice garde les droits d'auteurs, de diffusion, d'utilisation, etc. de son travail – sauf si la licence choisie restreindrait ses droits.
  • +
  • La diffusion « xamxam » est indépendante de la diffusion à la BAIU.
  • +
+
+
+