From 308bcdf2c1d6dbd4226fd5be851cf671a849cfdb Mon Sep 17 00:00:00 2001 From: anhefti Date: Tue, 18 Apr 2023 13:01:25 +0200 Subject: [PATCH] new readme --- README.rst | 133 +++++++++++++++------------------------- docs/images/setup_1.png | Bin 0 -> 29309 bytes 2 files changed, 49 insertions(+), 84 deletions(-) create mode 100644 docs/images/setup_1.png diff --git a/README.rst b/README.rst index f10ac722..64213001 100644 --- a/README.rst +++ b/README.rst @@ -19,14 +19,6 @@ Development: :target: https://github.com/SafeExamBrowser/seb-server/tree/development ---------- - -**Note regarding to** `CVE-2021-44228 `_: SEB Server is **not affected** by the vulnerability. For more information please read `Log4J2 Vulnerability and Spring Boot `_ - -However, to prevent security scanner to alert false-positives we decided to make a patch for the latest version of SEB Server (v1.2.6) including the Log4j 2.16.0 library. If you want to update please make sure your installation refer to version v1.2-stable, v1.2-latest or v1.2.6. Then simply make a update/rebuild of your seb-server docker image. - ---------- - About ----- The Safe Exam Browser Server web application simplifies and centralizes the configuration of Safe Exam Browser clients for exams. It interacts with a learning management or exam system for setting up and conducting e-assessments with Safe Exam Browser. It also improves security by allowing to monitor connected Safe Exam Browser clients in real time during e-assessments. @@ -50,7 +42,7 @@ SEB Server is a modern webservice with a REST API and a GUI service on top of it SEB Server provides a range of basic functionalities: - Built-in institutional multitenancy -- Linking of multiple Learning Management Systems (LMS). Currently supported: `Open edX `_ +- Linking of multiple Learning Management Systems (LMS). Currently supported: `Open edX `_, `Moodle `_, `Open Olat `_ , `Ans `_ - Accessing the Course/Exam-API of a linked LMS to import a courses or exams for managing with SEB Server - Creation and administration of SEB Client Configurations that can be used to startup a SEB and that contains SEB Server connection information for a SEB Client - Creation and administration of SEB Exam Configurations that can be bound to an imported Exam to automatically configure a SEB Client that connects to an exam that is managed by SEB Server @@ -61,56 +53,56 @@ The image below shows a very simplified diagram that locates the SEB Server in a Safe Exam Browser (SEB). The SEB Server communicates with the LMS for managing and prepare exams as well as with the SEB Client to ensure a more automated and secure setup for high-stake exams. -.. image:: https://raw.githubusercontent.com/SafeExamBrowser/seb-server/master/docs/images/seb-sebserver-lms.png +.. image:: https://raw.githubusercontent.com/SafeExamBrowser/seb-server/master/docs/images/setup_1.png :align: center - :target: https://raw.githubusercontent.com/SafeExamBrowser/seb-server/master/docs/images/seb-sebserver-lms.png + :target: https://raw.githubusercontent.com/SafeExamBrowser/seb-server/master/docs/images/setup_1.png -SEB Server Version 1.4 is out +SEB Server Version 1.5 is out ------------------------------- -New features: +New Features: -- Add possibility to archive/deactivate exams -- Added "Monitoring/Finished Exams" to be able to view already finished or archived exams within the usual monitoring view -- Improve LMS connection handling and LMS data fetch cycle -- Exam Configuration: Batch actions to change "Status" and "Update from Template" on multiple configuration at once -- Add proctoring settings to exam template -- Import of certificate-encrypted SEB configuration as Exam Configuration in SEB Server -- Added last update date and last modifying user to Connection Configuration and Exam Configuration -- Deletion possibility for all entities or documents with detailed deletion report -- Show generated client credentials of a Client Configuration. Suitable for testing purposes + - Security: New Application Signature Key (ASK) integration within SEB Server exams and monitoring + - Security: Minimum SEB Client version tracking within SEB Server monitoring + - LMS Integration: Better Moodle integration with new `SEB Server Moodle Plugin `_ + - Exam Maintenance: Added new SEB grouping functionality for Exam (and Exam Template) and Monitoring to be able to view/manage SEB Clients within defined groups (IP range, SEB client OS, ...) + - Exam Maintenance: Batch actions for archive and delete exams + - Exam Maintenance: Added SEB log export for finished and archived exams + - Exam List: Filter for unavailable exams + - Exam Monitoring: Added force SEB Lock Screen feature to be able to send lock screen instruction to SEB client as well as release such from SEB Server + - User Account: Added "Change Password" function also in User Account edit page + +Improvements: + - LMS Setup Lookup: Improved parallel data fetch of course and quit data from LMS and added notifications to the UI if background job is still fetching data from LMS in the background + - Zoom Proctoring: Adapted to new Zoom API's, SDK's and Apps + - Zoom Proctoring: Gallery view works now also in the proctoring web-client of the SEB Server + - Open Olat Integration: Added propagation of quit-link and quit-password for exam to Open Olat within the SEB restriction + - Monitoring: Improved performance for active monitoring + - Migration: Improved migration and added database table-char-set check + - SEB Settings: Added various new SEB Settings within the SEB Server database and Configuration Template (not yet in Exam Configuration UI) + - Added Tool-Tips also for list filters / various text and minor UI improvements + +Bugfixes: -Bugfixes: - -- Fixed to short default expiry time for SEB access token (1 hour --> 12 hour) -- Fixed Exam status update for running or finished exams when LMS dates changes -- Fixed Exam name and start-date filter -- Caching for SEB Exam Configuration on distributed setups -- Wrong SEB client missing ping logs generated by SEB Server -- Monitoring: Negative ping values -- Monitoring - Raise hand: Icon in SEB Server monitoring appears now also when SEB is connecting and not active yet -- Exam Configuration - List-Inputs: AutomaticallysSelect new added entry and select next entry after deleting previous entry - - -Changes: - -- User Account: Improved description for change password form -- Monitoring: Search pop-up width to fit full navigation -- Exam Configuration: Rename option "Enable SEB with browser windows" to "Use SEB without browser window" and invert logic (same as in SEB Config Tool) -- Exam Proctoring Settings: Make pop-up larger to fit all settings -- Client Configuration - Fallback Password: Improved arrangement for better TAB handling -- Improve form validation in add indicator form -- Change order of actions in monitoring according to user-input -- Configuration Templates: Display actual configuration values in the template's attribute list + - Exam Configuration status change to "Archived" is possible for up-coming exams + - Fix handling of invalid SEB Server monitoring UI sessions + - Open Olat LMS Setup access deadlock (serialized token request for LMS Template) + - Fixed exam update background process to update sometimes exams from LMS where nothing changed on LMS side + - Zoom proctoring multiplied participants on room change + - SEB Restriction warning on Exam seems to be not present when restriction fails + - Certificate cannot be imported + - Configuration Template: Filtering column "View": Paging in attribute list shows only one page + - Exam Configuration export SEB Settings should export current settings + - Exam: Name and Date filter does not work correctly + - Export Exam Connection Configuration, special characters in exam name cut of file name + - Zoom proctoring gallery view seems not to work because of cross-origin settings Docker-Image: -- Exact release version: docker pull anhefti/seb-server:v1.4.0 (sha256:a2510c4bd31fa99e553bc672087f1c0276f5541452490e5320a77767bb8c1849) -- Latest stable minor version with patches: docker pull anhefti/seb-server:v1.4-latest - +TODO SEB - SEB Server Compatibility @@ -119,6 +111,15 @@ SEB - SEB Server Compatibility The table below shows available and upcoming SEB client versions that has SEB Server integration support and are compatible with particular SEB Server version. There is an entry for each platform with a beta or testing release date and a official release date. +**SEB Server Version 1.5.X** + +.. csv-table:: + :header: "Platform / OS", "Beta/RC Version", "Release Version" + + "SEB Client for iOS", "ASK: 3.3", "3.1 (ASK: 3.3)" + "SEB Client for Mac", "ASK: 3.3pre", "3.1 (Zoom: 3.2/ASK: 3.3)" + "SEB Client for Windows", "", "" + **SEB Server Version 1.4.X** .. csv-table:: @@ -128,42 +129,6 @@ SEB Server version. There is an entry for each platform with a beta or testing r "SEB Client for Mac", "3.1/3.2 Preview", "3.1 (Zoom: 3.2)" "SEB Client for Windows", "--", "Version 3.3.2 - 3.4.0" -**SEB Server Version 1.3.X** - -.. csv-table:: - :header: "Platform / OS", "Beta/RC Version", "Release Version" - - "SEB Client for iOS", "3.1 Beta", "3.1 (Zoom: 3.2) " - "SEB Client for Mac", "3.1/3.2 Preview", "3.1 (Zoom: 3.2)" - "SEB Client for Windows", "--", "Version 3.3.2" - -**SEB Server Version 1.2.X** - -.. csv-table:: - :header: "Platform / OS", "Beta/RC Version", "Release Version" - - "SEB Client for iOS", "--", "Version 3.0.1 " - "SEB Client for Mac", "3.1 Preview", "Version 3.1" - "SEB Client for Windows", "--", "Version 3.2" - -**SEB Server Version 1.1.X** - -.. csv-table:: - :header: "Platform / OS", "Beta/RC Version", "Release Version" - - "SEB Client for iOS", "22. April 2020 - Version 2.1.50", "Q2 2021 - Version 2.5/3.0" - "SEB Client for Mac", "Q2 2021 - Version 3.1", "Q2 2021 - Version 3.1" - "SEB Client for Windows", "April 2021 - Version 3.2", "May 2021 - Version 3.2" - -**SEB Server Version 1.0.X** - -.. csv-table:: - :header: "Platform / OS", "Beta/RC Version", "Release Version" - - "SEB Client for iOS", "22. April 2020 - Version 2.1.50", "Q2 2021 - Version 2.5/3.0" - "SEB Client for Mac", "Q2 2021 - Version 3.1", "Q2 2021 - Version 3.1" - "SEB Client for Windows", "Q2 2020 - Version 3.1", "Q4 2020 - Version 3.1" - Install SEB Server ------------------ @@ -178,5 +143,5 @@ For a complete SEB Server user guide please go to `SEB Server User Guide `_ that is founded by leading Swiss universities EPFL, ETH, SUPSI, USI and HES-SO. The Swiss MOOC Service was financially supported from 2018-2020 by the `Swissuniversities´ P5 program `_. +The SEB Server is currently build and maintained by `ETH Zürich `_ and by the `Swiss MOOC Service `_ that is founded by leading Swiss universities EPFL, ETH, SUPSI, USI and HES-SO. The Swiss MOOC Service was financially supported from 2018-2020 by the `Swissuniversities´ P5 program `_. diff --git a/docs/images/setup_1.png b/docs/images/setup_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6b337de46f8fcf409322a365702d1da2edbfeb76 GIT binary patch literal 29309 zcmXte2UJtf(>5ST1Qiej=~X~LdJDZJbOMB4rT0)m5_*#=N>M>N(u7b&kls{KKzb3R z_Y$en`*;2S-tU|w=VtHh?CkFB%rmnSr>moSkA#i{4-fC2x|)hU9v=P?@HGV823n2{ z&^LH^#OA&b6JHNMM;CVoyvHKS|2;hx7IgMR`aTv>c`Ph!zNb zO~88(PkR?f7YF z1!3=rK|cBKy@Rif(|^4D-O&E_CXz4-jEXnJP01VWAfosm4cfs6>Eem_|3mUi@(YXn z_r}-X%i+Ifdk3_Oox{IY5eP7!{}UV-4`Ji+e*(@-6Y#;f8at{fE7=;` z=_~o$ySw{}{hK?$M8eF=)(-3`3e~oIEDTjK(Dl{xb9OX!({@C`4a@?R^|esK{s?hf zF+pc#L0bb;6L)t9LqK4tqaGOPVuEosL`kT)zyr|gDnh;@dTt2d70ke1)xc9&Qx_`k zDemf^E1~WP!AQ8HRM9ZBji{-Rhlh>64@SexNXW<48La7NuWW$uGqQpEYWwRw7FI&) z>lmU8)ID_FgfyTSeJ3LgWpOPvPo#^4x(D3Z)fwS0qABF01NHX_fN0to3Y$83x*7|? zfq@}V5nZr}x{V*&5u&Dng4)^J3yBD+3ql3GjE&s1{q+OHOrid^5?;c}x-buI7c|rx zsqf{hAtvks7DIuN_VxjGDxv{SaK8Y!D8LU82Ic7FXzyj`3U)RSg@|~#*r0$$J7FKbNFU^6FMAxRSn zKT(XRv#N%kv#Y(jsE?vQ1}%orF!eKm+bL^-#YF^#&<3Kqb|Q|(2HHviHb{t`pF0Gl zt&a8qwhL;c?4_&b1ZW)8UIJ||8i3XiS5oqE)%RC~AkkVLD%!dlk}7CB6*q*U8`xD0 z;x4AFudU;&|%y=a&&XllN5vd>i`_woV+yEy#oZDpo-$AUIu;vni9S+30Jg< zD9k}wTO5#HR8rF(?P?rgVqzEI?%}AdWF+D1ryXF2QA7o(`DjC-2#k)A5nKgdzl)0Ax+GXVjgf8h>)2bOh*DPVq~YO_D^S=Ow|<#3Q9>x)WF6@!o*KP z*U8M#DZs}TW*~+Vb@MUxGlB>T8wo>{&`51ZXG{Q832p``fg;q*)JRg*Nzh2y*2ciY z-at@P&s51C&>K-lU>~6>D$oD}I6~3R(+^|kFYcyh<_A*~#J~|ke#&;lbQ zF3w_5WkU^rM_~v`(^bn^U&&2dP)pp=0|Oj%B_&BoKVN%YLoH8#l&7ti4b0fbM@Jm2 zgD?_9L$!P*!J6X6y58zAJqW^7QvwRrhw6GGbi{zsZH=A&%~wR-$<@X{*WX9j2J8;g zuu*YR@iOyQ`KLgtYFZe$DFW&#Y$K>*=%k`(W9kBQ6moU(fNQ8ABoWHC9#BQFqpF^p zKSol}5p3k^uj%FFZUFT4uyHri_7L}0b#OM;bMP}#LFt3Non18`I{!2q3{Zd#gaZTx zeYIgef-YcX8xuQSpiv8~tgL5mC$8%5XXXv{@`f1O`Y58cHB24FFj`(tLJn>wNEA}s z%LwV`s&1lh|usNH2Yi3Cu?X?5?5i=zx)g*_&uP33&lz-WVl_ing1xKEfN} z?yI8XBI&H8@9(Z^-YNO$emN4}7@U?LecQbLa^;L$s*sG%95;i)Tn!Y;9n&LLvIw)g7GaC;f zh>)8vNLrtfTv(Q<&>n@K9GJ4(0${V_-l4L2PJQwbk21O$$<1uQyL(#6k23kEk0FqRYv z5b|^NF_93H(9m*47@66j6m5l^JzX3zIuKzyp8zvo2U}%PGqkFtj*=P_Cg$d1X6Ek# z*4I^YwR4md6gBZN1sDS37)Zbzv=F{3qCU2|;#zJJK$EJlBk=3sXDcGA3^*Bp?*IFl z|2ZAt|Nr?>5s0m~y9XW~3!b`)qJf{)w&k4`?eP=q!MCw}tPXt!28D4iZl~l~ziIER z3Wq)(C4*=jvGX9Kghk5?crr>j;xu~6S$h)un1mzut^>CNPl7LUFgva5bC~ae?ahOK z{7Xy@=p3|(QRf?2tYEbb)_P zRd9{~>H)KT_}Ci-(t3jMAeN5#-5vJ!e1wEG-;*c5NQH5bViUvGS-TcprQL*?c)R&D zuBk?DTury8c3ZGgZTXvwMaD<|!zxx86sg@riZoofvzBa7PyXch5)J2vQPSRZG)(mTCA z%YhPavf$Lf#I~##RwyiBad6ZGgtjb2iQ6Y~w0a(;iAcm#>1qxhB<-Srl! z%-p-z5|?2$^{A|E<%*jwUZ`rYfLQA9iE3_8w5OU1$G3Hxy9YrIN6>HmuhOLwIk3|v z3OMnIxY95M3&PIK51B(_%%C?-Z=7FI6kdmMpr}~z2wy{<_0e0$v={ftrT1N#c5W-c zVYfwQNC|_Y6(sVo&5Cv9_%cKIg*!EiF_QR-EE6NESsmr&iK!XqkC&{QuGm98l;DHR zA%1iqjwprtWMtL^Ugw2k2ASnY5XZRx%w0l)urLmDn@t=)pXGN;w&pIU_^HX9evb<3 zLIiJC$z4z8T*@*&Ul2(PQDA8RH7s56FL-N?f_Bstd|1eD z;n(w7&fE`d$9N*vchjNK_Ab8Yo+IQS+!-U8t)T<@WNNf7bMAMAz8%5 z?Xs`O@~~VIk`45r(>wUILEocV5wsL#1uUrId5sVPnooH6(&Qkwp#)}G!wjjfol`=t zCAUC+&+*5 z{lOJ%bQ>{!I74!gN992wzk<)tVXnz#{LSz%Fo8QY#vxNH?d->)yN#U`&43^2E~d|o zWr2<$Z>($}^GJ!Jdf{qksv|$IR!PAXhj4$xnx|>jPw&fli^A*MWrAQetz`9(gE@s4 z@4zjFRd+^lgWH5NP=&O42RYP0?@Bpwf_Zh>ER=j3AHSF)R^=^H@-KTmdrj?PR@12R zi}Ua>B&fk51oLC~2RKVtgnaKlKB};P(QAN5lU{AMIS=|%fu$YPEm)mE9Ob=P^wwH% zPlkN&2?0W~*W2Ahjx2GkOfH*{oD^iD$YLLYnGDx<#b^cql&Rr9VIO(-EADkZxu8R;!X3WvC5#}+ z7h${^O&j6n8PNsL@_bkp@CgvvOnTcadGW;0Uvh?rS%Ml;V6#uPzwuk>l9BJ-BNz$S z?h3)^l!CDA`B_Mo0!Nkw4uYWAZG4KL@7Zq?tm9)%XrzO@2GnbHCCK+k!ao*ZdA~Tl zEntAR$PxwOju&Fh!onUC&ZxC!1P=VNiILHi{jROR;tXm~#^vokc@sctj!%G{CgI|_ zMX*od)vq^D#0P)m$&wTT0_o@S^zG_!Sv}}bS8d$sKl9D>ASy)AzbyfQIH15Wc&9p* z_0;PvlG=JKrwvr1=80gqb1y1x74+t~T1rhec%3s~O@grVgVZio`sS1F7pG?-iSk69 z@uHe{U%Z?wyULueTB_Nr@_Lxp?sHS+dVjX0G%f_{ChMc<`-2#-TimWoDQE zh`Ejzxm7v8{&~6BJcZiOdal}%v`)K*9M{n?VWr;>Dq-{!KKHua_^9PhMibc&W;T5M zG7$GJ<_Ekg+D=0{n{3Lp{VK?M`$bgAY`-N3ZGGz@pINIdZN-#Nq@zx#W>SEvcZJA3 ziix)g1Hq=%TTY6&b=~F!)(1{cTahtFhy7WmqQSq|q*@nE8!Z?)_jRS0t`}zpelMaE zqN#6ZTnnhnAGULoD)2`)X0!=UmQE|5*vH-Yuzio|MlN0|1{{Sj(ZC$y8C;N(`}%(S zf@TaZHG`)KLAaa&M$sHokcwLC^8-h3dzX0m`qRf!c1=Uyo6-4FNAyE41w!<*xX*k! zttm5_I1q}R$!ts()doocnu@p#$Lq`P8&hoY^L?{Ig}O674;j6A)89p-|ewQUi8FMTM@PhP&3cm*03Uc)I99I>2s+@Z`*EnjUTSS z-XXBK!*<+!5Qt-~GLsniM(nR(vfQTQJi~Km2lrH!-Kyhqcz84-$(v@|1f`{9ydP^+LcYQ;|@W$yd_InWm;04$%-jGIP>Gh(eMSX#@1K z-v>=W9q#{?ZSQ)EdGlo6s5eSAu`N;WfY)rDUliJ=U^x|ku@=2DJZ;Tb$<@8Q7QJ48nvU#GQ9;PtK)wKz!{sdyt;&bF62MH1&qT(EOEq{sn>XQh%C%hO~JNy#~El1b? zrsY??{PMxQk!)bVbLxYWTC-eCT3QUqc8xffStt!Ee^heW*Jqj_{l4$GRAh^sI{vC5S>vh#*H(|+N^h!-8Sa%CIDamKm57-PTKUkvn59@($c zmF?9^R8Mx6sx}R(Tvmm#7bdWK#N8&G2oIB|ND9OOt9bBx^jQe3{8f+iS3Wu)wA)jy z>0EW>F?QT7`grVj9AYK1MAoNqqCdfhf=ddWW6l;^BP3==Kz%X&LXv%|g)>1ouZH@n zc&N@4zJBHT`A0?09q@`61mKxLXh^=^F1s7w|3T( z#0tIQN0j{u3xm6H%!NK&xlL-xeAM%Hi2H7%ZR<7 znAO+Z;qOj~^H%Uwd|5?GS;z8ye&RYq6UR=7b%SsnePOqHd$BjNnQ&5naWB8Jl_`Pk z==#&#lRP(BX6o%3^<6LNi0p>cXyp(; zLhvk%_^zHbI z=aUi$DMa(D84x8V&;5z;bJEGBlPYFHAznseE?AmYgwYxzS#X-pp1Ez2_DfSzXG(;M zg&naZ+F}{qP!dHraie#t)zZRoo$54M)%?WAH$gpEBW)~2ve=N1PixPqTh`}uSN`w?6+~2H##5MHox0FaNsxro|U?6HJ3=5m$PD$_qQDzcEB*^DW zx2i`>Y_H+wZJ^`Nht$7N(XU@8t6J6I#=a^^q|kqzjKT@kES6D!onUh#y9(L2$!U{J zun!Pj&`|+1xM(K+j<70xNWj{5zbc-6Jtr3JxLe5Fb`ehf)J%npjA}jg8>X?kctF7K z7v7Ad)H|c+aRYeadpxc$yK~lBc1hJ3Der?$Z{ZjD$MjqdErvP|lSOodTBsbfr^Dt4 za$(b$t@j10i6bLLnk6BvqwH&9#t)hzPjKXV1I(jD`h=w6NwD6DG0QEiw8!_gE(z&g zml)o^_o(}J&!Wj6+S3tSLT(PM#%;Zq}`Vj>d3S88k z#|-$!pBSQ_y8g{-dPS7r^DjaXCdNNTw{O=?Zrt6B{Sp~!) zTtnej`tR1qz*^;`fw;xV-ETK`(wguYHg;8y- zBCUH7YTmya<2gLr>H;VDT?1_3X4O7XHe9k}x`-`IjQT9(z~(ji5}Jh^L}=kH3Q3z( z=pzE94}d^MA$xhmn^&8=q#i*p4&5hyXQ~H&J@xiY^vV!Pyx17YX)Pc6;g;0YB@)i!)hwy=5d0-PCRen=Mk0aEyovBf*#UoC~sXY|ozhd?QbHIsfH5 z+%;7?)eQiv7mOKAt3qF1DX@?c*bs{sFUyn^AVG4^!N4?>!qn4F`kQA%<+XD})1|JP z;gS)7xcyv<{SX?Tm=+AUAQ_|!;fJeAJ8J{vn(i-!FQMVFh)Bz z+cXh_lR#iYN+&+7T^ z+teS8;dh~ytkjfRxO;>5UCwMGewG!jxmFGTx^4OMl~KI*TYJj-yR%9Z=a@*l&m=yp zLSsDF7S+CYP@7(;9HP6F=)|_?ggdvC%b)JZTJt5PeN^t`r?yzip%`q1dQ`Qmo2fsV z7I5k>Bx-km?X^MLa5=zOocnH``JEc$7pE*H?Xlb((8tFq^Xd7R^6Z8r0!URmQRJ1tbfEXGd1slA_B=+}4#eEn3giRP64$ z;K)?FSK0H3j<=@N=h(#@IVXP0llaJr^ac&kog~f=zT+tDek<1fCGn6XInBAuBfe&H z=i*{`LAA^2r}$6tDT@H{+0hDX6-r0{w`iVe7ca-c+4zk5LVxT2*CXp@RG*v`cBMD7 zC%9DAjM}M(eZE}~`Pg`Iy48E$DTAn%!f)=Hef9yTP#DFV(=vzC2!uiJ(Q{n*&pv$R za@sI~-9~LIukftEZ|{zq-^4v5e=W^%eo>?3L;tfO`S~Vs+%Okw(6`4bxQr;3pvrQ( zUY@Tg;gw|dPwhy1#3JIx` z%erN^e0&zMKKLPaupwdUA*tr593@5O2LX@Y(2PI1G=!3_lLfWV+6&FeORM5J+OMU1 zNUB9|>6!ZRudh2GW|Wmwp`LO)V&`hv?2v4mPmUITUxqdLjK&DwYsUOCsMdezBD6q6 zF>1ei{oG-eJzXp6EPM63o+YHt{_X}!!eg#Qk>9q#n(u_1^#p0_EuvwfLUl~R0=a3b zr6H|2Pz-ZjjLR5Oo=;fzZDpFetDff%-Gn{5vk;T4SuMVw$dD z<#EE^z7nsc-pmK*Ik5-gM(*+-_m4ZaoDx%-?}Rixc%qq+`P)|abAWch?zS<<7YqgG z$r~QyJkm@{jpZ&YK~IX0YdzHAVqe+bXYDoUa1O7%`+R@fBc>D>D=z!`+7$?B!EF zqD$Nj`g}gWD$m50kSu|WR$1JC$wD~DJoIiZ%LB53)--enY>XgXWL7c(<3ne+7Tfno0fpW3XEq+a?i zIk`Z>&HZbESIiPt&=|MhpNfjvG!B}V1A)Z;$oE27lh*;=cXTkK(z4|?Wf(cP=US;1 zQE09^RY)~TL&#ISw6UV^K}5S)QsN3wcr?yQ8?*RV{=lzG^Ai>4`iqE8(?>;7BH^EY zHFiX^{9GPVf|+}L66|U z^z4jjQkfU|-Fb$uYGd?swI>Ht?I8<6+Z_b zl>PAVciBTut0G!n{dKNf%EHSRdphex5oQcQETTsi2Z7YD=+CUpIAYDEI%!2!RuznQ z3g4`RNM%+V^V!8z8~MziHQh8rLOxKlx!%Y=KEB)|73C! zjV|kMupMt>=5+FvFFSN8RVsgWM+xrqO2*>z+p6`}JUFpMVL{eTl)zI0F3qxAi8S?{ z13s5B0c}=eb14K zU(=A=pc2we?2$!56qb}ftM+%kKeqUNcObz@;Tk`+tHJ>7JYG9nM(|DR9zkv10DX9;NdZQHhb+Pdq(|rBM zB89ZPl!8a*6s{y9l9`hNB+LgS6ijYd`H`7Hr;(qF5Mqfknbjg_h1Q})@g8N8PUsT2 z@(t;mT2Y&r3L1~7<96J;)ur&}Y(4tAJtis}W_vsEu54 zl1O6w^{e3Qnp!ZkBQ4-;X_dw@#6gkAgY#+U(Y~?tVy+ys!GoFBTt?;bmK*X@=2kD8A71+`cF&Kvz{s=zHhFTY z1z%?+odm{;Dm(r7eJJla;FQd%9Jsrs`~45m;zR!08QtVYm5%k)Wr? zg}>viwlk5TRg_nT9@SCdt&1tV;fH!40sV%1h5?5*ja>v>51w(w^ElbHiZU-9i#+}R$;R>QmrrlV4m_Gsd^!>)qM~XOMzc&Ss890s7=C}C- z+o$6=aeo=Y!*3Cf(0jJ9CYD+H^gOnrn?86(!G>Dop3qBb`lh3VSb09M`>ckx$&*a3 zI7c(1@%w_;Hq^~KmPq;W%e?ECY)so}emk4ky?hq3!+>Ca!q^>$!&TiV*Dp3RZi(IG zmDc-Ch4+sV_jXI<3m%DL$jq0YWhWM_zsZ}MVOkNVdYBBGB`3{QBk~VV{9U|9A%0Y1 zmJ}I8t(4K48&5xN{E{@?YpOdab?hoMH81& z7vR)X!MSd@7Z{U+K8jnC9C!i&^8E!YJzwoAj*p7$>?5MyoCK3X0s`MZ|CS+TPM9`E zp*L{B8bcTY+&a9uy1v-m5cjsI(9RS;9Q#-tRE=RGWlgx6vrL=M{sj;644J4^{_$n+ zr*Ho=u#(J9p!hrXLQ!Xlgvd`2kGm0r_InbyEC-)=P$hGwoDBY+32A0Qe=c5EEh#+9 zhF3{d;K!m1&xVLZ+L^thwG>$7L6K_N%Q6igPovLd<&~qHM(>5U1)q=fB|63~y9x~Z zujj10-LteAoZB7v@%DcD(aezOh=)#|yh4~EYLk0?4~z=2iHaB$t$*k%+4~!S-AJnN zk92Lp7ieq>vvF<7*bt1*bY$4kqs*e4Sz}|V{6yM~P762iBdz`(tpOonP*fOwg3pZ2 z94Gzs@`HVW)yTBaM+&&JALL>U;RjT-m{o9P5ZRt#*OL1O5L&Td@pR)sJC$TqD z?4C0Yp`}%uj0SOQ&u;Ew@$LuWTqFXAST#YB;K0k%{jq{TvW&kYnqzsla&PY4PcIA6 z(4O6wJ@QHw|Ir_l3MG@k5AR@Ii2jfhSa>fZV1W}vI6y|gx&);Eg63MPiW;xVYg7t9 z;-#wX(b9BN2jcLvSjd0VfVe-QX7WGu?apRSy9Cqhld9|!y(T9BJtAL-YxMpG^}fDD zOJReEGDQ7J7%>*fEIb>@IgO~ory$_^Z!tWKnIfr>|G0^HW1)OE-lto63nM>3&~494 z&|7l-yWCWm^{4E~j51k8e$>hTuLU3jadmwh%j?FHn_@u>T)N77)P*ZeR zoZRa^{#@IVEJ~uS7)1GJMl#<~fP#EJXa3hUG~07m>$B_l>qvghJ%*X(_uPHE1#8g> zwcyh_FZk%5Pw#sVmIXorL`bL-)_C!1r&BUt2k1;FVYha-F?6opTK;@6^m@5Sbl`LU z7bj@UAXZupH-j&cup&uJ<$9ZdiEUv7j9N`1)}H-V4IMpZCD-fdl8=@>qI$(3WZ_p2 z`|zv6e0m~w-t`4=H7I@oul#_o3U1fN@212f{Q7&8;Ut7cH}ZeFN(Ef1Jk&8ry-NUO z-rfu^UY{NDY>xCU|$g70WYb0v6Q8M-^?_u#Q@nQI0$^TH(kh)Spy**@0~~ zHQ9n_`s{n$1T05k_Zd3T%;7(nL$f$_vbg)V-&uz=UJ&@ru&K>1<0~8}bPxcXNLdzB z`=ATE?Ki1Y{%CYvcc@$xk8x#Ia#+}yh|lEkW*94;KG|fLq6LP+q{XkgFEnJc=-o(n zGW)E@j8jGUSg<$?IWZ`W1yBD+Egpdox!?BZiNfgXt(w6ROU!J_zGV2ANC*jD7*KDb zPu9VrsB%K_Nbnh6>(%k}$jn^1smKY@o=rRpiupc?3IV}wLIqsf0|f=;XD2(e`qJ_N zhb6wTyykU$dw1A@5e)DMu2u00cW#6tBKcYOw(I9Ll-hwJ6PJylJpRvgS&j<0FSNXB z8I2%7dd$`^@?N<58_u3!O}4>~xJQH-KPh1CrC5Ng!n2>LPe*1#zTV+dQ(B+ruBO1l+M)6AZvcr- zZXPKr5tFBhI3;i#nj;#cm;$$ih|Sd6c@%M*5+647&Vl8FwF^NKAFy<&o17nRvVT4} z-k!cC5D$p>lptz4EG!0ik|ku;ZcgmDI+=%&((u2Hocm~_d_n~Bir2#ZE1to_kHXWh zvgP-S?l?dCQ`DHfTqlx8!*4MuVmc%U=np`$0%74*rNX-fTovza7Uyaxts7v;WDj-o zr@a|L_6+}&uz-Mw#NMKP*d`PZ>SV(2R6m1)9Xb?xb776mM(Wc3E6n)ICg?iGjT3JUOeRG$eX~zf7}o#E3qt45R8`@7YnqVM!1fZEG82=Q-jFE z$An0=C`?)dK8w~*lo=;l1?@xL6B33gFc5x!MXwrsah#G`ZfqU=&;%cUkQ@&ic)K-} z{(9j#nf>)a40A|Yz!7fMT9K8OeD4kcS8kB7$5d?`$wMBMpYH@>41aPhzmBs7Hr9J= z`S7fVE4NU{?z^7D`44D4;%3DVgCjqXuhG7 z^;wA(t@oU1&|8zQGW%Rwq2%b`02yDOP^OW;I;0c>CeG#-Me@-3&##I)+vNG)G(kk$ znd4vH=(BC>p&a?6F}TaO=zA2^@l;Qg;%NjvjKbt)oh`##T*C0wWbfS;YPU40b59qo z2Qci}A)r)i^-VH^xxORnV|5}6lW01!`naW~rAre4sFM6aJ2Ta%)sGxh_yQQjaAjnrv3@Q<({%#|7^PXv ze6V+5*IE|oXv;p7AmM*6q9RS(T$zc6cqDe3|Zbl|SGN;WWwaJi71| zUOm`r@zOPuv0e_7(7G;PJUGVNy{L(^NN%Ua{_*H4v+l{m4Sn{lX-gaL^6|1sPa6a4 zCeD#%kG+~WZM44_Y{c1wz$7gh+rwLDJe#-0akI@5`6ov<70D01F#O z)6cEYp$(WEME>@hy5rq>fzJo6fhQVDRVLN>k9#VcaHX--rA%oOo=jqHzxWmpUaXA0 zdg0rz)$^j;?N@nvOiLQe!|?CyDAZG{t6q(cqpnZf8;l~&sy$PHMNT8V$NLv&P7!xr zRZbBy-KHjaXJqR(rw^y^uYpD{2I9F=tYvfE=%nw$dZ5GY{Z)`z_n z#KrFj=heIaejQE5oMS+0*^Ey4fH5?ITh}<=OL=N8jtw|$bqh)QtYc?0dgSoV(y=tz zOsJh+eYQO0^N*^^YE$W)4~RO2XS{^%wf=wDQja=Fuw0{|TUai!S&Qa$J1MPPxoq68 zia%zV&LGeuz^FM5W%;e97<1$$GRs?Ke0uY=rFgE|P8C~GbNj36yxC{hhxK&7hJM>P z_q=|rcd|Lf9rH`{Krj(v)$=-_{QOk}Z-n@3+0eO4OKD-(<;xbvjDSy9|I+Qq*~Z+~ zS^vt3D(m^|+ruQ}f{J*BIjo}*gTtSwzpNdT3bYK3ThV7Py?tWkGJ4+DIDE@;BFCRK zUuO77Dn&weqF8IRsm8M99K}-Z*UmKsmzaJKTa2wac=qYasaSRk+bk9JRP5J##asSz zS1&~dKKjZd2!PvlJbes-A@g{Ts>f*qol~N%lGB?;nl3*b*_@c>ofStJiOS>TBiR7) z@dJuRlfr?k@#)0Xk3UYH*cv}d_fPwA5CV%DTkfGLyV1D4RTe0e**|R`e_wiVzlW5H zW#J*TZ{fz zK8cqbp&Oo_<$3QZ9zGJ#Sr<_eNlmKEY0VU#$9Gyys%>4yq>XaEQj;)06ye#6kA2 zJ|pE|uLuak!Y)92dV2Rae7_LUG|Wqy5faz{4DoYGw(izD53{LnNHWv!eTh5`hlYK7 zOhzyMGDF;hZX-nD^cmnA$u>?a%)cj{ekLChf4I#Nuoei2+s2%4f&aTE z_y{*XGGkR{RDq|CczRiC8uQ?>fKara80nu35?vl*8EM(4CLdW4$8`p{#G{vU)@9(i zZFgo=Q3BpN%qhljfIpUiutf>jpof3eYk#V1_}yetLbcKaS>w2_yvu~bNj19~e@l4I zWpM>&>Mi*dA|B&wmV&(8Q36Y)TxOkxQ_M2!G6Y!z4X|7}->!$olJk$u{vjqj>_w1k z%gJ2e>mlNMbShc-qd&i5jeob4@=V2_2RnSD%?1IS#tOX zfWB946=7=M20t<6hMc<;dh7_?^rLX#xi{OI`PE-g7vu|3JgUf*Y889}E7pZj{XsA^ z=A@ijzD%hdbE6S+bN(vfsz&0n26jm;uX?N(uEeDq{uNgod5KA;bc@fG(rbUh`zU8= zOa0>VVDRS^Qoe=z_T5M1DUYH>+PtY7{JPREWPY_eKG9CUe6VUTac8i6M+K|@FrDYM z;Z&o>nOQwzmfLn5-u72Bi-xcTuUZKgfR>akDo6C_lH#R)a}I%h7O-ly5U!XtsxZ?7 zs5fwBRRgt^1?_T59WjMD%EaQK5MuHEJ6G=6Fo=dh0b5tui(Gh#S~YxQa`?GHd7r7l z`)A&YD_vjZe~{YVm|rr0t{7%vp-wkirbO{0i&uX(_vSM<_U2H&e)9o5Xni;j`mcjQ z`N-p?V(=dyIl2e=-(tu#w}Swb@OlUaUZt|`E>_c`ahz-M?_5XPJ!F4E56={Sf)rXK zHl7OZ&k)l_#+aM(rOg)LJZ76vTKyR{9_h(VdOEEkyoHs;4y)n@!++u+I9G3*R4zF^ z>mVV2VTD+6kEx;7lQ~TprvDw|AVnNFqVUG-;=`%GGWod$k6CFO%Qkdr-JQp%u3EP| zeli+1Q2ovK*?MALuBGP2!j3gZ^}F)likCASH27Ajk2O=fmtD2q+I@eyum4uY1Noj_ zytV9W#(9RATZ#McPeQ9NRoh-jJ~XA{wK))%W~9AiJzMP7>`0L2a@Jzm5ht+l*ss)4SRtKba3+p_l zKX?lai?y>aJi+eHpJG}5Vh<;FJ@xiU`b+G)er`mP&}fJ>nMd^>U(^L_hI*X6KK9I1 zee72Ij?lWL*ANj$?h>OOD|QGV)$WJw^CY`i%+{n{MwaRGH3)Gg17(U|AWj4B6pEkC zXPCXu@Pi7wFV|poioE~MZS2_@le{yo6xOs>dAtmiyJl!#w}t@mNiWe^`}L8)4auFJ z5hi??TJT9}T&>%0H435%P)fNkQA&v~_@NYkUETUGZU%7en`1=AW6(9J6ncw11u+z_ zG2ZwsWet4ir(0DkXJT2A`5wt7J0k;kj$G%uT@(0_> znG|k(K#j#**A(1%up}5+6!&MU-t}jLuHKLJB^TTbx-{6^fuMk*X{YJWMyfd?xm_y7&to;${`=*zr?p!1uXgPiGIy$#xi=aU?ef-khtr}ycNqe0F^Y$P{egBRbvEY3#LwF2NS z*~uzk^RfEI7GGC})QcMmK{I+2Tg!{%P%@UhHz2{hn$+vio0Cu-@#jt9K%F`R`w?UO z?U8{ZnBG~_iC#Lc$E`kuv3_gbx@f!XyWVe+3%$ngiCk33={gUCYFmg)fYYmNQZAdt zU~6#z@3)24vphiGm%zhkAy*8$VwzOn`H+bq;8ExhA#~?L-6yQ^Phi;(y{{V;AX~Dx z|4{Z%7X04L!3p(Loe!1XqOAe8>yL1^cKJxXr!}2?h|KnMeIj51I1*c^p6IJQIFIAX z*?1cZl$7J)zoS@q!y2>{aWeit4Vl!y#e8}I>6c>1trjyxzE|F4of|nvEhHR0?RD{OV-AJYKh=sn=FlZKc-HRb()?vV*CMqqH z2f<-K|AnuBmn9uj3I7O$q@Ai^j5c7C2h48D|D4G)Qmm6ea0Z&67Me21z>$EpTrjkj zal_mk6V2xW6GYdJ8hZ`?*;<4Y5AXnoh^mBXFJ{?p_L%IKlcfu0$+g!-?7J)iT(gSQw&(+4nvLbkN6Z_&h~BW`m5mOLBpJ56^~9$lQ$ct7AG_WS&?zyZsq`Bc>Un+ zh&>g7`kR2`5hv#=(1qF2CCxLRLy1aGO}bt2oG+FUUj}D7vBt#r8Mu+9HHmn|G7kM5R&gmX%R%(_!9P=#LPBvG zSzk}8MP6%sE{*XpJlUX~erpjYimHhexGc|Ufxw2o+E>unSsyy}zi!<_74?+W8M4vI zK6x3EI}VPyXi*NM{5yt)t1_8F{-<*3W8jZ{=VStfZ|Lv!ciXvP?~^lQE|B}r4URHA zwQr3TnpM#Z-g_h%7JZlYflCt*=)TR)&eo+$N$xA@#}xvH-CX_Gi!qaUYhFIHv+t$qFCbJT5e_!4RT#V3o=|1h1+_DlI>qf&D6d{w}0zU2i zjL-r+{3`N~DmaGolsl~kDdMybO}le(pFkQFuQHO!QQ@{OI7cHwlqW#v&;a`kA^*AbeoD;z zgXYZJBXYTU$gLfeaj8&mG_#K z;(Q$2_-T7$cq!|gNvd&`SVwHpueHUv`~L@@;cmiHvkia^&Q5{*ribAiC)sp+TAx6X}Bzr5-Y zvl+#71?cjdeu)cH_=I%=Zr+iaIN1Bau3S=a(s34;1*)q-JFk-!DRWh)VlJGU4UKb@MUXlU)|bq z;qn%uJru=g*o^SjKbxFQ9o;#8Y0bZ^sVb59M<4-61AHGFOJ6w@C@CEk2*jORweCZ( zL3dwf1hiZz;Lw8_7k`#tzFhtJu2?SkeA3$gf!Oyc#L{kF$Wmt?czmM)E8!;7m0wBw z)ZQ_nc%OR1)n*z<4VpFiV&4usR|_LN(|Zt++;B!fwDa$#6S~!uu0@7&ha7G62{XNC zlVn>r*`>9YL&@h?X4qjWM^U>!6XP_JbMXqvSpf;wAPc6TJw^CIv(WAKkc62RC(VB= z6CFY%mMQ}`55yoVm!3QGlht-{twqfL;J~_kd*9OR`b2e<1uLQ7&VH&vd&rf0%nDGU zRt#7>)emlKEE3fkGV_ThgcZ{7zmJR=wmQbIsT}>qL~G_(h%TSZZ4BmLiz5+Y(oC7y z`{hFFR|4MDvVlEtgYB<9b+93=s=Y){&thSxC1Sl?j6(vBd&F^6@qC(0;Ako zo&UkJe?0aO`@=`))jD^vPISovtTgz#1xORwk9|LDN?FE2wPz;B!cXef~kLkQ-~6au;%+A^>lseF5OKvB}~D3^Emy& z%3UmPD3wS$)oFFhyy5#YVBCIXT(hxuVQ`ss0nhr~`e57qug-+x{5W;4v9>6Uam7+- z-#r#`UqYtPOK+)wLvGpQNxK|OSFgX1$hrZwMKEG5$Z_>Dknaav7B7Vf{aXtzal1)4 z`1DNOh;J%ptE z&7G;GOY?~@nz6ty0eEf!2a-be{`TgY+wHHBG)g)b)`AOB&1rJqEzzjzlGUiw^JE=Z zqNc!~sJ3OH5^M+u@TfgtO63lKRt8UBI&G*-Rhm5#I$w!32=;S?{9abLeuK%#P)& zT>G{(By+SR?aAQbA}5)It?zf+rfO=ZU+Q5&U@g4RG!WV^b$z{}_!r20LB94Hj!`Ne z^q14J-Hc}=pWZc0HXTZ{F&uiX?VC{XIAa+`yMcp8Bm9m@(S0q^%zuugi^d4r3Zm&E zCbHa-(tjlH;HKg)>_XL#jHOS8k|x;^O6#AquylWILv!vz$Rk>SAcW?|xj(ew3`CbZ z9Q7)6x&1ODyyIwJI5Jb3Rs^4xjiVcTuIsN-#&C?4ygqnxr}69fWvFNrAG^uB<^?4d z-(R0tv=EYdCy!Dgkj;n|uxwd?aG4vh^2+rn4U{H_Y%1pHK;dVkvGOZflmO|YtdvFy zgx8LzP-%-M%n?9(?p_s!QYYBrER4u|W~Hz@ICw4rI9yL@`J4va#V+m%0DhqjPK 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 aaf_8{`9Rj3b20-1{F9Ybk|-53^8Y_*_UPjP literal 0 HcmV?d00001