From 44206d0cf00b14e9d8236854b334d21845143ed8 Mon Sep 17 00:00:00 2001
From: Quentin Guilloteau <Quentin.Guilloteau@inria.fr>
Date: Wed, 12 Apr 2023 12:27:06 +0200
Subject: [PATCH] start some slides

---
 flake.nix                                |  18 ++
 slides/figs/mapek.jpg                    | Bin 0 -> 26995 bytes
 slides/main.md                           | 133 +++++++++++++
 slides/sty/beamercolorthemeshark.sty     | 187 ++++++++++++++++++
 slides/sty/beamerinnerthemechamfered.sty | 232 ++++++++++++++++++++++
 slides/sty/beamerouterthemewuerzburg.sty | 214 +++++++++++++++++++++
 slides/sty/cbfcolors.sty                 |  29 +++
 slides/template.tex                      | 235 +++++++++++++++++++++++
 8 files changed, 1048 insertions(+)
 create mode 100644 slides/figs/mapek.jpg
 create mode 100644 slides/main.md
 create mode 100644 slides/sty/beamercolorthemeshark.sty
 create mode 100644 slides/sty/beamerinnerthemechamfered.sty
 create mode 100644 slides/sty/beamerouterthemewuerzburg.sty
 create mode 100644 slides/sty/cbfcolors.sty
 create mode 100644 slides/template.tex

diff --git a/flake.nix b/flake.nix
index 5dee6e0..1cb78b8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -39,6 +39,24 @@
           fromImage = flakeImage;
           contents = with pkgs; [ mdbook mdbook-mermaid mdbook-admonish ]; # mdbook-linkcheck pour checker la validiter des liens
         };
+        
+        slides = pkgs.stdenv.mkDerivation {
+          name = "slides-tuto";
+          src = ./slides;
+          buildInputs = with pkgs; [
+            texlive.combined.scheme-full
+            pandoc
+            rubber
+          ];
+          buildPhase = ''
+            pandoc --from=markdown --to=beamer --slide-level=1 --template=template.tex --output=main.tex main.md
+            rubber -d main.tex
+          '';
+          installPhase = ''
+            mkdir -p $out
+            cp main.pdf $out/slides.pdf
+          '';
+        };
 
 
       };
