From 3127a209c2dba3a6aa25a4582ff4a240ad175a6b Mon Sep 17 00:00:00 2001 From: BrianLiu <125264650+brianLiu0405@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:05:04 +0800 Subject: [PATCH 01/22] Update README.org modify 2023 -> 2024 --- README.org | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.org b/README.org index a77151714..cf4f47a15 100644 --- a/README.org +++ b/README.org @@ -1,4 +1,4 @@ -#+TITLE: Operating Systems Capstone 2023 +#+TITLE: Operating Systems Capstone 2024 #+OPTIONS: toc:nil This repository is used for homework submission. @@ -37,7 +37,7 @@ If you cannot find your branch, ask TAs for help. #+BEGIN_SRC shell git clone - cd osc2023 + cd osc2024 git checkout --track origin/ #+END_SRC From c3902e75d6428d90ca50801d883ea497d02045f1 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Sat, 2 Mar 2024 21:17:47 +0800 Subject: [PATCH 02/22] chore: remove unused hint of commit --- README.org | 79 ----------------------------------- git-usage.org | 72 ------------------------------- images/clone_url.jpg | Bin 25772 -> 0 bytes images/create_fork.jpg | Bin 60481 -> 0 bytes images/fork_button.jpg | Bin 9340 -> 0 bytes images/forked_repo.jpg | Bin 13095 -> 0 bytes images/pr_base_selection.jpg | Bin 120191 -> 0 bytes images/pr_button.jpg | Bin 48696 -> 0 bytes images/pr_desc.jpg | Bin 86880 -> 0 bytes 9 files changed, 151 deletions(-) delete mode 100644 README.org delete mode 100644 git-usage.org delete mode 100644 images/clone_url.jpg delete mode 100644 images/create_fork.jpg delete mode 100644 images/fork_button.jpg delete mode 100644 images/forked_repo.jpg delete mode 100644 images/pr_base_selection.jpg delete mode 100644 images/pr_button.jpg delete mode 100644 images/pr_desc.jpg diff --git a/README.org b/README.org deleted file mode 100644 index cf4f47a15..000000000 --- a/README.org +++ /dev/null @@ -1,79 +0,0 @@ -#+TITLE: Operating Systems Capstone 2024 -#+OPTIONS: toc:nil - -This repository is used for homework submission. - -*To protect your rights, please create a pull request (PR) before the demo and* -*make sure the TA merges your PR after the demo.* - -* How To Submit Homework - -** Overview -For those who are familiar with git. -1. TA creates a branch named your student ID. -2. You fork this repo. -3. Base on the == branch, you do your labs and put your code in the - forked repo. -4. Create a PR to the == branch in this repo to submit the homework. -5. TA merges the PR as a proof that you have demo the lab. - -** Fork The Repo -Fork the repository on Github. - -[[./images/fork_button.jpg]] - -Uncheck the "Copy the =main= branch only". - -[[./images/create_fork.jpg]] - -If you don't want to see a lot of redundant branches in the forked repo, keep -the checkbox checked and follow the [[./git-usage.org][guide]] to fetch your own branch. - -** Clone To Your Computer -Clone the forked repo and switch to the branch named your student id. -If you cannot find your branch, ask TAs for help. - -[[./images/clone_url.jpg]] - -#+BEGIN_SRC shell - git clone - cd osc2024 - git checkout --track origin/ -#+END_SRC - -** Specify Personal Information -Write down the following info in your =README.md= (or =README.org=, =README.rst= -etc.) -+ Github account name -+ Student ID -+ Your name -+ Any other information you want - -Here is an example [[https://github.com/psychicalcoder/osc2023/blob/0816171/README.md][README.md]]. - -** Implement Your Kernel -Design and implement your kernel in the forked repository. -#+BEGIN_QUOTE - Make good use of =.gitignore=. In the git history, we do not want to see - binaries, objective files, __MACOSX, python caches, super large test files, - or any files that can be compiled from your source code. -#+END_QUOTE - -** Create a PR -Create a Github pull request before your demo. Once the PR is created, you can -always push additional commits to your forked repo before the PR is merged. The -changes will automatically appear within the PR. - -1. Click the =New pull request= buttom in your repo. - [[./images/pr_button.jpg]] -2. Choose the branch with your student ID as the base branch. - [[./images/pr_base_selection.jpg]] -3. Type a title and some information about the PR. - [[./images/pr_desc.jpg]] - -Here is a [[https://github.com/oscapstone/osc2023/pull/1][PR example]]. - -* Happy Coding ~ -As long as you meet the above requirements and the PR can be merged without -conflicts, we do not care about what the forked repo look like. You can rename -your branch, change the default branch, or do whatever you want. diff --git a/git-usage.org b/git-usage.org deleted file mode 100644 index 817c4bb6c..000000000 --- a/git-usage.org +++ /dev/null @@ -1,72 +0,0 @@ -#+TITLE: Appendix -#+OPTIONS: toc: nil - -** How to add a branch that is in the upstream repo but not in your forked repo? - -1. Add osc2023 as the upstream - #+BEGIN_SRC shell - git remote add -t upstream https://github.com/oscapstone/osc2023.git - git fetch upstream - #+END_SRC - -2. Checkout your branch from the upstream - #+BEGIN_SRC shell - git checkout -b upstream/ - #+END_SRC - -3. Push the branch to your forked repo - #+BEGIN_SRC shell - git push -u origin - #+END_SRC - -** How to remove a file from the git history? - -*Warning:* If you not no fully understand what are you doing, please backup the -repo. TAs are not responsible for any mistake in this section or any damage -produced by your git operations. If you need to modify the history that has been -merged into the upstream repo, please contact with TA. - -*** case 1: the file is added in the latest commit -Just modify the latest commit -#+BEGIN_SRC shell - git rm --cached - git commit --amend -C HEAD -#+END_SRC -What if you have pushed to Github? Force push again. -#+BEGIN_SRC shell - git push -f origin -#+END_SRC - -*** case 2: the file is added in a old history. - -I suggest that you use =git rebase= to modify the history. -First, use =git log= to find the commit you added the file. -Suppose the commit id is =7a45f90=. Use the commit before =7a45f90= as the -newbase. - -#+BEGIN_SRC shell - git rebase -i 7a45f90^ -#+END_SRC - -This command pops up the editor. Modify =pick 7a45f90= to =edit 7a45f90=, then -save and close the editor. -#+BEGIN_SRC shell - git rm --cached - git commit --amend -#+END_SRC - -Repeatedly use the following command until the rebase procedure finished. - -#+BEGIN_SRC shell - git rebase --continue - # if there is conflict - git rm -#+END_SRC - -You might need to force push to the github repo. - -*Warning:* force push is not revertable. - -#+BEGIN_SRC shell - git push -f origin -#+END_SRC diff --git a/images/clone_url.jpg b/images/clone_url.jpg deleted file mode 100644 index 7305481101979f9ef1b092806535e193555f4a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25772 zcmeFZ2UL^Y(k~t=}n0A0D%ZdZvp}eFQD|^n^fsV>Ae$r zC!q!i;l}rz?;Jhnp7Y&%zjgorwZ3%&8`iV)Wbc{TGqY!Yd!AfRT`vL1o+&6R0B+p4 z0eFS^0bI`l!TwDUGTST|0{ zz#_kaO@8CL1Hb|R+`z?9`;*|mzHVS)XuOGsPe4e7xuKd2fOP{K8w&^fC)Jp{eKGF? zaL92f?g%};NvUau$L35W>>v9DpZ!UBEA@+EIL8BXmjD7n8d|#B^qgGWckl6th>D3n zl#rBrDzBiZr2I_lrM8Z)p1y&FrIodft)0EAo4bc6*vmWcT~KgHXjph${D*|Zq>rDH zGcvQXb8_?Y3o0tBs%vWNzSg(3cXW1j_w@FSjE;>@OioSDz?N55*VZ>Sx3&?7N5?0p zXUOx5pM2c_VE=`!zj5{te34`L!otD9#=-l^*9|OBOv5I}!M!7Nlj5-^o|!Wxo3KAV z)sxsS<*fwl4_?5j&0U5GX*fh+oQR*S{mI$?8e;+fN1XkQvA^>*10cq}fmu9kasUu; zrHJk>y9T85f-a9+V2Y# z)qm|_nL1@TT64Sx_$8ru)~Jkw!lA$P-2IhE-MbmPd|JQu`~%svX6EU?G6F2$1#a}s zqOSyz+I@E$h^VdsfA7)!mBA8C`KkZM@-J)p|5h2J>i?wJgm*LEw}s#RjP*~Ampn~X z!R}Lb+`|_NQS4!TzM}!kblmT4$!q1!eS?4-#gk}Um1{t!<|#%A(`rqT)PmOlYPD8Z zr|^zTLg=7jDT*-Z8W5hji!mM8kbj#T-frl{t#S6?$4Ht|v`v)m6fXNo_CJsJYtR4Z%=|ie z&hx>Xr;|de5BMzHV!yL1-BvVhRK{cepeF#*l=pK$J-f*C;>tKIX+3N_lGNw{%dxgu$oh)tGgL3JT0&{;3ITM z3?+1F8zb^)&1(QrV0ZelG&toNfTwGUa;a;nGD8)?ffLCrM|)_z?PBV4?SHx{25H1B zeGT}s(y@q?#H{Sf2dHiPxgNAw1h_GaA{{s2JuF1i;>7?r!3c3QNl6QGjRjsO?R5>1 z>keyyySrZly6>WgLk=;{+`tw(Sc_ySsM1~2MG25HLx&K{AQY1^6wwF#M{2J!N!QHK zRYRC900akW+m`l~{xc8TFRZT63o7p9HvgQ%r`PH`e<{B>^4(4I%=8^@Av-hL?_Vln`w35y9&<3NbT!0?+{kq(_RPwB18 zGa`EUOW44WP90O}A{PZjUtgadW8{%~0lFSId9f`Jvv!VIA*o(jUOAW`w%jslsLlkM z$S=;GAXvZN{QL}?ifD0X)Hd z`cv}|Jdzt)J0|SDaA?;|i@zT~l6cd>KDoKcb(x9VF!7M4s&UbkYRhS}$m)p)wRvwX z6G6#rD?Moh$`DZlWJX4`b+>vXLqitjgS#9y1#;`-lt*;lf7Jh=(5y!kUzf;@^?{$0 z;Z*lzt!0Iuf7Cab@p!$~6QpK!;Q&oM6PC8Slye}1I5)$^f=}rk6JxV)DQYy2SIH=B zDs}gphr;)iVqZv~N9qYl>GI*11hy^Gm%5uWf^}8u>qa<-MFnwLD2=ug5vqi@abg8l zkMyYC6-7?D&pqs=WBWXbW<~~_E$4O=n==9ZQj5Tni_gka1|q#CpH0eV&KUB>h{{?6 zAoJjdM<-Y5jfN$5^dzya_99uBI7nMC$O%NhEKW1IZ`NVSOVPgex+0*C$%~rY@yY49 z>H6M_#qg*mU6vR4KH}WxB;2gaFadYD#e;;dTum*#W+8jK1Mk)^8_Mo=m)V zlyRg9nL2#5$h@}d+EcRL?13bJw_QF#$R^~016!HdM%<&gpZQRapMdCOi|tjs%tmHt z(w>CQVncd9&SWyDKXod$p(}K0xCXSh4E6Ch%tLjq0m4n!fQvfl&N9mteYKC#HQ>Df z#`aAPp_^QJrnUR9Yd~oz^w@rU&$(q;B@a5;n0`S}^eKb=r>W+L9)hURLppx6$l1@x z8&&xNtSx#YNBa70-Db}BKg_iCR_zO)QxNador9$cx;qDFDBIGBK93(?Mww6}L~A~A zqQo2>q=&l?Yd_e4$BLAG)ZtD)n3{~(0agM#NSVN%-Ljkw2>EM32t>Dd+p)+1=^|2* zh!Z!C+5C)RWGCJ{>12MU1ek-)3``WmfMGiI=^ciJpc~zVzz!LbVGjNR!>9GCGx{Gn z0(^gXe&&8-Tf4!Xi5syT>|L6qdH5Rk<#w_nUpm7h5ltkv0l& z^>_Oy^@3KjWf{=pKs_;?n)n~FcwzckzTxQScX}CCUp>5>qn|=rAq+qiD4d~YR)--D zS7STgym`4C!|!Z?wH%6c3#;CwA1C9%TCj}{(qQlG?6vg3OvK#@Y3giSame0!e5ENl%I z>K+ysPAgRAHXUDXRA9mdUpL`QPafyA3Ej)gi+MDeZjB=GPT!B@BIRM~)Zm%@TjDP#>DSmQ zMvC?Yn6;=z?j3%PRK9mZQ-%4_Acv){;1cv*8sG4->GT9qKX-3Zo5$I`qS6^NP(|fb zwF)aLJ%c^u$G{UKQ3rW^Ncrj=o3@&ZIemEfEA?{l=EK0-Ho>$}aK=0S5>iKi_C*MN*k_^z+bXK;f8LOr;+Q7+qF z=d7NygA05Ri@5#xk2p1hV{J`V7O` zMsdDD+DK8D6bJ_;J?hrrNVwB(%WSv!ylLzfYFIk1q1@}c*r|DEG~HXh$mCL(pnn=6 zTrpY{O0#*vr&B+Wi>`RwC!gN3Ciry0>$UqS<4a|Z8Mz2Yd(RUsU5xRl9$dYFUg3-v zk8A0IkRKMV0h4&wfFV_7g)2X4L(ERzXu2P>W?D8|h*)1l%Pe05+@L)0O2P7@E7Et% z#d+6&*~KrMPMc}B#zgxWw8t|Ki>vy@WJZmRnmcUJbnjQzV;k_OAiOkW&d`U~7GF zG0f-6rKi&s_np5$@rt=k5Pr{x9N_o{`x|L87r=U1;Sid7I~f{)I~Y;w4j7%Ksi_|R z{GLFNDJfmV;~kc;(s}5&Rb6a%;7mzQ%J*m%q3`F;0%Jyhz!YCe5pu+Z`##BHr+1E< z-)}KZ2c>HbxnWjcCO7D~$)U5EhnZ1T@4=KoYi`r($kXDgz9r#zMge#ne=ze($s^^K z)oHq2-C?sd<8D=TK0ZF(aZ;da>OFd;)=#0WGhf+7N9OHK$dU0&m^iDw5S)T0H+FbZ zDd`sBY$4hqem}%IYN&%ihavRN+reU!VQD$oEyH#+X~h^sohyv{-ND8izjnTKP*4s< zVRso*OxJxRlf-iURjPzq|Fqj=_C%?#V{w&tbGLWqlV|q~=JHX>;=H`Mp0?8qlg1Pc zO#|$0=>(1H%flk4-Y=u<99{TrysV zpu&5oPo! zaiXlCz_;i)_ zrk)gjTo2F;R$z+KDoJ0a4ReCXt@!NepIDCD2&9NIIDjhnQmD1{EdZ~(hVTFgWA2D% zATqN{mbeOjGWVU)R&3s=Ln#hUTF)}%y^_CURIX_^kH$;5tD%+mHCe@xvZYXMQPj;V zThaL%z)1K)TOw>s$DkbOtF82-70@*RLI^B#8$3tUUIUtO zrNZ0KhMPZK1?E5pqgt-uchRk*z>Tg&G?L1Q59rIVl|ChDgF?<;0~WDjc9|ZaAsBe$ zz+b-Y|L|j-KKY4WdwZF8vL7g{J-#d`qKn@esdj&uyrbF>B-E^wO1u4-nyEOu`aRnM z9SpDJ8?Jhz_ekB32E)z$72e8qW&TrmzIe3%$N62vBQtP1#aEs z^TqzXXw%iZU;^^s2Z3+f$H;qRT1zLQRwlk4P@sVD+Q^(}W6$;r>vBE|dzrn0XD_|6 zzD?fbCOvsqU8xw9Vg;Rf6aJzy>Ked;v^Y!)zmmnoWR&nl^g9qKbg7;N%@u>x1m3y^ zY%0Ld&_tM!XW3y8J&<(7B7`o)sY<2H41{>_I360!(pSm%+e|(mCDQ5bEWxLw+{Gxf?&l+LC z%n0v1i#*w3B2oz|5jmj2-85!!#Qc7~;q>sAWOh2w-dOmpyJ%b(p=& zTUQR29v^nEQbn)qjOdv|Zv|6$XB6zgP5>9>qaALUNUMyY1?7|L;c&=fGLlbg|CnjG20haAS|3-}V7kOGUOPgze*~~S-djo^X zto_7f{u`1&C)pL9I8p3QeD;i$Vc~)69g@tv%V|6+s5K@uml1&e31wA@4xVG#vz#1o zqXX=DvW_`3a!)Nyk4An9=1;H+{UZYH{ZqOxG14{6i163C6c#++`nk3*ey;6rqZJR! zf6Kr6M2kB9Df^#T7_gEJgR3P0|AMROY-TLI{B1;*=~(EXO8Q?wwn8_}H$1-$7_-~c zvXPBZ4Hb-PXxHDZqyBwB#ovf6n5Qx#O#gMn%-@LBb_y53RsVHJ&EJTvm8Zq}ud-ht zGWB?EpUzvf;~h&Lf4>3dcqp4n14nC?vrC-z1u$IVHtBj6eSo&)Yf@*%idZ^<9gbpF zE5_I(%4iv$wU-mXRZ5KKFk-=2ipY(UV)cGq#s236osSi?l8e@hl(nt449H&FLJx69 zuK_y?z$+Z>?M#dx?4eZ0 zssVJp$Ji327-u_+>kLM{Rvg2urAyvAPDmn~q0?gwpt& z;yvNYqKGm9pvSaXmm$LSG?WG3UCMH7Pg-`uhks%HHbjL{GL7R+)TxhH!~>iGFSi~% zMub}JRk}dqZSfF+W)|=#h=fKh;jZb_*if_~7>gh}2{JQ@tAvmlH=|AtRGJ#=m@tgu12lXeR?e+(r) zesIt%2r;Vs+EiCpS>7@lH?g3vpINIj3iBY(f2g6C$ZEk6KhY%lRgefwgeEU#08e(X zI9;lvIFiI_S*#B|uF`vJl!O|b7gJLz{UcY>swYOQFhHEruUI#sFrE}>t`<~4jL_F`a7GlgR+JUXM0Bb&<3Av zhiUDsjS^YzzVIrBG9m9lY^*HSOuuJsCp(TT>e-Xs^$2)X)R+%TNSM}F*XaJzT7=mI z0Xu0NaMY^^&++3Pv!J3hQJ)(i`2tghAWK6Zg0gYaBlvxhg zK=p|VuhfwzNPwHpl2hyK59&1qVF}iWlgZX|l$=B9_ho+1y^Dc-5Xg~fFY0qmbU*9+ ze$u4dp1l;QtCfsPB!ImAW)fp$;-yYKLN`>Q$ero-u|8Wx`6ZhogA$|Cr`Vo1E^5j+ zD}WmT$22+CNtaJ&jN422YQ)5o>OB%?Djt8fM{KKbJZsfwiq-w@&i9GVEI^6-X0?+a zzrBYn-ROzUP}SAbZG%X9-?+`0p89Z*_#M-JAy&HASVE)R(yrB+V2jRV--Iz;lY3HnT1Sf^L7uQ#AELzZB~?=cgiZ?YV9pegA=py2 z)!0nn+}z7WFYz0rc@&+!=Y?rU#B@?ejX_SVW41#*qmYrZ(?zI*zWE2CsLpmam~!+Z zPu5lwlnzY_;&A3jX~I%WENLb+Xe~QZ>_Q+XspiaO?tNK-dNtrY?ABL>`K%)y!RA}W zJ09L+7d0)^>n-_4Q*#VeWz!DyGs^37fx6zAJ7>vBp+AzF zvt^>@Xmt{wa8#rXM?CFikXnozhcw_sui1D>*Z$=*;aDk$x{Q z&L{?d97A+uQ;wsvUkE=ip5#9+oE@Yvz@&Pr*~ZE;IbUuj)yyd%cEMTx+2(zU5)|0) z@!6?eHR0)D?xdvhxy=ok{SQ9jZp>5(icP>6=rl>w2v?ZqE7Ropv9$_ExxaoL-OFyQ zRZ*#p6e&{_OfD~H%!AyTI{8*88nIMLthm%duw_6cPBGtYhV`vd^(=+C{qr$XFrNKP z{@uG7;eelwC#U=xz?!mnfys|A2nyY`^!^S?4Ao-os_Ni9D~F}u8`hJW47GdB6UG}X~<)hB-o2L66y#OKP}^1xq5%lq|Cfq)-Ym;0v{K|1bT6w0Se3q%?r!zhh1t&}P{j|<9yPOhUVX%*O^=+(z$2z0? z;fW8#)Dm8R8lEOMMFUq(7t!caZ0s-dnHv#F>4IH^6AE`ad^{9 zH{dxIX3sl0U_l4)oXE{pmuVV_H6UhTr9meSQG)uIQxRi!ts2KlebXI}Ayx9OH$4OR zK+Ttmd-vdBq1em00bw!#1T{wK7&F>sn8Tw9R_X&JzQl3`%ag<@v?hFr48Y&UKX~y1 zkWqPZK(=KuP$wJ(y1oC`u^3JvXR5G_e} z{F`l4E=zKWbEo{(2Az!=P85H_>|Fl=vzKcBW-2sGr>p_Rx%1R72y4>aUXWGzj=tO| zjQjcbv*pF_`A^>FZ{Zv0jUfwJ>++>wP%|+?F?=0f6S(Z2vRqP~YqB+&7{Qh6!YD=b`x6&T@kUM#rAZ9QG8=;*bm}B}>jp;`lEk~S8z?%0PD7Q#>OV7l2v8iF z#LGf)Bg>bJeT*H6f=(?qS6=$vQi1{R0)2mPDo%Dug-Ck5m?rj`2qmy!@(j@5KR zJAH0+<8leh=?LQHmrRr}{50LMz{u9XCRAE8$F{yJ-|k+xim|L6{-=(>eapKq79thB zPhx`5Wbv@Gb|3-RK!0M}m{O@~l-Z3=pZI>3)!Sn!SL8%UgfwR+c&EK~hBQ=U*4I?A zNnK!hU<VON+bZ2vBt8O&G&wHm+38Rp+NJXl*SsB5tSP7$%tLly=;hJRj}=G*l}HnLeVwAQe4f( z^Lz!9O6xT1<25^si!4q*fa%1;qFmc2&~(mO4$8#3Ln;L(N|s8N6i>g*nD-PcG2X$3 z7ppV-^$p@8H^bNq1%-=rj+PBwzQq~5DhV5ER=q{ zD4pt|Mxo_ZICFw0{7fC8FPHt;M@0O^ch9!2{6os4ps%Mv>4e3}z9-j5J;9 z3=U)d;#dsMl&c@FR%s!b(l;`GHuNx*PiR5ueL;MZp9(5qGQsxVF!f$ump5B{1oGNW103k zJZTKW1lQ*H0?ZnuQ7A-OK*ErIG8F41=JrlHv4~H4sHFagw1MXr5yyiR;F+0G z#q#0lwUI_CyEjhH2EJGB(NZk&O6I>Q$Ruj~Bi>+cpgV8;H=on=(*5tryMyRgkU2ij zjPI~EYoXnl{2jU%b~F#K0WrMLpM_-FTqCbNFknz>%g<`CVmnD~<>oy*59P{#%pIdc zFp-EV5Z$zbLCfS#@_Z6&{&jWD|E%KXf3q)dC;bp-47jtPjyZqX&iplVQFY=j$DwwV z-7I*oU3Ho9K63g`stx0_U#9F&yi1Y%w{A7$tHY~|aCj8uX-MUe9~W$#0}9}&y7F()7ZSVgm8666+htG~eB zVUrb{@0O-R?bAd31mRp?mO4jHrcu;O-@ghdG%fEq zGP#S5e$rH}Z+v~*B5JBmn40yKOVf-l_9hSSYH2tN6~qx{iS(g_yogYRi+#ye6+P&< z5^sl_%+Ae!!i!}L74HNw+!_2d^xlhcMYr=BQ1x^XAI*;v9fhc_sPBOYw*6@88XCt$ z`WffAGCi2@Ftu?uy42sn4JGt=6&c@}i;-DCINWr)bj5123rY{sO=QwBR%w^CE_ApV zUa7~R7)(>6^G16`S;DvbEKv3j^QP^@_PM(mb)YCe*+!%Td_{BO_`4FQ+EuhVD5&W> zby$g$6MOBu9z`kazM`oOz)JEXPZ8a)%^3_L7$D2N$;^T{#Lf7koy0`SX{5>NI=)4) zoz665(=nN{iYGunY-K~np#`akFgfbFu61&yuGcX z^%jg9uwf<-wrNvF`5>U}-n1ROF^v7Ns|R{kWBd@&+^w1l!|X6fH)BOl6z{X)rOLw3 z#N9;xgNAV3P6JGu1fu?4u)q*jgwibBs@Z3MDm2^f$>GdJ{YXmtQ7_IPE~+#{X;JcC zy1RRYJ2M->((=GiX?dSz-V{@c?HNl-lU7IaXd=U2#}&E&x>imL+%P;owfpz+3P$Mu zS9g-%gSX!tsao@%cg*w}N=znW1=_e@L;knSKkWHO}~7Q}-ZwzX9PP z$cV0s+}UPKg%*K8QF3m=>h7i3tcs80r#VlID{kIh@6*)nxn!C}JyORjxy~8s^L*I02_wB)ltvk&;NFp>1$RC7~I6c^1tX2VW&p^_} zK?%~X7EWsekVf|vi4D4vns86-XasG09ZC+t-e$rZx2IuCQ+wLh`+0GLA)S4Fv0-g` z)va}4Ka+8AC5pE5qEfFVNLtejHW2}?Qc-JR>ZLHaur-}j#1sd~ zzWgqkG-QvDtFo!41%6eHf#g<`^{o=E_1}6Q1)`p}ZY5YiN!It;f zff-1K+J8mLIhee;ZvEjtp-adbK}<@3Q21%Vz4`F&bci$(gOuXaMx*Z_<1cmh z7U4;f4n*=eVh?4N4O!&2BuU)ep>2RZ#O6$q|QFP zd$eb2IiwU_ARrHtSAcJaYHgI34S zL=qbxW>uYtN5ZDnze}aZiQuec>kL6{_7vN^LG7BE-~u{#^_w%sc3tZSDi7p*9N!Gz ze%ZmL#jsA-SLT6@cgMfeN1ke*ml+CM3}TsLCPqa2U*%&m@izH9d(7#l?WOEu+&H3X#g+;O`C3ga= z_4}wU`Szv!E{CbR87tE43RfwjPy#)OBqoCK>Bbt=f?LP?X1BZgWD|v!%KvyTWS2>K z=Np-u?hCy_ryI{|vrvLaNDGOys6g7qyX59CUOuk*+w_s;q5b`1hqpQ21imw>8P`yw zercJeZY)nr9m5V+Y+a;6iNp;m!WW|*VQ~K9;lx{%8pHCP{f#$O_Z+E*J_*r%=Shs3 ze(4|Yue{U}B>NC9&{9y7y5f5qC7QQWoBSi$u{(srA%T{%s+6pb_N{ZnjmDCB-bvdG zn8jP9IDAJ3X_sMtN?-HUs-zcMWU{?%C?mT2&e2_Jkj>FadS%(I0@raP9q#`GzIoyEp@xu$C}q~? z{;dwgBT{vtwvD4aV6DjF1wIDBTEuKr^n7h=+dMI+>nRxMm&o)I)v}`a>xKMBW7@m| z;A}GJ3WpzhfH};MV)^xg#>~wm15?1_WY=;`hOx7j?`RR|uNV43!%55PbQn#O@T6jy z@*c=<55&xmyVkqFFI|x0t&N(j(u4!MbSV{wa0(^^sg79{XFi5jW$-B-c&oV zOsd>x2Q3d2c`+3sD(GxdYUonsHJ~CBO_Ox>jF|^>Y-@83urk*Dm6zWb)7r&=$%BKf z^u9I(n6g*kp|wj3ysBke1EGs10$%b=z!xK-F!qK-(p?!Fm8lfe{Ik(sg;iqg`1nC} z3xo7uh47n1UfPYT9i~oxNqvU2lh1omdGKS}J3RC1YYrwLelm%^1_&aDf4iDg{j@Rv zUl#JepJUjXR{sC?GXHm>p#Cqae(|TO|9JsC_<38Bz5(!uiU1>i4cu!S)LOs?Is zgBCTPIV9@j2T8l;ZCkwg=J)c3sOBVamEf=Clo+t}H$W(PPW`w1i->z(RL%SApMP(v z|0iiy&KYj`;7nWPoYDL<>0SdnGMWwhLTZ4YX|ds9{AI-XOB$AKjQ*8|VGj5lblDN5 zo%JF9&9n|P6Nv~pUl2W?CuI(D@2n^G(2s!iG53IVEeVhVMChE|OifCLgKqwEs%*QuN>Wk>{OM`*(V`-@@q9a$ zJY(!kmoib1=K4)@{Dnr{AT%pDnT2p$Qti`<6qIxd3{{#G^-+B?GIQ@$GnqYQH=*DR z&O1YSdhWichS#zFTmU{jUD?XUma@_H%HZwgnHj_0=0QisfxOZ0<>}_wXDQ}VuUy|* z4AEDwai7s1meSQDNE(EYw1v&pQny^T85|Wli;E*4RBnkU-PCw)VhL*I#6UpX4ay8& zB0Y`bdB8pOJR?$?ZFnapdRWWusn9EG%#Ac2AigcOhAQ*waXfcDS^;3o1gf``jb|jP zFhn@?EGMgYG0%^;J&Sztl*7&H)ywG50k>489y=1pKeq^{8*Au6YHMS2#ChK^6-P;o zW6Iv36kC(z4izdH4(a65k2Cu-M5|<9a9urdz8?=tStsD{M(oZ^&BoRZnjsX8Cn2Is zK89D?-06lxC+F^Tjd=+~#0LU~-` z`bMPp8?5J>oj!XkJVbU|iMQTT>6RrJ=c`tELL=q)9GkOIzfO-MHRQHl#eO?`=%9!m zsrsM8YyL&zOo*K9Wft7c1*VZ#i1~#~*HUostZI@;Lv_W`G14+vSyn!pIznKW=MH%G zrdjHoZW6L^`7GwusKG5@XB1<-l*9H+oZjriaomLYNax#BT`yl5sW6-y3iow5E@6H1 zwfb|K%s%yf!8H?3v*jl5qi^*>jYxmcXVV$vgfFwPx@J|aU|}oC7inI*TKkOeBDN9r zqIj$c*bj@K5iR5>71$yj>X{?3GgGMsp8M|g$t6GQtYQ7a+-*V6tjJBvyXdDv?<47G zjk73&`S6CCUqGFqJko#K*z&?%L{iu>X*dlneK9&e7c9GdpjK8Dqa594OSA4m)efo1 z|ElA~^rVX07Kf&rtFRNn(lLlo_G4mFM04L;#v3!)=!tQLUjyPd^1J3N2HY#>qo#0c zoz^36>=VakBwA@}2rFY_6>inmNOq+HE|_RRuqM{%VrtQrO<_ z&hT-1&6E?o zlKz~baf)5?f-`pE`HM&zh3{FwFCkHM!-w<^9 zusoami)#1Nw?v7iGy3(J(yvUY{y4jkX|B%pN{Vn2FlMirlZL(SC;iyaSDWa8YP!)= zs)kHiR@FusEuKbL>&wFY>{;d#T=!(?SJb)}xmg+77|C2477 zaEL5x__B(MF8%86*|P-?4S%vr5&NgihEC}LvYJL`T`bh#kj`XKB*)i@*(alJs;2D| z&Pd;47_S?5T%Tv0q7~*~`%|o#aLKFJ!M&{*h)4VvcMB$o#nhgLneZVKisq*5>jhF^ z{R|y}3hB?9o1a?O;$la4u_F>isr1-uDypc6K!Wc+RT*>PZ|3H{%uv`bw`|%mt74X?2y+xZ zQXJy%;k1dHe_k6cbafdzLIT_vU8t-A(jjLal-SNdBZ{SU^XI{0{66Yq?sSf@;E}^8 zTlDdSJm(~jEEjISjjHHRBf4?0@QaZh9bpPnq=E4E&Y%;SSKv(Lagi&@eN(F0sl-v5 zZA0*n^9my3SPoZ_c4<@{gmAmjF%#*a0;eiNJsIOb#ygUHF1EAFH<(qH>HpqE!>b*P zzY?u0HI-+%^w9dD@i**o)K6P}>Gg9_3s+g_k-XZ&BBk&AuqJl*+#gnRPRzd+G~JVQ z4;mF#ejS(eFi}d%&dKBEW!JpN(%zj@X66w;RtOGUHo?_AjT4zrusNc)DOtTkQ&(24 z&tyI}qgIY1$Czdg%Q6oo;JdFU;OqH|3{54`BYvc#{BGZY)Y+#Y4*9mO)3+3LeQpSR zt+oy=n0d}=%A<%A6{IJNa$cNE=}M+Y_CmPaAL514cV9lY`+BuieI(r?&N9Dvcx88^ z{LhgK%1x&*+t!r4vm@t8g(BZ+-nLa3%Nqr&?JqU51UuE`Lz9E`f*tA9+svYH?c)VL z@)?J;2jj=Q=|sM9i;hjzS-Q(IrIr1QDYnMF7V&J3GmYXV@yOEfF7687O#)Hne0oF5Wr3vwD6Fd zASF`v)-BPTG+x6(<5wnrhYyoq+=gU*;|cjA&AHRHBo@MjED;2yYkVDAY_GX+GpNb; zE-_izi*NaGG_aE-Yrki-8XZXJEZQBGiwr^NetV#Y1a;`p%!u~yo+U}vB=8qKE4AZL z32_eQ{76jLL?Dyyd?Jd|Quno{PCZdmSV0d;QHjfXaWXjea{Sh!67VmN`rxK={<|17 z+e!R4#5^c|KRH*1FV@roEsLpjhBLJw>vN?&7mpB_)8L==un{>o6MqN%3;qFB52>5z zqV{JHpsk?=r4aLenotDhIblqJoKwr)7G$^p&BG{l*iC=_=vb0> zF-yJ2P!YRHSq97*K()S-U95#r)${09{n+6T6@?aWaLiCokq>-V7D?^ARlC0CZmT*l zBEA=ZV;P^Tius@R@9NZ9Z7A{bC&b z$v4l|!0Kc_v2|C#>GevSio()5*Q;mDc=O$lw+w;*dZI2%Kf2+J`&1*ZHCjEnzK|PQ zG8_L$LG?~XbAZI2*R7sM#UC*aS0g=PDokn{nzitO7*L+^ZQ?U$y{8p@me&A1V0 zD2=+z&X<27Ln*p62Do@Iihfe{GZ^}8Xl66NPSWv%$GUkYQHy!h6eIC*ew8VKtsni6 zuH1--Bk#Z^~obmj+1}4ckGk zU+ikh9{XP9QoWe&`p&d)#63er?k{j^y&(HK&Nbd>zPt5`^d<6BKDb@4V)P_Gx2mkR zGT@?>)8RIM+7@ba^))PIkM#{zj9~sC)5gD^(pj%H{hKT%^N=>-NNG=gzQ7iW8>1W7 z#ntfWCV-N9;o(ZLm2Em{RwXjN7&)lbT-!1xu)9368%G3W)t}Ca!F<2NT+i;IRmvI* z8%+0)(|@CNUGzxWcI9P#>8H)iBS{?;UFN=e`cDN?@msY7<~uARZL(Eq--+C1tqI_# zRf}dYW^d+?9znWz<;F?kxkrf^#cC6s<~UqGQlZkLR^N1DlfzD5olyp%2RoMOva9zJ9Epb>y93G+-CD-tztaD^Iyg^llr}Sg zwX{?@LDE8*#wD>ayW{EVVV#LWG2FbDjjw#?+^DW>Fw2Kv&Lzn%1iLDai_%f+@HWiS zBb<+pk;;@5<6Oht2!(u9S6F!Z9cczd&cd| zT~&L>DN@|caU(Mf5~bNk`&PA4n(ImCxgS?aKh>}asHu@FKH^#Y*NnU=kA(>mZY>bP z2U0(8Iahi6MzYa$L>f<#6zzIho2xuvR^~{n)_sn2hpAGkj=AkgwbP3Rr{`NP8W?OL z6sad3!Gpzf_x436M%1pp!V#ma_`H&n>+#n^Rx< zua|1MJT?~zd_3abuxH)PNp{uc%qg=Zm%IWf`V zzVgIC%nG8fP|x83;G8q^H0 z8W>gb8>dYtKgI_F52%wl#Kbnc4NoHFs7nqFRr+C zZJ2=(q`3}o136l!H&XChskZm8=yBtWS&Au#xi z6rD%|J|CZeb#-diIB+yWs9a;vVGUBSYNdAc{&A<-mMKGVDMZ~lYnyzFJal(o@ZF4B zMbf&+yONVn)Kpzlul*D8@Y3$hmL{MLV+u_?&eMwj6Ik-gK9PBZL$Zs(qOsT)`HfAD1$4h)(j^ zrTBBu$=RZ9)zgR`wF<0`eBM9ETqAWp%v5fgQfE}6F%K-Cv?@6srx;u7t&Qp#xFz=* zevhNE65O~?obyNmKyH-rb?>F_I|$CiNwJN7RotayF}rT7Q4o~2NTS#FTf$B!!hykwpv zQdnQz%UtbT=krSMAhV0MYM>NVQi5dQxU=>doO;pSfr*RAM4`qV(YhG7&^|f9pnv*D z#Gu>;S{xZs*a~0hFWDF5lh(I@1&v$O)lG1Xrg`Zpmlapp%l`=My~W{#RRSjwelzC8 zI3b&s(I|UhsG=TPzZL<`o10ru^jb5X-X5v6HFLxq5Gj?-ui>a>71iOCYbZ)cZ-XzO zL`b8Z8Q=MVQs%(CBHhaAoh16~=q&CU@Ctcjq!LKx^AE^7?f_5gXpME*xQyo4HRBMw zYy)t_Bl?UickZgMbXboSvg*9OO!b7}s z`Hwy&Yp%5jGdkI;P^!0I`#nu*MF+|3Oz;{LP)!Uf(Pzp^?y3(oVh^6loK!p`Hc=w_ zU_(c8&Pd)%C9ZwnhW5RhHv(CzDgO7%OC zN^y7qcx*%b~^mPPrSjFt>;O$ zA}%392Vp!)0|nciBolxQyKfI=LvUES(oG*a(1KteA>PS4na(st3tVB<_}mjtY_=j> z(gB$Ipu}J*i5Z)xeI;)c1`|8en%K53D8PZ8aQUUeD1|f0oY>`iInnpoB4=m6=PgT+ z{%|5uzCBBy$Q^*0@R+SHa@T*Xe#IrQXYl#x&W5V@n%gb8WtqW{YL#Bmt)e0)k>hyn z)ENhMMitQx=Q!ADp6fb}d6x4ePUYl&yh2ckw5|gNk2bp4B{wm#W9CfP@F9X$^yzan zyDPKnq&l`rRb(jK21GJ``QfvkRHE;o>dm))6qWGZK>bj7H{lUqqyHZ_8KWf%3_PP7 z#fyAfcA4*tl=^)mGQLVXy(jzQri*1e)5q4G=!8}j3%z6aJBYpPyv%y^Mdv1MeBZ#q zji~zzX6GMYZ=w?EUjMOrIAfCg**=YSyphFq*_c-g9u=H~m$aPvP$Au7nx{x(F1DTv z5(I+b+?;#M7}x4LeT;eD#nZSZctv%xs{hG?7y3I@O>Jyng=$r8Vzyqu>|-g#hd2`- zbWca;2kn@CyfA)5o#Ssr8!6_IX!4nn(WZnn8_a(eequ_;LZX;!vRSJu=EoP#U`jSU z)0jv*J-ScVl30QDEI?!LeWZV2tL7|3B1AWE*(O@ou%V)<=~65iGE1ae8{@?NZR$|T zbux7^h(ru$;8Jm7xB61w={468EPUBV(J`_v@wUM|T^y3=$Ol6!?Cdv7bqCT&Cq?%# z52$uHJH_$MgQHLna2s=bo0<$SYZ7cs#Fb=?LtPr4MvXzLr3H%}MmB4`=R?9?wZte@ zSC1XI&4S2{>~+;SoK(LhO0Y$?uRpOe<=zi@dFQc#g!~U*e)%^*B54It2d?B(w7xr& zbI!zG(YiH=tMd;IhQ~0)L^e(ZSsROJ<&ul+Lh3q9-Agd$J9+^BsyVYz%2I%RmUE)r zFb3ywksa$S7%yQpvy#c1$$PJrok!s@>ni z9;qqowDFGjI{ZP-fr<&j!9D}6A*U|DeHHz3he}4y9s)ORiJmt66#$p^%u%be^M(x z+LpCd&{;k*0`#`k>@O%||B9Z;)>671%9#AP0|b=zyZgZs&wf7uhzW85Xu5x6!$`Nh zoV;Vnrh9IGMf&4Qs@pY#4dkX%iwNFnYmx5^-t}SGPVnzkP)FNv*stD(e)ZZhJ7Ujj zweJV+LEt3T05ggX`??i)9tX;2z9PMb2CRd^Oaacb`NwSQFq|`%L%tiWnA-b3}`J}$l#_= zr4|B3uN=5iJ&1z~zb`u9kC#pLe_ylLu{v~usw==5jBV}_L&tMl^updphg$3%)A4QS zjJWuiQp&0O##bR698P3Ent?M=KwTajP@CjEJ0bSF+xR;%qtPJbi7}>?kz-5+G8;h* z(QBz~QcCnG!aWw39;fMEE)7XAP=DQ-#Jhi0=JUx)89ix6|JPBu83pKJvS`Amh zn!S9lWk49|3nZoztfeBg*HycR9H?f!(jwSYI?;9>3W|~`J3M!m1VwO+>BjO@QiKMO zVWdN8PSq)L6KZDe!gDExvO}3Ue%(p+0m&oX&ULRv?9zinnNh5;u?CfNIgXV%HUkk?Wa!b8i>%jhm=z(4pWLT`jypqg`feUH<;yO0uGc&+(-UP=;sY zv~_u2xJ$cqtZLnBO}n&#@NUA-K8;Y%3~iL~6Va=0>&PX`!EtmBM`V5!Kc_XUDu6* zWA?0;1eWcXMG2JDThixPc83}B^}S~ulB;W^GVg2pU(DT&?~Kps{P|~|XWX?POs*D- z1F-YI4Ltq{hWwhT@Lc{n*^*Zy{LS**SVt>Z6&n<|4vI(wMl~&~Fy!WSkm3S~E`(Z> ztv>a}Mpn|Jh(r5d=2zM~hb0jxfo5zRK?q}k&2#kBR%I*3de4;HmO$d@xE zKhkiyJ2G4ZtdP0$P3aDQArst`#{(Je zu8NWV0f#oc%b29{tR?lFca_q<8I5hN=@SZy8aro7<9M9IcnTZE=o!~WN_K0K1kTdJ zFXx#&eRDd`A-7Wg>G>9E5C<&LpR5}d@A=+UNq3yP86P{mU4^Ycr)sVELQoDz^1R?7 zL%CJOT)GFN>nj%2uS*D5%E5eVwU+fnlFCoK7i~s8AOX8Wvqv<7AhO0Ne(0Wqz(gA5w z;X%7lo~ZcieI099Qgqsuj&t+e#FbJU=BXm4gx=2#WQblNd4NNYrdb{emwZhh9%3O4 z{lyGCNeO+9a&g*|d@i?6M^J7*DIVs+Y+~fa(CwK1&rd&x4BOIEV@CU`Y9TY5nTHH| z;_$Wl{T<2bf)%BIZtldHaM5n9TP}@GvfB~)3AznU zni(d1b2isDb1eCzT&zu1Pp~cxGtaT&8bulLgASYH%?%_ykSaZuVJM{Neb1uN%}#~+q7f{#LY>g!<485CSS3>u|`FwK9XMmwpT1s+VxwC^##+2&t= zT0qQEJ)-3@J~TVIslBsNrG`}$uyV+eRsC*M@?C7b&gg5){3z+_e)Mc`PSEz+26T$^ zZ(ecI6X2o@^#D6(dKrG1fN#`efcqmLmWz}sp>NZ{W%8ltnUu^Q_3^qDJMJQKew|b+iY8vY58WS1w_fEIOLQVybb6>|4 z^9$|U@d1L{1NWZ;mN35n#8Je5^!SD!vMc<4u+C@^{74cNHtn;y@i;4*C|i?{{jBMv z+6R^Zyj0g}+3FgKQIfh1X`HjaPZI*p_LvYfeKjtDeJH=`B0Y3s;iUZy*IfkV6J1fT zQdL8!xe=C#fA0mX!#6Uj`Cd`v83n?=lstpU+_F`c@0xPb%8_G06_gaxyHOwktEig} z-bTTCdSZX?>0e{RKh9{GdBE&j576f}V;SfZ%4khHy;UL+sEmSIp%1g2ptL)w?6)7) zx!{lUW9Pc(-Hz|R=>xa}sno1=#2p!K6M4yXtemQoWHDuh0WAuynqrtJV@~ zbNt6o`E=+=ptFTnaw%~M#IBsv5`g_c13GPs-%uoiEg^KVP?lBcz$%vDX?Kx_Wq;GK1V*l1UOI| zE(>Z!0F(dM6My-@(O2*8EOi^RYq9VJ**iP|-@DTuy$naaxv^gg4)t$;0ffzBiU2w@I(ko47Xz2f}-cds@kjMaT@8(2{WfTLzmavD_^8 zcGTA8uwzFF#?<;f1+#X-ro`Y>n=O*98FzQ-+oTY->R!L^hK|bt*RtEa!=R%mUJoSi zbH%q#kY~D*+TGg5{8%E4=z87^0btP&S|vhkbR2IMYj_{)=VqIIsqBNL7dlK~D?Yb1 WQ^rF@{SzurefZm0%5}>6tG@#s91=AE diff --git a/images/create_fork.jpg b/images/create_fork.jpg deleted file mode 100644 index 19c1a741c147b3fff708c4fa38a651fbcb9fbd98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60481 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

a* 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 z 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 r-XuHJw1?A#{t^s(oAbeU7wjJOA01zRL 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 diff --git a/images/pr_button.jpg b/images/pr_button.jpg deleted file mode 100644 index 988130c626d25a48762d5c2637aecf357a6b1a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48696 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 ppv zj9N(N`(2XCq4+(w7Aq(C2fcx)8A;1Yn(sH2KH@EY5Bf#4Exh)wZ)CYiKzQ-(?OD?0 z+@AO4%Y2Qi1EA5>?;`hiFq#9(+!_j(i)t5d-Gl>Y%)Z+Wx@HfRdSrv5T$EwbCyEv+ zirJrE<7wyYf%E~izHla3x$M28-8_23+NNg(4asR7Uh9>?+p!7Jqb5LkT5t9s>?<#7#mbdZa^741@x zsStlA#{6*9X;Ib1H>`Yy<`Q8@(EU@STBl_7c{&Y6df*oILYLrjC8CdmY2z?tWZg%6 zJXwR`LwAuWody1vZX80cJgNXBNy>^xsj2!9>-X;0Yz3Fb*Ix{UeLt z?$)VxwSbGLc4k*Fl0LjslbHCBkM`SZU%MAQoxeNEGEw9!+h(s!)d zAcN(O=KsSkG_Cq~pZ+~A|KCOFuddumy5>7ID<^(ciQ|TIwWF2q`7jduW=q2l0i_`; z_Pgz3m;Jm}U1h=-VyVXEp-V{3jIo51hOX)L07c?WJP!a7PioyIu)RP(MdU062Yv2L zd{@H(d9hd(fdd_Pbm{_kM!m@bG!J_r|Clu*{PXwTv+_Zfl@Ss?fUMyLft??vLim(0 zH6c(0By#NllTku$in6&Q2MpAvuK5V;Za#4A0=ItECaCe#R)?1C_=cW=@9B+- zVThS@)EdY!<#P4?!|yt9*U5ZMfflEzlHNm_+Hqw7Gx4!Lebn=-Q=-kj~&< ziwjBT7&)v2r?@Y(@dj%-#7ak`{0Fn2BmV_oawUlX diff --git a/images/pr_desc.jpg b/images/pr_desc.jpg deleted file mode 100644 index f0bdf4ccc40a11fd480578bd6fbf0410e9cef616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86880 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
FCx&x|8IMSK66~u@#mv4$z9|xT7x(;q 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 From 8a5bab42ccbdcb30e99b062808aa45f08f6b9012 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Sat, 2 Mar 2024 23:56:53 +0800 Subject: [PATCH 03/22] feat: complete base kernel(C) --- .gitignore | 3 +++ hw0-c/Makefile | 16 ++++++++++++++++ hw0-c/a.S | 5 +++++ hw0-c/linker.ld | 5 +++++ 4 files changed, 29 insertions(+) create mode 100644 .gitignore create mode 100644 hw0-c/Makefile create mode 100644 hw0-c/a.S create mode 100644 hw0-c/linker.ld diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..172c6b468 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +*.elf +*.img diff --git a/hw0-c/Makefile b/hw0-c/Makefile new file mode 100644 index 000000000..435cba6fa --- /dev/null +++ b/hw0-c/Makefile @@ -0,0 +1,16 @@ +CFLAGS = + +all: clean kernel8.img + +a.o: a.S + aarch64-linux-gnu-gcc -g -c a.S -o a.o + +kernel8.img: a.o + aarch64-linux-gnu-ld -T linker.ld -o kernel8.elf a.o + aarch64-linux-gnu-objcopy -O binary kernel8.elf kernel8.img + +clean: + rm kernel8.elf *.o >/dev/null 2>/dev/null || true + +run: + qemu-system-aarch64 -M raspi3b -kernel kernel8.img -display none -d in_asm diff --git a/hw0-c/a.S b/hw0-c/a.S new file mode 100644 index 000000000..eba474936 --- /dev/null +++ b/hw0-c/a.S @@ -0,0 +1,5 @@ +.section ".text" +_start: + wfe + b _start + diff --git a/hw0-c/linker.ld b/hw0-c/linker.ld new file mode 100644 index 000000000..faee5d7b1 --- /dev/null +++ b/hw0-c/linker.ld @@ -0,0 +1,5 @@ +SECTIONS +{ + . = 0x80000; + .text : { *(.text) } +} From 919874ab5448d4e4f1c281d9c9a41e8e141e2ea8 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Sun, 3 Mar 2024 02:34:16 +0800 Subject: [PATCH 04/22] chore: update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 172c6b468..07766c077 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *.o *.elf *.img +target/ +kernel*.img From ca91f55508c22d7d171ea66f77cd4e1f7279479a Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Sun, 3 Mar 2024 02:34:35 +0800 Subject: [PATCH 05/22] feat: add basic rust setup --- hw0-rust/Cargo.lock | 7 +++++++ hw0-rust/Cargo.toml | 13 +++++++++++++ hw0-rust/Makefile | 37 +++++++++++++++++++++++++++++++++++++ hw0-rust/src/boot.S | 5 +++++ hw0-rust/src/linker.ld | 5 +++++ hw0-rust/src/main.rs | 11 +++++++++++ 6 files changed, 78 insertions(+) create mode 100644 hw0-rust/Cargo.lock create mode 100644 hw0-rust/Cargo.toml create mode 100644 hw0-rust/Makefile create mode 100644 hw0-rust/src/boot.S create mode 100644 hw0-rust/src/linker.ld create mode 100644 hw0-rust/src/main.rs diff --git a/hw0-rust/Cargo.lock b/hw0-rust/Cargo.lock new file mode 100644 index 000000000..e5c2bcadd --- /dev/null +++ b/hw0-rust/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "hw0-rust" +version = "0.1.0" diff --git a/hw0-rust/Cargo.toml b/hw0-rust/Cargo.toml new file mode 100644 index 000000000..cbfb3f78c --- /dev/null +++ b/hw0-rust/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "hw0-rust" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "kernel" +path = "src/main.rs" + + +[dependencies] diff --git a/hw0-rust/Makefile b/hw0-rust/Makefile new file mode 100644 index 000000000..31f204a12 --- /dev/null +++ b/hw0-rust/Makefile @@ -0,0 +1,37 @@ +## SPDX-License-Identifier: MIT OR Apache-2.0 +## +## Copyright (c) 2018-2023 Andre Richter +# This file is part of the `rust-raspberrypi-OS-tutorials` project. +# +################################################################################ + +# this would build according to the rust target triple +# https://clang.llvm.org/docs/CrossCompilation.html#target-triple +TARGET = aarch64-unknown-none-softfloat +KERNEL_BIN = kernel8.img +QEMU_BINARY = qemu-system-aarch64 +QEMU_MACHINE_TYPE = raspi3 +QEMU_RELEASE_ARGS = -d in_asm -display none +RUSTC_MISC_ARGS = -C target-cpu=cortex-a53 +LD_SCRIPT_PATH = src/ +LD_SCRIPT_NAME = linker.ld +KERNEL_LINKER_SCRIPT = $(LD_SCRIPT_PATH)$(LD_SCRIPT_NAME) +RUSTFLAGS = $(RUSTC_MISC_ARGS) \ + -C link-arg=--library-path=$(LD_SCRIPT_PATH) \ + -C link-arg=--script=$(KERNEL_LINKER_SCRIPT) + +# build my kernel +KERNEL_ELF = target/$(TARGET)/release/kernel + +COMPILER_ARGS = --target=$(TARGET) --release + +$(KERNEL_ELF): # src/main.rs src/boot.s Cargo.toml + @RUSTFLAGS="$(RUSTFLAGS)" cargo rustc $(COMPILER_ARGS) + +$(KERNEL_BIN): $(KERNEL_ELF) + rust-objcopy -O binary $(KERNEL_ELF) $(KERNEL_BIN) + +all: $(KERNEL_BIN) + +clean: + rm -rf target $(KERNEL_BIN) diff --git a/hw0-rust/src/boot.S b/hw0-rust/src/boot.S new file mode 100644 index 000000000..eba474936 --- /dev/null +++ b/hw0-rust/src/boot.S @@ -0,0 +1,5 @@ +.section ".text" +_start: + wfe + b _start + diff --git a/hw0-rust/src/linker.ld b/hw0-rust/src/linker.ld new file mode 100644 index 000000000..faee5d7b1 --- /dev/null +++ b/hw0-rust/src/linker.ld @@ -0,0 +1,5 @@ +SECTIONS +{ + . = 0x80000; + .text : { *(.text) } +} diff --git a/hw0-rust/src/main.rs b/hw0-rust/src/main.rs new file mode 100644 index 000000000..cd19633dd --- /dev/null +++ b/hw0-rust/src/main.rs @@ -0,0 +1,11 @@ +#![no_main] +#![no_std] + +use core::arch::global_asm; +use core::panic::PanicInfo; + +global_asm!(include_str!("boot.S")); +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + unimplemented!() +} From 03881c4660d1cb16961fab172ae63e46f4a885ee Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Sun, 3 Mar 2024 11:51:32 +0800 Subject: [PATCH 06/22] chore: rename the file architecture --- {hw0-c => c-version}/Makefile | 0 {hw0-c => c-version}/a.S | 0 {hw0-c => c-version}/linker.ld | 0 {hw0-rust => rust-version}/Cargo.lock | 0 {hw0-rust => rust-version}/Cargo.toml | 2 +- {hw0-rust => rust-version}/Makefile | 0 {hw0-rust => rust-version}/src/boot.S | 0 {hw0-rust => rust-version}/src/linker.ld | 0 {hw0-rust => rust-version}/src/main.rs | 0 9 files changed, 1 insertion(+), 1 deletion(-) rename {hw0-c => c-version}/Makefile (100%) rename {hw0-c => c-version}/a.S (100%) rename {hw0-c => c-version}/linker.ld (100%) rename {hw0-rust => rust-version}/Cargo.lock (100%) rename {hw0-rust => rust-version}/Cargo.toml (90%) rename {hw0-rust => rust-version}/Makefile (100%) rename {hw0-rust => rust-version}/src/boot.S (100%) rename {hw0-rust => rust-version}/src/linker.ld (100%) rename {hw0-rust => rust-version}/src/main.rs (100%) diff --git a/hw0-c/Makefile b/c-version/Makefile similarity index 100% rename from hw0-c/Makefile rename to c-version/Makefile diff --git a/hw0-c/a.S b/c-version/a.S similarity index 100% rename from hw0-c/a.S rename to c-version/a.S diff --git a/hw0-c/linker.ld b/c-version/linker.ld similarity index 100% rename from hw0-c/linker.ld rename to c-version/linker.ld diff --git a/hw0-rust/Cargo.lock b/rust-version/Cargo.lock similarity index 100% rename from hw0-rust/Cargo.lock rename to rust-version/Cargo.lock diff --git a/hw0-rust/Cargo.toml b/rust-version/Cargo.toml similarity index 90% rename from hw0-rust/Cargo.toml rename to rust-version/Cargo.toml index cbfb3f78c..c18dac278 100644 --- a/hw0-rust/Cargo.toml +++ b/rust-version/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "hw0-rust" +name = "rust-kernel" version = "0.1.0" edition = "2021" diff --git a/hw0-rust/Makefile b/rust-version/Makefile similarity index 100% rename from hw0-rust/Makefile rename to rust-version/Makefile diff --git a/hw0-rust/src/boot.S b/rust-version/src/boot.S similarity index 100% rename from hw0-rust/src/boot.S rename to rust-version/src/boot.S diff --git a/hw0-rust/src/linker.ld b/rust-version/src/linker.ld similarity index 100% rename from hw0-rust/src/linker.ld rename to rust-version/src/linker.ld diff --git a/hw0-rust/src/main.rs b/rust-version/src/main.rs similarity index 100% rename from hw0-rust/src/main.rs rename to rust-version/src/main.rs From 90720706f1427a9923e57b9158cc303269a080e5 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Sun, 3 Mar 2024 18:03:55 +0800 Subject: [PATCH 07/22] feat: add linker script --- rust-version/src/boot.S | 2 +- rust-version/src/linker.ld | 78 +++++++++++++++++++++++++++++++++++++- rust-version/src/main.rs | 1 + 3 files changed, 78 insertions(+), 3 deletions(-) diff --git a/rust-version/src/boot.S b/rust-version/src/boot.S index eba474936..ab2a66c1e 100644 --- a/rust-version/src/boot.S +++ b/rust-version/src/boot.S @@ -1,4 +1,4 @@ -.section ".text" +.section ".text._start" _start: wfe b _start diff --git a/rust-version/src/linker.ld b/rust-version/src/linker.ld index faee5d7b1..9c34717d9 100644 --- a/rust-version/src/linker.ld +++ b/rust-version/src/linker.ld @@ -1,5 +1,79 @@ +/* SPDX-License-Identifier: MIT OR Apache-2.0 + * + * Copyright (c) 2018-2022 Andre Richter + */ + +__rpi_phys_dram_start_addr = 0; + +/* The physical address at which the the kernel binary will be loaded by the Raspberry's firmware */ +__rpi_phys_binary_load_addr = 0x80000; + + +/* start of the kernel binary */ ENTRY(__rpi_phys_binary_load_addr) +/* simulate kernel elf layout + * https://elixir.bootlin.com/linux/v6.5/source/arch/x86/kernel/vmlinux.lds.S#L102 + * Flags: + * 4 == R + * 5 == RX + * 6 == RW + */ +PHDRS +{ + segment_boot_core_stack PT_LOAD FLAGS(6); # stack pointer + segment_code PT_LOAD FLAGS(5); # code + segment_data PT_LOAD FLAGS(6); # data +} + SECTIONS { - . = 0x80000; - .text : { *(.text) } + . = __rpi_phys_dram_start_addr; + + /*********************************************************************************************** + * Boot Core Stack(512k), it should not affect the test area, good! + ***********************************************************************************************/ + .boot_core_stack (NOLOAD) : + { + /* ^ */ + /* | stack */ + . += __rpi_phys_binary_load_addr; /* | growth */ + /* | direction */ + __boot_core_stack_end_exclusive = .; /* | */ + } :segment_boot_core_stack + . = __rpi_phys_binary_load_addr; + + /*********************************************************************************************** + * Code + RO Data + Global Offset Table + ***********************************************************************************************/ + .text : + { + KEEP(*(.text._start)) + *(.text._start_arguments) /* Constants (or statics in Rust speak) read by _start(). */ + *(.text._start_rust) /* The Rust entry point */ + *(.text*) /* Everything else */ + } :segment_code + + .rodata : ALIGN(8) { *(.rodata*) } :segment_code + + /*********************************************************************************************** + * Data + BSS + ***********************************************************************************************/ + .data : { *(.data*) } :segment_data + + /* Section is zeroed in pairs of u64. Align start and end to 16 bytes */ + .bss (NOLOAD) : ALIGN(16) + { + __bss_start = .; + *(.bss*); + . = ALIGN(16); + __bss_end_exclusive = .; + } :segment_data + + /*********************************************************************************************** + * Misc + ***********************************************************************************************/ + .got : { *(.got*) } + ASSERT(SIZEOF(.got) == 0, "Relocation support not expected") + + /DISCARD/ : { *(.comment*) } } + diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index cd19633dd..040ba3928 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -6,6 +6,7 @@ use core::panic::PanicInfo; global_asm!(include_str!("boot.S")); #[panic_handler] + fn panic(_info: &PanicInfo) -> ! { unimplemented!() } From 75732bcd3f0cf22f6d2cb2eb33e0382afd507658 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Mon, 4 Mar 2024 23:41:41 +0800 Subject: [PATCH 08/22] feat: add rust entrypoint, setup register and memory properly --- rust-version/.cargo/config | 3 ++ rust-version/Cargo.lock | 20 +++++++++++- rust-version/Cargo.toml | 5 +++ rust-version/Makefile | 4 +-- rust-version/src/boot.S | 67 ++++++++++++++++++++++++++++++++++++-- rust-version/src/lib.rs | 1 + rust-version/src/main.rs | 46 ++++++++++++++++++++++++-- 7 files changed, 137 insertions(+), 9 deletions(-) create mode 100644 rust-version/.cargo/config create mode 100644 rust-version/src/lib.rs diff --git a/rust-version/.cargo/config b/rust-version/.cargo/config new file mode 100644 index 000000000..cb7716038 --- /dev/null +++ b/rust-version/.cargo/config @@ -0,0 +1,3 @@ +[build] +target = "aarch64-unknown-none-softfloat" +rustflags = ["-C", "link-arg=-nostdlib", "-C", "link-arg=-static"] diff --git a/rust-version/Cargo.lock b/rust-version/Cargo.lock index e5c2bcadd..b54a0d8a9 100644 --- a/rust-version/Cargo.lock +++ b/rust-version/Cargo.lock @@ -3,5 +3,23 @@ version = 3 [[package]] -name = "hw0-rust" +name = "aarch64-cpu" +version = "9.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac42a04a61c19fc8196dd728022a784baecc5d63d7e256c01ad1b3fbfab26287" +dependencies = [ + "tock-registers", +] + +[[package]] +name = "rust-kernel" version = "0.1.0" +dependencies = [ + "aarch64-cpu", +] + +[[package]] +name = "tock-registers" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "696941a0aee7e276a165a978b37918fd5d22c55c3d6bda197813070ca9c0f21c" diff --git a/rust-version/Cargo.toml b/rust-version/Cargo.toml index c18dac278..b480fe2f3 100644 --- a/rust-version/Cargo.toml +++ b/rust-version/Cargo.toml @@ -11,3 +11,8 @@ path = "src/main.rs" [dependencies] +aarch64-cpu = "9.4.0" + +[lib] +test = false + diff --git a/rust-version/Makefile b/rust-version/Makefile index 31f204a12..c28eac41c 100644 --- a/rust-version/Makefile +++ b/rust-version/Makefile @@ -21,9 +21,9 @@ RUSTFLAGS = $(RUSTC_MISC_ARGS) \ -C link-arg=--script=$(KERNEL_LINKER_SCRIPT) # build my kernel -KERNEL_ELF = target/$(TARGET)/release/kernel +KERNEL_ELF = target/$(TARGET)/debug/kernel -COMPILER_ARGS = --target=$(TARGET) --release +COMPILER_ARGS = --target=$(TARGET) $(KERNEL_ELF): # src/main.rs src/boot.s Cargo.toml @RUSTFLAGS="$(RUSTFLAGS)" cargo rustc $(COMPILER_ARGS) diff --git a/rust-version/src/boot.S b/rust-version/src/boot.S index ab2a66c1e..7eb431652 100644 --- a/rust-version/src/boot.S +++ b/rust-version/src/boot.S @@ -1,5 +1,66 @@ -.section ".text._start" +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2021-2022 Andre Richter + +//-------------------------------------------------------------------------------------------------- +// Definitions +//-------------------------------------------------------------------------------------------------- + +// Load the address of a symbol into a register, PC-relative. +// +// The symbol must lie within +/- 4 GiB of the Program Counter. +// +// # Resources +// +// - https://sourceware.org/binutils/docs-2.36/as/AArch64_002dRelocations.html +.macro ADR_REL register, symbol + adrp \register, \symbol + add \register, \register, #:lo12:\symbol +.endm + +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- +.section .text._start + +//------------------------------------------------------------------------------ +// fn _start() +//------------------------------------------------------------------------------ _start: - wfe - b _start + // Only proceed on the boot core. Park it otherwise. + mrs x0, MPIDR_EL1 + # Extract the Affinity Level 0 (core) number. + and x0, x0, {CONST_CORE_ID_MASK} + ldr x1, BOOT_CORE_ID + cmp x0, x1 + b.ne .L_parking_loop + + // If execution reaches here, it is the boot core. + + // Initialize DRAM. + ADR_REL x0, __bss_start + ADR_REL x1, __bss_end_exclusive + +.L_bss_init_loop: + cmp x0, x1 + b.eq .L_prepare_rust + stp xzr, xzr, [x0], #16 + b .L_bss_init_loop + + // Prepare the jump to Rust code. +.L_prepare_rust: + // Set the stack pointer. + ADR_REL x0, __boot_core_stack_end_exclusive + mov sp, x0 + + // Jump to Rust code. + b _start_rust + + // Infinitely wait for events (aka "park the core"). +.L_parking_loop: + wfe + b .L_parking_loop +.size _start, . - _start +.type _start, function +.global _start diff --git a/rust-version/src/lib.rs b/rust-version/src/lib.rs new file mode 100644 index 000000000..0c9ac1ac8 --- /dev/null +++ b/rust-version/src/lib.rs @@ -0,0 +1 @@ +#![no_std] diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index 040ba3928..e588e73f6 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -1,12 +1,52 @@ +#![feature(asm_const)] #![no_main] #![no_std] +use aarch64_cpu::asm; use core::arch::global_asm; use core::panic::PanicInfo; -global_asm!(include_str!("boot.S")); -#[panic_handler] +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- + +/// The Rust entry of the `kernel` binary. +/// +/// The function is called from the assembly `_start` function. +/// +/// # Safety +/// +/// 1. boot.S link start entry to _start +/// 2. only core 0 would init bss, sp... and call _start_rust +/// 3. _start_rust call kernel_init +#[no_mangle] +pub unsafe fn _start_rust() -> ! { + crate::kernel_init() +} + +/// Early kernel initialization. +/// # Safety +/// +/// - Only a single core must be active and running this function. +unsafe fn kernel_init() -> ! { + panic!("only one core is supported"); +} +#[no_mangle] +#[link_section = ".text._start_arguments"] +pub static BOOT_CORE_ID: u64 = 0; + +global_asm!(include_str!("boot.S"), +CONST_CORE_ID_MASK = const 0b11 +); +#[panic_handler] fn panic(_info: &PanicInfo) -> ! { - unimplemented!() + wait_forever() +} + +#[inline(always)] +pub fn wait_forever() -> ! { + loop { + asm::wfe() + } } From 451e7d6484f9ea4befa6c1c88ffca9388c9cf8ad Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Tue, 5 Mar 2024 21:31:49 +0800 Subject: [PATCH 09/22] feat: add uart output(run in qemu), panic controller --- rust-version/.cargo/config | 3 -- rust-version/Makefile | 5 +++- rust-version/src/console.rs | 57 +++++++++++++++++++++++++++++++++++++ rust-version/src/main.rs | 57 +++++++++++++++++++++++++++++++++++-- rust-version/src/print.rs | 38 +++++++++++++++++++++++++ 5 files changed, 154 insertions(+), 6 deletions(-) delete mode 100644 rust-version/.cargo/config create mode 100644 rust-version/src/console.rs create mode 100644 rust-version/src/print.rs diff --git a/rust-version/.cargo/config b/rust-version/.cargo/config deleted file mode 100644 index cb7716038..000000000 --- a/rust-version/.cargo/config +++ /dev/null @@ -1,3 +0,0 @@ -[build] -target = "aarch64-unknown-none-softfloat" -rustflags = ["-C", "link-arg=-nostdlib", "-C", "link-arg=-static"] diff --git a/rust-version/Makefile b/rust-version/Makefile index c28eac41c..a3db5e2e5 100644 --- a/rust-version/Makefile +++ b/rust-version/Makefile @@ -25,13 +25,16 @@ KERNEL_ELF = target/$(TARGET)/debug/kernel COMPILER_ARGS = --target=$(TARGET) +all: $(KERNEL_BIN) + $(KERNEL_ELF): # src/main.rs src/boot.s Cargo.toml @RUSTFLAGS="$(RUSTFLAGS)" cargo rustc $(COMPILER_ARGS) $(KERNEL_BIN): $(KERNEL_ELF) rust-objcopy -O binary $(KERNEL_ELF) $(KERNEL_BIN) -all: $(KERNEL_BIN) +test: $(KERNEL_BIN) + qemu-system-aarch64 -M raspi3b -kernel kernel8.img -display none -serial stdio clean: rm -rf target $(KERNEL_BIN) diff --git a/rust-version/src/console.rs b/rust-version/src/console.rs new file mode 100644 index 000000000..85bc3027a --- /dev/null +++ b/rust-version/src/console.rs @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2018-2023 Andre Richter +//! System console. + +use core::fmt; + +//-------------------------------------------------------------------------------------------------- +// Private Definitions +//-------------------------------------------------------------------------------------------------- + +/// A mystical, magical device for generating QEMU output out of the void. +struct QEMUOutput; + + +//-------------------------------------------------------------------------------------------------- +// Public Definitions +//-------------------------------------------------------------------------------------------------- + +/// Implementing `core::fmt::Write` enables usage of the `format_args!` macros, which in turn are +/// used to implement the `kernel`'s `print!` and `println!` macros. By implementing `write_str()`, +/// we get `write_fmt()` automatically. +/// +/// See [`src/print.rs`]. +/// +impl fmt::Write for QEMUOutput { + fn write_str(&mut self, s: &str) -> fmt::Result { + for c in s.chars() { + unsafe { + core::ptr::write_volatile(0x3F20_1000 as *mut u8, c as u8); + } + } + + Ok(()) + } +} + +/// Console interfaces. +pub mod interface { + /// Console write functions. + /// + /// `core::fmt::Write` is exactly what we need for now. Re-export it here because + /// implementing `console::Write` gives a better hint to the reader about the + /// intention. + pub use core::fmt::Write; +} + +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- + +/// Return a reference to the console. +/// +/// This is the global console used by all printing macros. +pub fn console() -> impl interface::Write { + QEMUOutput {} +} diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index e588e73f6..3bd339853 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -1,11 +1,17 @@ #![feature(asm_const)] +#![feature(format_args_nl)] +#![feature(panic_info_message)] #![no_main] #![no_std] + use aarch64_cpu::asm; use core::arch::global_asm; use core::panic::PanicInfo; +mod console; +mod print; + //-------------------------------------------------------------------------------------------------- // Public Code //-------------------------------------------------------------------------------------------------- @@ -29,6 +35,7 @@ pub unsafe fn _start_rust() -> ! { /// /// - Only a single core must be active and running this function. unsafe fn kernel_init() -> ! { + println!("Hello from Rust!"); panic!("only one core is supported"); } @@ -39,11 +46,57 @@ pub static BOOT_CORE_ID: u64 = 0; global_asm!(include_str!("boot.S"), CONST_CORE_ID_MASK = const 0b11 ); -#[panic_handler] -fn panic(_info: &PanicInfo) -> ! { + + +/// Stop immediately if called a second time. +/// +/// # Note +/// +/// Using atomics here relieves us from needing to use `unsafe` for the static variable. +/// +/// On `AArch64`, which is the only implemented architecture at the time of writing this, +/// [`AtomicBool::load`] and [`AtomicBool::store`] are lowered to ordinary load and store +/// instructions. They are therefore safe to use even with MMU + caching deactivated. +/// +/// [`AtomicBool::load`]: core::sync::atomic::AtomicBool::load +/// [`AtomicBool::store`]: core::sync::atomic::AtomicBool::store +fn panic_prevent_reenter() { + use core::sync::atomic::{AtomicBool, Ordering}; + + static PANIC_IN_PROGRESS: AtomicBool = AtomicBool::new(false); + + if !PANIC_IN_PROGRESS.load(Ordering::Relaxed) { + PANIC_IN_PROGRESS.store(true, Ordering::Relaxed); + + return; + } + wait_forever() } +#[panic_handler] +fn panic(info: &PanicInfo) -> ! { + // Protect against panic infinite loops if any of the following code panics itself. + panic_prevent_reenter(); + + let (location, line, column) = match info.location() { + Some(loc) => (loc.file(), loc.line(), loc.column()), + _ => ("???", 0, 0), + }; + + println!( + "Kernel panic!\n\n\ + Panic location:\n File '{}', line {}, column {}\n\n\ + {}", + location, + line, + column, + info.message().unwrap_or(&format_args!("")), + ); + + wait_forever(); +} + #[inline(always)] pub fn wait_forever() -> ! { loop { diff --git a/rust-version/src/print.rs b/rust-version/src/print.rs new file mode 100644 index 000000000..4e8c9b375 --- /dev/null +++ b/rust-version/src/print.rs @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2018-2023 Andre Richter + +//! Printing. + +use crate::console; +use core::fmt; + +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- + +#[doc(hidden)] +pub fn _print(args: fmt::Arguments) { + use console::interface::Write; + + console::console().write_fmt(args).unwrap(); +} + +/// Prints without a newline. +/// +/// Carbon copy from +#[macro_export] +macro_rules! print { + ($($arg:tt)*) => ($crate::print::_print(format_args!($($arg)*))); +} + +/// Prints with a newline. +/// +/// Carbon copy from +#[macro_export] +macro_rules! println { + () => ($crate::print!("\n")); + ($($arg:tt)*) => ({ + $crate::print::_print(format_args_nl!($($arg)*)); + }) +} From 81dbf51611a2d8150203b92d93ad9cefa7cc158f Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Wed, 6 Mar 2024 23:13:10 +0800 Subject: [PATCH 10/22] chore: make rust-analyzer not complain warnings --- rust-version/.cargo/config | 3 +++ rust-version/Cargo.toml | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 rust-version/.cargo/config diff --git a/rust-version/.cargo/config b/rust-version/.cargo/config new file mode 100644 index 000000000..51504b648 --- /dev/null +++ b/rust-version/.cargo/config @@ -0,0 +1,3 @@ +[build] +target = "aarch64-unknown-none-softfloat" +allTargets = false diff --git a/rust-version/Cargo.toml b/rust-version/Cargo.toml index b480fe2f3..67a157ccd 100644 --- a/rust-version/Cargo.toml +++ b/rust-version/Cargo.toml @@ -8,6 +8,8 @@ edition = "2021" [[bin]] name = "kernel" path = "src/main.rs" +test = false +bench = false [dependencies] From 0e7e698fe4ca88067cb96afe17883131265be6a9 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Tue, 12 Mar 2024 20:15:01 +0800 Subject: [PATCH 11/22] feat: add synchronization method of static(global) struct --- rust-version/src/console.rs | 116 ++++++++++++++++++++++++---- rust-version/src/main.rs | 10 ++- rust-version/src/print.rs | 2 - rust-version/src/synchronization.rs | 77 ++++++++++++++++++ 4 files changed, 184 insertions(+), 21 deletions(-) create mode 100644 rust-version/src/synchronization.rs diff --git a/rust-version/src/console.rs b/rust-version/src/console.rs index 85bc3027a..7e0ab123f 100644 --- a/rust-version/src/console.rs +++ b/rust-version/src/console.rs @@ -3,55 +3,139 @@ // Copyright (c) 2018-2023 Andre Richter //! System console. +// use crate::{synchronization, synchronization::NullLock}; +use crate::{synchronization, synchronization::NullLock}; use core::fmt; +//-------------------------------------------------------------------------------------------------- +// Global instances +//-------------------------------------------------------------------------------------------------- + +static QEMU_OUTPUT: QEMUOutput = QEMUOutput::new(); + //-------------------------------------------------------------------------------------------------- // Private Definitions //-------------------------------------------------------------------------------------------------- /// A mystical, magical device for generating QEMU output out of the void. -struct QEMUOutput; +/// +/// The mutex protected part. +struct QEMUOutputInner { + chars_written: usize, +} +/// A mystical, magical device for generating QEMU output out of the void. +struct QEMUOutput { + inner: NullLock, +} //-------------------------------------------------------------------------------------------------- // Public Definitions //-------------------------------------------------------------------------------------------------- +/// Console interfaces. +pub mod interface { + use core::fmt; + /// Console write functions. + pub trait Write { + /// Write a Rust format string. + fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; + } + + /// Console statistics. + pub trait Statistics { + /// Return the number of characters written. + fn chars_written(&self) -> usize { + 0 + } + } + + /// Trait alias for a full-fledged console. + pub trait All: Write + Statistics {} +} + +//-------------------------------------------------------------------------------------------------- +// Private Code +//-------------------------------------------------------------------------------------------------- + +impl QEMUOutputInner { + const fn new() -> QEMUOutputInner { + QEMUOutputInner { chars_written: 0 } + } + + /// Send a character. + fn write_char(&mut self, c: char) { + unsafe { + core::ptr::write_volatile(0x3F20_1000 as *mut u8, c as u8); + } + + self.chars_written += 1; + } +} + /// Implementing `core::fmt::Write` enables usage of the `format_args!` macros, which in turn are /// used to implement the `kernel`'s `print!` and `println!` macros. By implementing `write_str()`, /// we get `write_fmt()` automatically. /// +/// The function takes an `&mut self`, so it must be implemented for the inner struct. +/// /// See [`src/print.rs`]. /// -impl fmt::Write for QEMUOutput { +/// [`src/print.rs`]: ../../print/index.html +impl fmt::Write for QEMUOutputInner { fn write_str(&mut self, s: &str) -> fmt::Result { for c in s.chars() { - unsafe { - core::ptr::write_volatile(0x3F20_1000 as *mut u8, c as u8); + // Convert newline to carriage return + newline. + if c == '\n' { + self.write_char('\r') } + + self.write_char(c); } Ok(()) } } -/// Console interfaces. -pub mod interface { - /// Console write functions. - /// - /// `core::fmt::Write` is exactly what we need for now. Re-export it here because - /// implementing `console::Write` gives a better hint to the reader about the - /// intention. - pub use core::fmt::Write; -} - //-------------------------------------------------------------------------------------------------- // Public Code //-------------------------------------------------------------------------------------------------- +impl QEMUOutput { + /// Create a new instance. + pub const fn new() -> QEMUOutput { + QEMUOutput { + inner: NullLock::new(QEMUOutputInner::new()), + } + } +} + /// Return a reference to the console. /// /// This is the global console used by all printing macros. -pub fn console() -> impl interface::Write { - QEMUOutput {} +pub fn console() -> &'static dyn interface::All { + &QEMU_OUTPUT } + +//------------------------------------------------------------------------------ +// OS Interface Code +//------------------------------------------------------------------------------ +use synchronization::interface::Mutex; + +/// Passthrough of `args` to the `core::fmt::Write` implementation, but guarded by a Mutex to +/// serialize access. +impl interface::Write for QEMUOutput { + fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { + // Fully qualified syntax for the call to `core::fmt::Write::write_fmt()` to increase + // readability. + self.inner.lock(|inner| fmt::Write::write_fmt(inner, args)) + } +} + +impl interface::Statistics for QEMUOutput { + fn chars_written(&self) -> usize { + self.inner.lock(|inner| inner.chars_written) + } +} + +impl interface::All for QEMUOutput {} diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index 3bd339853..5bbce54e2 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -1,16 +1,17 @@ #![feature(asm_const)] #![feature(format_args_nl)] #![feature(panic_info_message)] +#![feature(trait_alias)] #![no_main] #![no_std] - use aarch64_cpu::asm; use core::arch::global_asm; use core::panic::PanicInfo; mod console; mod print; +mod synchronization; //-------------------------------------------------------------------------------------------------- // Public Code @@ -35,7 +36,11 @@ pub unsafe fn _start_rust() -> ! { /// /// - Only a single core must be active and running this function. unsafe fn kernel_init() -> ! { - println!("Hello from Rust!"); + use console::console; + println!("[0] Hello from Rust!"); + println!("[1] Chars written: {}", console().chars_written()); + println!("[2] Stopping here."); + println!("[1] Chars written: {}", console().chars_written()); panic!("only one core is supported"); } @@ -47,7 +52,6 @@ global_asm!(include_str!("boot.S"), CONST_CORE_ID_MASK = const 0b11 ); - /// Stop immediately if called a second time. /// /// # Note diff --git a/rust-version/src/print.rs b/rust-version/src/print.rs index 4e8c9b375..6de99572d 100644 --- a/rust-version/src/print.rs +++ b/rust-version/src/print.rs @@ -13,8 +13,6 @@ use core::fmt; #[doc(hidden)] pub fn _print(args: fmt::Arguments) { - use console::interface::Write; - console::console().write_fmt(args).unwrap(); } diff --git a/rust-version/src/synchronization.rs b/rust-version/src/synchronization.rs new file mode 100644 index 000000000..94c83de1c --- /dev/null +++ b/rust-version/src/synchronization.rs @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2020-2023 Andre Richter + +//! Synchronization primitives. +//! +//! # Resources +//! +//! - +//! - +//! - + +use core::cell::UnsafeCell; + +//-------------------------------------------------------------------------------------------------- +// Public Definitions +//-------------------------------------------------------------------------------------------------- + +/// Synchronization interfaces. +pub mod interface { + + /// Any object implementing this trait guarantees exclusive access to the data wrapped within + /// the Mutex for the duration of the provided closure. + pub trait Mutex { + /// The type of the data that is wrapped by this mutex. + type Data; + + /// Locks the mutex and grants the closure temporary mutable access to the wrapped data. + fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; + } +} + +/// A pseudo-lock for teaching purposes. +/// +/// In contrast to a real Mutex implementation, does not protect against concurrent access from +/// other cores to the contained data. This part is preserved for later lessons. +/// +/// The lock will only be used as long as it is safe to do so, i.e. as long as the kernel is +/// executing single-threaded, aka only running on a single core with interrupts disabled. +pub struct NullLock +where + T: ?Sized, +{ + data: UnsafeCell, +} + +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- + +unsafe impl Send for NullLock where T: ?Sized + Send {} +unsafe impl Sync for NullLock where T: ?Sized + Send {} + +impl NullLock { + /// Create an instance. + pub const fn new(data: T) -> Self { + Self { + data: UnsafeCell::new(data), + } + } +} + +//------------------------------------------------------------------------------ +// OS Interface Code +//------------------------------------------------------------------------------ + +impl interface::Mutex for NullLock { + type Data = T; + + fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { + // In a real lock, there would be code encapsulating this line that ensures that this + // mutable reference will ever only be given out once at a time. + let data = unsafe { &mut *self.data.get() }; + + f(data) + } +} From fe8d5741fd67ec0a0cfb93fe0e190b456e28e6c2 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Tue, 12 Mar 2024 20:34:16 +0800 Subject: [PATCH 12/22] refactor: split panic handler code into panic.rs --- rust-version/src/main.rs | 58 +------------------------------------- rust-version/src/panic.rs | 59 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 57 deletions(-) create mode 100644 rust-version/src/panic.rs diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index 5bbce54e2..2cd3a89af 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -5,13 +5,12 @@ #![no_main] #![no_std] -use aarch64_cpu::asm; use core::arch::global_asm; -use core::panic::PanicInfo; mod console; mod print; mod synchronization; +mod panic; //-------------------------------------------------------------------------------------------------- // Public Code @@ -52,58 +51,3 @@ global_asm!(include_str!("boot.S"), CONST_CORE_ID_MASK = const 0b11 ); -/// Stop immediately if called a second time. -/// -/// # Note -/// -/// Using atomics here relieves us from needing to use `unsafe` for the static variable. -/// -/// On `AArch64`, which is the only implemented architecture at the time of writing this, -/// [`AtomicBool::load`] and [`AtomicBool::store`] are lowered to ordinary load and store -/// instructions. They are therefore safe to use even with MMU + caching deactivated. -/// -/// [`AtomicBool::load`]: core::sync::atomic::AtomicBool::load -/// [`AtomicBool::store`]: core::sync::atomic::AtomicBool::store -fn panic_prevent_reenter() { - use core::sync::atomic::{AtomicBool, Ordering}; - - static PANIC_IN_PROGRESS: AtomicBool = AtomicBool::new(false); - - if !PANIC_IN_PROGRESS.load(Ordering::Relaxed) { - PANIC_IN_PROGRESS.store(true, Ordering::Relaxed); - - return; - } - - wait_forever() -} - -#[panic_handler] -fn panic(info: &PanicInfo) -> ! { - // Protect against panic infinite loops if any of the following code panics itself. - panic_prevent_reenter(); - - let (location, line, column) = match info.location() { - Some(loc) => (loc.file(), loc.line(), loc.column()), - _ => ("???", 0, 0), - }; - - println!( - "Kernel panic!\n\n\ - Panic location:\n File '{}', line {}, column {}\n\n\ - {}", - location, - line, - column, - info.message().unwrap_or(&format_args!("")), - ); - - wait_forever(); -} - -#[inline(always)] -pub fn wait_forever() -> ! { - loop { - asm::wfe() - } -} diff --git a/rust-version/src/panic.rs b/rust-version/src/panic.rs new file mode 100644 index 000000000..8697e558f --- /dev/null +++ b/rust-version/src/panic.rs @@ -0,0 +1,59 @@ +use crate::println; +use aarch64_cpu::asm; +use core::panic::PanicInfo; + +/// Stop immediately if called a second time. +/// +/// # Note +/// +/// Using atomics here relieves us from needing to use `unsafe` for the static variable. +/// +/// On `AArch64`, which is the only implemented architecture at the time of writing this, +/// [`AtomicBool::load`] and [`AtomicBool::store`] are lowered to ordinary load and store +/// instructions. They are therefore safe to use even with MMU + caching deactivated. +/// +/// [`AtomicBool::load`]: core::sync::atomic::AtomicBool::load +/// [`AtomicBool::store`]: core::sync::atomic::AtomicBool::store +fn panic_prevent_reenter() { + use core::sync::atomic::{AtomicBool, Ordering}; + + static PANIC_IN_PROGRESS: AtomicBool = AtomicBool::new(false); + + if !PANIC_IN_PROGRESS.load(Ordering::Relaxed) { + PANIC_IN_PROGRESS.store(true, Ordering::Relaxed); + + return; + } + + wait_forever() +} + +#[panic_handler] +fn panic(info: &PanicInfo) -> ! { + // Protect against panic infinite loops if any of the following code panics itself. + panic_prevent_reenter(); + + let (location, line, column) = match info.location() { + Some(loc) => (loc.file(), loc.line(), loc.column()), + _ => ("???", 0, 0), + }; + + println!( + "Kernel panic!\n\n\ + Panic location:\n File '{}', line {}, column {}\n\n\ + {}", + location, + line, + column, + info.message().unwrap_or(&format_args!("")), + ); + + wait_forever(); +} + +#[inline(always)] +pub fn wait_forever() -> ! { + loop { + asm::wfe() + } +} From b9429bb75936e93d460fd406dfed293990fd2e11 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Wed, 13 Mar 2024 01:11:55 +0800 Subject: [PATCH 13/22] refactor: tran console.rs into dir --- rust-version/src/{console.rs => console/mod.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rust-version/src/{console.rs => console/mod.rs} (100%) diff --git a/rust-version/src/console.rs b/rust-version/src/console/mod.rs similarity index 100% rename from rust-version/src/console.rs rename to rust-version/src/console/mod.rs From f72760580cc429e73aea59bdf77ff8e99d1373dc Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Wed, 13 Mar 2024 13:18:23 +0800 Subject: [PATCH 14/22] feat: impl core::fmt::Writer with uart dirver --- rust-version/Cargo.lock | 9 +- rust-version/Cargo.toml | 1 + rust-version/Makefile | 2 +- rust-version/src/bcm/common.rs | 55 ++++++++ rust-version/src/bcm/mod.rs | 22 ++++ rust-version/src/bcm/uart.rs | 224 +++++++++++++++++++++++++++++++++ rust-version/src/main.rs | 16 +-- rust-version/src/print.rs | 8 +- 8 files changed, 326 insertions(+), 11 deletions(-) create mode 100644 rust-version/src/bcm/common.rs create mode 100644 rust-version/src/bcm/mod.rs create mode 100644 rust-version/src/bcm/uart.rs diff --git a/rust-version/Cargo.lock b/rust-version/Cargo.lock index b54a0d8a9..2bb252e9f 100644 --- a/rust-version/Cargo.lock +++ b/rust-version/Cargo.lock @@ -8,7 +8,7 @@ version = "9.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac42a04a61c19fc8196dd728022a784baecc5d63d7e256c01ad1b3fbfab26287" dependencies = [ - "tock-registers", + "tock-registers 0.8.1", ] [[package]] @@ -16,6 +16,7 @@ name = "rust-kernel" version = "0.1.0" dependencies = [ "aarch64-cpu", + "tock-registers 0.9.0", ] [[package]] @@ -23,3 +24,9 @@ name = "tock-registers" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "696941a0aee7e276a165a978b37918fd5d22c55c3d6bda197813070ca9c0f21c" + +[[package]] +name = "tock-registers" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b9e2fdb3a1e862c0661768b7ed25390811df1947a8acbfbefe09b47078d93c4" diff --git a/rust-version/Cargo.toml b/rust-version/Cargo.toml index 67a157ccd..0a788e733 100644 --- a/rust-version/Cargo.toml +++ b/rust-version/Cargo.toml @@ -14,6 +14,7 @@ bench = false [dependencies] aarch64-cpu = "9.4.0" +tock-registers = "0.9.0" [lib] test = false diff --git a/rust-version/Makefile b/rust-version/Makefile index a3db5e2e5..16ffa51e6 100644 --- a/rust-version/Makefile +++ b/rust-version/Makefile @@ -34,7 +34,7 @@ $(KERNEL_BIN): $(KERNEL_ELF) rust-objcopy -O binary $(KERNEL_ELF) $(KERNEL_BIN) test: $(KERNEL_BIN) - qemu-system-aarch64 -M raspi3b -kernel kernel8.img -display none -serial stdio + qemu-system-aarch64 -M raspi3b -kernel kernel8.img -display none -serial null -serial stdio clean: rm -rf target $(KERNEL_BIN) diff --git a/rust-version/src/bcm/common.rs b/rust-version/src/bcm/common.rs new file mode 100644 index 000000000..1246e9bb7 --- /dev/null +++ b/rust-version/src/bcm/common.rs @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2020-2023 Andre Richter + +//! Common device driver code. + +use core::{marker::PhantomData, ops}; + +//-------------------------------------------------------------------------------------------------- +// Public Definitions +//-------------------------------------------------------------------------------------------------- + +pub struct MMIODerefWrapper { + start_addr: usize, + phantom: PhantomData T>, +} + +/// The board's physical memory map. +#[rustfmt::skip] +pub mod map { + + // pub const GPIO_OFFSET: usize = 0x0020_0000; + pub const UART_OFFSET: usize = 0x0021_5000; + + /// Physical devices. + pub mod mmio { + use super::*; + + pub const START: usize = 0x3F00_0000; + // pub const GPIO_START: usize = START + GPIO_OFFSET; + pub const UART_START: usize = START + UART_OFFSET; + } +} + +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- + +impl MMIODerefWrapper { + /// Create an instance. + pub const unsafe fn new(start_addr: usize) -> Self { + Self { + start_addr, + phantom: PhantomData, + } + } +} + +impl ops::Deref for MMIODerefWrapper { + type Target = T; + + fn deref(&self) -> &Self::Target { + unsafe { &*(self.start_addr as *const _) } + } +} diff --git a/rust-version/src/bcm/mod.rs b/rust-version/src/bcm/mod.rs new file mode 100644 index 000000000..7cad13c0a --- /dev/null +++ b/rust-version/src/bcm/mod.rs @@ -0,0 +1,22 @@ +//-------------------------------------------------------------------------------------------------- +// Public Definitions +//-------------------------------------------------------------------------------------------------- + +pub mod uart; +pub mod common; + +use crate::bcm::{ common::map, uart::Uart, }; + +//-------------------------------------------------------------------------------------------------- +// Global instances +// ------------------------------------------------------------------------------------------------- + +pub static UART: Uart = unsafe { Uart::new(map::mmio::UART_START) }; + +//-------------------------------------------------------------------------------------------------- +// Public Code +// ------------------------------------------------------------------------------------------------- + +pub fn hardware_init() { + UART.init(); +} diff --git a/rust-version/src/bcm/uart.rs b/rust-version/src/bcm/uart.rs new file mode 100644 index 000000000..65b9a3a3e --- /dev/null +++ b/rust-version/src/bcm/uart.rs @@ -0,0 +1,224 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2018-2023 Andre Richter + +//! PL011 UART driver. +//! +//! # Resources +//! +//! - +//! - + +use crate::bcm::common::MMIODerefWrapper; +use crate::synchronization::{interface::Mutex, NullLock}; +use aarch64_cpu::asm; + +use tock_registers::{ + interfaces::Writeable, + register_bitfields, register_structs, + registers::{ReadOnly, ReadWrite}, +}; + +use tock_registers::interfaces::Readable; +use core::fmt; + +//-------------------------------------------------------------------------------------------------- +// Public Definitions +// ------------------------------------------------------------------------------------------------- + +pub struct Uart { + inner: NullLock, +} + +//-------------------------------------------------------------------------------------------------- +// Private Definitions +//-------------------------------------------------------------------------------------------------- + +// mini UART registers. +register_bitfields! { + u32, + AUX_ENABLES [ + SPI2_ENABLE OFFSET(2) NUMBITS(1) [ + ], + SPI1_ENABLE OFFSET(1) NUMBITS(1) [ + ], + MINI_UART_ENABLE OFFSET(0) NUMBITS(1) [ + Enable = 1, + Disable = 0 + ] + ], + // AUX_MU_IO [ + // DATA OFFSET(0) NUMBITS(8) [], + // ], + AUX_MU_IER [ + RX_INT_ENABLE OFFSET(1) NUMBITS(1) [ + Disable = 0, + Enable = 1 + ], + TX_INT_ENABLE OFFSET(0) NUMBITS(1) [ + Disable = 0, + Enable = 1 + ] + ], + AUX_MU_IIR [ + FIFO_ENABLE OFFSET(2) NUMBITS(2) [ + Disabled = 0b00, + Enabled = 0b11 + ], + + INT_ID OFFSET(1) NUMBITS(2) [ + NoInterrupt = 0b00, + TransmitterEmpty = 0b01, + ReceiverDataAvailable = 0b10, + DisableInterrupt = 0b11 + ], + ], + AUX_MU_LCR [ + DATA_SIZE OFFSET(0) NUMBITS(2) [ + SevenBit = 0b00, + EightBit = 0b11 + ], + ], + AUX_MU_MCR [ + AUTO_FLOW_RTS OFFSET(1) NUMBITS(1) [ + Inactive = 0, + Active = 1 + ], + ], + AUX_MU_LSR [ + RX_READY OFFSET(0) NUMBITS(1) [], + TX_IDLE OFFSET(6) NUMBITS(1) [], + ], + AUX_MU_CNTL [ + TX_RX_ENABLE OFFSET(0) NUMBITS(2) [ + rxTxDisable = 0b00, + rxEnable = 0b01, + txEnable = 0b10, + rxTxEnable = 0b11, + ], + ], + AUX_MU_BAUD [ + Baudrate OFFSET(0) NUMBITS(16) [], + ], +} + +register_structs! { + #[allow(non_snake_case)] + pub RegisterBlock { + (0x00 => _reserved1), + (0x04 => AUX_ENABLES: ReadWrite), + (0x08 => _reserved2), + (0x40 => AUX_MU_IO: ReadWrite), + (0x44 => AUX_MU_IER: ReadWrite), + (0x48 => AUX_MU_IIR: ReadOnly), + (0x4c => AUX_MU_LCR: ReadWrite), + (0x50 => AUX_MU_MCR: ReadWrite), + (0x54 => AUX_MU_LSR: ReadOnly), + (0x58 => _reserved3), + (0x60 => AUX_MU_CNTL: ReadWrite), + (0x64 => _reserved4), + (0x68 => AUX_MU_BAUD: ReadWrite), + (0x6c => _reserved5), + (0xd4 => @END), + } +} + +/// Abstraction for the associated MMIO registers. +type Registers = MMIODerefWrapper; + +struct UartInner { + registers: Registers, +} + +//-------------------------------------------------------------------------------------------------- +// Private Code +//-------------------------------------------------------------------------------------------------- + +impl UartInner { + const unsafe fn new(mmio_start_addr: usize) -> Self { + Self { + registers: Registers::new(mmio_start_addr), + } + } + + fn init(&mut self) { + // Enable the mini UART. + self.registers + .AUX_ENABLES + .write(AUX_ENABLES::MINI_UART_ENABLE::Enable); + + // disable transmitter and receiver + self.registers + .AUX_MU_CNTL + .write(AUX_MU_CNTL::TX_RX_ENABLE::rxTxDisable); + + // disable interrupts + self.registers + .AUX_MU_IER + .write(AUX_MU_IER::RX_INT_ENABLE::Disable + AUX_MU_IER::TX_INT_ENABLE::Disable); + + // set data size to 8 bit + self.registers + .AUX_MU_LCR + .write(AUX_MU_LCR::DATA_SIZE::EightBit); + + // don't need auto flow control + self.registers + .AUX_MU_MCR + .write(AUX_MU_MCR::AUTO_FLOW_RTS::Inactive); + + // set baudrate to 115200 + self.registers + .AUX_MU_BAUD + .write(AUX_MU_BAUD::Baudrate.val(270)); + } +} + +impl core::fmt::Write for UartInner { + + fn write_char(&mut self, c: char) -> fmt::Result { + // wait until transmitter is empty + while self.registers.AUX_MU_LSR.matches_all(AUX_MU_LSR::TX_IDLE::CLEAR) { + asm::nop(); + } + self.registers.AUX_MU_IO.set(c as u32); + Ok(()) + } + + fn write_str(&mut self, s: &str) -> fmt::Result { + for c in s.chars() { + self.write_char(c); + } + + Ok(()) + } +} + +//-------------------------------------------------------------------------------------------------- +// Public Code +// ------------------------------------------------------------------------------------------------- + +impl Uart { + // TODO: add loader support + // pub const COMPATIBLE: &'static str = "BCM Mini UART"; + + pub const unsafe fn new(mmio_start_addr: usize) -> Self { + Self { + inner: NullLock::new(UartInner::new(mmio_start_addr)), + } + } + + pub fn init(&self) { + self.inner.lock(|inner| inner.init()); + } +} + +use crate::console::interface; +impl interface::Write for Uart { + fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { + // Fully qualified syntax for the call to `core::fmt::Write::write_fmt()` to increase + // readability. + self.inner.lock(|inner| fmt::Write::write_fmt(inner, args)) + } + +} diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index 2cd3a89af..9aa376289 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -7,10 +7,11 @@ use core::arch::global_asm; +mod bcm; mod console; +mod panic; mod print; mod synchronization; -mod panic; //-------------------------------------------------------------------------------------------------- // Public Code @@ -27,19 +28,21 @@ mod panic; /// 3. _start_rust call kernel_init #[no_mangle] pub unsafe fn _start_rust() -> ! { - crate::kernel_init() + bcm::hardware_init(); + crate::kernel_init(); } + /// Early kernel initialization. /// # Safety /// /// - Only a single core must be active and running this function. unsafe fn kernel_init() -> ! { - use console::console; + kernel_main() +} + +fn kernel_main() -> ! { println!("[0] Hello from Rust!"); - println!("[1] Chars written: {}", console().chars_written()); - println!("[2] Stopping here."); - println!("[1] Chars written: {}", console().chars_written()); panic!("only one core is supported"); } @@ -50,4 +53,3 @@ pub static BOOT_CORE_ID: u64 = 0; global_asm!(include_str!("boot.S"), CONST_CORE_ID_MASK = const 0b11 ); - diff --git a/rust-version/src/print.rs b/rust-version/src/print.rs index 6de99572d..9bd64beaf 100644 --- a/rust-version/src/print.rs +++ b/rust-version/src/print.rs @@ -4,7 +4,11 @@ //! Printing. -use crate::console; +// QEMU's hacky UART +// use crate::console; +use crate::bcm::UART; +use crate::console::interface::Write; + use core::fmt; //-------------------------------------------------------------------------------------------------- @@ -13,7 +17,7 @@ use core::fmt; #[doc(hidden)] pub fn _print(args: fmt::Arguments) { - console::console().write_fmt(args).unwrap(); + UART.write_fmt(args).unwrap(); } /// Prints without a newline. From 818d5104837ac5d71ea21523b37e4afde6117c1d Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Wed, 13 Mar 2024 16:58:16 +0800 Subject: [PATCH 15/22] feat:add simple shell environment --- rust-version/src/bcm/uart.rs | 29 ++++++++++++++++--- rust-version/src/main.rs | 54 ++++++++++++++++++++++++++++++++++-- rust-version/src/print.rs | 2 +- 3 files changed, 78 insertions(+), 7 deletions(-) diff --git a/rust-version/src/bcm/uart.rs b/rust-version/src/bcm/uart.rs index 65b9a3a3e..b48c6f444 100644 --- a/rust-version/src/bcm/uart.rs +++ b/rust-version/src/bcm/uart.rs @@ -12,6 +12,7 @@ use crate::bcm::common::MMIODerefWrapper; use crate::synchronization::{interface::Mutex, NullLock}; use aarch64_cpu::asm; +use core::char; use tock_registers::{ interfaces::Writeable, @@ -19,8 +20,8 @@ use tock_registers::{ registers::{ReadOnly, ReadWrite}, }; -use tock_registers::interfaces::Readable; use core::fmt; +use tock_registers::interfaces::Readable; //-------------------------------------------------------------------------------------------------- // Public Definitions @@ -172,13 +173,29 @@ impl UartInner { .AUX_MU_BAUD .write(AUX_MU_BAUD::Baudrate.val(270)); } + + fn get_char(&self) -> char { + // wait until transmitter is empty + while self + .registers + .AUX_MU_LSR + .matches_all(AUX_MU_LSR::RX_READY::CLEAR) + { + asm::nop(); + } + + char::from_u32(self.registers.AUX_MU_IO.get()).unwrap() + } } impl core::fmt::Write for UartInner { - fn write_char(&mut self, c: char) -> fmt::Result { // wait until transmitter is empty - while self.registers.AUX_MU_LSR.matches_all(AUX_MU_LSR::TX_IDLE::CLEAR) { + while self + .registers + .AUX_MU_LSR + .matches_all(AUX_MU_LSR::TX_IDLE::CLEAR) + { asm::nop(); } self.registers.AUX_MU_IO.set(c as u32); @@ -211,6 +228,10 @@ impl Uart { pub fn init(&self) { self.inner.lock(|inner| inner.init()); } + + pub fn get_char(&self) -> char { + self.inner.lock(|inner| inner.get_char()) + } } use crate::console::interface; @@ -220,5 +241,5 @@ impl interface::Write for Uart { // readability. self.inner.lock(|inner| fmt::Write::write_fmt(inner, args)) } - } + diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index 9aa376289..ebff742c3 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -41,9 +41,59 @@ unsafe fn kernel_init() -> ! { kernel_main() } -fn kernel_main() -> ! { +const MAXCHAR: usize = 1000; + +fn help() { + println!("Help : print this help menu"); + println!("hello : print Hello World!"); + println!("reboot : reboot this device"); +} + +unsafe fn reboot() { + println!("Rebooting..."); + // use core::arch::asm; + // asm!("b 0x80000") +} + +unsafe fn interactiave_shell() -> ! { + let mut array : [char; MAXCHAR] = ['\0'; MAXCHAR]; + let mut cnt = 0; + + print!("# "); + loop { + let c = bcm::UART.get_char(); + if c == '\r' { + println!(); + + match &array[0..6] { + &['h', 'e', 'l', 'p', _] => { + help(); + } + &[ 'h', 'e', 'l', 'l', 'o', _] => { + println!("Hello World!"); + } + &[ 'r', 'e', 'b', 'o', 'o', 't'] => { + println!("Rebooting..."); + reboot(); + } + _ => { + help(); + } + } + print!("# "); + cnt = 0; + } else { + print!("{}", c); + array[cnt] = c; + cnt += 1; + } + } +} + +unsafe fn kernel_main() -> ! { println!("[0] Hello from Rust!"); - panic!("only one core is supported"); + println!("[1] run the simple shell"); + interactiave_shell() } #[no_mangle] diff --git a/rust-version/src/print.rs b/rust-version/src/print.rs index 9bd64beaf..72387635e 100644 --- a/rust-version/src/print.rs +++ b/rust-version/src/print.rs @@ -33,7 +33,7 @@ macro_rules! print { /// Carbon copy from #[macro_export] macro_rules! println { - () => ($crate::print!("\n")); + () => ($crate::print!("\r\n")); ($($arg:tt)*) => ({ $crate::print::_print(format_args_nl!($($arg)*)); }) From e85339f08c543ace779349fe58899fe2c7fa409a Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Wed, 13 Mar 2024 23:09:50 +0800 Subject: [PATCH 16/22] add: gpio object --- rust-version/src/bcm/common.rs | 10 +- rust-version/src/bcm/gpio.rs | 195 +++++++++++++++++++++++++++++++++ rust-version/src/bcm/mod.rs | 5 +- 3 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 rust-version/src/bcm/gpio.rs diff --git a/rust-version/src/bcm/common.rs b/rust-version/src/bcm/common.rs index 1246e9bb7..1d459fa18 100644 --- a/rust-version/src/bcm/common.rs +++ b/rust-version/src/bcm/common.rs @@ -19,7 +19,7 @@ pub struct MMIODerefWrapper { #[rustfmt::skip] pub mod map { - // pub const GPIO_OFFSET: usize = 0x0020_0000; + pub const GPIO_OFFSET: usize = 0x0020_0000; pub const UART_OFFSET: usize = 0x0021_5000; /// Physical devices. @@ -27,7 +27,7 @@ pub mod map { use super::*; pub const START: usize = 0x3F00_0000; - // pub const GPIO_START: usize = START + GPIO_OFFSET; + pub const GPIO_START: usize = START + GPIO_OFFSET; pub const UART_START: usize = START + UART_OFFSET; } } @@ -53,3 +53,9 @@ impl ops::Deref for MMIODerefWrapper { unsafe { &*(self.start_addr as *const _) } } } + +pub fn spin_for_cycles(cycles: usize) { + for _ in 0..cycles { + aarch64_cpu::asm::nop(); + } +} diff --git a/rust-version/src/bcm/gpio.rs b/rust-version/src/bcm/gpio.rs new file mode 100644 index 000000000..b706b386e --- /dev/null +++ b/rust-version/src/bcm/gpio.rs @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2018-2023 Andre Richter + +//! GPIO Driver. + +use crate::{ + bcm::common::{self, MMIODerefWrapper}, + synchronization, + synchronization::NullLock, +}; +use tock_registers::{ + interfaces::{ReadWriteable, Writeable}, + register_bitfields, register_structs, + registers::ReadWrite, +}; + +//-------------------------------------------------------------------------------------------------- +// Private Definitions +//-------------------------------------------------------------------------------------------------- + +// GPIO registers. +// +// Descriptions taken from +// - https://github.com/raspberrypi/documentation/files/1888662/BCM2837-ARM-Peripherals.-.Revised.-.V2-1.pdf +// - https://datasheets.raspberrypi.org/bcm2711/bcm2711-peripherals.pdf +register_bitfields! { + u32, + + /// GPIO Function Select 1 + GPFSEL1 [ + /// Pin 15 + FSEL15 OFFSET(15) NUMBITS(3) [ + Input = 0b000, + Output = 0b001, + AltFunc5 = 0b010 // Mini UART RX + + ], + + /// Pin 14 + FSEL14 OFFSET(12) NUMBITS(3) [ + Input = 0b000, + Output = 0b001, + AltFunc5 = 0b010 // Mini UART TX + ] + ], + + /// GPIO Pull-up/down Register + /// + /// BCM2837 only. + GPPUD [ + /// Controls the actuation of the internal pull-up/down control line to ALL the GPIO pins. + PUD OFFSET(0) NUMBITS(2) [ + Off = 0b00, + PullDown = 0b01, + PullUp = 0b10 + ] + ], + + /// GPIO Pull-up/down Clock Register 0 + /// + /// BCM2837 only. + GPPUDCLK0 [ + /// Pin 15 + PUDCLK15 OFFSET(15) NUMBITS(1) [ + NoEffect = 0, + AssertClock = 1 + ], + + /// Pin 14 + PUDCLK14 OFFSET(14) NUMBITS(1) [ + NoEffect = 0, + AssertClock = 1 + ] + ], + + /// GPIO Pull-up / Pull-down Register 0 + /// + /// BCM2711 only. + GPIO_PUP_PDN_CNTRL_REG0 [ + /// Pin 15 + GPIO_PUP_PDN_CNTRL15 OFFSET(30) NUMBITS(2) [ + NoResistor = 0b00, + PullUp = 0b01 + ], + + /// Pin 14 + GPIO_PUP_PDN_CNTRL14 OFFSET(28) NUMBITS(2) [ + NoResistor = 0b00, + PullUp = 0b01 + ] + ] +} + +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => _reserved1), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => _reserved2), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => _reserved3), + (0xE4 => GPIO_PUP_PDN_CNTRL_REG0: ReadWrite), + (0xE8 => @END), + } +} + +/// Abstraction for the associated MMIO registers. +type Registers = MMIODerefWrapper; + +struct GPIOInner { + registers: Registers, +} + +//-------------------------------------------------------------------------------------------------- +// Public Definitions +//-------------------------------------------------------------------------------------------------- + +/// Representation of the GPIO HW. +pub struct GPIO { + inner: NullLock, +} + +//-------------------------------------------------------------------------------------------------- +// Private Code +//-------------------------------------------------------------------------------------------------- + +impl GPIOInner { + /// Create an instance. + /// + /// # Safety + /// + /// - The user must ensure to provide a correct MMIO start address. + pub const unsafe fn new(mmio_start_addr: usize) -> Self { + Self { + registers: Registers::new(mmio_start_addr), + } + } + + /// Disable pull-up/down on pins 14 and 15. + fn disable_pud_14_15_bcm2837(&mut self) { + const DELAY: usize = 150; + + self.registers.GPPUD.write(GPPUD::PUD::Off); + common::spin_for_cycles(DELAY); + + self.registers + .GPPUDCLK0 + .write(GPPUDCLK0::PUDCLK15::AssertClock + GPPUDCLK0::PUDCLK14::AssertClock); + common::spin_for_cycles(DELAY); + + self.registers.GPPUD.write(GPPUD::PUD::Off); + self.registers.GPPUDCLK0.set(0); + } + + /// Map PL011 UART as standard output. + /// + /// TX to pin 14 + /// RX to pin 15 + pub fn map_mini_uart(&mut self) { + // Select the UART on pins 14 and 15. + self.registers + .GPFSEL1 + .modify(GPFSEL1::FSEL15::AltFunc5 + GPFSEL1::FSEL14::AltFunc5); + + // Disable pull-up/down on pins 14 and 15. + self.disable_pud_14_15_bcm2837(); + } +} + +//-------------------------------------------------------------------------------------------------- +// Public Code +//-------------------------------------------------------------------------------------------------- +use synchronization::interface::Mutex; + +impl GPIO { + pub const COMPATIBLE: &'static str = "BCM GPIO"; + + /// Create an instance. + /// + /// # Safety + /// + /// - The user must ensure to provide a correct MMIO start address. + pub const unsafe fn new(mmio_start_addr: usize) -> Self { + Self { + inner: NullLock::new(GPIOInner::new(mmio_start_addr)), + } + } + + /// Concurrency safe version of `GPIOInner.map_nini_uart()` + pub fn init(&self) { + self.inner.lock(|inner| inner.map_mini_uart()) + } +} diff --git a/rust-version/src/bcm/mod.rs b/rust-version/src/bcm/mod.rs index 7cad13c0a..f30eb849c 100644 --- a/rust-version/src/bcm/mod.rs +++ b/rust-version/src/bcm/mod.rs @@ -4,14 +4,16 @@ pub mod uart; pub mod common; +pub mod gpio; -use crate::bcm::{ common::map, uart::Uart, }; +use crate::bcm::{ common::map, uart::Uart, gpio::GPIO }; //-------------------------------------------------------------------------------------------------- // Global instances // ------------------------------------------------------------------------------------------------- pub static UART: Uart = unsafe { Uart::new(map::mmio::UART_START) }; +pub static GPIO: GPIO = unsafe { GPIO::new(map::mmio::GPIO_START) }; //-------------------------------------------------------------------------------------------------- // Public Code @@ -19,4 +21,5 @@ pub static UART: Uart = unsafe { Uart::new(map::mmio::UART_START) }; pub fn hardware_init() { UART.init(); + GPIO.init(); } From 94c16cf95fd42cae6e7654305be97aeada273688 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Thu, 14 Mar 2024 15:41:47 +0800 Subject: [PATCH 17/22] fix: onboard issue --- rust-version/src/bcm/gpio.rs | 2 +- rust-version/src/bcm/mod.rs | 2 +- rust-version/src/bcm/uart.rs | 46 +++++++++++++++++------------------- rust-version/src/main.rs | 24 ++++++++++++------- rust-version/src/print.rs | 3 ++- 5 files changed, 41 insertions(+), 36 deletions(-) diff --git a/rust-version/src/bcm/gpio.rs b/rust-version/src/bcm/gpio.rs index b706b386e..b3637cb1d 100644 --- a/rust-version/src/bcm/gpio.rs +++ b/rust-version/src/bcm/gpio.rs @@ -140,7 +140,7 @@ impl GPIOInner { /// Disable pull-up/down on pins 14 and 15. fn disable_pud_14_15_bcm2837(&mut self) { - const DELAY: usize = 150; + const DELAY: usize = 2000; self.registers.GPPUD.write(GPPUD::PUD::Off); common::spin_for_cycles(DELAY); diff --git a/rust-version/src/bcm/mod.rs b/rust-version/src/bcm/mod.rs index f30eb849c..c73ad7492 100644 --- a/rust-version/src/bcm/mod.rs +++ b/rust-version/src/bcm/mod.rs @@ -20,6 +20,6 @@ pub static GPIO: GPIO = unsafe { GPIO::new(map::mmio::GPIO_START) }; // ------------------------------------------------------------------------------------------------- pub fn hardware_init() { - UART.init(); GPIO.init(); + UART.init(); } diff --git a/rust-version/src/bcm/uart.rs b/rust-version/src/bcm/uart.rs index b48c6f444..2b175d50d 100644 --- a/rust-version/src/bcm/uart.rs +++ b/rust-version/src/bcm/uart.rs @@ -48,32 +48,23 @@ register_bitfields! { Disable = 0 ] ], - // AUX_MU_IO [ - // DATA OFFSET(0) NUMBITS(8) [], - // ], + AUX_MU_IO [ + DATA OFFSET(0) NUMBITS(8) [], + ], AUX_MU_IER [ - RX_INT_ENABLE OFFSET(1) NUMBITS(1) [ - Disable = 0, - Enable = 1 - ], - TX_INT_ENABLE OFFSET(0) NUMBITS(1) [ - Disable = 0, - Enable = 1 - ] + ENABLE_TX OFFSET(1) NUMBITS(1) [ ], + ENABLE_RX OFFSET(0) NUMBITS(1) [ ], ], AUX_MU_IIR [ - FIFO_ENABLE OFFSET(2) NUMBITS(2) [ - Disabled = 0b00, - Enabled = 0b11 - ], - - INT_ID OFFSET(1) NUMBITS(2) [ + // FIXME: not the same as tsclu + RW_INT_ID OFFSET(1) NUMBITS(2) [ NoInterrupt = 0b00, TransmitterEmpty = 0b01, ReceiverDataAvailable = 0b10, DisableInterrupt = 0b11 ], ], + AUX_MU_LCR [ DATA_SIZE OFFSET(0) NUMBITS(2) [ SevenBit = 0b00, @@ -111,7 +102,7 @@ register_structs! { (0x08 => _reserved2), (0x40 => AUX_MU_IO: ReadWrite), (0x44 => AUX_MU_IER: ReadWrite), - (0x48 => AUX_MU_IIR: ReadOnly), + (0x48 => AUX_MU_IIR: ReadWrite), (0x4c => AUX_MU_LCR: ReadWrite), (0x50 => AUX_MU_MCR: ReadWrite), (0x54 => AUX_MU_LSR: ReadOnly), @@ -153,11 +144,6 @@ impl UartInner { .AUX_MU_CNTL .write(AUX_MU_CNTL::TX_RX_ENABLE::rxTxDisable); - // disable interrupts - self.registers - .AUX_MU_IER - .write(AUX_MU_IER::RX_INT_ENABLE::Disable + AUX_MU_IER::TX_INT_ENABLE::Disable); - // set data size to 8 bit self.registers .AUX_MU_LCR @@ -168,10 +154,23 @@ impl UartInner { .AUX_MU_MCR .write(AUX_MU_MCR::AUTO_FLOW_RTS::Inactive); + // disable interrupts + self.registers + .AUX_MU_IER + .write(AUX_MU_IER::ENABLE_RX::CLEAR + AUX_MU_IER::ENABLE_RX::CLEAR); + + self.registers + .AUX_MU_IIR + .write(AUX_MU_IIR::RW_INT_ID::DisableInterrupt); + // set baudrate to 115200 self.registers .AUX_MU_BAUD .write(AUX_MU_BAUD::Baudrate.val(270)); + + self.registers + .AUX_MU_CNTL + .write(AUX_MU_CNTL::TX_RX_ENABLE::rxEnable + AUX_MU_CNTL::TX_RX_ENABLE::txEnable); } fn get_char(&self) -> char { @@ -242,4 +241,3 @@ impl interface::Write for Uart { self.inner.lock(|inner| fmt::Write::write_fmt(inner, args)) } } - diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index ebff742c3..523638657 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -44,7 +44,7 @@ unsafe fn kernel_init() -> ! { const MAXCHAR: usize = 1000; fn help() { - println!("Help : print this help menu"); + println!("help : print this help menu"); println!("hello : print Hello World!"); println!("reboot : reboot this device"); } @@ -59,33 +59,39 @@ unsafe fn interactiave_shell() -> ! { let mut array : [char; MAXCHAR] = ['\0'; MAXCHAR]; let mut cnt = 0; - print!("# "); loop { let c = bcm::UART.get_char(); if c == '\r' { println!(); - match &array[0..6] { - &['h', 'e', 'l', 'p', _] => { + ['h', 'e', 'l', 'p', _] => { help(); } - &[ 'h', 'e', 'l', 'l', 'o', _] => { + [ 'h', 'e', 'l', 'l', 'o', _] => { println!("Hello World!"); } - &[ 'r', 'e', 'b', 'o', 'o', 't'] => { + [ 'r', 'e', 'b', 'o', 'o', 't'] => { println!("Rebooting..."); reboot(); } _ => { - help(); + if cnt > 0 { + println!("Unknown command: {:?}", &array[0..cnt]); + help(); + } } } - print!("# "); + + print!("\r# "); cnt = 0; } else { print!("{}", c); array[cnt] = c; - cnt += 1; + if cnt < MAXCHAR - 1 { + cnt += 1; + } else { + cnt = 0; + } } } } diff --git a/rust-version/src/print.rs b/rust-version/src/print.rs index 72387635e..759d04cfc 100644 --- a/rust-version/src/print.rs +++ b/rust-version/src/print.rs @@ -35,6 +35,7 @@ macro_rules! print { macro_rules! println { () => ($crate::print!("\r\n")); ($($arg:tt)*) => ({ - $crate::print::_print(format_args_nl!($($arg)*)); + $crate::print::_print(format_args!($($arg)*)); + $crate::print::_print(format_args!("\r\n")); }) } From a01e6839f8d324a64cd1ce70ea91ca4cea10f530 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Thu, 14 Mar 2024 20:22:19 +0800 Subject: [PATCH 18/22] feat: add mailbox --- rust-version/src/bcm/common.rs | 2 + rust-version/src/bcm/gpio.rs | 6 +- rust-version/src/bcm/mailbox.rs | 171 ++++++++++++++++++++++++++++++++ rust-version/src/bcm/mod.rs | 13 ++- rust-version/src/main.rs | 31 +++++- 5 files changed, 214 insertions(+), 9 deletions(-) create mode 100644 rust-version/src/bcm/mailbox.rs diff --git a/rust-version/src/bcm/common.rs b/rust-version/src/bcm/common.rs index 1d459fa18..3f1092bcb 100644 --- a/rust-version/src/bcm/common.rs +++ b/rust-version/src/bcm/common.rs @@ -21,6 +21,7 @@ pub mod map { pub const GPIO_OFFSET: usize = 0x0020_0000; pub const UART_OFFSET: usize = 0x0021_5000; + pub const MAILBOX_OFFSET: usize = 0x0000_B880; /// Physical devices. pub mod mmio { @@ -29,6 +30,7 @@ pub mod map { pub const START: usize = 0x3F00_0000; pub const GPIO_START: usize = START + GPIO_OFFSET; pub const UART_START: usize = START + UART_OFFSET; + pub const MAILBOX_START: usize = START + MAILBOX_OFFSET; } } diff --git a/rust-version/src/bcm/gpio.rs b/rust-version/src/bcm/gpio.rs index b3637cb1d..8a3947566 100644 --- a/rust-version/src/bcm/gpio.rs +++ b/rust-version/src/bcm/gpio.rs @@ -118,7 +118,7 @@ struct GPIOInner { //-------------------------------------------------------------------------------------------------- /// Representation of the GPIO HW. -pub struct GPIO { +pub struct Gpio { inner: NullLock, } @@ -174,8 +174,8 @@ impl GPIOInner { //-------------------------------------------------------------------------------------------------- use synchronization::interface::Mutex; -impl GPIO { - pub const COMPATIBLE: &'static str = "BCM GPIO"; +impl Gpio { + // pub const COMPATIBLE: &'static str = "BCM GPIO"; /// Create an instance. /// diff --git a/rust-version/src/bcm/mailbox.rs b/rust-version/src/bcm/mailbox.rs new file mode 100644 index 000000000..e0d4921fa --- /dev/null +++ b/rust-version/src/bcm/mailbox.rs @@ -0,0 +1,171 @@ +use crate::println; +use crate::synchronization::interface::Mutex; +use crate::{bcm::common::MMIODerefWrapper, synchronization::NullLock}; +use aarch64_cpu::asm::nop; +use core::usize; +use tock_registers::{ + interfaces::{Readable, Writeable}, + register_bitfields, register_structs, + registers::ReadWrite, +}; + +// const MAILBOX_BASE: u32 = 0x3F00_B880; +// const MAILBOX_READ: u32 = MAILBOX_BASE + 0x00; +// const MAILBOX_STATUS: u32 = MAILBOX_BASE + 0x18; +// const MAILBOX_WRITE: u32 = MAILBOX_BASE + 0x20; + +// const MAILBOX_EMPTY: u32 = 0x4000_0000; +// const MAILBOX_FULL: u32 = 0x8000_0000; +// +// const GET_BOARD_REVISION: u32 = 0x0001_0002; + +const REQUEST_CODE: u32 = 0x0000_0000; +const REQUEST_SUCCEED: u32 = 0x8000_0000; +const REQUEST_FAILED: u32 = 0x8000_0001; +const TAG_REQUEST_CODE: u32 = 0x0000_0000; +const END_TAG: u32 = 0x0000_0000; + +#[derive(Copy, Clone)] +pub enum MailboxTag { + GetBoardRevision = 0x0001_0002, + GetArmMemory = 0x0001_0005, +} + +register_bitfields! { + u32, + + MBOX_READ [ + DATA OFFSET(0) NUMBITS(32) [] + ], + MBOX_POLL [ + DATA OFFSET(0) NUMBITS(32) [] + ], + MBOX_SENDER [ + DATA OFFSET(0) NUMBITS(32) [] + ], + MBOX_STATUS [ + DATA OFFSET(0) NUMBITS(32) [ + FULL = 0x8000_0000, + EMPTY = 0x4000_0000 + ], + ], + MBOX_CONFIG [ + DATA OFFSET(0) NUMBITS(32) [] + ], + MBOX_WRITE [ + DATA OFFSET(0) NUMBITS(32) [] + ] +} + +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => MBOC_READ: ReadWrite), + (0x04 => _reserved1), + (0x10 => MBOC_POLL: ReadWrite), + (0x14 => MBOC_SENDER: ReadWrite), + (0x18 => MBOC_STATUS: ReadWrite), + (0x1C => MBOC_CONFIG: ReadWrite), + (0x20 => MBOC_WRITE: ReadWrite), + (0x24 => @END), + } +} + +type Registers = MMIODerefWrapper; + +struct MailboxInner { + registers: Registers, +} + +#[repr(C)] +struct MailboxMsg { + buffer: [u32; 8], +} + +impl MailboxInner { + const unsafe fn new(mmio_start_addr: usize) -> Self { + Self { + registers: MMIODerefWrapper::new(mmio_start_addr), + } + } + + fn call(&mut self, mailbox: &mut [u32]) { + let mut mailbox_addr = mailbox.as_ptr() as u32; + // last 4 bits must be 8(channel number 8) + mailbox_addr = mailbox_addr & !0xF | 8; + + // wait until mailbox is not full + while self + .registers + .MBOC_STATUS + .matches_all(MBOX_STATUS::DATA::FULL) + { + nop(); + } + + // write the address of the mailbox + self.registers + .MBOC_WRITE + .write(MBOX_WRITE::DATA.val(mailbox_addr)); + + // wait until mailbox is get our address + loop { + while self + .registers + .MBOC_STATUS + .matches_all(MBOX_STATUS::DATA::EMPTY) + { + nop(); + } + + if self.registers.MBOC_READ.read(MBOX_READ::DATA) == mailbox_addr { + break; + } + } + } + + pub fn get_msg(&mut self, tag: MailboxTag) -> (u32, u32) { + println!("get_msg"); + let mut mailbox = MailboxMsg { buffer: [0; 8] }; + + let mut mailbox_ptr = mailbox.buffer.as_ptr(); + + match tag { + MailboxTag::GetBoardRevision => { + mailbox.buffer[0] = 7 * 4; // buffer size in bytes + mailbox.buffer[3] = 4; // maximum of request and response value buffer's length. + } + MailboxTag::GetArmMemory => { + mailbox.buffer[0] = 8 * 4; // buffer size in bytes + mailbox.buffer[3] = 8; // maximum of request and response value buffer's length. + } + } + mailbox.buffer[1] = REQUEST_CODE; + mailbox.buffer[2] = tag as u32; // tag identifier + mailbox.buffer[4] = TAG_REQUEST_CODE; + mailbox.buffer[5] = 0; // value buffer + mailbox.buffer[6] = END_TAG; + + self.call(&mut mailbox.buffer); + match tag { + MailboxTag::GetBoardRevision => (mailbox.buffer[5], 0), + MailboxTag::GetArmMemory => (mailbox.buffer[5], mailbox.buffer[6]), + } + } +} + +pub struct Mailbox { + inner: NullLock, +} + +impl Mailbox { + pub const unsafe fn new(base_addr: usize) -> Self { + Self { + inner: NullLock::new(MailboxInner::new(base_addr)), + } + } + + pub fn get(&self, tag: MailboxTag) -> (u32, u32) { + self.inner.lock(|inner| inner.get_msg(tag)) + } +} diff --git a/rust-version/src/bcm/mod.rs b/rust-version/src/bcm/mod.rs index c73ad7492..4589afba6 100644 --- a/rust-version/src/bcm/mod.rs +++ b/rust-version/src/bcm/mod.rs @@ -2,18 +2,23 @@ // Public Definitions //-------------------------------------------------------------------------------------------------- -pub mod uart; pub mod common; pub mod gpio; +pub mod mailbox; +pub mod uart; -use crate::bcm::{ common::map, uart::Uart, gpio::GPIO }; +use crate::{ + bcm::{common::map, gpio::Gpio, mailbox::Mailbox as my_mailbox, uart::Uart}, + println, +}; //-------------------------------------------------------------------------------------------------- // Global instances // ------------------------------------------------------------------------------------------------- pub static UART: Uart = unsafe { Uart::new(map::mmio::UART_START) }; -pub static GPIO: GPIO = unsafe { GPIO::new(map::mmio::GPIO_START) }; +pub static GPIO: Gpio = unsafe { Gpio::new(map::mmio::GPIO_START) }; +pub static MAILBOX: my_mailbox = unsafe { my_mailbox::new(map::mmio::MAILBOX_START) }; //-------------------------------------------------------------------------------------------------- // Public Code @@ -22,4 +27,6 @@ pub static GPIO: GPIO = unsafe { GPIO::new(map::mmio::GPIO_START) }; pub fn hardware_init() { GPIO.init(); UART.init(); + let (val, _) = MAILBOX.get(mailbox::MailboxTag::GetBoardRevision); + println!("Board revision(loading): {:x}", val); } diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs index 523638657..cd7f7f6d6 100644 --- a/rust-version/src/main.rs +++ b/rust-version/src/main.rs @@ -5,7 +5,7 @@ #![no_main] #![no_std] -use core::arch::global_asm; +use core::{arch::global_asm, ptr::write_volatile}; mod bcm; mod console; @@ -46,13 +46,34 @@ const MAXCHAR: usize = 1000; fn help() { println!("help : print this help menu"); println!("hello : print Hello World!"); + println!("board : print board rev"); println!("reboot : reboot this device"); } unsafe fn reboot() { println!("Rebooting..."); - // use core::arch::asm; - // asm!("b 0x80000") + reset(100); +} + +const PM_PASSWORD: u32 = 0x5a000000; +const PM_RSTC: u32 = 0x3F10_001C; +const PM_WDOG: u32 = 0x3F10_0024; + +pub fn reset(tick: u32) { + unsafe { + let mut r = PM_PASSWORD | 0x20; + write_volatile(PM_RSTC as *mut u32, r); + r = PM_PASSWORD | tick; + write_volatile(PM_WDOG as *mut u32, r); + } +} + +pub fn cancel_reset() { + unsafe { + let mut r = PM_PASSWORD | 0; + write_volatile(PM_RSTC as *mut u32, r); + write_volatile(PM_WDOG as *mut u32, r); + } } unsafe fn interactiave_shell() -> ! { @@ -74,6 +95,10 @@ unsafe fn interactiave_shell() -> ! { println!("Rebooting..."); reboot(); } + ['b', 'o', 'a', 'r', 'd', _] => { + let (board, _) = bcm::MAILBOX.get(bcm::mailbox::MailboxTag::GetBoardRevision); + println!("Board revision: {:x}", board); + } _ => { if cnt > 0 { println!("Unknown command: {:?}", &array[0..cnt]); From e17f3d4e5657fd3230b4339a06505c6f8b753e8f Mon Sep 17 00:00:00 2001 From: Teng Date: Thu, 14 Mar 2024 17:59:15 +0800 Subject: [PATCH 19/22] Lab1 --- lab1/.gitignore | 2 + lab1/Makefile | 40 +++++++++++++ lab1/README.md | 22 +++++++ lab1/header/gpio.h | 21 +++++++ lab1/header/mailbox.h | 38 ++++++++++++ lab1/header/reboot.h | 8 +++ lab1/header/shell.h | 1 + lab1/header/uart.h | 20 +++++++ lab1/header/utils.h | 1 + lab1/linker.ld | 19 ++++++ lab1/mailbox.c | 54 ++++++++++++++++++ lab1/main.c | 13 +++++ lab1/reboot.c | 16 ++++++ lab1/shell.c | 77 +++++++++++++++++++++++++ lab1/start.S | 50 ++++++++++++++++ lab1/uart.c | 130 ++++++++++++++++++++++++++++++++++++++++++ lab1/utils.c | 21 +++++++ 17 files changed, 533 insertions(+) create mode 100644 lab1/.gitignore create mode 100644 lab1/Makefile create mode 100644 lab1/README.md create mode 100644 lab1/header/gpio.h create mode 100644 lab1/header/mailbox.h create mode 100644 lab1/header/reboot.h create mode 100644 lab1/header/shell.h create mode 100644 lab1/header/uart.h create mode 100644 lab1/header/utils.h create mode 100644 lab1/linker.ld create mode 100644 lab1/mailbox.c create mode 100644 lab1/main.c create mode 100644 lab1/reboot.c create mode 100644 lab1/shell.c create mode 100644 lab1/start.S create mode 100644 lab1/uart.c create mode 100644 lab1/utils.c diff --git a/lab1/.gitignore b/lab1/.gitignore new file mode 100644 index 000000000..c5439f6ca --- /dev/null +++ b/lab1/.gitignore @@ -0,0 +1,2 @@ +__MACOSX +.DS_Store diff --git a/lab1/Makefile b/lab1/Makefile new file mode 100644 index 000000000..fd6e6dddf --- /dev/null +++ b/lab1/Makefile @@ -0,0 +1,40 @@ +# Define the compiler and utilities +CC := aarch64-elf-gcc +OBJCOPY := aarch64-elf-objcopy + +# Compiler flags +# Assuming your project's structure includes directories like 'include' and 'peripheral' at the root level +CFLAGS := -Wall -Wextra -Wpedantic -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles -Iinclude -Iperipheral + +# Automatically find all source and assembly files in the current directory and subdirectories +# Note: Update the paths as necessary if your .c and .S files are located in subdirectories +SRCS := $(wildcard *.c) $(wildcard */*.c) +ASMS := $(wildcard *.S) $(wildcard */*.S) +# Convert source filenames to object filenames +OBJS := $(SRCS:.c=.o) $(ASMS:.S=.o) + +# Default target: build the kernel image +all: kernel8.img + +# From ELF to Kernel Image +# Convert the ELF file to a binary kernel image +kernel8.img: kernel8.elf + $(OBJCOPY) -O binary $< $@ + +# From Object Files to ELF +# Link object files into an ELF executable +kernel8.elf: $(OBJS) linker.ld + $(CC) -T linker.ld -o $@ $(OBJS) $(CFLAGS) + +# From Source Code to Object Files +# Compile C source files to object files +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +# Compile assembly source files to object files +%.o: %.S + $(CC) $(CFLAGS) -c $< -o $@ + +# Clean up generated files +clean: + rm -f *.o *.elf *.img diff --git a/lab1/README.md b/lab1/README.md new file mode 100644 index 000000000..94fd1bdf2 --- /dev/null +++ b/lab1/README.md @@ -0,0 +1,22 @@ +# OSC2023 + +| Github Account | Student ID | Name | +|----------------|------------|---------------| +| foodieteng | A121164 | Chun-Teng Chang | + +## Requirements + +* a cross-compiler for aarch64 +* (optional) qemu-system-arm + +## Build + +``` +make +``` + +## Test With QEMU + +``` +qemu-system-aarch64 -M raspi3b -serial null -serial stdio -display none -kernel kernel8.img +``` diff --git a/lab1/header/gpio.h b/lab1/header/gpio.h new file mode 100644 index 000000000..07d76020a --- /dev/null +++ b/lab1/header/gpio.h @@ -0,0 +1,21 @@ +//Page 90, Physical/bus addr diff +#define MMIO_BASE 0x3F000000 + +#define GPFSEL0 ((volatile unsigned int*)(MMIO_BASE+0x00200000)) +#define GPFSEL1 ((volatile unsigned int*)(MMIO_BASE+0x00200004)) +#define GPFSEL2 ((volatile unsigned int*)(MMIO_BASE+0x00200008)) +#define GPFSEL3 ((volatile unsigned int*)(MMIO_BASE+0x0020000C)) +#define GPFSEL4 ((volatile unsigned int*)(MMIO_BASE+0x00200010)) +#define GPFSEL5 ((volatile unsigned int*)(MMIO_BASE+0x00200014)) +#define GPSET0 ((volatile unsigned int*)(MMIO_BASE+0x0020001C)) +#define GPSET1 ((volatile unsigned int*)(MMIO_BASE+0x00200020)) +#define GPCLR0 ((volatile unsigned int*)(MMIO_BASE+0x00200028)) +#define GPLEV0 ((volatile unsigned int*)(MMIO_BASE+0x00200034)) +#define GPLEV1 ((volatile unsigned int*)(MMIO_BASE+0x00200038)) +#define GPEDS0 ((volatile unsigned int*)(MMIO_BASE+0x00200040)) +#define GPEDS1 ((volatile unsigned int*)(MMIO_BASE+0x00200044)) +#define GPHEN0 ((volatile unsigned int*)(MMIO_BASE+0x00200064)) +#define GPHEN1 ((volatile unsigned int*)(MMIO_BASE+0x00200068)) +#define GPPUD ((volatile unsigned int*)(MMIO_BASE+0x00200094)) +#define GPPUDCLK0 ((volatile unsigned int*)(MMIO_BASE+0x00200098)) +#define GPPUDCLK1 ((volatile unsigned int*)(MMIO_BASE+0x0020009C)) diff --git a/lab1/header/mailbox.h b/lab1/header/mailbox.h new file mode 100644 index 000000000..575d7c3e6 --- /dev/null +++ b/lab1/header/mailbox.h @@ -0,0 +1,38 @@ +#include "gpio.h" + +extern volatile unsigned int mailbox[36]; + +#define MBOX_REQUEST 0 + +/* channels */ +#define MBOX_CH_POWER 0 +#define MBOX_CH_FB 1 +#define MBOX_CH_VUART 2 +#define MBOX_CH_VCHIQ 3 +#define MBOX_CH_LEDS 4 +#define MBOX_CH_BTNS 5 +#define MBOX_CH_TOUCH 6 +#define MBOX_CH_COUNT 7 +#define MBOX_CH_PROP 8 + +/* tags */ +#define TAG_REQUEST_CODE 0x00000000 +#define MBOX_TAG_GETSERIAL 0x00010004 +#define MBOX_TAG_GETBOARD 0x00010002 +#define MBOX_TAG_GETARMMEM 0x00010005 +#define MBOX_TAG_LAST 0x00000000 + +int mailbox_call(); +int get_board_revision(); +int get_arm_mem(); + +#define VIDEOCORE_MBOX (MMIO_BASE+0x0000B880) +#define MBOX_READ ((volatile unsigned int*)(VIDEOCORE_MBOX+0x0)) +#define MBOX_POLL ((volatile unsigned int*)(VIDEOCORE_MBOX+0x10)) +#define MBOX_SENDER ((volatile unsigned int*)(VIDEOCORE_MBOX+0x14)) +#define MBOX_STATUS ((volatile unsigned int*)(VIDEOCORE_MBOX+0x18)) +#define MBOX_CONFIG ((volatile unsigned int*)(VIDEOCORE_MBOX+0x1C)) +#define MBOX_WRITE ((volatile unsigned int*)(VIDEOCORE_MBOX+0x20)) +#define MBOX_RESPONSE 0x80000000 +#define MBOX_FULL 0x80000000 +#define MBOX_EMPTY 0x40000000 diff --git a/lab1/header/reboot.h b/lab1/header/reboot.h new file mode 100644 index 000000000..e1d44aa1b --- /dev/null +++ b/lab1/header/reboot.h @@ -0,0 +1,8 @@ +#define PM_PASSWORD 0x5a000000 +#define PM_RSTC 0x3F10001c +#define PM_WDOG 0x3F100024 + + +void set(long addr, unsigned int value); +void reset(int tick); +void cancel_reset(); diff --git a/lab1/header/shell.h b/lab1/header/shell.h new file mode 100644 index 000000000..f5cc98ca7 --- /dev/null +++ b/lab1/header/shell.h @@ -0,0 +1 @@ +void shell(); diff --git a/lab1/header/uart.h b/lab1/header/uart.h new file mode 100644 index 000000000..537b360be --- /dev/null +++ b/lab1/header/uart.h @@ -0,0 +1,20 @@ +#include "gpio.h" + +void uart_init(); +void uart_send_char(unsigned int c); +char uart_get_char(); +void uart_send_string(char* s); +void uart_binary_to_hex(unsigned int d); + +#define AUX_ENABLE ((volatile unsigned int*)(MMIO_BASE+0x00215004)) +#define AUX_MU_IO ((volatile unsigned int*)(MMIO_BASE+0x00215040)) +#define AUX_MU_IER ((volatile unsigned int*)(MMIO_BASE+0x00215044)) +#define AUX_MU_IIR ((volatile unsigned int*)(MMIO_BASE+0x00215048)) +#define AUX_MU_LCR ((volatile unsigned int*)(MMIO_BASE+0x0021504C)) +#define AUX_MU_MCR ((volatile unsigned int*)(MMIO_BASE+0x00215050)) +#define AUX_MU_LSR ((volatile unsigned int*)(MMIO_BASE+0x00215054)) +#define AUX_MU_MSR ((volatile unsigned int*)(MMIO_BASE+0x00215058)) +#define AUX_MU_SCRATCH ((volatile unsigned int*)(MMIO_BASE+0x0021505C)) +#define AUX_MU_CNTL ((volatile unsigned int*)(MMIO_BASE+0x00215060)) +#define AUX_MU_STAT ((volatile unsigned int*)(MMIO_BASE+0x00215064)) +#define AUX_MU_BAUD ((volatile unsigned int*)(MMIO_BASE+0x00215068)) diff --git a/lab1/header/utils.h b/lab1/header/utils.h new file mode 100644 index 000000000..6a31bc1da --- /dev/null +++ b/lab1/header/utils.h @@ -0,0 +1 @@ +int string_compare(const char* i, const char* j); diff --git a/lab1/linker.ld b/lab1/linker.ld new file mode 100644 index 000000000..066df7b90 --- /dev/null +++ b/lab1/linker.ld @@ -0,0 +1,19 @@ +SECTIONS +{ + . = 0x80000; + .text : { KEEP(*(.text.boot)) *(.text .text.* .gnu.linkonce.t*) } + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r*) } + PROVIDE(_data = .); + .data : { *(.data .data.* .gnu.linkonce.d*) } + .bss (NOLOAD) : { + . = ALIGN(16); + __bss_start = .; + *(.bss .bss.*) + *(COMMON) + __bss_end = .; + } + _end = .; + + /DISCARD/ : { *(.comment) *(.gnu*) *(.note*) *(.eh_frame*) } +} +__bss_size = (__bss_end - __bss_start)>>3; diff --git a/lab1/mailbox.c b/lab1/mailbox.c new file mode 100644 index 000000000..eb08d245d --- /dev/null +++ b/lab1/mailbox.c @@ -0,0 +1,54 @@ +#include "header/mailbox.h" + +volatile unsigned int __attribute__((aligned(16))) mailbox[36]; + +int mailbox_call() { + unsigned int r = (unsigned int)(((unsigned long)&mailbox) & (~0xF)) | (0x8 & 0xF); + // wait until full flag unset + while (*MBOX_STATUS & MBOX_FULL) { + } + // write address of message + channel to mailbox + *MBOX_WRITE = r; + // wait until response + while (1) { + // wait until empty flag unset + while (*MBOX_STATUS & MBOX_EMPTY) { + } + // is it a response to our msg? + if (r == *MBOX_READ) { + // check is response success + return mailbox[1] == MBOX_RESPONSE; + } + } + return 0; +} + + + +int get_board_revision(){ + mailbox[0] = 7 * 4; // buffer size in bytes + mailbox[1] = MBOX_REQUEST; + // tags begin + mailbox[2] = MBOX_TAG_GETBOARD; // tag identifier + mailbox[3] = 4; // maximum of request and response value buffer's length. + mailbox[4] = TAG_REQUEST_CODE; + mailbox[5] = 0; // value buffer + // tags end + mailbox[6] = MBOX_TAG_LAST; + return mailbox_call(MBOX_CH_PROP); // message passing procedure call, we should implement it following the 6 steps provided above. +} + + +int get_arm_mem(){ + mailbox[0] = 8 * 4; // buffer size in bytes + mailbox[1] = MBOX_REQUEST; + // tags begin + mailbox[2] = MBOX_TAG_GETARMMEM; // tag identifier + mailbox[3] = 8; // maximum of request and response value buffer's length. + mailbox[4] = TAG_REQUEST_CODE; + mailbox[5] = 0; // value buffer + mailbox[6] = 0; // value buffer + // tags end + mailbox[7] = MBOX_TAG_LAST; + return mailbox_call(MBOX_CH_PROP); // message passing procedure call, we should implement it following the 6 steps provided above. +} diff --git a/lab1/main.c b/lab1/main.c new file mode 100644 index 000000000..114d5dbae --- /dev/null +++ b/lab1/main.c @@ -0,0 +1,13 @@ +#include "header/uart.h" +#include "header/shell.h" + +void main() +{ + //sasd; + // set up serial console + uart_init(); + // say hello + uart_send_string("Type in `help` to get instruction menu!\n"); + // echo everything back + shell(); +} diff --git a/lab1/reboot.c b/lab1/reboot.c new file mode 100644 index 000000000..048f2d348 --- /dev/null +++ b/lab1/reboot.c @@ -0,0 +1,16 @@ +#include "header/reboot.h" + +void set(long addr, unsigned int value) { + volatile unsigned int* point = (unsigned int*)addr; + *point = value; +} + +void reset(int tick) { // reboot after watchdog timer expire + set(PM_RSTC, PM_PASSWORD | 0x20); // full reset + set(PM_WDOG, PM_PASSWORD | tick); // number of watchdog tick +} + +void cancel_reset() { + set(PM_RSTC, PM_PASSWORD | 0); // full reset + set(PM_WDOG, PM_PASSWORD | 0); // number of watchdog tick +} diff --git a/lab1/shell.c b/lab1/shell.c new file mode 100644 index 000000000..a8c8b8b26 --- /dev/null +++ b/lab1/shell.c @@ -0,0 +1,77 @@ +#include "header/shell.h" +#include "header/uart.h" +#include "header/utils.h" +#include "header/mailbox.h" +#include "header/reboot.h" + +void shell() { + char array_space[256]; // Buffer for user input + char* input_string = array_space; // Pointer to the start of the input buffer + + while (1) { + uart_send_string("# "); // Display the shell prompt + + // Initialize input buffer to zero + for (int i = 0; i < (int)sizeof(array_space); i++) { + array_space[i] = 0; + } + + char c; + // Pointer for the current position being written to in the buffer + char* input_ptr = input_string; + + // Read characters until a newline is received + while (1) { + c = uart_get_char(); // Read a character from UART + + if (c == '\n') { + *input_ptr = '\0'; // Null-terminate the input string + uart_send_string("\r\n"); + break; // Exit the loop to process the command + } else if ((c == '\b' || c == 0x7F) && input_ptr > input_string) { + // Handle backspace, only if cursor is not at the beginning + input_ptr--; // Move cursor back + uart_send_string("\b \b"); // Reflect backspace on terminal + } else if (c >= 32 && c < 127 && (int)(input_ptr - input_string) < (int)sizeof(array_space) - 1) { + // If the character is printable and there is space in the buffer, echo it and store it + uart_send_char(c); + *input_ptr++ = c; + } + } + + // Command processing + if (string_compare(input_string, "help") == 0) { + uart_send_string("help : print this help menu\r\n"); + uart_send_string("hello : print Hello World!\r\n"); + uart_send_string("info : get the hardware's information\r\n"); + uart_send_string("reboot : reboot the device\r\n"); + } else if (string_compare(input_string, "hello") == 0) { + uart_send_string("Hello World!\r\n"); + } else if (string_compare(input_string, "info") == 0) { + if (get_board_revision() != 0) { + uart_send_string("Board revision: "); + uart_binary_to_hex(mailbox[5]); + uart_send_string("\r\n"); + } else { + uart_send_string("Unable to query board revision.\r\n"); + } + if (get_arm_mem() != 0) { + uart_send_string("ARM memory base address: "); + uart_binary_to_hex(mailbox[5]); + uart_send_string("\r\n"); + uart_send_string("ARM memory size: "); + uart_binary_to_hex(mailbox[6]); + uart_send_string("\r\n"); + } else { + uart_send_string("Unable to query ARM memory.\r\n"); + } + } else if (string_compare(input_string, "reboot") == 0) { + uart_send_string("Rebooting...\r\n"); + reset(1000); // Invoke reboot functionality + } else { + uart_send_string("Unknown command: "); + uart_send_string(input_string); + uart_send_string("\r\n"); + } + } +} diff --git a/lab1/start.S b/lab1/start.S new file mode 100644 index 000000000..fbd44d384 --- /dev/null +++ b/lab1/start.S @@ -0,0 +1,50 @@ +.section ".text.boot" // Define a section named ".text.boot", typically for boot code. + +.global _start // Make the label '_start' globally visible, entry point for the linker. + +_start: // The entry point of the code. + // read cpu id, stop slave cores + mrs x1, mpidr_el1 // Move the value of MPIDR_EL1 (Multiprocessor Affinity Register) + // into x1. This register holds the CPU's unique ID. + and x1, x1, #3 // Perform an AND operation on x1 with 3 (0b11) to isolate + // the lowest two bits of the MPIDR. These bits represent + // the CPU core ID within a CPU cluster. + + cbz x1, setting // Compare x1 to zero. If it is zero (meaning this is core 0), + // continue to 'setting'. Otherwise, proceed to the next instruction. + + // cpu id > 0, stop +halt: wfe // Wait for Event. Puts the processor in a low-power state until + // an event or interrupt occurs. + b halt // Unconditional branch to 'halt', creating an infinite loop + // that effectively stops the CPU core. + +setting: ldr x1, =_start // Load the address of '_start' into x1. This is typically + // used to set up the stack pointer. + + mov sp, x1 // Move the value of x1 into the stack pointer register (sp). + // This sets up the stack at the start of the boot section. + + ldr x1, =__bss_start // Load the address of the start of the BSS section + // into x1. BSS is used for zero-initialized variables. + + ldr w2, =__bss_size // Load the size of the BSS section into w2. + +clear_bss: cbz w2, kernel_main // Compare w2 to zero. If zero, all of BSS is cleared, + // jump to 'kernel_main'. Otherwise, continue to clear BSS. + + str xzr,[x1],#8 // Store the value in xzr (zero register) at the address in x1, + // then increment x1 by 8 bytes. This clears 8 bytes of BSS. + + sub w2, w2, #1 // Subtract 1 from w2. Since w2 holds the size of the BSS + // in 8-byte units, this decrements the counter. + + cbnz w2, clear_bss // Compare w2 with zero. If not zero, more of BSS needs clearing, + // so branch back to 'clear_bss'. + +kernel_main: bl main // Branch with link to 'main'. This is where the main + // application or kernel initialization code begins. + // 'bl' stores the return address in the link register (lr). + + b halt // Unconditional branch to 'halt'. If 'main' returns, + // stop the CPU core by entering the halt state. diff --git a/lab1/uart.c b/lab1/uart.c new file mode 100644 index 000000000..e7470806b --- /dev/null +++ b/lab1/uart.c @@ -0,0 +1,130 @@ +#include "header/uart.h" + +/** + * Set baud rate and characteristics (115200 8N1) and map to GPIO + */ +void uart_init() +{ + register unsigned int r; + //Since We've set alt5, we want to disable basic input/output + //To achieve this, we need diable pull-up and pull-dwon + *GPPUD = 0; // P101 top. 00- = off - disable pull-up/down + //Wait 150 cycles + //this provides the required set-up time for the control signal + r=150; while(r--) { asm volatile("nop"); } + // GPIO control 54 pins + // GPPUDCLK0 controls 0-31 pins + // GPPUDCLK1 controls 32-53 pins + // set 14,15 bits = 1 which means we will modify these two bits + // trigger: set pins to 1 and wait for one clock + *GPPUDCLK0 = (1<<14)|(1<<15); + r=150; while(r--) { asm volatile("nop"); } + *GPPUDCLK0 = 0; // flush GPIO setup + + + r=500; while(r--) { asm volatile("nop"); } + + /* initialize UART */ + *AUX_ENABLE |=1; + //P.9: If set the mini UART is enabled. The UART will + //immediately start receiving data, especially if the + //UART1_RX line is low. + //If clear the mini UART is disabled. That also disables + //any mini UART register access + *AUX_MU_CNTL = 0; + //P.17 If this bit is set the mini UART receiver is enabled. + //If this bit is clear the mini UART receiver is disabled + //Prevent data exchange in initialization process + *AUX_MU_IER = 0; + //Set AUX_MU_IER_REG to 0. + //Disable interrupt because currently you don’t need interrupt. + *AUX_MU_LCR = 3; + //P.14: 00 : the UART works in 7-bit mode + //11(3) : the UART works in 8-bit mode + //Cause 8 bits can use in ASCII, Unicode, Char + *AUX_MU_MCR = 0; + //Don’t need auto flow control. + //AUX_MU_MCR is for basic serial communication. Don't be too smart + *AUX_MU_BAUD = 270; + //set BAUD rate to 115200(transmit speed) + //so we need set AUX_MU_BAUD to 270 to meet the goal + *AUX_MU_IIR = 0xc6; + // bit 6 bit 7 No FIFO. Sacrifice reliability(buffer) to get low latency // 0xc6 = 11000110 + // Writing with bit 1 set will clear the receive FIFO + // Writing with bit 2 set will clear the transmit FIFO + // Both bits always read as 1 as the FIFOs are always enabled + /* map UART1 to GPIO pins */ + *AUX_MU_CNTL = 3; // enable Transmitter,Receiver + + // P.104 Since I need UART 1 Transmit/Receive Data -> TXD1/RXD1 + // p.102 I find These two in GPIO 14/15 Fun5 + // Since each GPFSEL controls 10 pin, GPFSEL1 controls 10-19 + // That's why I need GPFSEL1 + r=*GPFSEL1; + r&=~((7<<12)|(7<<15)); // gpio14, gpio15 clear to 0 + r|=(2<<12)|(2<<15); // set gpio14 and 15 to 010/010 which is alt5 + *GPFSEL1 = r; // from here activate Trasmitter&Receiver +} + + +/** + * Send a character + */ +void uart_send_char(unsigned int c) { + /* wait until we can send */ + // P.15 AUX_MU_LSR register shows the data(line) status + // AUX_MU_LSR bit 5 => 0x20 = 00100000 + // bit 5 is set if the transmit FIFO can accept at least one byte. + // &0x20 can preserve 5th bit, if bit 5 set 1 can get !true = false leave loop + // else FIFO can not accept at lease one byte then still wait + do{asm volatile("nop");}while(!(*AUX_MU_LSR&0x20)); + /* write the character to the buffer */ + //P.11 The AUX_MU_IO_REG register is primary used to write data to and read data from the + //UART FIFOs. + //communicate with(send to) the minicom and print to the screen + *AUX_MU_IO=c; +} + +/** + * Receive a character + */ +char uart_get_char() { + char r; + /* wait until something is in the buffer */ + //bit 0 is set if the receive FIFO holds at least 1 symbol. + do{asm volatile("nop");}while(!(*AUX_MU_LSR&0x01)); + /* read it and return */ + r=(char)(*AUX_MU_IO); + /* convert carriage return to newline */ + return r=='\r'?'\n':r; +} + +/** + * Display a string + */ +void uart_send_string(char* s) { + while(*s) { + /* convert newline to carriage return + newline */ + if(*s=='\n') + uart_send_char('\r'); + uart_send_char(*s++); + } +} + +/** + * Display a binary value in hexadecimal + */ +void uart_binary_to_hex(unsigned int d) { + unsigned int n; + int c; + uart_send_string("0x"); + for(c=28;c>=0;c-=4) { + // get highest tetrad + n=(d>>c)&0xF; + // 0-9 => '0'-'9', 10-15 => 'A'-'F' + n+=n>9?0x37:0x30; + uart_send_char(n); + } +} + + diff --git a/lab1/utils.c b/lab1/utils.c new file mode 100644 index 000000000..803df781c --- /dev/null +++ b/lab1/utils.c @@ -0,0 +1,21 @@ +#include "header/utils.h" + +int string_compare(const char* str1, const char* str2) { + // Compare characters until reaching the end of either string or a newline in str1 + while (*str1 && *str1 != '\n' && *str2) { + if (*str1 != *str2) { + // If characters differ, return the difference between them + return (*(const unsigned char*)str1 - *(const unsigned char*)str2); + } + str1++; + str2++; + } + + // If we reached a newline in str1, consider it equivalent to the end of the string + if (*str1 == '\n') { + str1++; + } + + // If both strings end at the same position, they are equal; otherwise, return the difference + return (*(const unsigned char*)str1 - *(const unsigned char*)str2); +} From 29c3c7dcde1444c3b12f4b50872ecce1306952d9 Mon Sep 17 00:00:00 2001 From: efficacy38 Date: Thu, 14 Mar 2024 21:01:50 +0800 Subject: [PATCH 20/22] fix: memory alignment --- rust-version/src/bcm/mailbox.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/rust-version/src/bcm/mailbox.rs b/rust-version/src/bcm/mailbox.rs index e0d4921fa..5587d5304 100644 --- a/rust-version/src/bcm/mailbox.rs +++ b/rust-version/src/bcm/mailbox.rs @@ -77,7 +77,7 @@ struct MailboxInner { registers: Registers, } -#[repr(C)] +#[repr(C, align(16))] struct MailboxMsg { buffer: [u32; 8], } @@ -127,9 +127,6 @@ impl MailboxInner { pub fn get_msg(&mut self, tag: MailboxTag) -> (u32, u32) { println!("get_msg"); let mut mailbox = MailboxMsg { buffer: [0; 8] }; - - let mut mailbox_ptr = mailbox.buffer.as_ptr(); - match tag { MailboxTag::GetBoardRevision => { mailbox.buffer[0] = 7 * 4; // buffer size in bytes From 9d18fba984fda8b8a499e5a1d544ac782cdda4d8 Mon Sep 17 00:00:00 2001 From: kaijhsu Date: Thu, 28 Mar 2024 10:16:37 +0800 Subject: [PATCH 21/22] Revert "A121163 lab1" --- lab1/.gitignore | 2 - lab1/Makefile | 40 ------------- lab1/README.md | 22 ------- lab1/header/gpio.h | 21 ------- lab1/header/mailbox.h | 38 ------------ lab1/header/reboot.h | 8 --- lab1/header/shell.h | 1 - lab1/header/uart.h | 20 ------- lab1/header/utils.h | 1 - lab1/linker.ld | 19 ------ lab1/mailbox.c | 54 ------------------ lab1/main.c | 13 ----- lab1/reboot.c | 16 ------ lab1/shell.c | 77 ------------------------- lab1/start.S | 50 ---------------- lab1/uart.c | 130 ------------------------------------------ lab1/utils.c | 21 ------- 17 files changed, 533 deletions(-) delete mode 100644 lab1/.gitignore delete mode 100644 lab1/Makefile delete mode 100644 lab1/README.md delete mode 100644 lab1/header/gpio.h delete mode 100644 lab1/header/mailbox.h delete mode 100644 lab1/header/reboot.h delete mode 100644 lab1/header/shell.h delete mode 100644 lab1/header/uart.h delete mode 100644 lab1/header/utils.h delete mode 100644 lab1/linker.ld delete mode 100644 lab1/mailbox.c delete mode 100644 lab1/main.c delete mode 100644 lab1/reboot.c delete mode 100644 lab1/shell.c delete mode 100644 lab1/start.S delete mode 100644 lab1/uart.c delete mode 100644 lab1/utils.c diff --git a/lab1/.gitignore b/lab1/.gitignore deleted file mode 100644 index c5439f6ca..000000000 --- a/lab1/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -__MACOSX -.DS_Store diff --git a/lab1/Makefile b/lab1/Makefile deleted file mode 100644 index fd6e6dddf..000000000 --- a/lab1/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# Define the compiler and utilities -CC := aarch64-elf-gcc -OBJCOPY := aarch64-elf-objcopy - -# Compiler flags -# Assuming your project's structure includes directories like 'include' and 'peripheral' at the root level -CFLAGS := -Wall -Wextra -Wpedantic -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles -Iinclude -Iperipheral - -# Automatically find all source and assembly files in the current directory and subdirectories -# Note: Update the paths as necessary if your .c and .S files are located in subdirectories -SRCS := $(wildcard *.c) $(wildcard */*.c) -ASMS := $(wildcard *.S) $(wildcard */*.S) -# Convert source filenames to object filenames -OBJS := $(SRCS:.c=.o) $(ASMS:.S=.o) - -# Default target: build the kernel image -all: kernel8.img - -# From ELF to Kernel Image -# Convert the ELF file to a binary kernel image -kernel8.img: kernel8.elf - $(OBJCOPY) -O binary $< $@ - -# From Object Files to ELF -# Link object files into an ELF executable -kernel8.elf: $(OBJS) linker.ld - $(CC) -T linker.ld -o $@ $(OBJS) $(CFLAGS) - -# From Source Code to Object Files -# Compile C source files to object files -%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ - -# Compile assembly source files to object files -%.o: %.S - $(CC) $(CFLAGS) -c $< -o $@ - -# Clean up generated files -clean: - rm -f *.o *.elf *.img diff --git a/lab1/README.md b/lab1/README.md deleted file mode 100644 index 94fd1bdf2..000000000 --- a/lab1/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# OSC2023 - -| Github Account | Student ID | Name | -|----------------|------------|---------------| -| foodieteng | A121164 | Chun-Teng Chang | - -## Requirements - -* a cross-compiler for aarch64 -* (optional) qemu-system-arm - -## Build - -``` -make -``` - -## Test With QEMU - -``` -qemu-system-aarch64 -M raspi3b -serial null -serial stdio -display none -kernel kernel8.img -``` diff --git a/lab1/header/gpio.h b/lab1/header/gpio.h deleted file mode 100644 index 07d76020a..000000000 --- a/lab1/header/gpio.h +++ /dev/null @@ -1,21 +0,0 @@ -//Page 90, Physical/bus addr diff -#define MMIO_BASE 0x3F000000 - -#define GPFSEL0 ((volatile unsigned int*)(MMIO_BASE+0x00200000)) -#define GPFSEL1 ((volatile unsigned int*)(MMIO_BASE+0x00200004)) -#define GPFSEL2 ((volatile unsigned int*)(MMIO_BASE+0x00200008)) -#define GPFSEL3 ((volatile unsigned int*)(MMIO_BASE+0x0020000C)) -#define GPFSEL4 ((volatile unsigned int*)(MMIO_BASE+0x00200010)) -#define GPFSEL5 ((volatile unsigned int*)(MMIO_BASE+0x00200014)) -#define GPSET0 ((volatile unsigned int*)(MMIO_BASE+0x0020001C)) -#define GPSET1 ((volatile unsigned int*)(MMIO_BASE+0x00200020)) -#define GPCLR0 ((volatile unsigned int*)(MMIO_BASE+0x00200028)) -#define GPLEV0 ((volatile unsigned int*)(MMIO_BASE+0x00200034)) -#define GPLEV1 ((volatile unsigned int*)(MMIO_BASE+0x00200038)) -#define GPEDS0 ((volatile unsigned int*)(MMIO_BASE+0x00200040)) -#define GPEDS1 ((volatile unsigned int*)(MMIO_BASE+0x00200044)) -#define GPHEN0 ((volatile unsigned int*)(MMIO_BASE+0x00200064)) -#define GPHEN1 ((volatile unsigned int*)(MMIO_BASE+0x00200068)) -#define GPPUD ((volatile unsigned int*)(MMIO_BASE+0x00200094)) -#define GPPUDCLK0 ((volatile unsigned int*)(MMIO_BASE+0x00200098)) -#define GPPUDCLK1 ((volatile unsigned int*)(MMIO_BASE+0x0020009C)) diff --git a/lab1/header/mailbox.h b/lab1/header/mailbox.h deleted file mode 100644 index 575d7c3e6..000000000 --- a/lab1/header/mailbox.h +++ /dev/null @@ -1,38 +0,0 @@ -#include "gpio.h" - -extern volatile unsigned int mailbox[36]; - -#define MBOX_REQUEST 0 - -/* channels */ -#define MBOX_CH_POWER 0 -#define MBOX_CH_FB 1 -#define MBOX_CH_VUART 2 -#define MBOX_CH_VCHIQ 3 -#define MBOX_CH_LEDS 4 -#define MBOX_CH_BTNS 5 -#define MBOX_CH_TOUCH 6 -#define MBOX_CH_COUNT 7 -#define MBOX_CH_PROP 8 - -/* tags */ -#define TAG_REQUEST_CODE 0x00000000 -#define MBOX_TAG_GETSERIAL 0x00010004 -#define MBOX_TAG_GETBOARD 0x00010002 -#define MBOX_TAG_GETARMMEM 0x00010005 -#define MBOX_TAG_LAST 0x00000000 - -int mailbox_call(); -int get_board_revision(); -int get_arm_mem(); - -#define VIDEOCORE_MBOX (MMIO_BASE+0x0000B880) -#define MBOX_READ ((volatile unsigned int*)(VIDEOCORE_MBOX+0x0)) -#define MBOX_POLL ((volatile unsigned int*)(VIDEOCORE_MBOX+0x10)) -#define MBOX_SENDER ((volatile unsigned int*)(VIDEOCORE_MBOX+0x14)) -#define MBOX_STATUS ((volatile unsigned int*)(VIDEOCORE_MBOX+0x18)) -#define MBOX_CONFIG ((volatile unsigned int*)(VIDEOCORE_MBOX+0x1C)) -#define MBOX_WRITE ((volatile unsigned int*)(VIDEOCORE_MBOX+0x20)) -#define MBOX_RESPONSE 0x80000000 -#define MBOX_FULL 0x80000000 -#define MBOX_EMPTY 0x40000000 diff --git a/lab1/header/reboot.h b/lab1/header/reboot.h deleted file mode 100644 index e1d44aa1b..000000000 --- a/lab1/header/reboot.h +++ /dev/null @@ -1,8 +0,0 @@ -#define PM_PASSWORD 0x5a000000 -#define PM_RSTC 0x3F10001c -#define PM_WDOG 0x3F100024 - - -void set(long addr, unsigned int value); -void reset(int tick); -void cancel_reset(); diff --git a/lab1/header/shell.h b/lab1/header/shell.h deleted file mode 100644 index f5cc98ca7..000000000 --- a/lab1/header/shell.h +++ /dev/null @@ -1 +0,0 @@ -void shell(); diff --git a/lab1/header/uart.h b/lab1/header/uart.h deleted file mode 100644 index 537b360be..000000000 --- a/lab1/header/uart.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "gpio.h" - -void uart_init(); -void uart_send_char(unsigned int c); -char uart_get_char(); -void uart_send_string(char* s); -void uart_binary_to_hex(unsigned int d); - -#define AUX_ENABLE ((volatile unsigned int*)(MMIO_BASE+0x00215004)) -#define AUX_MU_IO ((volatile unsigned int*)(MMIO_BASE+0x00215040)) -#define AUX_MU_IER ((volatile unsigned int*)(MMIO_BASE+0x00215044)) -#define AUX_MU_IIR ((volatile unsigned int*)(MMIO_BASE+0x00215048)) -#define AUX_MU_LCR ((volatile unsigned int*)(MMIO_BASE+0x0021504C)) -#define AUX_MU_MCR ((volatile unsigned int*)(MMIO_BASE+0x00215050)) -#define AUX_MU_LSR ((volatile unsigned int*)(MMIO_BASE+0x00215054)) -#define AUX_MU_MSR ((volatile unsigned int*)(MMIO_BASE+0x00215058)) -#define AUX_MU_SCRATCH ((volatile unsigned int*)(MMIO_BASE+0x0021505C)) -#define AUX_MU_CNTL ((volatile unsigned int*)(MMIO_BASE+0x00215060)) -#define AUX_MU_STAT ((volatile unsigned int*)(MMIO_BASE+0x00215064)) -#define AUX_MU_BAUD ((volatile unsigned int*)(MMIO_BASE+0x00215068)) diff --git a/lab1/header/utils.h b/lab1/header/utils.h deleted file mode 100644 index 6a31bc1da..000000000 --- a/lab1/header/utils.h +++ /dev/null @@ -1 +0,0 @@ -int string_compare(const char* i, const char* j); diff --git a/lab1/linker.ld b/lab1/linker.ld deleted file mode 100644 index 066df7b90..000000000 --- a/lab1/linker.ld +++ /dev/null @@ -1,19 +0,0 @@ -SECTIONS -{ - . = 0x80000; - .text : { KEEP(*(.text.boot)) *(.text .text.* .gnu.linkonce.t*) } - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r*) } - PROVIDE(_data = .); - .data : { *(.data .data.* .gnu.linkonce.d*) } - .bss (NOLOAD) : { - . = ALIGN(16); - __bss_start = .; - *(.bss .bss.*) - *(COMMON) - __bss_end = .; - } - _end = .; - - /DISCARD/ : { *(.comment) *(.gnu*) *(.note*) *(.eh_frame*) } -} -__bss_size = (__bss_end - __bss_start)>>3; diff --git a/lab1/mailbox.c b/lab1/mailbox.c deleted file mode 100644 index eb08d245d..000000000 --- a/lab1/mailbox.c +++ /dev/null @@ -1,54 +0,0 @@ -#include "header/mailbox.h" - -volatile unsigned int __attribute__((aligned(16))) mailbox[36]; - -int mailbox_call() { - unsigned int r = (unsigned int)(((unsigned long)&mailbox) & (~0xF)) | (0x8 & 0xF); - // wait until full flag unset - while (*MBOX_STATUS & MBOX_FULL) { - } - // write address of message + channel to mailbox - *MBOX_WRITE = r; - // wait until response - while (1) { - // wait until empty flag unset - while (*MBOX_STATUS & MBOX_EMPTY) { - } - // is it a response to our msg? - if (r == *MBOX_READ) { - // check is response success - return mailbox[1] == MBOX_RESPONSE; - } - } - return 0; -} - - - -int get_board_revision(){ - mailbox[0] = 7 * 4; // buffer size in bytes - mailbox[1] = MBOX_REQUEST; - // tags begin - mailbox[2] = MBOX_TAG_GETBOARD; // tag identifier - mailbox[3] = 4; // maximum of request and response value buffer's length. - mailbox[4] = TAG_REQUEST_CODE; - mailbox[5] = 0; // value buffer - // tags end - mailbox[6] = MBOX_TAG_LAST; - return mailbox_call(MBOX_CH_PROP); // message passing procedure call, we should implement it following the 6 steps provided above. -} - - -int get_arm_mem(){ - mailbox[0] = 8 * 4; // buffer size in bytes - mailbox[1] = MBOX_REQUEST; - // tags begin - mailbox[2] = MBOX_TAG_GETARMMEM; // tag identifier - mailbox[3] = 8; // maximum of request and response value buffer's length. - mailbox[4] = TAG_REQUEST_CODE; - mailbox[5] = 0; // value buffer - mailbox[6] = 0; // value buffer - // tags end - mailbox[7] = MBOX_TAG_LAST; - return mailbox_call(MBOX_CH_PROP); // message passing procedure call, we should implement it following the 6 steps provided above. -} diff --git a/lab1/main.c b/lab1/main.c deleted file mode 100644 index 114d5dbae..000000000 --- a/lab1/main.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "header/uart.h" -#include "header/shell.h" - -void main() -{ - //sasd; - // set up serial console - uart_init(); - // say hello - uart_send_string("Type in `help` to get instruction menu!\n"); - // echo everything back - shell(); -} diff --git a/lab1/reboot.c b/lab1/reboot.c deleted file mode 100644 index 048f2d348..000000000 --- a/lab1/reboot.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "header/reboot.h" - -void set(long addr, unsigned int value) { - volatile unsigned int* point = (unsigned int*)addr; - *point = value; -} - -void reset(int tick) { // reboot after watchdog timer expire - set(PM_RSTC, PM_PASSWORD | 0x20); // full reset - set(PM_WDOG, PM_PASSWORD | tick); // number of watchdog tick -} - -void cancel_reset() { - set(PM_RSTC, PM_PASSWORD | 0); // full reset - set(PM_WDOG, PM_PASSWORD | 0); // number of watchdog tick -} diff --git a/lab1/shell.c b/lab1/shell.c deleted file mode 100644 index a8c8b8b26..000000000 --- a/lab1/shell.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "header/shell.h" -#include "header/uart.h" -#include "header/utils.h" -#include "header/mailbox.h" -#include "header/reboot.h" - -void shell() { - char array_space[256]; // Buffer for user input - char* input_string = array_space; // Pointer to the start of the input buffer - - while (1) { - uart_send_string("# "); // Display the shell prompt - - // Initialize input buffer to zero - for (int i = 0; i < (int)sizeof(array_space); i++) { - array_space[i] = 0; - } - - char c; - // Pointer for the current position being written to in the buffer - char* input_ptr = input_string; - - // Read characters until a newline is received - while (1) { - c = uart_get_char(); // Read a character from UART - - if (c == '\n') { - *input_ptr = '\0'; // Null-terminate the input string - uart_send_string("\r\n"); - break; // Exit the loop to process the command - } else if ((c == '\b' || c == 0x7F) && input_ptr > input_string) { - // Handle backspace, only if cursor is not at the beginning - input_ptr--; // Move cursor back - uart_send_string("\b \b"); // Reflect backspace on terminal - } else if (c >= 32 && c < 127 && (int)(input_ptr - input_string) < (int)sizeof(array_space) - 1) { - // If the character is printable and there is space in the buffer, echo it and store it - uart_send_char(c); - *input_ptr++ = c; - } - } - - // Command processing - if (string_compare(input_string, "help") == 0) { - uart_send_string("help : print this help menu\r\n"); - uart_send_string("hello : print Hello World!\r\n"); - uart_send_string("info : get the hardware's information\r\n"); - uart_send_string("reboot : reboot the device\r\n"); - } else if (string_compare(input_string, "hello") == 0) { - uart_send_string("Hello World!\r\n"); - } else if (string_compare(input_string, "info") == 0) { - if (get_board_revision() != 0) { - uart_send_string("Board revision: "); - uart_binary_to_hex(mailbox[5]); - uart_send_string("\r\n"); - } else { - uart_send_string("Unable to query board revision.\r\n"); - } - if (get_arm_mem() != 0) { - uart_send_string("ARM memory base address: "); - uart_binary_to_hex(mailbox[5]); - uart_send_string("\r\n"); - uart_send_string("ARM memory size: "); - uart_binary_to_hex(mailbox[6]); - uart_send_string("\r\n"); - } else { - uart_send_string("Unable to query ARM memory.\r\n"); - } - } else if (string_compare(input_string, "reboot") == 0) { - uart_send_string("Rebooting...\r\n"); - reset(1000); // Invoke reboot functionality - } else { - uart_send_string("Unknown command: "); - uart_send_string(input_string); - uart_send_string("\r\n"); - } - } -} diff --git a/lab1/start.S b/lab1/start.S deleted file mode 100644 index fbd44d384..000000000 --- a/lab1/start.S +++ /dev/null @@ -1,50 +0,0 @@ -.section ".text.boot" // Define a section named ".text.boot", typically for boot code. - -.global _start // Make the label '_start' globally visible, entry point for the linker. - -_start: // The entry point of the code. - // read cpu id, stop slave cores - mrs x1, mpidr_el1 // Move the value of MPIDR_EL1 (Multiprocessor Affinity Register) - // into x1. This register holds the CPU's unique ID. - and x1, x1, #3 // Perform an AND operation on x1 with 3 (0b11) to isolate - // the lowest two bits of the MPIDR. These bits represent - // the CPU core ID within a CPU cluster. - - cbz x1, setting // Compare x1 to zero. If it is zero (meaning this is core 0), - // continue to 'setting'. Otherwise, proceed to the next instruction. - - // cpu id > 0, stop -halt: wfe // Wait for Event. Puts the processor in a low-power state until - // an event or interrupt occurs. - b halt // Unconditional branch to 'halt', creating an infinite loop - // that effectively stops the CPU core. - -setting: ldr x1, =_start // Load the address of '_start' into x1. This is typically - // used to set up the stack pointer. - - mov sp, x1 // Move the value of x1 into the stack pointer register (sp). - // This sets up the stack at the start of the boot section. - - ldr x1, =__bss_start // Load the address of the start of the BSS section - // into x1. BSS is used for zero-initialized variables. - - ldr w2, =__bss_size // Load the size of the BSS section into w2. - -clear_bss: cbz w2, kernel_main // Compare w2 to zero. If zero, all of BSS is cleared, - // jump to 'kernel_main'. Otherwise, continue to clear BSS. - - str xzr,[x1],#8 // Store the value in xzr (zero register) at the address in x1, - // then increment x1 by 8 bytes. This clears 8 bytes of BSS. - - sub w2, w2, #1 // Subtract 1 from w2. Since w2 holds the size of the BSS - // in 8-byte units, this decrements the counter. - - cbnz w2, clear_bss // Compare w2 with zero. If not zero, more of BSS needs clearing, - // so branch back to 'clear_bss'. - -kernel_main: bl main // Branch with link to 'main'. This is where the main - // application or kernel initialization code begins. - // 'bl' stores the return address in the link register (lr). - - b halt // Unconditional branch to 'halt'. If 'main' returns, - // stop the CPU core by entering the halt state. diff --git a/lab1/uart.c b/lab1/uart.c deleted file mode 100644 index e7470806b..000000000 --- a/lab1/uart.c +++ /dev/null @@ -1,130 +0,0 @@ -#include "header/uart.h" - -/** - * Set baud rate and characteristics (115200 8N1) and map to GPIO - */ -void uart_init() -{ - register unsigned int r; - //Since We've set alt5, we want to disable basic input/output - //To achieve this, we need diable pull-up and pull-dwon - *GPPUD = 0; // P101 top. 00- = off - disable pull-up/down - //Wait 150 cycles - //this provides the required set-up time for the control signal - r=150; while(r--) { asm volatile("nop"); } - // GPIO control 54 pins - // GPPUDCLK0 controls 0-31 pins - // GPPUDCLK1 controls 32-53 pins - // set 14,15 bits = 1 which means we will modify these two bits - // trigger: set pins to 1 and wait for one clock - *GPPUDCLK0 = (1<<14)|(1<<15); - r=150; while(r--) { asm volatile("nop"); } - *GPPUDCLK0 = 0; // flush GPIO setup - - - r=500; while(r--) { asm volatile("nop"); } - - /* initialize UART */ - *AUX_ENABLE |=1; - //P.9: If set the mini UART is enabled. The UART will - //immediately start receiving data, especially if the - //UART1_RX line is low. - //If clear the mini UART is disabled. That also disables - //any mini UART register access - *AUX_MU_CNTL = 0; - //P.17 If this bit is set the mini UART receiver is enabled. - //If this bit is clear the mini UART receiver is disabled - //Prevent data exchange in initialization process - *AUX_MU_IER = 0; - //Set AUX_MU_IER_REG to 0. - //Disable interrupt because currently you don’t need interrupt. - *AUX_MU_LCR = 3; - //P.14: 00 : the UART works in 7-bit mode - //11(3) : the UART works in 8-bit mode - //Cause 8 bits can use in ASCII, Unicode, Char - *AUX_MU_MCR = 0; - //Don’t need auto flow control. - //AUX_MU_MCR is for basic serial communication. Don't be too smart - *AUX_MU_BAUD = 270; - //set BAUD rate to 115200(transmit speed) - //so we need set AUX_MU_BAUD to 270 to meet the goal - *AUX_MU_IIR = 0xc6; - // bit 6 bit 7 No FIFO. Sacrifice reliability(buffer) to get low latency // 0xc6 = 11000110 - // Writing with bit 1 set will clear the receive FIFO - // Writing with bit 2 set will clear the transmit FIFO - // Both bits always read as 1 as the FIFOs are always enabled - /* map UART1 to GPIO pins */ - *AUX_MU_CNTL = 3; // enable Transmitter,Receiver - - // P.104 Since I need UART 1 Transmit/Receive Data -> TXD1/RXD1 - // p.102 I find These two in GPIO 14/15 Fun5 - // Since each GPFSEL controls 10 pin, GPFSEL1 controls 10-19 - // That's why I need GPFSEL1 - r=*GPFSEL1; - r&=~((7<<12)|(7<<15)); // gpio14, gpio15 clear to 0 - r|=(2<<12)|(2<<15); // set gpio14 and 15 to 010/010 which is alt5 - *GPFSEL1 = r; // from here activate Trasmitter&Receiver -} - - -/** - * Send a character - */ -void uart_send_char(unsigned int c) { - /* wait until we can send */ - // P.15 AUX_MU_LSR register shows the data(line) status - // AUX_MU_LSR bit 5 => 0x20 = 00100000 - // bit 5 is set if the transmit FIFO can accept at least one byte. - // &0x20 can preserve 5th bit, if bit 5 set 1 can get !true = false leave loop - // else FIFO can not accept at lease one byte then still wait - do{asm volatile("nop");}while(!(*AUX_MU_LSR&0x20)); - /* write the character to the buffer */ - //P.11 The AUX_MU_IO_REG register is primary used to write data to and read data from the - //UART FIFOs. - //communicate with(send to) the minicom and print to the screen - *AUX_MU_IO=c; -} - -/** - * Receive a character - */ -char uart_get_char() { - char r; - /* wait until something is in the buffer */ - //bit 0 is set if the receive FIFO holds at least 1 symbol. - do{asm volatile("nop");}while(!(*AUX_MU_LSR&0x01)); - /* read it and return */ - r=(char)(*AUX_MU_IO); - /* convert carriage return to newline */ - return r=='\r'?'\n':r; -} - -/** - * Display a string - */ -void uart_send_string(char* s) { - while(*s) { - /* convert newline to carriage return + newline */ - if(*s=='\n') - uart_send_char('\r'); - uart_send_char(*s++); - } -} - -/** - * Display a binary value in hexadecimal - */ -void uart_binary_to_hex(unsigned int d) { - unsigned int n; - int c; - uart_send_string("0x"); - for(c=28;c>=0;c-=4) { - // get highest tetrad - n=(d>>c)&0xF; - // 0-9 => '0'-'9', 10-15 => 'A'-'F' - n+=n>9?0x37:0x30; - uart_send_char(n); - } -} - - diff --git a/lab1/utils.c b/lab1/utils.c deleted file mode 100644 index 803df781c..000000000 --- a/lab1/utils.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "header/utils.h" - -int string_compare(const char* str1, const char* str2) { - // Compare characters until reaching the end of either string or a newline in str1 - while (*str1 && *str1 != '\n' && *str2) { - if (*str1 != *str2) { - // If characters differ, return the difference between them - return (*(const unsigned char*)str1 - *(const unsigned char*)str2); - } - str1++; - str2++; - } - - // If we reached a newline in str1, consider it equivalent to the end of the string - if (*str1 == '\n') { - str1++; - } - - // If both strings end at the same position, they are equal; otherwise, return the difference - return (*(const unsigned char*)str1 - *(const unsigned char*)str2); -} From 792c77c8ad58b4d22b6ed9460ac2b50e5f974f9f Mon Sep 17 00:00:00 2001 From: kaijhsu Date: Thu, 28 Mar 2024 10:20:15 +0800 Subject: [PATCH 22/22] Revert "312551019 lab1" --- .gitignore | 5 - README.org | 79 +++++++++ c-version/Makefile | 16 -- c-version/a.S | 5 - c-version/linker.ld | 5 - git-usage.org | 72 +++++++++ images/clone_url.jpg | Bin 0 -> 25772 bytes images/create_fork.jpg | Bin 0 -> 60481 bytes images/fork_button.jpg | Bin 0 -> 9340 bytes images/forked_repo.jpg | Bin 0 -> 13095 bytes images/pr_base_selection.jpg | Bin 0 -> 120191 bytes images/pr_button.jpg | Bin 0 -> 48696 bytes images/pr_desc.jpg | Bin 0 -> 86880 bytes rust-version/.cargo/config | 3 - rust-version/Cargo.lock | 32 ---- rust-version/Cargo.toml | 21 --- rust-version/Makefile | 40 ----- rust-version/src/bcm/common.rs | 63 -------- rust-version/src/bcm/gpio.rs | 195 ---------------------- rust-version/src/bcm/mailbox.rs | 168 ------------------- rust-version/src/bcm/mod.rs | 32 ---- rust-version/src/bcm/uart.rs | 243 ---------------------------- rust-version/src/boot.S | 66 -------- rust-version/src/console/mod.rs | 141 ---------------- rust-version/src/lib.rs | 1 - rust-version/src/linker.ld | 79 --------- rust-version/src/main.rs | 136 ---------------- rust-version/src/panic.rs | 59 ------- rust-version/src/print.rs | 41 ----- rust-version/src/synchronization.rs | 77 --------- 30 files changed, 151 insertions(+), 1428 deletions(-) delete mode 100644 .gitignore create mode 100644 README.org delete mode 100644 c-version/Makefile delete mode 100644 c-version/a.S delete mode 100644 c-version/linker.ld create mode 100644 git-usage.org create mode 100644 images/clone_url.jpg create mode 100644 images/create_fork.jpg create mode 100644 images/fork_button.jpg create mode 100644 images/forked_repo.jpg create mode 100644 images/pr_base_selection.jpg create mode 100644 images/pr_button.jpg create mode 100644 images/pr_desc.jpg delete mode 100644 rust-version/.cargo/config delete mode 100644 rust-version/Cargo.lock delete mode 100644 rust-version/Cargo.toml delete mode 100644 rust-version/Makefile delete mode 100644 rust-version/src/bcm/common.rs delete mode 100644 rust-version/src/bcm/gpio.rs delete mode 100644 rust-version/src/bcm/mailbox.rs delete mode 100644 rust-version/src/bcm/mod.rs delete mode 100644 rust-version/src/bcm/uart.rs delete mode 100644 rust-version/src/boot.S delete mode 100644 rust-version/src/console/mod.rs delete mode 100644 rust-version/src/lib.rs delete mode 100644 rust-version/src/linker.ld delete mode 100644 rust-version/src/main.rs delete mode 100644 rust-version/src/panic.rs delete mode 100644 rust-version/src/print.rs delete mode 100644 rust-version/src/synchronization.rs diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 07766c077..000000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.o -*.elf -*.img -target/ -kernel*.img diff --git a/README.org b/README.org new file mode 100644 index 000000000..cf4f47a15 --- /dev/null +++ b/README.org @@ -0,0 +1,79 @@ +#+TITLE: Operating Systems Capstone 2024 +#+OPTIONS: toc:nil + +This repository is used for homework submission. + +*To protect your rights, please create a pull request (PR) before the demo and* +*make sure the TA merges your PR after the demo.* + +* How To Submit Homework + +** Overview +For those who are familiar with git. +1. TA creates a branch named your student ID. +2. You fork this repo. +3. Base on the == branch, you do your labs and put your code in the + forked repo. +4. Create a PR to the == branch in this repo to submit the homework. +5. TA merges the PR as a proof that you have demo the lab. + +** Fork The Repo +Fork the repository on Github. + +[[./images/fork_button.jpg]] + +Uncheck the "Copy the =main= branch only". + +[[./images/create_fork.jpg]] + +If you don't want to see a lot of redundant branches in the forked repo, keep +the checkbox checked and follow the [[./git-usage.org][guide]] to fetch your own branch. + +** Clone To Your Computer +Clone the forked repo and switch to the branch named your student id. +If you cannot find your branch, ask TAs for help. + +[[./images/clone_url.jpg]] + +#+BEGIN_SRC shell + git clone + cd osc2024 + git checkout --track origin/ +#+END_SRC + +** Specify Personal Information +Write down the following info in your =README.md= (or =README.org=, =README.rst= +etc.) ++ Github account name ++ Student ID ++ Your name ++ Any other information you want + +Here is an example [[https://github.com/psychicalcoder/osc2023/blob/0816171/README.md][README.md]]. + +** Implement Your Kernel +Design and implement your kernel in the forked repository. +#+BEGIN_QUOTE + Make good use of =.gitignore=. In the git history, we do not want to see + binaries, objective files, __MACOSX, python caches, super large test files, + or any files that can be compiled from your source code. +#+END_QUOTE + +** Create a PR +Create a Github pull request before your demo. Once the PR is created, you can +always push additional commits to your forked repo before the PR is merged. The +changes will automatically appear within the PR. + +1. Click the =New pull request= buttom in your repo. + [[./images/pr_button.jpg]] +2. Choose the branch with your student ID as the base branch. + [[./images/pr_base_selection.jpg]] +3. Type a title and some information about the PR. + [[./images/pr_desc.jpg]] + +Here is a [[https://github.com/oscapstone/osc2023/pull/1][PR example]]. + +* Happy Coding ~ +As long as you meet the above requirements and the PR can be merged without +conflicts, we do not care about what the forked repo look like. You can rename +your branch, change the default branch, or do whatever you want. diff --git a/c-version/Makefile b/c-version/Makefile deleted file mode 100644 index 435cba6fa..000000000 --- a/c-version/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -CFLAGS = - -all: clean kernel8.img - -a.o: a.S - aarch64-linux-gnu-gcc -g -c a.S -o a.o - -kernel8.img: a.o - aarch64-linux-gnu-ld -T linker.ld -o kernel8.elf a.o - aarch64-linux-gnu-objcopy -O binary kernel8.elf kernel8.img - -clean: - rm kernel8.elf *.o >/dev/null 2>/dev/null || true - -run: - qemu-system-aarch64 -M raspi3b -kernel kernel8.img -display none -d in_asm diff --git a/c-version/a.S b/c-version/a.S deleted file mode 100644 index eba474936..000000000 --- a/c-version/a.S +++ /dev/null @@ -1,5 +0,0 @@ -.section ".text" -_start: - wfe - b _start - diff --git a/c-version/linker.ld b/c-version/linker.ld deleted file mode 100644 index faee5d7b1..000000000 --- a/c-version/linker.ld +++ /dev/null @@ -1,5 +0,0 @@ -SECTIONS -{ - . = 0x80000; - .text : { *(.text) } -} diff --git a/git-usage.org b/git-usage.org new file mode 100644 index 000000000..817c4bb6c --- /dev/null +++ b/git-usage.org @@ -0,0 +1,72 @@ +#+TITLE: Appendix +#+OPTIONS: toc: nil + +** How to add a branch that is in the upstream repo but not in your forked repo? + +1. Add osc2023 as the upstream + #+BEGIN_SRC shell + git remote add -t upstream https://github.com/oscapstone/osc2023.git + git fetch upstream + #+END_SRC + +2. Checkout your branch from the upstream + #+BEGIN_SRC shell + git checkout -b upstream/ + #+END_SRC + +3. Push the branch to your forked repo + #+BEGIN_SRC shell + git push -u origin + #+END_SRC + +** How to remove a file from the git history? + +*Warning:* If you not no fully understand what are you doing, please backup the +repo. TAs are not responsible for any mistake in this section or any damage +produced by your git operations. If you need to modify the history that has been +merged into the upstream repo, please contact with TA. + +*** case 1: the file is added in the latest commit +Just modify the latest commit +#+BEGIN_SRC shell + git rm --cached + git commit --amend -C HEAD +#+END_SRC +What if you have pushed to Github? Force push again. +#+BEGIN_SRC shell + git push -f origin +#+END_SRC + +*** case 2: the file is added in a old history. + +I suggest that you use =git rebase= to modify the history. +First, use =git log= to find the commit you added the file. +Suppose the commit id is =7a45f90=. Use the commit before =7a45f90= as the +newbase. + +#+BEGIN_SRC shell + git rebase -i 7a45f90^ +#+END_SRC + +This command pops up the editor. Modify =pick 7a45f90= to =edit 7a45f90=, then +save and close the editor. +#+BEGIN_SRC shell + git rm --cached + git commit --amend +#+END_SRC + +Repeatedly use the following command until the rebase procedure finished. + +#+BEGIN_SRC shell + git rebase --continue + # if there is conflict + git rm +#+END_SRC + +You might need to force push to the github repo. + +*Warning:* force push is not revertable. + +#+BEGIN_SRC shell + git push -f origin +#+END_SRC diff --git a/images/clone_url.jpg b/images/clone_url.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7305481101979f9ef1b092806535e193555f4a44 GIT binary patch literal 25772 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 WQ^rF@{SzurefZm0%5}>6tG@#s91=AE literal 0 HcmV?d00001 diff --git a/images/create_fork.jpg b/images/create_fork.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19c1a741c147b3fff708c4fa38a651fbcb9fbd98 GIT binary patch literal 60481 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

a* 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 z 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 r-XuHJw1?A#{t^s(oAbeU7wjJOA01zRL z+g}X-zXODaQ%s+cO#C4+~=*F5RP zgW|JDxNeoVF&GXZxg~6$29uI8GBLAU=Hcbzzb+stB`tGPR_^v4HFXV5Eo~!X6H~MM z<`#DL4v!q2oF6}X?)AbO;^Q0gDl{xSA~Gr=@oiFa%DeZe**Up+pYjU|i@sJ=R#n&3 z*42N5wRd!Ob$|acJTf{qJ~253Uqmb|udJ@EZ*1=WJUBc$K0%$H{lWzT@c%EYKal+k zE?OKeJOToI0^(n|KzQD`g-=UBcvXyuPSt?;q35M*;z1U3Ad@`yd{Y!768K;7DN2;lnc_(-#Yg)tPL{5MPE|A|ps&VN-}z?yR?(XT zUyyNF0r=haF8A%B&W?eFUg`}Mrh+16xFHt!6V~zDmV-r4ED)fE1v&-^Hw9w<>CVta zp6DME0{KSe{C*8}*1-ZwOdKbpV6-)0lU;xXe!s)UGjvi8STqPs-(Uy&F{YIy{m5T6Z$(ywHzut(lTyRwfM{vLsy4}#Keoh3 ztsCNL5?fYpb_(7}ifB+u8bh1sImtD@{sf*4$T%^7zq4&8R(DA=zOuL>P$1t{>@=dE zO56pHI$DXmZdgiJ?}{hy*Ac0pkJjJW=*nYIKjKMlh0e4$Mu>kblkEpdefNhVcT4j8 z`G%!9sHf&o;b3IIPE5X|JDuc&S%wbD$~}6A_lrKyg1$>FH#4DR5MWaDZ6sC5MUuDI z$2ph-!usivtvipGrKaOtDXP_(H+d>hA(Q{?a=*0u-1^SXp_-HH{yXbdm1fpu2k?2n zn5MFyXK)N=UZ=daso}lwj_{K6r_|e_cMOtk{Q!_;wRhYmqldMnW`*Uzb_+E4{rQ9}p zRH}#?H%Ch+3-xt*--+)NSb!w=T>rI#iTk3<(f%DMt&oUh&yWj$ZB$q9S91#y@vHog zsLWP4rS}@TM&ZNB72WI1mkx827FoQ8u>gt!yoDldd8v~(zdEu0G(&73lesWUwP!g| zrCAv*Fy^hJ5M5<92*^I-3(Vop0C-DL&pP5=EKI^a+j+Q4ZmrX;lCo&;MURSCGvkSq z+~iWK8t}h0JYj~^t0A5u+{Oa7=^tPJIAHDjIeA?**xPvLV>g zvOv=1=BHqL{{8xIK}m0al5hr7Ya5JdUkIb-(c!|fuH#rBw59jRY1!PsTF)d*O|EDo z%CM7j)-!Xw(GNi#q9hLX*Bn_!X0{WI__My4F0;+luS{^Ek&8IFb2q5LewjTt3OKGW zgot@Rm_?6+VLf&i#4Dzp(OJPa=giWRZoRh$B;w>g0OA3G>|-`37^Nr5TXk4q$X$hU z+^4+jQ8EwLC<{HU-lr{&{neHuIL8HZ^Gr6wa-Kv^*7o|7d+{(C; z?+azQPUpv8JDpM`tF_ssR<){Wr+(8cfXw`sNdZanS7ZpwDtLA73x-LSPgbaF=Ws)n z>;uY6Uv79@ZgOl_;`p*}8Xl0dnT*)eYYP3CLD%7(LqQv-N<70BGj;%mSyEo=1T#0P zE}rk0b@-Mh=J$(8HYn;_Ci}hclQrQL?^wMQB;BdX2?U``I>&it&WvCaCl;kapKRu) zl+yg3xzLYHbw3@{>?T(a7)?+ngYB<%C{y`M1&AxYK>UL^o%X=U1twc8` zTT<_Fm*%e$BeT~5%1Gn4U(AB@aPy9x~z%y@3b)kjU(p=&q zVTDUz*CEtYPy?q8$o8GbKU7%oU2XmKzI+{4;&(}PkC2ot^JEo9Uyn6sIOmzi(DO^ zbiF~H%tXMO^MiYjeIqN|J(qg9WEDdpYujU4TT1Mi?TmB6Bl&3^M#4=nNceVt^+|Q8 z@-qVar0rr3w_k)0r7sl&eDl%`jr)~y%@Qk&Goc?=#j z#MM8VCwInl9%+F#)L(sGbtNDDY8Sfo27E@J#G~Pi1+L0xo-Hw9LU}Zq*0UR-7n*6ht3;lr1@L5DE{-i)|$mL1`C_SCyJjFYV zpoKl%wpg*)1VZ!Q^(R@*Y~Jlzw43`S8tgCPuUB{n@D*^&wq?A1vJJ%mS*LBxM;&EauYQ2%*W+fu0Pq_46eor;0=VXs|z3^9lt{45iKF;mpvTeXpQ{G z-ohMd$M@an`#*PT#mWb=upsK|_w}dxBwLtjA{)KAu4uF~`IgLOz+Vl$z3xh%Ssx|I z$vp8;oeT7ut%fVsrSNe-%pxb!{mmRLyNo+2Z;oPTZK7~x{Iv6lgeraBZIb15E-|hh z&K*Z$0#9qb_>%iu$I)K-)*3!;6*{0~uA~F57cpuBMfG2l5RI1%Qtk~lOKu~T(h;?3 zrsGB!I$fE2L(3Rg?W>Pk?p$@x$r1=mT4QcE29i0Z9`q4^Gi|0px$=b?Em~;_VfY(# zpKcy}V=}8oP%CZfXuXo&Eb&eAue6Ray|MH{&d{PwsRcP7RHYj^Tj_Z1(02s< zMMIt2Fxpab*S-MD;;eHL_>CeMr>}{WeP$Uh@!ay3d<^5wrD*eIyD8&K6H(<0^Bnh44eHfnhp!h4ofDJEubP??-v2Bp2>kfb8e9w_ zpi%Q#>uiwk{)AL-anGN7T%Af)UsF?E?@#HeoG^X>Tjka!msL-)BqMFTNlcFgf-XB; zTmYXoLk~?Xf^95(}(%JMp zX>1CFhxkk2vVC~CP-RZxDVIZw4ZggHe3RfR3zz;H7=U@K{0AI{ z$K*~WM)qRGF6%k;Ah4Ob3z0xxl$=(j*HtUA3qom@1PH8iaqv*!@sUxAdU<-!cW3gt z%?=`6K=@t-@;D{`v6*jlX_}*Jf%Vc3lSgZ$(Bwu_YtKvG5-jjwWBy=;7$+x8+epjW z4{97Xg15%dNjY!ysp>E0mA^dSJN+4g6DlZlX@Eg@VSxOxMN@U6SLuxTw@21;-36)s zv~dkFH(8!ge7N4qhu2JafwL;7bXG)OEDTHwQUAH7KQ5WpvlS`4das620-7zU+o?*J zV_Qru??eFYrh zEscw(&2$?l?0m@lh-V7bsk#k1QlS&*N{vvEy`j%WD0dmYo6%(vf5nS>B_7C=>HG6i znNbhP*=S31Sm+X4lEt$q`i*yb=x!1df560B!8QDgbK?xAOfcaLrv}LR1*Uev*a#&i z%Xtta72bBFW0HXgU|+lzqb%z!A$FG#pF6P?uf?ReQis&FJ=T$2KB4_BTVfx{lL0yU z>DqX)tpSv2Xv~LXpC@~9xN$-LaQ+{1HMj`LhYq~uIBCs)swE(=e@Z%o1tyqV4zK?y zd&6jQy(>al97xbV`s6=N=ucyy2l*D{etuRI!b0_>y}MV=%{HF{wYT-VVV87}sRVJU zM9C2{(*tLD`P$``d~I-5)UIG8cbtL|&?Hb~(*{}mYuTsJ(4&!(I`s=r@=ZAYy|p)~8T^M0Mq^%I zOL~~ZMQ}Oq&wX?L^iCB9$H6pDF-_?+<;PytkyWs}i-8!1J=5RN|K^T(NM`0M0-tdF zv46(`);O;ldVTjlQT~t28hb^WZ5y_dNa%f%)LV{^?SAx|Z|b_|Pg~GE489q;`#B0I zSEIiN`j;+6Yo?h@1*!%3z|wX z#Qx1RILt<e7n@2Ti#tix(fuuOsnQo2BKOyTW zcl*;T=`YonLe%1{GcBO7af~o@uwkJEjn{w$mWz}Zx1fwI>()px24sx|ewz5FcrV1# zPFgpWj0Y82TJ!Y2&?Oi*^LjRQn2lA-pHTX~jC5i=rQe5&8XuhXRtzca5 zP@3&8QB0|{DU&?6J*l&DH`QPP{6jZmF0P*=lsL7#4JfSwVq= z5xj1mLCVJcG?3}7ql3xAHX%S((wuPWDD!WqxZ7ec%qy1Ms>8j+*$l4MULKhfg_&CL zev^P7*h*JtC^5o$X8NIpqVXYBzC*s&qT*A8xxhsJ*q_o?Z~V#*uQmBy%vZ@w$N)rOKXT2$#0l63q%T!AfufGX!gRBsAQuAOLI zCl9Rd>T27Z8Bh_+JEt$&^B#3-2bB{phA7!SNQd#nS!X1ktGpa#zj=}CWhq$3pzq@D zXrJa<*(Am;sQK<<1Fxc7#IM}03m-qK3@LaVzaPGRS~zEg^4#7N+GAq6Y*WbE-v#lFZ>q1R{dTlbqJN~4S((pht6kR7p?kCGW%gX8MjJHE9)OZPfd%UXA z5Bb>!<+H@!C|F=w)mg{w@ujjV*!6tno+)S9<&+0{^Ks&dt-Kj&MEOIw*$1HWtE|QeF2*1tdsvKMW;Gma8j+$sZZ_cr-Qh$QI2#i-c>^nY7zh<62ljHdO zU+gOuivm5xh$)s zE8WcWw~<|)GE5esl{S|qxa&reY>w$i9*I6K&U@P}y#l&-pRrS=k5TpSd-MU%L|ZJI zrOl)TU#OQ~!{;3(VM7vEA&2*H_+8gTvfQOOiOD#@Yt*HYu0<%ZKoW6P7d(YB&wAeJEMU7@v}6kYfATJ8|;OZ~!-UhkD;&mgV%cn7e|KErNuRzneB1K5TN6 zsgDuHzn5U#^1cLdz-#@Ql_UZPT9fpPxcXGJ4X4;)@ZV6Zyi9A~1Lxxdk&^5*M74zV z##gIGBWI+|lXHa$>T5!REC;qTcitHFS}*#vduI~sCT^TiFHuvblO2<;zP37WGo8Ls zpBw+miC}v%UCB7|E33!pZ5kZv!@LwUgE!)>w}I4rn8H=XFYa?1gjJ(%utBlf2h`0Y zhh>BFfy%7Up>XoWjPxZ+cD_ojsgHGElWG);H%^v>0LoDs4{>HTsu1K_Cx*Ha$rM>y zsdM@u13?gFAXOn2qq!XI5Ix~x3W^_He0!sxgn$;DpNZ54pUTA2V1daI+}{kj$w}hc z6W3*)ZJ+UHSMc-WD*nH_PA71g5)1JDN|oVQVB;ISg+qb1q;0Y6veV_JVJ)8O%mT~V zA8~=!39<|k_cU2rZ+>Suk3CoO7l1~$5c-=e)RvkKuNhT?EBg3m%yZ&-UcXR&)%ck7 zkgw#WEGp#K5CvOovRKlqLpdY--hX@=X05D~y35$M`L(_Hjbd8~S2^|5m6op1Q8c(r zx7gf#+9|c9Im<~z(v|4j@EJj^hRIV~&E8x$P<$>7Z)SP57!tB%8tJvjfzl}E8e?bm zYoR`sF{8bv*vm*WFZ9WTPI_F_o4uVd@c!uol>sR%KrxTY-;v(Y%E$~{W?Om=g~|NN zsM*#_`e;5}mO;&$29FM*&i9QpQQr~#RSm3y(E|H!A|KD$J9NNb-@`Sz4H{3MW{NeA zu^7U7XUwOsti8dAZ(M#+<(xMwlPX2YxC}|g0%{q8-@GgvjDwvKULJ}5Upjm77b+*n znDJ8&L{X2h04}rXG&acm|U+} z7vem3rFp1yd-q{QXnqT$vv_wx;X4vpq}DhXnmMOXyYt`TCi7+tHW-;q zhfBKeQ6y}7*F20PQt!_%W$dDsoS#}yxGxa2-0vY(H+Gyz4s#r_+1ROGif;N-A+ z(<;vrnCoY&Sr@vE>qX89u*=ia)9}vn{^O9&Kx=YFuTOr^DD-E`8SPpkt)pt4)` ztx}<{xth<7Yi``K)b-ijanneoPLI5w1{TpG@3dy~|6D=&`*zErX-dFlbd{f3mH}Xc$4;XS}|9v({yDf;IqO%j_bz((=NW^0Am7txWYr6N6bDM zUj8;vKQyjk`r5ZISV{GRi#{8Kst0z4su=e-cSh*yX_d^IH4HB_r*A7%slC#4%enDh z33?;c?o08*sJ#Q(zom#lsv`ZU4AL>f-2g4GmAZX~n8ci|!D$OvHGF)mB-L5?L(hBe zxT$s%>wCPb1l6FT`uSKiD|CrfeoNP-{md=h&S`LcC(qgQ{`Ze^Kfd01pbA-if;sV% zjIVQ+Nq*F=fa~-mpt#bHXHF6eeDlRMThT**wNfV{vyL*RDac-zH+<}sQSK!*ch@!_N%W#}&If64x!4-TRTjvEO z2-HKwQGz=BQvls6H}UK&Ucm`B*@gW@6b642TruCq8h~#J>2HAgh!jF8?q1;$B<}1se1K#U+HaIHbWPcqvd^Ti_HeUP^)D?pC~b8{Dl( z&;TL1Iaj{x_qq1mKlhtG>&M=EX7;>m&#dQNYZmqwb`?Oat*)gGz{A4>yuw`o>;gay zK!A_`PsJ5NTqU|kL_|nPL`p(Je2<)zoScl5jEsVkmYRZ+hLVhont__;0UbR(JvkNQ zLk7Bsv~=`z{|tghfa^m@bf1XmJ{<)a1>OI0!FB;??g4V}Yzgq50Ptz>2x#!IeE<#s z0FMYa+kYnf?+YG2ZjQtx_wJLD;TqIa1Mu+(2=ECB{+TtdbujKdfRKiW_OX}>@dJa` zBu_l(#KThZ?{TVDchehAo^VOnc)q(&%E0)LiJ6;+mycgSQc7AzR!&~+1yEf>Q%l>( z*u>P#+``h<&fdY%$=Sur+sD@r?jH~y5&1qUIwm&t!^gDrjK4o+78Dj0my~`f`&v_5 zSKrXs)ZEh3+t)uZ_+w~zYI ztL}okEqtwH|Jw9lHSn(*_f{wU?xbHQjdYZ}$G+Yb)_faKc z%9-|_yy6TY967jQEfzC`ZE+D&5gW7(-}WM*7n0%byI0ncG-SKYce!Z9^n(y?hCz-&8w; zmMM3353W4Wn-`9FAjEO@>-8rKS;coA%Vj9rjo_-ds=BRdH1~SL)CDpAg5?KYGKc*D zO})GQ2v4SultAw`Vs0;Ms->0f%68X!)5YEcZ)RPc(CJ{s$|}U}d8}ai38W7!I&dRh z{AFR#<5ebX@zN|A^0g>g>wfPM>8M!zQ@LHB7ul^E+*h9z6>1TuKj-Q&k5DPzW4L?= zIw)3E)2uG1en8;6{pzW@hY>3SkD+@!+jQ-PbLWuEZlzJ*WUQg5sUMnI{|F{(nzB!4 z7J;@$<$GfRq{31tSp6}vKl5F@%>6Hq>zhv7HpSiJ{T>@?5Qe`KtejGkcead*IbWi^ zQbkflZOxML5I!JUqti<|A`etb$YwNdWz7|ze!)g)beS_>I%K>wN;UlpYE$Pc; z#igK*yD?LN^eJChJr?k`Re3OEuwc^KemyBk-Y@*fEz96!FxGZT$l=u0r@ACGfA9<@ zn!5HI55ui0Kt&I|3g4LMjnmOp^_i-wJJfcDt$&J;IMj@l;FEo0m#qI6(u};Lu443C z<_CSWm?v~@C6fm}{8DfHP_{fYR$Dm>O=VorHf@4J7F!;)BxV%DL;G?CKImrr=xF*` zhXp8+`3DY+TlhWw@dMmvf(0-Jy`EMStnAJ2E`};`&RZ{nwMur=-#NdE&L;U-EAW{& zEPd$w%guZ4rb-Rps?+7;n)!-2cnew9@`A=eecRG`%|ZUMftBBTj1bDJFPDC%{=7Lu zziui%rcCY2i`TjR8%*A5RFA?Ym?qxLC!+1|J`-1*)NBWH>LJbETV6sTe-3T7XDe)) ziM_crp2*oRhD9$kx{phM)@s`Hcv=cR&$ksU?1iG3_oj_VQ8#paE#qdUF#mK{SNZv|S zF-XcsnBEBGsuz}yxpKDEXL!C#VtEQcckTGz+tu~bAd1emmF=z<An)m8LnvCE|PfjyzTro^vMa z+M{0~t;-4r*T%?t=OK3UXqB=-DEYcnayLHabRGQdo@|2Vrq640<3f2O<9)$r%IsJ` zm94o+q%oXbnC)0o@iJ@SCEUVs=?5~q0TlB3uJJ--% zTQhpqh>tE~Jh!?1K!4>}EWqiGq}N(-Cg_=SK0KqJ`F$qc3Kr0#T*6XRw3ETO8ksbhM-FG{x#6iTOHd1G`09Np!lDj6c-O^NAo5gwEjwk1psa!c92b;ca(CBu z-nms((n^bL^4`v#Z|zKLyv@xm#q9==BT~>BmA{%`?MARWAHs$tsvB~xMh)~Irrqy$ zKor+T%CXhP$FBZCLy$6Sp#vPmaL4`-zVFD2s2KDNKXGn)&F>l!Kano+wnUH|Uem+M zSPK)&>=Vy;N0tuL6^WW{-x{dvAtXQ2swYQwpdilO_bTmM<+V?%e#lUsh5nYn`u6=-#0 zb)z0ru{`{0rnEDm2n35vLvU@)ARibbC(YRE$!ltB$zL2$#w>eJ!?pq&lA^T(vghd*Dfy=^{Jb0^`6qd{&pTNYfM*40f7bV9LDQ$ckyqMe&GC|EU6UxHw9{hHY?F^!{F^mYN zvJp3oP2JbLDgOAzr0S6=n@XAr#yf9;f#d8Jh6RM0p`jCKAEbuiiC?svWV=LfdS+Tf zUQy^9u)b31rD}?sk3ihkQ-^Db5x(ulLnS^`zz(ouX0tWW$@@-;Lhph*>9heq(GJ!-4(;_7C_+U75GzQMWd|m{3^f@jlK%bNpvtt_YEK_6?Clvd2|` zH5@5&mMYq_ClR9~4Njcy4$1f_TZ>=Qe^H7J5tmGMaDi7)vFknifn<_NeO`Oi`R_~v zqo-#60=()sIZL(p-fH|-94J|J1v$k6Bn9_E4;-)nb-zg$(+^FWNBJp9KrKAw@o#2Q zYb&g%z`;~7XwR#okd-6A$XTFkgWHSsTNoD;$w!_Bm=4IQzRYIwaD~P;mDt@(X)(n6 zoA?%;fhK+|-{*gXe1djY-Z7?5r$WJe`t|JjwVAlZ1a*pC_m5R%_FI)d&#SVq0J~tS z-pusIb(o$qvBh3yLhleglrCF7ORnq`CBl5YC z(%s99pH?sa^q4xQ;lIJtd<2slVr!W%PM#hP}qP3l?XQAxwm>y}h4f@}ViPtspg-KnhnD*bw` z#ikS`)~m?(@<@Xqf$PEoXD<_%k9*7vv^>}n${mBMf9!KLnhz?NCwonGd@g7;b=DQp zcUUwwHn#d;39$%lX>FLcs(ABhM2K+9->cH$2%#%gV13+Pl490A9atGP%E7cTt4P0* zL=6wbxxyG;6{7mu&)2WoD8DbtG`tGlys7Zc6=|$S$sirOLmss^rc)99Muq4ST5FJL zrqhzBt0(hus|g$~CALE=rh-V;6GGRYWyC7lE2SnoRqL{+lsXFw#j-=vcG8MWt}iL_ zpLY#yx68K(Y>O2$8-FWys#kb+)NGQ|7*9JlW_`PF&-$Q3zIKkkZo{WO^Mmgpzgzv` zv{zS$3~J#yD(R&Bug;%UMkdptYdq61gnhy+Q^c+&%iG1Ly(uXR)s;~jKd^upoMHa3 zf}vdqy`vWn*rMO*UqgSs@}N_PY^uWQivj7 z7b@h{&E*j^*~A}7;LN1x-M!sz9sBingcx0Wnxz|%#R4&=q6TK0-qJ&Wpb<|~i;WPf z+E*X^%%+Sy8}`Sn=MR3NHu|vu+Ik3E5F1i$A0yk+h!nbP)KY#Yxg@~4AdpVPz4Abt zj&E_w)gXR#{!1e|o$6iQr6?qHH(GG%OJ(M#dg*58$t`P4OjRQzdkV;{VqyO#dvc^S zaJ+b>b>+{v_&#E8ZfXQvSAEvl(;1`0ff96Fry@no9qE#pCt0?&#FRFqMWPLVfVpGR z^w8n)lqzh3FW{xRC=F!iKucrnR;aedj@@iD9Mv=UWEg|(GL43G168KuN z=i|O!QCa7*p#JiTdF$ZPl~0m2Oj6ohZa_f5WzsJ(%dMkj7qPc^?PhQ?P>xjS4rTRO zA|2j(6Qm7$pF&qHsUOfV`Sw)cDG4pL>ZX@2>Nhf@r$Yh7jxddOXq_eaRX>p1kSe&> z%@g04lZOAS2)22uIRM>v5iDV9qu12)t}GiCk2P%UDP(!Zb{>0Jar>*s|4p%;M}m%A z8NYLALc^b`;;g`x@trYcdhZIs-aK{@pJOJ-L4b1P1^5XI6b8|5Yi@|WzwSFKA<0Gk zPW_^X~`Fo7|d{xpSvsH}86bMpAa-|HQP1tqy2 zeCla4Rg_@53WkDdvxLS;Xz)dKQO%aXhg9ft2eMVS-0Aqn$7KsFz!m;iZLB2CKytxX zzOI*auSn0R$U^)5kkfsZ$h+;VH8^pUT|ilLke27hB9*YR{6(hVPILQ_8)OheG(UP_ zOKItn2Myskc>^Cj^jTd34PXI8Qi8e+2%Uow=e0KJ6#NN!PWz8|Gpjpnm-8Qk3{Yvs zA(N&Z1Sfg#gpQA-%7ZNtr&qxrQz!&vXQIxSKH|k=0rxq#4zfvaZep)aH8em4iDHL)5~c~Y#Aj9)wRzqOq)2C&qLHUsS-1H-UUf)bkZCs zF(cnMuO`K$0BS5i7P`V6-}Vb%@qaILU3DENF)W(tke*jmD@5h3cJ}KtJ7owuI@=1# z_kchWEc|w+WSknaUQN;pFwRP%U>~6O^!S<{-Rho~XDP#C+M<<}m63t2uxsTOOt=JP zGQ4H#!+j`JT#>q8RFq}r+*&T3+Tx0_=C8ucDN$CVVCAS@EykAmwCp`cVpuLwbCZwI z*W#|n>Xh4@iN6)iJ_eDYMph}z2HjCv{nlI`EKn(xKhjNq7RRqI=xV^q+$hZmKD-aP zRy@@Sjs$v5jy^T!n<*xx)eH8YJw$gB&(9*}7i=wmDVjJ>XMY`Bnp;eq@4x~$fc3|Y zmA63&YkAS>kXlGIhTn;ux2`i5W@MCQJju>tmLl5s)wkgL!ygJNIND##8x`_o5i=ZG z%NUhmJdLwkIS!zh3L#gTw8xIHh2kUpGF7uOURFVoP+0@g?3o|+i|bl*+?YWT1Ko?Rwr{wI8U+=+Mu}C zo-5-_hXv6FeX?c3`D%X{Q(kxWe$Tr2@;+l^N3+TKHOqy7uIR54EZ}qG#N8PO7C>V# zsZn~p4-HguZ3$t(0yuy8U;z;wf-{vtU|TnjLXnttiwec-tyDg|( z2ccJ893vqfk@lQ^vJ+B0&<-&ugdFt|MKH)bURzrAo?++ZjQy-bdmx3*A&n5+pQ-JW z1vBh~;`1AhCs*!PNbnLCK*Eg$G~68$w*Quz*6-KA#hGtED1Cv@>`ko8Nz!=aSSkQJ zpuq`!LVv;-zj*;qpJopsonQ28*~(wW z^4lTIk$u2T8kn#pn0ybCDkCS$YFmb1w%;K;c^*o;*TK=0xpon(LY}-}`FqTx;i>8; zE~m+Kt|5Y;NHax;4yP0KddCW!ceG}8mCHNh!@<(f_yr4abGnj`sO63?nEFE`J=!n) zZo>s;yxgp;Z15|{Xv%PUeK7uF1UjZSZ&-UmI8UwRR<`&e=8^vlhp^o}j~V2VVGD$J{1SU~i zA+joruQ{DR*@6Go9Zlagd6=Q_Fx;HcY*`4&_`ZHj1B9fC_HKu0qP(2H0V#^l=Rj_a z)@ixs$zMcXXthWa>8l%sCGfKAtQ2Dblu#^SPh@FYUl&FlGAZcOxG~~(#}BF14Y>0F z!moPoxt?>x%(v)Yj#rfZ2BTbiP12-vu3f9Wr$$p1Lu@&Oo|+8v%shN(U=ffP?P`nE zJ(1r!50TKPQFF7;uh@JiCwa#8>U;h8V0@3AmzbeR*!BBGGgl50p%>Xk3+U^RgQFYa zphWFoY3i(pzG&OAs|6ju>Cr1o!5wEslfV+*xI^y>Pd6Hu5vWx6Y+bu0s2j$Jpq3wU z(BZBdVrl3K-#%Rkdnf4Fr^J8K-Vs;4m&x9)RAC<|bedr3_7JQ>JH-4*jHTY0OC+ev zlx9H9T`cyGztyys^zmX6`vk46u^fu(obbLAstf}9m+azOtj!-OH#jC#xTY#E zbqg&!+}iWv8_e&HKg*3hqDk{;%PpCH3j2_m0+dEWjJ~oZ4hL6_AEM zec|GZM$bYmR`ONN{UYL5?V3axybWsy5V2)=XW#ryNX+E~^@6jtW7KM}g5j*xb={Ax z_LV1X5gHFFrW2|icx8JzJ|1!TSwHEVxgdi)L}ku7a|VjmI;AZB#-E_OFCc}U^vF&) zlE6`;!f?b_|G)Nz_{X57X-BDO>vnIO#MexvBaFeyf}K5=M-$Ek9ii>BtGN?>G`q_( z=4ehg51Y%I^y13VN4cKd5{SzDwjW=gM{ij)RC7M$b{WrDZuo*avi|BQJ$Az2F63GI(mATx zuVFdVbMcY|!m#UySiF&Hs4ZP|IiZ-^LxR=kX_8Fi*?N(5=^;;l`Y=h|JCtgd-`7=m za`Cz~VXQ$S?RRA_91*Nj~4EzUvm=FNQa8&4e##50zBTZ_wX#qKWoqE?eE$;Vx&uJoE5AOXHgt6g42! zae))3n|iYJPk%Q3fXOMT9OXXdATtE`qM_JUB&an@E8TpBgoL~(e9WIJA_%&cU^>`` z5p<)2+l(K-478!u`QrL{T2)ZEy6N|mq^CK3=!4&CLCw#ox<>NqcQKFiCc+IQpc2|X zQ0@ii5DQKobHZkI_V%giK z6S7^b0sE6c3KVOdVr_fR1a=2n^?Zi0!JU4;|W??7*X( zvC=6&*v4lSO>^9p**iBA;K!K$LwzhjbGt~Q>gUA>2hE;oW_p$n{bA$`RFaWedNbwT zk5|D0cOkDshB@k=&37kQNV54_xVAC*iI{s%l>X2c|9ljMN)FbLqquP_-uG=8&vOg3 z_n==Y?t=;$^{h?3c%5edx|`6G0$^DX%OCxJqND#-U%`*4($D(qRZ$&WlQ6qPmINK` zw(3}mMt`T%g(2p2#C-%A`RaqjftHqg6P5sU(~Pq11RY9w07F(ipSxiA)2G5_Ubm(5 zC&KLZX{w1K%UBF)YH_qpG5jD`@Vu~V`Qi7IsP}Iqb42D8*yQIP)3<-KSYW2~nBYp) z;yT4usA;e~|4Jy|uWmk%lwFtMM?g|yze@(q-F2|Rz#4R`VzGB=O&8Tq3)Np+@>BKA(3;^S`n~Or z*C$JwSeL@ne~~tx5s$1{pl{Dd=bQzVXDyRFQUP@Fi(<_%?@Ok+URJI z-mUr+!jB5nN44LYIV}T_A4a@Z4ahRW-)BJDgtv57(L7>5S5w`F6bhJ$nH>2$laaHx0O-_`K-P8*1NdRvHNB zub==_(t65T9$xpl;4{HKGbQm^MG3!+dv&|nx)dL+-9E8W{oR*JOqTdu!2Ow=u*|xC zyb{%}@`LAMIs7cO5K1 zd!I`8w)Gm6iv`@MDV-Oz1z!5iVYpnLqEe^ViSx>UL=~fsnlnCefeL{mUo6De%@4WY zVH$+^O+Q`_cv<(VnbP`^4k7hp&+~|!KJ4Et?VCHFq)`Y8ig8Die*H=&#`P9Jm^oKT zu(ACK_5~NkdDDoO4x*3`R-ba(bXq3++o0(E3;Rd!%}h8+7TU=?YHrYw6DSqcQzX&f z;2=$ezvII8S3!yDacR7|@Kz3K#wz;xa^jc6Dui}4%WdVVDDG7^YPd|d;l3q(@#&tg z^&6f||NOqm>JOu$IjeOEyw6z3#Z0jPht{YT6wPX>KlwMwbKOx-_o6QxZy%!h>ss#1 z%$&Cfat?5u@2g4!LQtzg^qPuY&Zz*S=qrj{xV6kUtgj!45Y7{^S&+VJPY~p zeTg$GiEkYuO0x3{{>IVyAQqWNi8e&CUG;Xp%}g8k!eM{}9@bfY%YE^DiPPLld&9|! zcY>KCSwt)`B6b5q5&FYyHFUaP`NqhyNp`6J92Pvh$#1>vtlVCI!(lRMt+D~u@4uNC zWRvKT=Z#tD4UpKSb;&U7wkJIMM7za_FCidasrD-M;VXAMg(#xciCAU2Hn(*hn48X& z&qxk^8&EpO!|vyvb20EWeQ($4eexCP*$mHFN?o!s&r=th=H{SdloB{3G|ceIZOg6S zD@0@ZquB@&t%|(63RjfcK%rk>27s*}Jh6aN z9pwGM3Xw~+f9EwLibKT!B8JLZkLqU&9Kc8agHtEtU+e<&QdN|wkSl}O1t0@+aQ2M}LeYhRXm>1ksrBY^&r2Qb zDH?nk^m2VYoiHjrRAwb~YDp4FQ|eA&<6yT>Zx&{~a1z+(0nh4=anC#|T))5Cl#bXA zwi!@R_+hW!t0u|M>Qb3a5D7R@S0Rq5th)0?OD(e0HfBM*py$61cMD?GIGdZ_41O{u$2-dxp-pPWkHM zixBzb_r-d&;nFv`?M!=N+6fTy7HQhu4s!@+@jMFLZUG&t4M36Q}H6N@hLenH4I|9Oca03on{ILhI7} zl!B?+egRp=Y@Whir^=?}M@oMg;@~6P*%l5ngqsb7NKQJUEWSb61=zXjkdri4d!aV( z9)7ddkrPQdw3MPWP;8ITo}y)uBd*K#x97XW0;Drm9JjU|nY>hVFLcqVx_9#zr%GW3 z9kwSNiI_*YSiay%=YafRJd1HsUuItbcst(vz^Nj_kSUGJ>;>(8l?3ygTT0D)g5OR^ zVuMT^k%?u5uE{0v!~4oGu>i~*z-$YCPM}v<$YZw1IwSXD1?e2f7o@X$k87{ zJ&E=x?8vAzFTVRAKUDoGEoEj44A!)N6(F7rwTT4`&Y~X|9^4Gz)|oWFUtm$|klm>S zedHp*ipMv->!HnkYmfNMUpS(=9>R@gJb?_{dt=n!!WvNct2q!9nF;b=<*gjDvG*Y% zcqC0pWWRzL=b-daCfc*6Yd%4ABozO3#ULPZ#1QDuntGIhufiu}zInW(IA3g_QykS% znzheSTiTnT-<9bXUUE`jg9_BkJ2Xu{(Ge0?k=8mhwexu7sWsv{G{H4xff-k(_@l`E z4Q0bYYMDT0-UMo0kV!SO;59L^P;ubqxL4|#?3KQ+rSt))u#5>kQ638Z0RoNO+*u3< zDWSk?oskVPrnxLNnNxygFQ)6q{#_mhzc_GSZEiQrIE&c9Dl&d{uy#eH8kj=M1C!m=CFzDh< z9c=eKH)^F%q1Y-iyZnF{&$W9{sPV)uVOag%kDdIl9qcD}QIXyh3c#sD%vg!@B@zKr zY0n#pp%bXw=E?>TYw^_a6|YR(+?h`(PK5yAj4x)r+f}DEa(JgIEsymQb+z}+h3sB+ zw?$hTv1+R|n9%Y6*a%BVU|DmEL@SF#iR6_8=bY=;2fw{5Fg*>KS}5Hg^xc>k%l7TZ zDaG%*PxHrRhN*>qt#vhMj1|VT$>QPdFr`PX{Ce{*+|j-ILVqeeaYetm zZl|fv|Qv0O?zAS{BFnZ&ShnP zoD+f)UZbLgr(7JgD{Tv#8Zb{ty)X80XjD;J&3T-{@P?A)ZClg7I9*>>`T9|Yr(t`L2N~EMh#|%I478};^3#N;WI6vL{FS& z5I@2BVaS0i&k|7(Sx`e#-ik}0dn?vvyT&FnXwA~`^TH_;Bv^;&r<_+O5!hYn8Giog z@{t(@@dsoeFv9t=Wiaw$#BR9%tIN*``k&SVn(NnGulGqE>GzF|n#?ya96?IBc(cr{ zItB|c_y9(-S3DW{vR|uS{YkrW<^^z#(;%mO!cdEAZYNeztOPaDi+CUP4V2X`g5e|@ zYf9TV<9udZL*2z5MUs+Y`Oz@oh)g#gf+LmcNMK10tjt2_WN+Sm#gfoBx?561tmWgQ zc<({g`-Ie*l_9;WQQ?y9I)-iaQ+ClVTJm6v;Fi^2O<77F3?=&9I-8qc@jd-F=Y4=| zXeRZL2U6bO&}IOJCa}v z|MN*_w_K{P`g6khs)9PUa zTI8fZJ?yj7_q{C1G2%T@?_H%y{!<>+evrqT2C_zS&7ESCN!%I$^0aVNX#LKyL=txoOj*a$P`Djh67%f@e;$S9R9sy6Ke+B|0j>~!$?dn8{x8qWr z0|cj?3NR|KI~_Z*fL!U7tGiBAtkOg%7NCgB$+!(g(w75)Bh>>gm$}k1-@L0obC(cL z`cBtbp#54h!g(rTP!AC;!tS3x9=%K;XfFm~0#y!ovdI zxpUZ}5)Rfv(Vq(cgwnJJiQ>FDsg+5Me+E3cxw?~!!Vq8qgsVz}NS65?EZ|zgvW2ZG zc77c58_ag&55XnX3|bv6mM)aG`xu+_WN=lDu9SF$3iC! zqLQ-88!c@eT|IpR!%yZGpDnFG)=thYu5Rugo&nzigMvf8hsMPIjEhhBm6(*3os*lF zUr<<7Rb5kC2d!^t?Ck39>FxX7KQKNqIW;{qJ2$@uTi@8++TPjSL!6wRonKrcude@+ z3k!h#AI17FlKmUG$S`uV%4UTQ zBJe_MfcW#dBMl|`R?{O3-V{h!z+Zfx8F*x`9Tk)JNh^YL!u!bzsoPcsOe zbzM%C@(fj7Jc|24VDh6Fk9msMjJcs72)s#?e|<`N{0?LmEuZs!Q=lsPhaCQIAuP|( z;tLMQHhTLc>JAW+eV};<7`+|cWV!>8$x;;*wV5TLAxDtscK~FlbPpfu4zP&UxC0<4 zu&neAT&F>unvpp9>z68})|(;6wTDC9fT+3fo}& z@Mr=-8TA5p{geV`F~?<{wiek zzsJ_iD{2TE)fCt8>i?tSYjh3O=QTNZmeAT8~Ez_KQY&<)a$!wt4;`!1jFwD@2eY-POEJM$hfkNI#E-L z?pMzx>kY*|&VPQ`lcd91fo(-I0zM!pv?^is810q`Fe7yR5`>pZy-w|polEl$kZS8I3@GJ*H#54I z9SMw#jaWyeLKpSmLCHd95wo7RUsp+Wye5LXnI0pLyIYxS;5_NUhcyud@ZAX@xYrF_ z90&MaS@POe=QsU#F)3W9{?&9cWIjwUSW?a&e!&- zK2^T|!Z7Jw^m^1cQx=4=AyeR^Uh#*}!v5lg{`;QyjaF%@*M1sTg3OY zx|{~IC&f~HW})^}18;Fw2xMRJ1%oUCx={hu8J3g2|I8JDdmz?ReOy;!I)J|;Z`M)&osCmXOt4VM| zfof>S(OKiKS5f@Q`Euah`!U1oekUH*g(_FKP(u?p3(u*^1^<{(b+3brc?fZQA=qn0 zY0i_X2_X+7@v}J_eS}O<{-gA*?C448-gK`@#6?;xzqXs}73;i#JRo~Etya1LA>Wgf z-}BhAW0^j=i%y|8k%ENIJ$z`wn$gUThd^=ggl~y`OYG1dq7V-XMM#~WT7pg zVvo}B>0t~ry=0zKl()7bjm7iAUWUj z0u*=4_eVX;EbyPp7UxYSCF-t>R1tNm&#<`a9cM=b4Gnw0uM_k2HA1@8n7UMbT)c9K z1$E&Y2?!-gBXa>o#DIEyH@O`B*X;nM8_Dc<)B&4XsumtjZ)Td*}+^bbD-hPq1u+(r5r1FAS|fq;+P8Q)IBXiwfy`~iDD*0qnCuCsq8=xtB!r*mjRuh zu?OI=N@Nd0={-`_7C|RP-$k~A&<|UP5K*eX(MDw4uJ^7UM!hsEl1GH6AWZmzCCOm6 z;BH1CL_&zrPECZW&UjF4zSY=b$uSNm!t{lEkabac}%GI)^+ek8R#Cr+64mJ`$e>qn#|VS^A~@V zLeK#Jv@VExHI0(X02=Q!MrP-5YZ0qj0*}Wyx-!WfByKfy6J;s(_r|;rQsy;StHax6K+i$hGTX@ z|NZlRJ@ltY0mG*)vHo2HGZz0K;vx-A&;6mYbkP%(n&W~k_i^J#Mg2k;^PWm>UP{@p zWAV~Ky6|Q7n6u|8km*@0uo`~(^)Tf-O3Syx*k&(Y!^|k?4$vwKL_T%_l6yPlqu7vM zMed}ArCeBtVM#@CS%PHV zbq^b@Qmg~#qAM_;GI#wr%9JyB9k=f*io2C^d<$9=x@j+I;2;F@Hoiwr!pDG`-4^Te z)DwltV0jxOp=-o=YsVqY!g)w9h3fc~8~JXsJr$Yx>~9}DzLXE;tjmZ(ka3?J3?y7IQrN~F}r%&QgxDDAbB$|(>*{5vA!!#u-INXwqmAhEKN^O~ySzBb*Y#PJ{c#6y=6ueM4LEsO zhLE&C1iyy|ha5$94L)Wu4yBoRQ)z2TA0SyW>-L$bfKrc$;>WueNvp+*->h=KIWIQM zJK8>LxdXWLsGvluTT8ye6H9fUHdoZ=TO|zMgJYDjIClMBpBW91@-Q`|iB& zGke}k>gn@h$~uh@83E6SLBcWCgoSh+?D5nK?RM(7m%27=i5u`2P2IrLG>F7wf4RR&dxLd)V}o5bCPLgEG&eeD3XdLG(0T6;FvK7|%;V!P(}hz? zeUs;pqS}{4F4v>lK`2oe4@58UEW*@89K1lE&2ag?TaK*hhl*x-%^jeTi@n{KcpQaw zqcw+wto8K3c61wUqF_d!oKF|}o)T{cajPGT+PvHo+dULR7a*aKJnG4T?2PdHjfdrEot6>A$=M zQ_U3P27diN`4x8Y?%nI{_R-!iWOcSQSPlIdVGj7aggc)O*<+(wzWR=)n>rrG)+L4AMQ%daUxOqV6yF9*yl`De zUmGNq`dZEwuPN;W_xX~MLUl`ZOOpD5Et?De zX1w5o2v-`5r@pTJSV}Cc4yL)zbn}~b{_#zJ8*gh@UMTvbZcF$Ht(9}nl z)!cv%v-Fp|^9trk%rEtJsWquZrSJLhDLP0~BeP4pvKNiqqm;Dqv64*>OYq7)~`%1~V9YAww3M1SrL7k9`<(9@d3TtEmoBX*6p} zroH+3bcG@M1iQj1h2Ttv#+$PO5me~peO*?VJLvJjd9Y_QSNz|cnnkVl~S>F7Rhcn$|osLav^1v_hBJL|@b6J{OJ zXP6L0R?GHhy%N6BDR1F@*|eR)b%2|R|BcvRY2@9DAA%};owjr)hHA2EZVXX{3)Zcg z;y4B$zP$>)zj!czU(qS;n{%Nz$Et)3Kvk?}y7p;KI)7KLi5k7(g1yh-Cd%)68!PoI z&R1OOh|*hc4xh`n>0THV!LSX9r$Bd`u4OgzElu#*a>viF>g)BsIl7Q1L(qNQzQ_8aa1WA?f`*j>J? zhtsWmAaV7`PYqD`6DygjEM>PjYtaLDBPh<{{472_pu~gqtib-9gcLnen7ga1x!cML zZ`sP=ac+607{jCclr{0>W4lEn3z0HUH2|Rg=A7w!8X+*m7iZdA(vqsmw4;tbrl~nm zJ1Fukq-rl8Ue4c&e6jwzEvhfS`^z4LoO>>uDpv#)G#f6Q#IcD@lr9=jf4Xn@ENL=6 z%C#I18HOm<|06974fucv_G^Cpp;0IIOdVG6c)KOuATJ{OTUfo)J>gX@hFUM*L=p-S*XfjYOSUAZR)vdiy4AP(wrOh!U<*sp{R?Q*N^$=9NQ-p zeTBBVov1Ni|GdeQ+D)A2j`0XLhrD+H<;k-s3I%Y{ZY%SYaQ$Y(gyfDX*On7Ek-vr5 z`&E2w7utmp&cZnbC;RJprogMZ-K}#S-jyck?lD^C;jMRkI1&Q{glQo`Fd!Z%-t-AP zKhWmT}+CGRe1_7HsWA1&cNx91UBvy39yHZfqE}lk5l&5RgV4cI z`IL(uCnkzkoI610z?AUK=;7$W@gb0e7|(J}a)pbU(JeW3zv-sQ{e0B=*Dm-9tqEPX z-`7k{U%Lb3a-pfwHC!g>3D5g+AInsWb{LSprXEsc`94S8Bn*J>BR+)YsZy;pqFlH}6%97|%oa=K6axq=XSom@+n-K}iX zCBi=994@K6gQ{RDpwf*`fihd-!cf$(I{(XbddK>Ol$2Fl@25x%oJvsKKHd75F8CrO z2$c8m$FHYhL(%C2LCnLO-N|)Db~XSp;WyK6=(f^303mPHvCFOV9Y9J(*JK9Gjuh=o z@~fCe8D&~s4rC6OqH~GJ1En6$eE8x6c6u{a;xa5vcq?+U^1d?Ft;+?>IY<$2j(&iYfo)vBU4Awmb8Rc|kz0UccBrBM`|q2v*eOVy8>t*+30W5ri0DPZ>qudO zqKpp!JXt*J=(uwkssfocKFS1^f2CAJ5vlnF%9Wqq5Q!dVkuCHM2 z-T_FRbt+mtO7r}68milBeG;gg$~m}g=YlsBEyPRJWhsC0|Qld6kY38hxr*pvg8 zCqLO8PablmVpjZIFv!BCPk9G$o>6bEZH*T_5__ZCe+MYjpKEHn9&SL>9iwnpr6kra zLZ+$sgoh>uW<(P%)mvdFuA7_DO_ivx?G)Q3whl^4PCd>f^8q?j=jnmEag$!&-=$gYWjRL(b7R!A6x~Z=vu>Q-(+$Ed}aBYZfBh;Y^Uuhd3zlaBV+9 zJ*Ohbbng&+Ezty7C>uL{>uNmRnjV=1L@%qgaXpr5J0!zlWJUTtEM2>me+QrWwifE) zatN2yHa`#wc_@Ib#ctLGV6H%4rhTvHC0W;VC! zRD;YoZnm`F&$8A;uY-sqXUsWneYI*zu z;OM@n5>dWscQB%2B5YRiDo4s2AY{U9g_BnvE-jAIR*wxQjl?X_-1}ka&ChKNmH)#z zVJ%wa)3$mCFftnYxjB$*xPJvgqR>h@7;{L1bf*)_m4W`47|OF&8});IXd=BlvZAx% z#VE+Jxw0SPGkj6bGc~TAJlH^_JU^pk>H^+_bTQ0kEv<8-g;>C@{ zW#(9`LZ@}(wHP|J5`jnY()uqo0++(;1WjAAjH~SfBW39m=9}*T@^GaKz9?@E7_jbY zWx>Iq=K{!OAG^U-=4K}WwLhcj^E@LapG)u_;(svTdKOTyLhe4;g(mi=ZN`Y#$RPMa zIcKtL9cn;B^dt9of8R%?Ae05h>(R;yEi=ssEjiNYvsQti4vXA2in3_f5;AV>697^T22Ib-XU{FCVM~e4!}5i2Qb;fWD1z1EAOB8JJ_2t z!Fq<4?e^rziFb&|wxZqBSY>u zU3tNh@jKgEuG095L3^IILt&u!NRso41olhuX6%F7{ zDl4-WCS@zt18B3&anD8kEjgpL?+|kv5c2bAvkq6~uNbrra@Uh<-g0TfQN`M^LLU5Y}$ijIFMgJ@t z-_u=|y^M+I4q_6G$BW-c!H#l5D2Cku@Y#c0d{{C)uX z`_MjpsKGi0xO{WAiL%pdy3Li8`Ixm}GMeS?Crs;7j#S$CGd;|BO}LKzHoCDSP}y7~ zSkK~WGKSiL)|3*tFX63%koGHD*b}9$-iz0rf9FR*>QgjMT>(vU{aK8QPyeQ8u?e8h z8PBG@G9e8xR`AK&n@|6KKeL?u`%L$I;G!$zTRq;oDC-|eOuxKyv@JTgw>QN`j%a;u z#9#SxShta$4TGFlD3 z&3vK!G4kcy+$`VF9l*^>hlMRj8IW|o^lo->zN%o5V-c^^1A`L~U~&Y9ReMt8m&My} zd()3*Z}SIFCCgtB*eygi(T)fR?s3ts#GM?037vRtBh<*zMoXNXh>BP>9LKs50Gr%P z)P7ZU`XSZWZ_nt_>H1rCbrEr&)R@Y|jPFm0?u*(2EFU-OeYC`zJIoG0$4)P`m2i?a z2?w1z^4cCK6k_uJD#(mG$0`eHK5#v2|GWl&+*I3l074$xY0TlUJM^D3MEz7d{}zL zUpJaU^NseByaNpmkKT)u=RaAWBs0`_{o{3XZy1Bsy`m@W@5KQU1fKfBT-JAh6MPIr zQATnH$Vh_f{3Dth<>0D7Hh66B0LE;X=$?&9`GHr2MvxhN$l3F~C4hTWw|a=F@FWUc z;4LwBwj|i)WK9)un+_w^ynbt(X)Ixs^;#*JQDt^G4QqGUX%EeO`^$8ui}7(q6(T6O zaGB)5miBlfN=wlK_!4VVz(ej*+4u*wNB^#AFv6{akptn{v^rQ$YznHAnGJTDL$HrBI?G!CF_MVT>q=TKhN<$A@9I*yxmKB~TJw~@86xwq z%0F6?@5LbK*bLjHR!Nm~ix&?P=UD}wD?Ool?-a0T+2R4|OaGqK)@3Wxb)2V?3v!*0 zxTUyirlW1xY@n>!B)qUO~LPt-%LOq`KCBp9O!_;O|Is|2q-xF@$``I~n z04oJ?vWO#s>WaDc^Bv2tW|c*F`nhd?l1ybUW5pw=RF5E{n+Zb6XR76Zs10GcXQYsPL!*>8aGS&iobthE zU8fwqVkPzu(Ia|{MD}?h?BxU9^8WNwy4&XBrx;|`siZvyN4eD_c zCpqxCjkPRNVh^cVsaZyvUUm_Ce99p7$fssBxq`wv|DvjBnT1Ejb@&1X1+epi=&EI=b}%(W#cASsIMUlbcuAe$#^GBR*Pz0&Jfz{ws-0h787vJufKl<+A1(Pq{HD#!+uliFW-Tl-{f0HX+ zMD1`}APYy6^5uveyYS&WTQ%?1uMcFkKD&bn?|}PyU{p{!CciG1H!K3BBQP%LeA)h% zX3Fj#cPzw4+R!nf!O~X;13abKAPfG^)0giBzJw5p{<#MZM?w%Q9ZVFpVrQ5{eV=>} z%CEFFK-IY=6yfC8uq>>R)}E5W;9PcHTtKMW5Ol6De9Ig&aTJ+(l>kuxOHQ?=HbB5Ffcoz|F&RO;Y{w&`e32~=Q0ni zH5cVR6)3XAtLo~+$$nVju=qInFk?ne!9;A}=ajO9&{2zqKxm4wMKvwaE1DSLe(m?! zQttU<3X1D0Y~~ai3fTV*Z{y$cILdjGK@tfu)3h|_mf??3MLiT)S~rYcXz$Xt9kV*7SBV2xR6pA%CQgPt?(zQHLBdJ4|j@ z>~{c4y@LN+s)%5A!nB`Au#JqegQY*x{|flQFX)%TSnKJo3&Ur&Z`{+qeb6Hv3K)qz z+M9drWT+zXye}DFlYRv!T_(RuNVpoNaZhvPFueWvPkCtOr<$A z$YtSKqT~AFUju0<^!~p1gXk)uQ4#vf0=NU704v}LOtuNU`M)ojBJH)_rso4~ zSqjMC1ZDc)T_q>a6-tC{zFZe?F3Zo6CNSeT3naVAvZ4|EwEMJraICbZ=hO zJ^eeQrXaK)@MyZGAnPmVat~i31^nx{(vSBkc3R<4e|&YAE`Da0rMslt{y(AnjOwPO zWh&i@2G)KSM0K{gyGu`U$&>z9xs(!tofI@e&(* z2SEAxp9tiC_6z@C|1Ot8taK+YkdPT5l{#I&?4fxY2!)EJkE=n`b6Z~iIb>Vz zFCi0QOHS?6({xioKO1`kY>r%hJ<%17ekI%eCw$G{yXR+kbU0bSyUvFBF>PlxyRPme zg}lPtB_*%?rQT=$FqSwMsRws}hgr?(Fi1}nHD=pia1GkkBB7Mt?F1?Ac0Q=el_We1F)Y+WrbcPuazIZR*Xfk0}-G0 zV&>-DYpjxZBW_bF_ps8QH#Z4~;PO1XfV8U1pMLn<61*1NGt32x*(aUXxAx>M%{Jz# z%gzDwbBpQ@{eDb{`&qLj|7l!^kU_1>oJw224a%=f5sNlXLkL z?poPN`v5!r&CFOUuN;hzdU>Z27<4|kFG0U6v{33O1f_bv$QgYrFBndTHeQ;xrr&^6IgRk|Q(;BQ4 z`*xGxDoQ}qC${si%3CPTrmoSD4fK|$31x>nJ8XkdX39KR6~5eX8_rhmFGKn^e&2$t^N_ya z-Y5R6xUWle+my>=WBhx6{zZ-jO1KNYK}HlI`(Sx-n6$ZD9t4m6FT`cE^x1=tYcYIK5bi2+!ChY=xUU9s_-R^7}=DMY+iaLbhALeAVt?_&=6!{%xR*;Qey2CGq}kw z25{aVk!i?h_ff$P9}BZU=q zsn^zz$qo)n-d~P`OWUX^?*LGiodK>0gi?1HNpL#ROi$xgeayfzp=ASDKcGL6_R$yP z@U;|jyq6fMyjLb*ole8sJP%o-2gPcK?odDb8kTw2p)l`Sd?b+~8z zn#k`SuCDFKZ-C}IE=ly5xa9Qo3xgfHa}0siuDncWeeHJ^RCUMF4=0u@@tMBjq`A#^ z+DA{GB(^K)0$vi5emML1s1Z(kOZqX|jTGKDNVdG#5%txS)1j~8ecS)ARH70Q93a(nOlxMd+1I_87BkH1rk#<~mJd8djh z)Wyr$5?9vilY7JnhQm*^zqRxJX( zFct1esT*0N(+{9}p-TIq`yLiSd-zQ2`zb&EtY)`$nLfgmpjK}9MQZ-+g6S-0gnYNw zaFa`9%7l^~+gq}rQ?{iM#oy-Z^}DD~2)l{SWtIThsy{B}l>7GJi(Q+Vmu9X|D7TJ9 zbZ)#5)-Qg*i%+!`4>@==!NuUCmGhhQk1dbW&mp@$`wdHDrqqSr?o;#Iu&LCUpxRVI zHF#=uBe-txlZ1SjaJoZ88NQnYl=)yG9FNlxPovD+q2do_L#n#eS%%cT=w#wuu*PJv zQf=VyPx5;jo5ai(zgVIfj1~yK)c2~ztt70wUGZkNE<*y_h8YtTJX~{c_Cm zHL|%g>tvRVFJ2z2=T_KJXaJvhf36)DmZ9>tj@5;m7Q(;_TrcChbfMo_gE70X->qMA z8|rXk$3C4eT|99w3awABJinzpDGzSuSj872ezAqbhp9FsO*3EOf3(xpofT+Lj_%mU zjK2PDB0D(Bzmc9Ip3UGmTiH^~J=)$Eq&K@{$}j?2c57z*+SpS8&umR#R4EqBv}?s&8)G~j*nn9G6* zkttGlX(Q;!C?sy3kg!R-o~IJCm;YwH{1KDq#j*Y19UunizMSrYHoODGN{xq}+#E;o z&n?PZF!`f&yh;iA4(Sh>rBhp7S|cZ}C<(~*iXdSCEe#D*PqY$>sYCP{Gygu`0k9Du-{RvlDNRg6koiY) z&@decDadm)V7}|Ecwb!ULN6n1h+m8Q6$fiSk}E#CaVC@+!F5v&^`2XrAi^hN(UfiSkf$dSD)gm;!HuXgFeK&|0IMea!zaqP)hK*0qXbeK zEr`I2^wzvSsDla|P6#Vi)rEJPJhIWSWeDjI+fympe6~GyrpFGCL~rXLwN{%J`ZpSz z8^&z%l01G@|317&^_e|Jg*Eorcr;9!Uu_jg?_SiUA3EoZfwSjKjT?=8*m&n=1>kIdNL&E5~F1A(x_XZGnSJ_wW|70+^DK> zqrQZbHoaTD$57EL$4+S{*@PhDlzi9k38lp$zk zcc*?k=CbtJme4rqWO`j?@|f<3CSJmTP5zNe!Yf+9P4}l-Jq}T+q)@IN)C&Yxue2~S zt{f!dhNc`lI5W{GW&dNpnx%ORqS=<%ZZ4{2@{0W zMMAE-m&s(!4gL3$qh>iA{<3rm1c!i9!=?dEAuhiDz|p!C2>8w}8PiPb`O^K7l^Gz$ zDIJW;X4UhEu8V{fxjVHRPU=GU!RunM0ClAZ?Cx1Nszg|!ueC8LgKrPkAt1yKxd&7*xMn!{DMhzq_1 zY;{?H$4gNzAKlg$qVVM?yJs%0Z9G#h9~6BE6=OAzpoLm`Q8?az@r_+dki&EtvI+U^ z1sp^jUR7sjg+2#lHQ%gHSNddnzi4ThDBG%PQeBdwvSP>%^x7c{QZg%PzxKE83zZf^ zs&*{%R=}4F3m>@9mp1)+YE|myz?62&vg~ere!(zN{n4o*tNF5Pg}hwSWxb)KSrmjj z^X+U@;IWeN&(!M0^?UTj3?dVQ4Zjb>I?7*3z1&wRzQ3m6t{2=Yx#!D-VeNzn1L+?K z3)LY$Ax%4(h(Vf4T=hO7LsiBq^-ZMG#-CQi9^>C;o*9`i0UIXIq}(v1RHI~7qX_bg z2fowC&K~vd#W-%;Y{1M9r9$Fn1YNXWne7X zd)Gx)^L9-a%B?*f63U+jm_$7@IQzV^f(TrXR;gm`2LGi3FuLiSxfcz197_rpBhB=4PSC?8J}J!sfFmuO@j_EbOUgy*HC+Y!mwy?+ zUqYyvoA57} zVP5(|?zAl&7Y%_ARjBqyT^zqx{U5OE>B!~nu}5iHm~#K-mxE9B$L&fu$n z7h>2nc+Z*)ITm%F?HDx-i5WzFb! znTNH+R6M>?JT)frY6#MwhNgyzlHJV8e&#OTr#1d0Q0WN;bsgSfROyvKqwv@rpbKpo z;9k83>0a{Efip#}Hog*!#>79fVp%Mp9s zQ)iIr2w$~wq`7xu3Ho;{CnD;bw-I$nEfew5{&iINQ-p1f^y?~6mB6d$+S+a#Q4e!_ zWB=}OQB7?xymnxas0{Jhu)Zl$t0V1ELrWsb9EvXHN|U(|FmS?5WmEl$0D#xxnM%Pv z(4af-i_h2pRM^d}wJps4)CLoRYk^Q+HOw_>jsyC4If=pKti)WUAQFlf6zGS6+fCh_v)WvzDSzH_9l? zYCXfc^RnBQXXfx>axCzmsq5zO^dV~H{B++*m?C?i zuC`V6`pUWTbU2|yozY;&^btI3cx@AY8SJe_Rh1MxpARk`bZPYXrpUy~{SGJfbtFy3 zO;Z(phVL*09`1g0ao{f4Zpu7iSKBZAZN^1E(FH8Wy6p5s1N*xHOhUy?va@b~JaV>0+-=RN1N( z7#urald@`3F}t{vO7H{jueZ>>Z54#f2cb`V2=vcHtI$KDigVuxL3D{(iIz*XIiMWp z7l8xiQpJlqMO&2q&GCGgCEu%Q3=6xw*OwiR_A9@wwYeY1c9^xOZuK!DUj8)i5w~_k z&eqW?Iy)5T=sDR=PbET9d`5>^=t`n136h($@aoJ@6Wp zX>|o`8D((t9l@Lh!mk@^UCB)@Xr)(KU4I%c8-(!3V!v*_0&;BAx6PGj?c~&`kD_wg zI0VX$A?h7Hn5BI2wPm`u8q%u(IkCp&ZaM(gKOUWhczhXRz8yj+qXOBZ=|4s0SW*sp zTOz5J#Szm{umuzBPBeGgc&D0(4}DL8LKBNJtBP5i+0Q=aAML1b{5Ix)nReb{F2*cw z_eSB&9Ey@*wyo zi)N*%DB4)GV-yFOciL%6h)|52f0tcqCEgcucyw^Q9W%1LX~(zqu%B6p>#1&pGOj+U z^6!11hK`z`O63@jT3xDz{YM*f5AS6Cc%kJ3lLZ36prGKR#TfNx>4KOOR@81+ZOwFQ zJ}dsvE1$lR#^8hDa&Rk6q?(-!5xDUj8ph|Xm}Hm95VPy1VO-2*)ZakJ@qSM4!R+&V zJXYeH@&LUR_*c0sBh(9|1NopA+v2ra?ZHL-AL%Lm?I4(h8v08I?l&ukuQX;Y^Py=e zEkY=AU=~-os0oB>Wp9)cKGWGok5uhu#GaO^6}kgFG6gkqH!@c9=DP@K3fW6)URBB@ zJdOLIs7G$g*TMY|geE}h!KAog4G773w_p_ehp|P%8^}Z8;+w|FDCl6kJ0s0{#0)Mp z;z*_UK(BgCXXqFL>{&wdV1R~a^F|Z!F<*R4WYOd=Pc1JMQpZ6`yhmCf7^jbz?$f7> zs!f-|ek`cjup5lyoASSX7cRmOh^zf!tMz+UlItTqN%Et01!Q)Hfjjov^3RWOCpEGu z7b~0jw7E*qa`Hu)4h4Z`l$dD@rh_w8|tNDGO zpydVm>9WHQYQijY6q-3UVJuW2lYsm0&7YWC^1EBEC3Lr819v?)BSwQ=ZXM3JYzcM4 zG@I(7k-%z|r~Z3ly3}SvF?GlRth9(;^=6GXeDVDrzG}XrZl`XG_RAQOL8;a)_0p%V zW&?Ow&oyROi;DYz{&lP>VkAk!j+Zwt(o3S!oX7uH_uF!^=cR35KE|HZ8aE^D*P{sC zgY~B*A3qClo<}EwEWMM4P8BXx4%e-w-J9!IhBZqB>1{UU76lv*YBXKJafew~Tsf`V zxBP|%7q_-(V7h$2FD;6q9%&0pWp?NL*fcJ*f^UfQczjabFQg?=6X;OGL413#9qv~4 z><+L>5*pRT_Yi3)#nRarl$*D($SwUOL94N*dHjeqUeTa5?Kxou){nR)#y6`mT)PCE zIg8L!lo2G^3&&?kFJUzX6|JsVQ$KMQMsL(q*VgF&0G4z($&uLkbwqYY-{0X_?|D|x zVzP~jWAT&nU#%?2Z8>-#h8=Q4Qd?uSs9V?0W%r+rdw09z8w%7 zBUT7}G0~jppqVGzXmp)Ngk!BLNQ^ACs)Y0&31e;Xji^N{2}t0>x1{~|X#$F(ikB0O z{1=?7(s+?_mb`vzYD}GmcCl->5=sc%_>v1(IH8qyea_+~J-c8rmIZ;F#i>B-rH=p4~C} z7WU4hXMT`^6;P5?P^wp<>Ne1L-Y`egMCJC%K$dqg&FEQR-VGR8$amY&)>WHquM3@k zgD`Hi&{yhs^%`<8C7q2S29jAN_>#a${Ey3P#y}6DYsv=s@jB70y3uqGE|gk@Khe02 zNMF*HmG`8PA|uvU@Z_ipZP&brAs9ZbuqsYXTSNTxZs{hu_`u=48aV_ed0N<;IuOzk z6PY-)Jbib0gEoDg69X+@oGQKaMvamngW*lRj8ce)v4!$E?w@3*N_&b)C}#Jd@|sly z0~4=`>h^feUb@^#jOfIUA0GZ9!PSsYb+ z6?O8KADPu#BL@r!{EXqwV#Bv&-6BhBGvGM6S`XI$Di^qF8rK2=V%?riF(TY zT0_9^6fT&C8OPA9;$OP_(oF825PWySF2l!@(St5|m=g<{{rGIO>)$m(H?aM+*PrNN zAy!s%k9#739SORk@zV~VnPtlBmLl~wOwvQhu@#YcW!CNiE2+P zf^WyWv$vb_LlH+&FbJh7NKY@ml_5c)F}`DCxO)YpLiHj1>vQwBRok0pvcI=l-i311 z&8yBJY|%ElQ*G)UY*$Y($Scv+^&u~s6zQc6w<~kuk?0tIH?gzKKF%XOJ?+rE45~|$ ziqsBb)4BMe6U^DJr?-Y7bHkLnC1mKVlXQ9mGp#O8<+2Qbyn_wPA8?=o`KW4oJ?qS? z3jGvI%DqV)V_gCSkjYyN(bpYC4ys()ML(JlIuz6mx*qM;g$ni;%M)qgovep<7Sk&i zSBCs7qixk1$Ass&oS#kBqDA0_(^kJ5VGMQc#d_01%rO^m#GSB*5v1gfr0 z{%I!mt@bIK-*ao2WL5=bg#Q}itf(OO*Yoms3Zm(lX2Ln|xRH#)x-C{m&rr94PMiB~ zq*o4^YCpLS&&~BM-7GK8)Q;&5Eth+(V77N2SwP}iF&JXvCiYryE_fXhqPeG%vxKDY zfoCr_&uA*S*bG|L9Wy0t{&cpGb)%&SPb2>5`@4}bqZQDA5UF$)CRQ>`WDYvByqp#( z;3-Y9tO=u6JO4FPxsPV}5A3~nRFi$zCK?4nMSAZjMWiadBPva#sq_*>kP<_rcY;*u zO+Y|EdJQ%75;_6`(xrypTc`m-oco!XGxNM>o%dVkk6CNJnf3g^TI60N+_`^k?`vPz zwMV=Say4_eJecgvHqdr*rh_B#jgL%nY>z zKV;hGxkQ~3`xJanysH;Qoa-142rh4su=)YW(>f%1dw0rQ7CNf-olH0{!_gd+< z_@g8+RtTJG?e7j=FbG9%cnb&%?FjBVm(eO9Q=S=|(SO{Wc;9Duqq=G2yW7=D>Oo%^ z!9yJo=-?tTWJ#ECQ;|fD#)X{BPJy)o6Zy>(Iu|(`hn|1RGQ`sp@<#2a+ATLDc3BxA z$hOSdaapi0#jhqMh2}i$t7oGp{r=rhtx>ID{$vuL-I1bT>HYYD*H*U5&GFiREU_9T zc;$AtORCq!wyfn32$zVCU1!Q@lXpB?bc@1CvQDH6SMO5{6`QDyD1M2RA9K3lRCTu| zlMtlhFyz^UBF7nJyN545s2pt)EwfSJO@ob)TCCX&rJcHSczL{|kU_pEk4HIhO7V_w zBVRjf^r88M50y_~gMUD>wHH-CeTi{06TWQI+o1)B#N@YLj&Z-;y);_VPe)%UF&G%; zCR6&k_J4S-XWkKSo~BHzIs2sq$XMlMdq4q0dvHu2C(4vq4mu-EI{1U6! zUG4%8^=10CZ#;7L%5YuhmR^`DgS@mJ=Sk^SSfBT6F*f7OK2kcY4KakD|N&;u8d8D$_3^fkOgj&G>Ex`3?^$+N1 z3yx)hpBt?!9@OFP{sAe$afzvaIrHG@*#i|fgn=T$C>%q(F{b-L`=|#PUpOwt>3`$< zdTe}Ue|f8~!>zX-NXAEA4rg~eMYj-nvLzH>#D z5C550|9*x3vyT4RH~tsx&tZS<=l)^5g}nb)lNA4lG`#8EX)JcL(EC2}U@d4-lSh~W zP!)H%1$QWq?y;2IeoUmk%1PY+Sc!x3+X;wTqe#Q;`^em>e0tbt}{SS!c zSbt25_4wT)uR=SyGqpWc?7p9G!ZwQ1SIAvsVg3`W$Q|9O@5$X1_$=-@v-9D*SQd@? z-)HRsVfmJ&Q+&HqoRvUzZxIGW5+P_N<2^+pY|4ybJ@Q(q;2lRL2dd-Qw+VXf>k+#> z&DQRwmKC zWzt%Jy&Og&@FULQX3%KsBUh=3{)yRjufe~ zru~d3=TnKCS~3jJ3ejgyek`>RYo4*F$byCUm^0L1=suMg+fB2!Gjg`nd=axGZ;t;R z!4lyA&?(GJx`Dh*_?2rIh6FYPUPzd)CQG7^E{QnOJau1(K!U1mMI*CTdRF1f*fLcN ztaG0POZ{qCK>W&rRcP7BHnDRMvD&-RZS@7|2Yp;XV$~P@94c0NN`_!nrd?1Fy85ob zj5EcGFJG3C;WV0mAqSYm!gVnck+zOiwyPPdHqnW9lBZSP4G|v7On%>Dr}gGMSnt47 zu-(N-1+!X+)s~M{6FQvM7|OLDD$G^Hg&8JIE3)xcm%)X5V5odw|CWg(!14ww-;lOT zyTV3xRq9KDz3i&NGycLst=$l&6(;Un{(!>dLYeDx;a&NfiXpo#Jg>La0l3ZQ9;rrm zI!Dbfggw{ccdC#$qtv=6u{-+_5xcJ(XoSD!qok-Xj*tR&}XD`>p4U#3Y7|2`jjW+rnCE<7QnT?Lb&?6iYWv^X_D8WK%! zg5EZ{6KW;ibXxiRyXDu;AL(zpwfobr$@3d5h4i36IEJ`BVFqjz>AkgMx|(W=eh0Z$ z7OIM8B`ek~k2Fh7zy4*hhFgVSP2@kXtUIrEGyfl4b2n-_%=Aq#~PQPV`vX%|+s(7gcb zitd^IkdpKb+Ch^5P0`*HY}4ir-68mPnwgiuKP!Y7_;qT`pLoy%R5?l9J6d(HlNu9m z;@d|$xLe2eXc5bl*&>a#DKrH)OcDw5JPoK9_NUhu$pLjNY;l*mdm_oWdi3jVR^qJ% zjYMK*i#WA$E`?7F>(zALvo(|D5^-x@Y$#<9bQk$F`QmZete(u<0g+2bOI`x0T5A9+8E~6JYkh(!oe&zxbtZxngAkAiDZR^$Nh58f$ z<+^mDrB=%e_U9L+_3%)|J2+8{Tf2cT6XtyaU0L?*0#YO{m%(RJg;3<-PHVvAMBuD7 zV`)Z_EuM7dC)3M_?-ylQevH}{|7zo!2mJw`{ zyR#zFt*3|q$y0$5u__oLoTlYLOXM}P6n<=O*H@(x`AmWj%XwSJ!r}01O`@2HO#_*n zl*IT_Te6|N?F-grWAIcW!&{bYIm)qzoYRHIq7f4{sAW17xHZj+QR$?1Vf0GCgM9Y} z43^_N$zFxe&CYtdq;VO3$-fL#L4Myf=6gKm>v7yT_#^1AOjUxBzUGod(P>ME2e^Dln#~g2CJZ1-mUc3s* zgaP8p0h^|hjDZTRBkc*rppz?kD!Ka$uz+J5MSE~`!#7Wt26N+?%_od>5AVEpm;7n) ztC52%s_9}Pzpc>*iJq}u?rJW9zz8pVqg}WhB8x`8rV2gYb9D3>@S+cDq1c$G#HKDQ zvP{jQ)r;K=1*uLMSDq4D%!`Ds@;>h1II2%g|C-$akW8Fmq`21@aP)2|EN8-76$*v8 z5mw%iocc6vN%}KK^r1E2?$9QUM6j_3rt>!; zg9!@f+_QBw&Ywg-sww{+;kodDkSycTiTI}j>YfYY)+xB{fVr|ej$jc@mAt!K5+hRb zv+;c}?GGKdb30;?r88~N;LpHBSPGJY+AuSYWoOsP}IMzf*mA+y?RBTcUD<}}R?hq40wl|~l5JV$; zXlB1i)3VWsXaCGEJ++fJbGZUcm-CL(FPMyI9Qg7+HcMkD&{H_5iCH3<<)C`KN*2jZ=Ix{I&<|>ZI3a##J3(vnIS=mcz@2nH2Js)Mnhz>G;TWToqU% z0kPtMuGvNE!z(2_r8q)4`~}4+IU}DG@uoZk5%>}3dbsThE?%#8_EsSC#68eDtIQYvc5>kUZ}g|=XL(TgGm$vz_^rM{>l z2z^(^^<#F1+Ky2#w}MV@N*_{u+KL9lk!7d^Zz`{w5V5T5w=-HAv_P5gTEMw-4KPR6 z%9w>$QvgUPPUBE6pEz`ll-~=-Za_- z0IS1IluPfuNCAJsk7ssC_2mpW)fjOSV^0$qSr)tuYP`*`PqV#k4)AH&+isE*H4`#v zHO0)Ehxeot=>)>MhJ#16IY2%)O9@WH4u;xc)b7z8>cC2bw-YRrypHpsH?10<)M$D3 z!-!5gWA%-rNFZAinI^ABLMd(p?o9(H1^;j|?LA!$yUbg~ZnRj_VzQr&2rAm|`=z8c zJyb@R8*dHIHGtR*gnT%!x4ixfrI)ClzC`CeXVt(i7|9D%qp7F_C5Qmd$u&8L%q961 zL5)tudLyAJ3B=C8HZkmCCtO1F zu5d8@Oxyg-ZF1m5uJ{yL z9gJSu-`Otgp~}6$b_w3-i%|T6N!v_s)FP%G#TGBu!PL;9Y*sn6SW@5G06=OZ$&eh7cFm|U7q4?e&PSY2%@e#yyLg!*XFchaW>p>Wjv zi$2XcFp~gxM!%D-Pi{risQp;s zlt39D!LMRapX0;VQJt?-BzGWLHgQuO?47XCS2p_gk;EZ+82+nIv}*ipzdrTdA^+0C z-;ljprmMKVhMGG!-k!`imoXj=0QWy!FG(35w|ty6pI5Z!}+0QE)pv`8QL?8M|yD=(%&b|#K)42}%T$n32%`w`VD zP~jL3*4rX^@S{)YYYmJOdYi^vG+%C(mI>!`vRRJQ3OHMq2*p#pqM-uPr2=-Dec04 zrNZyNUI!CVQCs?~#z=oz9hRGMLwYIj6n0OQDgF*-Q0-S~6{Vv zBFr_PKPs7CW8^AdE@Z|NU_;qE!8bG!n>r@dKVk9}0lRM(L_53GsI$s#dO;z#-8q)4 zNsS~fZj4s$!Q8z%m?Q&Bn0lU$d~i15Nm!GZ_Ni22jEyon{Z8N@7e6+U=Dywm3vW0< zhcwYTEH%q?GvJhHex{@$HoZljSzTBA$xBh0^Nr}khb^bB3=$kXq_aUH+}+urvVKfl zT3`j4xXv?ASPRKOQdh;iJ)E&87P*!#s>fSblcC-5Jzf)x!bxwxHb}N%r{AxB&?N0v zfQ4NOci=f=lylMH!vbB&OlnP7S8`#`!tP0L7J`UT1rBToc*K_L-88meA;y!)&< zq80)9&}EGN5La$+`MsQwlcn}Uyhg&@{dFvV(0FOIPF7Q%cI27%+bl#`Fn9f=@ChW6 z3M#o925>7G=4M2o9jb=}jiB8R3mJ(?Jt(GitTR*#@h-FH@~c&2HLy{B(#L2#B;yFm zB6?H5_1vD7*iPES)(wEBSV!T1J*UZQ zW1mb_KP!kpn9R;1ltTh1bw<7U`X(nG?VixZiC%xv&2>2AR8-Mdq1)PFxd1WsRvW8U zr0UOc2R{xsy5w$d9yl2Q>S$9`v|s5WsVVE-rb#Fd{T>Z!a@O<{2q)&;&C@VXI~C~Q>~_=}hY$t!k*22tZuIe6 z%2xhV<+$=^x&eIlvr3jM-z?XVa#okmZP}rx!Wm6Zu<-hV}yt<%dXNm66!x5gd`{vyH!*u?~^;OVl6-o9~8r^G4 z7qW_w!gj(jO8!>*Z6e{GNJ<-eEN%zA!MsH-3ikQ*Zp{LV7PM5wD zy(zI=7I!CkNNFTqOR!}IFMRwK!`1j#F}FzmN!URe`I15S2|J_RWCJ`Ta!Ye@K=c(< zXkY(f$9wSZoxYI%4?j9=F2l$M4c{23F2SQHZSWMoaLU$1(ExPXYDYp>jmXP*^zu`? zN-q0PZTvu@^W`vl7?wUG4#fy0d(HBAt9p(D_Q+tiu2IR+3vv+_bi=+NYev z>AAP}3`e=0>OEe{jIO{Z<8ARz*1(e~+9&ew!&c=SmThs59I`j3?US!65L-ub`iapW z1()0Jda$WW)Qsz~CWLZ<_(R8<43>En_-!Q;rv+Zk&$_$Xu8)`)SXKs2tP+2pie z@nd`K9M%-_gor+Ni1w*AcG+!77Jf65pu@Ic4jVkNw@3$lrcBys^5gSjjv?BSs)ww| zDd^nS;_0ee?Fq28aPenP*pvweEQ?QM=GtI>W4#723fTp7wi#2e%mafN1;az<@^7L! zZpA#Iaue>8?jjkQz9AOL{xa2IcwzWN*6f3g?u_}CEoB87fqiNhpaB^cZE3Eg{V$;o_*+da9Ljlf$O&|6ZLci+1&{C3NtQsN#!lpu+jXbXd(=&l1k1Rg4g!%ar)6@@A+`@kald9X zoEo#5wv8~bFhRV?rZ0PW0t*u3WbQ5oY zi`LDmgMUU-t{%vrhP;KnvvzPPmJ6ks&dWSyer5^U5jl7C-fdhpYudF};pY=(bnk|R zC(6*DnkUf#v&(H#S0ZcP^2JDy>r27G!#X~C$6#WvD8DdATcKJU0251E&fu#nHjxI& zwu($tM@xdJAp5(+{d3jrk1yWWB*k|RKd`tTc<*a1uT+O5Co%0$z@LH1`)!H$Bj7B` zRz4WWOMr@Zl|0n;DSWRg>{#ByN%3$d-mf#j-vkDt%bIK2#cq)1!Z~L*N-7G###onq z7ZMW6PEnVbHoJyQnA-Sa@YOwfX}&sdTS2gD1jmz-TN`WX0ecNjC*#c=X{2(JyXAC)OgTA(mm@GQJ&ViWjlsJM<>+x9^r)I z%~~AsMR>BT2cVx}m8V?^SPsrhtetMc(@?rwbQmP5H;ySHm6D&EGRUoj^q*%BjyNuc z4EVKL?rtg4;@cL>*tgJAzSg*VNmOksSJ~`#Q-qG|vc50Qzjia{c`e0h7N3Jx^Ut$t zU5{#qz=zh~bxCRotV90%ECFuG2QxVUI?iO~tVUZf=+AvcpMS zR81JBj1K>6dtqifQdXy87@+;m*|86p9mPkEkJU;2!%khE}_<`cj z6F&aXgXqpO>~oi5R>e!%9hB`aL6;%XA$0BFdp3Pw1ZU2w20d>tm%?pHq>eMl)oL2_ z67!3v2fS7wGSh}L9W;&%fTOIKwNnKPuT~G&wYXVRvy2l6uxVU|zII3rm*$`TRC|ESGLW>`Q-ual|7$Q9;Yc7!8HhMQYw51XPp!;5FgLGEEk zS}jSME!E{IOUz$iN?JNUSq`QB5&%@*+T_W_SB2e{hNu8_RZYD7@nnk6VAus>wH-ob zJ36bzgm#ju`J{AfEv;gOe|?RU<)?vY?MW3pntTWekrtgK=eaZ>(L**PmW?J64;cD%^lpZ(?*J)Xvl{~1Q~v!IYl z7Eg+F1dM~6KJh!J2Q>JO_KTwRFd5Zd!R)Ph-tzJY+sJ(ImSFBolX0iEFV~&EGVZTt zz04vp%nnj~&;9JqnY?q3xXP~J#-dX;WlRT?yZqVM_|68s2#q|S0KLYz!GVPd&J?Un zFyE;0jh{9%WMpfc{B=Th!HpOVbBughzzIL;Ju~4B&!kX6j+(KzW7-)GB7l9%D!keAKf z+zvKFUTdGx;LvPmyd53yx*(cBz+j=w`fiyOpK*nPLl-lB7SZG{peH6Ls9Ssue8}#b zFW}9F9gapZ-&hFL`F8<9f|WcgsuZ>28AS8ry~gL4hQH=|Gh+Wb&{L%p_t5>JYf2y(Hv&p2Sl#mh5=9d5%S>0jlR zmg89uaf~hnkrJ%n-S0zn11lv6Sk-l&co6%;nw#8@i)-QZ3jGTi6xe{v`);RN2%e-< z7;<@F%CUTZu4;8~_jlW7#93a}YVAqwd07*)27DWSXq}~NIuz{RZ+}>8z@qPv*y8 zUss|=GFmvCxxU`}Ye1tBsIu*+fPYNt|NkgR6|z9iAQ_1yYDw%u_WuyduWUeygg$%q zlv8CviokKzk&H-*<#wq)s&o*YEZ2W=ISAwzto+L|=D26I2Z&A?>A2leD&kRbWK+6C zs0O7cEtVzx$m|5pD(&{tG2P(@h;2Rz&(E zSexFwOQA8T&A_oAvhKo#w@>7k!j2GbORicg8%FO3CeB&P(M-%Clt49em$1iCG~v z(!TfXht;>C+-wM;OS4>`vfM#~h-_L92_($AQuA~twPrta3uzED?`?_EOX&H$gKnMJ z^;z6@X+hmW1l+21e*cvED}h`fR|Y5Fwc7ndeyyXW76g1r>Nxri_N{m_*D&IwI(=W4 zE_AhTFiZ5ZRu-=m)pMWQA#UC*)FcmiE6NSd(GJ&bx5SM91M?JPa<^@ zos*L7(^B_l{X!WykB^9M2lp;B^j`0;&;%zHo8-PP^P1bNn$>1j@+l47IfZhMHiA6> z=Yt64%NI6B?nQ#~1{zQWGm}e3BbU!nnd=_u`hP$byK}1^-|Xia*(GKTzT+Nays*N` z8UPc!Qpxt2ay3HFdE4d3eV&)mLkz7iJx&V>{W?d!+?6uwhoW+igcyp%rN3GEngQNN zhhD7Ww5v=8JrBIKv#>5rikZrV+bR8XMMi1L`V-tW@%<@JKNifyyZ*}6Nt~BrS$+-< zl>wN}Jg#{9+Jl@|cJQf*i-g(yS2M5=(OjRmQGMLWuB3I~)cdlJ;$QY-D51|Ei2Kay z4-S=1>bG>3SP|97H;iU)Lj-HbZR-n5vpnb%qiG?*A7VVguS(W5J(yBf>G!E`Y89MG2DPA6IClQ@-TQv)ZXAM zl_##dx?|Am`ovW|@0L0k8<*dUNT-fQiE>yb|S+*MvzF^(jYZ7;FR7X|I ztpAMc`vc1QJRzO_>C?*tK-McJo$gFV5^EY;()L=spHY6?{zVxkPjHGEIcyQ_IdRD=05sJY6^{7CLG`U(zNeI7Z zzRzjZ z9pYx;YkjTLae1Vd!rC#0W~;?e_GBs%;2x~XT>pQ2f&TTnE`tuI*fK7s30VS@LjpQ3 zcJ#aZjChdru4fPJ=c&}rGW%+tSC(@+umqS@)40?*S9JfzvcH5=VZF@8PYPT}pK2f* ztK)xE9#X;Om)|@-Vt%7b!O(9l{iEdFfhWXpsbRFb%@#4eE!ohVyOQW@X(MD55z|YD zX?Cp?9pN44&$}lk8{*99ue}aX$f?Z?*MfjoD(DWGVYQqOCGe=LgVK-+H%=qI_hVH%8R;~JJh%0(wJP6g9+@vLh z`eixl+b$N(PgxT5QsS$E=htjCOjJOb-LVXBqubGy9$=_3D_G=%0^|i5=N~-M0}g^O zwK6&qQ$j)&kvRFqUcv@5ze>s%jJnz3L#ZA|68sbrS(biU4#xAM2Xwh**y5)cve?qR z=mJ}bvxh42Q$Bf&f!%WZW*chP6+V6HC6=S`vU^Z3v3~{0CgJiJ3_l3CB~_G|k_^L*I*@Uq^e4FQ}wU0NPC#c)q(7>Sly zHRF7CyUGLbPiTCF%#^EPu#Ps!ih7?0Jobzg|K2|!bJW@(-O*z7^o|0@4BYkuka<=Z zxp^>N3PE3@^Y%0L?D1@MXGP14d5G-ob-jcA&x@m64al16vA2z*EhF*gxAnMQs0B+- ztF4rGOD#3u4pXnLOgayHJXF6ETQy>Px&OF7B17hu4+&h!$@TsFy=r+Sl zEqo|ixK!2ro9_J%Gw=(HP;sHVSEs}@G#w#hWltF z#AGxPzKQLIXm_WRG-Jpr7O&oEj9ZLU%d;67OVlAHA8D`@Rt(3;uq<4^X@7GAg2)P- zRu}RcpRrEbW+$>gxiN9v2&eRkZ%>(9Hs4~h{v9xA^uspp!I@v^T}F;<%KCB@_uVGl z+^v-KFE!KhSLtaI3oPj0sXr{E32AIPW78d_NvCTHa)`(Qn`JXP(3yv&Jpqp(8F6)iXMA07n`v$n?2tWe6sO?TAQ}+6Bk!{>}pMv zLqtYl83$}CY8EFK-@(7cn7CNYUR|0a*y0kf${N%Tt4m~v;Hyz< zbR+1A32BHT0e4c^$?kjE@0?@DmnJuADBnD}dsIGCHRwJ6m0@OVJ&LDeK@%TtOUPs$ znpG?O-304<=z$!P&=2ESkRu+rP6yqMX;*4p4m-JcAP@6J9l!@7ZT|{ZIftAxf+kzo zC**_+Y^PV$rp;sN!aZ2KVq@(Wp5%yFC?96!hM;2YOei@DiMA;T8sr?#fk2QsaoX5{xc4mjv5c z+hCi{6SW1GuKAwuTxNk6+DZAXOsaVP4)(G4UAM*L!OF9B<=Qb09*vI(htt9dv(Di5 zgqbK}>7o9SW~MM|2yE-@4@iRaez6>+OM!IMo50Gd*v!3qs3Rp%=43D1x^PRPb-J)Y zXb8raOwW&8c0HEXQIXM?1ZY8orrwW%zO?4@E|Ciu4Z8-drkZ!X-w?=;RV7@wU$y%> zq_YKtkK`s%x>`bLmzHgKj5vH~A4sG`hfcsD#uJU%n`>vC`h`n^k~&P0QQ6kH=Q_{Y zZqwM@DKUHA7;xF@Yk#w~c>czL;8{?0G^O2iICjGc6;mGrC7ex%N{1xQ0F;)e#TvBPDMj)9a1#6tMNyao|-f7xfb&p%VA!9v*be8 zc-*GUi-fGe zY8CclP0nSp*`)K7#5#XV#tKmqhMAk$YA~2tO4E9DcwVs(!B$T!7sa1C(gHNloEah; z$c600ZeBbd7MeJm8H5ynY^#i5_0A`jl6rHkd!Bz}BexQO7QpfE@F;+c2An+yNo|o& zJ8FH&FI7J;G>kS0#dTTP!ty+bUb`F1k1D3j>jQ@<}+Qfv`#@RYG2#(RE-eEsTM;%+PNjUQvCLyOJuk5r-__PvPfn* zT4V9=Ne?6=hAQ(T_vkcDF7_{2EYW05+Zn7HSDDdR^+h#@6+jtZGXuY`=(UbNJGk(g z5CGp2*Svkfk0x`En$fP0*QzdWG1(Q~bpdNMfQc%uVGv5QmHF_hK&e5rja)58QM`gRq7^@DrG0?eN zXx_h6Ke4r}vrXSqYpSuDE@YyNKjVC6x}H|QELA!k<_*lpBVcdSzBsI1ai{;}%eLh! z{_CV)8u#SxLFfDfRQmP{I;Fh${ubB637_Q;A9U4kFr0LN+_&V64uEE=2=90Kw)p$e z8pAl9HAn$i>nK0$6_v`oX}X+r@n0IBy=dy0s#^7l>2|&P14@M_O-9ylIG72C<2ZqH(sY{Os%!@}Wt?N2 zDA$a)?{b+MgAU@GjyKI{X`JNc((rcZmB6gHRTE>h@a8wV`h)G)FnX|iKu5|+O{`Nv z8x8$0uq_H2_LOZQj)O`?x79)><}tf4ZRj#8B&9l`EZilMz0)?oqi8eGE^);0ma#$D zb$>Om=jX5AZ#$MsFS9vP<>vf>V_kr1?LRqi`+O{KPs($seaG0g_JNCq zeeBZB(vq*S5;BSQS_@8n80`@S;(07s`(W9|mn(|YTCFlk%d3A^%JiulLI2v@C91o3 zm}B~u3l{=DZHwtwrhZ8^o4MS_!}cFVNL$1M1RmI-YP$Q-;(YV6Flk<>Lz%6nm3W~) z)@*mpyXB~2u3O9*zk$=%L(z)x#j$stxHulFq#4f*<3E+qM+@dk#+3@NJ!&95LMjc2lwQI3q3s0^w zN(*SIKHuZb+LgEjpiXf7TPw>(cq=?h4s!abvI^tV6O0pnS8%gQ*U6Jc$^Pk!M5^pA z=RIP6#?Ppq?z2V2;^W&HWcxjz4U7+3s>wt4&D+Fg0_!R+O+}tW3{bwNx@(}h9}xF& zwy+hDds0`{W&kDw;{gV4hqcS_?O`@s>jO_XDLd)FVj5Hc<{Zv=e3taGN)qD2GFYkh zvzW^Y{L^fTm?bvAjJRWnK=G5@-K$WZoQslRuhihCxVy~KDb`{|Aijz9kCBX59IA`<8!|~#W4p4r_@Lg?DJSF67soZ|m@~+9l0yLgh)%%(zH8m@q_ z@U9~QK-AVe&iwJrTX^D>>Gq*ciBWgsX>}%21?WTO92J3QU>mA8MTyI2UgaR3id}_U zTdp5%JYQl<*hx1$bBq%rqfb8``Kgn9woLumQE=x;OqeR;Tm-vORuE5$4@xt5#I|(( z!SWE18Mb62$=E)hExu^u3#7S*pw4zA zEKJXwy2#?M-{5*u!L!cAa=7Y897E$dnTiEJA8j(joEc!~qPWi^$I}wlot;0I&`AwEsKyk;`pkoApjv95bXK^0^@A z&SUL5&2<4y2NcoW`y3u`%Rz!+0cO|-gRz^mI zEjC0V+uuISibjra)9B!9~hC#dtPWXyU1dBpJym;X7kSwp)i3g3P5j_PyX zi%<2pn73kzMD(2e;_EIeC zio(w~02Xz{VkEyoC8WFFOjW0;MW}G~Yv-Zp4$HUQxyU)px7(WqnOh~e$@x7%z|0Lb zC|i8jhvPnYr*p824!{pDNeLnMNpdQTj7>Jvl@i$KqMe71o>I;FHaZRaa{wZ_`v$5oxL>N1lsM1>AgvQW9XGnPntPS3d2^P zXIxsb)bEw{?nP7BnZ_8@IfF~-9zUl?Me^6@tY!&*589TAiq#M7*L7=Ab>rfzjgu~< zue8U6U~elAGpB6%f9*23-NF5PwRb%i_>U76*v~jYp$6X4!qe$ZS*XtkCplI| zes#%gljal%>izhc8JW=K;?RtXBGWwF=C1@WUMoar!*EL-;VyMMWJ|CW zip;1qRH}zfFtd6Okz3p&gIAtNv^j!JJ0Eu^qvMtBKHzd782>Z}{%%&o$3iIASp=?}-7z z{s(IeDWQeW&(O-HS5V)w{hJFLDicu?TNjQ1lHsaQGj@a~_ZA<=aToVBXn%&jJD9CK z1gA-?Yf#OqSUPdV_I%_5-F3APWv2W_FoKkWESR7vfz$M2FR5_Gb~-&uh)%d>in-3{ zy`H`-VQkE@O$X637ll%3Us&%lzf2fnQaq(Ou~y%0)TH!G?4nu0fW+ox?yMzcv+P}; z*uKBp1!+{YM8Z-4{b%R?;`5}Jjpfv;a&AtHR#Ap}qlyykw<{0RLuki0(n%W1G2Zj{ zP~%h=hdw-L&E$90hk7Z}+)fy(zMLkCJv*cj83^SxU$TiY<@ z0zd=Bb0-!TxomR{Em51WN-x2tDDpNGnJ`kA!A^l^yxN5M>gD0Ez^tvO^=}Io0|7QY zksp@v--x*0SY8_tDmzFY0@qr0PN@E-kg5)z&Q+Y}P=xT@%xk)9uc5o^bsZ=)HBd%D5S= zOEK3?sq5-ya@|K*KL&D$%0>Lu5S|b~ce-@1lE}~Y;0HWF zkDXFotsQ-Um1EU$b(w*?75@hmmVGJ2zCR0CXT1O#m6&FQmse>2{R;ckN1zYT`XA7B zOQ0W0(du8_fZ+dftpML2a(SkRrM~}H;~w6u9f4PWzoL3-s)()!C`rjc&zpK>`nMJt zf4`#mw>#DA<837Qk8WQ1w_*O@zD@K_9UKK1TznD%y1M{w3+-Ksf4lM;{FI&xrps)&E)J|6>mPv$_2z+|~2_=b*oe=sCXO4^^DbxJE-PJkxujlJ{Y&f7fC=4%nQ_uXF>&~GneC>hF zb#kF?yuX3sStl5$%w{%uMOX^o{|s0tC8`?6rVWnksNXLys;FM=yG5H-tFro1t-nV8 zpo9H6D5<{z==zp0bcLY@5){=W7r;V^KjU&q7=JH$6$~F5K;a2$fg-JHf)8L$B=HA? zB}3!PK#Kpo?Vm^TfBh`UiY*h2`7uD-E-Vn+ty{61D1GrdeqO+J^B%d_kH?Wp-AkVE zNRaT~7ftlv)}iVun$7#t<@AuT0=v)Nm(&ON$z`O%al|mZkRSWsS9A8iETc;6pwD@5)*ki*kov!0bDEdVaEnVVW_yJ_g%9h@zV%BfbQel>y@b+u0!nXR z*C*_al*zsWF4)9`?5le8){bliNAL*6JK_kweFJQ0p8JeJMg6dxuw!g% zLpxzE*CskZ$zZb;`I*j$zBh21qVuAN$Gy7kD-npY*IOE2h*Ko z1hzaHaY=2If2up?qMjW#-JAHpMAPGQid4>*%DiL2)sS9g4(e|=PS^u4?3=T3GQUc^ zU;LOJZ(=i@xm`1U=b7DezuZ7C0?Iay*w?32vm4d$^Bd-XXoC0;=$EERQ3?v@4})(5 z_ADDbh%p+E+D~}V&4$x_uN=FiN5)&*2swKp) z$vCL?7D@@uwvx!1aN0c3c9L$YP9Z$Zlu90+yZ(bBHZG_lWl3x(Na2Czb7tB8$h*!r zae7WmU040 z@AlV&1WE2E*?%=Fi4ADm`h7j!&yxdNxQN<$Anw-C=-+Ftp(7-={WUL6zwLDtU4;5w z4*%;92EgGxo-}xh2Fx?JMWn1DPhI+o%6aI$xwX9)use+mv@>-SDxzH;FVKYE>OPBK zp}DBwc}+#5=vSj+Ur$oIgXhIRWxC(kxFth$#2P$&_z}brYi8^%Ru2wH=Q(I@t}ab2 zf=IYwVqBP0{|kHX85LF2uIn}ef+Q8mS;<*)1`$ajAVD%TN~URAa;6a^NDcx50wP&x zkl18Ia+WMj&Ka8Ar1s4BTj!kh?r)tRdyld99_PpVqsN#q=$cf`s+v{x+|PCYet(=> zcAoWmU0mZ?bw4yRb53r46|*zWJ4Ze5#Y%=*6F%7s^Rt;jA>%&6DOI;vl&T<$U#*411VHJB)7x(Nur5Zug9*BC~LVjcbL?+AjNW<7a?|@wmUpHwSI{ z*)3oH2B%3?gT^s(wS_*J6hH81sL!EAkAqtWLzLiQuzag!qW#W1fe*dEK z+s7!Et>!RSA$87UQ_a10io0t?x|Pmq`oYGY6>^TJ-R%nZG?#CjF9#e@OlffZ zRku!u0NJRbrVq8;>`40#7wOMb3B)3b zMZ5=Q{_xwU!&Sot&4cg8#9)M`-VmKkn|Mtan~>I5HA7oAUAxUrLgFmnSLW~~f+$&s z0>^NpjAym2P(pjp1mj*_rAKMG32Ps#EzA7#aX?Pi*WIG_tiMi%BeSR{0M366#~p|@ zDmq54^jBOJuW*`v18M(9XG2-b6HBe^a9MD^cdgWdMxD1RTv)TAJ$4 zrxZ;ZqTk7ReiQ4?+a*_c`2W+dM;E($~pe_wqN5 znD$u?XFbaNrOX{i@K)tbom3a8D)jK`$GHV<)8XB-{E3zXr(eZ&jiY6I*DKr|Pw^Ak z9nP~G*KQ9xO=WreEeb|eub~S<0wlus{rQ)OOZo?;Esw<}zl?Uvx+uHR##uY!x5Ic2 zTJ4uyArhK5S=TN$g(4_G1}E*{+Zproyepj;zh!F_(o7e2e8BNN|c+0e7nZ`~BRStA(#sqcMtbKl3*-KKd}PTkK_Amu5bC@IzX zwii9sCC_z8-3hz3rMv0!8@$!Pk@RhTUY#ptS~=b@5#OliWAf~+`Zxjt&IB!<^H%r- zkVgl7cCG=4j$xW7C#|g(*UsqVtn!jAhzH!qFQ2bq*VsYA>prV0^QXg$-uux#)Y*JO z&QH1^%qll|{)|N!;wOiiE8D(i(xc_mPIjXJTF>yPBl=P38$n^7&uLZ$FWed_-*L9Z zkxO*)W}0eY2hfutuE_h_!VZ_21Cvvsb4Gbs7b#1g2LaHG(4Y7$ z2X8_*623T!OK9G6S8!@X zvbml*k^_fDpkN%Hr}ER_w$w}a#h3w}L~}oE3eC6?BlwNA7 zCLLuizAe+n*Sf6(HF+pPz2Q7A^WEh$-MW}UkQWM&l{|DfH=Imq=#D6Vl-Oq~y|y8XqAKoI78i{W>AlUO@(*M42-|5Km8; z4OA0HM?|B#8?9AP`)51%Q^X8ds61YZOjcbh9s-=P!dTH58AEii3E)3A-db6D>M^0S zPp9{wr))Au-l!)g%>QRQEf>BEmKvjRDAGn(7P3quW=`Kpx9uRjiHi1}JN^0o{hTPe z+UpjlkBJzJFI8C>O7c9tNtX0b@Fk|#WmyiUg)Ttkbh8?7`AiBVnv3^hjjh$>dvwYe z-Rh$=9|yflY&Ug1D8p)NH=CNy7&ezuk1X^bEv#O`zM|I3@dJPPhDQmyR|tk!S5+L6 zWqTB19QDU_)jcS}9j1ANS>DZ=o2#7D3>n>zY|QmHKMc(O<{i~Oh9N`UrP}hGOsz0d zDl4rWQ+&H0X|edTKpf27FVMBE$d>=>x@MhaN+l!_w80zBM=#=-fmuf|{Gp21` z#nK9Nr(Wf&{o=l#CPBr?`cBuIb!n;t@!)6R!-^??xy2YigUJekd@mn_xt5p%{hIqH zdiMLzSTA%a&GkWzKKznyefcqUpHVr3fP?;#Qp&-@f~~m zFu$%oYHGbWSPv*+(vpYX2px2Kw&GyvwzEl2_}@(F&_Ul*H-wl^Z<_E`s$1nh)1mGS z&3na0W#IN+d3J+H=92RaT6h+B7Cvox1y5cLDCuW{rDo1ZSjo5zN!y0oz?9FY!H4W% zu;Dpa`$v_rc
4iG|xpJ*7=Sfc=0WlA`3l=TNR!mq27e5lu%Dvyr|K*6L$devJ8oSFsr)-t)@IGOvI`Q3=Tm^^s%y)t%2 zvoT$AwFa54&Sp?|bl!FJ!Q6|7Jc#7MRk+};fcfxbY-mW#dN_~TIEG{JVyddED z_FW3NgM+81bY1-=`guhU9w*6AYgl?>(& zNDqLeB*Dw=FI~_ZVH@bP(13zosg#X@$01@rPz4N~&P4{|@RnWrARdE*G3^F$Ie!bB zcWmx->HwU7a3m8)ctj?$GTD3c=1BiVE3Px>$Qoe9-#Us9(xqfM7o zN*0M*$%kDEH!Wz!Y9#kYXW9elvy4ljt1)KkZ;3mpm^6E6_$&kW)cMrKhD@&U4>>{? zheJunuj8Lz%|(6LqXyD?7-aCPt)=AX*zQ7Y>ny37-Y0 zhEI^E7r7;eab1lE1Y1l*jWCiJvz_x4Po#ve#h1#hGY#31pA2RcdJ=;?$wVP<@iM>I ze!*lPnszha6_bHiVOUirs{Q7kPrazf#*#}tY^+PPeYJeIqB5r5Q=v(L=Rv|~k;yg5 zM5#Q9w|3hh*hsy|!FMhN;l^^8vCile$BXZ6&>f=Nt52S6*3ZmTOvw@#0jLAO9BpSB z5f@%ftiD=RZD_^2O^)5|+dFL)!0|(bLB@+ zPu?v!<-V9;G;$svPC9QiW4aYrq+Bxh{F^|e27?o8#4S%-#p4QEo+r9er7#r1S;7c_ zL1X0Ue|2~_tV#Ww{kh;8qpEUku)SqcrACW2k7-5M-4`2?TO4TRlWaPKza={oI}p`= zw5569_Ba~h!jKa*6Vv!IdPAz4ai?tDeMZw_NJHbwNDyk>g%MySXSEC#&b#;ai9+a8 z3~Rt?>--+ZsPM3F#sO9jKCBNx&vYv-YlpZ45vqdF5{xhL>hbHUsYkKANwimGJ&BSp z+vD#LFg`)_w65|4(K0h2e)cP`#6wr`f*6RcO%b-9aC6}*bX|s33RD4IDJ1)Hi5eTqZu%_&-ea8kcf8L?kZ8q?oT-_!pf@BK%8DZ!5~Zx+lC*g=a_E!I;AuO zX3OO-n>%ckFT9W3_tD5m5?>JC36oMM;%3V_8MIoQih2NO-IDWWH!D@kG0ropO^KK4 zipX>tCjOBV=9=`D+pYDrZcb?tvD$jiLr(o`i2jI}obJr46sgn39fR6L zp?k|H*3}`!P;-qvmPLk83VQ;(*N1LDeY09bAp!c$7mevZcuij<+!S!wBr=PB(SGb? zh4fSd1u5b+KF8E7$w73o`o@f63c{pp7T9!EDL&lqKroc%uoDFysyKO-3!pjQ1L0dL zO*i0av@P{BGi>|jz9{FMpze+VC zw(*leJqaAY5t56gjZ-q8v^lT&Q^P{X|Ykrc|)dsdpT zM$>njAlUT@%|%r#ByJ?|!4B2se0ZtjgRMQ!tVfMgHH0j7LWLQ2>X%|9zMvNRIg>CT3}l z_eZ67-?0uAmM(VIy!j-)=T?WyF~v-i$H|}@pfCsa3uW#I!oJpRBjaDf9J_kVZt{b+yLS~o8#&qFr z3)J3~$DMQ=A5P-#Y+r`uzJ8sL+UzYdS9W}jOi}kgtG{=VFktbbtV2dTT1a;M6x&+9 zeRKOv6K)D`yF!egAOu&K-`7~ZWgWMx^$QR?^~oLQ6M!=E>r68}tx_pmv$j+bmh5Sx zEh)TqLpxU?jJD`J3tjw*=4U$H7~VP{wJP!|E)sl(SZ8poFM|7YzWW*u&&y*xN@kVN z2S3uoBOmA25H&5@N)_q<#S9;XO-j0==6j#^3;8GOGa882C?|BO3aYD@NbJ@$@ z&z0{KUQ7Gh?~aY>(JwLY34OhOh89Q`ThE1BEzcmB%vFpOs`e8Hsv&9qg|BOMXuDQp zRbKZth!|(BaZB=*6`Ll{xEc-*_d;6 zAsSl@@%idNXYd`FD$>bbo#OHdrQurfIN8`}3EaPmo27=x7OYO(0>(5FJO+SBP4B7| zAgBI-pvZFYPT;T+W@f41Zx8aUs_CP5Y~SdeK5w?|W4dYwkwtGhIvci3A(^ zviyfTij5<(lw>uYdL5V8WSb(nu(a21t`)QsZ->`PE`(Cqc%T1x>mw<)@iuT6AlZru zQvP;q*sroF(y$iuMje?up22JQ$A!D^n5sl8Le|2Rd6{;DwDuqS-u;gnA^)mT!T)EC z-u%5rrAx4ysnkCpXCQlX)@^KQ3w~2O-)es#Ivg`kG%0H~PggzJk^Vj1)P@u)tjITV z%O+ALOpzjygKSlmPyBN%sjESDb!_M|_(KczFIfpVEFcf8STyYC=i(sC3T?*5^bnNr@UJx9=yef+wM!2yR=z$Qf~`s{8Yw2N%1LHrGy?7!bKbA>g8E% zxCTR1ACKIircF2e?rK5YTj$DG3Xm5j8~M}N5%^s}_ZV$`@O?t}8)>dG0nUc1x*#8N z^|fwkSTyZJTghWRS9p!y{I$&(M+G{$D-Xs~2i)70*UHwceiD9p!ZZS2MToIhrf-H>uKS&>NRqXD!d$KTMo|@WCd`P+5IM zrdm0ur!YItf=HXBwplzU08$wBu}aY+cfQ?4c1YrpGVV|Ij|n}$5eZ4CrUf9`6Q}7l zX?AFJGt^(GXcJ31vVYPn%yP`U2NTD+b%P)=3YD!m=Am`f^6ugRw!h5XD7lu@q8ST^ z`xf>l%iF#ZVf&|kjXU)Aq`5Qwpr*w8!ePh8<33KTKS1}q>0(ZN9WJJ~wh#>-yL2<7}a*A&UC}~rY2}7Du)2CqB$@`B`i8v9f9sAwL1)J8RJXv&)3Oww;FwPKE_ih2oSQycT@HN8<1=& zzQBh&7MxSn3%9o=kPc!s$=f>;PEPz!IA|UPp+LBjO1wT9pH^2xUr}Spu30CqsaFPJ z9n`*d;j-+73)7{fU%XA09S~&#vOo8{xV^vLdg0&7V;$_;ed{Ct{z7d_!^}p_9}usj z)J=)k*nuGcD)OaeCjSF+GJmiH>$n24IW2Gxo6qV4w;No>oS^yPFG=3gQAvOjvg$!) zQn#A7Q3hEkZYFA^*ONh#d<_+~HLXz0_$SH^9(hHJwAa0^ z6{0nZC6k^=e*(zD2PCiy@U!)r1_SNucKF^o(87?XM-#Bp4W#Q+O?s71EkZo2NYLso z_OUl`oT52iL*t?AJ|}xS9Y`owqoMjOTTFzX%6}BcSE~iu<}L)@k<_Ym8QTa-V?mZsdr&s)1%cGOVOf+ARNbh8wX&j$B&}p7r zq_ahkJ4&Ie{PqqiG&4D+Y}9OSXtJU-#jT6VrSWm2Fb+d2x4db5hg+<&cAmc(I;#=U znK$iNU^;D^KL2=fj14BL{666h?Ja8aXiwbFBr6P4QozAcx&Hll&PqH?k9U;J3|8*k z4mS4(WE?xEfGSg1>JGV9Umm1>-r1FA^JOawNScsz*7LKVP1!yYdm8EqC0mPf?ga^q z^yWU1(-Mpdq)HGAlYak;lw(Nq>8_d4>{I0?p9LO*CpJ34B24>lWg^S}s=&;&vL~uE z4#xYO)xNZh?U?Fufx14Q^{0>0>pE90fu}y>3V8mn;SQzZB}K-=MHZOne?U(h)+fsL zuXl=@nyV5X;SiA{KCPGu(kx`Bem$J}$*5{PaU!Ru`FQBeSIOrthR#)GqnVAxdbPPy0Skq|ix5S`+>^i?c*(fT1Ty^sW z=*Na6!rtb&=$N5;g>Zh4i55~(WCZ~UY3*=|xOZL**oQr+FUZXzbcr9>dA3hZUK&pC z@>lcH6PrS~5cw(UItkAkDgui@(cHaO$Ij)f+V3p*q$g?FsTQ0yO&`{z z<1z&^9zA)(y%wroV7t(iNU1W?TRfEkh(+lw<^&|rzy|dP9MPh@5Y}2Vbx5CjnD5hd6~qmg0d}OQE6tkBz6#81G}q{XQ5Ow z{Ixq*Zr5qgHI-xTRe|I)yqJM$9sucvlN5v2STu}iVZv0l>$OHHjh-##* zWp@~oZ1#J3v&G!%5w9Pzaq4Rilq^1F4l=1ZZ;u*$SU6fRv2^H<<^CSKDVyTDe!9;Z z22W+7a4mfzquw(Y3q@@K8~DA+Rt#C~5$f_mS@|&R$^-c4-kE~s`sX=rzQC@9&=xD* zkfjo4a&_kP<%M=S)PgaePO)vGMmsq^h#L>js*y;-PORe4YZ)9R&#-Bj#WE(#o4dor zT=88Z)ldR;oubD}l0>Icn;6ap1?}Udbjf5{U*A1s%0Wjh$HsUF#8@p0(rdW6@;h0_ zZ=GqORf&q+Xgr5M(q{MLRWYYD!XxH!#{E6#$;U`0iwZ^)N#}ygTbQy7Lbx1SWbRt7Jb4 zn6tRIDCg}s*+IOq=3|toR~dx2RdvkQ1QxX^b9^Uv4%i#ijo-&|)Y_+75-C3X^dM34bjv(* zuv(&abY}KhQX3D=YUC@DvOLRTf?&cGiW$whhis!0pQ+mfqif-evUFKoqt|j}nBKMXBPZAvJ0t>?~?V6dx&)Fxq{PA;7O1m6%zXQ5E^y!ME_Wi^%$crKmfq53Z$ zQ{emnxkLtoFNjUyQ+MDeT-z$9e}}f`0@J2x5peGE132^58BvMBB7vm;@^^nJD007C zrvFbVD*(Uj#J`M=ls!NVwdv$<*`B7I^mOXQ8Qd$q&1_2EC-4Xpy(cq;L4dkZ^H}8(xbDumxr`9|cT$voc5ri>f)z02YX= zfcoA3?>{)6QsAgwIZjQ&t_hOf4_yo z|H|#2?HK%Ce4+gX=(ImG->{`Pl;tT=f1=c(FVgw^U|)l-UK#XiLVo5Z!|Nt<6>jgN z4eXDckD3M;8_$lBl0#CRmcYT|Pv{vWyXp_f(g%n&R$MT_vXOh&2Me+Ov7fpJr^Lob zo^&a#`>3z)9ec)H$?yBEpuU-lOwR}8sf>1Pvc|LY3*2E@X`Kf;B;H?*^9NM$PbdGs z$MXMw2k@wP)qR>U?)CT+od*JND$uJ-;OKc*7)WEhFa}pUA2%Zp7UBvV42>g5G%3(M z(#0P#m?MLEZvKyV@&7F&>OcFaa*5p92I>WrLM=?PJzB&%SW6~g1elTk2Z&q@{f%=j zK)JyE15#F1rjxjwQ^mFrU?XE=L$)18lqvD?-vHsvholeHw zzK7b2tVpf`H63LNkdCs?WZ~h#PZOF$K3~MZrTJNiM6!Ig2h~he%))jS9^OR>CprPM zSN!o~Acvi9DL3!n?-P^a62~(-vTQMIp&zW!=!b-chZj#Lg_UH#$UOo!k230|KsC=Sls7m*4YomRg&<&x`#Hmj`*<=-5y# zH6CaD(p1lUnvhBOzaK@jaHd#FdzB}OK|Pn`$uM5+bgM}iJ6$v~hVSGmEX5mTD&uOr z7_j2%U-2EMo|(gO7zmRBNb1fwvKjBl^G*xKF@X~wzJu~I?BroDTaQiD5SE3IfOaL{ zwt`_;xzXUnQ4p-)bKw*x;PWw;>cV5KH7`|eA~Um`*d1Q@yN0o|!yvx8sxQ8y)o0c6 z8^BWP3zPtiEM-*>6}k=5;SsNY*^O`p%Zb5cRopip#=U9%bT+TY|FfQxJtH=Rax=Te zqdHXqSAe~~A$?-Gq0$F6>KQ|37h}q1#Unv3GK-5UHe4^8kR57~vp7TvCa79*Bj ze-R^_Sm+o7 z4VEWMv@@4m&rUICQ(;n{%_!9s^Cm9gyouKjuI0fNI$$1PaU%IEkf9&v@J%;c7SGsT zseqGMZt<*%GAoyN!KbgZx3w0_$doKs4bCHW*+*Kq?6Zi+v4BU3>MwqGsZ+^Q+EWg!`WbH-D)H6ju|5U)e^c)y}M1iX7o3Sa3%O<@@3b!kbAL1LuA2xL3S!rbp5 zX9BWt|C)2jbjb$covSi(Ky*ib7+$1=m!YkK+9e~qD?h=JyfSv-0Opf zd@1)a%UxHM{+rsfsEe0EcD)7BIZZAr_mAwiV<1AtHfXN?F zS2^i4edC<`ggfuKOMzK)NssK6lVBPxNiL@XH|>wT1oQjni0!F4CabZO4>Of;|5D#h z%45qzi4QfrFhcuVmykxEaTD@y}MX2xX=&6`~D) zUNWQ?Aa2Uiedp=>Nm)CDP0Y0K#rx_BUxvZkEsrLzeU>Fl-RXOmM!UnIVx&T4*NWn) zLc#}w?YogmQszZO^(dK;MzLvs%fuVF9l!Z0q>fpa&WvMw|JQy*@5lMAAAK8aE*L$R znu8nX)+gF&c@2N|**K zFx?#djBn+5LW7tym^2sfZ*O6YJvNy<9rR#+nXv$QhOBlS*Yn3e zZ0;9-#T;l(TnQHy!&?7#aESAwsX-W)H=a# z!;{s#U1H$dDDbrbx*&;HO%8`^?r=AG1@G+PYi;f;c1X zG}C`Le5P1eIl(Lt>0fRV^(`))0+7l1E zExMbqhVvaOg{(;le!I8g!n?^&_?q5j(YOjr?U>oMzp5Mc2d|iewyCEsJ+sA1Q(93H z+HQPLjl85U63N$Gg>g7(#n#e83exiZji>fx)#0xZTXegl(L@A;9>tW=$Khhfz3^Px;#7dnlf>qCkO}>O4bv>`L3r$Mc7VXD{Dz zVyz`5QeSUwc-sHAbgfO8;k9Q_T`z!UGdZ@$QdJ^Tct4b%nih#}8gv~Z6#O?7c7Dv! zT^Fu{KEJ)K$!iZ7R_wBkVH+9qmAriLL#tD%^}3-jn%Sd)B^}jb&UawhEerO^>S=-M zts3Lp5Y5A~Oj}RL12ExIBAXzwSr_!@`K*N~BG!^%|MhQ$6CnhX)I zn-fKmuB*N0G*&FZs^2-|g`P{Om+z>x-qZ;qS`nz5yE&WX%&lX42Z1aKVa`p;C0izB z*!R6fOUfK;&!$Z9PY2t^ z_E)PR?TiE5BpqG)!LLHrT+StgcbJ(8W333In$7vk_%Xw=-ExMng z??%`ia#X>KEOrL-XAy%t)#Nh-S&tESXZi3Py;fYL*glVyUK7K#bzJVIunp69a0;d<&M`w&di{XnKp&OE&_ESTFwAEmeYgyAw5#90Srqr$|ySL1* z>Qe6mj)B6-zmM)U#$W#iwYW|XdSD5fqx2i5uC)<64GH7bbGnzf`O5G|ig-FAr7kyV zM!ZQhcT?~Zr-yi6)%#>?A4LJPP-|KBetuuG05G((B68PUhD!8XpDhdSuioLhfLcD#BV~O`^H3lz z!0$|^{GMi!I@=p|@3|cJJ2~DhmuJ3>7Co@G1<*G4l;j0TaTJ2R&F5pKCYTyy;+aAu$$P>O6YnKgLdL!Q{>XncZb>_}FN5T6$;;Br`DN^or(DJ-kLK@@t zhXa;-9&daM@qOcQ*b+Jm?SPp$68!Bo^&rw*p}gmkC=v~(+Lm5u*BHK676ZsyJ|mX6 zYo4ShkImsX#43Zua5wD8)Rl1pb&e)qU13@k(SngR_8vt`V|nP+)O*zy?AiKt60GF8a~^yHV^5|>`15TIhv2<_=W}V#3byn6 zrcs`WyoOD@3>ncO^mT9Q0M`=O66ItXu%f$v{WSEn%>#PVj9)5Yc>a2BRs4Hs)PPm0 zWuQ)?(aPs^M+w;2A5a32KEG2mhq&?j0}|XZ^*yD~dHM1`_AY# z0yL$$zJB>qY6RGLJS>J!0ios*oymze<@={HC(g8UHagpllx`Qr-=12Z=qL+6{R{a0 zy#{s*12;dUN-cK;P>bso`TJLls}&(^QYQ*U!%97E2o$$y)@q+nVs-M*;uvaey84O0 zHt0>!>no||Bg5gNs>c3>m>IXB*%dL@NFoQh0n-IMjF)a>*7m`ZF@Z8W@6~jN-4(Bd zcuEyp-b8(J9621xofk;J$POWDEb1*Qlh>Z7&XT;#TJgcs4)0#q<3{x!0?BQBz+pg{ zKY{EseWO~(WD{UKM{d#PQ-XnOObD`cC%gFBFpR2(B-Es-Gh7;^A?*sPkp20Xt$ zXW=`JsOOzO$)T)#43))Qic!#v)2czQCqWClrRUi5#D&;2gg=+QyR|6E^133y?7Rce zKA_^_3diQh^hcd?Yw#jYHE;84K(Z25%s+Ouk6XJhH(v7CXo(p3-RF7v(TqQLuW;1` za9q{+;_bGypSeWbC@FR${ENI@AF2L+RD{}&OVKRFR!(xzdD>e+aZDwPUsO|i++haW z@vu5Zez58Fb<^D>uYkHi$cUkh-)~lx&*afom6a#F3l5X%pVcYXN+n#_KJernhQHiy zO9+x{2Py785f#sLJU?6ztLFD(fD)N~YD>_G;LB+UdS1+$^W&t1LQhOs(4YCsHbBKo z_2tO)C}={67!Nwo{~Q&evg1-AreaHqPELEtG`2#-EfZy}F*}u@pdeIdnF-JCSk5Nv8~UFVO}pv+40 zwxqXr(bpi8;&zv9+ENU?GF7hjsFM?ZsV08wG$K)fL)>!ULpA9)HN1Dg2GVBXeYKp@ z^CXRi5%;T1adkSos`N>T(9BO&LQfy7zfqU$WlNv@8eX zt%O3?#+K|CdwYN9zpa=5R2I?`p}2bCu(~(Bwny)|LepI!qqmvUxKGb83n%q|NR{bQ zSQzU5?0a3jrr5WwUlI8(BWa$C2}!-Q2x1t~X6@Tf3Oc#>_mzZayAoy|eS7|m(i%iY z!$m~n3hH#!0SH;;WSJ1CmzxJ^wUF8D-toHH4VHhsPbwfW&H>3U1 ztRY&LHn+)-YoKR!^}B05Ue?7RbVOxnsU=LjX0i1yCUJXy$M9G6puzgW&5Nm8mw`jK z?2q5s+_nrop!C{PrEC@ByU-eXZlM;`K4pq{TTkD2mWe*DEz2D@It6@;FTcRb3r*q| zn&OK*gSNFU5jI4im%Y&pAW+XPx065p(v3jh^3br-7?fYY>fRs>KhJ@oNaVc@E`Ffx z;^8r~$?t!)=sOqm)z7JP^Q;Vouxg)^9bpsHkOpBo%^fNBdu7zwiYB=lm8Nyhou6-Q z(?s9bdSrgsrN&NK5uf+%Gnu^3mO&9fB(p0FuP#C$pkptpH2jQPM({M8-#tuaJ5Y?~ zwfVH_2HdL{vIr+L+7@=Cnr9x}J6KH}_A4sQH8#--bZv7rO&W6RJw-Hd{gx0455ATc zEQ7(nR}a^k^)rmk2E-}|8{bE&?EdZ-&Qg>O=_yoSBE1du@TeEnlsZkOH`IZs4gR3% z!uvEA?J`-j`9Cc70bxmdgfqPed@QgLDP#9$n6m8s`~6iAuXx`uR$ z--+6+sRp<2Yd1lu+aBsp3>`Q{dED&X2By?_; zD%7gLIAfwoJf6NL;)j52%`u*Ju%4#~l7+#2xsnfvT^ee|Udm{bY@QVd<_k>H6ULiy zZ?oY9y6n1{<5L8!HNkV{Aq~&OJsYTi1QppIw%-qNDT9g#@YN!p&@k&OgxX?=mr6|p zL&X?HEUHEiT5AMtn(M!Z&5C{Ws}22dznkYWdP5O-o3_uvJkG0S)Cu^y2!Y7+)(KknCo zEQNzWaw@lZ-vCg!p1x`Ned_Z1mqC$*r+TW2r=pu* zBZGrW=6);sQV(f%2JUe4v~Q|DD%E*H`v>&fparRbp%erVda7rX<%nS{z6QYVGYF;F z@3aP1cdtz@X8|d-e(Uus=D+=|2?c<)Q-S~O8#*_kkR3p<{Z97}=;E*} zKi%g49bW$onSZ8>|Cn6=nJWLgUlYbzU%i;;{L*Nci}(!_sMz$C2_qjiAx$1sK za^>NeVG$)}H76;xl>wQraR)wf+48Bp6^WN*S&cpYW%w7C?_rD{wowoWOg5kob(5e@ zt@As7H>m^J(488t5X*}*%@fz9o}({6`B$hYkuyT zetD@R8rxmq%XRYdF=!W5F2WdnnP+9=In4RE`$k0wh#H+JD8rZDVu-Qfa5DHJ3IM`J z->S3qEc(P0vZYf4sE8^C(p2l*PH(;g?UB<`;2+!RAB>kH9QK& zn91J)vd|aWvoYdGVBreroI=|d1uq$|r2ut11dbJG6-Oe^<2F?ORRnfA`-la*Q2YlZ zKQ$ki2!VRL=&0 zAQ{2gjrPS^%kfF-zgJY@-&&%45V3c&axwC+5)^9ft|JtX+wkF<^X$CVf3M`oe{G0B zC=7PMJQVY> z7qGD<_-~bThyQysfHO@0dRn>vDgy2_d~pvB8wbe1kOKwv|E1@h``6{e93$z=bduZxj-N*QM|1u z*14m~Cn)l{>OxOe@x#8_6ZL&Ji!1`>(|SqCX@s_^-~hH!;*QE7Z`KDB3#zO1)SCeK z9@ma|brb(N05ZS)148Lc6&qq)u?@LfTyQFdDJ9oPu5!M!r}ezq7bK3^r_+C_H7BS3 zhaD4;qtriks(M>wDXx68qg)JAxO_nAU?GUs4wvP1$(=TXj9T0&tBIm@9u*6_&q9-!T1J7abQ_1E$7sb_7x)M-H4tX$46p8#+&FKRg;FjHdKn`nc-)RzCpp z&6MHs?79aynrCZ*IEchUU!iYd>Ot>kgxDXROto2J2 zzosS9xJj`PJS&hB;24tOu-Bo%@GiVRH6b|mm13t@pnb7F_7CW2Vc2=VQ9KDOSRdHv z1Dk^yUBCT4aU0=fwY2AZ(0=LerG;gQrBVLaH7k)`vHwwRL0C9!x;mlVDt&^PQZ(B8 zakWH53(vcKr{7(5AE*}g2nO5Vdb%9#Z_K2x`ZJ=(I$P+`Lph7wGb-6_iOK=^wck?7 zV-(+f?&*oaiR)*7@kxMvRd5b(;w~AG#C8M$lUh#ndbcJHWU}K>#GjI3<>Q+8dy~#)cPb^_k??0_CtFcWxKr(q$dcc# zj+3okJ6JHfCylN4;1UjAx8G5q%t0SSmR84Tw5PA-C$H`Ly3_4+<5c>E(>`0)pzjaExnQ(m@`mW_d78lJc zX-x1+#~JmMxCM26L)GE)9mH}}c#65f_HVN^{8|!)dcyZC#H`#$KTwSy7@sZNt|^wM z+L5QDHehycK2+Lq>9K}$J@rs-B+?ov(rl)m~+<%Et7y`Rq)E5=n10f2k z*7t#bKn-zS!zlb~iN!x4Cc!X3Z(%xkn*f>AAwC)3Z)4-FV{B!)SKl+A5!uz#*z!iI zJKy_wnJEK3*4Eu&GCJEF?P{vTIsNFEja0OlJiZ<;Xy^_uC+!bT&;>ZAh17fd_z6Hb zfZsLq_TRJ+sLQ&5dC+cXWTLs=Tb>}ZL!o_GCl8IN8;aLpAhc=f|?8uzCz$JzS_5Xk0p2iQ(dn#WwJC-H`xp~qv%CYl>uuOsDUflKCZD|A zY4hQgwJ=-7^NQ!M-g)6UwcnDW`4-4^lMVA|R&6WPj8pz48i9EI{g5fivYg?8sgkr= zCuPHX&^w-n>zP3H>{bfi8fb>+$^7te{tfsmGmqEB<(|hy{?Vy4F+BP*FxzE0s_|@+ zemBYCmr|~}9bp=0!#g?|Z%-j%8ESfDJjF(4u9%lPW+!)>ZY?&-D{uQ!pvt8P$SCNy zDpJ1Zr=C8y&w5NJW&XS;p>|T`ty){#?RxD9c-7iLY`LtR3-6XljHpK(sfpps`CIH@tdhsr0)Rm^HRsjC0_`DMtp+g?k zVMSjWH4Yi>snpj4LuZta13bI)oL{DfX0yCuVHn&F>)5GQKry#7v5r|cRfOn#6pTn} zSHBaAmpC*a-j^Fl!mgdxDD^vUZApqRrk+}jErD4UZl$`0XGo1pGIx8Ge2lz|7L7q5=XRoX?;g7iR!puoF&-QyAaoT zltfQnU8=AAcB29lMyZ2(UJeb9^p|gd4m3P9N107;8XM zkD1WhXOmUl!}*|5>V(7UW+(Q0r@IqCVn7BTH-?CmNLKeKe_y{stCTD!qt^?+Xgg3fF73T=G)Qp7Pnlm4 zQYT4};o=L*Lxd6iW_jzFT=-sAyVU>5UvKQ5lPFsEK^dK@#_F;C{7fZn_WG!PuMZNS z@3qTMk5q8JO1MrnUe&u_!!>0Jty2qEye>^IQDMk0?|%$%(amD7RSH@$&KwXi0`aX&Yj16S*J**yNDl3~nH3bG0U5TELklTEho_Erl)(f*Am;f5}E-*{Pz7mS$cdWbk=jnm(F(& zSahSOwg~%P{TOr9d0jB>G)p=-q{tOv?M7RaMg{Yk?gX-4LwSg@bVOwRd_L6E6lkOFc_l7o`KLVn}i9TD-=MnyH~R>BgMVTi{PSneIHY zt|`yB@lI*_1c;}I9I20GYs*zHwl{jl27q&wH%(s(aII81QE&7dW%JKZO+?w^VkE04oB zv}naNE>Sfbv}W@Pp}6)fQx*t}c-Ao=+5#Vi^s}`V1I(}B*8_XO4bkoEo(?k-o{tjR zgnl%yIFGZzTacu4IF1$%8FPG@rd(ZKwiol{=Y+fMGZmaG#Ifaka+aJ6alOy?ZF~HtZ{Uw@{ijWSw0#?INrt3Fl)?OVGi68Dmrau0&aJBFp}jBPB!qT zuo95YflGvl-P34UtM}fIV(`if8WuF24?boQxnXQOKIPk<+mI}(AyKxg#%|eR8F$yL zE4mGIvmw%uH^`3$hI#^|m29L$Y@n?%ugiF&x5lz=JtC0{>% z=gsT{WasU%-guMpwI1V8WK{t^=2g`F&T#@0ZfS16 z;~UJ~mt+FhOTV8t!t>dB*hcDy6R0JEg<>R&-{5r&32QtJ<55hYQ3~mL_;N*UwS(d_ zOk>FVmuvN&;bYjD+ja_OL_RAkH(`!sOnUF0IS3i8+qi9dn;dK5iv$>r2vyNd)$jZa z&yO1TvBPRu$Eti|l^m$44>KYmCFEnl{4}@wSppwjg-WP!{xw9{4GJm?1t&9 z)RZ-n?|na ze$bM?vJEGR{V+`S&Md~$U~KlAT0xTQ1Oo=cM9|j-MYE%35S#G2bx9BSJH=u`>|W#Vl=)1 zVwKq)V=eM_B@SJ2Q)~BA_=YsDEm6|Hp01>BH;xNmYoI=tg#|vsLf#*1o^wzN&4-rm z@u0D!4e`B2Pz&n@Y}j3o;3sTD{G!RRZmrZ`+0zuLwl&XXHs>y#8-$*;*H+Kpk0bQ? z)K`8ko0j$+<@9NU%jh;GAN(c?C6wr|>Xjc{z!yB`_qHYA;TT+Cdvcu=un~1U>FYkx zlGz4F3AKNbCa-mUF-!sLVhOT-2jeL}LdHz7BZ`bw>$Iz!vh1bvwac)qC)g;3y#;Z; z$9I%Dsk*yM2aCRS+*+{#>EX1$2Z%C7cQ-u(u5)_6LDlr*dS1n1jT+-6#vbe(H51Zm}c}y7zF1 zg5|A#Fw>&aeiFgxXlTC&kwmC7iw|EzIViG-bQ2mSs{sVlJxpjM|D3oDl=G;hDbNK` zRiZRBw`1mc3H+<+rJ-+)o2qVuqrf{d7bI+`v$g3CW-rErzB9G7SF*8kqj;4&u5Bps zo$+-OU97*~W*?~UHBJ(tfkByI2I|Vr-S)#dz|qQFr%JR%LKAxKHt;0T$Q$*M%PAWQ zaz657eq1m%AvtMphdf+-_W@{D;Q&(>&8w&TLx5sUI`*wh+;Og_fZepYB0bARFS*S*|^TAtsclYXn)KC1qO1^T5Y0WTaG`sEx&&-OnAhz12 zS|mB%W7JK^<-3I#^XiNW!&=NPc~JqkY)gQ){tKrJ208h2 zMV-Z%h$*S6mu~jyG{denWAbuIhk$AaFkK_0q;{uI;0a&Wx$?b2o6%$qCJV}#rM=!G z2c`W-!;VK$Pbl_s!=*wzvyyv*+n$;vcXNOQ0y7$9MuoWRAxBVbQd5*WLzGm#9}3Tq zUJ&{nUCD}RE<}b&^x7ZvanQ|eV%q*6Sd`zNfE`>R-_#3u;ETx zzcX7SdRH4~FM4p2jVtLh8a;6>rO|O{>yY>+X0HpReNs zs+d)B?E=(Gjmb2EamPK?J@IHL0++pzrr8c!oYhoL9}{wEor)bnaG?c-)_>|LbL)u( zbTi$3bI-7uXyGUa`GaLY_dZNy6u}kSp37Zm%L{BD6Dc@o!fYboJ!&3w5^w4 zPKso3V|M=w^HQIaB%S+Q9Py%6R`1-?{13H8o2X#OHd9ErWW;nD`+WOZbz$z-GZSSA zM?XeqLH#rQ|CE1BAssOqtfeJ=g7y6I_CJX>_v5Ml__%(FJB3j>{)$Mmf%_W zaad`WaB;9$M$z0IEq)U)zChG`hbQ&n2*=eZyhSF$cwR#6Y&G z`l`>E9ouEn@7z)}KZ#~w?5{J*FHX{Eg7)uXfN-rG6#jCtSpLdcYuo!ain~qjy-w0` zTtpr<0+uZP`f=gM929uTI?S&&N^=LHBZTbJh*qgHvCT7ED|Ks)bk!Sq10)ac5r4rB z81^iqG|{y#;QdO!UmF$fy2IWg=vnmazHiUy3mg8?vEZ)}%L7Go?v3yt*| z1^;v;qGeM1S#o7#{C+92O(rNs`+Xrqsc2{#tSJTxcwU~#b$_?rQ#A(D+Rl(c$I^ze zn`6T?yf9~}$cD_QOXj=Y;c|0)6)j=?=D}MlzkAmxkSZ}cW5-TJRne8M$5`sV^nqCx zAY5%lTWKZL+v@i-UA&KfxMFqfpl0fc-(zNvsIP&GO&LoF>-f0`5))32azU?%Mk{2BWg0YD`Z+hWM>IKjA@a>#g_rgDY=_S{g1jP|SVkR$d}M*m z?!3;4Gy1V7y_2Pe!AgkD^=xiOMn@taM|tSX$t@l4lqY+pCV2^tCBKgAMmMUrmz7Gn zk{F_Uz{l>R4!`8-`_i2vWnO1wZ;wyqeJ--QX&XZ9Y3;`9AeQr!2jjI_fKP!E`^HB8w?HU;9?@5mX6-lKn^C5N` z6f>!vU9qGgpKD+EH-p6YUf$djB$o}K`WSFU%$L>x(>wZ`CV&9-itO_a{Qm=_vxb0h4%&%2`+3vWfVLlJh%*7QqrF!vtFXngfODfX9VB2G+8J`RK#-NBFPB%?8 zo!9Og6AY;+rYl7s=0sYp)sg#&*y%$$0(C~lHR6Ar%gDQB>U@*$0P=la$o^WWnPAOp znQ<(Iw9Zq>nK)(QpsilH9nr4lJOp`F%^nkLXabZgzdT)3gG+-bK}PWBV@jfi#=J?9ncF<$k{81!Esm6R+8JN?xi&=jelA7E;14s?4qbxV9of8Sm10xfV!+ zyfaqmtN1uz?V!W%O{I|9(-if|@1Bl4QG*He=QYad3vvEl!15(cDuGw_jipGLr{isPwRZbf>; z)Ld^ihJX^9#YYPYl8AEuaux`&OOWvAesOP2DU_SaDzXd@8QK$)$Q!QQ)iE5Aq`e=b zSrsno!WcizdnniWTq`R0fuqK)KKtZ0WC+dD_CAfhv$5@2Z%2H5%amhH&a`$s$q%X< z-7*P!*IJvoSVy7o(7OK6eF-+3)-$6}*XeUv?^M||b_(v0u1<+Co{bgbuxnKI+Lou~ zUe3DAFn%Smt^M4y^D!Opn(#*%o=Hb!5$-y`vXLnd!WGT2CQHUS@e3 z=$Wd%p|MoFl|fqtR;0y&wL)8DvhxtsKP%L@z=8v()~XM_h_D2*(#ERJe0i_s$2QZt zuz57mK(kPjvbLisl}vY_X5YiIc%4?gHt$>t!LAJHaK;_ zztC9!i8EmF{d0|Q*>4{N_=M5-SQ85(@7c|Qi+~luZQ3Sltr`HKX-8PUQ40|?&*z{< zJ->-|(sV+aZmTRcs;ZZ`Iy~F#5gZUk-f0m^TY42ubd!nfXAX6jc=*EjC3gX?ZI-(Qe7?wrxZ0?ye+Zz^xQle?GMme_;8&kBELX zaf6)|mz<}(fRhtnilGKDZnZp<8TsCbR-ZAKY4K&R(5s7aW!J7A??dFZa&o;PxyM_L zUT|}r)Yd0AQeCS1dW&=LqiKY7#Aoj(7_v}2c=5urgLbQMq4(l!}WbzGMgRLN1}M#VL(@qxe06-i_dvF=hb+HJqh1#6$#a@MX6jvy zs&~AI@G|V!U zL@Y)dH&<)wDjOzRDGTFP zR|TN0UN6CBG(Q@=(Ae|jy= zv-F^IaV%}oLAq^9Ys9dws_*mCg|rUi&{Tm(;|u~~L!@&j0@ zjF(Hr7b0!%%+2yLe1&RfG4y0= zZNAE;`#_Vhz2}nlo5(xTG86GCQ&m@g@EmyYx*Z7mgc4Vy+>n+&jbd3@Uhm?TtnoZV z>u`@=Oc?&QQz_ne1TSv0YG;Tt#V3h+-iu1w8m4D?cKzO^4f0L!l+DhC1H!(pvGns2 zDD9Qd4XLeoJ1+^;P3{h*2s+V_pN+SYP9I+N8s`8^0wY0q9?t_{MZbv-83-fiWI%tk zJWl;y&$r6LuhuUj!wa(^uw0SKz=DmY+aG_{mTOiA7*D8MscI;Fp%+vWctnCVtMp9? zq8qE5_v@baoL`4-yx4llYmt*z`XvozYJcWAb!IVMUfWpc*WbH1YXp|rtC=zk%rlv` zs5-aXb7a+ari0rE=0a}2Cv7s%|M<)vLj0mK-5I(h(NqngLWkX{(G<&iOr_Kwa7q$+ z)0;Jty-HaVmz!-jw0%Oo7*^^dQu2t(#jbp-#6~R)#U1fhzf@!S^*!hC9XT*oUu{q_ zhI(egZmcdk#$%BL2vgQW_fzQHeLC0t+pQo8E6BxO`%zv>q~v%}8uCzg(xGlN+g6Pj zR1X3{Odw0)?o-=|K)V00g9kd4KGzzsuIx14Abe9(a(P$40nRSr2AMF@+ST6&Q7$+df2&5?$Dy0%PYneMmU;de9Dq`W4k#VgYNUh!$HLc_lJ zgN`u`pRcrzG%VUKKZ^WXHAVW*P|I*G`r}(2{YHDo@tZ8u+W2v_=DReVK*BAU!nzsO zH$At+KE65EwtNnxl~dI)&`nNd%5_inqkz(0tK*hvf9zb&4GZn03if)m>!#_ znD%$>@eew*<+Z%pJ3A-#8}#oU&%M7p_fa^+mC1o;#H2LW|I0o!{rTfNQ43vP zZd!}}yCu{PZ-&HGD1WTo8kggLL)~^w{C&og^`fO2Pg%ta{%H(qJ!vOLeO&!zlnxwizfhS$rurx zQT8Nd0#*b=C^$|T!k}hG(A(R;iR{!&s&W^dYJrUWal%k^Q#lf|df}$FL8lnOv7K3~ zLT8lZecLRtA0HyAbGCy%6Oh@4#@GHPitPZ%SLVroiK&@?GGE<1%MN71bdDdr0+@Fb zp3N$B&o2F&#}%g!KH}Lp)Kgz+v!N0zU&t>|5+9zlk#P95_WR=t?JLYlN)uujUj1vq`^^j zek-g<&xo?7jo}iD#hJ^ zic4NrBS*Sg)xYQwWdNNpM>hFWn}c0RNdr?k@e+My9oNOb^@tJ|a>wiFY3ZoY zO*_nnf!+XT-VUbIeMtIW9eyxCUYu-c{xU9Pt%LgJZz6-?K-8p&pu?Oqx5=po2}!YK z0FB>gOZ5G+{e@R18SqXK;-|hJ>y6K zI*$Wo0GS=gVN=jgLPtJ+=RmQ{4lawQ`H93Cr3(VYJbep*S!V{&`cybDNI8?=L`r!8 zXcPcU1YG!qWLC_MJ-n~={7Uj6`uo4v5Z`~a^ItckBi-t2aZ4zx0jdRh-WZirF(k>~ zUbWkO1(Xnm@w9&Nb>Z8sXQOB47NX}*@Yhke)&)et=D8cZraIc2V;qK&>77@p-7p;s7jAy8MfX}De6mhdJG3^kpx_ER}f)S z!LVNz%+6A*;(e{ylRc-RH0z_x3}Vb@kk1nB=Q;ajU2d%j35=MB-JDH0{$+vXg+W?l zHGDfK7pPhovuUbBsdIhzF4AR7oC-x98I)_NaE#i%@Jjdo*N2o%pkI$r+;~2Y#uzCA zNj#9e%ICj{EcFTQKA|VnBJ1$?r-1SO`-A;Y{-b*lrE@v~e=$Vxz;S$r{4WnxanS-+ zK?v3Y+9w4loml!as0zmfz#UBcf89z-icL!fGn8@A6b#chrhU@yk3%2g zi@%L|oN>*M)z*(a#UN#Ah(}z;cV2Wh=dFC;1L6szmnt5M_vkQD-NL)+NtD950Ur~< z4#9RX@E)Micnn0JvP-7^*{Ye3!b3&2i{z&`+GCCfW&qE?zf$*w7z>Mt#RZQs&1?+TA(TWE& zmPV&=kwgALBgI8l089EBj3!(L{2A74!i}E&Gjf2rx&VS>yXA8g*YH4jX!$6}Djxka z|9{sZzLSLCM5(}fzF{y*?3`TARvj5}y>>bDh!vDTI3EofOy{Eti+nX8Pa|-{g9S&@={&u~8 zxnbR1et;>qPI&Y``~M$)u#TnMUtV#6P6!elSkRVTtEoq`n9OyANTnpNoHhtx-DSG_ zY4uZjPKIeWLj9d2qjwq|--y0md{u-5pmDyQN2hBbEMjhRAhdY6MkMa&P~d+AFbmI! zY%kB!tM!eb*N4Ud5^w5nqNu@jd&uD?6i`jj0z{5CCyYdNpZn};5`2Z=7=AQvmfaoL z@)UT|K9g@n@!hv#bxt)(JBHY5vdP|CxG!Uc5hM=a13-cbA;U{RIU- zDo`&slDRWl`N*~ng&gDeZrr*2fU}rNEN+CuOHj<7FDsT*cNkc34)x^;13)p6+iFHd z(Lm&s!z<&$hvtHwP2vuqwX6Q}zl?l)dVEk&Ft(kFE>CJ=89(j?DJN!*y7@}YNu#RV zp7o){L*Du0&!6wEmx6{|&(D1gTc%EitZOQ3!(NA2Jup%wDyDfwF0nI!eAiCDm@b4H zUzR63iN>e}Ft(f|DbS4b)K$wg?#x;DPPg0I2wmn{lF+Zxh`rhQ_NwT|tvOL_a7=(} zPGe*A(qdkkki)JJ*CB81=f0Z~X8s!Mg+xReoL4oUXE-;qHNnSc90$#W=G(0R)>(iK z6|~a~eQ3%?ZHbary5B_u;*jlrPMTo#0Z1x7D*OpH9wu|wGktVco%kZRY>?AkwmgvRWiJ5xsM2Xtl zD-?qB$D0J`{v-JI{%<1QU+jr0o*^h~_z2Fs{SH{jrR6LnIS+0}>|#g!bAYY+b(ma- zYO|hHt==^;Qd^kKl2mS~k1CcXlpC|V;?DfSUpT*M{LSd983+C zSWqYA#*qjk%)PVqCd?hoQ9c3gew}`Q@3x(LKhIL+f{hhYM!RH?b2n8Nd9k@h5_Ji0E(AJ+SO#9fDad zy(! z_<{OyHz*o|YMWN1h2F4>x05Li^KiCzLeM@Brrmve`D@)9_YTTDgOjou1ygqvmS`h{=YMYTkSQ}v4Uc=d?p@o!2#%Sei@i}zAUWt~rBH3(m4Q_Yb$S+-#Mb(vos7t%^24a(4q&{9bI z;)!mN`Q&uRz%UPMrhZ-~yM~lQZY%!L7MlQ$J1JiY)9Iy{ss> z4V`6@^v=^v!gTBHuiRgGuRomn^=x9_w)E=$@|EXI^J_mQYo3 zWN}ZEidp(Y1Hrc97p%`c&`d|k=Q6fq%=sT8r{38kg_AFfO@lQugf*n=zN8_7p7ptB zB!%(P?E#dUK!VPmZ%|4i0;r7&-8b)llm*Cs1+jBBVj(U2l-tZe2*e)UR2J^JHc{9( z`A&P3i013%`m2R1E!rYqvqs{f1pwlA_rJuf{)S~4W%y`gtLw9%eoUD8;N7F~@v8M2 zQL}AQLJ!F^PEU&Gt+Lm<=^wHExPK+Zh<4zJ8Pw&<5d*QtjJB_byMA8C&>DL^P^CG0 zM_fL!;afS4T+;0^oTx;x=CQI$LwV~Igkc_K}f`Lmr*G73NMu| z+#~r)`Q?3jej}E#Ey9b9*nMb)QEWRl`uZo5w;_pPYgRfFpR(>%s z*{IJU9K*YeW=}5I(BjCf8fxgWRALrn%ener z7s)6W7pMz>vCNgbGzQ~uEC-GojW?V-r7{&VNVMo~$h~^RW2z!3wH{2`q<^qXQf&8j z+j3w7DP4}MaP!4d>J4UME>`=(9P&)JD2iGz4%2*zs4~02H+Sw8U1peJ;iRH9Rg83R z;=xp>A|_0sbqb$7ee+eEd?ml!s-yi`plk3Ywqe)i`}YS*Gt54vCr1$PvM=$#UJeX7 zuqgnP^B4D{;_ZfDk=tW3h_SSnOO$Ey$DbUs7^-zoGhZ3Cg34GzOmx3xd>Xg*#;QH} zHh_l|{cwUg;6){3=LE8x;^MgzPA%QZr#V>@*A-0->vZbSs|4H9QU&+ZZNk$XKBP=J zuGodQjpK&xxGD8$by&{i^sGj4Wi0uUk%oEtqjje#C8Eq{vC59$?;v0vODAc_Ee3}2 zP3ETPx&#sDyczpvchr2s>tm9uCJLuK9Add{e2k{1Hi4WGD(Q!1>p-zM53IoOl0|w- z^yi$d>N>O7oU(aHOPrdhqUSR*!6)ey9m9CR(eZ)dhzgSZ|B2iFh28#-gI-O0XE37Mg0g1Z5hJBL4t)x5j2tkB3&=n}hH}lt*_)Is z^W}&f)K^-GE~$?Vzqku{qpM~HpRY`m#N5M0VOkBa@b>*+KY@yxiU=JHq9apsN54MI zigxq&+|sWG^;LJJ3#9A$*Z z0R9C0luoL2e;uBVUh5aeC1X$qSYTNUvnj8s2$NK#mWm=zo1y>I-CtXlPZ98dNn!L` z7ET{L;KvP>DN$-!emr)&`fzg1wHB3hYm(?Wxxr|Yg(g2M23ngHG^GItqfX200ixm9 z55Erpiy`j6#sB|iOMwZYg=KtJHAIm0xmVLz8!|Lw41Hpq{_q0@*o-P2q}XiQSDX(! z)E_;D#t==JZcQu9JLhc=_r4`Ow|?28!JN-Tv=A-kDY<2F2LqJ3KZh-hSDMR$19)cQ z?4{yn1UR0tUZ;KmZ;AO!(npCb7znp%IRLZ)gIVKL*-!8aaWdS4Jh9mB@v~HZHgcKZ zW)klkIyesu+5nT>p&0Hb*icjPQ5*Zb&NWH*;oj>=@U*ASTEJH-6qlW&%yO=maB7~( z#@Kb^&68N;$%plKs;i?cqa}|Fo)K|8snUmg{%{+{>Kw6Ee(RXWNu6vjv5hsve-~UG zh)yanX=vt8Xj1QxS~%`=nX0L$d7pf^k;JT>?`dD%vrw^^`dR4n=b*MctB236uMCfq z<Ds!2iWuFwBAnOTf?De9i zchsscr_(c3OR~?PlmyQc`zQ})1Jlvs&WKHYmAl8phwbZ^l~J7d(EDU4$zI&}!fVu$ zuX3Bv34{jnqX5$CX@}Ty;+ivgoNjV1VYhlcBH@ip&H1{3mUkmvHZMcUM*KN~p#IM6 zNB$`47f=E^-KoGwdSvftKl~Z@$$PwBiC~26E4fK-j>c2iX+lP_2Rq*A?ouy}3Fcbb zvSvNC@C)p+5cskYhf{OkE;_@Q`^r=Izn~Lc}H>*3}ONQgzJAH?EYsY-h+%= zcs_W9#r;pPCMNjejlnjNoGGx`sp{HlVq`^q$Kwc;KzOZ1q-Ph>Fe}A1aF+07=Bx-dyfe$&UPJL3VbhQR8G!(NilMz>=OUe9Jly zXipt<%X+xSOGHn;ddVk1B%2UdiDK(~GBDa8wB*3mi6U@e28Nt0M;$n;8mdNZl89-Q z`peZPxqK&YUVrv}fNgYxPS5mR=?{^3Lwv|FIu$*)f10k0^tp$9T%9gFAW@vg4THB! zi6Kc#lg_7g74?|oycplL84cFh zAD6p{+eoa`ORSrzo<-WEC(8PWkMy^oNpV&>b|37!*f7;56QP2os07b;oh}gbxO)uK^G^F5j+5=<;|hI&SF!s_Y(Z3&zK$#-d6Y6)Zwsl zpKY{)+l6Oi*N z-SIPz)<_hD&zIDfac){kRmL&HZZbk8IIl?x~Ew*ZAjk&N@KOX0m$txmE{X5zB| z#jCa|TR>o=rPypjs4YU^2RH4dO3fQY%L6Od)kX|b{whN4^PA|1w(d7k(CM0br&*ePn;yG|LW~#MX}UN{k1-!)k$FM zSz^kg$Sk&r*G#O}Jn44!Uz$6*ju`S(EXQ1fy<6@YZFrQs>9R_e?Cs4el+@S9^nM*` zIZif|G~Z#$p6Lme&kcwx8_p6X3u&?NOfnpF*MWDc;CUMy7eemEB zOD|ZfV!Vol9H}=Zuf%W3qm^kHbs*Q_Flk|&XBwep@F6#`ab7vPrc481l#mi zR5e7KWHmR>gtwK_u!iR|pi8I2fmn?BiBv&JluHLQO$bjlfF>O6@_@6eNt)`T84}Jo zUrDoj>r3`C!@OHbqHHXNCF1GLF6s{Mzb#SMKfKW_@K7G(E1>G2`@Gc68|usMplfC} z*?Fm!<`Na#<-P7N3oEYc^udfkypT%xeU|-HNQGtQ^fm)_W=gGSR>g^{xZuUT-T=Rs zu@q}*>GR{q+4R4OklQ0$1tsQA9e}jJ01z)|YRt2P2%yg#R^H3 zq~avPmqHqlGWilR;+bdAq59KzC;HR2W^U(Ldl4vP*iUd$r>G}?Yf1sJ7&g{zt|~RU z9Hs|_bse%jeWxI`r)N-&lIJJfz#(2P&1z4zZJJg`3GEg(mO1E=L^-`6eFQtHzY(?Z zq{gt7IJ{W;!s|ED$McMr=5UC}A;fFXeZ;_A`@*$RVGX;OzW5?4M-=?nIuRot{HTX^ z;_C97rh9hYRj}hU>F1cXGwZOC)lkFmd;RtlSDuT?`7cD$cfC+wPKirfrElHHU=Td^ z6nRlIaNK)`FxPXgDoZ(SAU+FTXIU~%`^CCIfB%KC71hut2fffSsPRe1`onRFG{e51 zkSLjhIjQue%TGc+sBjhgw6bVWQ7~OjOCg|3`}gRFfsgHdSuao=2Hj@tqk^2VO_mWZ zUc4{`y@XZQ0hvx^Nz;wY{M=?&76KkIu^O2x8&dw26r%iZZTtSSt>FJpzsUg(cE)=j zgJlp)O@sWhHcN!03s1rQtg)UCld$+O`^M_51 ziNtFw7>W_MzB6V&-b>Ks{h3n_Byr5+W53q2LIAe?2^t@^2%+AoqPYsSxRk6nc&xrq zgK;R0?`MlF_f20lztt%<$|FoO=W~rl&HzALwmq_7S=6*@m7{r>1gVcNt7e%s`H#lu za&JewKRz5RpC!Igc5|&UC48`NZ@(YwKwyNA?q6jvJi_0EWG<)k`op|C3HO@D0?OTFZF0FHWGoN$|(4vl4?*ip>#a56Pp1?+IxA^Sa>O76>G=k;CFS`3= z49c`HTskn_&lI)%%z8@d%XO(`_6ej6Ep(hfI&hSE?c23v-arS2?;C(NX4P?P+vC_C ziP)~#g3Ai^;x%bA&ihS*n52wl^V^lZ`n#$>rp46kJSD%yz6gjM6id>hAk}Ez18Mj5 zQ7a5lf^Cy1ZEw5^=f3sa;1&_hLsH&-7YG8)5C3%HjM5|k)ow)Eu>GNaH)<5bFtcmL z*}a6Q1#ek#$=PphE>0IKkINRZkw`NmEsP%v@+zKnNbi?+L$voT9-g*`EpLmt5>+A> z)*bIDByPAG^f?-x5`@qrAKKM0e+}5Z4Bo+Ou$2~mg-p!P!ip#p4pw7n z?%ZeI@bq^SGW)cSMK_Y|b$A%RucO=7g3m+W}Dl*+y+BBvk zr71~|kxFRN*5>42S56CBL?Cg}H?S5V{r)vq*}iAw%NMAwMe3T^AOstyhaXv73) zlK1cs_!775v{Z~R>WEn8^ATOTb+k+Nur@@~&b9VcU2RQ@y0J3VQ(}!urFT7vry&$; zshD5w5uV;9u#YB#cy$7IZ6(X@Z=y1h+u=i#EUVS;bE14YNP9#%#J|Me`%3dVE27wR z_BRp3G@h_4I}1L-3ns7r+8$(=#Go}reV&fEQ8Vr;QPfyQx)<_NjU z9lU=U6uCoE`hce~DV)!7Qy5rmS0t*O(D-}*c98G?C(Hhyu0&nK@D;@pz%+4O5RElj z*`W_O#^Ad#1b@5Itk;eI!6Y%LYq+N#r^1x(K@vnpbZO+{#B;xY<~5}S|KUsiH)Pa5 zY|%el**{F-KRoF_Eb;%#9Ql8jFZmZ{{Z9)U)S_Hs{*-20@uc%N(L;%GU2zMb{-Ic; z*|vwp7@!@vp=Yp_O@j{sAlmIYj*F|Njap%(^j$s%*b($KIVQJKWruw8ACy_-$L6L& zV)JWnZjRp!C?c~6`tp_n$vA{|0Lw!b5o5J>i@_s4>gn7uElG94$;GX14&L6J)J);W zMlU}U^7_r)Q{@-&+H}1z)x_F5%~qWe!q7j&H@!g1yObvpSTcXS4R*fGLTd0Bte>rx z*>1NeITAeMJfp*MC%69MdwH#ru|S4FSGyaW((g8G9*7K7MI-WHNVP^xq%%x_B?G4h z{1klrDPiu$dZt#9ap8pa_j!KSNLt;9kD6$ph|B8XFv|6ZyeR~^;47r!;{ar` zdyO|xV%MKxu((PE7TY8OV}yQr&_*=?^g1+(t2bG&OMP53UY1B2?Ku%tPIvQi zHD{ASyYLHMz{RuxpD2uFHCf=A0Zx<*O-p~Mmq-vEejV!(!InZpzwPD2V6!v$cvw>+ z>7b*K$!WH;^6UAc!!CRV?z8AKr< z=2PC`+=)4EE?RY{tkY0in{C?O__1cFb*v4!i=3Z0D+)h-Pq>R$#+fYZ(BsJ32t0x9 z73d%lIn7L5nCk{Y_+>n6v5JJod0z8WceCo-M`UvEGN={pVpz5mE3Q=tBMUlxu?E5j ziC&qN>Bs3lDd8%2Bj@xAo(eqGV0r5k(&t&Yu~Jp8Gq&5&)3?>?*vp$cZISfE$j{LB zTp%2${OlsT!5w{tKy06q(I$(&W(G^&)(bToFL5Oo$#V<(u}WWU%<5*qapxKZZyt0T z667_#l|flKtBcq2T-FhLV9nf4_#`n|`p~0e+nLqRLKL+}6-@SJtq3|<_(1;7PFvcH zK^2f%lsT&l;j@KQkAFCB zvqAF^U4_TMIG)!xVuXIOOIKi(V2|WP7;;%7C6zQkbTnQ&11_g{NiQs z6pl*WfVZX#nN=tW^(+qXaBv5l)mWe|>A$6f@$aZ*{MY9Qq|I)Zv`kGhfa9gvIw_gY zP)BUohm3qhcRDsteO0ZU)U%_E4y-ND2LBlWbid&h{@*}?D*ix*&_BbJ9Df5Kv%Xto zReYJ7pk5_R6P>r(n$USgzMX%1wUMq+PJ{amyY!{RP$g<2g+h%I({?VN^|*wEQ(ZZK z4yEVJ?g$Wg(<44}YLl`&ZX)=8QEXe;h^+ue-hF-+NZ0yq0>`B&R_~(g z0qTr@IY1SYWP3Jtd?DUy>OF6N7L}LyDhOmY2MB@W9Fcx{-z$4{E#qVs^~({CVSo^L zVs`7D_GW-|CP6e_%QQ+9H^{LDe{|$R_&kK z&d!P;{qeW1OTZnb;qCyma>*KqPT9-wm6?6~zxQvwM@7?S-CRc2u}3DBwm;4si6t$H z>}Tx8Z(d{P7Q209%|v#T)$HO`WM*GIHuPz7GKbBOZ%Rp_{!u%)gpGG?7_lPPP;l2} z>!+B`wgxpY*8g-fe;Y_O71^sR8UM`_qB9m&m#lvp)hnocKJf;LGJK0B(KX=^|t`eQzCH_kX=U;LG$SFtuhoH;9u>dL_ zumC|MBn*DUZ-1;CN>KKIAMeu;f`u&d+5nc`HpYY?I)SsA+7{hN$p{7FvEC0#OGu9^ zy25*^jVbf6A@@(;lUNz0OYe9{q%)5r<~zk>ZbD#LG>jA5adyu66HeJtv=jj3s)fL1dM3%Gk_-(eEeq z(Za`7?zoPlk9RRC)mXP~H2UwF>I`_sz z&p#CF-3v_9ipNWy|AKpNFv82}`@T)^&Y?P z0;Of#UcdUTty;|hGreH*K~4y3xZMf#bQy*=t{oVD9Czg-Tf&oK#gx+bY~SWNSK>9g zZt3j;&o z)l3H-VCRjeaxM zU5t6+Tn0PRV{y>c>Gr2P$WI|FL|Y&JANJlms;NGH6GQ<8 z5fG(U5fBvtL8_Es0Yn6(cMt)op_fo2ARxU7D82V0HPl3UlU^bnLN5VA2?0Xf`~G%k z&il^p?985-IlFt#`$stEhTPnn@BOyV^LakcLtC%9GDPafB>(0V?2vg0`$NP{z_hwU zrxx+y7cn#uSeu|Of9X05sPp2I3-zi#<@UWQIKNl+e0hI-u6$+EL3fU44Xx^C9uZD~6d2ka6Qt%Mq?glXfXXKiSc? zGtPR2yS_cHw^!@0bEU0AT(K{zMtuF2sBa^_v`%WWIQO2hk5F%{4|xsVn>`J+ zyEk~BfpWrk&h?mwwgpjvz$ctF?-!+M>ioxVJ>#?Y9Ya(Lz;bbd%O4Y$7rzMEFb{v) z0}$pD{bNp-nRHYT(DQ$GS3F=N5-Deb@r7 zI9z4%JkA74fs5vATplkIl|Y|7pnq{MerDxVYTh-dYDSFYxWhZ;2yl{OzgL|^zH4B! zj!_vT6n{K@2Hq=XtBa&$eWJ+L3i}1O>R)S6Z%K%ktMms7Yk+Jf-KOV^Y^gmg1-z?5 z+Ih3-8zqSA%EbJGYnUh-jMA zZmu`-sOHZ`5Yj78MN;;?c(Xf9qV)TZ*TBtt2t|5iLXAP1NdShoo1Gt{npp5M@Asz1 ze)h}`bL6wKJAMW9UKUDswfdLR)1F>|UFWO`SU1qpm3=zdLhR*gnMHYTyj|R&?3r|v zTYSgOh{x~09fA6RZekbvCaNQSn&b5roN`Pg{gvsgLG^-Ph>X;b*Q&=81^qbHb;-Lm zY(49et0}n!_@@U`u}L;I1!u}ug-ZEy(r1R2r9VE#BuVzEA918c*Oq8}ojTtJxKwb{ zCd@_VkZiezhqfg&1gKfMMj+_>?X01u7THdADEVGj0ijT6y!JRARA{PPsJ96_&9t$} zox2;ne6xO88)Bnufr%zB1>I>eM+q|8cyGkfr-GMTc{`gtz8$ErW`g788|pn0{Lv-i z5?91-%kesGnG`!8__TX+Oy}90(hnBS^q3P*Z!?JPzK_|H=Tf})UCUdkx%foHj^ny7 zXQiF1EwV`|32XDAA=z?nw2QlnPN;X3@3TO&mLp#?F;fp+Uaq9px}!2sbbnvPpV`o% zISrxR^-LfkWs+yoFDX++wC1S3&_+w7YOQXUYfs+kMT}g3Wz1ldnwJmT*Y}MBRqYBb zHJNe`o7|gcXA=aZ&lvmeQ^}eC_PG*((|wLU;X;B|DT<)TmdtbVq7q|Qf?QMRrB5Hg z`$`E1|eWrX(D<4 z2yStZxEIIKPE85n>(01>$zL0aEiuyHgr%CNQxIVWsi+mW9(j>W#c`%1(QL~qw|ka6 zBOUl_eJH$Esy-@xsFSyp3cVW;XVPIp4lGK@U}-D!64UL4Ta&c|uO?DtWXH89L}}yg zEMNDxj0^~^BECIQAR~_6SlE*7Fm5kV1_}l39M6{p3BhcJCGmiclff*Z0eClCQA2p% zCG(E7spnGVO^QL;fs2>w4Nb7Bx=*pR10oU335{RhI}A|>I7f9zvKhZay0K8-vC-UW zO0S-uRwaUbiyH|f<082wcQ=siF3liV;a#v^e@=_0uJI@xZ9e$}DJd!0;aus^P69V3 z5g977qvE3qAK$MK?FHx7jpi#Wm+LI{Te(H{xbjZ-&U7Y7^v3K9>`8{<4NK>?*cnGG z;8V-K6XDK zPYq-4Hjhxlkl6k_Dp?)Y+fpe?{&bKJ#`H*K!f=w5kIlmNL$j6)sl@L`aJ5>#Fy$v7 zZz@{`v<>=^N_UWxB!uc5>ugRUThQg1{$p?YAmeQ)?s1JRu<<#}DyL~{tI1LG^8rIN zUb_tE+1A9(kR(_!KVvfBUb-!|FXG5nhN5iej-wC>j;m=Q680)JrLX0;>h#|De~04+f2f;T3no;z&(r=sEcJpsN?aVz|Y?@Wy}V<)piu$ z!Im&1@T2(7{-s;j6!v`9Yco5Z*~jEI8z%X2M(96%v)cI4(S9LHmhDBaqVEVpUEHph)t(L3(du{!}L!(JV@z+$ZOWzol zB_1{H9H{Jbls-=pf~5HL<%QGp)z&)Id>akNG-|P{NvAw8UnVQkQdN?#Ovf(1o*7v4 zp{l3STzA_|wcD#f4k^_m2aKr#OMsB}kh~R$DX9M%l`w5l=o!fZP!Mw+;CiY+6iXa+ zsNw(xvQ)wIrOb1(^6j=U(CQr^gfO}Ta6RcB*uzZB{t%Hb0JM^@8i-H(VUKw(#ATVP zwOEb0W{{JKJ~r2l#BWQe=OFFm_#9OS>}H%6aVyFghXmhqc9_Ee-EM3*n<&d${K(rz zqRc&nwrs=Ia=j!=UtJ6k43F*2b`@_t@kes;6AO_->N@0xDrXm(|pre zx)9WI;|U$v&$}6};b?1*A9o8kp_nD;PRruCXz|xeYJxQNr6*9(s8FZ;(7{@p4MdPV z0iEMG0Nu=1EjK_u?qUK!ww9oqMO&Q7MgNJR@ZZb>Su#Rb#XbKJnfwPtHu-;o$T-qD z4)ilQw!IlT_CsYE>XTmA4%%rnwzeGNZnLOUCq?=_buwfxqBb+7APi;P|1sw7XE16u zv-lgPuzvK5^F6r#ed;5vB+dI%tgGhHb?37e5JLZ$|D@@)kc50?N?3%5PYjy!zW&fe zTzz8vHOJ-K0+PG^-&aJ>nErB2TtK4(WCPUo5nNbt4kzWmuM zaW|tDwFdQcxu2l&dLR1!4-wP6FCQ+yQY{DFs#BLnZvG)mpfC4uj<49Bh?`M@*PqgV z$X6d@x%i2|0BP<_qUjLD#^ueMwz2gmh2@3ccfWasq(aMzgu~hNd*%&FG=vg&80iLcJXh@3--s=G%Kj6)Zs|v$iWw=wOV*RX5n|{%}v?6 z$bCE)b@;Ke%q_LUQe{?`=TAI;mF1{xzbm-Rmm>+%+{&yID9qbpr^iqspxL(U3{9;Q zBCWQ21Io?g8{-bBprMe5oEbXS-_BgP_=pD-p0{nZ90=~VE;-(Syit)nHin&^yO$^B zyMv47uba_NQIKT3hnU}{Z2R#0nG+v1N_Tevj1nZ(!^<8lWair}+(1l>YhXx+vfZ6s zi{A7-cDchMd&C`2@_S6_zP9(ZO{v0xp%wNDB#_OAohh!*sP(P}pJ^sn65b%NXmDM6 zBs4UW8UDyu87ZPdHPzET!=95unfb*%WP*Rs$V*pKX|?U@{{e8uoTsO*yerqKJdfqsH*@Ym+)2%>n z*)*+}=Q2#zZYGflpdB{qpbrh5!tlvz!cXRQ{RWWHw(>Z^rO8@lvs@GjGA1n1e^Q(| z%w^qoe|Uj=_abu_75`OhB7WSoaR@*ylvKQ@&w@0ZY|pn&50#)>s)Q7`swF5jK?qX# zu4NqX76o&(pWm-6v18|IPT6@EvWC9RVz|O|PxPzQAlGZA=!4vKPUlb0r~yuTZBpaG zY}Zu1n7H@-I?|}2RIBo>`g7TA?vXy%dt7%QpJ!(ewm0L~z5zzD=VIj-V!o17wX=47 znbbd`r_OiO0}cINY?Grh)&}N;2U$z+Qgy}$)E_hcqy^^48mo?UPwiCo)`N=yXQ6s8 zZNSTFIS$?ah1)vmUDQ32cdQk=H?5e8gOn3e^D8$T$7cMW(TU8a#u(1_175%(g`p5W z6zGdDZv`&3!{iQZocfEjHbz{(HgI2GpM7ldUcFMD$LneR-@)xgma8YIrb>2ScU;_Z zxnft62Ym)z1N17yf7Sp)VXWvB^v;W3(Yg%7yZ4owKP2JTYCv>B>q~>nOy4UgHsSO3 z3%R4at&@u;aVsqi(Ux#0Vl~#{yO3`Ikz5bDA*++dK3E$Z7zN!$pw%cNY6=bVBjqa{ zt|ZN~xOB;Kb6CqwOQb^jcpHmNNz5l7R9rk495!^{`CVDZJ6caT1H$0EE&p_>%x8En zTn7pf!9k7p5EAga;&36j*oArDhWOaGOpptc+ui;AMO89ufQcMs>4?pU7te_rg;@+5K zXn66BGsBYTas1DCvOFgumUQwZR|EMj(Smg7q3NN2^0>tmSUItD=MNDz!ES1%+(6QC z8i@kTX8E?n7dSDb6+vcMmj!$M{cMsS#f7CAG+tT6Hq&Wy3e{SyT1iOBuj3L?WcY_D zYDN)no6*M$+Y94wZ}kf3qteEhuNjDdWMiLZ9>)S{Po*lpt;Co-jOZ}mtCypi?cTk`(_QwYS6UWW9qjmhY+~b9H4KP>|g@UV7&`Fvt`x8g0mtHNpAoEPtdo4+_M?oh$se*lFv z`+$Non5$|U>J1+j8is+_la!mc_IS*R!#LS3qKE4kuilYTly-6TKW$?c$ZE=&)AtI} z%wQ=+EHoT(M_47zi8CH11blKHaQB8wA!o(~aT{aS#pOj%P>7y6LuF zA4D4n`|(p6ht9n%E_!>f3Ui-j_O(`K|v=udAtc!4{~4-Pxw zIaT9)57Lbr)#>?FM?||5MQKHG zLi(Cx-K8vQY^NiBJ2|c*`L0di<+l}(HK?WY^Yw0FySC+Ovg1)^)$iNi?#B?X+FvCT-Adx1Xpt%qi03cgzeni*DE3yAFMgyH zJWv1jyO3|#Mef%##Q|mWgXRuzH-@Q^X;phiP9HD(`|u1y`KTd%^MJG-M$qn~sp_wW z4u4T@{tylNE!g)z%&SA6L)$L!(ROWN74nz}Qx)$OwdQ7Kx&Zy!O?I;W?|Tgo_EvAX zJZ+8(3K(lN_E{l~F2q>LMUQtS>7=+v7t4M-H}VeTPIig#g0)ob4UInPVZJJ9pW%|Y z4LC{qW#bgE>qjcE28LuI?mI^F3&ZYw-NE4xZH%KCT+K6{MknS&m(fz1t>b%pU>)UD z@~E!b?|juSB7+;G@f95a0CjRT8!_SGf0}v5b5_}K2o2Re4+eId9cTp=({~d*7@bs^ zp?uQ$*#WYI0VVC6s4%_2q=%nxkeS849yG!fc4pFV&Ll@zjxCQasvh8{lva(q9;WOJ zYt2b_IdRRH-rco7{@JbOnuUJ`?5RTBZQS{vb!9iXyBVJf_pv@gw@y8n5AQ7dd7JA7 zIkBkBX~40{YuonqfnUs}T|686MqcH&)R~syMqpFG^e=5vELC-J5{T?TSnml;(m04E^p_pH`9LAeuUNTA%@V$67~xZxFzEdK{qWb{ zlrhP?(V=kbTHycYj``0ilX`2L!vuDbgRX0DP;%%2-|5?ZZM|o$A)L)!`9K4{f?qN& zCOdYcFK2Rx>NvtvPKH0>`Tf9H78OOK5rGpXi$minCi8lIg{}pO0d{g31atBtt+aZ! z9>nU+5%`4imG`s>pq3P+y@njo|M0s?Sq%X z_3kR|^QJub@b$y%m8iKAPLB30s_U#bba3j+_2ab{JRt<`@yYlpNS$579;ZV0=9K$a z!0e**&|&s4T7picv>vEB!!EA3f~~U3c3UdXp$Qjz(VnWfC=^8{tu@9r=?BjA&4gLK z_1y`P>D73YKG)5I%dFSMBqgg^(XR%;y+cksxK@n7(a)(JGg=*{;Ke^_smZQ9qMPs{`Bq>jcNj}a1L-VFK)0&UOWW=FMf{a6 zL;nE+c^4!GP_1UVg$q-eHnT8P9Gdn@EY9H1wh7EIa*3})xA6)tP z#NjaV)0I%ZhWD;rBB(|~0-R%b;TRErZ>+``3heBc{1ysTwfJK!6uEfph?{ zo&l-`n}C0y4G>Iajgz1X@DXw6O7sZ%a8pJ zUgdxA^nw-!gKvk-lj!#j++J^1E1igV%N>EA+NSrAbn2UQaGg&P!9>Jz@yr62^ZjFg#P`l%?p*`OJWBAGT`__#9;VU-KpyH$JT_k z2(?7kW1H_UVk*c*iwkG`LWU%i9nIngw>#t2)>ZU#B7y_|3#knt_$>r9*B5|4rvH(4 zdvWzYYi{W?JK{r6GB3=5dtpYFMTrw$o)2GE0e}Rh=)_y(U$FbI7yY=N)z{C;Uo=F_ z$6abz{a!oBhSWZ+ewDzfL}N^?Z5C^riDd^uc)1JHi$lcnTlwurF@JwU@$Ux;0mXl% zqC){0$`M&40bhwz|Hna=tw~PNA0o3Y#4$AhVIcSjw9vmFSTiRVm4JSGJ6;l_q5A;n z9L(|e1LkY_|6ct+KZ<`_{{QHc|Mt3n46=V5{5#_Qoo)XAIMepHM^Q+Ts`ov1BGnj+ zNpaXCk~KPVeBo0hZ$yxCRaIe7iwfcouKuz4>Ji!HBlKUoRR6nMkdRpvw-+6qF{bfT zo4s4#zS{qVJ>mbCiXQ$a-iz=Fo8MzW`5Xgd6IJuuiS=?G#oSk26rF5IF?{T3#5UTwP{>kc7q@45$19fM6x8ZluwFZLiZVVwB8lm$bUAIi!yzdZJ8 z-iFA0n_(50>UT{krCSVh2gMjfE>gQ2GoxlquWmgpsI2G_-8NFhM%2)gxG3oLlHY$Z zXTDbtNwhOQ!Xx*%m8>5ySU zFZQd9BZ={4knu)4h-o|XHbD8X>qOGb=-DxMC$r6RzaAvfXtE0CZzz(1S)5Nwh|GA4 z>;hrMIcO_K>ub3KVl{IckvFs+jsbmo3JF~70o^%{xdn+n>P*-|Vr^^Y(yOw4oc8X0 zVXG=wUsinoG-1#dQiGz7bQcUem8CdPsSjm6_ef{Y_4BDD|4#jFP2<7TJu0WXB<>hT z(>GqeE5@Ud32z=5&GLz)pCC&NO?#K4g#}{jz8ajSft#BWVpPP9hxKyc`f!YRR0}6Y zYQ?{1x!I4(`nXr*0{!wrb4b=&S-4x`1x=uwYhxIPn|ZvVE`|deFd+iIqXa*=T!>;@ z8~V~TF{82;j6UgAklTK0FLXOY;Y?y!hOc;aaxSY_RKSv93sS6~?|*T!_>ys5tDIM4 zGWBf6s7c&%b__dl+Qip3+zn-hz&hddW70f@)*k2zhymzUZBtJgYC7VR=Bd4S%r_zl znWOGU8BrH&j#NK&D00*MUP_xHY|cMo9ln$t`q4K&@5eQAQodZ(Lr* zZu55SnCgE2Nb>x8#p7WrEJ8JPF{#fB4!I;0j(pV}gqhYN!bFD2-=3c9q*90RV2pc0 zISs8H9KhLnT2K4?*e$c!07 zjs5hk<^5|O$7p)=;gRgGoWFPO2 zy>8Z*3D<*iWPy|za~O@S*m;h39UCMjCHR@&RAuBdM9h43w12|+b?Fm?F5Nz(^_fGh zd$@nBvz%#_e0P~%B`rF#-kzTS$xf@8UOq3VYG-%^s|c;+9q_?AP61ga!Dh|Pe!dmN?d=7r zNubHYU`^P@LdYjWT!FGOpI#YHeVhrKiHNpvU1!#-7oUo5(Q$OnUyirQKE?QgXho^7 zK^kk7r=itcQ(!?iL!0u+cfUrZg}LLE8UkrUNnOa#Vu8oW0sSUA-k^Gbt$>xi(dFq?^t|EYtPku+k_(+ zUL4RzZm9&o|7pj{1lgjT2Gg(%$%N&~_Ssff^~u^OL3LQ5$c0H!b?Qr(E?t&;?B)(1 zoQlNRg-m4tW?sE#*kkEC7-6v5>v2Fz6!O7OY*8(Kru|eI)?&9#&hVY|_fam{yqW@= zP}+FiZ1~h-bp7SKgj21ITcegT9&H_*r!Hw80|&311Ejw+vn4%M5#mgLZg>@Z2+n zosbsM_ru&T5jn@ z0$KcL*hMzkhd5|=2Jb=T7ipoa9fMW>+X-FFJcXg`P8OC40~g!{FO=(1PkI?-l6fOD z!U0V{;1v&bhY1c0E&3>*n0g(j)1f$O7`nk$D^$rPb9UZ6ArAZY_{8M5qq}>%`yyL< zVz`Rz#t%OOiF6n#Lweq1V+66ECh%-4_hXdcQJY3hxFcS{ZvB(IJ?5JMmJYU|wxs{-2+*8!W zH^11Ay=Nm`OgCwEBR-2XUS%+|NwO^O%xrjV@UR+MA{OZ=tGKWzHBC?)t<@byut>X> z`AT2LtV|wL)Q_LI=5HlAnG})CexG4{8zgP{GF}Gr4$uCqr=xO)qZ2{-5u@6O8YIKH zAWdMIo#F+D>oew0JMM)UrpE-oFZ}epo6qaTBoD>z%!!RLfthfPCR0>mqJ9gcT$_v< z&UsK737C%xhQp0Ay_9P7(@1RBLj(1IoS+`#wB+43;T;t$-$RE@@ zdIW;M$yr&KR}t7L;GrP7Y?OGW`g|u$33CWp?D=*$Zlj$bf^o=R zrk;jrVtPkf)ch)T#KsIvxfz}e+s73463pXdk(p8fADW-^kWrESuD&eBdy2&s`o2ni zb%4VeLQ&7NdTe7r*d_%BmFoGYR{fwBCZXUV>VwCR6SPFiD9zycP|{RN$5BVFh66c(t| zGpb@-Hg9$LF%tj=0S=P9(%ZM?SRUzG{PjxIUfHA{NaddxS%sPDS1Th?< zbAbu7khy`&R6hWH8vJBlu{HBbe3W8QBrrLK+r^8@!iT37QH>qi)UNw`sNlSQrE(y>$x*y9f^rI zBv%^#M!hWkYQ&8?Cl}>$`*`^sv9Wgwfbpw;f$39rFP4&)HC~+sbZf=M_3p}(8yB70`0aH}i%*N6@}&NSba4gbT$RjyK0twhxwW9^&lYAP(}^b4foNWH*I7jn8;FKKd+I^Qel%>=X5; zjr*_p0Ip+-s8Zill}o>zPAlJ zIr_^ns=TRd&l*4%?*3h};7Of|z-66PORcifn4uY%Ti5>QEvA_FuIazqN^Ej%ofL&< zZBlqj--L)klpnU8^SFy>Hk5fG!{E2(A?f@prfj%ExjIAc>V_Yqg|OGW@5p#hW2JI$ zIq5U0y%{|yY&X8%X0S9-8=Ntz`Kos0Ud_TyA%j_w5dKCMnEy!tPqZAX6*u;)#wHSq z1FaLV;uXMhJ$!8HybA2vY6<|mFcY@=k(QSzYO2LeZ|5;~)X?nZnPA0MYUGrD zUjURofgYIwFH_+~6mFeadnpqJGidD`!`?kU|Ejz)7xg-?FV*Sg8u&2uJwJE!ONX=c zm^$}czQSYZlNh>fWtrv7&Lk&&<6`$&=9etp1)$`+aa>m1hu5z*Z9igOkKvn{I(sRM>sr44|C4Nvl;XX#T(N6SNvOi}AOGMuHuia6sA4F+BWd#HbDQ%2Z zN!uKlt6)OIP#D^0Q;o~zHeh%c|9UXwuH6@L2b#V{y<6nmx2`bljI~}3--;G!dE}!v zuuu(111IOlD+p)5dFSK|aDTuH1lYtfH%=<|&4R?o<_V@2Q!rcknQ*pHiJaLrVaw`_tIQ{uNJE+}l^mFmOz9Djw?6<2}Kzz3@8bn7O z;#jy8Z|d@9;j=UkId_^)GTwM`;Y331rZ3wlK$qI|E>9oCCo{`_hO-CUkGmn-RQ<#1 z$`!#x*1+o~e8YJ2gBKtQh-rHgJN+15zI5Ii=BYVr`^==$&I$_NsIp;jE8%kc&`A^d zDYx=|>t6U+hGkfxx|YlOp=S*aR+l;B=iR(%^_Y_Ud7HvQx`;9mayGJ49&BKJp8ATX zs$%q8#@%gB&hXFeL=*oIefKJS(@FA&=ye4 zR1LSl-U}DU+n0jb-M-Q|-2%LLGg6?;@kB;pM?Xa>qVGg1;AzX30CD14cIWtKR$0VX zi?>ZlYgIHj*t__rvPxG(K3zc{EbEO&DK7w0WEasIW@0GKnbNJfWl#q@FVvzIUbqX5x9>9zvaT z@e|8xz~_+Q>_qJKqWVT<8W= zz{TbU=hEjhPFLbMR-@T3mIy&bc>P*juw*0Hc2)%}^nL;H(c*FE>ps|hIqtaU^HJ4L zdPD=3O{Z(x;Zz3>3CrcO8(J6FQY(5;WO+#zHYSicVJ@*>j1#1CMAvN}%*Umic=JWc z8j4=pL5DSqFOUe+!!>-Zbo~z2cXY4JSG^$J)hI?DxsTLJRn~uh2(IuSNv7uJZZ~pt zBTY z<-(KmsO?!l=n^zuLhuXd+Hq!BCbd1Dw|x6qX@2Ug+O=}J_VPm`x#!V-Yd5|N3%h*d z&ftsTs8;(dP`l4EvwdFpMf#;+q*+~zR?Eb`dZDl({gXi!Zd)#Q9tg4Z?*{cDzxr^` z#o_ZyhPmdu=(S6zsq99$^&g^Y&tUr#N{>^$DZDc3qTKa`Bem^qT+loH89R-OP(Eg~ z*$Caw{lLyT@pg{t(9jlM6s4d6lokRrL5zzGq_a<+lq(6)^C>0j4iNVffhi8-hCxF1 zH+_I=IG9=;`~tADzWB}m7zjiO%6p38bN>A%OtLfw*Fw!JAqfhZZRFhE3N?i$@@(6A z5%uyOLbUG(J~;&yGL{;|>^3e_8ot43Cr(aP?4u~1r4^82ZdG%7i}!N!>W7MM(ETQx zZ!R8s-sM9|r>auFu#X?dkNM{)aVIJM=u$=kikfv8wTK2=sZ3cMT;SX-$18L=?qB<= zyq^7A-}2@)7Kxq%WVX5zKqoNK!Pk<|pLlcehN!WrZiF7vSFO@E?xmx1 zDK7fJXzq-Lc&$BO{c2X9jIdJQ{nkg}@Qr;+;0GtiPOT>`FKNn_QSKj2occ>Tq}da9joY6{siL~ z=4NwzIyU|W=}w!nurU9L^c}Z#XE4i4$q(1$q>;tyFDFIL2{35s#c%s@^trx&1kmeo zrdVx&s205I%Vr_1jEd43Z#PKU_I_oMxGMZbtbOz`>kI0ybVJt{0QV2)x3J4NJPR0Q z?M^!3D>uWK9f`$yyW>5{ot z5WxExyhO9Bln@5}nI`f47%sV#3mrocyQx@qag)lecqS%ujl1`S>71D_mwFNgU#@UW z7rw@eT*f^MGI`DD05mMVFSuWqZF({*iE*}(vW~)hN z683xF4J?LYL_44)=Q!L{?(N;w`ZiBaH|J%Lg2CDWd?0I8T~NrlVsh~xqTzG|fh3b~ zuT(*`)VwY0GEMCZ;VxdTVXET9?`eBeQg)&AGwrCkd*fPx3uB}d!e|>ho!8T^bs~ST z?iuNNnH@Zp8$Y=)HWqNd-T<2tJjst*RpT#c{?hd*_7+=!(#+FX?}V}DML|u#N>vJq zCkNr>*-ZdijI0O1NxBWi0Y11jXvcx0>f1WA=ZpC1L0@5M2Bm5g( zqoRWHsQW@hPiqlHF5km)DlT1xf}ISXUESt5+2NHyd_E*z>lM1eb0nl=N8b&dzysrMr8PqN|^5vh$;kdnA-* zk}0>cvL!x#VBubMo1JRCbHSwrZ05zFxLbdS@D4G%QJMtEG!SqCj3rEy@2qTleUzv4 zIy5katqsoaUPN7oi{_wJ3cC|g)Y4ict9AlyGKy*KI}5cw20r5vCYJ5!SYfBKTsrPz zanKpxKI46v>-<%4uVsncgVT2~D}$)=4WV}uv=Nm_AOQgt@wxxJfkI^$Un}i!O@A}84k$B{{%YZ%GX^6 z(ao|L5CD;6MwsHS|7FCS2^jx&RT79{e~4HCkq49T-hZCrb)JmJ1NojMDJZ7@@xSN) z+kXG{pMS^Czw^hx^XGr8A94*7iudhwu!oFRm<4DeJw?i~whv#G7x@RcVJWTKkVoA9 zV%0fwmBy2t@CQVHdl55(aDRv<5IaD5!Di96Z6N53%+~Z|9tv3d$>?8^rwd!&XR$VU zG-7Hnb|N9**6=G(Iq>a=d*2sW#ct5`aDM7BAezmo#y>@Y#k-%eRaE89UDl{H-84(% zy6ePPeD}$9rt8-kx#D7<7oWrx)u&2~8BB^^B?{Z8OW~1ZdQ2M#877K64`=^moYQjD zk--hfrt!DP7b=Q9gGZZS}uU#}xd~3V^#dm&oq<#$kQTSPOVkJxy*1$I#^ndMHw(LaCoZaoRPBB`f)8K&he(9)4^i?4K~Z1cORy(1hW|k2 zn8%pRPEm{Ddg^e^nTaldNxfb4@LjYwhuaMS%QaYu_nTj(g(x z(qpZKv5HN&&+#gyp=WAp(cRh1yI>$I(=2^CXPy?+fvC?**~=EKfe3*+J#>>(yUP)> z@?|yXo>N;bQ-VD`1D)jz`nija~LoHnWm@#^`@%V)9h$9#TW|CGxl`|+f zUgIyCsLZN9>Mk=KIO5ithxIab@2+r3?C1ezbqm5?vX1z>5io~csD0WBu$@)j`R!wx zdH`Kj!|oaP=cC=c!GZuWqc$f6UB?)m^$~8316{nq1@&ldmCEKXo6^)_qdbd^XCdAT zdTS&3Uj%w9j+`Gz9co$i+ZVUTrFk@Rr|wqb#Lu5@-UjD2)xwXqQuu!QQ{dgET6CA0 zeAQ7=27P6mBZ#^^ey}fF@s{27UbgxLqhA=+EC-IeXASS2_@rLoE?2;=%f{(*SObBG zm1GQ0bf`NCwnoj)K3Rb`TA9C$Mi zgkry8TKB@1i>*T6j5xX*+i6sNs|>9?2?=Dpcl#CMBka3{&676cfEhAgBCY&i70srr zXh$Hgm#GB=6TXvwhz1V#{M6;ma9kSAQ_>F$78Z^2*XA&eUMu6g<1Y`L{0F5(;+$g= ze`j3o1Yw5JOnJCFT?{j<3oIC_VwnQsIh#?#TAsn?xn0r?h2C&Ume}jP3NBi7g6`9w z{m?ObIW6KST{Q9PGz;{`^mcWvK}C#}b43@JVtO_;HNxYG?CD}-R&sn*Ed0Y-VwK67 zT4KKE!eSt_C_(K*2&{4|gL!=6LU#fzQcBBdu#R;P5#`N#+(~7ZS&!>l;+y?aj>bDK z_iZEwD$*L%H9xIdA|hT**fLQnhoFv7L*Ea^bta@GslI0~LaHZsU%?_=km@XUzrJ(* zCb0mUCi5dJSx-QIFK! zqx~?8vupp71c)LLfT}u12*( zR1254iu$YvMY#!c$Lu+6qrQ6n?0!Ln+Yb~Y@ac;)?W59}QXXiyiBJv4edlIJkatO& zYvKRhWf<_UWTnSX$OP?y?2hmA+&LCDojyZf=U>^!1+&b`u}krX z=#n=+-tAvcLM3nbNA>7UWJW|em~7c;>nC!PJH>AC z4^D=cI)sbO)+R(Dx?6}dzj;p@bD%u#HAQEZwKdm6uiuK5q&4I!W!CpH8~R2d`xQpwYtpaJTrUIN?Lik&}1 zIl0B#y*CaQ>HUYBc*9%N1q!jV^Wv%#Os0mTWvkQRQeoC^OXBR|1+IN6>T>Ty+Ht%0 zwyPdkjQ(sF2@UtHSJ_t!>H_fCs$ZabI324uGtE*ja4r#f+cw(;P%y6H@GH7hDV785kI-(Fu-;^IJnB2NI< zo>YG67#`fw0TWzI_VYkR6z$fBC08qKjQHRoVk-ySlenLT?edyO?CNr}Gfs#ktcZSW zZmny%^M}Y{i8q0*A3VEp)QpxKQV?^KT-n;@i-s78a&J7?zVxGhRIeS>sqMb~;?P^% zb7ua6$}q zk*WM=eE;F_`!Nsm;kqQs>7(KKBTsYqoQ0Jru(DE+KG#1)um93fO77|^fl|#3v|gOb znjaMI8uNzuYUk|muZT7=gO3^Da$|42GK|76JiRuUW+RtYWcWA;jL+0~f%2u#Xb<#k z=B{~~IRVbM^X8$SBDI|hK@i_ZXdh_Q@=J;^UL*Lwc($)#@}04gdxUTW+AfoY6Brsc zrdix%_B~e_+^ku7SDQ#CRPB{1z)jOz==wgJqtg!gpkgXPMHX=Y9n6$VjcAgVU0hO& z*q5cP>?pVEK9^q%Nmhf64cIJjq>Q1_E7l#QZyeJsQHn3LuTku=iG34=PW$YhC!TBs z`>H$V`xWdcPe_-0q79}5%JM(zTBU5h){ZTqrFwGfmXB`psDY%ofM@Ie(c%$uVo?6U z;c;CI*9g>V(;lzJ@I|!MK=78W_-#{_(#O~vKTPU6-@TwS7igDQiJqtBTu@atl(94Q zB?lyZ2H31R;17R{pYX{zYD}&WMn^ODZo`~E3(+cni`JrI@dVA&?bd1_)*KVZVN2mK zH7PvMg~Xh^PlJ5TD}O`YLfgUg2}N5eX`W4aGbTx+Z6$K~Fheg#sc(q^M)jv_-mU>* zfRkka=pYf7sWAnD$qr!q@cX>GsaU{~(&w?m!czhQsjVv036^HZj_|k>8aO;Z-j=@`IXnWa;>WaAB;9 z8wVwv5~A7d@hqQE4y0n<)~YDwj-y45U#ctJuh)t!9lTk?u6!0m^8S;=p5I=$WHV`C z_=DpASC`EEe=LZ68Yt4nz}H5W+!~QGU)su`_px(iGm{k_2Rvc1*G@UVv=w~n#Uuy0 zRkGv!R}`oC@fS)?ZC}yxyc`~{XG@wgo^uS`tAQ@l0+Zje@gE|m7Q&ui=}IPT}?*6@}u^V=7>=g#(WjwK=$WNn8QiZ$RLhN`oU~uHnSr9595U zkNwyedut;e>ql?#xSr<4HPuwDCg6YYIpqHBgr@))Ew>YMu_s6nNc=haj|DIYqpRG6 zlx4tms8j`42s(<`4L~?mt6v{HD~WM=O;>F0DO#S`B53AfATdeKA`~lhxt)3OM(zCi zJVEI%!q4vYWSr}Y3Or#MEzrHv2A8-qYtVHwRa(@o!zJtbbw{pyg*a_@cN9mMzchw( zv<}Rrf`E;K(IJ%<*!bR&GQvlipAzgJj>c1tGtvKBd*2z=)V8%91VlhUdIuF0q)L-2 zh)6RcMMxkB94XR?NS6|dB8CzH0RibCNJmPfMmmV}PUyWz2{n|&cYE(W_j<;7|GnQg z-tQaZ{K&{&*;#9^z1G}&&b6Lr&Ur&+mDlT70H9=P9==Q4r>i}S{Ru+meerlBrHPOCCF7`+zwi%-3%fZwMaNH0#={{3{6y=ah)_|+hv;G3;j5*U zD1$HRNXM2}_Xe&KhHcxlxPzp-bZOUau^g4c*5W<;%xkqhxNfb6E0#7(1>S6lqLlBp z)4#)9F(uinQ5M>zTM^v$jTy^aS>ed#ic&WMk?a>p>)$yaNkr=drc%%^#Z{#6y&p3I zux56CWrWW)IJ)8VZ=alhW$NaFl+3GTZ9sPj$vsn78@8q3XXUCM`U~xB32rer|Kt!#6z(@yFECO@Np)#kSvNx}?eFS()KQ3bO zzxx{AqKq-E9{%n6DEvdz86I^?_z4;t6;|i{)fQdJ$d-r2P73caj`s+_U(2$HjDX5l z<^wu_IF$L;uQ?>>d8W2;P@7VZ3R}U1b#i}j$f!CS`~a+{c@At(Asa;hD?kSUVpv$A z3Jsz?BJH3L2!jV3UN+2lDCMfP6?#28Gue7(0&TIkMh9FQ055odFQ^%Fpi$Dd8TA~6 zyV|s4ZIe35Vl>Zh*DiPDLqt|0m)uNz1z9)Oxy28QM$b;vfPMjR0=?#6N{@%8mHGfG z&X4vwc*Sv-i`gI18QRI5miEEN4l8_A#*ESJG8oOzAyB$PLl`5%VG7Zkt#Wh**u6}@ z7nmW-%fgC2E&|a{g89Yyqn_obTgUiGnHP?9e1IU6n4Fl>y#UB7n-M{C3({e~-`K^6~fc@&Ek$fd)={e=ldRMo8kzk`bEZv|>BRlsR%P?EpG+fCILB z2C5u`9R}?7*J>MY0fvrh`fngH$uf_`Pf&FH5s?H4y&>vW6NfdnABAd@CFow%xg1QN z@HX(_Fn4Dgxx4xA|FeRQJt=Rv&h9*R%vB0*$*N6s&88D8UOzI)XDu zIw;tBt-$Kc_u?vrt4arpi(@FoQrVJJ$@s*tfKu`mV-8^m9N z25+3Ol+2UPcV8V)?5fQ?YW(q|WMuf|KE5U07S&bu(eI+&WQ2Zr^iUgrF$9_2!Tu}xiwVTxqZkWHb*brMIRZV zhsCAM6t)e}mz#ZV7s93QaRnD^XwYR8Ij}avH%^Gf;1{btz2O18_~4(Q#_22Nx~vX0 z-$!8{t#uHux8v=cwHkMqvVz#2BkEDGl>m0wl(FN)O1KB7;)Xhh(%lm<7Fsp)tZ=Kp zEe7QGSjDp&N-6-!5b4P1+h~NPv8GtSEbHAB zPL$3P#mr$kc2QjGHEE~-Ep_Qrd zK4-V*>b0m%lZC~#hzQ0VgPmIi28ndXn2i9|`I3->H0HIcH`yDkRT_$2+B_rUqE$D+ z@27IE8;>n9gF&>keK*G&JMqa%H8QA|Mb|k->fM|Rux7np@a(SVZGw~Wwx>#pOcAJe zAl*NFO7t>w>>a%@Q}A8x(?j&Mn^&rQWd$zk)m*=$n`lpgv&_UdMu$eOC(o@ZE>??x z7D_0XzpdBo;?w43QWFrljx0&$(Vj71XU2|nm^Vjg$1irVM_TH%$25y}ezi#M2lh}m z17;4l%he8NggZ}lplFQ;KXjo z&?p+0hHJ&!xpxTkZvpvdg&^RB5A91J==1cc4oh7T&>B%dRkS_OqXH?Ld_;8GR?WDEU9JpsQrrvF($PGNSJS?rt_*kZO8s+RIGRjdtlRY9zI;k-r}13TA4+c^940uEp`kUwQ`F(Fd^j}2X|Yy{jiglabC6mv zFNGb4d4>nVCS$ECVf4O%?|V@`?WYFM)k@j_&@EC?+xhrrF7}zbKTor^ESYp$+whe= ztsZJ;Qn}8Jb^G=yVqGCaf+YH&9$3xs833tn-u?y;{tgxXZy%FFn^o3JFdGYiw_J|X zh-@fg*a9)yP8_^HULuy;*6Whc$a^OfDJ-S;+YOLL3_H&!!!Y6u@_S4+?|6@&#+m*A z)`@#f;-|Al00&5o<2AwEg1{0-?i1%Q^vGVDu+lz{0mv1+Wv0M$b^)^;q&Zgf6SVTu z;^^zAyu$iQ-DQMNhuWbq;&_ggup@ZNj5*s0C*ql9n0y`5z7uz@{P_!$KXQiXt^O0_ zN0o%U{i~igS5z&~{R?<_D@-%Ak`wFg(QOnwVNz79)t!O`GaFpuMg=dPGYotvocCud z%z&2>kIdp=WeMo=z(Mz&@r}N9S@9e@uY^t}>Wix;Nf$nlR*x?AY`I0anOAeZv4VmE z0gsgXX)QdOeZ!})4<9CbJ<$NcD!4%-_Hps8^^!e+ZyQLoAxKUOZjOm)WqI96_hfea zrn@D+WVFA1Ktnv*XI=)>981bVq*{}p61Tq%JUsc45`%sD)MIU89OcDGCfueGNqBHk z97WuQ*`*ITj`h6|WF7rFj{(9JAp`{Uw&1E`-f25g6ou>GtM#`2&=h6KjX=9>RMw~y_(7orjJ|c9n&Oz{DNthjOU(9bzYFA89UsqyDb8_(oV0adVTs+ zz*DyT@*M4NNp&>{tyATx*_vSa42do#Bscd>qab!N`XOlQng!1peW7=EoebPdu6A#^ z61io1gQ3S~jy*|mMYt>lBo8{=HV?`Le4UI6>)yWW3L)Ls$VmEdp7f<4^x zDSdn-8%a6Y#C~(CkwOpZ4fo-;G)EVgg}PYvYU7ftv}IdpxcCu9F}-PT?}hbfINq&^ z$Uiirzk>)aRC3MqR{jaPJLK%LKf{ha_MGtRr8jl2i2K|Ex4Zzc!S?vy=KYFcIZ&ZF z6Gt`yVe-UvOq*Zu>vunuZlj;nWz%{I*^*k`l6UU7Kt%~82p;{~pX+shccLrtdMq6J zajVO*2=1@nt4nX7bHl{ppd3Bk@3?$ag|+L6!5)U~C{1$=A0&RPA8d=2hK#=OI82e2 z?G(YR>)q+9k4QXzM(eXLN3lscJ6kD8ZAx8uX-!HBR0v%$)4@MaRz$a+}|zt&uN)SZh>{Ts>-{RgV`c$3g2 zzt4VWou-MNk;9u+MY+SG5fHHwX++#dY&r2rH>PIBLfSWHyM6mY<6I=4MR^ExWPeJ> z+B;3Ve@hH@g&ix9l%I&Q@3>OxtsFPy?e%!z%p}9uQQ-m3d@Z4`@bKuu7upC(+6x^g zJeq(Q9AcXxykzchD)21o4adhs$zF-1UY%-my<>fM{feQD#~z2qA8br~B_L?Y8F_!D zF6|lTPH1A0v1ZP?XOiEuZu?6h^`Jmnxv2;ifO(s=>-zqMv|aV!a~+)=&&sG8tZ#wv z$?@8-My2*pgpH%z)bVX)*v!tZBIbt57fjqgA6pORIX7_iwCq3L1e)*CCM~|DsB;Z$ zk@{s5=ZS_s+Jx4#Pec0MVzYn$cfY-!;R)(2REF+k6>}mgM71l7pikpP z5|s#dk%EN}|5L9ncftASO`WVGPg%NmzOU&~45yh?v%L*m1Qyq&B2g>J{tU|h&V4NZ z`*V^K$m3btkm;2AY0D4Ja4Ah7xT)UEHbNDWUz|eBz)TZ^tHqJLY;~eLs0YZE7LJ}2 zE2UkHQj;n3RG)vTF$*s_td3G>j!hEC|Ksj{-Qlkft(ranxVL2hfIBMyxaX)oT36X+1KP+0Hs>qy zggc7PH2eaD@p}h=43x?LS&dEw2W^tY2}FsWJ%TTYU$TQ99;R7^a*~zBv%Rfa5k#{L z#M#bD7)UZ}s+tF$2a&~Y`HtS0FF`7E??7^x3AS93Ujk1sp#oZj^;`h6xl zZ(Em{8KkbD?D=!gWoh?+*;&a8ycA>J3-|oR_4ZiKC$XcOE94~Z$K;U*v55roDA?x0 z1_m)hvZphBM)@0|Z=^=DcCO@wbG%Zg%1YM{yfFk3%bl;)5pJ2d{z}A6X1Xwejx;lb zBh1JI&G1~3%L;U~2Ce>7sm|O9fF;a+QuA~S-5K_yXjZR&Fh7lmCo8YDWP6&VO!e+r zyhr0V3Xz+tTpSDyVG55o?D8Q=;ZqK*hecL^XI>!^EhQ9IEGuYfb>+8t*;wi!a%-ulFIX4-}>rqsIUGj@*9ZhkwA)QdW^lPlj|o>CtJ|Pq}=q4cx8dU zeS+14v`qyMLY)_6(8+p_&*NfIWgy?>kYJLmXX5=P0YW%t^h+g)f(`T=k*Xw{Y;-w4 zh@GA9?hhsg5;+QXz76Q63(M97d*7v)^kj!s+(K2?KWlEa!8!8tq@Bsts@{6&i7-A3lX5JP4U7KX_n47gv zouYK0X|Kv>Pryo9kUcvqVF1sOWtAhKGJDd$bSGlPDGa`PwFH#=(}Y;Xf~e&rDVO#i_r{IZII?1+Vap-J4eYi3eR>J zfgL8;f3ipGTNsF$?}Do=wdWAEMh`%fa7o5i!M$>dz*4+qTK@v3JWyq^DfPDmLnk?Og9y z?VW>ze_VQCAFzwoV-;lHUyY@i?_qbePR@19P) zCiu}2n7JKBEysDfRf2&2Kj{0N)V3(YdwkJ>_n;rK4>M%aH&=(xOD*6m+SBs%0eWu7 zKb`@gpFS3wH|CN>ZRZ}==1t2ir112Zj%`{tq;fjO1ga#sGPx8;Tc?v-C^1IZ%Bt#QBQD63MF|3_sQmN}Zr2Gtq#~fa2p^QMt*5amU-Wiso%qfYKM|iD zQ_*jn#V-W0RjrVc;1XQdmH$*{^AmI}d9Iz{yN)>#;}9%bEHcpcK~iMOH^~AdU%YCG zBZojp14*M*zRvlyLLD#rJYyfd3NMu}H6OH$Gu|rW8^3*_5V*XIyzyul+Z|vaW6_+v zYwNYM(FEhNpjQTBo@Lpu<(N&4%d{dV(u1w8B_&dSyj3-??G*Lg&D`uGp0T;c_D6QR zF7Td^)Bzi#Lw6mituXQzFhaRS#Gc}=ojw@+X>c=i*hw^Q44ptGyVuV2 zN9wb@{H!smUCabZw&5C%=`-W9H@uNy17^>=+xEk}ZC*F;R+$yntBA=^6%C^SaLF}> z3)wj`gl$4c!cqoyO_{Zy$nR%|dpCW3P}HM53$_OSD7t8={#jC!zj!C)h^tC+BeW^6 zhg@d|*#1=zk7(fY24GW#5i(#=T|?5NqxeM!wor}r{*q|g zVI{G~K%r28+Q7dzhbF{MApqSx(XVc+GS>z0rcUlf)gZR%j}dFnW&J2;Eoiapr0Ql2 zjr%FObDNP%gm+b|II~Iq$SQlIAUc6l=lEH-uO(nYvXVrWH+(iBgj0LK$-Sz+|3|S) zWZdVww(q_sMjr-MqmH6o0(upa+Of|8}}@6krDo+(-gkt`Lji-bci*vNIeURm|DYrccD+1rmFN0^w9lQS z&P==Fd6fI7i?}Y%0zu2kJP2nL8&ueJPL~#FWxltm8}WFj?G56SLj!AlLruK1@(t>5 znDHe}5lThbQUh%v%Eo1+@O?Ahr@%E6ReB9p4*do(v$ptT0vrWU9dhh=PiW(eUr>Zr zbRLMmo|cRmkj1HQqbj{!JnpLaOWV~XX>y_s!pbz5b*U)WIy=>^lOvf%P7rHMU1`nY zn#YFXXN-7NM}g)df%(TLTc2F#xpmc2xAxfz7r<4iEF#xq6g`q`44!9dbK2`iy~CV8 zqn=w8_v6f=VQJElHO0G;w|%k~tRz z-xCZ$C~-CI^XRJz3)(Z99rqJR^plUei0p}8uWKov?~O9}SgpLxBge*eb}plp0bjsQ zD*T(DAj>VlM$6vSSGNtv=liv);rk9O62CtNPCvn`{yJR%U@2q6fLAkus1@~+f~tH* zsKiF!R}SP00`cA#ELz{(L!1~!!7Lh4nP-vWNX)L}833=8CI19Di3|6wW>$|j?;&EO z(^@c1nEg+@qnDw@Fiev11 zS@7mv%{8>I;BecLYpujMC!D#1@S%J%s{#9k1lo*HO)}S@Rwg5r*)HOIfHwEc-lYV* z$}RI@X)FR{cQU*knrTLLqUGZBYB)G-Q7i5KptX&GLcp$OEaC9!x^_viGSeB|K)|JG zhe!4bDTEd%t}O-zCQqra`OMN1tmx9%yC( z8sO{Y%>S%iKqU%xhcYwa#NcyFbd4G=o7jpX%`2YX_ literal 0 HcmV?d00001 diff --git a/images/pr_button.jpg b/images/pr_button.jpg new file mode 100644 index 0000000000000000000000000000000000000000..988130c626d25a48762d5c2637aecf357a6b1a8d GIT binary patch literal 48696 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 ppv zj9N(N`(2XCq4+(w7Aq(C2fcx)8A;1Yn(sH2KH@EY5Bf#4Exh)wZ)CYiKzQ-(?OD?0 z+@AO4%Y2Qi1EA5>?;`hiFq#9(+!_j(i)t5d-Gl>Y%)Z+Wx@HfRdSrv5T$EwbCyEv+ zirJrE<7wyYf%E~izHla3x$M28-8_23+NNg(4asR7Uh9>?+p!7Jqb5LkT5t9s>?<#7#mbdZa^741@x zsStlA#{6*9X;Ib1H>`Yy<`Q8@(EU@STBl_7c{&Y6df*oILYLrjC8CdmY2z?tWZg%6 zJXwR`LwAuWody1vZX80cJgNXBNy>^xsj2!9>-X;0Yz3Fb*Ix{UeLt z?$)VxwSbGLc4k*Fl0LjslbHCBkM`SZU%MAQoxeNEGEw9!+h(s!)d zAcN(O=KsSkG_Cq~pZ+~A|KCOFuddumy5>7ID<^(ciQ|TIwWF2q`7jduW=q2l0i_`; z_Pgz3m;Jm}U1h=-VyVXEp-V{3jIo51hOX)L07c?WJP!a7PioyIu)RP(MdU062Yv2L zd{@H(d9hd(fdd_Pbm{_kM!m@bG!J_r|Clu*{PXwTv+_Zfl@Ss?fUMyLft??vLim(0 zH6c(0By#NllTku$in6&Q2MpAvuK5V;Za#4A0=ItECaCe#R)?1C_=cW=@9B+- zVThS@)EdY!<#P4?!|yt9*U5ZMfflEzlHNm_+Hqw7Gx4!Lebn=-Q=-kj~&< ziwjBT7&)v2r?@Y(@dj%-#7ak`{0Fn2BmV_oawUlX literal 0 HcmV?d00001 diff --git a/images/pr_desc.jpg b/images/pr_desc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0bdf4ccc40a11fd480578bd6fbf0410e9cef616 GIT binary patch literal 86880 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
FCx&x|8IMSK66~u@#mv4$z9|xT7x(;q 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 literal 0 HcmV?d00001 diff --git a/rust-version/.cargo/config b/rust-version/.cargo/config deleted file mode 100644 index 51504b648..000000000 --- a/rust-version/.cargo/config +++ /dev/null @@ -1,3 +0,0 @@ -[build] -target = "aarch64-unknown-none-softfloat" -allTargets = false diff --git a/rust-version/Cargo.lock b/rust-version/Cargo.lock deleted file mode 100644 index 2bb252e9f..000000000 --- a/rust-version/Cargo.lock +++ /dev/null @@ -1,32 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aarch64-cpu" -version = "9.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac42a04a61c19fc8196dd728022a784baecc5d63d7e256c01ad1b3fbfab26287" -dependencies = [ - "tock-registers 0.8.1", -] - -[[package]] -name = "rust-kernel" -version = "0.1.0" -dependencies = [ - "aarch64-cpu", - "tock-registers 0.9.0", -] - -[[package]] -name = "tock-registers" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "696941a0aee7e276a165a978b37918fd5d22c55c3d6bda197813070ca9c0f21c" - -[[package]] -name = "tock-registers" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b9e2fdb3a1e862c0661768b7ed25390811df1947a8acbfbefe09b47078d93c4" diff --git a/rust-version/Cargo.toml b/rust-version/Cargo.toml deleted file mode 100644 index 0a788e733..000000000 --- a/rust-version/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "rust-kernel" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[[bin]] -name = "kernel" -path = "src/main.rs" -test = false -bench = false - - -[dependencies] -aarch64-cpu = "9.4.0" -tock-registers = "0.9.0" - -[lib] -test = false - diff --git a/rust-version/Makefile b/rust-version/Makefile deleted file mode 100644 index 16ffa51e6..000000000 --- a/rust-version/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -## SPDX-License-Identifier: MIT OR Apache-2.0 -## -## Copyright (c) 2018-2023 Andre Richter -# This file is part of the `rust-raspberrypi-OS-tutorials` project. -# -################################################################################ - -# this would build according to the rust target triple -# https://clang.llvm.org/docs/CrossCompilation.html#target-triple -TARGET = aarch64-unknown-none-softfloat -KERNEL_BIN = kernel8.img -QEMU_BINARY = qemu-system-aarch64 -QEMU_MACHINE_TYPE = raspi3 -QEMU_RELEASE_ARGS = -d in_asm -display none -RUSTC_MISC_ARGS = -C target-cpu=cortex-a53 -LD_SCRIPT_PATH = src/ -LD_SCRIPT_NAME = linker.ld -KERNEL_LINKER_SCRIPT = $(LD_SCRIPT_PATH)$(LD_SCRIPT_NAME) -RUSTFLAGS = $(RUSTC_MISC_ARGS) \ - -C link-arg=--library-path=$(LD_SCRIPT_PATH) \ - -C link-arg=--script=$(KERNEL_LINKER_SCRIPT) - -# build my kernel -KERNEL_ELF = target/$(TARGET)/debug/kernel - -COMPILER_ARGS = --target=$(TARGET) - -all: $(KERNEL_BIN) - -$(KERNEL_ELF): # src/main.rs src/boot.s Cargo.toml - @RUSTFLAGS="$(RUSTFLAGS)" cargo rustc $(COMPILER_ARGS) - -$(KERNEL_BIN): $(KERNEL_ELF) - rust-objcopy -O binary $(KERNEL_ELF) $(KERNEL_BIN) - -test: $(KERNEL_BIN) - qemu-system-aarch64 -M raspi3b -kernel kernel8.img -display none -serial null -serial stdio - -clean: - rm -rf target $(KERNEL_BIN) diff --git a/rust-version/src/bcm/common.rs b/rust-version/src/bcm/common.rs deleted file mode 100644 index 3f1092bcb..000000000 --- a/rust-version/src/bcm/common.rs +++ /dev/null @@ -1,63 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2020-2023 Andre Richter - -//! Common device driver code. - -use core::{marker::PhantomData, ops}; - -//-------------------------------------------------------------------------------------------------- -// Public Definitions -//-------------------------------------------------------------------------------------------------- - -pub struct MMIODerefWrapper { - start_addr: usize, - phantom: PhantomData T>, -} - -/// The board's physical memory map. -#[rustfmt::skip] -pub mod map { - - pub const GPIO_OFFSET: usize = 0x0020_0000; - pub const UART_OFFSET: usize = 0x0021_5000; - pub const MAILBOX_OFFSET: usize = 0x0000_B880; - - /// Physical devices. - pub mod mmio { - use super::*; - - pub const START: usize = 0x3F00_0000; - pub const GPIO_START: usize = START + GPIO_OFFSET; - pub const UART_START: usize = START + UART_OFFSET; - pub const MAILBOX_START: usize = START + MAILBOX_OFFSET; - } -} - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- - -impl MMIODerefWrapper { - /// Create an instance. - pub const unsafe fn new(start_addr: usize) -> Self { - Self { - start_addr, - phantom: PhantomData, - } - } -} - -impl ops::Deref for MMIODerefWrapper { - type Target = T; - - fn deref(&self) -> &Self::Target { - unsafe { &*(self.start_addr as *const _) } - } -} - -pub fn spin_for_cycles(cycles: usize) { - for _ in 0..cycles { - aarch64_cpu::asm::nop(); - } -} diff --git a/rust-version/src/bcm/gpio.rs b/rust-version/src/bcm/gpio.rs deleted file mode 100644 index 8a3947566..000000000 --- a/rust-version/src/bcm/gpio.rs +++ /dev/null @@ -1,195 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2018-2023 Andre Richter - -//! GPIO Driver. - -use crate::{ - bcm::common::{self, MMIODerefWrapper}, - synchronization, - synchronization::NullLock, -}; -use tock_registers::{ - interfaces::{ReadWriteable, Writeable}, - register_bitfields, register_structs, - registers::ReadWrite, -}; - -//-------------------------------------------------------------------------------------------------- -// Private Definitions -//-------------------------------------------------------------------------------------------------- - -// GPIO registers. -// -// Descriptions taken from -// - https://github.com/raspberrypi/documentation/files/1888662/BCM2837-ARM-Peripherals.-.Revised.-.V2-1.pdf -// - https://datasheets.raspberrypi.org/bcm2711/bcm2711-peripherals.pdf -register_bitfields! { - u32, - - /// GPIO Function Select 1 - GPFSEL1 [ - /// Pin 15 - FSEL15 OFFSET(15) NUMBITS(3) [ - Input = 0b000, - Output = 0b001, - AltFunc5 = 0b010 // Mini UART RX - - ], - - /// Pin 14 - FSEL14 OFFSET(12) NUMBITS(3) [ - Input = 0b000, - Output = 0b001, - AltFunc5 = 0b010 // Mini UART TX - ] - ], - - /// GPIO Pull-up/down Register - /// - /// BCM2837 only. - GPPUD [ - /// Controls the actuation of the internal pull-up/down control line to ALL the GPIO pins. - PUD OFFSET(0) NUMBITS(2) [ - Off = 0b00, - PullDown = 0b01, - PullUp = 0b10 - ] - ], - - /// GPIO Pull-up/down Clock Register 0 - /// - /// BCM2837 only. - GPPUDCLK0 [ - /// Pin 15 - PUDCLK15 OFFSET(15) NUMBITS(1) [ - NoEffect = 0, - AssertClock = 1 - ], - - /// Pin 14 - PUDCLK14 OFFSET(14) NUMBITS(1) [ - NoEffect = 0, - AssertClock = 1 - ] - ], - - /// GPIO Pull-up / Pull-down Register 0 - /// - /// BCM2711 only. - GPIO_PUP_PDN_CNTRL_REG0 [ - /// Pin 15 - GPIO_PUP_PDN_CNTRL15 OFFSET(30) NUMBITS(2) [ - NoResistor = 0b00, - PullUp = 0b01 - ], - - /// Pin 14 - GPIO_PUP_PDN_CNTRL14 OFFSET(28) NUMBITS(2) [ - NoResistor = 0b00, - PullUp = 0b01 - ] - ] -} - -register_structs! { - #[allow(non_snake_case)] - RegisterBlock { - (0x00 => _reserved1), - (0x04 => GPFSEL1: ReadWrite), - (0x08 => _reserved2), - (0x94 => GPPUD: ReadWrite), - (0x98 => GPPUDCLK0: ReadWrite), - (0x9C => _reserved3), - (0xE4 => GPIO_PUP_PDN_CNTRL_REG0: ReadWrite), - (0xE8 => @END), - } -} - -/// Abstraction for the associated MMIO registers. -type Registers = MMIODerefWrapper; - -struct GPIOInner { - registers: Registers, -} - -//-------------------------------------------------------------------------------------------------- -// Public Definitions -//-------------------------------------------------------------------------------------------------- - -/// Representation of the GPIO HW. -pub struct Gpio { - inner: NullLock, -} - -//-------------------------------------------------------------------------------------------------- -// Private Code -//-------------------------------------------------------------------------------------------------- - -impl GPIOInner { - /// Create an instance. - /// - /// # Safety - /// - /// - The user must ensure to provide a correct MMIO start address. - pub const unsafe fn new(mmio_start_addr: usize) -> Self { - Self { - registers: Registers::new(mmio_start_addr), - } - } - - /// Disable pull-up/down on pins 14 and 15. - fn disable_pud_14_15_bcm2837(&mut self) { - const DELAY: usize = 2000; - - self.registers.GPPUD.write(GPPUD::PUD::Off); - common::spin_for_cycles(DELAY); - - self.registers - .GPPUDCLK0 - .write(GPPUDCLK0::PUDCLK15::AssertClock + GPPUDCLK0::PUDCLK14::AssertClock); - common::spin_for_cycles(DELAY); - - self.registers.GPPUD.write(GPPUD::PUD::Off); - self.registers.GPPUDCLK0.set(0); - } - - /// Map PL011 UART as standard output. - /// - /// TX to pin 14 - /// RX to pin 15 - pub fn map_mini_uart(&mut self) { - // Select the UART on pins 14 and 15. - self.registers - .GPFSEL1 - .modify(GPFSEL1::FSEL15::AltFunc5 + GPFSEL1::FSEL14::AltFunc5); - - // Disable pull-up/down on pins 14 and 15. - self.disable_pud_14_15_bcm2837(); - } -} - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- -use synchronization::interface::Mutex; - -impl Gpio { - // pub const COMPATIBLE: &'static str = "BCM GPIO"; - - /// Create an instance. - /// - /// # Safety - /// - /// - The user must ensure to provide a correct MMIO start address. - pub const unsafe fn new(mmio_start_addr: usize) -> Self { - Self { - inner: NullLock::new(GPIOInner::new(mmio_start_addr)), - } - } - - /// Concurrency safe version of `GPIOInner.map_nini_uart()` - pub fn init(&self) { - self.inner.lock(|inner| inner.map_mini_uart()) - } -} diff --git a/rust-version/src/bcm/mailbox.rs b/rust-version/src/bcm/mailbox.rs deleted file mode 100644 index 5587d5304..000000000 --- a/rust-version/src/bcm/mailbox.rs +++ /dev/null @@ -1,168 +0,0 @@ -use crate::println; -use crate::synchronization::interface::Mutex; -use crate::{bcm::common::MMIODerefWrapper, synchronization::NullLock}; -use aarch64_cpu::asm::nop; -use core::usize; -use tock_registers::{ - interfaces::{Readable, Writeable}, - register_bitfields, register_structs, - registers::ReadWrite, -}; - -// const MAILBOX_BASE: u32 = 0x3F00_B880; -// const MAILBOX_READ: u32 = MAILBOX_BASE + 0x00; -// const MAILBOX_STATUS: u32 = MAILBOX_BASE + 0x18; -// const MAILBOX_WRITE: u32 = MAILBOX_BASE + 0x20; - -// const MAILBOX_EMPTY: u32 = 0x4000_0000; -// const MAILBOX_FULL: u32 = 0x8000_0000; -// -// const GET_BOARD_REVISION: u32 = 0x0001_0002; - -const REQUEST_CODE: u32 = 0x0000_0000; -const REQUEST_SUCCEED: u32 = 0x8000_0000; -const REQUEST_FAILED: u32 = 0x8000_0001; -const TAG_REQUEST_CODE: u32 = 0x0000_0000; -const END_TAG: u32 = 0x0000_0000; - -#[derive(Copy, Clone)] -pub enum MailboxTag { - GetBoardRevision = 0x0001_0002, - GetArmMemory = 0x0001_0005, -} - -register_bitfields! { - u32, - - MBOX_READ [ - DATA OFFSET(0) NUMBITS(32) [] - ], - MBOX_POLL [ - DATA OFFSET(0) NUMBITS(32) [] - ], - MBOX_SENDER [ - DATA OFFSET(0) NUMBITS(32) [] - ], - MBOX_STATUS [ - DATA OFFSET(0) NUMBITS(32) [ - FULL = 0x8000_0000, - EMPTY = 0x4000_0000 - ], - ], - MBOX_CONFIG [ - DATA OFFSET(0) NUMBITS(32) [] - ], - MBOX_WRITE [ - DATA OFFSET(0) NUMBITS(32) [] - ] -} - -register_structs! { - #[allow(non_snake_case)] - RegisterBlock { - (0x00 => MBOC_READ: ReadWrite), - (0x04 => _reserved1), - (0x10 => MBOC_POLL: ReadWrite), - (0x14 => MBOC_SENDER: ReadWrite), - (0x18 => MBOC_STATUS: ReadWrite), - (0x1C => MBOC_CONFIG: ReadWrite), - (0x20 => MBOC_WRITE: ReadWrite), - (0x24 => @END), - } -} - -type Registers = MMIODerefWrapper; - -struct MailboxInner { - registers: Registers, -} - -#[repr(C, align(16))] -struct MailboxMsg { - buffer: [u32; 8], -} - -impl MailboxInner { - const unsafe fn new(mmio_start_addr: usize) -> Self { - Self { - registers: MMIODerefWrapper::new(mmio_start_addr), - } - } - - fn call(&mut self, mailbox: &mut [u32]) { - let mut mailbox_addr = mailbox.as_ptr() as u32; - // last 4 bits must be 8(channel number 8) - mailbox_addr = mailbox_addr & !0xF | 8; - - // wait until mailbox is not full - while self - .registers - .MBOC_STATUS - .matches_all(MBOX_STATUS::DATA::FULL) - { - nop(); - } - - // write the address of the mailbox - self.registers - .MBOC_WRITE - .write(MBOX_WRITE::DATA.val(mailbox_addr)); - - // wait until mailbox is get our address - loop { - while self - .registers - .MBOC_STATUS - .matches_all(MBOX_STATUS::DATA::EMPTY) - { - nop(); - } - - if self.registers.MBOC_READ.read(MBOX_READ::DATA) == mailbox_addr { - break; - } - } - } - - pub fn get_msg(&mut self, tag: MailboxTag) -> (u32, u32) { - println!("get_msg"); - let mut mailbox = MailboxMsg { buffer: [0; 8] }; - match tag { - MailboxTag::GetBoardRevision => { - mailbox.buffer[0] = 7 * 4; // buffer size in bytes - mailbox.buffer[3] = 4; // maximum of request and response value buffer's length. - } - MailboxTag::GetArmMemory => { - mailbox.buffer[0] = 8 * 4; // buffer size in bytes - mailbox.buffer[3] = 8; // maximum of request and response value buffer's length. - } - } - mailbox.buffer[1] = REQUEST_CODE; - mailbox.buffer[2] = tag as u32; // tag identifier - mailbox.buffer[4] = TAG_REQUEST_CODE; - mailbox.buffer[5] = 0; // value buffer - mailbox.buffer[6] = END_TAG; - - self.call(&mut mailbox.buffer); - match tag { - MailboxTag::GetBoardRevision => (mailbox.buffer[5], 0), - MailboxTag::GetArmMemory => (mailbox.buffer[5], mailbox.buffer[6]), - } - } -} - -pub struct Mailbox { - inner: NullLock, -} - -impl Mailbox { - pub const unsafe fn new(base_addr: usize) -> Self { - Self { - inner: NullLock::new(MailboxInner::new(base_addr)), - } - } - - pub fn get(&self, tag: MailboxTag) -> (u32, u32) { - self.inner.lock(|inner| inner.get_msg(tag)) - } -} diff --git a/rust-version/src/bcm/mod.rs b/rust-version/src/bcm/mod.rs deleted file mode 100644 index 4589afba6..000000000 --- a/rust-version/src/bcm/mod.rs +++ /dev/null @@ -1,32 +0,0 @@ -//-------------------------------------------------------------------------------------------------- -// Public Definitions -//-------------------------------------------------------------------------------------------------- - -pub mod common; -pub mod gpio; -pub mod mailbox; -pub mod uart; - -use crate::{ - bcm::{common::map, gpio::Gpio, mailbox::Mailbox as my_mailbox, uart::Uart}, - println, -}; - -//-------------------------------------------------------------------------------------------------- -// Global instances -// ------------------------------------------------------------------------------------------------- - -pub static UART: Uart = unsafe { Uart::new(map::mmio::UART_START) }; -pub static GPIO: Gpio = unsafe { Gpio::new(map::mmio::GPIO_START) }; -pub static MAILBOX: my_mailbox = unsafe { my_mailbox::new(map::mmio::MAILBOX_START) }; - -//-------------------------------------------------------------------------------------------------- -// Public Code -// ------------------------------------------------------------------------------------------------- - -pub fn hardware_init() { - GPIO.init(); - UART.init(); - let (val, _) = MAILBOX.get(mailbox::MailboxTag::GetBoardRevision); - println!("Board revision(loading): {:x}", val); -} diff --git a/rust-version/src/bcm/uart.rs b/rust-version/src/bcm/uart.rs deleted file mode 100644 index 2b175d50d..000000000 --- a/rust-version/src/bcm/uart.rs +++ /dev/null @@ -1,243 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2018-2023 Andre Richter - -//! PL011 UART driver. -//! -//! # Resources -//! -//! - -//! - - -use crate::bcm::common::MMIODerefWrapper; -use crate::synchronization::{interface::Mutex, NullLock}; -use aarch64_cpu::asm; -use core::char; - -use tock_registers::{ - interfaces::Writeable, - register_bitfields, register_structs, - registers::{ReadOnly, ReadWrite}, -}; - -use core::fmt; -use tock_registers::interfaces::Readable; - -//-------------------------------------------------------------------------------------------------- -// Public Definitions -// ------------------------------------------------------------------------------------------------- - -pub struct Uart { - inner: NullLock, -} - -//-------------------------------------------------------------------------------------------------- -// Private Definitions -//-------------------------------------------------------------------------------------------------- - -// mini UART registers. -register_bitfields! { - u32, - AUX_ENABLES [ - SPI2_ENABLE OFFSET(2) NUMBITS(1) [ - ], - SPI1_ENABLE OFFSET(1) NUMBITS(1) [ - ], - MINI_UART_ENABLE OFFSET(0) NUMBITS(1) [ - Enable = 1, - Disable = 0 - ] - ], - AUX_MU_IO [ - DATA OFFSET(0) NUMBITS(8) [], - ], - AUX_MU_IER [ - ENABLE_TX OFFSET(1) NUMBITS(1) [ ], - ENABLE_RX OFFSET(0) NUMBITS(1) [ ], - ], - AUX_MU_IIR [ - // FIXME: not the same as tsclu - RW_INT_ID OFFSET(1) NUMBITS(2) [ - NoInterrupt = 0b00, - TransmitterEmpty = 0b01, - ReceiverDataAvailable = 0b10, - DisableInterrupt = 0b11 - ], - ], - - AUX_MU_LCR [ - DATA_SIZE OFFSET(0) NUMBITS(2) [ - SevenBit = 0b00, - EightBit = 0b11 - ], - ], - AUX_MU_MCR [ - AUTO_FLOW_RTS OFFSET(1) NUMBITS(1) [ - Inactive = 0, - Active = 1 - ], - ], - AUX_MU_LSR [ - RX_READY OFFSET(0) NUMBITS(1) [], - TX_IDLE OFFSET(6) NUMBITS(1) [], - ], - AUX_MU_CNTL [ - TX_RX_ENABLE OFFSET(0) NUMBITS(2) [ - rxTxDisable = 0b00, - rxEnable = 0b01, - txEnable = 0b10, - rxTxEnable = 0b11, - ], - ], - AUX_MU_BAUD [ - Baudrate OFFSET(0) NUMBITS(16) [], - ], -} - -register_structs! { - #[allow(non_snake_case)] - pub RegisterBlock { - (0x00 => _reserved1), - (0x04 => AUX_ENABLES: ReadWrite), - (0x08 => _reserved2), - (0x40 => AUX_MU_IO: ReadWrite), - (0x44 => AUX_MU_IER: ReadWrite), - (0x48 => AUX_MU_IIR: ReadWrite), - (0x4c => AUX_MU_LCR: ReadWrite), - (0x50 => AUX_MU_MCR: ReadWrite), - (0x54 => AUX_MU_LSR: ReadOnly), - (0x58 => _reserved3), - (0x60 => AUX_MU_CNTL: ReadWrite), - (0x64 => _reserved4), - (0x68 => AUX_MU_BAUD: ReadWrite), - (0x6c => _reserved5), - (0xd4 => @END), - } -} - -/// Abstraction for the associated MMIO registers. -type Registers = MMIODerefWrapper; - -struct UartInner { - registers: Registers, -} - -//-------------------------------------------------------------------------------------------------- -// Private Code -//-------------------------------------------------------------------------------------------------- - -impl UartInner { - const unsafe fn new(mmio_start_addr: usize) -> Self { - Self { - registers: Registers::new(mmio_start_addr), - } - } - - fn init(&mut self) { - // Enable the mini UART. - self.registers - .AUX_ENABLES - .write(AUX_ENABLES::MINI_UART_ENABLE::Enable); - - // disable transmitter and receiver - self.registers - .AUX_MU_CNTL - .write(AUX_MU_CNTL::TX_RX_ENABLE::rxTxDisable); - - // set data size to 8 bit - self.registers - .AUX_MU_LCR - .write(AUX_MU_LCR::DATA_SIZE::EightBit); - - // don't need auto flow control - self.registers - .AUX_MU_MCR - .write(AUX_MU_MCR::AUTO_FLOW_RTS::Inactive); - - // disable interrupts - self.registers - .AUX_MU_IER - .write(AUX_MU_IER::ENABLE_RX::CLEAR + AUX_MU_IER::ENABLE_RX::CLEAR); - - self.registers - .AUX_MU_IIR - .write(AUX_MU_IIR::RW_INT_ID::DisableInterrupt); - - // set baudrate to 115200 - self.registers - .AUX_MU_BAUD - .write(AUX_MU_BAUD::Baudrate.val(270)); - - self.registers - .AUX_MU_CNTL - .write(AUX_MU_CNTL::TX_RX_ENABLE::rxEnable + AUX_MU_CNTL::TX_RX_ENABLE::txEnable); - } - - fn get_char(&self) -> char { - // wait until transmitter is empty - while self - .registers - .AUX_MU_LSR - .matches_all(AUX_MU_LSR::RX_READY::CLEAR) - { - asm::nop(); - } - - char::from_u32(self.registers.AUX_MU_IO.get()).unwrap() - } -} - -impl core::fmt::Write for UartInner { - fn write_char(&mut self, c: char) -> fmt::Result { - // wait until transmitter is empty - while self - .registers - .AUX_MU_LSR - .matches_all(AUX_MU_LSR::TX_IDLE::CLEAR) - { - asm::nop(); - } - self.registers.AUX_MU_IO.set(c as u32); - Ok(()) - } - - fn write_str(&mut self, s: &str) -> fmt::Result { - for c in s.chars() { - self.write_char(c); - } - - Ok(()) - } -} - -//-------------------------------------------------------------------------------------------------- -// Public Code -// ------------------------------------------------------------------------------------------------- - -impl Uart { - // TODO: add loader support - // pub const COMPATIBLE: &'static str = "BCM Mini UART"; - - pub const unsafe fn new(mmio_start_addr: usize) -> Self { - Self { - inner: NullLock::new(UartInner::new(mmio_start_addr)), - } - } - - pub fn init(&self) { - self.inner.lock(|inner| inner.init()); - } - - pub fn get_char(&self) -> char { - self.inner.lock(|inner| inner.get_char()) - } -} - -use crate::console::interface; -impl interface::Write for Uart { - fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { - // Fully qualified syntax for the call to `core::fmt::Write::write_fmt()` to increase - // readability. - self.inner.lock(|inner| fmt::Write::write_fmt(inner, args)) - } -} diff --git a/rust-version/src/boot.S b/rust-version/src/boot.S deleted file mode 100644 index 7eb431652..000000000 --- a/rust-version/src/boot.S +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2021-2022 Andre Richter - -//-------------------------------------------------------------------------------------------------- -// Definitions -//-------------------------------------------------------------------------------------------------- - -// Load the address of a symbol into a register, PC-relative. -// -// The symbol must lie within +/- 4 GiB of the Program Counter. -// -// # Resources -// -// - https://sourceware.org/binutils/docs-2.36/as/AArch64_002dRelocations.html -.macro ADR_REL register, symbol - adrp \register, \symbol - add \register, \register, #:lo12:\symbol -.endm - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- -.section .text._start - -//------------------------------------------------------------------------------ -// fn _start() -//------------------------------------------------------------------------------ -_start: - // Only proceed on the boot core. Park it otherwise. - mrs x0, MPIDR_EL1 - # Extract the Affinity Level 0 (core) number. - and x0, x0, {CONST_CORE_ID_MASK} - ldr x1, BOOT_CORE_ID - cmp x0, x1 - b.ne .L_parking_loop - - // If execution reaches here, it is the boot core. - - // Initialize DRAM. - ADR_REL x0, __bss_start - ADR_REL x1, __bss_end_exclusive - -.L_bss_init_loop: - cmp x0, x1 - b.eq .L_prepare_rust - stp xzr, xzr, [x0], #16 - b .L_bss_init_loop - - // Prepare the jump to Rust code. -.L_prepare_rust: - // Set the stack pointer. - ADR_REL x0, __boot_core_stack_end_exclusive - mov sp, x0 - - // Jump to Rust code. - b _start_rust - - // Infinitely wait for events (aka "park the core"). -.L_parking_loop: - wfe - b .L_parking_loop - -.size _start, . - _start -.type _start, function -.global _start diff --git a/rust-version/src/console/mod.rs b/rust-version/src/console/mod.rs deleted file mode 100644 index 7e0ab123f..000000000 --- a/rust-version/src/console/mod.rs +++ /dev/null @@ -1,141 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2018-2023 Andre Richter -//! System console. - -// use crate::{synchronization, synchronization::NullLock}; -use crate::{synchronization, synchronization::NullLock}; -use core::fmt; - -//-------------------------------------------------------------------------------------------------- -// Global instances -//-------------------------------------------------------------------------------------------------- - -static QEMU_OUTPUT: QEMUOutput = QEMUOutput::new(); - -//-------------------------------------------------------------------------------------------------- -// Private Definitions -//-------------------------------------------------------------------------------------------------- - -/// A mystical, magical device for generating QEMU output out of the void. -/// -/// The mutex protected part. -struct QEMUOutputInner { - chars_written: usize, -} - -/// A mystical, magical device for generating QEMU output out of the void. -struct QEMUOutput { - inner: NullLock, -} - -//-------------------------------------------------------------------------------------------------- -// Public Definitions -//-------------------------------------------------------------------------------------------------- - -/// Console interfaces. -pub mod interface { - use core::fmt; - /// Console write functions. - pub trait Write { - /// Write a Rust format string. - fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; - } - - /// Console statistics. - pub trait Statistics { - /// Return the number of characters written. - fn chars_written(&self) -> usize { - 0 - } - } - - /// Trait alias for a full-fledged console. - pub trait All: Write + Statistics {} -} - -//-------------------------------------------------------------------------------------------------- -// Private Code -//-------------------------------------------------------------------------------------------------- - -impl QEMUOutputInner { - const fn new() -> QEMUOutputInner { - QEMUOutputInner { chars_written: 0 } - } - - /// Send a character. - fn write_char(&mut self, c: char) { - unsafe { - core::ptr::write_volatile(0x3F20_1000 as *mut u8, c as u8); - } - - self.chars_written += 1; - } -} - -/// Implementing `core::fmt::Write` enables usage of the `format_args!` macros, which in turn are -/// used to implement the `kernel`'s `print!` and `println!` macros. By implementing `write_str()`, -/// we get `write_fmt()` automatically. -/// -/// The function takes an `&mut self`, so it must be implemented for the inner struct. -/// -/// See [`src/print.rs`]. -/// -/// [`src/print.rs`]: ../../print/index.html -impl fmt::Write for QEMUOutputInner { - fn write_str(&mut self, s: &str) -> fmt::Result { - for c in s.chars() { - // Convert newline to carriage return + newline. - if c == '\n' { - self.write_char('\r') - } - - self.write_char(c); - } - - Ok(()) - } -} - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- - -impl QEMUOutput { - /// Create a new instance. - pub const fn new() -> QEMUOutput { - QEMUOutput { - inner: NullLock::new(QEMUOutputInner::new()), - } - } -} - -/// Return a reference to the console. -/// -/// This is the global console used by all printing macros. -pub fn console() -> &'static dyn interface::All { - &QEMU_OUTPUT -} - -//------------------------------------------------------------------------------ -// OS Interface Code -//------------------------------------------------------------------------------ -use synchronization::interface::Mutex; - -/// Passthrough of `args` to the `core::fmt::Write` implementation, but guarded by a Mutex to -/// serialize access. -impl interface::Write for QEMUOutput { - fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { - // Fully qualified syntax for the call to `core::fmt::Write::write_fmt()` to increase - // readability. - self.inner.lock(|inner| fmt::Write::write_fmt(inner, args)) - } -} - -impl interface::Statistics for QEMUOutput { - fn chars_written(&self) -> usize { - self.inner.lock(|inner| inner.chars_written) - } -} - -impl interface::All for QEMUOutput {} diff --git a/rust-version/src/lib.rs b/rust-version/src/lib.rs deleted file mode 100644 index 0c9ac1ac8..000000000 --- a/rust-version/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -#![no_std] diff --git a/rust-version/src/linker.ld b/rust-version/src/linker.ld deleted file mode 100644 index 9c34717d9..000000000 --- a/rust-version/src/linker.ld +++ /dev/null @@ -1,79 +0,0 @@ -/* SPDX-License-Identifier: MIT OR Apache-2.0 - * - * Copyright (c) 2018-2022 Andre Richter - */ - -__rpi_phys_dram_start_addr = 0; - -/* The physical address at which the the kernel binary will be loaded by the Raspberry's firmware */ -__rpi_phys_binary_load_addr = 0x80000; - - -/* start of the kernel binary */ ENTRY(__rpi_phys_binary_load_addr) -/* simulate kernel elf layout - * https://elixir.bootlin.com/linux/v6.5/source/arch/x86/kernel/vmlinux.lds.S#L102 - * Flags: - * 4 == R - * 5 == RX - * 6 == RW - */ -PHDRS -{ - segment_boot_core_stack PT_LOAD FLAGS(6); # stack pointer - segment_code PT_LOAD FLAGS(5); # code - segment_data PT_LOAD FLAGS(6); # data -} - -SECTIONS -{ - . = __rpi_phys_dram_start_addr; - - /*********************************************************************************************** - * Boot Core Stack(512k), it should not affect the test area, good! - ***********************************************************************************************/ - .boot_core_stack (NOLOAD) : - { - /* ^ */ - /* | stack */ - . += __rpi_phys_binary_load_addr; /* | growth */ - /* | direction */ - __boot_core_stack_end_exclusive = .; /* | */ - } :segment_boot_core_stack - . = __rpi_phys_binary_load_addr; - - /*********************************************************************************************** - * Code + RO Data + Global Offset Table - ***********************************************************************************************/ - .text : - { - KEEP(*(.text._start)) - *(.text._start_arguments) /* Constants (or statics in Rust speak) read by _start(). */ - *(.text._start_rust) /* The Rust entry point */ - *(.text*) /* Everything else */ - } :segment_code - - .rodata : ALIGN(8) { *(.rodata*) } :segment_code - - /*********************************************************************************************** - * Data + BSS - ***********************************************************************************************/ - .data : { *(.data*) } :segment_data - - /* Section is zeroed in pairs of u64. Align start and end to 16 bytes */ - .bss (NOLOAD) : ALIGN(16) - { - __bss_start = .; - *(.bss*); - . = ALIGN(16); - __bss_end_exclusive = .; - } :segment_data - - /*********************************************************************************************** - * Misc - ***********************************************************************************************/ - .got : { *(.got*) } - ASSERT(SIZEOF(.got) == 0, "Relocation support not expected") - - /DISCARD/ : { *(.comment*) } -} - diff --git a/rust-version/src/main.rs b/rust-version/src/main.rs deleted file mode 100644 index cd7f7f6d6..000000000 --- a/rust-version/src/main.rs +++ /dev/null @@ -1,136 +0,0 @@ -#![feature(asm_const)] -#![feature(format_args_nl)] -#![feature(panic_info_message)] -#![feature(trait_alias)] -#![no_main] -#![no_std] - -use core::{arch::global_asm, ptr::write_volatile}; - -mod bcm; -mod console; -mod panic; -mod print; -mod synchronization; - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- - -/// The Rust entry of the `kernel` binary. -/// -/// The function is called from the assembly `_start` function. -/// -/// # Safety -/// -/// 1. boot.S link start entry to _start -/// 2. only core 0 would init bss, sp... and call _start_rust -/// 3. _start_rust call kernel_init -#[no_mangle] -pub unsafe fn _start_rust() -> ! { - bcm::hardware_init(); - crate::kernel_init(); -} - - -/// Early kernel initialization. -/// # Safety -/// -/// - Only a single core must be active and running this function. -unsafe fn kernel_init() -> ! { - kernel_main() -} - -const MAXCHAR: usize = 1000; - -fn help() { - println!("help : print this help menu"); - println!("hello : print Hello World!"); - println!("board : print board rev"); - println!("reboot : reboot this device"); -} - -unsafe fn reboot() { - println!("Rebooting..."); - reset(100); -} - -const PM_PASSWORD: u32 = 0x5a000000; -const PM_RSTC: u32 = 0x3F10_001C; -const PM_WDOG: u32 = 0x3F10_0024; - -pub fn reset(tick: u32) { - unsafe { - let mut r = PM_PASSWORD | 0x20; - write_volatile(PM_RSTC as *mut u32, r); - r = PM_PASSWORD | tick; - write_volatile(PM_WDOG as *mut u32, r); - } -} - -pub fn cancel_reset() { - unsafe { - let mut r = PM_PASSWORD | 0; - write_volatile(PM_RSTC as *mut u32, r); - write_volatile(PM_WDOG as *mut u32, r); - } -} - -unsafe fn interactiave_shell() -> ! { - let mut array : [char; MAXCHAR] = ['\0'; MAXCHAR]; - let mut cnt = 0; - - loop { - let c = bcm::UART.get_char(); - if c == '\r' { - println!(); - match &array[0..6] { - ['h', 'e', 'l', 'p', _] => { - help(); - } - [ 'h', 'e', 'l', 'l', 'o', _] => { - println!("Hello World!"); - } - [ 'r', 'e', 'b', 'o', 'o', 't'] => { - println!("Rebooting..."); - reboot(); - } - ['b', 'o', 'a', 'r', 'd', _] => { - let (board, _) = bcm::MAILBOX.get(bcm::mailbox::MailboxTag::GetBoardRevision); - println!("Board revision: {:x}", board); - } - _ => { - if cnt > 0 { - println!("Unknown command: {:?}", &array[0..cnt]); - help(); - } - } - } - - print!("\r# "); - cnt = 0; - } else { - print!("{}", c); - array[cnt] = c; - if cnt < MAXCHAR - 1 { - cnt += 1; - } else { - cnt = 0; - } - } - } -} - -unsafe fn kernel_main() -> ! { - println!("[0] Hello from Rust!"); - println!("[1] run the simple shell"); - interactiave_shell() -} - -#[no_mangle] -#[link_section = ".text._start_arguments"] -pub static BOOT_CORE_ID: u64 = 0; - -global_asm!(include_str!("boot.S"), -CONST_CORE_ID_MASK = const 0b11 -); diff --git a/rust-version/src/panic.rs b/rust-version/src/panic.rs deleted file mode 100644 index 8697e558f..000000000 --- a/rust-version/src/panic.rs +++ /dev/null @@ -1,59 +0,0 @@ -use crate::println; -use aarch64_cpu::asm; -use core::panic::PanicInfo; - -/// Stop immediately if called a second time. -/// -/// # Note -/// -/// Using atomics here relieves us from needing to use `unsafe` for the static variable. -/// -/// On `AArch64`, which is the only implemented architecture at the time of writing this, -/// [`AtomicBool::load`] and [`AtomicBool::store`] are lowered to ordinary load and store -/// instructions. They are therefore safe to use even with MMU + caching deactivated. -/// -/// [`AtomicBool::load`]: core::sync::atomic::AtomicBool::load -/// [`AtomicBool::store`]: core::sync::atomic::AtomicBool::store -fn panic_prevent_reenter() { - use core::sync::atomic::{AtomicBool, Ordering}; - - static PANIC_IN_PROGRESS: AtomicBool = AtomicBool::new(false); - - if !PANIC_IN_PROGRESS.load(Ordering::Relaxed) { - PANIC_IN_PROGRESS.store(true, Ordering::Relaxed); - - return; - } - - wait_forever() -} - -#[panic_handler] -fn panic(info: &PanicInfo) -> ! { - // Protect against panic infinite loops if any of the following code panics itself. - panic_prevent_reenter(); - - let (location, line, column) = match info.location() { - Some(loc) => (loc.file(), loc.line(), loc.column()), - _ => ("???", 0, 0), - }; - - println!( - "Kernel panic!\n\n\ - Panic location:\n File '{}', line {}, column {}\n\n\ - {}", - location, - line, - column, - info.message().unwrap_or(&format_args!("")), - ); - - wait_forever(); -} - -#[inline(always)] -pub fn wait_forever() -> ! { - loop { - asm::wfe() - } -} diff --git a/rust-version/src/print.rs b/rust-version/src/print.rs deleted file mode 100644 index 759d04cfc..000000000 --- a/rust-version/src/print.rs +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2018-2023 Andre Richter - -//! Printing. - -// QEMU's hacky UART -// use crate::console; -use crate::bcm::UART; -use crate::console::interface::Write; - -use core::fmt; - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- - -#[doc(hidden)] -pub fn _print(args: fmt::Arguments) { - UART.write_fmt(args).unwrap(); -} - -/// Prints without a newline. -/// -/// Carbon copy from -#[macro_export] -macro_rules! print { - ($($arg:tt)*) => ($crate::print::_print(format_args!($($arg)*))); -} - -/// Prints with a newline. -/// -/// Carbon copy from -#[macro_export] -macro_rules! println { - () => ($crate::print!("\r\n")); - ($($arg:tt)*) => ({ - $crate::print::_print(format_args!($($arg)*)); - $crate::print::_print(format_args!("\r\n")); - }) -} diff --git a/rust-version/src/synchronization.rs b/rust-version/src/synchronization.rs deleted file mode 100644 index 94c83de1c..000000000 --- a/rust-version/src/synchronization.rs +++ /dev/null @@ -1,77 +0,0 @@ -// SPDX-License-Identifier: MIT OR Apache-2.0 -// -// Copyright (c) 2020-2023 Andre Richter - -//! Synchronization primitives. -//! -//! # Resources -//! -//! - -//! - -//! - - -use core::cell::UnsafeCell; - -//-------------------------------------------------------------------------------------------------- -// Public Definitions -//-------------------------------------------------------------------------------------------------- - -/// Synchronization interfaces. -pub mod interface { - - /// Any object implementing this trait guarantees exclusive access to the data wrapped within - /// the Mutex for the duration of the provided closure. - pub trait Mutex { - /// The type of the data that is wrapped by this mutex. - type Data; - - /// Locks the mutex and grants the closure temporary mutable access to the wrapped data. - fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; - } -} - -/// A pseudo-lock for teaching purposes. -/// -/// In contrast to a real Mutex implementation, does not protect against concurrent access from -/// other cores to the contained data. This part is preserved for later lessons. -/// -/// The lock will only be used as long as it is safe to do so, i.e. as long as the kernel is -/// executing single-threaded, aka only running on a single core with interrupts disabled. -pub struct NullLock -where - T: ?Sized, -{ - data: UnsafeCell, -} - -//-------------------------------------------------------------------------------------------------- -// Public Code -//-------------------------------------------------------------------------------------------------- - -unsafe impl Send for NullLock where T: ?Sized + Send {} -unsafe impl Sync for NullLock where T: ?Sized + Send {} - -impl NullLock { - /// Create an instance. - pub const fn new(data: T) -> Self { - Self { - data: UnsafeCell::new(data), - } - } -} - -//------------------------------------------------------------------------------ -// OS Interface Code -//------------------------------------------------------------------------------ - -impl interface::Mutex for NullLock { - type Data = T; - - fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { - // In a real lock, there would be code encapsulating this line that ensures that this - // mutable reference will ever only be given out once at a time. - let data = unsafe { &mut *self.data.get() }; - - f(data) - } -}