diff --git a/slides/figs/mapek.jpg b/slides/figs/mapek.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9e026e038fb615c5f7466e1be85d217d59acf970
GIT binary patch
literal 26995
zcmex=<NpH&0WUXCHwH#VMg}nW|B%7SwIVZ(fx*|8L5qQbfrEjuJ(Gcjfq?;}LJF*i
z$$^1^87$($z~I0LmI29vB^en0-)3-T;O69H2O~~SZcZ@Z=H%w);pXP%;T7N!<m2Vz
z5t0;Am6BDJm6Vs!)D%-SH#L*eGP2XvG?27b6b2c>$j-sR&B-mw%`K`UD=Di(GWdUh
zL6C#dpYawmqY?v?AS1IN<NqTJ@(c`&tc+j)buj}Y6Eh1d8#@Ol7x(`o3|j>lm>8Lv
znOK-vSy@;Z7#M3AnV1<^1X+a?4ISBp0~6Vm3Pp?>CobercG`GQH0a_772~9$CQdFf
zaS2H&RW)@DO)V2sGjj_|D`yv1H+K(Dui%i-u<(e;sN|H?wDgS3tm2Z=vhs?`s^*r~
zw)T$Bu1S-pOr17;#>`oZ7B5-4Z25|nt2S-kvUS_`9Xod&I(+2lvEwIBp1O4T%GGPv
zZ`{1~@X_NZPoF)1@$%KjPoKYh{r3IG&tD*aF)}cNeFY*QK11`DAOjO46AKG73p>bP
zj7;Sqj|;M}DjKp0IR>&P778mFHFAhJO<cI~Ag8i%&<D|^qKjN&DkcwAKZ3jl_8D;=
zYa+{MaE~GUb&G+AnUR4>kXewyp5f~$jb+A+4*VyUoLFb~JNBdX>+7@3I+wrP&UWn_
z_sNufJ7x)Ydd6t@^l9GD{IT#qgF`*ve})IO*Z(sJJII!~ua%VBdgAZ$N9}(Z|5*QL
zX#5`k$5(z-;b`!TCW_IlfK*b{xv!O6r}R7Q$He84@$q*u{>gvRdHZbV?9{iX&8G`Z
z&t1^Br|Np(^0?WrWz9aU2rf_0EjhvGB)K?}tNHDm0M=ic>?T_n+E$)dyO8zpMYi6@
z4qgYDdtJZ(ls{7Y&#*#w!hePnQ}0}7e0X^Gv3tt)U)eYPXSg`^PV6LIeGe7ETuYV$
zM~+GnMpNC&^0qyu$*W#e#VstaUpssDjJr<_UzKyTv?m^Vw)H>5L#~VU&%ek2XE?a_
zC_{NjIQM@Bj<D|k4EDSJGyLPt)A-NOqV4*hVgB9v{|s!~MHue}#_0c1jMD$}@AZF%
zAErAN{}Wg%{;$6DKf@oXI|1yat_Ax)v}Wx8{CoX>h6mRk_5X0%694n>_5TbXvI`w#
zuZkY}&u~a|(SL^X@Am&^XpZi(A9cWJ2n@0iFi8pLMa>3UvTP?y)=R~{{PsPnW!u_?
zOV6FYy)w^G*^8~Nxc^dvRlHdJiH(ou|7LzA|4VVz_V(0s{R?`&T-ITK$`m?Ztp3D$
znA~dZ!@mC+gw~4R_5)>DO$XU5nXXz_asNY07qH~DZOX5bx|TO}YVCy!?Aj04|CFt9
z|Id(6ZU0v?_UQ9JmG|qfZ~4#gi*cR&;rLHhKl=Y2_*VbRXm|JdAD{RAXIP*4pWzF$
zgUs|M`zN6n>R<QF|7Ey((Yo@3@}IO`*nd6d|5xJb#Q;WE5gfSqp4OF8Ywv7sUB#=V
zwP9~_*PIN^?Pxwb&1oHn0^`ejYbuIEbE921?Va(TVTn$z=!XMA+YN*!rSP#8?w0$)
zxY;$RJLJ;y4U<E<o<<!qoqDf;@4`kQnaArz&)@lR?vQM~$K~YGYVFg3CYw3ZjdUh0
zsBo!}P<WEwXMKS^+BM~VMgQSjrH7;L-dlC9!DOYBr~ahn3uheTh(EUG^s1KzHxIAy
ztmMCumN7}YHTR<Bl(#VkUl(w133FZEX=7Pi{!Kd8NmI}7y{^G4)!Wxkr7@U4$k_W)
zy}jgj+t%HCL+3JN1`2uBOsJCVNof6(!5r6hety(N-G!TW&iZvX_r2$Dor9Z2cEmnu
zmq`}&tciVS-j><6Tp%Jc@Zu!b8Pm?09dY|SKhZ&YOPJ`h^~>+R_|K5P;o9OYjq4IR
z;?`)}9lyuex@hu3Tg#WTwyt=+OK;-0(kpsLiu`6jc5$B+9@w*gx`4WTD?{eR&^7DV
zluB2;dy}U;@1B#>Ny!r@EVODl-f1oUwtr#frqir%AGz8Ds+<+Op2=l-=xr#=q*_*n
ztiTBWNB<c(mIU~eMsWG>&O7k#l*n5(*TAXA_i25-w{daA?dZFA?j4#C(~vvUvuwv5
zbAHue)y;1-nEr~o`&}(r8>&{#J!STZgvlB_o7|41u)8z1KMhg+Sl;sR=CiEAnlmrT
zmh?WIlGJi?OMwx8ycfgWMJwX6rA%A*?!9{Ti6`#~wks=*Opm!ee6lFD|AA)7-*B(1
z$+M!lm&{D8oy@?s$G7)JNdd>76--}6+iD^ox>k3bTgjJuq|N>CPxsTm52_ry<i5Z(
z>v!yhFE`#U-Mh!*=p~(PFGS}>CMQT3xixIFlzh}+vSQ7XYg-~sewuo`PpalPr!tdM
zQCiV!$19HaM?I5QWme7HBPOnCv1MxFj*L%%DG7eeCANHp4&oV$x)?ODVC^|u{xeK!
zF8<Gu^d$b5MYwy+)8&7rNYDQ*uJoVb;-Ln!Kau|#l#X}Rzu{l;pW(%{HT}HxC$!!E
zGi<1x{;xCY`p5J?-Ex}$88+B0{?D)|YU3Z{{|pLyrT-oL7XM2%gLz&1@`piJ0=~$5
zO=}R`6&Cv4Icn{tP3w0_F+8m?{m-DhzT-c`8~*hF42!jQ?D@~oZ~gw)xB34W983@Y
z$o}UZFZiF~hTQr83~u3tmH!#!%I|-DYyYnygL%>i_di{``2QA8{?FiMS`vEhhw?wy
zSoVKAPX1?DEVWAut5-qZfB5|0y{mu1tIHQ}?dU#y;Xgy#;`lZF^0$^tKg&2&FYwS;
zPWIo0OQrLLUd-yh*|KZuo>@=V-!$*w>629Txcc*XQ{B{?(YJ0zb++yibW)qRZ2GBy
z-B0q?-FW}r`PMDZLf+d4g<}q^n{Xzia^va`2cy^VS1~-;a{IQ1o$M=b-6P)WQ&$~)
zIz8U_>?F5<*~Yu=TkQ@uW$)+d-n8gH!y#j>m1$h&5`_((>$YUb$%qTz<<&a=);Rxj
zs=>;%drRZj%k=FD*)HYQTl$T$FgaIYgTl==#}30j<>PtmPaS0bGqj{{Y|<B2eRIKm
z1#f;pu1Cx+m0n59o^79uW><xqTx@<YdsDz{?)f5|I*aN=Zkb-Qi~r_takNVGS^LAk
zPW4;kGpCh{GdfjHcHtJ4Wfr_Hnv^YT_vo&!`qn1zl#H8-C2XpOa~5)6?z_Tx?njqI
zaLA9c<X(Z}Yg7zH0(L7KY`nqn_Q0|Vr)utMe}UuGx_iQ3uX*LWs(YGCv1HD|3HG74
zFYT&aoAXZYn&*SANL`iBYv;M1c2<zMFZm{G>Alv6zkfHDRxgW;iOJ<inWb>X;f3_|
zTMag!j<Htzv%K#w?LFRI%DE<KYSE(GD$7JZ_VjeUn#W!Cqh*pw;Fj)(7hWB8)OwWE
z*uKwVUFVyUpLR!|MIE@GR9fwOah>iB-i3=~`!w&TZvGv9dr!x{n@|4Ee=F@i`^oe2
z>ANr6TwtGdPfM-;@fF7wIfKo&7QgG6qTYD4WLC5zfA^k{@0;AF`=>6Q%|3Uk<7R<}
zM|6HXw%~mq%ltCRdg&Ga#H@>VV|4GHGD%o-d7Ytl-y7SEeV0mV{ZIb8uwmP-PmBUT
zKelP`2P|Kw!8ET?uhpb#%`O|AX>V7?=zP*pl6)7=<f$lm%=T#7v5DJ{a8FNhtJuO3
zWtPC{bSYu#dFNQuy?fWLF^s<LEMnkdc3ebD$Ryr1@Tf^tWcRXtVjsDWbvRs?uCGdB
zSLCh=V3%EVJMw3}u>VBy^DAE&ZoIWq^U3?$^L-{C-y3jw-ICw>hi6+ylsviOH?gpo
zZRx7%hPT|-9h@e@!<hCm_D@-uAooGhH5&RUm3fC2$Y+#GM=trQzHrs$j9I*Aw=SLY
zD|gPcZSz0A<vwEO{8rAAsljqSpSN+v?xXRUS9JCB_~s|9x1EyBqj!3Ts4L5p^-je;
zAD-@AUEzM@W}DG<ajE<ByqZ#PMN4;nIdHV}VrG?#u%nHb*hF6zHI9@nh4nJ-lN$Q2
z{KzT!U7@zM=^Dq{r$$>QDltmWtoxZNxAz5e)8%(d4gOef-qP;dA7mvm-QZQ#$};ba
z=BXJE91e(OwW?fE+4EzT*uQ(<er~ZYeE#xcNAkpL<~$p<CQsVaR8+a{U9GU=&h4AG
z?6{n(vUT%+hW>~sgCN1bH~z9}XO;=H%{p}M6!(v{Dcd&9aN56%MRt|be+Is)3+(Ev
z?))gNlkK<`?JS%bb~00HOX|Oyt&$vk<;=SaSAF2kt?^clihEgBEYF{D?CjT!xPWhu
zMDOW(P3)21?`_t-Dn9Z~1V6`($Sm{v9s90Mi%!g2b%tlsfzHo=4llT6bv?6qNyhgJ
zQPKBrM&DIk<ThdEW0rMCIj7oIGB3+uKL75)%#!(?!k#N4VrQOhy31>HFCypht{`TK
zo1H-($NrSBcfPE!ef#AvKOVGMEEbz~BVuYu{pz^gnQk+ebQ>?{mJUpC<6Y5N(`3ZQ
zRkGS^Ro99ITB}+EEEpXQFg1vEX)IvEhIgL!|EXba|4q;JKf~hIlG1Zg^(P&7{%6=&
zr2kh&gE{}`{7*U+%l{qt)&H+E>-dNBf11AJ|7O2g|6=Oeet4_S{+H@%`NQ^~xG(O1
zBcJ-8VNqCv)r%_rrQU(g7izVl7~Eb)hTrAQ+U|8~--`_9sUNQY>D#CLpJ9XT{C_>`
z9)132^M3#9TlIe#uJhw=)GgrihPKp>{%81-9PS+Ryy;**XGWLA%IwMzqpv}+ZEm&N
zbFZwasa<ks=JV^Or{79X`t&kQxthTyuOcNz!1}?z5XKi<!c~{NynlPze}>G<HTCO!
z7VsM~Zi`%GH|bb-!JpOM{{(F_{xh6;{)qq2wEql`GMMwaj{aw8@s9e>u<-H``JcM~
z8ID~1&%iNl>wgC4<sJ5)qW?2=F5q3IE&fkXH~U|^zd-$y?f)5s-Tx>>UH{8BPvJkq
z$^3t64Q4CW#Q$*Fy8f4}jpKiYN%#Nw%75t0j{jm+(fpr5b^ni947V0-tbZtUZU2js
zkL>@v>pz;*A5vXgf8izEC0RteMBs;ir2J>gA5eqs9|~Wqha1Yc-8Jby1FFgB{=2|-
zRkR!3k4yeDwD^NU;XE`HF0kFjRJ9m26da^O!t_x?q8}UzGJhbU;L4Eu?X2jT3aih7
zyS80d-nVDg$2X<3S8FWWad7IQo(FlikCuF42uho_Q<_^gKlaL>=zgJB*9>0XIx;Qn
zLsX?*)Dh)yiF-@FFW}qObp+iTplF&0il+JSXxgPM{7=v}`(L{~B$@=F(NqVIrWbUJ
zrooe7&|Kn)9`y@&cWHwX6~pAmzV!?#^S|UUzMi}FRF?6*HJ>tX@pt|4T=Q!2Q_ak8
z`J1BWJT@18dyD;2gRS(Xowt#SmX-gcFW2}di)?y*>&o`;!di`a9vQhOELAKSroHt+
zX^sZ4-S4)467kXhZ{t__zd~30AI|^D`r`gKeo&84J6cZXKf}c2qxRp}uhf6>4zq8o
ze<HrP{)XM@{|qi`8A>mJnw^W<7yJs@!q5wDbzY@bhq3!V!;53<y6^40&r*M4^@9Hl
z*Cp-0B!{~?$b4J=FxKi@;fjdUW>Z(M*Q{MWUuSdu<&0yZ?d$8S+Vn-T@5yVjcfI-Z
z+NY&I^0MGOnRJG`4s1{DcKlhrd`YTXSXgLkLg>_n)KuFJn*i3`)~{uqINq&Ur?_ML
zgjChm!z+J1S`*G)_%M9Sj#}r#;_H{hP2T4ruD?9iJjRpV!QZFxXUMlY<7~~v8$QNP
zytM8%r|hj~zGhE;Em^#*mY1PyO0bZ}6W2**;l0P6lq8%w@Of(DG0mH28FWPg9ay1Q
zB2MF~`X!U<)!i}DzdIE-T@Gouy<ShkZN7Fv;psZj=tEIkzb#xIcXZW><)N4I^Kwkp
zLPK~i8m3OrVlZ&`vkvp`@LRv8V!7w#lIFCt4_~ycFaP%T*`1iPzjuVT)VyPU7PU6@
z@AgGM);-8(J5qlrIMK}R;4>ZhoX!1DRlNWB@Y%j#UOM?$9AEbd{?)e`4Nh%87wYzQ
z=fs9X|5U=Jep|id<+ju1wUsPl??PPO9sa)Na6!a@CzEe8?eLYlc5$E7Yxy1B#?e`q
z&XhH!OtO?&z45Dr#PaiHuFDTgTj=V<2k+b{92uXrUj62pS<)G&?XD*7JnvwCtif8^
zw%q+{!roe=PnPp;sbvcDY;yCOwDj==w&M>Y=Sh6zx}RAkc;(%qf0wVEeb~s<^0{?S
z4~N5I8O8{yl<mEbbxZS0xw%iz|KZkC<hlHqQmfag2-n^--i#-o@824{rOD$D@58-$
ztZL5>-)es4B_eb-|65yMiF~M~y%)n5>%GaIo2FIh<%O!Xo$_^yIJA4$tz%_db_WRe
ze2g^w@%rGT(=6I6w$HTLcvzr1d&#{|2B85_23phG*R9oCw<q#3cjrW%)Cmzc&OGOs
zRonIF6H~Qu%0E%Q$trRxS1uokn)5+ze$JVBG8?94G&0O>`<8L?_uKvna!n0Zy52|T
z$zD?Pu66n+k)F!`wC3Ea_Qh7mIGOKU>)m>G?Hz+Vx6aC3`>as0w6%Hh%6Cf&;|iDY
z3-hKQw@=-7A@{k}mPHRsXQWn7+orKEFf5Gul=8d&wIy=Q4F{LLV$9cFw_tMk{%K;H
z+ah$6@12UXE}gz6ar2fw4QAtm_OC#_%4D^L{}~oaz0RKW!T;BOvHBY)SJc07+jWaU
zTlkRtCqYo9l`J#=my*@(HU1p+C)^+L|LrNNf6?)RxjbgqyyNcI@^eoJ-@0+<j*|xu
z^Kr?<2^H(I&gplATZK+rE#9#v_W9<%4^iir9-BD#;?H@}Uj4goTZry`lxJi8$oRNa
z?ECm%Pp+PRaZg~{XV*(n{zBQO^NW|?+OqAUU#CRxW0oUJcp7gtsQHU#nNOR?yt`BA
z&TFaFH?s_L`Ieu$)2Ezvl37`47x#PNAKAV;s=d#;iR|c~8CZTIktL<_n1R#tZG{n5
zZ(FBLFZ^)n&?!UNt=qP2blL02;y$T*-m?|X)zw8csfEi<F3i{#_{#j+_h&!l9({V3
z;dXtNYdHh+MfaDl7;oRnwlZBK7H%$n?c?ox8=@m;9-pcgvP1D#vdk5!{7xI|)#r8B
z&94`^E~r`7&DR$olOL$S(q9-?&g5+0x=-w|(UJ>u%QT+4|D4kMsb<aoOS{&FX-qzD
z$5rAQUd<b)mdfbatHc`ec*A)S#v2zsG&2|$b!njD$)=On{AhQ%ut+G&T&wRt!>a_J
zy=Tr|&?(e6VO)EDY4NS=-6gq-*Dm@@zqMrktCH7@&+Zt@&Hna8<JUFmm>-vqGCvWj
zsCJ#eGx>AYb;F6bWz@3cJuZ~wikW$H7i_Zgxh^!{=vkW0WR<mN8It$Sezafc;U4GG
zzq6Ma@|g6RIjKyvdi3r=@elq>yR>EP{Vpqb$J$+!&Jh2R6eDJTuk4lowY7l`>`RNM
z&HogTSN|ra`#*y_*NfMvqZxy)`e<*utNdYFxANSTvRlr*sc#LvG5Kir%U|oJu6BO@
za(ls@V|)@v?i<OwyB+2~62{;9pW%tyrvD5Za^HWNwBkqg!EaLSZC_-A4n2D8eQn>F
z<8Qb5HfmS)*k4lmy~egGfW6qYsQ&h?cTF$zAD!0!QdH)?=H-b?QT7YxnMzOjC*N9f
z?Yr6bg5!mmHo*rKSXEmOD>I*G31GPj>f${yijF-f^6eATdXW?BTIBfImMv<qw11;p
z?T|kI(Da+z?!?7P2bN8`y7{EoC;6HF%Rh^*UQ%(|ch8*6TXTXkrS>_^w*I5#ao0HC
z{7yo3ebn_;Qu8J+c`Z;oKX7Z;BfAw5Ngn6d6zQMgzi@%wd9rJPCVS5w1IEj0wdEdu
z_M6|!i+@mf%W~uA#uu(7R{C8gzQrYBpJwDQepJnU@X6gHcMrO~{wleE_mw8&SzQK^
zKv#zFu5+h2*R4z3-l@JzD=*cR@tKCf?%OMmXL)x^b8p{PJ-cFAbtccXw@PgpOO*4T
zs4qMkxu`+&__EA^n|8BB=Wr&xR<hl+K+x!vXF>RVbyLx6oeSe`MMvDt{C4S9)SKTX
zdd)f3Y*%mgxmktviZIR=Ykl}5?vh8zZI35g`aIUovX~lWG9ht_;Ol#vzh-OSj#d0J
zpZ{f9UF@B3v)+B7P4~{K2T29ZuzcmmS`sotR)bmXxYK3b5^r0sh@>5x+iqE?dWwk5
zoX&IZ^t+-gmJjvK$|Vy`bS+~gV<nu7)+|@(y34?myj7PW_5KSvxvQ#uweG%KcFr>S
zbj@=y>$dumiC1c~og@;r_h}^bDs`!H$`q~$ag}9S@o34S2Als36ql|m=W*yQoOSP!
z=`_y88OwT)1-TS9t+C}5aAe(LaF8Wi#$eHLkqm>5E(1~b1uHWaa9tNOGcStrF3uO(
z6nXmjtu0*=hczVb&1+lb`S3pjpLb2EX31{zeMxIB@9~P+)Wc@^*zU(#FAZihTW*KW
zB#$qzT|L(G{>f67@Lv3%L3c`h)tZyZ$+}m!zS-dRy==8sw9o08N|A0d%4O%PHoJmj
zACv+hIMCNd?Bhw3PwpayE7K>1adfd;>f8xnnHuz;A?R|+?)2SP@)mC09(el9ZAXi9
z0;TFVc&=-gK9;`g<(acbF-3n#P*AMjYr~ft<YtE1Y?Qmd*6949iJk?s`aANTTq`wf
zTJ|LA+?}sS_wM*v_|E--24nvtec>PdC2>+)bM1Zer*7@_vawz%adzp>*Khn^hMTPC
z$&AWbTd6tiKSSt*$$AS{n9ns#DyrFVN8?x60|o|$2Rw{7_!GSy*yHwmw*-~9Oa9HR
zKen+nU+ATj_tM>ardzeNaOCKOoGp1%#kBgspRA^geR?1D<YRZ_%6lepy{xL4|FT$}
zg?n}5<vaYR8qD67_DX&G^y<*1Z<6oUCJV*5bLwvN<o@1%`c69ArnmM_7To#IaAT+V
zzrIygVY8RLw6nOTQ}Vjv?c2p4p3aPTd|oF{T<6G>N!63X*V;c>7z0%+!npm>`JZAo
z!T%W&YTf@cxNJ@Sk^axI%KUHhoBdzBt{unIAa{^0v1Pxsbj89Kc2jj3luOpEe%H1&
zdTDBWi3#H=JOjGf?Kp=4F0czftp6$aX8#-M>OV`?&S(11aAN7h_rJd7|CPAfiz-!r
zVmVai3gbmjnIh%mN-7g~XuVY6>ETb~JzDsEAMdnF<@-M@eR=8KjLoOhelNM4=P$`C
z_`-i{S;-6$#>3G+R@}PdzWm3mlV7@@DJswW^sDyd*S5j~=NFn@)@BP$Rh-(Ob;>b}
zeTQ<__R8eM6^^QFziu%X`@~~Xyr9(b%h|%s73oK;7&HH9S3kem6#FIC_q6-#?#T06
zwVi*e1K0yyi+`nemAt-rw)IWX%c@Ni)+evv*PXdHal*q0xf`Yz0+_<w)<3)}9m%bF
z##i)7&EeXNd!cuHZ*+>!KetU|0biu4y+lRw(<_T=%iVk!tFsnlnZ2A-_fPRK<DITo
zTju7wUweD)xzFytk^}b^yq%`}_olMFfqkp`&;Jas!);eqgdKYI;FVO)rk7T`K24v-
zo>2VK#`$SN^#%5H?-(6Bt?MRY-t}TP-)}wP@pY}K<l7tR40jGK)~YQqe0y)VwD)c8
z7s|Uf?`V5;&vB<}>(vYWt1ht4(qwn^hW8s_{Rg@F2lKzy>HKHdI62@y!-d|`ttTtg
z|HgOQze%}b|3x`AmqE1iA^%SfP``g;pZ{M$+1zXDE%r~8KeGQjW@-P$rG)W%psNT2
zDpvpbs6lM9P5S3=a$C>8j?=wp5+0qFsc))j(eA$?-s<U%59W-A`d9wpO|YB)=)AD(
zudk;wqk=!p@|&&x{;3~_cscV|<}V9)ZT*i;EA;zS)|#ufbu}MPSi0E-`N-$;8uDJ}
z;`v_9I@4MH==J+8D-<7HS~GL;<%hNolk;`57i_p(a#rtdZprV6wF~1Pb|h^4TK4<M
zU*G5j91q*LD;Bri(|FisAgbKzq||sr>tj%$D}zXA_37Kv9CFXTJ<_f&k<3&p4g4bc
zs#be;Z2FOT%4+)DH~-E$+IRfgRuhdG?{X9JXZG)upURN?YSy`li(S;N=uOf+{5`OL
zUS_|8Qg2=ItRumX?L~N^7yqbto!o5mN;+g`&wqv@<3r8SR_4uL<{Bl}mVA0uwfoPd
z_*d*_CYaZ&@`bv;ejlsLkeo43>cSV5{EgAip8jXJe)o>~>{4Sn&&ufe2g1&=N{DP>
zJgoj_if!?~qr2_@YDCo{PyWoB|0&?>{oi75{xf`8n0XDkrNwX?@5E1bGVZa$1$?{Y
znqSgjQmFI8{y!bx;=l3k{TCE=zR~_k@Q3eztIhxQWF5mP!|*a=Q5S=z#nMF$#-_FW
zF4rCkWR(^AG1$e-xNYKo%`*I%{M@4TiI44hiW8N8G`q$BEZvd2Ywo7>B|#+#_UE+s
zE;+D(FWTcHU+-ErvB@Gk`~TL?J@IMX!+f{ioqtxxt$bZ4dg1G)&A!snS)6Cgzqy~<
z)w^5h^z|3n^C!JOCMR*?>Vw>LkKooTIl_O<M8EEAD5^d2=LPecMJqFJt(&^qL9gWX
zigilL^L6*7*!8vZ@LvhN#gMIJwaaR?a?`qX%-YNcdHC6OcK*@T?RmeVBI@gw)yJ%t
zY<>FW_TuX~6Xvniy1$I|6=6Jo<Hy;x%ewtOhR(dSKAKbZ#OasY)t4pDNSFL#Kevoi
z$*Mif%}vtHjb}+!lf|0u+0oWFQnu~c-u3A2F*(f%MyAEi&e!+Y9n0ssS2=CxeZAh5
z*0#HUN1v(;c98umditfD(PjPT|IY94%GC~+F`c%sMM!4i?@m9_#<#JyC<6=BE*OGB
zqu;vwT~?U%>fbBr?2>aSGn;xITLfO2pP=18`AD7WN5PC5!|ZRmHk10-yz+2+`an24
z|H^OSUjgjiYbu&SJ)2kNnbPLJW`sZAF>|+0q5hfd>62a`+o$nJ;Gf*Zl>ZFV`pmPo
z2TuH>yeR$8tldk0#Cu<UmVNV9tb1tjuIRrGooOeZf6uxZDmP>8`?_ZhMq7H>-7W^U
z_U;h&D7L+F{Oqo|{VIFbp0}IBbrm%8x@28>z(?OD;k?UUihX+ZYrjHt#Gi{ts?r|S
z?_hX;{;7j3_nyMVCzV&ZHB2v0Shb*dntInWwU4&<7Mo176WM4r_0XhE@t!lj+)jR#
zVsXcP!ScfoZR4XV-tCF4-lyPvbny*q_jHMK4l|FRIeu-oc67A0M$)z|O&SWlPRB(w
z1VtG8ni?!)?GF~7ER<XPDEs&|Q&#IqmTq_L?)-9PckU0e=X!lLFf=qoYX#S;1q=*t
z7?vYOgk-GhPdZ<(e-pj=Kf|Tg<;c?lnk)Y^sPf1DXV{o`{y&44*xbzj461C;{~bNC
z|4YFF-u-yy1-99sO)b~+{AW0!51(6Rcnxkxxbi!GS((8o4QfW1uDYwO^?Tt0zHr>D
zI%4eG_CG28DF3$+RBok~i_ib~y!Jms+~xlaFW4F^=5zmNIMJW_pCRG){imuqKZO6e
z+Vj_6-(3IV*qVIYatrvTAx)XEEM}f(^>yi@220=QgR^R{9=uZ0-D#2=KkavD2a{&!
zb8&%!CGwwVo&L|z(j0kVuI`@b)J;N8u4^(+eTwv`O>;2U{Lf$$ULSZ;#8~;LPNs?<
z*PbGcl!R)d?Gg)kcIfG@Th#aHR>rcX04dAFf)@uq9}LQhdY*41TbQUb{h!d@e`j|l
z#YIb&doH^(Z%4*?E&mlO-qr+vt8Tfx$2;Se+kzuHMIPl5u`+MZ82`OE-`PRdRHR`w
zE2#OBnyRpx`9hP$QC)_BD_?rmBO7kNGTV5rc}nt;jq_$No>-Sq*S2AC_pv&0$;;0s
z$6mbf<Yw$PQ|XF>PaO3>CSUj$`+Ciy2CWzKG%jqta5CGl@00zH9~*bch2GJzYL+hj
z)pPA_(X8$5Cb<b~E+4sY@Aw(<Yq?ME9y#3L(s}*knk!dp5+BZ=9@hEwtgPSF{hNH^
z56s(q$U=c{NdSAbYij1Lf6c27OgD>a-O_R6gprm<`;Lk`ZR{Ub-_PFopJD#$`rp6h
ze_UYs5+aYpzxZvp{Lf$8|1<30_@AMdq2M0pe}?c!=YLC@^8e+y9vxHO^n6>ypYUB3
z;pH9cZ<c#>Pl)(rl)d`5@BBZ1ZvSVv|KdNxu?98N0jAdxF*pA+oIkt$@4x;(*}{jy
z#a6DU__5`KM!lfNDW48zel<Hce=mkNFIL!HPyWwfANHT&`#1ZKi{F;nfBu^PpP@ea
zKZ6v*ysmZmI{Tl$y8Z9p@qeagU(GYw&{TeTON7d`()`^|B4rM8KA-tqUPFZOinmUH
z@@bQmG9KpECk_TWyz-XQ?%nlq>b->~)9eH{TJ@|d^Ima&m#xvAU+*pM)HeQkwdqHB
z*tI3z>&5QRydeAWrI}9hhVF$-L3|NC;ekA2-!8hd?lC;flPq|YtHnjGfs5g}u8qdz
zm}N^JS?@HR>mhJLU1H<*_uIG&KRu}Kdf5hEyRN~&!0?4>8fcNo=C8iV9v2sW{wlqs
z)&JLye_t+5yk&9ynfiwXyj(}G{_$S?;%UOvd(Zy)=!l7FKace|zWmf)_Uoc^dLP>h
z_kS^|Wp=OI9<C)Fywkb=Yv7lF%Ga@Coe$RvJB4LiaNqSjd-Ux|qq}F0ugr{|SIf#!
zd~)%R-A8WJW|dzoX@8QrO@H>w3*UCm-(Y+Eh1K=wrI}KG{W;Ti<t{1v$iH_(%_sRt
z*?md1C)aXmFluHjYT(j9V2hIf43pZ|{b#tbJ^eq!Qf|L3$O~J7ga3KS?f%b@ba(#0
zDY{md|9SDA|JyyW{>4KFX;52rBCctKoQlo=T>C}-Gu)65{LgSvH{ze<e})Nhz5f{!
ze(V1g+QN7pJg?aWYSUa`G6zj-W`}}Tx;V(J$5RsRsOPOe@%oYdZ|0l-8D5-vr*HrG
z-0y#Tm;YzDz{^l*C;p#dqTK0!2e<D(<#qFe`k$^kx&I97)BZDD?2WjGN76wSc_<&&
zBxeoXyW#Rz4VA6?w{|_ddyrS=#2UNBw!Be`8Z10*Odr|vZ}xqdeYiA%@A<`2OUWsG
zEm7x=E8kZCxY{bbtK_UxadN55t+X}mLJ?WYr>4yRmGYdi{pZoL(5b6mSn2KNpS&{4
z-5};?(BGR6lkaJYKV$#6fITo~^^G6r4@;VD@_ZyKX?6Qd;i}u}zxgj7_|IUm)>r<B
zl-ZWvZ<Zem<%Ms>@N2yilbxmZ{G;3y#<el`wy%lzEZHY_!RhqcShch%a}F=NJ+W<8
zlEwM&?mzXeZ(V&Nefvcdk8984_R4F`OWxS<b;k}{2HD2{46kM9^H)?|cHCAPp55#8
z^2n{;FL%zCYCf6dZ|(k}i{a#^ALS1vbRYJ;x^VYy?%AVPCV6b~)fPH)G_Zl$R_pv9
z1v~ct3=4w(Gu(gO|4(n%EDh#q{~21?5Bz8N!WIAfZ{dH2qo8?2{wDhuV)pO99{<lE
z4r*PUu0O>1An~%N<GdZy3g@3(@t>iE8K%b`Sxx;fR{g*KcKl~}^a8Br@Ukh3Z3|5v
z+sD|Jngp=x{%7FeZ~V{jLS+B<UyuJYbT9rVAkX}t;euv8!m?AIAO15O)SIMm*-P9l
z;HAyO%gWMIroFNblWX&D$#-unwOH82-6{Je*H<~>+84v~Qwt9F8-y>umbZEF%U@4h
ze$~FIUOXXHw(yy=!tYIP#}|q)w69#W(^oy{ib?g0J;sm3&pb(Xzv3^LWx&_*v|osC
z{_}ZDZz_jRatm=`oqMM>lzC_JQ3k68yLWHe*!V7APjP!ATa@SAz`ADjwZ)r%EPD1Y
zedC9<%~{j6%DgLn_WNy9-+ij;FKg7s4^jR$RsEgs<s<e7@3N5ATplgAql@w2@s)p8
zFim<Lr}U9qVvlb6lbi2u{JOTRRq^=REj;Gt+vTU`Wc=g1^yTHg`_(GDmaV&yzVAwX
z#i{#Wjv0Si@i%*EXh^7QXlQ_Fr~}u60tTkJ7+q0V`X6n;99zKG<sNa#J%3l%x%;k?
zrc)RGXm|U_V;-D2$$IIQdoG7u40r7_=b!Rzt@QpMU-$fHSYNsS3v*oj1LME53m^Xc
zAa?smS^2l3<o+*jt;$o>w`=%c7h$}2_ea0$#;afc3RR~3ySSh0+KUyD1y3999r$?R
z+KKflmRD>-AD$O5^LkaMwqx5S%M-u(=1Vq8*3NjRwky}Lbic^DrK@=Je*10r{=M5)
z@802)f~%r;_Mh1)q^J|o^H{0DI;P9rI&}6tk!>O=AB+#IH<MHNX!>`3%fqfu*1m4B
zRsR{>_V0+ex^RX=Yt2P@pT`rd(zfb8xo(m#?7rmm>eyFi=D%#8zLNeZIE(Y`IZpT9
z@aC8QL>Mm|UY{8h9TDquIdbjSgIl-u2edwz`|M7LLT_8;+o(l*s{Xu^Iyd>lr*EHw
z_lpa^UUqhty6dgF3%An)LjJrmVEnf3VExvuYqP^HC0$*=X3JY9ZjIDwR~JX$zP<DD
zXY-TBnui*%Fc|qiVZ0d_m%So;pUUNu{|pi@&sSZ(_hPzLa>V^9E|t0K<`ztDd91w9
z;@NIrvGYOOwoUvh>lOXGdwcYxGu<);Y_5N=XzdjVVB0FvG_8S4W66mHtn2MQ9+5IV
zdbM}j{EXC(rI(o#Rl8@XZF4+1@0H6x#uruBzIWC*-3q#WBlE-G^|4p@r!T*yuae$u
zbD+fa^}mYp_8Kdb)*XBH%ziuT?oXjC^G!u({Ov*_Uv%H7|JA_sBmMA%7iO2XY?{3`
z>_ca%_Djo2nf@QzY~IMW{}g{~nrrpxKSSu{giPLR(-OtAPB^WcA{M*$-j?i>`Fb@$
z^Avwf%zt=0SoO-qTPIDgJy>>2W06Wn<7?$~&M$u&Y{hu<eRf{e+cG<CTJ>rd{)!LB
zqVC<9H}SOo-Mer9xvedZ6Zm)NKSN8|rC15kHjgLOlNIk4<um+!e@l90LH#-H8JqLP
zUfD_Py*~TM^ocQ%+&^_5ZTE1|n|8_YKZDnur8DLvuQ)Ek_;N}(*RFNjA91hed0F;-
zQs&Fj1xMFqZ8vMQyKwtNZ$jf70i#NFS*>jgiyzgRJ&(SSa8+;J%`N8FOsZG5#OJg{
zm;Zb)^#a4eh6fYxHQ4g4d==F?Z+dd+irCF-w{BvevS?buPVNKpQ4hZAi@aK2`A~Z`
z=lO3rVNtRFcC0?MDa)uk_3pd_PcCo$efzGn*N?fzes7mY*>0Pe%r7k#VY6+=1i|Yn
zjXwg|7aZ2|6$w^6<t^pa@^NY@kCB$w=ehnzJY~O4U*x|gCgYpgFWug|M~}`?^Iko3
zX(*>ij^MWjHh-BbW%rDCZQ1ZK>uA}nO)odx@?LW9PV^Ri&0U28eT7>cH9SrpILlBz
zYu)nX#WzpZSH(mh`*7r#sow2n6O-cDcS^24wCD2CS$6xgA0FSi^ZI)IS>9_6ze?yS
zw?sc(m!xoOl}75V!aE;l-HtS!FPLqo*rXfw-skcc>y9@`(Tx0a3yYG4Y$k14abM#E
zLjZfSXI!Ox$Je{+t{>mtTUfAt`Yyi>w`ylsCMKVD=Tgp*-Isf$zBk>x^Sa+})~EBk
z)^DxewsU)|v;WRbrQ2p{M(DKN;Fz9v=Sj`+r3_Vk+ZVmO^>y;ixP`}DrhPtEb~e}G
z_ogF<C%9I=oj13#cHMu5go@k2yXzGNUYfnA>DG-hd2r&B8n?aA`k!{Ib|?s5_+&42
z;`$e9d4Wjj=-!KGr8(EETl6S9^7_<CX0N}>{%4rL*1C4-+$n;$BX1vN-Q%3)%EaO-
zYsIxOW?JLA`|c(8q(Aa0UwixbKZD!+C00v!Jn$8?Kl=CKKlca?M$o8`R^Q5%k(pxV
zR=uySZbxfvS!R0YfEbs-;@9D;r-CM@mHPJnXNXz!pW)(a2c{p7T~m3s$tk2JNP4{#
zZxL{FWYH}Nn{IgbcJy7hNsD6KCapRz?P}B}$>fsf_*L{|WY&B^)~OBMhsE?Iwr&^P
zowc#)gmR1_OZn=1YO`ZEZrXTVXQ@`nrtMN|8%qsiZi&ievDqJ)Gu8gzDu$OY)(KsY
zyBh8JQNCwcx>WhiCsJZ_BFj1!sTtbbuJ63P;ym-`HIg<#*UBbjO{iG+=|4lLoXhp7
zm}x%Sj8|{?tkCM>urg+j?DOS&8LE!z7RJ@Bew3RZzG?fF^(A|a-M4Q%o%vMg*{f%-
z?5%Y^X&zefSmHm!Yv&a)KQ?=8{_sb9`%9He71M5=i8;iy_u9Olx6}g|cyByvuwERR
zvwn>!$CGKN9$7x>i&QA<nY3CbooCK>(dKn`<Nq@pa()<V#C`JZ+pij?9q;PSh1iAN
ze^L-37xKwsow@VA9Utzu+IX&ZE-yAY9<}rG+ebT7t1F&mPPMxd7$S7%>CWe}E10jn
zSg#i^?3!4(<aFwz?!RfC?{nXN)wbSk?lDiZ@7lB*9aEMaK4+ADh25ra?h57(|DPIF
z@Bem})&C0E@)~LRQLCx_lZCJMf78ABpW&s`<+Vr?B_e}i^5Z*f4Ww8Gb0^M`%i|wb
zZLUx|80u}E`Mqlu<7vZt3=E<9ycNrA<()5WxxJSCDBGh;!ZOQbwcLBQeY4jVlPP}b
zAlGUnnK;kD!N^sKsfy{8Tg5u<e*$M+DuPbC^!?)aYAt<j-<G|-DV#FB#@pqOevfDl
z+yBsJ!+(Ya?A`Sr0{%1niIx8_FQWbe^U?i3H0uB9HOQ;Crtm&+-8N69{csWc%oxke
z^V39Ua=i2Nx7%`Ji@xYfqpW}o^Iut++ouc1xyvo)Ij=kC@|+Wjh6N$>+%o<%w0t`J
zuR%`tKf^)i{|p~X>JL>W{%3ID7yHlfVBvp;AG;Vl_Q-wP@WW0zdu!sNSHW4~oBX6}
z?`&p@SrIo=<+0k9_a@QZ^93@09Xcy?ID6^+2ooRaGwC}N+E@x3?`^Kf?{>}o&7~<9
z_Sh%0-ko`+BscuGm!wLh-C4EN^c#nzcXwTy@A6S}+w#KIFRoYBluJ$ByQgaJ);Gnb
zYbGDqEmXl%Z(wmk;Xi}jg#Qfaj<!d$m%*{{!C$B6p4T7E`o(_Dboc4#-KU$S*KXo2
zi=F7w{OlIP@x5h*D?J`NIcjt*>6^o#J(-ArdHrIY^FQI!{J$6~w*O~f<^K=vop3&F
z|I1(#{hy(!9n{ZYUUy;*zhFg|uB5`YZ5{Wr!=D^o7U5F#$@1};$+7~a>VJA>ua`Tv
z?eo_8?Kb|p7u-H6&-a;TG0U&{OsUG_>s<#w{M($LYI|(+niuyp_I%`hp_F;uW5VHV
z@$Bk=GX{%y9yejU{-gNt=FIt-SGHQVKHI<I;rqOPCDm8D56-*DuYVY;TZEck`hWQA
z*uP+WbpMYCsB7dPTU-1quCqLG-H*kglPcn5W7nK9Tu`VI=QP#&bm6(`P<~YP?tj#$
z$$w$^nE#JU{y#(a0&cT9x!spd&wBm#+tFmJ9NN2N--e0tn$=tS?e6EFGXCTI`fbal
zKi1{R54+!Td3VTFw_KT;=2|E;d(l%*_Ggc6uGZr>pRJ$!)wjSOdGEdUZt0J>v}MPa
z+4Hxk^rlwkFeI%Jf6gKoa`msi(|%vC{|r&r*5$q{<(}<w`ElPRbMNTt(4?cmXRJGu
zuUyr~Zwc3}`X;%{-XFu}nqDc|wn|D`lc6Rm+I{ERN0!f@sM~~Y{jm1Z54-1w?`L(c
zUza>_o!-s(l<7j=&vsAzzIWw*l<bHeyux=fq>k==I&bx&ySH5HcI8OLeks3r;@fsZ
zC!;=|dW%%c;~N+J$on0z;o5`iU&VIL5A&GN?QrqdO%A^o|ISKJD&pf*pB#XZCoz(D
z*!~aCdrNDrZ1sb#nH<dLnRbbN+x8j0CAoJa>n_ARC^>n&%4vGoKgEywf0Tdin=Z0>
z>z-SCr>&J)d}97-#`MMsJ#DgC*Z-)OvHwee7X_u$S7g`mUrp_+bw7AdY3E##MJM&T
zes7b1sN%sXAH|U0RuXc}Bwr@-UhLL0QGNT%E@la?2v(WU@v%_gWy9&?wi}}}msVVR
zar5@8Sx2XonSFBkv~Q}+$GA9-4y{cd&$*<3d<@O~lezeov*_OKZF>TF1T{P!wY#Ob
z1m4i72|*3j2CG+5PtZM$nywp6YaACuWp6vt_m=hT=E_^8Z*2UtEuI){c+S3K&3^{I
z*WV}mn>DXjy8Zf_v)#lj0Y26v?91(su>WURg_b%Z;*_s#SzC5XS+4id>)4=^fBqW%
z(v>~3?X$juki4~jp@ZBsjz7CDU1wfe@$SWq+q}t#_bEqzkyg+4)eCP6VzW88V<pRX
z`6uxhB?#m7Yv!FLGryh{54`kXn#Gb`E}@eGj*6^aT_is5>g4|nXe9@ReufD*YW&+Y
z6n(=FS1a}^`CcnedF#q${5f>4xAV2HD@?R?{XSiOQ*dg#)RVH6TD5y0TTfEqy=3!X
zo4;v1!E%c6LxulIIn~Q78|U-A=J@2E!OXd4UCMukhy?rcM4QGNmxJ9t?%5EXIX&v?
zl&TUnjVC)dwq<<PeEUc_OH4g!5}QPqKmJU{EncOzGk0}d)-Kk&Q}S0jvP4bYw`8)7
zzUr<wT@`0y-W_Kt{}=MEMs=0{5?A4@d1+ha*3G)Hb8gIS=?V2$)>P^!GdE}vu!2+h
zf{kPG+84X-t*%eIl)31YVRouWH~VyxYR0h1&+g8dJnzP;Y5Vy0#abV+GQE3s{|&vb
zoTa*E)un~ytcShS+$WcxDw|+c`X{R%zgIXPU;2|-uG^ILYin2Jt+O(p)=iZ8=wEel
z&Z;x-3PippSpC&r{_@^Vc??s^*yTSed`yRyom?mJOx&!ha=o)_eUItfNRzjIm(G5%
z&JM}-y83qJQqQX$jGOGEb`HcW&+M&fTla*rY>qy&id|(=3xjqW>Z*}{4K}9_@49+#
z;-Z(ka?iKhxO~2)d|cT%eTvF%vye%=+4YBF)&FwWY5Zq6p#SgG?!sA73=jV^Jk*{1
zuXVpj{R8p;45{vaR5#UM*#4;h57U2!H>-CnYOtvP;hplIVPXDJ`5&zR8EyvtXW-14
z|3&x5;{OZ``+sY_(^$YK|4-<q{fp?2?*AC;zlF-&Gwr$?`uswTyO8mktV_36X_i@V
zahn-s?^zQs^0GPng6V7lqfgN`6P|CmSoe|Rk1IpMe+G!t)SoZ^1$D+HBxjtfG5#nW
zbKy)``M=bE^Ok3N&iK2G@$&Z~^W_WIXI!*#UR2R^BPMgZw;sdir2J_W{!1p#tCyR?
zc<w*Lp=cx@_oMnGyl|o`L&1NB57SQmXK=dTW&eTuKf|WQD1NyU=pbW{5+<PG&29d_
z#Qp^SXK0B3JGERSfSn&LOzcs@H1?<n<6%Nh8Fk4ijOd|Vm`wQ3aAy0X`aewae?rSn
zy|}$?L++ZuZ4=5iyyCOIuJ~AA>c)>OwkD;`uRblyeS7fK5i8F0<Bl(^=2Qi+xn4g~
zD|9TF_1XM2x6g@29JMiA+?v<2GUv**I=c;5#N0Pr{Q7%IN9)A3Yo|H1d}7qP`XtQE
z>V3EAWSKPY?$<Yawi}<Ev~i_nrb^zaz55m8T{Emy``f>qjy1bbvyu1GDF=R=wcnT2
zl$$V~tH+;ssT4ZA{~0*5|1(_J3JQ+@3~yHHvSpujKPDcv@X}UmZO27RSL8a~IXW{e
z;0TY9_P!-w7Vw}PV1TyO4K}5{{|*0&`WJ0$$eq#N%e3b|1M(F2UM7^eE-pWdrArp@
z&$3BgI#>P3tg8!xHcGecY>@lt`}^p>v`sndxANLO(q7Hox%OSMa>|5_VZQ{d`m?^)
zciGA8yQ2Svd#}~i=R0@ZUw&f3N|jCjK1!Z<Fq}B~WnASWd7jsC5<9o_{SEoM$Yhq}
z+mnXVne`esexLI7&+iNDyMMTSKPvt!#P~<kIqT}S+fSyR@;0gX&k(6&f2jT(dtKKK
z`SyFpu|+pa_BuJ3W?LKxD`MQ!Sixt1TmI<Jzt#^OxLx5VDokP65)|mb?W(HFAQF@Y
z8s!8{<t<sjx@gk01};qv5TlDBN>dZEG<^-fXhqZg!&SCde^1DhHi$S@|8(tP=ItM3
z{V#3z)@nNA5Xw4Z5(7h#r|IY8{Wd=L6tATSSpGY^K|eoj!Jl=GKc638UG|NsLGj|A
z(nqmkwuuTeQ*%9Ul~p&y94>mUYm&Uof4Tpu6)&Ug_CMO|`)IpROpMRJ+`CuaoSDdG
zsc$mpAJayrjS7sD{1{{=)iSKl`4L*U$~Cccd2FWe!911h?&{Bsy=giQ8PC!fCfT?A
zD!e^`Z~I|8@k@UUQ*__D{q8ilUhc;*tz35Rlrqu%t|Dk_+e8>U5o<1;|1-Fl;#zab
z|5pHQ6BH?HE*FH)M_Yxt0QrE6nIa5ZLaS$=mNqfEd*>iaLdu>`Dp~eorswYb_<iuh
z#y;+y`OD6U*_z$Uo_qY}g`EEk$5$|~R5qQw{zX)MN6GD8vyTNb`P*kOK6A8?*XjIQ
z>waycdzVdc^?wG1_3T-y(bB3{)4Glp)OTm6JpQ;i{b=;zX|oUCN)jqi_I$UT`Ofx}
z4sy!%iEDoZM|_$)i~F`^Sajy&6OkhF(<06nRR0ToC&%}3X@6&Ki_w(k@J9AqxhEOC
z82&Rv^Huc+-u`)E-;dhrbzAr!$qU8YGf~~fU2UD6D3Q0SCB6U9lC3{tAM7sTUi<eT
zv*fgw7v`_r&XK{qc6R8+x7%wM2X1W7kGFaza{R#=ZM}S{A8L0d>g`OPc>Q$R^#2U5
zE0;MxsAq9-j1{}&WdHnm?eXW&#nyV5#IjwNPrvl#$HvR2wzU@i<YG9O-%-bRQXnQS
zwoE={)6U5@k9$@un=c!^|4-GA>LZ_@r22m=KDPFpMViIBE$%{JT;yE?|7zZ_Th?GH
z_-MbtDUWR*;<o&GAh~Q?L-Iei%>B3b3#8cZ{!nzxZ1TT}D-O>2RWtQQpo2`;{Xc<|
zGh?}(+LhJM@1MExKSSM7lkG=48IHtBv`l-_skcP2UUc1|E`}#|=RZc?NDuh%#`~4-
z^150BkL7yvKU!|ye<aE%<%6(~p5fOt(Q6kSWct6kA8AX9K3c|Qc*$0?@Td5)lM8E{
zCrf^8(eD5Ge3{$MUw^LNxac60^`rXup7$STr*AuJC;0Qp<^2!kKA!)}S6u&qMgDPY
zs|e$X`a|}Q`+vzi`_FKI!~WRfeEu58leZt+S*QE=Tl|sQZKc6HLCXAy!vcQsXc<24
z%)m)?%WJh>)(c%p{wLIHxbxMo0QE0buUBd?PyEe)R8+UO+-X9YQRchl{~2Vn(x-k*
z4gY6XW3J46PxEs5(^+pa7Vx>B|FLRrPK~j-OwzNreD&{V`M>q=+&FRn;i#B~=E-b}
z-0j^(uU~YKY5LKAT(JNC54DH?f;_if(e-%njrXklhnZP{b7FotA2EEeu4c#M*$m%*
z@|ONs)L<$2_^m9%@385QwBv&dm!1)kdA#EMr<KY-njfS;{OZX3pP}d(cgKz5zB(uS
zs8=2A%_qJ~{wo!}9d&~1B#Yki6%`j7{~To~v{SqO)^x4G%XxCwOeUHw@G%cJ7oT{0
zjo6WzgXIsmn>#kXj)>Afv{%S?QkK-EdlOGPFWZwXDc9yR?O*5%;~(jVwnv&v=}lL(
zy>&_U@QVX!o6~;OKj<v(H91t(oLyYZcli}d9{WoN@h#`Me#E;ozp+Z)Wc8onbfk#4
zq22B$C)cje_nUg+Kf@tj9+{W-6hEp?Gv1oCPhWh!rqY~$CGE~X8Z-EB)Wl5Z{$u#6
zs>Y{YGGN+Y4dx9?*IB=vFS6$N`!BV^!J*2!%kS=8z3JDZ=gRi2@*igJUH+$SkL9|T
z2ZVP8=6{==XRFdZ|4&(iwUjp7;bU?FS0aOMhi?_yc<5-sv3o(aHanZPzl?62+V)g&
z$`>t1_KzYAuQZJj%Y`N8A$D)te{n|Jy@|B!BH%y6MPBlkT~x7F{%1g0h*8DL0NOsF
zD!JgxI^!e3@vo)sPH$QBF6!E?XtOI@S3Xqn|CU<N&Ek7wyX3EbEKJuHKejdFZom9x
zcJ<u!kl-!1U!LA)F@Iv`^54y$SKUwi(Y^Zd+go$zwdee2`1F36`YpXfj~Dx^pZ*!{
zxhyj(Y+}x|S*2^rJ}h{m@N@3|y~^`vOujQYe1it_)a@U{TPI%2zVU9Wbz}3hSKE#5
z$leihnk4>ZUEjTP$Ig~TMMvLWX1ML1N>804!)lQLrlhVY#2&2`OXl4ZYKlzi*?FtU
zJ>*WUc;U+Ib9Kr$Pp^pm;dM@2+vd_Mwwvvlk6S$E+8$-7QnX;1lTcKAfceVhq*;>F
zYmD5Lo~+E68(U<Z>RTlK>&y0e+}rkSQ;E+uh|Vm~4~ss%_**%<%#)hqAJ){f-Hmxs
zCwW!u(xK;pJNl29iwPWLD~f*N`)LOYi>&8ShN@W6Gq<vD9f>;I*Sj_{(p7I^exdE0
zTeXMJN*W~W^4O%2Q2F3L!^HXWU3>iN<u<ELUwCUzmG9jr!h5e?c2gG+DvMsVQuX7>
zbL?3RZ&$2~tnsg{Uizczv&SXX9Xqa-Gi=(dyS9J&gtw(e3m*tJ9ysg2BzyaJsbvcn
zz1lYILj0{;hpX17Tl?nf2pRe`y^;{97W~g}o#Dlbbzb^HuYdL5&M&Ez<DM&bF7tuW
z*^-N~aWgoDOqV2bJrHm>DS6a2|FL%WS^dM4BQsx`tz9pDIWyyOWx-L=HGTaimjwJS
zFsL)zTwqW2Eq4hkPYrR1oY@f?Dl^IRvFN$TA6=icPwzF4-`sTS9XDsG#nY`b&Sw{9
zi~l<2bV@?>9mg8k<hYM&%OCbu2lxt!T+}x?eRO+qQQbX-Not`xE4ID4dEs$cp@Ur0
znsuU6+QJy8tURIci9=~_WEG?RjX2rI_8&DaSN><%Ua}_fk-fkxwttVEF6riNxvlwp
z+vmJ>XN>QiWK=x5N^4?+BXgnT0=`wAN*$ULFESeh#7=cgzQA<%<<|p0riX03_Q&#J
zt>5*k!=>vobGQD;xS5txl2bUrQFKX-^CRw`UzHbRhD{H%Dm`;;(%H(ggzBA-et*2R
zYN1TYX#rk_(kbEUm5(_deR#UOLs#csywy8t_pK8*suXQmCaHYl!3KrK&~-I|k9KSS
zmbH3)_}jDRVV<+SqO;FFjIv!i?d?qmX~)xo^RpP<W~}qNesq(=JhlF~&3)%yAO7fC
zSo|$gDnq?1p=PtN0q>-WC&4No?K^Umwp{tzD|PF>`;KXMWgqPMoUb$KVUyc;!>Jr@
z9_KDqU0_f2jM;j;qx7cf+IZ(nC95l+Z)&?$SXf$cF?yBP?vCkM)9(0lF|3O}Qm1_F
zt3UUh)4ZD^?nb=kT>fg6o(jLr#a(ZHTPr*<tIPTJbpe0SqE(r1Yp#_o`>Wu+U$f@v
z*0KucDrF1aU!l9;=Lh-l)xKD|sKMy{9{Y!PeFSTl-t?ch=E91aU+;a)Uq|Ras91Ay
z`r%*K)-LtfsV#LTPnUhsjI<L+%R&O!MM~r4UZj_;U3PHIjTJxNeMty<Wy<{CcJtRi
z+VvhE`8wCRy<dK3^+|c*=o38U0^18!{6BMDJz6ZM_+jtXZ-1kG@;Cfwy6Us-`i7c$
znU3@I9=h`^U#`?(Rrs&aJ7S;2)%!6Qb4(=#ljpfsteaT(>b$VT9sO-?*;(Ljf+5n%
zS}fg=8;G_03;#1LlG^yk812xe1;0YJih#EAEMNien7_8VWX<Y#Z4H+3D2vv<aDD#I
zfF=SCI_H@6ohEZ*?!Ek{d|{i}>Sag1eY)l0bbLjmbzX*fS>o0DUw6KSBm}VAF0R<@
zc6G*W<E_(H3ThTEkN@}TnR(no=f?%#MK7d$S+h3&@GiD(4OwD^dsg@BJ+i-h=ZL%0
zq-D~5cdm(l6Yn+Ykrh6|^zEjb*zve{<EQNJmY%A)KmR|&8s^PQ*O~tl+Aom#CwrgR
z6(v`D({oc!SF>3>(faeX>h!UDe0vpzLz^V~*`zOgyQKLgQG@yG0=`LIU6K!WII0L8
z)spKKUeo=bp;q&#=RL%MDLd^2Z^qyG(R`p>?Av8;)~SEbOfNdNWC_Q`2jaG^rBkLb
zKEEa<wqCr8b;`DLHnz*M#CN@IIU=w7PVWM1yDi@}z1r25Ci{gQ7sMUeRyE7zp5Bh#
zSJtjI=6!o_%8~RF3QdlW7p@OF@Y>C)I)Ht4)XVv4AJyBo`kEh>>YX;H>D{%5Pg&p1
z@|>V`(kAcCtL~nZd0%%w%$9Y#cKm4Io!kE0ce16{Y&)$r)yQ4pXRPs!Z|gQQbuoN;
z@#SujtoVTqaW8Le*%i9|TT^yaZrhh##-7>|JS+Ov1n+$Q^IBiyveU_ry1Qr8*j6sj
zjG8t{cj1etvMTq^my{cZ<sFz*vEJdpVx|TQS*h1CAKuL_U-+LPG5+qIX#c8f=4GpT
z6ANWN*{t|<CW7@?!Obsgc<o)P_c9-d+ViXQ*z)Xjw$-eE=Po`ed(wOMN?ElQms5V1
zuQ1=+t@fek<Ln<fHIAzyUvA%Y+T>cGjuES|%n7Ag0kO{2;jYQ4nagk9ym8BY)2(YF
zZKCHqLS;R_+WImS?5c0q)n8|-sq=;NOSk)_b#Ib(URB$beN%mB(9Awb)dFSab?zq1
zULR>b^j%IWo-a#1xZQWM=jTJ}->MfKOZvQc=IlA^6_VGBzK9S>YB2s%k-Gij7Vpdp
z$91eydxRGLKB?r;ajN#<qdo8V`EF*W{W~4_Vcq(bce_{5T=VYB&v&j{uNdtt`OM|B
zq9vX8)9>r6l6trp9^`+~{$0=WBk#~{pO78hQ5*N{+IsoSW_PBUv)rwhrsWxbmifBo
z=!d^;GYeNoXT^zM{pz`7-|k%-cVAZ9Dd5lZCN?NuD>XFrMaB2^fr~{LpI`sQw~)WZ
z<TiJ%uF`I+y>s7OE92F9#A+^mTi@7NXt8u()wOFI(`)rR{|J_f?m3^EVd}rtr+dc3
z&x)b(hI@a9`@3l{H(a%`U6r+K`Vo&HO{M;z%O+Dc&I?uIT((`!sc}C8|FzBH&X?CO
z-nx0)hp@%Gzil+j_0|?wnY=DoA}M3B<Me-q&5h?=tEOojSil$WwQ2A6kLg|S;%;TU
zS+?oY<83n=KP@p-3=-@Qvc7J(;>E5zyY%}5b@X^PSIjKs&e&G--Rwm2=_A(Pk6+qr
z*Tt|px$xU+>*#)^NB7V6`cEyDpKc^Kqhxi-43RB}Zm{Rs;N4eCsu_IW{++weQmOK>
z+kb|Ap66dWh-Yd~o_+kE1kc6HXWv8T@F`z<n>HhTgPucRplt9XwH1cTGs<@P_-_}N
zI`SxTiu|JprGHx(uY2nlEcQ0(l=0w9pExyy@y_I<g|qrQ^G&bKcl*#ZyE8@3_ue`;
zot(fQY3?@0kC$m>{1M5YXSv6BO?)=b@``QhZ@zIIc;1ox%5M38hV@sYqatq}mfgEV
z(2*sXQ-)(jb5HHnM-5spc7?9%UKWu#?Z}q0jVyXM?kZ2-d3WQhqHH(N2!_U@23i!u
zrjtPjUh1NpjTF}ySC1xuSP7}dsw=`U)$6mz#ZuOrwaX*#tp97?Wd7IVY}}#-OU*j@
zA3pnMrpvyYuU91Rw`ZP$T}Q<Fmx2Eo4(UHy?NgstaXyHl_R3X-wjZ^eIrUm^G#2nV
z%Zsk9vTyq;B3pB?IM?tO%TG=F?SHCsk3MgX3jNP8Z&uwxmYLr^ozVStJ<*k+i22yR
zFxLMJZ8iQ`6{olM&lIb8@#3caR4e<AIG(hdx=)YpX<ii@8M{zEcys>i*jzJ@g;SCu
z9#5$9SatYQ7Q^B0V|F~V8BOn+da5L4UQ<54Wye~Mt+hfql~!|G=A=K_*}CJL@!{aK
z3x90wYThdQOtyUb=IzPnlTXH6E7`~S!R6-tg*S`myy2IR^Rw9|!njYhb(g2)FRS@a
zG7mgS5vcmI&Uc^O5B15sE!&<<D9$Y}YVWh&xvZbzMd$VtSN6Cv#5{0Zb!PGW6()?=
z1J4%zXZX;vEBBL4;G>Ff8|`i1&p!C}a~J3+r!Qd<HQ8%doO7Qkx@X6)cancInAa~|
z=eWoEvFokmk9!{;eB!-4QUKIJeG}i2as2eh8od_&ueVAp*<VayyngArOv(Jtu2aEB
zrHUD^crWLX|NZ3htizAm_)P!u%scS%Q{&Gz6UOToWAbn8)2_defA~Mc4|e+>A&YK5
zTE_mz*T$&!?A+(}lLOeJU5j`#KZb7XjXs>&{70-j=0C%Im&>mGM`L<#J!@bu+7>MQ
zQzn2t*|ms&d5wQ+f{p89{l$879{gLAxq3;B=YhMAR_lDfy<E>e*g>{ewTRjA<8STC
zdB$4D?O$!Vox}KcN6>uUimeBPDjo+NI99V;+T{6-^(Kthi`^e&Pq5>^x<n`K<Ma-h
z4a`q6k`Bnf<6>`Id*k1Kh9hyBlb_x`w(NzystDtCvB0ZSlIMBIpIcl#JK|W%JQm3Z
zdpZ`sJh?9VpXm3t*?((p9X;m8f6G+!j{G{qpyMC@GaSe$mzA@Ww!CX{UC;lze*dKg
z)6|dRZ3!%A*Ssuz{I4qZ5dW*IPVq87<Yb!HM(s2FxA@F#+p0>htRr$lA4>P}M9IxP
zX7`6v-~ZRkSr@u}E-4(JxctV^p5#;8S`GVsS7|WMwinoA@LVi&)x9tBFRDsUp0s#S
zxiCY{;Og>c#}D39njrXT_KC$?*q2$B*@VY|HcK!sU}gw(kZJ$6{K)C~KfZssHZz6)
zu2tV6wc|U*?);lFKjFvX^7;007q@)PTkO9vdlH)!b8#~`HxwQ}SS}v_N%W)J{tAmT
zf#<eedoKUR&G^^V+y2Zy^e(i;YDqr%&oFQLS=GzwS0qn!z0}NL(#U<AdqqXSRfw@+
zqtXKA7mJo0Sh}b|Xd2?Y4rXEaZp-$69XL;BlmDf-TKRB1;$*g<2CEy8li4nRSee1d
z?;Kg)<zc!aYwnTi#s&P=?P1-A?`dCspZBKJa_ze<w<DCQxq~h4_3vo2WZL$h;bF>;
zn$pWPE_S=h|1;#Qo?e!E^7Xw<DVHTC6=X1-|D&^>??1x@>m&9*^#3!wol<}3)Q9(f
znfEyVXK4D*@b6~G{!O<pT>LxjUR#6Se+D#3cQoBoy?^WO<(0pg`yzwsJ(}F8$)IpH
zM+@f~eBoT<2#o|-IGZ1l2gedI;SAS|Ee7F|V3X@FP|aX?x&a%El(4Wl8D=X{Ndwi%
z{~1VfGu&B(0|RU_Br{O#X1KM)gvQ9qg8cG7+kUkFXJGx$@ORV7`qb?Um&O`yzHour
zbid3?t7W}wZ$xL-DSm!m@_Tng`O7oHXQr9C-U&S~^Z95_MU|w|<t;OwIIWvz*73@X
zYtxYhO}x(e38&nn?rm+)h|^&9Qf&MYGUbSb$S(%Xo&}d*Ea1w|liuo-D}Ett8mk&B
zLwap*EvtNTyknGwNJ0Qx`Hkxr0>7Dl5nbHqHY!Q|KnT#eexWWDY;I6=D*Mt1j{`@2
R8{IS*Ub>2;HQ4{Z2>{3iFVFx0

literal 0
HcmV?d00001

diff --git a/slides/main.md b/slides/main.md
new file mode 100644
index 0000000..166bcdd
--- /dev/null
+++ b/slides/main.md
@@ -0,0 +1,133 @@
+---
+title: 'Under Control: A Control Theory introduction for Computer Scientists'
+short_title: 'Under Control: A Control Theory introduction for Computer Scientists'
+subtitle: 'First try'
+date: 21/04/2023
+affiliations:
+    - name: UGA, INRIA
+      mark: ''
+      signature: 'Univ. Grenoble Alpes, INRIA, CNRS, LIG'
+      email: 'firstname.lastname@inria.fr'
+      authors:
+        - firstname: Quentin
+          lastname: Guilloteau
+          is_presenter: true
+        - firstname: Raphaƫl
+          lastname: Bleuse
+        - firstname: Eric
+          lastname: Rutten
+header-includes:
+    - \usepackage{tikz}
+    - \usepackage{subcaption}
+    - \usepackage{MnSymbol,wasysym}
+# lang: en
+---
+
+# Goal of this tutorial
+
+- Present the need for regulation of computing systems
+
+- Show how computing systems can benefit from the Feedback loop approach
+
+- Show what Control Theory can bring
+
+- Quick presentation of the methodology
+
+- Let you implement some Control Theory controllers!
+
+
+# The need for Regulation
+
+- Complex systems
+
+  - Crazy software stacks on crazy hardware
+    
+  - $\rightsquigarrow$ unpredictable
+
+  - but want to guarantee a behavior, a Quality-of-Serive
+  
+- Usual approaches:
+
+  - simple rules
+  
+    - *if this then that*
+    
+    - very arbitrary constants
+    
+    - no guarantee
+
+  - or model as much as possible
+  
+    - then solve "optimally"
+    
+    - very complex
+    
+    - guarantee only if model stands 
+
+\begin{center}
+\textbf{We need another approach} (guarantees + simplicity)
+\end{center}
+  
+
+# The Feedback Loop
+
+## The idea
+
+Use the knowledge about the current state of the system to respond
+
+## Autonomic Computing (IBM 2003)
+
+:::::::::::::: {.columns}
+::: {.column width="50%"}
+![MAPE-K Loop](figs/mapek.jpg){width=70% height=35%}
+:::
+::: {.column width="50%"}
+
+
+- auto-*
+
+  - configuration
+  
+  - healing
+  
+  - **optimization**
+  
+  - protection
+  
+- main tool: MAPE-K loop
+
+- $\neq$ implementations of Autonomic Controller (rules, AI, control)
+
+
+:::
+::::::::::::::
+
+
+
+# Control Theory
+
+
+# Your turn! 
+
+## What you will do now
+
+1. Play with a dummy system
+
+2. Implement a naive "Bang-Bang" controller 
+
+3. First introduction with Control Theory: P Controller
+
+4. Implement a more precise controller (PI)
+
+5. Perform an identification phase
+
+6. **Implement a PI controller on a "real" system**
+
+
+## Starting Point
+
+
+\begin{center}
+\url{https://tinyurl.com/CtrlComputing}
+\end{center}
+
diff --git a/slides/sty/beamercolorthemeshark.sty b/slides/sty/beamercolorthemeshark.sty
new file mode 100644
index 0000000..d0ddefd
--- /dev/null
+++ b/slides/sty/beamercolorthemeshark.sty
@@ -0,0 +1,187 @@
+% LaTeX Beamer color theme "shark"
+%
+% Copyright Christian Gogolin 2011 (beamer@cgogolin.de)
+%
+% http://www.cgogolin.de
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+%   features: - A dignified, clear look that directs the listeners
+%               attention to the content.
+%             - A very light gray background that puts emphasis on the 
+%               content of block like environments.
+% 
+%   problems: - Looks bad in combination with the "smothbars" outer
+%               theme.
+
+\mode<presentation>
+
+\definecolor{beamer@blendedblue}{rgb}{0.23,0.4,0.7}% use structure theme to change
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\setbeamercolor{alerted text}{fg=red}
+\setbeamercolor{example text}{fg=green!50!black}
+
+\setbeamercolor{structure}{fg=beamer@blendedblue,bg=white}
+
+\setbeamercolor{background canvas}{fg=black,bg=white}
+\setbeamercolor{background}{parent=background canvas}
+
+\setbeamercolor{palette primary}{use=structure,fg=structure.fg}
+\setbeamercolor{palette secondary}{use=structure,fg=structure.fg!70!black,bg=white!80!black}
+\setbeamercolor{palette tertiary}{fg=white,bg=white!20!black}
+\setbeamercolor{palette quaternary}{fg=white,bg=white!5!black}
+
+\setbeamercolor{palette sidebar primary}{use=normal text,fg=normal text.fg}
+\setbeamercolor{palette sidebar secondary}{use=structure,fg=structure.fg}
+\setbeamercolor{palette sidebar tertiary}{use=normal text,fg=normal text.fg}
+\setbeamercolor{palette sidebar quaternary}{use=structure,fg=structure.fg}
+
+\setbeamercolor{math text}{}
+\setbeamercolor{math text inlined}{parent=math text}
+\setbeamercolor{math text displayed}{parent=math text}
+
+\setbeamercolor{normal text in math text}{}
+
+\setbeamercolor{local structure}{parent=structure}
+
+\setbeamercolor{titlelike}{parent=structure}
+
+\setbeamercolor{title}{parent=titlelike}
+\setbeamercolor{title in head/foot}{parent=palette quaternary}
+\setbeamercolor{title in sidebar}{use=palette tertiary,fg=palette tertiary.fg,bg=palette tertiary.bg}
+
+\setbeamercolor{subtitle}{parent=title}
+
+\setbeamercolor{author}{}
+\setbeamercolor{author in head/foot}{parent=palette primary}
+\setbeamercolor{author in sidebar}{use=palette tertiary,fg=palette tertiary.fg,bg=palette tertiary.bg}%{use=palette sidebar tertiary,fg=palette sidebar tertiary.fg}
+
+\setbeamercolor{institute}{}
+\setbeamercolor{institute in head/foot}{parent=palette tertiary}
+\setbeamercolor{institute in sidebar}{use=palette sidebar tertiary,fg=palette sidebar tertiary.fg}
+
+\setbeamercolor{date}{}
+\setbeamercolor{date in head/foot}{parent=palette secondary}
+\setbeamercolor{date in sidebar}{use=palette sidebar tertiary,fg=palette sidebar tertiary.fg}
+
+\setbeamercolor{titlegraphic}{}
+
+\setbeamercolor{part name}{}
+\setbeamercolor{part title}{parent=titlelike}
+
+\setbeamercolor{section in toc}{parent=structure}
+\setbeamercolor{section in toc shaded}{parent=section in toc}
+\setbeamercolor{section in head/foot}{parent=palette tertiary}
+\setbeamercolor{section in sidebar}{parent=background canvas}%{parent=palette sidebar secondary}
+\setbeamercolor{section in sidebar shaded}{use=section in sidebar,fg=section in sidebar.fg!40!bg}
+\setbeamercolor{section number projected}{parent=item projected}
+
+\setbeamercolor{subsection in toc}{}
+\setbeamercolor{subsection in toc shaded}{parent=subsection in toc}
+\setbeamercolor{subsection in head/foot}{parent=palette secondary}
+\setbeamercolor{subsection in sidebar}{parent=section in sidebar}
+\setbeamercolor{subsection in sidebar shaded}{parent=section in sidebar shaded}
+\setbeamercolor{subsection number projected}{parent={subitem projected}}
+
+\setbeamercolor{subsubsection in toc}{parent=subsection in toc}
+\setbeamercolor{subsubsection in toc shaded}{parent=subsubsection in toc}
+\setbeamercolor{subsubsection in head/foot}{parent=subsection in head/foot}
+\setbeamercolor{subsubsection in sidebar}{parent=subsection in sidebar}
+\setbeamercolor{subsubsection in sidebar shaded}{parent=subsection in sidebar shaded}
+\setbeamercolor{subsubsection number projected}{parent=subsubitem projected}
+
+\setbeamercolor{headline}{}
+\setbeamercolor{footline}{}
+
+\setbeamercolor{sidebar}{use=palette tertiary,fg=palette tertiary.fg,bg=palette tertiary.bg}
+\setbeamercolor{sidebar left}{parent=sidebar}
+\setbeamercolor{sidebar right}{parent=sidebar}
+
+\setbeamercolor{logo}{parent=palette tertiary}
+
+\setbeamercolor{frametitle}{parent=titlelike}
+\setbeamercolor{framesubtitle}{parent=frametitle}
+
+\setbeamercolor{frametitle right}{parent=frametitle}
+
+\setbeamercolor{caption}{}
+\setbeamercolor{caption name}{parent=structure}
+
+\setbeamercolor{button}{use=local structure,bg=local structure.fg!50!bg,fg=white}
+\setbeamercolor{button border}{use=button,fg=button.bg}
+\setbeamercolor{navigation symbols}{use=structure,fg=structure.fg!40!bg}
+\setbeamercolor{navigation symbols dimmed}{use=structure,fg=structure.fg!20!bg}
+\setbeamercolor{mini frame}{parent=section in head/foot}
+
+\setbeamercolor{block body}{}
+\setbeamercolor{block body alerted}{}
+\setbeamercolor{block body example}{}
+\setbeamercolor{block title}{parent=structure}
+\setbeamercolor{block title alerted}{parent=alerted text}
+\setbeamercolor{block title example}{parent=example text}
+
+\setbeamercolor{item}{parent=local structure}
+\setbeamercolor{subitem}{parent=item}
+\setbeamercolor{subsubitem}{parent=subitem}
+
+\setbeamercolor{item projected}{parent=item,use=item,fg=white,bg=item.fg}
+\setbeamercolor{subitem projected}{parent=item projected}
+\setbeamercolor{subsubitem projected}{parent=subitem projected}
+
+\setbeamercolor{enumerate item}{parent=item}
+\setbeamercolor{enumerate subitem}{parent=subitem}
+\setbeamercolor{enumerate subsubitem}{parent=subsubitem}
+
+\setbeamercolor{itemize item}{parent=item}
+\setbeamercolor{itemize subitem}{parent=subitem}
+\setbeamercolor{itemize subsubitem}{parent=subsubitem}
+
+\setbeamercolor{itemize/enumerate body}{}
+\setbeamercolor{itemize/enumerate subbody}{}
+\setbeamercolor{itemize/enumerate subsubbody}{}
+
+\setbeamercolor{description item}{parent=item}
+
+\setbeamercolor{bibliography item}{parent=item}
+
+\setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg}
+\setbeamercolor{bibliography entry title}{use=normal text,fg=normal text.fg}
+\setbeamercolor{bibliography entry location}{use=structure,fg=structure.fg!65!bg}
+\setbeamercolor{bibliography entry note}{use=structure,fg=structure.fg!65!bg}
+
+\setbeamercolor{separation line}{}
+
+\setbeamercolor{upper separation line head}{parent=separation line}
+\setbeamercolor{middle separation line head}{parent=separation line}
+\setbeamercolor{lower separation line head}{parent=separation line}
+
+\setbeamercolor{upper separation line foot}{parent=separation line}
+\setbeamercolor{middle separation line foot}{parent=separation line}
+\setbeamercolor{lower separation line foot}{parent=separation line}
+
+\setbeamercolor{abstract}{}
+\setbeamercolor{abstract title}{parent=structure}
+
+\setbeamercolor{verse}{}
+
+\setbeamercolor{quotation}{}
+\setbeamercolor{quote}{parent=quotation}
+
+\setbeamercolor{page number in head/foot}{fg=fg!50!bg}
+
+\setbeamercolor{qed symbol}{parent=structure}
+
+\mode
+<all>
diff --git a/slides/sty/beamerinnerthemechamfered.sty b/slides/sty/beamerinnerthemechamfered.sty
new file mode 100644
index 0000000..2d6c37e
--- /dev/null
+++ b/slides/sty/beamerinnerthemechamfered.sty
@@ -0,0 +1,232 @@
+% LaTeX Beamer inner theme "chamfered"
+%
+% Copyright Christian Gogolin 2011 (beamer@cgogolin.de)
+%
+% http://www.cgogolin.de
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+%   features: - Boxes with arbitrary rounding radius, content-to-box-
+%               boder and head-to-body distance, customizable via the
+%               [corners=] and [padding=] options. Both are set to a
+%               default value of 2pt.
+%             - A drop shadow that can be activated with the [shadow]
+%               option that is compatible with all box shapes(!).
+%             - A real drop shadow that can be activated with the [realshadow]
+%               option that is compatible with all box shapes(!) and is really opaque.
+%             - A surrounding outline can be activated by giving the
+%               [outline] options.
+%             - Draws the whole box "at once" (and not in two steps, as
+%               the normal beamer colorbox does) using the TikZ-Package
+%               and thus has a very easy to read code structure.
+%  
+%   problems: - Uses your TikZ-Package (Not really a problem, I think.)
+%             - Overwrites the "\beamerboxesrounded" and the
+%               "\endbeamerboxesrounded" commands. (Not really a problem
+%               as well, I think.)
+% 
+%   to do:    - Jet no custom parts page and only a very minimal
+%               title page.
+%             - Perhaps add custom "items" and "sections/subsections in
+%               toc" templates.
+
+\RequirePackage{keyval}
+\RequirePackage{tikz}
+\RequirePackage{mathtools}
+
+\newif\ifbeamer@chamfered@shadow
+\DeclareOptionBeamer{shadow}[true]{\csname beamer@chamfered@shadow#1\endcsname}
+\ExecuteOptionsBeamer{shadow=false}
+
+\newif\ifbeamer@chamfered@realshadow
+\DeclareOptionBeamer{realshadow}[true]{\csname beamer@chamfered@realshadow#1\endcsname}
+\ExecuteOptionsBeamer{realshadow=fal1se}
+
+\newif\ifbeamer@chamfered@outline
+\DeclareOptionBeamer{outline}[true]{\csname beamer@chamfered@outline#1\endcsname}
+\ExecuteOptionsBeamer{outline=false}
+
+\newdimen\bmb@corners
+\DeclareOptionBeamer{corners}{\bmb@corners=#1}
+\ExecuteOptionsBeamer{corners=2pt}
+
+\newdimen\bmb@padding
+\DeclareOptionBeamer{padding}{\bmb@padding=#1}
+\ExecuteOptionsBeamer{padding=2pt}
+
+\ProcessOptionsBeamer
+
+\mode<presentation>
+
+\newdimen\bmb@headheight
+\newdimen\bmb@headdepth
+\newdimen\bmb@bodyheight
+\newdimen\bmb@bodydepth
+%\newdimen\bmb@corners
+%\newdimen\bmb@padding
+\newdimen\bmb@headbodyseperation
+
+\newlength{\tmpa}
+
+\newbox\bmb@headbox
+\newbox\bmb@bodybox
+
+\define@key{beamerboxes}{realshadow}[false]{\csname bmb@realshadow#1\endcsname}
+\define@key{beamerboxes}{outline}[false]{\csname bmb@outline#1\endcsname}
+
+\renewcommand\beamerboxesrounded[2][]{%
+  \global\let\beamer@firstlineitemizeunskip=\relax%
+  \vbox\bgroup%
+  \setkeys{beamerboxes}{upper=block title,lower=block body,width=\textwidth,shadow=false,realshadow=false}%
+  \setkeys{beamerboxes}{#1}%
+  {%
+    \usebeamercolor{\bmb@lower}%
+    \globalcolorstrue%
+    \colorlet{lower.bg}{bg}%
+  }%
+  {%
+    \usebeamercolor{\bmb@upper}%
+    \globalcolorstrue%
+    \colorlet{upper.bg}{bg}%
+  }%
+  % lengths are set via beameroptions
+%  \bmb@corners=2pt
+%  \bmb@padding=2pt
+  % 
+  \setbox\bmb@headbox=\hbox{%
+    \begin{minipage}[b]{\bmb@width-\bmb@corners-\bmb@corners-\bmb@padding-\bmb@padding}%
+      \usebeamercolor[fg]{\bmb@upper}%
+      #2%
+    \end{minipage}}%
+  \ifdim\wd\bmb@headbox=0pt%
+    \setbox\bmb@headbox=\hbox{}%
+    \ht\bmb@headbox=0pt%
+    \dp\bmb@headbox=0pt%
+    \bmb@headheight=0pt%
+    \bmb@headdepth=1.4ex% 
+    \bmb@headbodyseperation=0pt%
+    {\usebeamercolor{\bmb@lower}% make head and body bg color equal if head is empty
+     \globalcolorstrue%
+     \colorlet{upper.bg}{bg}}%
+  \else
+    \bmb@headheight=\ht\bmb@headbox
+    \bmb@headdepth=1.5ex%
+    \bmb@headbodyseperation=\bmb@padding
+  \fi%
+
+  \setbox\bmb@bodybox=\hbox\bgroup\begin{minipage}[b]{\bmb@width-\bmb@corners-\bmb@corners-\bmb@padding-\bmb@padding}%
+    \usebeamercolor[fg]{\bmb@lower}%
+    \colorlet{beamerstructure}{upper.bg}%
+    \colorlet{structure}{upper.bg}%
+  }
+
+
+\def\endbeamerboxesrounded{%
+  \end{minipage}\egroup%
+
+  % Fix by Vasyl
+  \bmb@temp=\dp\bmb@bodybox%
+  \setbox\bmb@bodybox=\hbox{\raise\bmb@temp\hbox{\box\bmb@bodybox}}%
+  \dp\bmb@bodybox=0pt%
+
+  \ifdim\wd\bmb@bodybox=0pt%
+    \setbox\bmb@bodybox=\hbox{}%
+    \ht\bmb@bodybox=0pt%
+    \dp\bmb@bodybox=0pt%
+    \bmb@bodyheight=1pt%
+    \bmb@bodydepth=\bmb@padding%
+  \else
+    \bmb@bodyheight=\ht\bmb@bodybox\advance\bmb@headheight by\bmb@corners
+    \bmb@bodydepth=1.5ex%
+  \fi%
+
+  \begin{tikzpicture}
+    \ifbeamer@chamfered@shadow%
+      \foreach \x in {75,50,15}
+      {
+        \setlength{\tmpa}{1.25pt * 1/75 * \real{\x}}
+        \fill[xshift=0.4pt,yshift=-0.5pt,fill=lower.bg!\x!black,rounded corners=\bmb@corners] (-\tmpa,-\bmb@headdepth-\bmb@headbodyseperation) -- (-\tmpa,\bmb@headheight+\bmb@padding+0.5pt+\tmpa) -- (\bmb@width+\tmpa,\bmb@headheight+\bmb@padding+0.5pt+\tmpa) -- (\bmb@width+\tmpa,-\bmb@headdepth-\bmb@headbodyseperation) -- (\bmb@width+\tmpa,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners-\tmpa) -- (-\tmpa,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners-\tmpa) -- (-\tmpa,-\bmb@headdepth-\bmb@headbodyseperation);
+      }
+      \fi
+
+    \ifbeamer@chamfered@realshadow%
+      \foreach \x in {75,50,15}
+      {
+        \setlength{\tmpa}{1.25pt * 1/75 * \real{\x}}
+        \fill[xshift=0.4pt,yshift=-0.5pt,fill=black,opacity=0.3,rounded corners=\bmb@corners] (-\tmpa,-\bmb@headdepth-\bmb@headbodyseperation) -- (-\tmpa,\bmb@headheight+\bmb@padding+0.5pt+\tmpa) -- (\bmb@width+\tmpa,\bmb@headheight+\bmb@padding+0.5pt+\tmpa) -- (\bmb@width+\tmpa,-\bmb@headdepth-\bmb@headbodyseperation) -- (\bmb@width+\tmpa,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners-\tmpa) -- (-\tmpa,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners-\tmpa) -- (-\tmpa,-\bmb@headdepth-\bmb@headbodyseperation);
+      }
+      \fi
+
+    \ifbeamer@chamfered@outline% The 1pt offset added to \bmb@headdepth is a hack to fix the rounding errors of some stupid pdf viewers!
+      \filldraw[fill=upper.bg,draw=structure.fg,thin,rounded corners=\bmb@corners] (0pt,-\bmb@headdepth-1pt) -- (0pt,\bmb@headheight+\bmb@padding+0.5pt) -- (\bmb@width,\bmb@headheight+\bmb@padding+0.5pt) -- (\bmb@width,-\bmb@headdepth-1pt);
+      \filldraw[fill=lower.bg,draw=structure.fg,thin,rounded corners=\bmb@corners] (\bmb@width,-\bmb@headdepth+1pt) -- (\bmb@width,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners) -- (0pt,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners) -- (0pt,-\bmb@headdepth+1pt);
+    \else
+      \fill[fill=upper.bg,rounded corners=\bmb@corners] (0pt,-\bmb@headdepth-1pt) -- (0pt,\bmb@headheight+\bmb@padding+0.5pt) -- (\bmb@width,\bmb@headheight+\bmb@padding+0.5pt) -- (\bmb@width,-\bmb@headdepth-1pt);
+      \fill[fill=lower.bg,rounded corners=\bmb@corners] (\bmb@width,-\bmb@headdepth+1pt) -- (\bmb@width,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners) -- (0pt,-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight-\bmb@bodydepth-\bmb@padding-\bmb@corners) -- (0pt,-\bmb@headdepth+1pt);
+    \fi
+    \pgfputat{\pgfpoint{\bmb@padding+\bmb@corners}{0pt}}{\pgftext[left,base]{\copy\bmb@headbox}}
+    \pgfputat{\pgfpoint{\bmb@padding+\bmb@corners}{-\bmb@headdepth-\bmb@headbodyseperation-\bmb@bodyheight}}{\pgftext[left,base]{\copy\bmb@bodybox}}
+  \end{tikzpicture}
+  \egroup% of \vbox\bgroup
+}
+
+
+
+
+\defbeamertemplate*{title page}{chamfered}[1][]
+{
+  \vbox{}
+  \vfill
+  \begin{centering}
+    \begin{centering}
+      \usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle\par%
+      \ifx\insertsubtitle\@empty%
+      \else%
+      \vskip0.25em%
+      {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
+      \fi%     
+    \end{centering}
+    \vskip1.5em\par
+    \begin{centering}
+      \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
+    \end{centering}
+    \vskip1em\par
+    \begin{centering}
+      \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute
+    \end{centering}
+    \vskip1em\par
+    \begin{centering}
+      \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
+    \end{centering}\vskip0.5em
+    {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
+  \end{centering}
+  \vfill
+}
+
+
+
+
+\setbeamertemplate{sections/subsections in toc}[square]
+\setbeamertemplate{items}[square]
+\setbeamertemplate{blocks}[rounded]
+
+\setbeamertemplate{title page}[chamfered]
+\setbeamertemplate{part page}[default]
+
+
+\mode<all>
+
+%%% Local Variables: 
+%%% TeX-master: "~/texmf/tex/latex/beamer/test/test.tex"
+%%% End: 
diff --git a/slides/sty/beamerouterthemewuerzburg.sty b/slides/sty/beamerouterthemewuerzburg.sty
new file mode 100644
index 0000000..7b14f3a
--- /dev/null
+++ b/slides/sty/beamerouterthemewuerzburg.sty
@@ -0,0 +1,214 @@
+% LaTeX Beamer outer theme "wuerzburg"
+%
+% Copyright Christian Gogolin 2011 (beamer@cgogolin.de)
+%
+% http://www.cgogolin.de
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+%   features: - Two info lines at the head and at the bottom
+%               that provide information similar to the "infolines" outer
+%               theme.
+%             - An optional "polished" look (activated by the [glossy]
+%               option).
+%             - Drop shadows to separate the head/foot line and the
+%               frametitle from the frame content.
+%             - Suppresses the shadow on and below the frame title if
+%               the "frametitle" color is not set and thus respects the
+%               intention of some color themes to make the frame title
+%               appear as a part of the frame content.
+%             - A condensed frame title, that leaves more space for the
+%               frame content.
+%             - Vertical bars that separate the the items in the head/foot
+%               line that can be deactivated by specifying the
+%               [noseperators] option.
+%             - Exclude frames (for example supplementary material in the 
+%               appendix) from the total number of frames by specifying the
+%               [lastframe=] option.
+%             - The [nofootline] option can be used to suppress drawing of 
+%               the foot line.
+%
+%   problems: - The glossy style does not fit well with all color themes.
+%             - This theme does not work well with the "inmargin" inner
+%               theme. The dropshadow of the frame title is to long.
+%               (I think this could be fixed.)
+
+\newif\ifbeamer@wuerzburg@glossy
+\DeclareOptionBeamer{glossy}[true]{\csname beamer@wuerzburg@glossy#1\endcsname}
+
+\newif\ifbeamer@wuerzburg@nofootline
+\DeclareOptionBeamer{nofootline}[true]{\csname beamer@wuerzburg@nofootline#1\endcsname}
+
+\newif\ifbeamer@wuerzburg@noseperators
+\DeclareOptionBeamer{noseperators}[true]{\csname beamer@wuerzburg@noseperators#1\endcsname}
+
+\newcounter{lastframecounter}
+\DeclareOptionBeamer{lastframe}{\setcounter{lastframecounter}{#1}}
+%\ExecuteOptionsBeamer{\setcounter{lastframecounter}{0}}
+
+
+\ProcessOptionsBeamer
+
+\mode<presentation>
+
+\setbeamercolor*{headfoot}{parent=palette tertiary}
+
+\AtBeginDocument{
+
+  \pgfdeclareverticalshading{beamer@topshade}{\paperwidth}{%
+    color(0pt)=(bg);
+    color(1pt)=(black!55!bg);
+    color(3pt)=(black!70!bg)}
+  \pgfdeclareverticalshading{beamer@bottomshade}{\paperwidth}{%
+    color(0pt)=(black!40!bg);
+    color(1pt)=(bg)}
+  {\usebeamercolor{frametitle}
+    \pgfdeclareverticalshading{beamer@frametitletopmshade}{\paperwidth}{%
+      color(0pt)=(bg);
+      color(1.5pt)=(black!75!bg)}}
+  \pgfdeclareverticalshading{beamer@frametitlebottomshade}{\paperwidth}{%
+    color(0pt)=(bg);
+    color(1.5pt)=(black!75!bg)}
+  {\usebeamercolor{headfoot}\usebeamerfont{author in head/foot}
+    \pgfdeclareverticalshading{beamer@headfootshade}{\paperwidth}{%
+      color(0.0ex)=(black!30!bg);
+      color(0.8ex)=(black!20!bg);
+      color(1.0ex)=(bg);
+      color(1.2ex)=(white!10!bg);
+      color(2.0ex)=(white!20!bg)}}
+
+  \newcommand{\beamerwuerzburgthemeadddelimiter}[1]{%
+    \setbox\beamer@tempbox=\hbox{#1}%
+    \ifdim\wd\beamer@tempbox>1pt%
+    \ifbeamer@wuerzburg@noseperators%
+    \hskip1.5ex
+    \else%
+    {\usebeamercolor[fg]{frametitle}\textbar}
+    \fi
+    #1
+    \fi%
+  }
+}
+
+\defbeamertemplate*{footline}{wuerzburg theme}
+{
+  \ifbeamer@wuerzburg@nofootline
+  \else
+  \leavevmode%
+  \pgfuseshading{beamer@bottomshade}
+  \ifbeamer@wuerzburg@glossy%
+    \pgfuseshading{beamer@headfootshade}
+    \vskip-3.5ex
+    \hbox{%
+      \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,left,ignorebg]{headfoot}%
+        {\usebeamerfont{author in head/foot}\hspace*{3.5ex}\insertshortauthor{} \beamerwuerzburgthemeadddelimiter{\insertshortinstitute} \beamerwuerzburgthemeadddelimiter{\insertshortdate}}
+      \end{beamercolorbox}\hspace{-15ex}%
+      \begin{beamercolorbox}[wd=15ex,ht=2.25ex,dp=1ex,right,ignorebg]{headfoot}%
+        {\usebeamerfont{date in head/foot}
+%        \insertframenumber{} / \inserttotalframenumber \hspace*{3.5ex} 
+        \insertframenumber{} / \if\thelastframecounter0\inserttotalframenumber\else\thelastframecounter\fi \hspace*{3.5ex}}
+      \end{beamercolorbox}}
+  \else%
+    \hbox{%
+      \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,left]{headfoot}%
+        {\usebeamerfont{author in head/foot}\hspace*{3.5ex}\insertshortauthor{} \beamerwuerzburgthemeadddelimiter{\insertshortinstitute} \beamerwuerzburgthemeadddelimiter{\insertshortdate}}
+      \end{beamercolorbox}\hspace{-15ex}%
+      \begin{beamercolorbox}[wd=15ex,ht=2.25ex,dp=1ex,right]{headfoot}%
+        {\usebeamerfont{date in head/foot}
+%        \insertframenumber{} / \inserttotalframenumber\hspace*{3.5ex} 
+        \insertframenumber{} / \if\thelastframecounter0\inserttotalframenumber\else\thelastframecounter\fi \hspace*{3.5ex}}
+      \end{beamercolorbox}}
+    \fi%
+  \vskip0pt%
+  \fi
+}
+
+\defbeamertemplate*{headline}{wuerzburg theme}
+{
+  \leavevmode%
+  \ifbeamer@wuerzburg@glossy%
+    \pgfuseshading{beamer@headfootshade}
+    \vskip-3.5ex
+    \hbox{%
+      \begin{beamercolorbox}[wd=1.0\paperwidth,ht=2.25ex,dp=1ex,left,ignorebg]{headfoot}%
+        \usebeamerfont{section in head/foot}\hspace*{3.5ex}%
+        \insertshorttitle\ %
+        \beamerwuerzburgthemeadddelimiter{\insertsectionhead}%
+        \beamerwuerzburgthemeadddelimiter{\insertsubsectionhead}%
+        \beamerwuerzburgthemeadddelimiter{\insertsubsubsectionhead}%
+      \end{beamercolorbox}%
+      \ifbeamer@wuerzburg@nofootline%
+      \hspace{-15ex}%
+      \begin{beamercolorbox}[wd=15ex,ht=2.25ex,dp=1ex,right,ignorebg]{headfoot}%
+        {\usebeamerfont{date in head/foot}
+          % \insertframenumber{} / \inserttotalframenumber \hspace*{3.5ex} 
+          \insertframenumber{} / \if\thelastframecounter0\inserttotalframenumber\else\thelastframecounter\fi \hspace*{3.5ex}}
+      \end{beamercolorbox}\fi}%
+  \else%
+    \hbox{%
+      \begin{beamercolorbox}[wd=1.0\paperwidth,ht=2.25ex,dp=1ex,left]{headfoot}%
+        \usebeamerfont{section in head/foot}\hspace*{3.5ex}%
+        \insertshorttitle\ %
+        \beamerwuerzburgthemeadddelimiter{\insertsectionhead}%
+        \beamerwuerzburgthemeadddelimiter{\insertsubsectionhead}%
+        \beamerwuerzburgthemeadddelimiter{\insertsubsubsectionhead}%
+      \end{beamercolorbox}%
+      \ifbeamer@wuerzburg@nofootline%
+      \hspace{-12ex}%
+      \begin{beamercolorbox}[wd=12ex,ht=2.25ex,dp=1ex,right,ignorebg]{headfoot}%
+        {\usebeamerfont{date in head/foot}
+          % \insertframenumber{} / \inserttotalframenumber \hspace*{3.5ex} 
+          \insertframenumber{} / \if\thelastframecounter0\inserttotalframenumber\else\thelastframecounter\fi \hspace*{3.5ex}}
+      \end{beamercolorbox}\fi}%
+  \fi%
+  \vskip0pt%
+  \pgfuseshading{beamer@topshade}
+  \vskip-3pt
+}
+
+\defbeamertemplate*{frametitle}{wuerzburg theme}[1][left]
+{
+  \nointerlineskip
+  \ifbeamercolorempty[bg]{frametitle}{\vskip0.5ex}{%
+    \hbox to\textwidth{\hskip-\Gm@lmargin\pgfuseshading{beamer@frametitletopmshade}\hskip-\Gm@rmargin}
+    \nointerlineskip%
+  }%
+  \@tempdima=\textwidth%
+  \advance\@tempdima by\beamer@leftmargin%
+  \advance\@tempdima by\beamer@rightmargin%
+  \begin{beamercolorbox}[sep=0.3cm,#1,wd=\the\@tempdima]{frametitle}
+    \usebeamerfont{frametitle}%
+    \vbox{}\vskip-1.7ex%
+    \if@tempswa\else\csname beamer@fte#1\endcsname\fi%
+    \strut\insertframetitle\strut\par%
+    {%
+      \ifx\insertframesubtitle\@empty%
+      \else%
+      {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
+      \fi
+    }%
+    \vskip-1.3ex%
+    \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
+  \end{beamercolorbox}%
+  \nointerlineskip
+  \ifbeamercolorempty[bg]{frametitle}{}{%
+    \hbox to\textwidth{\hskip-\Gm@lmargin\pgfuseshading{beamer@frametitlebottomshade}\hskip-\Gm@rmargin}%
+    \vskip-1.5pt%
+  }%
+}
+
+\setbeamersize{text margin left=1em,text margin right=1em}
+
+\mode
+<all>
diff --git a/slides/sty/cbfcolors.sty b/slides/sty/cbfcolors.sty
new file mode 100644
index 0000000..f5a86d8
--- /dev/null
+++ b/slides/sty/cbfcolors.sty
@@ -0,0 +1,29 @@
+% *** COLOR BLIND FRIENDLY PALETTE ***
+% definition of colorblind friendly colors
+
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{cbfcolors}%
+[2017/06/12 v0.0.1 Palette of colorblind friendly colors]
+
+\RequirePackage{xcolor}
+
+% color definitions (cf. http://jfly.iam.u-tokyo.ac.jp/color/#pallet)
+\definecolor{cbf.orange}{cmyk}{0,0.5,1,0}
+\definecolor{cbf.skyblue}{cmyk}{0.8,0,0,0}
+\definecolor{cbf.green}{cmyk}{0.97,0,0.75,0}
+\definecolor{cbf.yellow}{cmyk}{0.1,0.05,0.9,0}
+\definecolor{cbf.blue}{cmyk}{1,0.5,0,0}
+\definecolor{cbf.vermillion}{cmyk}{0,0.8,1,0}
+\definecolor{cbf.purple}{cmyk}{0.1,0.7,0,0}
+\definecolor{cbf.gray}{cmyk}{0,0,0,0.4}
+\definecolor{cbf.black}{cmyk}{0,0,0,1}
+
+% useful aliases
+\colorlet{cbf.0}{cbf.gray}
+\colorlet{cbf.1}{cbf.orange}
+\colorlet{cbf.2}{cbf.skyblue}
+\colorlet{cbf.3}{cbf.green}
+\colorlet{cbf.4}{cbf.yellow}
+\colorlet{cbf.5}{cbf.blue}
+\colorlet{cbf.6}{cbf.vermillion}
+\colorlet{cbf.7}{cbf.purple}
diff --git a/slides/template.tex b/slides/template.tex
new file mode 100644
index 0000000..de68528
--- /dev/null
+++ b/slides/template.tex
@@ -0,0 +1,235 @@
+%!TEX encoding = UTF-8 Unicode
+
+% rubber: path ./figs//
+% rubber: path ./sty//
+
+\documentclass[%
+	USenglish,  % load default language last
+	%aspectratio=169,
+]{beamer}
+
+
+% === PACKAGES IMPORT / CONFIGURATION =========================================
+
+% --- ENCODING / FONTS -----------------
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{lmodern}  % vector fonts
+% \usepackage{kpfonts}
+% \usepackage{microtype}
+
+% --- i18n, l10n -----------------------
+
+\usepackage{babel}
+\usepackage[iso]{isodate}
+
+% --- GRAPHICS / FIGURES ---------------
+
+\usepackage{graphicx}
+\usepackage{sty/cbfcolors}
+% \usepackage{marvosym}  % nice arrows
+% \usepackage{standalone}
+% \usepackage{tikz}
+
+% \usetikzlibrary{babel}  % avoid annoying interaction of babel with tikz
+
+% --- ENHANCED TABLES ------------------
+
+\usepackage{booktabs}  % publication quality tables
+% \usepackage{tabularx}  % extended column syntax
+% \usepackage{multirow}  % mergeable rows
+
+% --- MATHEMATICS TYPESETTING ----------
+
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{amsthm}
+
+% --- SLIDES LAYOUT --------------------
+
+% beamer theme by Christian Gogolin, see http://www.cgogolin.de/Computer.html
+\usepackage[]{sty/beamerouterthemewuerzburg}
+\usepackage[outline]{sty/beamerinnerthemechamfered}
+\usepackage{sty/beamercolorthemeshark}
+
+\setbeamertemplate{navigation symbols}{}  % remove navigation symbols
+\setbeamerfont{footnote}{size=\scriptsize}  % smaller footnote font
+
+% definition of transition slide
+\newcommand{\transitionframe}{
+    {
+	\renewcommand*{\insertsection}{}
+	\renewcommand*{\insertsubsection}{}
+	\renewcommand*{\insertsubsubsection}{}
+	%\begin{frame}
+		\tableofcontents[%
+			sectionstyle=show/shaded,%
+			subsectionstyle=show/show/shaded,%
+			subsubsectionstyle=show/show/show/shaded
+		]
+	%\end{frame}
+    }
+}
+
+\renewcommand{\textsc}{\uppercase}  % small caps are incompatible with slides' font
+
+% --- BIBLIOGRAPHY ---------------------
+
+\usepackage[%
+	backend=biber,
+	safeinputenc,
+	citestyle=authoryear,
+	style = numeric,
+	bibstyle=phys,
+	maxcitenames=1,
+	maxbibnames=1,
+	sorting=nty,
+	hyperref=true,
+	isbn=false,
+	doi=false,
+	defernumbers=true,
+	giveninits=true,
+]{biblatex}
+
+\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}  % capitalize last names
+\renewcommand*{\mkbibnameprefix}[1]{\textsc{#1}}  % capitalize prefix
+
+% ignore shorthand field
+\DeclareSourcemap{%
+	\maps[datatype=bibtex]{\map{\step[fieldset=shorthand,null]}}%
+}
+
+% custom environment without any label
+\defbibenvironment{nolabel}%
+{%
+  \list{}{%
+    \setlength{\leftmargin}{\bibhang}%
+    \setlength{\itemindent}{-\leftmargin}%
+    \setlength{\itemsep}{\bibitemsep}%
+    \setlength{\parsep}{\bibparsep}%
+  }%
+}%
+{\endlist}%
+{\item}
+
+% custom inline cite command
+\DeclareCiteCommand{\inlinecite}%
+{\usebibmacro{prenote}}%
+{%
+  \usebibmacro{citeindex}%
+  \usebibmacro{journal}%
+}%
+{\multicitedelim}%
+{\usebibmacro{postnote}}
+
+% \addbibresource{$bibliography$}
+
+% --- MISC. PACKAGES -------------------
+
+\usepackage{appendixnumberbeamer}  % backup slides
+\usepackage[strict=true]{csquotes}  % advanced quotes
+\usepackage[binary-units,per-mode=symbol]{siunitx}  % correct units for physical quantities
+
+
+% === MACROS DEFINITION =======================================================
+
+% --- COMMON ABBREVIATIONS MACROS ------
+
+% latin abbreviations, see:
+%   - http://www.sussex.ac.uk/informatics/punctuation/capsandabbr/abbr
+% comment by Sascha Hunold, see also:
+%   - https://www.ieee.org/documents/style_manual.pdf
+%     (p. 32, Short Reference List of Italics)
+%   - http://web.ece.ucdavis.edu/~jowens/commonerrors.html
+
+\newcommand{\eg}{e.g.\@}
+\newcommand{\ie}{i.e.\@}
+\newcommand{\cf}{cf.\@}
+\newcommand{\circa}{ca.\@}
+\newcommand{\perse}{\emph{per~se}}
+\newcommand{\adhoc}{\emph{ad~hoc}}
+\newcommand{\sic}{\emph{sic}}
+\newcommand{\versus}{\emph{vs.\@}}
+\newcommand{\aka}{a.k.a.\@}
+\newcommand{\resp}{resp.\@}
+\newcommand{\wrt}{w.r.t.\@}
+
+\makeatletter
+\newcommand{\etc}{etc\@ifnextchar.{}{.\@}}
+\newcommand{\etal}{et~al\@ifnextchar.{}{.\@}}
+\makeatother
+\newcommand{\cluster}[1]{\texttt{#1\relax}}
+\newcommand{\linear}[1]{\ensuremath{{#1}_L}}
+% \newcommand{\unit}[1]{\ensuremath{\left[\si{#1}\right]}}
+
+
+% --- MISC. HELPERS --------------------
+
+\usepackage{hyperref}
+
+\newcommand{\email}[1]{\texttt{\href{mailto:#1}{#1}}}
+\newcommand{\placeholder}[1]{%
+  \PackageWarning{placeholder}{`#1' is not defined}%
+  \texttt{#1}%
+}
+
+% Pandoc header
+$for(header-includes)$
+$header-includes$
+$endfor$
+
+
+% === META DATA ===============================================================
+
+\title[$short_title$]{$title$}
+%
+\subtitle{$subtitle$}
+%
+\author[%
+$for(affiliations)$
+$for(affiliations.authors)$
+$if(affiliations.authors.is_presenter)$
+{$affiliations.authors.firstname$ \textsc{$affiliations.authors.lastname$}}
+$endif$
+$endfor$
+$endfor$
+]{%
+$for(affiliations)$
+$for(affiliations.authors)$
+$if(affiliations.authors.is_presenter)$
+{\underline{$affiliations.authors.firstname$~\textsc{$affiliations.authors.lastname$}}\textsuperscript{$affiliations.mark$}}
+$else$
+{$affiliations.authors.firstname$~\textsc{$affiliations.authors.lastname$}\textsuperscript{$affiliations.mark$}}
+$endif$
+$endfor$
+$endfor$
+}
+\institute[
+$for(affiliations)$
+$affiliations.name$ $sep$,
+$endfor$
+]{
+$for(affiliations)$
+\textsuperscript{$affiliations.mark$}$affiliations.signature$ \\
+\texttt{$affiliations.email$}
+$endfor$
+}
+
+%
+\newcommand{\talkdate}{$date$}
+\date[\talkdate]{\printdate{\talkdate}}
+
+
+% === DOCUMENT CONTENT ========================================================
+
+\begin{document}
+
+\begin{frame}[plain]
+	\titlepage
+\end{frame}
+
+$body$
+
+\end{document}
-- 
GitLab