From 211be9d8fed567d35af9b7ce158c5ef681cc4cc4 Mon Sep 17 00:00:00 2001 From: Noer Paanakker Date: Tue, 18 Jun 2019 15:16:12 +0200 Subject: [PATCH 01/80] start of content rewrite --- README.md | 35 ++++++++++++++++++++++---------- Week1/LESSONPLAN.md | 23 +++++++++++++++++++++ Week1/MAKEME.md | 45 ++++++++++++++++++----------------------- Week1/README.md | 40 +++++++++++++++++++++++++++--------- Week2/LESSONPLAN.md | 23 +++++++++++++++++++++ Week2/MAKEME.md | 38 +++++++++++++++++++++++++--------- Week2/README.md | 16 ++++++++------- Week3/LESSONPLAN.md | 23 +++++++++++++++++++++ assets/javascript1.png | Bin 0 -> 97994 bytes 9 files changed, 181 insertions(+), 62 deletions(-) create mode 100644 Week1/LESSONPLAN.md create mode 100644 Week2/LESSONPLAN.md create mode 100644 Week3/LESSONPLAN.md create mode 100644 assets/javascript1.png diff --git a/README.md b/README.md index 6859e13d7..9bf568f2d 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,35 @@ +> If you are following the HackYourFuture curriculum we recommend you to start with module 1: [HTML/CSS/GIT](https://github.com/HackYourFuture/HTML-CSS). To get a complete overview of the HackYourFuture curriculum first, click [here](https://github.com/HackYourFuture/curriculum). + > Please help us improve and share your feedback! If you find better tutorials -or links, please share them by [opening a pull request](https://github.com/HackYourFuture/JavaScript1/pulls). +> or links, please share them by [opening a pull request](https://github.com/HackYourFuture/JavaScript1/pulls). + +# Module #2 - JavaScript 1: Programming Basics (Frontend) + +![JavaScript1](./assets/javascript1.png) + +In this module you'll make a start into wonderful world of programming. We will be using the programming language `JavaScript` to do this. We will look at information in a different way: as -# HackYourFuture - JavaScript 1 +Mostly what you'll be learning is 2 things: + +- The skill of problem solving. +- The skill of thinking algorithmically + +You will learn to understand problems terms of an algorithm: a series of steps that can be used to do a certain thing, even if the details are different each time. Here you can find course content and homework for the JavaScript 1 module -|Week|Topic|Read|Homework| -|----|-----|----|--------| -|1.|Git Session|[Reading Week 1](/Week1/README.md) | [Homework Week 1](/Week1/MAKEME.md)| -|2.|• Intro JavaScript (What is it, where can you use it for)
• [Variables (var, let, const)](../../../fundamentals/blob/master/fundamentals/variables.md)
• [Basic Data types (Strings, Numbers, Arrays, Booleans)](../../../fundamentals/blob/master/fundamentals/values.md)
• [Operators](../../../fundamentals/blob/master/fundamentals/operators.md)
• [Special characters and their names](../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md)
• [Naming conventions](../../../fundamentals/blob/master/fundamentals/naming_conventions.md)|[Reading Week 2](/Week2/README.md)|[Homework Week 2](/Week2/MAKEME.md)| -|3.|• Git work flow :smiling_imp:
• [Advanced data types (objects)](../../../fundamentals/blob/master/fundamentals/objects.md)
• [Conditional execution](../../../fundamentals/blob/master/fundamentals/conditional_execution.md)
• [Statements vs Expressions](../../../fundamentals/blob/master/fundamentals/statements_expressions.md)
• [Loops (for/while)](../../../fundamentals/blob/master/fundamentals/loops.md)
• [Functions](../../../fundamentals/blob/master/fundamentals/functions.md)
• [Scope](../../../fundamentals/blob/master/fundamentals/scope.md)|[Reading Week 3](/Week3/README.md)|[Homework Week 3](/Week3/MAKEME.md)| +| Week | Topic | Reading Materials | Homework | Lesson Plan | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | ----------------------------------- | ----------------------------------- | +| 1. | What is programming? | [Reading Week 1](/Week1/README.md) | [Homework Week 1](/Week1/MAKEME.md) | [Homework Week 1](/Week1/MAKEME.md) | +| 2. | • Intro JavaScript (What is it, where can you use it for)
• [Variables (var, let, const)](../../../fundamentals/blob/master/fundamentals/variables.md)
• [Basic Data types (Strings, Numbers, Arrays, Booleans)](../../../fundamentals/blob/master/fundamentals/values.md)
• [Operators](../../../fundamentals/blob/master/fundamentals/operators.md)
• [Special characters and their names](../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md)
• [Naming conventions](../../../fundamentals/blob/master/fundamentals/naming_conventions.md) | [Reading Week 2](/Week2/README.md) | [Homework Week 2](/Week2/MAKEME.md) | [Homework Week 1](/Week1/MAKEME.md) | +| 3. | • Git work flow :smiling_imp:
• [Advanced data types (objects)](../../../fundamentals/blob/master/fundamentals/objects.md)
• [Conditional execution](../../../fundamentals/blob/master/fundamentals/conditional_execution.md)
• [Statements vs Expressions](../../../fundamentals/blob/master/fundamentals/statements_expressions.md)
• [Loops (for/while)](../../../fundamentals/blob/master/fundamentals/loops.md)
• [Functions](../../../fundamentals/blob/master/fundamentals/functions.md)
• [Scope](../../../fundamentals/blob/master/fundamentals/scope.md) | [Reading Week 3](/Week3/README.md) | [Homework Week 3](/Week3/MAKEME.md) | [Homework Week 1](/Week1/MAKEME.md) | -__Kind note:__ +**Kind note:** -We expect you to __always__ come prepared to the class on Sunday. +We expect you to **always** come prepared to the class on Sunday. ### Overall -A good understanding of all the above mentioned topics. Want to check your Knowledge? Go through the [JavaScript Fundamentals README](../../../fundamentals/blob/master/README.md) and research/ ask for help (Slack!) with the concepts that are not entirely clear. +A good understanding of all the above mentioned topics. Want to check your Knowledge? Go through the [JavaScript Fundamentals README](../../../fundamentals/blob/master/README.md) and research/ ask for help (Slack!) with the concepts that are not entirely clear. -*The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)* +_The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)_ diff --git a/Week1/LESSONPLAN.md b/Week1/LESSONPLAN.md new file mode 100644 index 000000000..d596be8f6 --- /dev/null +++ b/Week1/LESSONPLAN.md @@ -0,0 +1,23 @@ +# Lesson Plan Week 1 + +## Agenda + +The purpose of this class is to introduce to the student (1) + +FIRST HALF: + +SECOND HALF: + +### Core concepts + +FIRST HALF (12.00 - 13.30) + +1. + +SECOND HALF (14.00 - 16.00) + +2. + +3) + +4. diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index eacf6f84a..7132f37fb 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -1,37 +1,32 @@ -## Homework week 1: +# Homework HTML/CSS Week 1 -``` -Topics discussed in class this week: -• Git -``` +## Todo list -> [Here](/Week2/README.md) you find the readings you have to complete before the second lecture. +1. s +2. s -## Step 1: Share a useful resource +3. Code along +4. PROJECT: -_Deadline Monday_ +### 1. -All share a video or a resource (this can be a drawing, an article or a podcast) that was helpful for you the last few weeks with learning HTML/CSS. Please share this in the channel of your class in Slack. Also write as small note about what the resource is about and why you think it's so helpful (you can share more than one if you like). +### 2. -## Step 2: Git homework +### 3. Code along -_Deadline Wednesday_ +### 4. PROJECT: -Git homework for this week: +> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. -Pair up with another student in your class. The homework requires two people to work together. Let's call them admin and user. +> Make a -1. admin creates a new repository on github called “animals” (without quotes). -2. admin adds a file called “zoo.txt” with some animals generally found in a zoo. -3. admin commits and pushes his changes (in master branch). -4. admin adds user as a collaborator (find out how to add a collaborator to a git repository). -5. user clones the repository from admin (find out how to clone a repository. Note that `git init` is not required when you clone a repository). -6. user makes a new branch called user-dev. -7. user adds another file called “pets.txt” with some animals generally found in a home. -8. user commits and pushes his branch to remote. -9. admin pulls the branch crated by user (find out how to pull changes from a repository). -10. admin submits the link to his github repository (named "animals"), where Unmesh should be able to see the collaborator’s (i.e. user’s) branch along with his commits. +## SUBMIT YOUR HOMEWORK! -Note: +After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: -The _user_ is _not supposed to fork_ the admin’s repository. _admin_ is supposed to add user as a collaborator and _user_ should just _clone_ the repository (i.e. _user_ will only have the local copy of the repository). Only _admin_ will have the _github_ server copy of the repository. Of course, admin will have its local copy of the repository too. +1. s +2. s + +Upload both in a repository to GitHub and then upload the link to Trello. Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. + +_Deadline Saturday 23.59 CET_ diff --git a/Week1/README.md b/Week1/README.md index 17a67cd24..583cb8edb 100644 --- a/Week1/README.md +++ b/Week1/README.md @@ -1,13 +1,33 @@ -# Reading material for your first JavaScript lesson: +# Reading Material JavaScript1 Week 1 -``` -In week one we will discuss the following topics: -• Git -``` +## Agenda -### Here are resources that we like you to read as a preparation for the coming lecture. +These are the topics for week 1: -- In you next lecture you teacher will teach you your first GIT session, please look through the [GIT](https://github.com/HackYourFuture/Git) repository and read the learning goals. -- Please watch [Up Running with Bash Scripting](https://www.lynda.com/Bash-tutorials/Up-Running-Bash-Scripting/142989-2.html) -as a recap on the cli classes you have had (1 hour and 25 min). Please ask Gijs for access to Lynda.com -- Please watch the first 5 chapters of the [Git essential training](https://www.lynda.com/Git-tutorials/Git-Essential-Training/100222-2.html) +1. What is programming? +2. What is JavaScript? +3. What are data structures? +4. What are variables? + +## 1. What is programming? + +Programming is giving a computer instructions in order to solve a problem, written in a language it can understand. Why is this useful? It's because computers are (1) fast, (2) cheap to use and (3) can work 24/7 (as long as it has power). + +As a starting software developer (synonym to 'programmer'), you'll learn how to write these instructions. + +[What is programming?](https://www.youtube.com/watch?v=3tWMQ3ZMjbg) +[What is programming Playlist](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZYJC7L-r6rX6utt6wwJCyi) + +## 2. What is JavaScript? + +JavaScript is a programming language. We use it to communicate with the browser, software that allows us to access the Internet and open webpages. More specifically + +For more research, check the following resources: + +- [What is JavaScript](https://www.youtube.com/watch?v=nItSSTwBvSU) + +## 3. What are data structures? + +## 4. What are variables? + +A data structure is a way of storing information on your computer. diff --git a/Week2/LESSONPLAN.md b/Week2/LESSONPLAN.md new file mode 100644 index 000000000..c353de6ad --- /dev/null +++ b/Week2/LESSONPLAN.md @@ -0,0 +1,23 @@ +# Lesson Plan Week 2 + +## Agenda + +The purpose of this class is to introduce to the student (1) + +FIRST HALF: + +SECOND HALF: + +### Core concepts + +FIRST HALF (12.00 - 13.30) + +1. + +SECOND HALF (14.00 - 16.00) + +2. + +3) + +4. diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index aa83c5bc4..102ea028e 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -1,14 +1,34 @@ -## Homework Week 2 +# Homework HTML/CSS Week 1 -``` -Topics discussed in class this week: -• Intro JavaScript (What is it, where can you use it for) -• Variables (var, let, const) -• Basic Data types (Strings, Numbers, Arrays, Booleans) -• Operators -``` +## Todo list + +1. s +2. s +3. Code along +4. PROJECT: + +### 1. + +### 2. + +### 3. Code along + +### 4. PROJECT: + +> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. + +> Make a + +## SUBMIT YOUR HOMEWORK! + +After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: + +1. s +2. s + +Upload both in a repository to GitHub and then upload the link to Trello. Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. -> [Here](/Week3/README.md) you find the readings you have to complete before the third lecture. +_Deadline Saturday 23.59 CET_ ## Before you start with the homework: diff --git a/Week2/README.md b/Week2/README.md index d9d21955a..2b7845308 100644 --- a/Week2/README.md +++ b/Week2/README.md @@ -1,3 +1,7 @@ +1. Statements vs. Expressions +2. Loops +3. Functions + # Reading material for the second lecture: ``` @@ -10,8 +14,9 @@ In week two we will discuss the following topics: ``` ## How to get started -1. Download and install the *LTS* version of NodeJS - https://nodejs.org/en/download/ -To test that it was installed and running properly, go to your terminal and run the command: node -v You should get the node version printed on your terminal, for example, v8.9.1 + +1. Download and install the _LTS_ version of NodeJS - https://nodejs.org/en/download/ + To test that it was installed and running properly, go to your terminal and run the command: node -v You should get the node version printed on your terminal, for example, v8.9.1 2. Although you are free to make you own choice of text/code editor to use during class and homework, we have good experiences with Microsoft's free VSCode editor, which is supported on Windows, Mac and Linux. Please refer to our [VSCode Tips](./../../../../fundamantals/VSCodeTips/README.md) for more information. ## Here are resources that we like you to read as a preparation for the coming lecture: @@ -22,9 +27,8 @@ Only watch the below chapters: 0. Introduction 1. Programming Basics -2. Core Programming Syntax -3. Variables and Data Types - +1. Core Programming Syntax +1. Variables and Data Types Read up on the most important topics of next week: @@ -38,6 +42,4 @@ Read up on the most important topics of next week: [Naming conventions](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/naming_conventions.md) - _Please go through the material and come to class prepared!_ - diff --git a/Week3/LESSONPLAN.md b/Week3/LESSONPLAN.md new file mode 100644 index 000000000..dacd2b1dc --- /dev/null +++ b/Week3/LESSONPLAN.md @@ -0,0 +1,23 @@ +# Lesson Plan Week 3 + +## Agenda + +The purpose of this class is to introduce to the student (1) + +FIRST HALF: + +SECOND HALF: + +### Core concepts + +FIRST HALF (12.00 - 13.30) + +1. + +SECOND HALF (14.00 - 16.00) + +2. + +3) + +4. diff --git a/assets/javascript1.png b/assets/javascript1.png new file mode 100644 index 0000000000000000000000000000000000000000..46a4a59ecc7b126e16981f288b2580900e3fe7f9 GIT binary patch literal 97994 zcmcF}WmKF&(k>c2Kp?nFaMvKg0|b}g65QQ&LU4E2;O_43?oMzI?l5yFyL-P~vcK** z_v4&l7cVYYAck#0E^c1XB*Vbs z(3s=QZP3?i7-3vu2nwPtX`e7%hzlWzbJliI4H$?i?4vT1_mXk0w7qW>aY%aKQI4x@ zvr>*LZ=1)N?U=7JiE{MDftN1Ty&uY{1+Z3G`a*`aBZ-nUdNe zz^Nr(6{oD1J?N=7xylahSmarSLVigkOwnOSVaVKLHjZh#GX?TPZ#k5X8hdX(nt0Ha zfdTvDD7^vmrwcz3!W8Kb`7lqOesbgd|JZ$1@8%*@;fjET`* znIP2x-^A}YosfFpVRtHxeh5b)i4uA-c%3J@Q$U@6$25c{wVg5zFv%_c+SsF_8RTy(8sHhG&|nGBmclHpD1GcZRu5*#$Oqe82G3G?QK~J zIl)@VFAJ-Hkp}wBC=0iSeEG5g_uFQkv~)BM zR*t7mFIhx%?-Ho*#5-x?MiWA+9YWMB8?TVmwO9ZrI0-E!sl*V&XF=|%?nBC6#Ati| z6U~&$5Kw(0A|m3Sj*_u^CuTB4iu5?+Y?h_a=4BPlo?g-n5u zPHu0=SPfGoI#0qesFDl$fbcOaO>~?*eb8zLayqnCa6Jd-iwKH5+w5Dyz{hM$c03v3 zf}cwV(zTcjBC1()ru@xtR-fgvv8Rp;p}a!geuJ3lPD-NO`|+SpK>t>1pqiP6lena_ zxYE58!NM1G^;O#EM(@m)Y`jyw5lO2{!IgD&N&Q$;yEJ&5~ zE)4+)!>Gqfn#vq1FIz}(B084Gn609eT4++}Qp8kOTU%QD zT>HT+xE9O&tHtRIPr;4gF`-Q6p6K>u{`5}m``YwcjM|mjL`R;r2qIy*0_-W(N&JI? zgS$hUI^1Q0x~65QQ`qIY<*{Y$o_Ze3^h2IJp07M`j*Q3Ghl-A;jvt%()*hPc zngg9|j@}-yT(4elT_av69G}kfR@{kZ=GqhxmorT=&1~cYzI3Geu$1BwyveNct4g;E zm@*J#ujKlLw}YpQ_iQ?;H)&I7b6}RFucohN;W{hd)tlrj&B&J76w{RH=KJ6sw?utQ zy;*3Klk(Xq+}(hEnYvfPR9UZf;h=fS!yv(~(Jte{d>d=q<3nR`><~q)`iE4R@ucf; zP8>q!6oF>_Yv5Eza(2FKK0>~ObVITZD37QPN^l)V-Wie$~nx}QmCNg!mb>r1K zCTrGfHU@fZQ^w^oIb$~Un3}pP1S=@@CRQ7ZODlQHUKR`bcfIR_85X+c8>WB-pWkRF z%rigNH&e)`rWRNx>|(dyQ_T*I&9yc?Pu;n;9$IVR-tYCy0KU0Yt&Y2dDN}7(5Vs+=DRPN*sfY}h3y@2nkkN(SaNXE# z-+zYp{^^bM9C6=vb$82jxp4+k{VpY_)A{>5)%NKC(tr)|2BGQuL8Mi@LU?^xBN#8@ zT=;tAJ=g^}0pzN;=zb^gZllhI`_*@qnf}cIUqn#-+c)nW_UvT+^z@?j-s=%=K5hm-w~_6OW(1Lmiiwv+G!JoXUpAqv0uer8?8$Hw%7n^>l?Qv{Y-5s# zo23THrZL-{_O?{jS8XjOaH9=`YvQ{wt$*@1ex8U8iru1`lXZ{#mB7rkX-P(I_j&7g z?}Fq{NxInI6ucB8u`5cBiuw8Mxvi2YQrfY_Nqp9qtwY!|($k`5Wrw-fao2>0&`R9} zrJ2)ga~9?gv-mS71@Y3n0&9lu!0Q|~N8@v2fIq&qA{7nM- z49wy#Y^=XOEsax$`*QuImom|qcT9)#$<9pl5Y^%Qn@l`$3 z$Z5!Tl(}0Dwn$y5n*UnrQRm(Nc=a{ot0t#B*B}>lu|csW*RrKn-GzvZ?AXon-Y#+y*h8bJ9uS z>V;i_Yk|IMcliv;Clr(x8J7x6QT*NTHjn(@O_v6Xk!3QBGMaa+cPhW3pLU*r_cYrD z_)j@^4aDdCla7o@J%_H%M zwB5qoOHURjFQ&JlsVJx(WsNgWtTU&)_h)yM7G&jk*6cn!jyCC%d4F_D@VdQk>U0nv zf65f_?79;k5jzVVOKfE%e4IO85FuPA982_KY|y!AnV$dHex;^ryD(IurwVB5Z*#tI zKe-vlAL6oJOLJGUld?S?I(=T50MG%g&d0l3{94}MIi7u8<7(3dF%1Atzq-;ze1i9| zJ=ELk;az+FUC=S&4VqNC4FVP(RrPHLQ2myRxc+>t^I$Mc%r8eN2lq4#ntiJIo!nF7 z3-Et-DgxL8CL9j0eqxX4;&rS(3}1bH5`6A_S%9s8+fZ)h@NPLyKWnKuQ`!(9O1ts7 z{`r`*Jy0(hE0v#zv6m`cx3t><~DrzaI2L9y1EwiF$E;B|Xoq zd}J(qX9JP)t$?rGK^CGCm9xb^3ZHXVfu9B@i-?F^hP;{{)rA8aW!)9tCNMxJ1yax) z`d5ylsj2PEUK zqM!do4*teZX6oo@%frOv;^M;S!p3N0Z^Fd#@#9A(W>zLvRtE401_w85M?F^tYX|aw zPV#@}5jAo!us5@HG_$cL`7^JczKxS3KN;B{M*s8o&vhEPn*E!TwZp%*1>PXjpC?Q# zjLb~`GdGx&@6WG1@@B3^mTIDARz}tiU>=`XIJh|Z{z33xkN(Z_KSCX=SV@LlK*FSy*%j**&AJhNH{u81sgA)c=9Ry~ga?0R$s6V;^|5<`xe=^5E z@8DP6cR8CT3kV272uV>PWmm`(FSze2eK#*_+9`-?5FX0%kP1Q|+5}VY+r@CnleNY8 z-k1Qqz8IpMH?zGIpJiryu{@OZMP-yvvZ&Fd^trxciV1zY1B|z^oq4p-!%I9Q@IybX zx6<5=r@5HyrFv|P&a!tVr=g)i2@Ar*Lz0rf_< zBYng|1jCUrLos#Hv0sxiAo{FWKhX_q+UUL%BV#fg^%YgVCeMN;BY_q}@-(BZ{x80- z7V(EqLd19QBrhn%&#x!>MoMP;blSjMSK+x!hZJ2bf$;Ce|7#LsaltnsODqaOueq4k z!LNE=jp^LI+--Es>1Tx?{Y6>niWcRgfANc+@ioi8*Y*!GK?F!#>M!30>0tgTxPJ}O z;DvHobHXMmtZKVkFR2sx`S@R4g3!TS(4pxsUvtT#B(>cR2L!lvpJe%>noIVnsQdpz zCI4m*E*uOBPC@CWgwVg{`f3UP{F0SN4i>f)z?Zh;wHVZb;Ga*|JJg|pr&R+)|F06% z0=(Sl+=-y_*Zwa`P$ckeT|mH_6{iJlO_{_27w zb~NWbt(_6hrB!^bNbr0R_`nCH%GDMN z`!(tRMY&fh&+-Gap=929|9SysggygA9t3FYi<~Q#Gs{2aU;c|r?;kEfkXUZ7xlG2O z;n+W*m2`C|$$reEe6MNr*VMxQzmSmG^WGM0OjW>_CnnKiGRoK11_pwpKPGHEAWHgL zwpnvz%!Y$#7N(|^kkD^xHIS9W)! z{5rG$94@ioa?`(z3M-&=PWfD07(|{=P6ipeCL?*msgfAeu zaSkF*oCb43Z*x%8b)sBY^Vz>+NA8sA?(Gp^7G(Y`X<$smGgG;gb-~r{3&ALLbSK`x z$SS|1YuEf*myo3L{_xVNoMTdRKScs*>C;0fU`9Vj5SST!j;zXPbH_u$#ORm%{z5wY zLu+jETis;X!|2A?+Z!>0$sA)pGjqK-TZUi(tjag>mX#6#2)Ra|Q1j-aBMf75a7CV> zu{W6>l%AA8IY6#{fA?QhCvj&va2;2qBzB14aHhqLRg+zcD+b!Sg&h;SrYeu}VLe-&P5LSej{`BDLq(^5J_XhQYxwSAz-a_=mNl#D1zD!WTyF0|VWgt(84y zK|{wE8rUY3ZgR4`V{OTf_DiRndnCXRF`l$Fn>pYJK#gQ8Nzt7HR0Ruc<=SVx*s6KCx26KOXHy79+s++yXMs1n}k6p~1 zg6^rApG#tai~}8;KtGD*f06xD!FE!AU9Cze!j}05yI|MWHST1P_zpS%Y+*fI)8Wf+ z@KFh&@j2M*I$%N{i6MO2>(GME3qd!WITzyFOe_7}PcJ{;W1hI~{vBHtYJd@`3rlX2 zG@VCKlke-Pl(`seXgr32f`N5gZ>r7P&Ek>_Zr^O;@vJ0f>(;piMIY#{T~KQZ6e=Hd zRzj@1^+(YK2?4wdnh#si34tbT>Q@mV3(8m&w)TzxP~K0{^NwZR(mg1gf1b^$d(H3; zfoA99O_)z{l9Rq7{v#*!1KU7emtF5RdY%?18f|svSGMvc!(4BeGd?^ zP{6xvpKKce0Sex3{YZy?w~V;BFG>M@lwR2*`vegpX~>(kCY^hmW`)Mrt=>}J z{kyg?*Q~)EfPExOKY$otb&>>d(R3D=T|qq*_(&|McwIfUFRVNZ3JAj-G<~-FNV6>W zTa5!KEI;{e8dvk`@u{Gs-WAH){?$nZe^F+Ds+s^$14`Jf0SV1 z*;e?+1R&xU^LX5JlP;+Vv3NsGWS!GAZ^uZ(OL{3NhJ2V!>c9foQg906OyDC>0frCL z&_0Xdn#BmTpNH-oYDD6cpP+%DhTgd&ljl>W1(O3207IF}x<%T5@b|cl)+6XZW>TpT zGzUHx3!1&%z?Z2!i^SRW;{E*hm~&T*%I{wLi^^Vf99GxLV}v(i#4+Iv8PhX7f-g zY-#QPvO-yy4>B2Hs2Rsr{_j;w$DxXqr8uD4%VrLybj0zfx`iSAU8>=G%@IHM2yU9l ze+#7|h&c@in}!>b&2mJz5~3k-lS~l54R}Wb@4B38;L=@XnKPJ{gCi&soT=_3UFq-l zK1V|RA_#DSNSD<~^-Kx)b9iS#_I{K1J&?-VOpm_L9T5KdR z#mGLYz!${00F-**?_7Mh65{KV59_?lA1D^0}cjeL4sJ>BjFJmFBSd7h<^PWeJ@WUfrbUd4$Xh(it=Lc?4y+d z>PjpkX=Z@O?YboT`4zoDLVpkZ=enAdW+MePbCn%%xFGc1L^g~t)G9rzYoz2|;n0sG zvS6JU0X&pnyT$%sx7RH=HSr<$J>~@@t;1y2cbT-yO?27pH&YksjFMQxEC6clsPyOU zFqnOvFG&46y46yR)!|+A82|{nKYA~?EdYwYFu?`jXf`qm{_!M0XOLD1;+3`dGWrqS#V{ovDhD&nLJRD`ZV8Ezx}{3;^KgJk3iotAIznr|+~^KxWK5&DFe|wj zw;bBDdM?4X%O~-RUSfF!P!!&mx4R0r-ZG1aK`lUpPuKZ?W1xzzyV@ z);%VjD|lf=%%roA=%th+rDMcc^`#a>b4W`j zw0nI63+%_#RLZCx_ED_*cQb<(D+}&SU|hStD9Ft0^lqJj_e^2HNEOpz`q5IeGn>1U zl7no076>-Tw<)J9+kwG%m6G~j2JnF(n_hL+NI=b?n|*s#02>n(M0#1n+fKax)3 z__UT`7!AQ9+9&R^0TiW{u1xWuNdQC>NS3$RWZ&>H~@6!=(3_gqOjrve?%+ z!cP8~jGHcUXBW}5S0-J2Wmj^n5xrfgEHb;gf8tA2tNzrIKY%v)<54$UfIyW4s4@eN zj61$wMDji|qQp`l3d7qMvGBP*ml zdZn(fwGu!zql9ywM}pknks+)Q1f0e~4~c@n z;n_U%i$Hl{Uv#N_qe}bOWkrW%s)kx7Joz{k0ND?3tYPMR1Ch6YL{f0KkuLR$z4Kmy zd7@i1BVGIucI>g+uI@^H?40BJxOw6Rf{D807`>B?5qucVMJqlPbpVPaP^(m{oy3RH zFNza~fp%Y>nK`hj0=z05YCf^5xF1;`G?XF4oD0w`0&voIk|ks5Vs=enW=Q}^oQm$2 z(O7yv!<-+)m-s5~3yeO%papSLcMI5(eCUKS*KmpH_)b0vFJVh5ywum22ZpqQ>nD*v z7)%_?0i4EZ%>oB8;P8{k*zvE*q42kMw8BjDnh)zXC`v@tkLqd+Q=Mn$jWLj4G-;a) zA*Hyc%Um~ovlp}_bq^5Pa~aJM1N_~-VwbS>&etc>gE zeg|LCHk*8CZh!*kN(6d;Ty?lslyi)>gPAxG^BCVY^brRz3trWwB%%ow5kD%7I*b#xPeQHofV3Fd}Rc)}l@eg+T;(H9e ze_34EaS}Xx|?eDrt5-$`An_ir2C*G&Vk)vY)XIN{MgUgbuBu~37{~D5K z-fMQZ$cg%Bs0~BK!{Z6buA`=y3(~;YC^{WUy26WN=Z0^&W*Ks4Ul4c2x;pY_uv8Xy zAuL~%z2NR3k((xhI|rl5t*#GPq68(B5MzLDI#;VGorZ+eH~B;P-(4we`Dvk{+brd&k71DnV&hDwr8pSa2C&zK@;NW43$$mS zEi9Hb#zI;&*SwkqoEJ!)*2AYh19>Z&%PaC{PH3f273hH0D>`$phKYcM>bB-&VRXRP8eg^YISyL zX)oGrZlyeMw4jUCgh&o`8IMp%5}qosDa_9}5%*0xO#vO%zZ)y^KGHQG{syfrqrK9T znGJY=)4=`EaBObXOlZV0VvYIiWK{*00o8iXHt;3 zMM)aS{P?_mW)j)KDle$E^LH?wMCkJv8KC*{w4l#h5XpRpELL2?$c=u3Koj5aJp2xo zgZtwTE>q=gDMzBJpYJAE_wllt@+7dH{?+8>4v$wj5{cN+G0^(>c4d2~3Rn!kMW&V@Z zStOP-YRoxyapP9hrXc23|HlQ=pX#@Yuiy)NX-eZfUOwNR5|gZ`wn8*S(4iVE%8~K$ z1;!_7oS*C8@b*R`I?fH?yl5?oe&s2K`K>{rOD4Au9#r)ia9lLhm#C$FmFp&5UURr{ zw1I>VBk*CPawVxpQhFzQkF?}SE;7i{7ZnnSCN9DGu4#jk!?Uznsmq`J;B2m?;pTLO z>+O)S;Flx5qzL7%nb2P~w-g}h)bzjtcIhBKN=4b}SgK{6lP{)}Ry48qIUq=)e}~}% z^o~IfcZsOfW)Rc&&|2(3cYO8HKW0w`f}hp?%XLFq++Q=K-i%k2dhb1zALQDz17PWOLe~l2-`6%>|Q`JRi6m5_6kT=a5YAZdeO@Y4iBN#5fFWe1R*)LW! z+qY7uZ3{WXZhL@DZ0G{v^6Y2V%*d9suPF5G_g}*iQGiSRjF@L$gxrg=;Ax*F_>$TV zL|$7o5F!Br3fOZQkb|AsC%PLB%MT~!v!H*b#4eIR;K6(ueoIcVJ-F2NwL--I)mb-X zfM@r-&K+|HxyUO^GZjmV6#(3%Bk7cW4oUD3$;H(*sZWJS2skdrmq>SAC*6|+3gNbs zRS^7mWMmQccZ$;iYnQsU%hm%~5mtN3u>MSX;DRy^uQB~j_;lQEq<{8mUfJL;mteo? z@l$LXb$($BetId3;k{E*L;ia9(EAKEp{YnZ>S#eE@TIIx+ZQDTWcvpz{x9o?22Wag!o!-APcpGoNiXVSTfJ?!xOk7d_Bca_?f!|!0H!j}$MQXac&B@W+{ z5SQ}1y#4n3Xiv9h^iic@xuG<_90Q3?RScd_V9Sk5wvqh;>S3e=+!L#(CD@2Wf%MzQ z8+DhXM>ts~bKr@PH7y3q#qX|{bm;}0JFCc3Ox?};KQB-{+)Xw%I@VY^X3&iA{w_Z# z;^SifW@3>LFO+tWhy`0o5WY-&NJ#~RK!%uu2OR)vzWw?=P5FQ%3jdkpol9NEESI9- zBx*6(sh3=sv=8Wd-WVu-dY=3MU|#wl{n+_IF2ztOU%I}znRC8MiAvMD$*9a=AfkS? zdSr>Vq}1|s`67(X@pD-zXbKn8_4KdG5BT2Ud+Pt% zGAhsY`E35HCf^t%DdMY>hXz#!=@X#Nd9^lDrgy|vRR5lVHXMBt5P&pRI+2~l$Pm{| zq)stRG@WHWcT=!A;Cmb(I@~^QM;8h{thZj) zo1}h(PK-;1PrfOWvV|f-`h8w5o~5Qg z8Cvz9k+xuoP?lc6nCCvL#r=-IyntSItiWhUkK4~_M-fQ0p{slt*$a5oeKE(`rRg(b zcN2fCZrm|$Dk6=I9kFkwE{TjlC&Du8@G}jWr#c0*CQ2Vcf*^jZ(i&UES?1lq)?E+M zNdIP<>E>2e}gU&zCM9~0`YS5H+dMc!{ zx(G6`W9PhgKG;n*e}W=;LnREWevWhJqp}_81$Y~ee8BJJkF|0%A1EXJTE1Q_1ubTkI1OqQu^aEq}CfYu zzE&`LZSHr~?R*p-&)kdf+3BJIaWsXG9G9?Vm?sVSr;!XrlfR-_GG6f35#1i`pF~3P zpDS7~5qUw+NN5;Vu|sFASF*<)Vj$(EMk8Pt@8drUBQ^iGf6J_j;PBx*;E`Z?^`q zE%&uu#EuXFu4Moa(0QNG1#5SlAf*IE=(4JJw*lw~cfSyOx}&RD1lQ=(KA|A43g^h3 zp;$f2EtfQOOH(*S&%+Gz66JW>geP5?~J=TI%rmvo3&MyS!HWkr2D`z72JH}0h-1B3vA z;SQff+64fEB@OHLjGS*rB99@Wj?2`9>d~fJ77@+#IR71-^W{)MuLH~$-bF@&fFAj34R zDInTu34g0{7_#?Ry?~9V&ZG1j7gpH@#iy375W17rt8uzKwwB}HEtVw=4VRVq&ks&} z;MSw#outlGp5N)Vh5J%W9hQVyzb3*8D<9VH+6N5%TMn{APwp|~ELVYTvs4lzwY-!~}L;Df(9V+iyt^kD@xnPk>+%&Vo#-II@BXlH=Z9C+V@@dh|Ta$`V?|bl5!&I7eH5;@U(59{NARNEhaz{ z0$l!`%`Ml;y%HMD0`qzYmv78- zY`DnhZX#T+fEkW>(7}7Y{7!{u3|e)dzW_|`sx1vuOb0#I96QiW>hsLL`M@QwKKI({ zGKfBn*lwt=!?EZ2`fx^)!s)~4!BT2RuD6G^WJs71%MXD&0HcnCG9Q}=25^MFCd}(; zWg|f7o}v`d65mK4J-U4A>@lww%j4PF%__7VpZ?rOA=;a;EszkNaOyBO%qKnSp!u zG1B%5^VEPnKwo^~irfC%FRr4iYc3mBnzsc$*({);*bggjyf{0tui03K5F;d>0xf{w zJWiWbyFk9EpDIzfmce&oX+wy-z!j^8vNiV=E7u(l(^X(5@yBlGb+dx(+8w~}EC;Jj z8fZQNq8IroaJ9B~-Rn+U4x73!o^PBN8}VETu5l|@B8r;x*JNtj?fOW=2K8lA0F^xQ zkVLT3n5(9p|NAQ8tv4&4HDeCB;hn{4{CA5zpZxVhTx&`nR4y?OaT}%)>6SKrKjGI$ zANdRvf{IJZ^lOY2`%X<&r%m*O9lb{pz)dOoa73;UKaxq1F?r9LYp}_$1ddB9TmwqxW$8dBk+(Ld-{wt?y_9cbI(?Aml=dLo37B#U4qAJgSL)}Oy2}F0ycpF zFLeti^O`n28w|Hc78Re#CAYT&UtOpSIPg(=u9iVhDlr69zo@q}Y=|CpC*I-m**qvt>SdG3Y+mGQ!Ma@Z zVLufQ^7W6EfsB5ecXw!F6UJzJ?_a)d^6<&S@==fd-4JlGAkwit6C>`kT2CQ#KdDqt=+n%(aI^nqAy%Za1WCZf^;X2BN?%9*i@TkzvlZ_TiUxQz z97v{dAA!fi`Sd!Nq8`Jge7IHdWt^IO4&YOMe80F;KTRuqN}f z`XDr@5JJPsiGVrt2(-8zxzet?#C6>qr0e}K-v1Rn*$9lI)p|WZg>#qwB2d%zEw5Lk zbpoh2V%yJ09nL2?sR($X;)7 z)&Duld9b$9kdTde4$2LVJqg~FTLfIvqI`fVlO1vDomZ}S#FF>){@t{HGNLAgUX20k z0^Mh3^8Ibb1#p7ckrWxzSMp~es4I}blFsq>$wQ;|dsTwA^KK+DzR>VIn%hYMpdP;U z;=mivt5oK9dQ!Aeqrvw#%niUx+I)*hCyzzrRI7diC9>WX^|I5uxtC|bg=`R9eEwyJ z>>bhV)NCZ;b0|+VB_R%q*Y`IeGC9_+w-+XmJDGE)!vgmo3%;bsJTsi!QvJCXRmHu+ zy1VD)6CF@Jq_f9qL34cG1#Zl+@$GJ|0Wz798R1Oi_^^M9 zWe>)7PYRO<64?DG{z8O0wcDaX&e7% zmUgm+=ns@m58)>gkV1JIeI4?G%=`pf-HE#!rCf3256B_EqP7L|Ou0w#t8SQML_gjW zm}QYig{~WTicMR>yEI(@ANrE!U+tq%Lr6yN%!KzCEgD4bj5Amd5?ekK5w^> zm_8gCuXK{w!qwl~QA!nq8aiGGTYfKFv|4`C+xT?FTke?o*(iEp>Le5NOcf^FhCv8W zB68`zpjxzQcPD?xx|dcnQDu`J;DC4V4#=tfb1Py>G@W z2+rY|*paBdUsxMQe7$u1oGJi69O1X(iyZeMOsP&INB8s%cE^1aVeo0&57tLe%yT$C z*Z9PMgdzU`x;Q~_g);zBpa}-Fw^Q-)VZ%JN?Bu=Y&osh`zWWW(y2}?vr1L(+5E=WJ zUt4pC-af=HR}%oc`i{LLCSYg<2m@GTRZaP`sB%pLn3C85da+5%%)C0U3~W`UxpP@Z z7i&mqb&I?;V`?Q zK@(X&!7W7f9Q`G#6LmgxEV3Z^M9D7}2?B%cyHhhH?0qePY_2ZIftj%$sO0I-qi9rU zH0bL!CQKV!X3wsrSy?~2X2?K0&eE|TyfVu{&t8A*`X6*fke|wx*SF|Da zeI)n@G(Z2wdyoY!U;Ya;R4Z3W`wjZZmG%*r>07whjm6WFP5E;hzZ-PR3M#pIk=H|=7r z071Zs4LF3IM~9mpu(z>FwQ2u|`7FNt>B$q8T`x`I%(8Ayr4LKZ2)eHeoUC-DoW3~B z_4#w}G@p2bo;L7N$qKmb`X(89&$iMW@N|Xj`Vae_h<7ykE>0pS&dx6;FMqFjxF#r5 zcsv#rSl#iv+_CQ6U4`3#i&DU$NJ4)<#b^^Kl{a?BOzn2_X}{rTZ?<$h1$`2uE=;7A z9!9Q{sjfCa$4@Jj;sNUTrKX!7@s3Mp)*?Rc;nTn>rSPA3Lf6xbXPxuW7?ASnghX|~ zZk~x=07ou$y+Ja^a?eBJ&)bBTDZ9G&(BVzj9b-e_oBz|I;pGiDVrkKhHkZ<2(Tfy^ zU0_9!T>6g<+C*^oSO;K_<}oS__0AG!qO2rqt(UFhnQOz7t>q#B|4%=Y+E$0a@Xf>v zKN6%@(n?p`=y51P=Qp zE+)IYpF#7lrP61QY|+rLH1}q*MpBLu__rFP?~E?+$XPO?<_-%Uxz#(A??I2lbojW` zIHxA^mP^F#h&j63SqBb)bKgM}_m{`p8Zbbd0po#Z-cP)!`$m5X0;yGmipe0!g0!&8 z)KK>HsywuCe5b|VGz%SvKFg<-Wz*nJNjT4!Gt<0QP%icMi6cuEol>x;Go#NIUCium8+*Nd%QVApD-?!*{P!Ji9`~K|V zhy(>HeX1oou7F$iWZF!MEa6P)$)qIqXSH55=}9BFLj;zTHEZOERHJ^n|7HmZ3+-P} z^lPF=wxZ=$qX0dCs73(vFi}4v%S%?;pE01K)^buEI`9M=2G=d&u!n1c=^8(gHHa|s zCWPR2QUn#ZqZVaVT?P8{z)Ga|y$F+v(gQvmG;Bj1ZA*`yTJt?NHX#3b_fB{GsV4Jf z)OhqBvqa@>{muNbkBf7~#TvR4&phDZ1&k3&8u4uwlL(J*U=j#jk)fCM_u`}iHzuNrV~jiqQhG4n30QXRK(CA@CN&_D2QsQ+XyHo zsD#>Bc|sE#+mlBFqH~krtT)e=nnQtxod9Dj*mY`aBV;ro^Bq4q?;V;fi=d*`ymZJK zael-Z7cH#87H>0ErZohrZxUAC&jH<6bWcNdSKsm_S9INOfCN46Hv{1tTKJteddgq6 z>#X7Jji}^#FZ>p>hcLd6cEJ(t&~dK2ZlegCk=SPwov*q8JoR+TL3OI2uJ)^!Gg2(+ zG`Tp+{o~mp^7{D4Y_CHp-D)PQJIdp=0vB?iG{5tSTHI6UxStqRa)tLz$!+S!H!%rv zE}Q#`<|A6~eCV3$QaHjmWK4>*bHLtGfzJfw?Pegc3OC7Vjhujiu9^h{Djhzxnk?4& z6Exg1u9}dLxIH#9xY<+{T-(+HZK`cf<%qlR+2eP-N&Vy%K%<^L@~IXxv#(c8S=dbk}s&d z#e1o|?G{e}yEx^kqkOG7fmVl5=h-`LCbcL6su=TiKSCBI$>jNk6zA1x=4S=3{#mUe zTpuRCk!4Cbd|d8^?8xyK*K-`ukWTPsE|o+sL0@i|F7dv!Z2pixy9O#~d0e;K4Rf_y z)LIDb*D$zw@H1EP2vzdP7JRodwft{HCxBSbFH4#V$!yXF^|tTKgH8wU$<}vy@(drj zk)RIK+hb`Dq9{5l_d}qGVhHVtJ+#=yuX3|L8|ZsqnoWP^gHKdu{KU$C8oc^p>?Qg8 zjFhN@@HBlGC*612^hf+&)@VXadR$NowMbqQ!|W%2M;U zrS3lAUvrkz4?X~%w~4oz&4(R!GC3^rty)>$A`B3%<8EWf@l7!{!g_;fo&MO=VsyrAX4P*1kpb1awBEd@3PyVf+@?u)EQ zCZM_@lX|!pmc$$8J|&p;r0SJ22=sUll`WC39%-p=aPcwM;dc|F`_)P*>a*JAr^ zT}2*v)tnG;kr{zj)x!D`m_Ce_=dsFL8w9|T((2-hEcl2$%`Z;BTU!@`_xYqV_;8(o z6z^#YSXb-@2>%aRXBie%*oA9pX%Uca5TrwC7*HCeJ48TAx|^XpL`o!v2Bo_hxt3Ua#fW3olpSxYBVDPCHQ# z6D&HzX8YYq2qE#?VGy&LeBW5Qxo3PZt-`k{^=KSd zJwQEi1kc8t;M`E}m8Hgc3HSm0kCoKb4g$%me+zf~; zaB%>76ph-`en}EdU+ZJOBZn5`MzJf}{zW0tP25oA$v%LP4f~48{m!#(sAnn$i5l6A z>#I0(X)F2-9OHrHwx3xa^>Yz9ARuQ!H1A2eZkO#J^nY@XL5BTTYlnI$;1Zrk;gwk* zo4iDag%*+N#!ihXYT`dR_UguXcUI&)4{GA~AGU~rpEFGT>@;K^^$(lsI?uQ9yTfTY zZ>ooa&fmGH4JHL$7b+NYk%uR@oqVZf{)o{MO}H*xlPo*~M& zpB(sY@W$@O-)F>7TxMV-J50P;2q!t@HFlqP^Nbpn>+cjE=&PSA+rt>XB|j^JI?9^J zlH7nd(J48wiOplJSF>SPCo#?eEL0j<$>58fp`PwJ_B70*9;A!Iz|EK$Vx~_JsZ&Ar zqH)5+a7t_hiR$m@8p4hr7dsK=Ph~d_68=h ziOVRf5r}@ij00^8dWp`03fH)&vV-wqg#~rYK#e6vTC`W(PhVcWQ=T;KRlQ`mG}0rK z%jI7XYkrS+FF1O&3cDMP`s|K{g~dRy9UJN!rV5#QM{=BYKJ(7%>x!9hy4)jPE-P9F zM=M}DT%jS#gaN^MVV1~u74}l!W3C%|o?6+tu#CobDfw_x-?WkeHkr$|V;E>9 zG%G(_Y2NA)#YLYS5MsmRjE$7{mT#CkZf^+cukk!^=Blb>c$Gu6Es$NGD-& zHXuwt#da-8n;a!F<66C8SZ{3@MMMWrLUbUVOC}^|OFz^LJFZaMO@H|DdgScy{EID+ z#Ta^eQbT5vQ?6a%Dz}*|jq2miKtog|+bJ!ivHz1H@UN#~Pz2Qcf+W{wGTRQa(%fw2 z0wo`lvKl2*?`x~2{dii^kd?ZE`m_hvc!)5t|Gl;J<~Sey@zIe3_4y{lBSGQV_rGqW zq+JwktuxkvTYCywD-1QX61|0xf|mZ!Lbx#kn)_qV#K-ij zoYSl0l?}W06ePgx7IGCo3UhYj>L%`#4V^j7CekEk5q~X*PfKUBir22C((FXo%~EY9 zB_!CXHYGM6Y@}O{Q0%}x&~Yy-?7S+EV2nW}&E{2WS$%~3lbf0gU2(}6nVHA7#Gz(z zG^Q->h{@EC11-($sfuU7;I{^_p}`cBHI+YAC1W8l&AV2{%@y$kddRC)g>F@*ujd8G zd^q_NZN&LhmyF(Y-e*idN20}JVVq-e&i*E;ue^7*s_sM>J&EV% z9B-Z1c6K;>eGwLun|SCPVjf~FY&F#8(6SXNjBlx`=P2Oh1g8QXafwIj1&`j4;R=h2=Ny?edJH#m(H7on+=joz?kq!eiY5tnWU@v51U-y z!F#8f#pQ*@9LQs}Rz==Zr!2=?WKD!l#cxU?wk1?x9uxiS*YXdec2X|(rd2om(i6BT z|3vN(UaVlB57Bvh z6bAXGZnbBFE{3>r`I1}TSJeWF$41Hkhblu2WjJ);-c_RSKttAoT;Ll2z5J6`@*2_ls=FZEV;GJl2dBuY%On*xy!8Z?iW zw#T*WeoaHC?d`pYQLd_UW#&7Pk2E+0U8svLe6kf)OYE#Daeq*ly$7oOo19X`Jk3Gz%Rdr^kO#O{!g3Bmvbn>7vx#Dk%=}?KvL> zGNc+I&Ry@YoU(MXm*w1aw+@^V-f(bVp*DM|_MN}SspUceY3~0wS+ONK{6Qj#QVd-c z3jXw9{!PhyfLy--F64+p4(k8)X9wfyE#a{hJWaBq|A>nT)Hkf1!H-Rjq1E`XG={WY z)F>8%=7xcrdhsI|al_|-+iLSzj(b}C-g{nGzenThCnS^y-ESvOA&3Xo{D8m?Q^?72 zyBx{gOI$gt5m^uDyT66lBkzF7{Ragze@J8EE)x!egK3*bEqks{FFTCOawc#S4acXe z9EkMK!ehHvgZ3<Cl_~jCp1H%+av)DT z%-U$2T6#7lHjt>RBqX_@_8z*4rOA4%=;o+SKYG` z0&kawt_Z2zTAOoFwf+R^5tG`8yFYt}bQ+WKb>&_rUE_gnU!z!rM&un*xX-*`g_2xx zv58yLI}YWThu#Es+~pqtqwJ4kE=tg!r5hC2{8gR{O~F# z*BB9!K=<7Z&m#Q8)HW_iNBE2hIHzk(VN9?2H^r~#LgC1xwByCwW9HoWXEBk@IDb7e zu3mmLjHZ%gM@R|WUZW~YehtygIofQpk(WO-iBd^WWPX9l1tPd%9iipZ(8!V14EWSj zqc0HY9)LUJy8A0Cj<=)CHj!X=LCSkona!tY>pKi}35>G596Kw*T!NdB)^G8=lL^-U zzRIO~4i%y!{;+pON$tw9$a;%fBj|E1NcSHs9&EiMP z4cMf&k}!L@&t5l3*{%Ud1)g4RDn*y(Z#$lBKdEJ>uV+9W3~9!PvlI#;Y(RlcY0ZVq zaUmE}b+c2V6R@+^{q@_w=j>tD+d$%=SqEGUf+0H~dvvis;hFhZWpk|>G}>wf(sWZ< zaJz2fY-~4>mW|{z!0jPcb{ilXbpC1fc%-kkQ%DS`s}zVt5`zJS*L#D>QIS#(bS}J@ zxPR}|$Gw((^^3+{@ih5}LtYo*!f^JPUAk#3a&s^8r9)BX8o1lE8JE z#qVoU$-!b@0@F6zejATFBSC;U1D(fe)Fh9yw)g+mY8A|ueq?dR$H?u~^W8P&s^Gnk z9mvNiUvb{Th{4;}qN&=t9Z>5#N`ch0xX2Sz7-4WG=nNXJ{|*C41z z<+62!iPEFTA20@d-nTWaeoCm<8q#L*{A?NBse=kOJ) zWr)Gu|6v9V1r7`b=y%r$;+tK&XJJxvpd+^XtAic%M1u zz|aA{-mgN_Rmj=JmQR8s`&iJjB=gzBj-p%WnoD6wtK39ezg1$Lra_z_fa|`=j#eTMS+l z7^jHDn;|6QSJDvkIQnUx*Rr4M4`-Yt6gjb!=>95;fkj9I|FAqP6T*kr-utXqS(1*N zBD?>}UX@yHRc34S1to`uQaYlPc{;Mw{lkAG)Qg#2i5Vm zLEi6!S7lr&Z`Dd3SO_FupKJWAIea-HbFm0+J2`)%RyFMN=>P*kzYz8oD8g~OCUbFY z=8vdGVQhhDXDCC1f%HnPJMDG!9~$SD>6Zcg^k#3J2w}^sgr7v%G5*y4iEHl@qzjP1 zcbbr0T60hOoR{Z@mUlwvYivVD$)V60%_kDIRL37oca>n7efBT(KYRD_!MPUez&VqE z%>2o}?K)6?vX6fl6}u~?IyHr}zh7amlB%-Qtu6tXZFRJSJXn zsZ(>bP#@kOS1V>RnrSHgexk6NaRwm?f7ae_;e0<-7w*2Q!^&X?y+9e z!IAy@lROs9yVy_uw~t5enq!CcfHk|{WsXk^<(MS~>=>WSM|nU)U|)(bmIZIT?Nw<9~j|=vaIM zrO3a09_5aw!@@F*jKp#*MLPp9(D!_TXIVa2Qq^5C{}tji zaB9)Y2MmZdFNoWl&!eSnZ24___w^-7TR47M5k-1$1Tt940Uth7>uuFaLx&(`^aCNo zi3EcfoFN+n&ao%Z_Fq!cu`X8OJHeEnCaTqxOD~zJUGh9=iy*$5{fo7J1%M#!;>9h? zgIA^578xdf$~_=1PTuZcM3>$;Q|tW0S3BV+%T1190?uMX8+IW8lFc+Q4j$vzyEgmk z`n3yJJkpMvg{-E>M2Szk`=56x3MounmbHQSKTBKkH(<4l!!$U+A!kuU$(FDx z_vgV%ksy&Z=swM3z|$m|%#x|^PEqu3l!N`|SU<%pVgpfac88lcdhZN)n!Xrefsd`p zJ&5F6d6muT1WAE>dmEqBFf*KkjT7ezAI#vEoiG~fMZU8iH3@HtCG8m}^F&$d z@`)tFEL?oCusF~ANt0IE3`ly#XLzFFkHide=R2g^BpzQ*o;qB3T=4Pn9td_EAosNq zXRYm@^Uk$?TJU^tN`}S_V z{cK6k*m+li;kDE3^a+hA(^)IhIa~Nmc!880uk>Xe^CUY=_Mg}(u@&z3CjxCpV6%Yh z?q9G4to?DJ>3^N92yy#!QCb&>h&2@x*U1;A5>t^HR9^e(lBW$S`m} zy$gwVYrT4*UNjMqO~p%$C2*`nV7QO^lAf}!Kd56sd+?j20g#hPTt>Es5ANOy8(_TP zo!x66Ms)<-uDF1lH$ssA{IvT@WQ-Mp(#m-@TDaN#$1a!AXoKNPYRl1GC*pO~-#WU& zPcEnt<=9m-6H?Xc_+1(k8=kzR(-kdZH>=q-47y<-Omkag=C<9xOKmpibY@Do3O-A} zOc7v$#N>TIeAtcivB7v^r~Oem>rxds>t;jsedSj3?}T8g6=R0Pn7$RhfK$@K2`kaieoE#uDLP#+|NhNCW_|hTBom59K}VS;H^=psCl&~A;v`F{a)jLoKq7Xf{oI8=wwtHoT%OH!QJvtJxeMOvC=^ zyLW5o$$duZGyZi`MBWK|cdA&Mftc)#V>H_?V4GwQooY!``7Wm2#)2Bol*f%c!C9*I zFRRDzdaW1m0+p(#DPatVR-CgMfAgkuw3hdRDlT6~*u(odoWaqP^9ddwfBuaC%!BNj z)|@1eGJPzhc2ycsaa0J{wln{p(s{8Lj_3Ph_iVVnp)60|V_LzC69B@6|sYncc zVS+#nIB#-UXZvmg`$-i4O!0NKaKwo;+vd`zAA`okMG)}dU5+5hR5MN=)Lc<2X*J#H zb+6esB+BW)ud>z`aOJ%`u6_y4T14Sl1g%SGE zo1D&4v&nBdnXMBlY~#asDq)96r6>k7B6`XGs(~srZ9rlgdBQ;k{a!!7J8c&MHc_3_ zk0J*4>Z3du(~DMZsv3xf0qr2%|JkQx<{7)C;IJE7@Sl>pg)~ffBNsbnxXe7uxqgMX z??YvCWnk287a`e7&Fc2Myr9uS;p4{*U6dNTk;^c4Ns*WMUKg~+7#iqc?lO!^mD%uq zZoy}}CBo_H#i^{pq}F&Wr)D%En|g92lgF_73)zbK%j(15E6WwIKt;I>nP4uwq2Hpi zzMTF25o|G>CCgSzuCVwHdRk?YuO)v6+@Fi7Q@@7N^u>q~zWhv$XRl?*I9y*(!X)`) z6xGc>_NzMo=aNw4QA&2O#PKT{(3PL;nZ+VjKS&TR7k*B%eqQ{GA~Qy%p_MJ4!5WeY zc&M9Jpjinsc%yHunEQrbCp#o99H=5ki1%o9LGM3 zNZx5S=p5!r{o#ImYe0ebZ7bmjK)FJFIfirz8Awr=wp(kj4r7$efC}A4_a&V}UTt|Q zvPg~f6LYr|Bt@o*No*z!^Q(p@N!seP^y;rObJJ}KSoB}zHD>^WH_zgCm0I`ZK;?RN z6=uiy_VQY+4i0%`J+X1`PG-h#zsyjDt`3Y6L-i}cS%+n zE)Fe8Nfd>3_-Fgo4!~9eWyeY$A#rw6JaR(Yb(Yi%bNcO%@pbt7mQ=Tls{jF+yjh|_ zH4zm#y>#j-E!6#?qA(z?6z`G$vm#VQXD8fT;rFBZ6J zqTI+x?a{-CwDkJ-) zK44G%$18vO9P4A0!(&!3HuQsU(Rlk;cEBYJ@9CC++G^!^8XPc{ z06fd>tZ)_&E3gHA%+(>D`7F^35SDMtqwr{5j-i3||0>-))_vzw1$dVk<(Ou5ElhOQ z?CRC$xo8r{$R~=cnEt6xF=Z0|1EB-6GgXzGt_KilNSwqrRgv3cr zXD4*KtRP#`B|FL|B}f}Fex;Zl<8j}t#sw9cPs=c~Geh1lo|7M8N?a6?LXypi{d1m2 zSU<)W3gmFfsEHo3I>Zflr>s+K4+H-WQ@~g2L|m|qHj~QrJG6juPtK@~{c{>03CiCr z-oNe0x<-s)<5^2R#f}xNc&%ZRGkmvVFz=Q_6Q?AwDz=|(xgicQp1g+b*ZyOZQ(^8{ z19rn14`xA~V?4Rr_{(`)TpVq8pO`wm@R@--L#|lz&O@wM0CZ#NkMJ=wKVLzhF#lk? z!(H8Ova=Czj+BI`!}s|S_`u=Qf-@u= z@QN4MjJ)xZ;LX|p-uCBU_WWzx4K0f4a-2hsuOpqq=Y5-3J@6-OO-45ELa%`z9zZ`0 zn0%I-yR4dbOopenr$U9-B7dzSGmhnv%f}U#>e3Oqk?Si#2-KjrZx~U_?msClC_$!AQGGf7uBsc8Z7wC-Bb++cmn%q( zSyaq*e{?`2wlz5spF3)o|(omRsJYXzZl@FKv};(v_fQ zAB-Q^I{gX&@oFclgm}WjXnT)iRYx7aeE@pFFivy3-*JliiANSYjzbCduXBhuD0ZGh zQiEhsNgtxQL*)aObAP?WJE+NMNSVMc}ReT)ki?Y7A) zWBa6S?x#ULFzzP3?R4Oht13=zpXchu5RBqzmGigV&Smq%>Cl((KA1rZD&LWe(B!i*I75$^vZO>zBoY1j$#&|2yF5BE9wed? z)RjQa8hGy@st+%HpLt>&x*F_Wtk8-14v!ObY=&QmO^m+}vossxj3*LpFFbrOOF*Ro zS)(UJ(g&Yt2w2o-@1`&o9_}`tub7)lXly4DKx!KQ@;gX1uKOJ?T}`22dQ)$^e$=pv ztZN%cR@M-8R@f)5V|wS3s5?Tq&$M*hBa@snn+t$hE(!lZl@r4^fbC%x$TkQ`iZO+mI3rkak9vzpIN| zWJ~%l5}-qhE_oLGaP2k~@Xt?b^a5QnD$G9y7+tSt0lY}pMWh=oXF7ijPFOPYydfZO z49ezga1}6Asi)FQtbaxJeI}D`&kK`QKPb15Z*pcFiM@$zW zApCd%5i{RpJb&SsK;cyQZU=LqhG_&8mo`ShIvMe7CeqM%m-cB!Kbe96K_f@RG8^bp z{o=EiiR9ew>*RN=y8xw!8~3Yf+HZ8&czjIwB&wMOH$I;%;*DSD%^^Cv6WF>_GC~X1 z>LQD8qj*B#Cj?D^g`kD^{y0&=U9bh?CY5Ggm*`sxml9H7)TV4x`BRf2ETDm z1Q5&Th+bf13Hru*_KKMv@4%y*AW(@EK6AwRzM+vb`054GJJ6@{&GX|o`euDoA(sf^ z>mNI3EzK5iU7+yx!V2OVaf2wAMX-O!{!FvUG8~HrdIaDM{DmvZ9*RYYwCP_4Y~kB4 z_Zj>gsz;;HMFQ-$e1gcs7@8+_Oqy zG|27d!E7Lq`vAJA%f&(6$sqNA5z7H;nCn1fVEf@-*7-{7AU1*Mjk}iit?$1K&R%$D zLiT&uIlgq&=iu!$62pv)m-zX|9bp!+)M*c4~+S zlIHB=@y+;g(l@Pnv6UM;J`wa%v13*y!#tD@nznvCqm~o|&^leudl`%!wb5I@f#~5> zQ_0uHS@>>GdH?+Rv)+)Dq2@m3ZhR1EJ`a?=s5UmYDL?jt?w5bUpOCWn`;=x(h}~AQ zJ8n~FiM{0+0g%t93N^7Bny7^l;~}P^_3iU(Ilu^)Rf@8d=UkVH&T1p-QM5pT$ zp{cx0^WI4w@(JHO+K)}FYhs*6l%U?)mI`2iA!wQ5a=iADDX>TdvN8MeC=++4C9!u& z?o;A(;H?W$JopKUu=%elwb{Ye)Nc@UT=h_x;zl|Gq&T66%<~X0^x3f(-D>p_F!_y7C0qb8-@qVJjS=o;Z^{CHN zFbJo@e`h4ppP{4Z-1_;21!`j4leri?-v2yY&(TQ%&?nfjwnM1Q%S4saFOKK9;tuG1 z!yujA2ue8W!TrwVyX6Wb!Ea<`zRYc`+8=<&j;?ADS>B^_MVw{#WD?8|VliRzkG}!a z$Jhuyk)ou8|K4xg#aAOI_EDoV7uwkBsY!q>HkmCR={;g!R%#5g_U6%75#yLu}grRrx%?F#PP7%RgmfvHcg-;>d#k8vK?Aw8Rm#9=~O8H^Yca zTp1gYlH8jg!=Y!9v>`+V(ZlA}L$p_f4~Oc&x<7*(sJXa_+@SkR6|}nQ%(~sO)-@EY z<51mouW}t$gx1XZ0HEU7raSnb!(2DKd$Z@A#t&=>+6SiUnqE9z9YON{$eB?_-q!(N zgv@Ay1OJr5;IGI)tJ6XG=tWzqR4B(`Kx4z!i?gRT6NGligx#WC62Sw6B{gBRNkD)+N}s{#wKi_%xqubVr>HHa3V~$GqY8 zfHDs7!Bi_1A=QEil%ye%>FyV8k{hxbr4wdNWTSQMvntyDc|QdD;F3FG{O7(#^RV;z z&zDw!=L2VGC6jLw{D%^A99Z>$UV}rav^jk|%lClu?nhCYBmNrZAr3`eT}~O2(<%DQ ziJDZazvJL5?a)$C&CqdqT&$JAd2#slgwvOVGxFb-^hufN9BP?lIqq2V zLF5tG1v>l283p|h%x;8^exr?u;7O^vgvB1S1g`fQK2WwTZy$qSaz~`+UD~s$Ayq@43CYD`h9q@_2YY=^2(w@EEXg(#1jOOKdk(? zu`%SsCVY;gtU+*pVZ^R@VD3HX<#()0H4T@jEDE@N`qJ=n#YN6=O{y8!KZg_%HNOg} z%_!|f0lucHKDMl4zcCt*&8i3Q`{B&f4gpPOy18#9J?@*^cHQRYmuK_!|IvpTOAg@S z@zKOZ0YCDkj>Tm|{b5?<%#KC)Z)8VzV49wPJ)=409+wUUh_+;7^`&*Q|KkBBpZF&d z{mu6anb4#`^?K%0tw$2zpV6SQesWowUWAG{uBT4YPxx3pWQf*1{_$@qAmM^mR4BoW;aI1^mA5d=#4Q3rg1zRDX@{+zQ)@WZ9DD03NRu~w*!3bX^0 zIDdGch;zWzD*_p96MIcg-jTar`7Ay{RYc({cBzon5ILE7o^4PZJ2i)Om;aIjYQVNn zrgoJ1qpT)i&AQ7scYeypSr~y|j-Zks!u%~-(lSnp=x$wWGmtk}tR*#K2lq)ID;`hir|E`=&nlz7R&hTl*(T6|JYG*O9I^T zQR4dzlJ;eK3dDmS&Va#$G`AY9MVgU1;aVhITO3))#LH(d8nlqAysiC267l7N2b9f! zgMh;_TYR$rljfAY#FYLH4N1xx;{$ih&(G^>PwTuuozV8sLX=ZpE-@gX>_{uX<{aA9 z*LTVXG z@A9gIo5eMGeU}f+-|LmR!+Ao^j}2BD&Buv=eLX>`n9OSx8;BQ%;>gH1=ebe| z16rFtSk3HCmG>Ey-tJowKYxGbiL31C@D@R7w*2FtjVntgTK*|9XbJJnL~}tB4U1DN zQb!rVDDhw8ZXNPG$)tlN#;Kq<0pPtF6h-HMQoBBoZ>Y!+^-Jd-AUWPsyPQjOhk_^; z5PlD48N*Qj!{UrTC}@*q4n^W2eqgEb4RDdORi;u%N6zlz6){TZ0ueBjs(~FRhHVw; z4VjsbGyFgipMo_yufv=6KjHriQuKF`1g;UGD5c8#;JAcm2E+dmzvud0DkCpC*1T4D zJ|8jbD|}jr>Z?R_as}jSC4qhmM5tX6y!=bRCWh!uq)YwDEpH?#q*x~-r&V%?``%|X zDOoyN0C%TuNAlHGwcQX;F17`E_o|+Ti8u{%dEir??RSAm>n>ON!S6roFYfMBxo8i_ zT*mDmW0YA0af^Hhftf)IUI{{i4XX2jf1hTH^YC5^O0T+wR#2ja zZ%h$ZOvk;xK3@vCxh_+c*c_gXbBOYJu{C^aN>zqmB>u;lul`7Uufu>ohqO39=hHBn zfL>jhnK%F*sfZeHYwKUj3~EsCyn1+g_9~94NwB2E1C?P`?Go3Z23h_45=2myIBcSz z|AW1zBt@)xe)i;NztA6G@|DZSW-yG)Rm{R%%+(-;fy{caKvxC*irkh{}YD( z!VKvN!?EP9sO=+`n$t6I9pHSG7R!YBf(YFh;+h`_CAlSvXtHg!lK7Ky2a?zb7eNu; zSpx1agJ>3(Rk*nAlh$J%5xYig==JN!&Uqm8X@3l9w4`ISVVK#h32XNj8AggG=tFVC z`GXF()Zmxsr{#B|dvbVRM6QJ3h%{l{Hu_292%y8oYt+avw}YyDo2(F7f7}j1Y@}WF z%6Ky$I)RY&&eS${{CyanY}|3^rrAo*@^#+y&xBb+BVH7Z0d^lHL@CXbWP{2YrkGDY zTI|=hyo6nG8}4mK6wAdV?tkL^tTI5CGLJG!h{NDl><;O&*)LrVG`Duw zrxj?RQa3A{mCsV&hPKv=Z}(Zh4mQ8Ub7vXRT{erLA+f%Uy&CuVE5+~4P3v({TBQY5 zMf{WSmLX03hCrlhlG9G@H%*i;#1=|6m`{+i8k8)bFS4at+A{)+mQc8g4Qf6wGm7W* z;w~irZY%GErJ(!cOYo-HMxkFq^#rQ@2lALv_CiEZ=nSBi4ddp)fvQmU%Dl4Bj6CN5 zlr!n9=qN>&>n)vxSHrTATK8^v_e_`!h%bjug?;hIn?GfWweP*9*CO*YMGrC+q+;Iz z%ZKL|7ip&Q^Xf8;8%KD=F|9j-+LkJC^G(NN72a#v%D7;a)erV#P7&bU*h*?2#%UC7 zrrqt))eU3}U5gU$sei;K?~n{JY@e@$*i__wzu_esaq0!SI$X@1kJwUj1ckiqlbH?& zpx$?zwQ(=;1M6jxQpX-KFn3F{{(bdc>@0KNe;sT^QMTChr=GGZ#>qWr&tsH@K7L59 zpwDllPcMG6?S>dlH`?{t{=oEMCTD$Udvk-7i{l>E-VzV%9g6`8a)&kpC^%klFEiLf z(h_=Ke3YI^`-Vd@#3%2wkPY%~n-eue{w?OwgrlA#zBf$Gke`pWLpsQm2X&7ewrcO< zR~#{_&vUiFM~Ch&*AM5A;$L;e5gn38Z0(4_W5`~XQ&S8n`ykgtJQv|}L>6oDam{-i zf5`k|g=1C|d8W&jd8j-R5d{!iy~Fc z#)P}ZR#c=a!py86ed@OR2YGjuWwVYNL~ZvntniBp+_=lM$%RdzfcL9$xEgh)1l+*O zHY06baUnL7_qe(C2zk`F>Hf5_A>@${4_=xfF`f1Y1|s={7_07jy%nCn_*9O&_8|C# z7(ud~z(|Q^s`wmlN|I$th!nPqljE#uq4W9z;_mpTGQ6iA?Z(%u({*c6=j+Mi({DWZ zc*L3MzrUFN%(oLvsDbU*LsHzXnOx1)jV$Ls1P;AaP2c|FgI1){Cw8u-_}kp`Zyvy` zFtB8^^c++Go`b7a0)F0z+#p8WxR8jI1eEHH@LPM4faSVtxt^tNdHKN7_;59atC{q)-^&#%3`R|Nx-tZeQEo1ULwx~)T2?t;7rGaUoP+6NSMU@zB! zMHU*LiS>{4@i1Ny6!CxUl@aLa_CM<^71H_fp8dF85Jf4c=oSA+?v>f%ukpK~zB_hS zHG#RU?E2I=?F`?Cbb@B?pHdtNC#$lry#9p_VTsGa8aM+ZPjiFz?Cgz8)qXNA3IC?q zvYY_ztQ}!J=0MY=V_vF6Co4belbi9xMaQ}#{y{1m@N32<50XQ*Lu06}bnBqrGlRvLUfE!*;=_gtN&svB(1Xz~lOOHT7}>DRr> z)SJd(mArK09(+}Y3WoTp1dNRU`*}Rmu>oq&KSGGHs<<+wd@aD5U3S}56d|lc}zw)UJRbaghW@xgF=NWE1QvD687O;a;eK8v< z2{kKEPm&FZLy0usA`fil2mnYA_S{hNXqBH0l(uck4)b?I>h9^WJ1Fb?5VP4R-BH8@7$&h9{8;F}WOf`1xG0Y~P5kKH z(sj4C?^W3_W^^tU>23(D0MLMuub^MwUi1J_8X7)6eYzZR(nv+ppqPk0c^O$gmM1lm@MC#aRNDkvp5h zKt#aZ5D55%)TkFylrZGfuIrX|S9T&ORQ@WdS&fsNfz5*$$RVgOJ zZjvL&4zvT_4fHPs6^`ZVjg7M!s(#0c5GNDve#-IuE&lF`^>b{UKY9vNZZ1qom!7PD z&yUlqBRV>*GSNum8*UbiTMK_cAbx9egH<9oLr3%FbZ_y#+eu__HUI2E+HY1G!W&TD z+XDv+6^%4t>BZrz-dWH^q-ADq!MAC0@@GBPIBa^E(J!gADa~E)RiDHJ6^(>in9A1a zPl2aY9@6iHE5-)27cQxs=2uUT!>1&f2HL({Icwj5l{QN=Jd4SqnCGnMmV2eU(v8{i zqaCk%-55t}WiR3>+fpp!3tYn%;s@pOZdD_mdpP(?et#@VF3C-^<^4r+f2|H>OFsU9 z1J?U2d*MDF8oIFkOND2;+MpnF$@GE(lP5tXGRU96fc^dNlrlEITVpJG=eaVJV!o_! z6@^dkm8j+XD7%ejN%Uwx(VA|M$04TYR_NbaBIIC%*II74mS(&C$~qrmulizLGVhqy zzd}@3Y2M{|VGLjY{@C19v`Ik&Z~ihrs=H)Ke5V8s!WDd_wga3QVL#+KkDt9>OX6ZuS3F98*(}U(IbOV^q2a3U`q(Ph5#6jzX z4AQG0OPTip*`B_R`;({l$E-!M`_8==zzQJHd-j8tSKQ`M*4B`K>lm+lJHzOOl;50f zbM>m$vUZj)d`zDs$YxN7AXc=oD5w;*Kz93?Z{pyxe)Qkf75Os9F_iB(y*+?CNJn0f zlb-&uSNE6B$ox;!p+<-KnSXHkE3?Dn2uK0Y78*@LUH#^?j3vpfKVRv;x96NAHy6%M ztb7F<^hy7Mgr|x=KUJ_Vp~|aTkU5_mf5fK$z9pWJ#5j}KD;(Jf3-~EN_q#Vm>ekz!mleiTdzI)^9-zbbKQFRG>v$3FYEIdyKh$M zzdTWM2mnKq2{yjJFL>AMWe&)1S%qV>j!-*C?~&+vul7PO^Ew#L3l%$i^?4r4bWrpCA>V6lrboG zvmr%HL~yC{vqMw`L9kf8Q8@FQ?!@S|GfCsm&GQZ4eLDA70$VA#yevX}{MJ{z9?Bc} z!i7Mm$U8F+K1~ajYrrODYSE_s9}yvh@zHzTVioemv*e(xa0I>tf;~5&fUDVEOypDd z6KmaDt#0Q>t`j&HcYvAn_;(&0L^T+GgiR#3(iX8|U%kAf?T4`sjJgsxkPO~>uHnE7 z2VeZaB-_v4>B@yRmNy(bQKvR8ZlJ~n*V0n42DF!~Ya4B*uKK+>XnQ5~afj8|OIEX?SmusEI63VySravE^6HBaP0i z>%X`3yhfBa-g~v{l-Y{lp#v=wfw0S;lw{`NS{wg1^>gCxC$fg1jJbBuYp=b@oMV47 zQ3~H1;=MS;IYqz)8%6t0qSR#C*K_7HElMSG#)uHYo+mvut`&Vm!ac*vzxaJqY#tPI ze_Og~)AK@pu+%@+h}Rt#Cq@(Z^N~;AYP}_-B-+5kxOT@O~?;mBv zF|o|htahY47FefPjn{GIUaY2>&17@IE_PLX%PGEJG~%-*Jz+;_neDSa10z|E3Bc#; zV$fdhs{*iw{$EF~|YRRRUiKh&=bfzz- zz$S~pQH3e>Ea4A9wKS~~XYlHFL?q4X!Sqb@s*SVd{d|R?D$Kj>xEj2U&tc?)kJnw5 zY&c!9RKHqRJZ1tBZw&Mwh(-(Y!v#}d4@y{Wc$Q`_4+b*h$BvH^tXaih!+*^;+1$R+ z9c45Gy;0S#^wBdcTu9)ogf6vM!(+rL-T~N6=^U5B(z;2UTHI`6THR7Dc{MaTBM!Av?BCV zE=Ny#?HuqZ(Tb^w9oQf&_egwRnbc)`XT~=>+Axmk_<>ZE3= z0ILiKQs83I4<;yTv=prM2i_wd438`cn;~8+hW_8SSopIfyc5fL1}Z9>*MG!9&t@9T zo=()=Ve`*Ly*YX)Qcf}P6}a@S?ufc!face{F=QxTtPl<{z@1jTIhxnyooM_PY(Z?O zA$ebhNk;ab)qk|=@(2Jkhu8LJGg1Hg*jcg?6t&4ayJ$X7?X5b-E@29A-=yHEi(z`aP`NfK0XadS;LD%Kzm$=#YwyqzoZpi*`(~|t`B+;)K_4A# zR58EC$2Im!p9nk{a7VQGYJDp=ZEsp>yVgq|G6_oS|I>NHit3k4`wb$euH7mX8$3 zx|H4?$aavNvy21UNdh-j5)p5KpNHW&s!SeGf{bBv?*YFc{GUD0qGq3RWm;k1lm z;d=KH=k0fLk`#r-E-kK21_BP<%n9IO{C zZ0*J6ArE`koBL>`(Sv@>(ghq2c2~t+51#uTWYe0!kEWh_j=8Umd!RRKe!H5omW8R`fo+ZpFC)pF?h$+9NDtyjI^JAt zV*0Y964V+n?{U9wYWa8NpjRxE#6O6IQYzjUz3tXYE|P;NFQGk;S}1 zO~gswzR6wH+Nx6>|LG!9li%rXd>|zksq;RWlPWVku6t+6Cf9XJ`mSRBP=aMIk}~!2 z0kG$HbF`bzYx-rUA*@2|pY~~1V^8Y9)Fp&g*Q^^MVz)d;=k~kjbh7>IHc4&=U_EXt zK%|~wU#|YaeuKK=d7(mr*P`j7;bT??C6F?Ht^LkrcNFp$4Ii-tne=)(Z|1XwWvmcE zZNKO(1a>DR7Mmjsbp38WQTBhrdTv^Kfh>Z=xg#>lHKH_jZ05` zDUj;`T4>-o(YV;=J$OJ{h`H0a6G3O1Bks9s6}!uCGfAtj_kIZ_d!1?claEYM7a!3r z*PB>lN%%P9^;}I7m4Fdp>vcnj@n5u*SGV;3ADYgBEy}J9*U~K=(%s!sLxY5XbazR2 zGc+$HNJ}>=-Q6W!0t!R7bPqMNpKl*~{{RkV24+2Lt^2ypGwCZac3czC$}qWTUH#eI z1>g+{c4vEl51<3+bZsmVPtAB*HhPZ}R8{!D*Duvm z&t&i$cs%UF=jpTQo0T}>G-Pl&qz>4_@7j>5wSNp5{;GsIR$zb^VM<4-jrPO)c;Q@c z1ZX8DgCN!f5o&3ZLMo|vX8q`!!2S9uq|^B?KVSm-j{(9kxbkI9wZ3l95@y}w-7}it z#qCmB0Dn0Ioqs$#`Bo_v`yqY5_vKo(Wmn~4T4d88pZ5{I*jRqT(Wcg%+bng1%hdab zb-=O(;_S4S#CUy36P@f~=0JYBKdvn7{2$*KUmH)1iy;`|`+WBP0G{u+kx^vqL`Ks~ z;rj>_W;y|0s%U41?M-d+(MvcQO{RsCm*(Ah^U#-gV~@1aUaG7Ho%%-+Im8&bw~~y{ z9c00)3uX<%=gWcCq9kF98W{ZUO3cH#5_!~SxSEp9e zl=7%fwj&)y!A$PkgvS52UtH)&&cocKgw6|PD^2JA|I`Yl)`h2W-hSSafkvJQC} z=L?A!V;$J5qP|a3FUx6V{1uW5Ao}u8$ThA~NlH#uIy|BBg_Cu8>cS}kwE+Lo2(+ML z-+60#gOS=3Twx-yu4oC*LJMARKHiJw=rx_|I@o{nMo933yo^q6b&iXntG8>? zOtr#nFF978gLBW1K-`?B2L3n&5*y1a_2#~rb-gKmj(fCk{{*_D?BJEA5OUp9{H1UJ z@SyC}9-L}BM|*g0QMzDTkylptRR0QSA`&Wxh}(mIIxTm9TXTcIu1|kD|Iz(Seg66| z))Dl)agxbneE!zSJ3C_JUgUdlKSW9$dmMvsZ-bn2!MB-S?IL7dc}{5krVqM z4Gbe$^_zO#35}kPVp{%(%z!I(TYr9+-r9W7{%`8+HOm~HE9iRq_Wd3nANELM@*Oyx zC~dVMH0N1u>X=;@P{vp$wmL43wm8fWnzErA}iRMlU5yz5L!wO{JN3HxG_w!An#s@Qs7T( zBd2cbPd3(O+I5w>$yvcGG#RF?-W^V>)p6PN93~I0>+1-2Z`}p#LoZxU=7(ww8U`)t zBFiU*ZQJl~0^)}h4>DQRqiW)E`J-K3H z;|Ktx>L!%Z+yN^dK@G$_Y4F{@6@keJm)7;sb^oEHRwY?uGJWOBHc3;Ng=eGLe)xY` zFCdS!@>9GoMb$AMce7)g?Z=xYFlY&VMx0ha&}#!e=+(=|Xdsc1-RG5zGvi z44KnZR_;7c9$%j?OOq)Pc|J%IVObQ7KCrJS@52|bLFdXCI7RblG=Xy=pxvO1*E!Dj zVIbRof*95Zf7&6-yTXP!&Q4R-4*1Yms^z(izpaTi#_f-f9^1+1qZDp}9B&+sBd~bf z(|l&ScfS-6baQ>Zbc?7KZ1tEN;dNduYcRfEAz0aMrLGNqeG)cHWLV}-u_&Ejq=#l&kp(SJ^shnrnF z8XSznaw%gk3cM=^zn5b~j5D&6RqFb-*BPk-kBVypnhwsPgkSssJcc)}qXhHEJWkbW zzS?^;A8e^iB?0`-qmJkEvy)8D*GZp_js&n9Ym>|?YMcOVi`NVdvn8D@@Wv&VxlDV9 zC0~CFoC7QSd^Y5qn~2NER#5&2?F}x%KQ#1=D8kXE*`5%H9Ig~2lL7`WO0(zw1heLK z&!ne|hSLcNtbNYmCRLTYu>}v|pj51F@W|E_!*M$zy0&3??_c9V$B)S*cH`*~p(~E* z<29T7=FuMUbIB$f%v-enmu1lTVGC?*W%ErR?Q5koW^YQ-)#j&5_*Z1cF)9{>W;aj4 zhyq!k?X>d-c%x*dXRy{}bMKQA92;>Xw+mA8X(STHo<8YoNqJ}21a=Hn;DFeJHu$>L2?iI>e?*nMKTV5VugEH{&bQ1$jZm`9F(SV zTaIQOSW7_SDObwr<2O&oeI;0>Dz9&|wqt9PVBYx@FU_C2I#Yun*_9{?%c(q!CgJnt zM3IGhond^eM8iCw|951U|CU2=%Zj%{k}^jhEAwxKMp+|$0O9Xwmd7%UV5L*2tkH`~ z0wTXr=DfK9R>*tXzl|glYmtiJIS-v!S5!~#x0eqDaz2}{_dcNU2>Ry9R*dCC=o7Bd zZ{K8mO^d!$v1+&k`k*v2=vP}^JuI!z7JGikMuso=4?4g+aPuO)k={hJadFS0V4r-0 zOw9X&s;cQOpKwr{FBl1ezhFHykhR;k4cx_RxFu5p7fm;uehVL1RHU!ITLeI@H{a!= zr%E2=^Br*ijLkkYa5UO=C?yw$$D*9~Bb|H*dLi+KP!Q#_ zRyba4gfx#y7<0{}@*YxJcP|Kc;$MQSNByjhX#U0E&{ROFlWM?Q-~y9FO80(*f13(c z%1VgZlKub-tLu2N&r7@VNMi7bgRmq0gu-QKl*BaPV!$I*ICw2BEl9#IUy4P1-w zbDGM^%`-#dE#~37$>JXan)W|ld2Kh9wOssQDfG-A=?{US7)}Vf6kkz0>m?TBrrFnMUCNwZm^y?c2W!RZW5|hNz*IY4`0h zJbRG^`N$ziG^y#4Q6WT8rjbUgrk6Z?AM6YtvUXYo`|-J>y$zm80#dR1Z^3(^nh>6N za6h!r4;Fx_8Pvn(B*C$bf%x5PwQ#rPN~Yai;9e5N$IUCJLqfbwE_N7-24yMmZp6@` zrU^@6c>~>(c@%SSxgp^i7B%0Idb(tA?5i|h#|2&2pRm(h)+M}Km)4_721)g=)5?qj zWANjDRPIF?mM^4mXqq@QC34ydMLke=46LtDLIj#jBAxKrpFGP8OLj+*Sp0F!8hAJUUD+4z_d37J& zUUkCKSTPIHEt$1^5qC(e9}M^PjD#N}8%DH9DC+U~i6MR-JA^O&1Y8frt|gGKXZ1bR z^8H$Lhcq=T%DzE{3To+ipGoskyiVYbmHF(JXJik9DWr^Hj+sXw*)$;6XM|YoW-@|l zRgVeV&$rQH7`W_eL|oNF1Yt(j1$fyxnK~XBfM!8;krzBTnkp52^{_x`eA89^nY+z2 zUXc?1lX*DN3l|c+&AVsB>e-=;VHIE3LuLWGme-iu8?_%>`1ID8|9V{U`=}U6tyeBM zHx=eQ-L_0rn4BI~0!>u-$;5_D6olQc*?XI+3aP47u^te1apVu_h3IA+udgv|3fKGx zDjTQx^ns7@@9(Y1^qn%#RZ41ZaQC#apon?~-Kuv~=Nx*cVQlpvv!EKU$5=Coz@`p6 zCF@)Zv5bDpDu=$6Ch|1f-UkeQjnHX7dn5ajT=_Q8#*Gtg8O53c|^PlVx z*yEvVJQ;@b;T*|`y`RZ`-KTmi5|CN<%(TBy zoDK_q4^}tpgixfjD@cJIoiecYuaden1hyK_ya_ZRmYYA4!PKbBFZ@$Auzeo%7Ay+Za*>{*`k>yt0j%*!KgNW(E{( z@A>zSouRH(>n3c5ntLZZA7mQSw!3PoI#M4|#?6Y!h`a*PJB`wCU#8dL^pWO`c^nz@ zW0$6RAb;GC&%QZY1#T>n46<cue_QxD^>hwbelgvUHc*TFL*>_B3j#tt1 zJ`V`9{oVz;eS{9bwJ?{)#$3%9@ zD%)6u2Mb6}BIASLq@`G`-ny-G@bsN>cOF@d2tt?EnPgCM)`uOPJp8emE=Bc>eo4Ar zbdbD=`TUzOP3L6Ys~B(7%tS&SC-FLOROJzHIa1|0VPrn5(PD7y8G{2yOL|l*G($qj zd25z2<*ZK2XU6^<_7!H_Z{iruNmy&}3adtH#&Sf+yOC$mDktk|j(8Qj?mgZHxYeJ$ zVn4}8>9;TvD?~Ug^Zj!e+BvxYJU`(6Tg4SfK7uk3{}N7hZoaqU_$NWmHh)1h98C7q zE=wOefMGQp!#A40JPU#|mZLo~x1szt>L3ZWg_f-~CtZPV5}P3WD7I8mrz6NOys);r zqw{m{7DCfYb2d?6PR@MEh|11i`$F}8C;$-h&V0v_kUaXSgpCI)jQbq8WKHFb2c{s# zVVfOZ_8ku7rw3CvdMLjQ0gco8N6%fsz}xSXw+}@o96l!->Q}UO4km4WSbMVnyIkhe zw*r_zpAdW940Ed3=%}zws@YPnXtoyf=D_ALC!9^c49cNQX9`Mt#`RV$I8S3Op90Qm zVn6qd6I|v!eL+zuI(Y*wFR0V%iE-NO?WtDitkMh2T8F0%e`i4**+rr@Pk;?UBjF@s zG|S($);R&{q;VM;=`IM`-@NOnTKN%}7xY0FijfJo7M=0@$CGRbM zyk*6VcxKio`5ycmlKgn6u-nLJsqRcytg_kr)l=3PSYoTeX+B=Aw;I!P=5_G<)Vo)HzDqm5~NZep!{MbkdYwaBX8Q9lJ-hba&ZN5h=6AgwaHc&rYtboj) zO6i|~KZx_EZg_9v7}(ps=gH0I(@kJE*mH{vxeg7ceJNuMgTkLL`p(u-%m;S=EXoPP zUVW}5j}Tv&S(f|9wSim*H!Rz=7Aw?$W8y$)^v&#v8Nxk?m4v9Rc^;X_58@Gv_%Y-H z_V5S3{Ld?k+mwJNE3hxm#BNDU+PSaecFZ z5nDUE1B}l<)xOuI+R!Aqn;kteA+qK(C0!Z2b?C|{;7->ap>E0wL?{oD~8cGiq%Jt)@2rITt z_CYq{E}Bq=1gfaJ8LNP+@Sl#ypSIdzhTzg6@^5ZSLHjGjXEl4bU)AO)K2sNR!rSD` z$#Q~&(o7hR29}VG(&)06N8d=Op(#`=^p7lg9&74ylf&HCem+@gt z_apP6mL}~_WIU9HB7^sBu?2CQir;BT zq2VwQeRu+Ps8Q$I&!;!MI?mevy~j@~yH77c`5Hx)J#@)BJIRq=C2?upc5AtxILvDO z&UbTV42R(HDWA;kAI6GinC_M;JJ@T8g;i*EADKxwJpQ8lBBoRJSvgMcMh+2!;UwE) zaQ3G>8}-$!yy4G@+Q%2)Rc|jZft_;vb1Xx}TS6p{g}w1}fQKZU5R)Kg#;7lUH=U%l zJE{&jUw!ZyLX_2eqxS(@YPLR^c~mwVKCp!C^2c}0W!h!Z_o;$Sr~ki&f-&loi_Tx4 z=neW-4cr-265;*fk%{lKj^2T+E+s?5)N0~BtsV-0?ccKK$m(3%{gmvH)$?E&PiR3x zvwhg_%R$|6o$PXy-(6O}-R7MQz(_BUQF#4mYzHcuuzSeGLxeFo#Zxj?E)WMA zoz4-OtTv@(`8PO?6FT>t@Q(7b5Symv2?T!{>XF#lmxm+0JU?w522PqTLpp8mVBE8?^rc>i09b@1J+Ht|#- z1WH>}9~3ZWj@6;JYOaTUiu*xN{X0je)Z-ptbwZJ3+@6%M z#mTR=OY4Q@32zJcorHXYBKMN$tRCLE%ih}$vIE*58=6o(IArH}VG^p^P?L&R7h)79 zo-TF6HeH*18$X>l*^H}kD6(Ym?-UqN6hpA6h(2%`kE~Gn>r6L{=IEkj#k{E<$1c3o z%P9|*?C6s?IW?6Mc4L`iJsSh_6E#PSH@B6cbE4erb$&wgSecOBHZ>#-p?@$Pe+2|c zAYC^h!!P6PD*mR0k7G|aqfTzW2rBcJTR$`wZR(y)cEINBI9nW`H;roXyWol6ZdBYy zW?#eZEk?#IVfvYkB(_Ok0u16B3>co||NJ&-MwyN0M=^x^7nF>@vWRRID%QBcvG`$Z z&|Fe@chk(t9KxqL&FA-4q}vSiD$f%ztSTPUYmc?;j0D;RqP@ zV)A(h#i1}dQT;WE=IU_VG=c-t9FAeRSf8OB_5zh z#Q7ukp_8JrrBI#?(s0ONzVE)qjujQ&u;gT=8AWa~+2N(-8@o6MKnvf#lV>0PBJw$y z`o{dSVBeodY6v7$?gPIbreEfj`UfpupRB3`gsmG;Ry*qru{BfhYNG9guT z^a=5ymBKW>nf$ys>uSCkQQP6PuUOx<({~D+BkMhrcsRd>)y;ijy%)UON8QZO!;W9S zNtS5{goWtEhR9zow$|2WV;y!h*Z9u%l0Ij&n2->8b#aXO(egl>v*fZb6ns%~f5H_o zKp`4@P!;F=^*F2Bglt0Xk?bo&zBKl{wlG*+6lMVA44$iPR$SE6g`1`#4s}muC|3Hfu9fh?x%CWrmu!4X6t_bO<^Zkr6c(Ih=E` ziaOQf-my`Hu6G9I3XNKOVi0a6Q!$WgR2Epds-cHY7TEs6k{b?Ag9owCkvaIUA8D1E zt_iH=EQKvRpzD9Zq0n(4x?cGpK_W440?S73_!+^yK z>bBh6!NyheU7>R;0&6eFF^4E(V^Pib)4zD*mlt84W=yddE+G6+U=C%NduV689mmp~5-f$#2W2%Ta)tWf@2 zG|qI6xzD>CXQak(qH~>-g}eN^ldyNG_Ikg93~g~*X}F;{w`$VPoQWAukdZDnVEE*a zTizpu={o!0ihFalXX>_q?;IVUSU-4OEGT!a&dg7xINgpp)y*r6#$J;-{tps09KQ&; z9r|>0Sm=4hn1Ew73x!&>?vMu`z;jov+tL7>EMDXKULce!+0k(zBr=SiqScE^ERVws za?uD&Mfn<=hXfnKm2$q)wVRghm?^|M#n9w1S^b=U(7?5@p)iHN`&jL60B*H4Ra`e-q5nnD!%hH9XGe>|flHmItjfmRos z9Sf68g;O;AiWoJFsOsWr8@u!svMwwGrbZl1P?0sCZ7lOKVpV;_{NzspeL?u6M?D55Dv_?sdOC zbj+U#Z7OBEkI0^fuFP`LNwfo@QT1FF^mn4X^?bYJGKdwY&I|aTfok$MF?4kiI%F6- zzC_VCVIVnJMVJUgi zZ@g?$k_Yq^Fx9jcMYpjT`xL1`@Y%0>zq6r&B~01d%+aBEDJ|*lh%yL$f9prJ1-?-v zQ#=%)@I!PXn*6P-H7q0qzYf|VOjo9rt;@UnLZEw@7Em*f5#m;Ar8T@Yc{u^zKWQuU z$h1OEzuoVA`XA+;v^;m*SGyi07v75ZAK|Lz4Kk8R^S%a%(B@e%d?{jJU?}}#plLxB z2b#PkV1h6{R!&b%ajKDue6Pk}ZBDPArv=|^oOLXZkjuQ}E@5WJ=2q<4r~y7dwi=U` zRTCK|+qLqJ%ZUfIZT@@nSKj^F4g zP$SR>VM={$wS5GVt9Srx~FiWg1oWX3V7`X;<2%ACI`Sv9SyawoHUe^^jR)%$Bd*k53N zRaqLZ#(YDa5G6z250BuArE&Q6s+!{3$K2X!Nuf|rDv+7wHClWGSL)maSTxKZZgvVG z+$um5x6engAwATnYiHA|MhpXz@ME>8Q!nuBKk z3pRYZ9H&;d7{mqKc8u{#c7XVryFe$?Zg8$L`7a5P^zCc%ul0#<6i~!3;ESL@Hnd+RJ$3ml78PU-w#MIICO_945MU;#z*=Ues48#IokVd43#H=TKBI zagYplr#hNl9gV#{0=cI3gzeCE_=_=lh$n&ucH+%qc?!!rSS=P zQmldDa)|N8L)d!!!H5PlH-*+ym^m#>1)`H%J0~0%alWgLN?o=?KavNl`z~?aQN%x- zSSc844j+SV;lCG|ij;Yn5JsA=nEya`^l&zi4+FRSdJl|5lyBS`mx)apqOVx`pRUFV zw_H1q6_YIYiU-K6V;T3xap6RhlKWC{tVK9Z06gj{dA3g)9GwsU0Xvj}OFbSDuBbRk zwYQQQ$)gv19Ps@3ul|!T?L?dL`@%KFWj*tdyB0Q*)mNN9V4{6!R^25}W0ACUxHpB% z(jKzc+fhqbZr;llG$hOzhR~KYZ42c=={?)rrf_uJC;0xmiup{css$yp2;v^$2VfE0vF1 zZ(V-1heaT9*6+Beh1M3WG?UsnDJsTnzklp_u|Ro2%Yy(1rV2J9WFp?TmRk`CHfI(E zIF6}^^tx4DjPx>}_|j=_W7ltV2)? z3Y%)WZkM>ZU;fd*fAV@SXtT{OYrx>O^SAI=mU(Cg)hV7cZ!2%{HWiE7clN8KilueGb=%m?8=V+G zoD&Li9p3o4u>PM6y=L`Nzf;4?dz+clHr<%>G}q>_ zXp3kdv`1(!3DLpMc<_DIw}Ac!DvQx09vqj+OD?RjrAhDnL}c8)?@xu&Md5M(%rsuI zs#mq4f7D&LrQ&Xg&fTomc!ap=$vY{S_VDmbciPos_8$@FRQ=zMmiLuQ=sK5uZ%KMq z)Ytk@`&wZB*w85}saIY{Efu>^5jz_c(igJ7^8s6BtBZ9M8B{afJn1(LUQ<}0-0zLx z46;+#QJW1ZUH*(?viem=cBhI8-)afO;J z^(#X@@^Mp>I$ypV7`ri>NQC1dE*2~t5DkD-p3^6Z+FMJWH4z4ayf2Cclw&%W*~39B zEe}A&-cyOjr_5=g`9}xi)URLluS6b_X5d|)=XIS2n5Ms z)S&%|jB>JQp{k2M9Q3|-pC)hk6rtZ%pgg8eSsnF8HDm$9YP7$es=qZs&io**hY9aK zi9VV=|7^r;eI9^5tf%&6q8Caw`*9p{cR&fSQeBqkBJgATR3@;w-nzNQbFFvzX$Rpp z8;}4oLGQKn_2nK=Xtz}$#DzQ7;UxSHH=P7_MWE?DEdw4F7#LX;*@@GM3TMn2Is_|q zyp`MX8fPMP>gz4-=1Oesp*t+BP|ulI%D%seE(1ULeuoI?vYKnDLAVM2{C2&Kys*dliewkN3BB(=?g&Kiw$D*z47i2Bl`t%!7RV*Y~c1u#kff~xr?khF34v;cAPv-M&$5uNvN zvm#MUE7ldC-rA-pVy+sl_Jm#M#FVQ+ES}rDn0PEccy@KEQnCk-K3X?r&~JIBsqfqF z^GH+NsL9#V=0c3GQ5lce`Rj~@d0iPQK5}p|S=Y_UG$f}ZI?ZL&{!2)ry7;OH{hygo zX*|ZKi}cCczA}lCKN+J*-{=_JURdVJXaZ{BFk7_R(wOVgl-IV{0I4^e!_O=zAlX&L zVUWt#_M`hC29R2!?-!fPkhjl;^<$0BAyJZqEBZ%NqfbVVqq^XZ^sqriUJ+6a=zmJP z7Qa&H=2^uZ3x5l89f=AgtB+stM-K;Ii}PWg#N*FYVAr6k3H`+`F(ii!^%w2IxY{;$ zGPw;u%Qpa;jdt;i?nR#J2|B3W61(oSH^~8`OMeE|l>Cmg2_v}J!P`RYafH-7+fAN4 zuH)~LzUdhWmzm88A+vk;5kNm~MfQ?vr!0|h>=tHr=H&bnUu)T15=TWU!HC5=cdL|( z6hp#udDgl%^N;;>3<%9TtZp~cm6d)Gn`j=kJczlCh{(jxc9~C3Fp0)|k5p;#^xq|& zL*^#Hzdje^OS9Z4=?I4_nz=a3zSFS!id>AdJ8FlBO033Nc3#(g{c|YTtyhqbpI-p- z>nj6ct$u`4)*QE>a^rNHT&+ON?c4b1{wVv7MuoLdD8EAp_L#Gf3h%AO=?EbO+iKD= zvy|?x<8rlO#Ww=Mb3+?)c3}h~M(3Zq7^ouHv&o?A)x}$4FIOv}%MyE}W8A>2%H>xI z)YJdL%&|>4$&RRVD>khBN0G1?Qu=9_rKB81C@Q7&Q{-)Ma77YRAP5|_+Zw_%c zu|AO>eFMEVR^iQ*qeF^NxzkGR!2)_X`~Fo+XD?#GTr1ZrMKPk2>a~f&uhxaM+I`b>DYmu!CeWRP*)!Uq7ioPJFlqMVR#Fu?CQfS}KB4@WOf06NUIdl@z56YeM4v8kDJVn3M(?I<4 zFq$Ng6UiLFBONrtgsOlyx?_h9;a%Avf6O$I3AW3Xfc$s$(N=Buq9^Pb=dpGXYBz8h zTjgdIfk-HNl>W71B*=5Bk>1$7_z!-=OHZ!%{L{|l7z&XO(JrDQv8t{KkT+%70OhF* z+ny$f)*2jod>ws8p{)EgZ*8&f{8(r97?}h*_mZWxY@kVhfucR_7Rm0oSHbTSd!FeE z40crhAqQ3_1k!5qpQaNA&8-v}J7PSk#^B2JL>X$pTV_{hNnd&DgOP+?=-e+Yty9}atp$#qBJ#_!KL%4NRAV9A4jjc#aS2*^L>A$h zHg2xB81I%l=8#&Z3EZ<}(}l1dh#|_GrXlUw-67TmwxkNc!qPv)SPBLB;ys z>;CNbk2F3q52{E7OiVql-zzDIOuloyR22;452HgGbFQ~x7b34yJ#eps84nQ?zsQcC z`}mw*mJs0EJ-NznKjWNGzVdzEk^t|cfWhw(#=m;p;eY)0QNiJ()ZIhkv>9yL%l=48 zG$CbCA1nVFW_n@V>i3z20EaWZ=kjws;cB=;jNj4RK)UdxDgw*gCha_-ie%qWx9s5O z=&(^gwvWmgKZBI%YR!LF%w1fnt6F>4R*AmOeiK-6SVYvQO5^?W4r%7Py%_V7>wo38 zoqYESpjs3*f9V{!F`rhU;Qz4c*7KO@?ioGOxkbJ24kkI+L_qs}lgXsxpzK?lT3y^n zf@7eXcCbmA?=f)oyoxK(nHPfL4`>_EMXO$G1pXjrCv+wxuw+94_t4*oe?tW4U~$vs z@#&n`o{^$@wP|?U2BqVKQxh@++v!hH=*{ig= z^l(OkJH*G&@2Jl`L7*4akaSM7jCSNbx= zcx;trzP?!-zueBC3;SO@RuL^vVY>$9sq~zfBU3edc@3iKagPA|(zx2IaQLSw%6bEB zZ{GI+3`A5tm%u6~+7KlgRWibIT+ma$?q-vscLo#n{IM`kVMZ8zFYM#eOSsfG7W7fX zU=vzTpnItI$e4akhT9$T`=>%r?+7Ge5lr6~b^>|^EyUb{P{6O7eH0XM17=GfVvWR> zq(Iu+KhWpkkkw?UHcX^@4M=FHsYHu2xsqgEDGfBWGbOnR4#l_IIxD;XMTlfAt8dt+ zCa{e7{MF#rqMNo%dNC3uHd5HAWcPOG9eltaD@^Y1gq2>+r^iDZDJ((^W^|tVfxvNE z3F(NWx(B@)BP|nz6gLmQpC6mc!V~&;0AE<@-*w4zSntEyP0^dd@a^ae<%n=ek<0hi zFZCVr*$CEI(UgjO6oUUm^?AAk_OGLHh}GO)N}B$DW;<9)Sop(??}QZoCO2Iw? zb)g%KB1P3PD)Sv#I~oTOYR@n&8ZJk0YcYsegC5D)z{0w=Gm>y-_JS0{8-X*5pL0~5 zrD?t`%mI zEQr7wg}V)3`-!?EX&@rZ(C5;7KiUa#Rr18D4XcN7~T{Y_dEgBhFS_l)RRVij| zWC~&h$0aVYc4j25kr8_I+$s&Hml|YpYqGW8v9X%ui(^0{-}+F~7O4w0;;4(VRcKz- z^b!qUF+N5ASGVNmBs0(TTa0aDGyw+`ZR4o7w*s8@!3_TuV^a_}|9$UIt0`xU6DO*t z!8j2uM~X&A==<4vl2RrNT{4X|IpDo)BW+Qb?>8*UK?9a-q&ebD^f@`;Zed#F2!-SA zzdvB1rASAE>e>z56>;ZEN6YKJbV}7IHL@Ygl{bpZ!+C<~*hO1#+ z!riGHs!tRhCstesQYTuTRk)#MIRh+25Lb_!eXt4p&NAvmmuVBp*3GtZ`71cHnYgg zhqWXMSIPsMURXEH*e^-+ z<@dZQnkm^*AvuC(JiH2c*-EDg*+|`0e>H-yuULd}c{0rH0Zd2mWq8In&Z=>bi$42V zevQ%iN5%Xm``Jc+mD|BBdd=M_d9P>gonJz=#r#Nu4I(ZL-Czu zmE@KVt%Z0jtFcp!GxP%O&&nQS_z_@R4fKpqwq;3lDIhBNVZ|ggeV!!bv;ls+zWHl; zJM@*Bc&MTH@j28$4TQ)`FKzmwtJJnDJbCtJ&^UZ3no8pp<$H4K?ADSD#Vh{uB8?jL z(L|%qSd*fUMxWgHrMj(NUg9ON4<+BdTvP!n^#9A?HEo#TPoa_0kEPs!my+_swAia9hd05w3|Enu zC}IMb3EP{y2__l}64N|9oTZun9g%UrNgHxgA(n%-3~RR1{!Orz8R)OdhoyxcWs$qx z+IMs|eoF7N33RvG`nb19J`O$p9_b!fVvDw#B(FM<|{M_Sx~G zv^$o5qt@u+<;c|^uJtdc+|SSDOh2HmyYy!F$0u$%3q(TUuh<_PuN`=2U#ojOae&5p zuo=|6b&p3RWK@lh@j(#PtDgnR^lqA%4_32Lc6Im?UXKu6!Y?L=Grv*r@YflGccO$# z!}ykTRd?fGqy0%-La zoklb_9r82%?8kB&TtNZ+H~=?1WJ3r?%p;YiMF`XV*#P zz5GymcpTOnef=9_7I~6>=XV2gl-QX*pAi^y5zY(WT2fo=tx2pd65!`o3*hL0|2|=f zyLdb}2Q`?0vy<&JItiSWQzoBz$Omxp!NqP@S3It-xGuo4&^)3Ud;G7Lll3+@+8^KG zvSE~5{VTRy7>FA0|GQLA zP0=h!MhFT71JgF5qPUCb?`84v8|V!BBf@CW5ldK2%Z=YSM&QaL%an6WMgBe|{;tC|yxPX0;UTcl-`gSHY(ZPmT7ou4jeDWGo`<-f24D4P-`xMHQO>&Fs(S;Hwc* z+qoi{jS?|bx1PI9=Rfr_gF{2*AM?e;n1KP%qUTbTeij_|tZ{k=G%}f^F-cP$wW)fq znwP8edFZM`p6>%ZH6%?Nz2hK(lQpXcJ}ahvpAj@>fVf_n@>hEPkSFf|Kv^o`x1%BM zcU~>g0Q6Ron=L@flfVb8GFu?of;jp1otV5Htb>2RfJ(w&b0U+ABk18gv6T)MXZ7!g)zlnW$1-wccPq)Vm#;wlt zcM&e0F#D-&t+DIcuJcqN5^4UiK;p+1;#j=5joFV+<=(H*%OPB!GfO~m+QZWFdFc~% z$W}Po?XUOGz)gnoO0DUB)2!5@5J%Ac>8EagkA1XSkjdtG&x08qw{JIR?cvEUpEwi4 zoAWLv;P)M3IU|ZvvMhKVFO+xAT-v2EtM4spfR^s&?oVoS{KiWPNiYs|E7W2hYI~nP zmx~-W`%Tq${$n@n3+;Ki8l(ACZNL{j_DspcJVQFO3wVhV$Ec@wHGqF0J`IwI5`}~) z7c}N;(wp~{xKv_$wfO+gVDTObd3ro7yzAiG%17{2sO4y;>F_#y>&&jO0ucAoVXx1V z?H;@P$CVVFKIr25wI&l9xgu`9H`-o<_E?1(ncVlkg#AMSWVJGYP0)tyg&`o7$&J1B zoSbeu5(xcMZ@EySfVJ->Ja`oXyu|3&v-PgFZopB;=KAc7GO2&UF5^LFPGr(kU|CG(xp#yyp1E{sjJfe(t6QG_2OYEl6J<;TPEM%&49_1xu&2h}U?l?oq%qI!AGKOMtC!MQHlO>g0 z8cO}?r#D;mZmIW17LU1^;ukWuwvEs#o!;6;Y#J%-llkdR<}<^MPqn{7C14>W3Cvjp z&+>;*4mceHD@pz?4r~M@>=Ev*QZWAJL}kVTA57-XC2MG+Eah&)&1KYGYuqT~;I8vZfZr1mTmidCbF0)=!U2>_o)NS@?oL zsej~d=I67a?88h5>T08Zw`NBd<6(6A_bEkc_*btzVfJec!aSpt@k|5Cv{`iSKWF(z zAh#(mv0xRWeNg5Y*CgZHX)X21dbSEtn|cx+b?Vw%FzYq-j3Jk@**Qe0@c&XnXlR#njIa$g`WBE9tZyv(b2Yaew|9HTY&7({A3sWsh zVL<4rd7PcqSN2Lqra`^QZZb`35t7J%|8(-|!r;wUR8@O=a^LC7o$K4#6^6wdiHE zi4bFBW3kp4K$;em@8120z#{>^Dy=rZvSsXMvVYvMQdZPY>pBM*oh(sc#?!HBYI250 zAhv5Af2BuJn5Vyfw7*hez*Uwkcjsp3S21dFEl)_*_ZM-WlcwsrpzF8n1b8R9?W!Z6 zEJ|b(y|&eehyXA{Y6DFOV^?t$x>}Sv!fQM+hmOT(Vxkv!G7(pkh#ex->2Cr`twBTx z7?_M+d}uTbM0&@u+>_gpnKY4$_G)93LI0vj%rq%zr7O1L2HA2&SM04^b-rs3*mWrF z36HBthan^RFoYKo*GN9QN#K-+PE)!u2e) zHx+j=BG%31YeGX+Q%+Yqzc7V`dd<*rX0|0X&?Ztabw8eV#xgI+&h+CYS7rrXHz?_c zC;)^=7uajLXx(zwf*#)$37#*X^`w9H{iP>PF<`Q^lkKS2Z#|hzF~*!sIeB**b7zPl z71#UIV=|RJ(SV)L-E5^5PpjQeJ0YaWVVauG(ZU!2STF!ebJVozLk4KeQ^cENCPX}nPjzvZpG7RmD>z+nqPR*$CG$8a^emv z3;udCMZtk=T6)+#*jsGUE{Ndo!rM;*;S~{au|iSjl`j)Dx_vNv{UQ&14I)>a&oD zAlVu^5m8`Dg3$hq|^s{Zw$Kka{w{&4ane_7xtfjKoulcY6dE&q&=-jtw82YL9F zKYuQPNK0QXRmDmnN7Cx~_Zz;FN{KQn*C#PG$s$iAI04g?o-|hcGy^%W+vAX$lIldbkRO}No$t>S zuy0==is3RVNf|trY>yYUj|=NCHJ`3J%bGhkqgD&B7Jo5ul#07i$F<{BtLWRH2i?#H z*-cM+&)zrnXBN* zxhnR49`jQ-Y-ie6j04Q*^x!pIAh)SuRZM*Ly*FxS-!ka8DahNPqc$b* zVkTzzOx3Bn&}l^(A#q*cj{V*b)ub8Hx^!T`nxV<0%8i{xE_nC@758u6D9`v7HpY7(E{p&r$>3 zE7cEPir=4ho-KZ~HU@T#`-Z5Hi52Q{`|PI>>87^*NT2w|+Q-8`_fV)XPEwl^0gSC7 zo=Cu)P4exE=}fO;*{nVL$p%y@2;5TH$5{Hw3vh|A`ccjXZ7XXr&tSLED1_fp3>f4% z;r@G-#t~yokZf7y^uq1m-(^EGU@1{LkzQIuoqBEw>b}wO1r?ARJi&Kby`NibPew`> zqa}S`ny>4jVoy!>Tn{+^Co~2~bb3%`m3xIyCj;s2#nX!EIPnZAguEhaZ`vv(lNYO@ zp~}l>RM$z{6jB&M~{WA93-5l49}b$A?vM!9t(0V zbe-E;*|+&mI-HyndGRPzQWhy%tCI2vT^pYy4aV`!O86XsMfwK#%T&mIJl}k|XmeCxP6sGEdhC;DJwZ}|eV-9?OmH$a}+(PN~Yun78 z2IX(JCvzsy^CEX?GG_7~m?Q)g{ZP@VyyJjPNkxF6Y2dL(m^cAjll*Atp8p7+SA5X} zaaWS8d+9&9?6p5;?%eP3nqxDgnVtTwsStM!SiEa(Z$++zHL+}-TvMTFH16pt9%@l(Nh=xyh6Pglli2$^U;RgL>5=g!mcMu*p?%6^?$2Lj|9tajb|8DZt;p=B! zbK?!0!Gd*YlP4gK@#2vXBi3X0R_>!8N!xCVDevP&@5=r9DDu(*3BTwK94WBCZ4+2} z3msxcOY}c`Oz(Nv5UUWm4yi~aaB$i>PJaBnyR#E^USP1h^o?rC?L#1PEN9}Hy2?#+ zr9VE%wMl6pBKea}VOdUSGA`JiT5HeT^2Po01&SV%r(ZwkP|eCT3>R4 ztM$K>vju&?fapQ%-4%gNC2L9w%SLo zLhyR4TU{;BTEKXo7j63_j3?jH$6UR(tGku{)J-*$x8#gBoy#1XEAb4(n|{>fRNS~) z3u~D zM*+q0bow|P+al{y{*c{!ooe^}+xN?m0(Nhu@jOVNW4W3Pq)ZA>+}g|Ip=6jH;`4dI z1AF?ya+KkuPHDpT1^F_2n?~b)HlrX;uZYgsIdhKwF^U7eReO; zvMXq86OWo*H%5RR&>r?UzV3~Pw?7%jT z4P5nCE^A+7pN-^N7561eq;i;*K3io23V>G_A-twHISv#dGVKD~&r@`u?(AIVRC9H& z0O8mFX7YAII{$DKmM(vut#`?;H3J8iX?b+GcigT$GFFFw6( zdrs>E_5#G`Y;bAWFwSafQikwS-UO&c+iy%kmU3I``+WHJfyPSr4Bf$s{#4#M==1m3 zZFL^7PH|!VUFmDt0?wscfer*Bee(ChLddfO;GG(BP3f5=lG8fDeVyH5T zDeRz{NH67$ExqYS2FgADtrLBFfQX63H*q!s0M2y#<@^j}Wh2=3gLHsE6F2u64+^nI z<+x`Ltfj2ad4_lu9w^A)1?KA1=Tc738WzM)w%r&p_vm!!pefnEvnr?rZ<$OQNtt~) zP>s7{K*@U9S;+b0iLdVg`(<|b9e7h!W=ntaao$CqGL01m-sV4KTZC~V$9NAn-hIH5TDg32n^Sm~Uatua+K1j6q5qEWPN3ZPN3=hFP&y2GzGQt+d z`!Sr5X8cK^rIv9=^60Oj38*nhE;=4?q)_Ig@S%EIA^vj`9sX=eQ257k+zYN^zHvBRVzqRvTuV8P&N zv(Qd#%)Qf|L|m=0B&YoOLhhCPXJeC9=kT`_abD(oBtL(>)-a}6yN{Zkrdu%c`gAh< zh~BwbXd}M=^xnO2KwUsDZ8bqc-Buru@SPt&%`vIl@;t_HE_FUBpF6qx!Py|TfQ)Ye zf-!6s7WsS%9!<2dGYj!exI0dK{6pG1Chqd37a{Hvz2C4c9ZgHU6o!Ng)Jeri!tTF9 z&@c8^n#bnxl^*|mz0#)o?j@A1JAu=V`&;8M4dH*4-$Awb_X;2`Rv`dJ49(08nMwYt zR>T9g`3;<^vH>{`$zvp}4qZbBUiXCSwn-74nvlydID4<^`TlcrT{41Rx*ZYI=2M zDe2a1(m>Gty9BO{V0=h$4~NgGu&kw1zidB!I!Rqve>+}QXHhog#)H;feXfXa{=;Mi z4Yf(=cXZ~ezLKWGLg+GZrNjG>^XZ|Nhm>7iulM1PJ14C2r0Bb^5PGWMhRDaA)REF{ zIn3IXF6VEY=8N2b3U3X$5Nt9c{Ef#)hTh4j5{RBXhHr*x|6gL%YcZ9W!m3(55P4n5 z@elJl9Y{F8&{4@WwS)Rsf?1!9&YD2KZ-srd`^@iw&TZ49XK1{#n=Yp2@DEZaA_Zw; zu{w9)1$vJUC-QIQW%(q@`2yLf+~ij&is&wj43*Wbuk;PmGvR>C@f^3Vs#vVge{RuM z4VVwu{c{KG*;)+gPs1AfBPdp}lOth+5Eu6IKOUHF42r7?f$Kr% z-+^WiKkRt}fk3N!rD3Yk^v+W;VLea&0@a#6O3(>KIz>}Uk+YcZFQIyoN3B~Iiiz%d zexu*e<#imiEU&#TcL}Ahmr)I3l}42z=GeNlzP=U~R)wY=fa9n;EV}1YZ#E<_Ugbx% z;?FM8^WX{EoE-8d&62wn%Z2mCubn(bcHx(WYZ$b9lXMAV#4;y*5&0Cwc$dvKtIQ5& zeH6b)@>}NwzfF4UMt3@~@i|Q@K)Cq`hluEQO}fPElWa13YdD3LB@kGvWrm~_apbHa z{d$?BoN{*0z41pyk+|UAIh_(O)GZ}Yl@%HRX&dG&z|jae0G zQ%MFHXdS@Zo4EXrledi`f7#KHH@@||J6>)SX)W_jUhHvP!F)ctK){IVN)ZF`mp{sQ z=U?QkE=~ERB@a|z-xJkX*&J>W-X#YPneITkXMtls1Ha;Va7;8vnND#O1G-&(#=gY# z6X9~jGcM(&`doNp$~IcdKF6^nW|4S_6w`qY!P)1QKg25Z|4mSgzq+E`C~&wYnqZ_- zm6J_QAYG69_ki0?J6WC=O3XegZb$=~w$QhND2bK_!$#j>v5 z`QV?G@4`zsvK16}yAx>6NZ!U=ErVBI~8N zyqEA<@jDDASUS-j0Nue+oh%f(@E*Yk=m^<*r0flGw7n9MqAk7s2O+X~QPJwHNd{6e zhGKU3F=-$4L`qz+Yvsp>ykxc{l$~w+(T*D8@vdsd$fBu5{)Q485s>-TcrNr3G^+N$ zAS3L8o!kk$tC(+2|GAsQV@p%PpG-~|7<{tQtoyC5)=1lT2WmCG+Oeh(!W3Z=P#=(2 zLrqQ1gdeG1hO@fPKerFL>WZHV@`00PMi`&<{#tp{Wpz3)BP zVq~M+nn-Y@kLm-VwF$>E)76QZHm1&mszi@k8Zl!a~t4fZ6Yo-i`pWaKxVn zg<{%d;3Osy(1@^&?E(Cwu8S0-FP~qcHe~F2)hropss2+@wi}6(s&2YgZ&#ldFZGUI zy8NDcf2BZS{;Ej*Ff^|}TdQa|O&I)EUpMfYCuxM5@?+U)acbkr9Ft#ij4pA0Jjv31uA<16PAh5R z>#0YZ0(0J#D2Cq~2vHqwoNHH2Gb~;Tfx`FBP(>W>6A~F+K8QgzM19qF-p+ z@1gymthS5`<0Km1K0+CRHiu~waF{AK`41NpIVgvkxGq%Fp7^VEP}uOApiy0#0`aN8 zJJ+thdLvW15s%eJ3cxNE8E9eMU23Zo{v{)5vQTn5(Q(!coZsz!h=}7YB0*h6HEMgA zUnf8*EcHwR?jvq>b1HG5c(KtqOKD>tvi{u6H%bDW%zT{>6+Zunji2=g&b4dmhi@HF z#G~y8n6Q?(Z;&#N>2v!nU=K7juxS48PE8YyE=*MR#S0Kw4v35_?7gHyLP4|~H3Re653!DQfvgc3%ActWu;$sZ6DTO5>t(MFz*pt4qpU1 z>a6KCS6j1Jbgfk|u0J2+nr!eF{=^WvrCrAn$hKaAac6(NQl_TV;l<*EW$uV*_;#Vz z(T`CUuY;c1b++L~+|>5@fv`pM1?`H$fXs?Q1nVE6X;J>>cp}Tufr{Q)7y|BPNWcra zx&Oiy_5TZu0Flkd{_mq4^uzo6_npsjVC~x3>(!sVxoI=v3z|=*I2lCkx79?+)N!B6 za@|i?7)p&U+|w7zZf_GOIh9)+b9LUULMECzz((~O9Oxx_uRzeO_)(w3ANlVp^ot8a z4M-d+p7c`$Y)6{jJmfaZv*PrE4+3(W}%d(SWLnIyyR9)CJA)%|jy$ zDeb?rsYDjUGnDL%oS3Y4qQd4%&}ydQyrVSwEc>yFrSbF~H$GNlzL;%!O{iyZsESE( z?t?ZRX2ee3UUYRZR}vA+eCfa3^6r;s z%vFYf+W}j2gU;BtH@1Qr59iCOq*9q*G)}pJ8X;m4HD>ZAEpMwNH5W|12NjFNHh)Y% zJCtdCW9H@*@!!fwKgEm)kFG_2@dR=v6p540O5xe#&MxgNXHN>arw}y0RXxGjPg*el z+-hlP*kxky)gtCqOOPu(G%{jQKC4!TtC1#%aS1)xkF{*HOCZL zrJP(`>HE!OBT1<%=9nSOZryKNgBmm$khs62ZE|#;ElXjmH&LMBNe1eR$iO}1(H2{v znwUhnQaa7I<7m=bRv4|w?oX$`NeX1(2L|9rvdVWw3>pgu{5g74RD@p5X#6+E*yB&E zvr%x4Kmr}4*0ZIl+=bfbs@RqD=A0>J=}G#xs$)TOP$s1Z7*YnV{N)}>e0quTdbkw+ z*}52{C*(n-1X3K(BF4;BZxD_8SGD$1%p|wM1f-;!_fIQ=kE*ip;B$PaP5aQ>s8ICa z?(;CgC^coop8IqCp^y)3*ngKe$hI|I(+}u~Z$@dQ_wOpmp2EKAB_$2eY4)>9IlNs@ z=v#^-KlUSmC4BXyzfY`*;HJ5iPp_51gqbgY(VGusUqRrhQ8J$X-^9ARQ z><<hX2X=A!ibRF6x=ENA;a zPp6CH@HV@qYgyluR9Y1R$fy7!1gK2MNqnNmnDa8&o2wBaT5c z{^qO#>m9#~e?^JRv66oUJ6*{4bDZfCPbd2CUCicySAG+H+!zn=!ImUTdmHE9gl;2Y zKsIj$8oar}I=Ncajg_+>?CB9Lw5IV%2K3u-*sP^=$cpreG=(Obfl z^pdDaPsLnqJo7i@b5QICV4jAV>E6T8POAn8EJnGr4*&tNiAJaBJz5!gIbur;M`l%)1A*;!Ms5;sm9WKDZw z1q{!Qx_G&ziEcM1CtXfq$#38bWqMuLX1GjM_i00l|Mb<!Dk^RTi|Mm2@~!=%DdC(Ett*W-uO9#)3UZiK8S zJVJxq7O^o~ZrohC_fg_1Gmr?opCl77li$v(=og!h*SGhx1+b2(EX96a0>r~$vo7wS zy-5N0@99M8DDPbq%no_K-8I%`wzZor1Vhx`c>&UJ5-TUYA2aOs%ccGV0`hhebxnw5 z=Sx*=4H4dX7H2jreXsx3xgBk>0pP zfVcCYD2cb5yk)@kp(VET9;uo+F)EBYtHG$Pn~1i8r6-z3GS&tkcvn-| zv#(HaY2j{^VS8!|6#hF9m}?6Bo)QxCCGLH*LQgI9ul}u&)9}igQDbl?=64C zg^ly%sGNA<`+p1GFHhsLzZ`r)3Egi;mMd_<>y~$jq|N%{@9JEN2Lfr5um1qeApR8h z@Sz(_0N9?@=wlFDI734P)f?uS-&hV6(faGa$pm0e82{gNVu=W^h(u7 z1~;3Z;9jG-5^NWwJ8aoQm?9nS_!HwE zzsR$Ctceo7IhxHQJ}Nkdbpgjy*p)O#zu`~9x4h<-G^~IXDQjj-Dol{j6D!&{*M!iW zw#6@|$PBdICQ7%G{9VYqI1!`YMZM0ig_<>v31iD}PUQMp$w5u(_VX7D-@^C11Z@Pc zO|@kIih1DY!Xks6rmISxxzDJvVrh}EX???e*c!Y&JiB7(J;BFiyGUh^RkaSsH}W<69$0|J3&xu8O(;w2#sdjg-dAFIEdjP!THC#$;e z_)E)BVIISqU!H!hrVV9;{J_3u2!8cht%ZFvMCMkt1VZ~U)&;D^fxM>Gma&Cy^pD?h zd0*|Y7obxx111d1n9%u}{QUo!K=owK-)={SHE?X1L-Z?S3;#S&Q)Ou>Mm=ZtBO`1| z`@W!7V~D#fuuCNw&|L9!r6OP3-K1x26VC|AqX8WE{#?2IlX*y1KoMpp?lpbdp z&SNEzC+a?&Btm)LhPbQ{&mk{*xtul2~?)vP6~&Hd=;5VdT* zigH1x+JZ~L7HUoLM0SWa18{SwaQ^u7sk&uQxJdn#{-_9v$`|C;Baq%ZY)>^CAYl$Gr=|#1hzzQ5}cb!N}8=Q zr*j$ds)+DDJ>F*eVs+UXehlNyM;CeFFx1x{_A={kST0Phs^CYt<{-u^LJx^IYAtUK zWV|`754JtUpoL5z(1Uc$Ix5<@zGfqiZCIU)VqP&(g{@L}#)Hoz;&pIYxNXsMBMWo2 zA}ZjufdwNVA}j?aItq$jyU7@$Lr$iLq)_P5tBm~Mqo&Vx7ME)%dp?r{@tc)IT(7jZ z*k_N&H2zjim&ogoiSb17ox3;$=fFD@)!R7cl6i zpk>dE#i1l;l-q0UZ95y-_U$7^(7uNk{KNEcx#C+`Ld${hTnN>(0$|E_u7Eau+(afR zR7na0y#5)P!4^lQtm-A@G1JUQqqJxI9l~P6FR5nUpTXB*mj;U4WWq<+R%5r>40Jxu zlDK9UpfU^{=bX`dQH0r4>OgSL6gM}4jh)%_HdO_i{8b(^5%P7LfqgLjm#DELMb?tCGQXtSbGg-Ujwav9I1mTEL;36BS`uNZHa%Y^{wq7Zb{_@$18ha~3#C64pKHyrr z9VwfJp|fX92|@1hnK2Ho)9~7EqA_`uPf<)ioXtWUxf_(-;fKEuV@3;-qynr6Xp_3M z5*22~!dgtuRz6yk*OgJ8>d)hQM#G(+}O~ry8KSFhllC?4H%o6Jg3v{;Hyio zQ(0!&%emC(kkb7~r1r1F?NH4btX_}I+HV+QG*j*ZAAI|pdsZasu@(NGn)c6Gj%&|- zU|8?ljp365CJ$_fL-x0FrQ5?Sw3ywV(y^4f1D6HQcRCVfc%0rehJTC0uQ0JFE9{Ef zq4f)Ucm8cMC)7&T8UzySUYZfRIiC-;*(X*?%Jn%9`?kvXBI3_8%>e|l`&5q#iSL2w z$x##+*o zX9&I5YpXMU9bYmG?Tbc-rad!4Lw^0P<2CaF?rHx#EEE{q?O<4XNP6Kp!odD{ltDSL z-Qdb1a6YANC>g1(NhXp;C?tlRuM@mG1KD$tpHUeIThl?vQ*{p)T;agh*SbCR?=P!q z+mIpHQ||e;ccq%`UnW$3a~qdAOn34l0k!f%Ds^k!vp9&$-AVg_3R2|{OHt-^-yCOB z_o3h9CE*1#1v z9-Yk0{c1)G@prj3Qw#E>M?WfJNojNR{M?JDAT^~-mE$CBV|Gp`b?gc*FOfL_SDU?? zecHr!?(+z9*?WKdn>mPi^=0uW9ESTHnT--$qr{ER612uTq3%bY`wA3(_ihajmdQsM zmTJ&+O|pa{cT`f#P(N#Q{=qh$&%^a+YmCXcB%gHukHfd0hkFngF6h}K1NHem!%wxr z{j&iESla7z5|5pO=R&TL=QDgtu_ck=x>s*@a`|W5cUNvKm`;!W3ObW)*V-UNG0tey z)OaH=ZplEj#*qKH1C2w2JHNe#@l$`^PPE@o$a7z%VR>4oV$_oQr&lc6gCea6+SNaQ zeIC~6{H^?wWdaMUPP3`8;83^kzwg8jY-KJv*Brf|!<5bG?D++qTjb7RA~6GRcPmB! zJd%hsTCZ_l-K+4D4_PdkWN~1Z_Tf0#T~H0-O zZt~K~!vP8~m}zrse4?9l5W;i7fJvcSRQ*<9wc7~xE5+tH4~L995%RFCgoVF@ZxAXe zV!NGRNWCC5NL?D{DX=VO-72Z(6u=$r^)Brk6G~fIjJ+hqj$*{)gh3~H#4$F@!07ZMc_-l3K&&&1yq_Vv{rfgS1 zS;w`o(gHHiUZvd8v_O2he<4u(WudIRqZcq{yyzQa^5Z{mPpvHJ`55d)HA%L|*~qQZkh zVC>Kc40YhY`$Gv(Y&lut{rnHoezD&nXZAj%N1*^ljznq9l~Gc57EbE3-?_`=?c#zT9A*1j@mu)Oi z0|kAahcKYq?RShu1PBzgo#xknT#aYi&Wi3cHzD;%h;kq023crO5<@X#yag&$ z8^mFTd3FYPw)#D$%>-UjWX5AsTFD8fmJ9xB2Kay(kyM~8(w0&*PcoWBEYJSia7_V? zQ#4dQ8^-yBEDhbN?bMU?*#0EK5`31B9w29A1oQY>V&#EhW>pqq#1j}Rr%dF-AFk?1 zYn%ybB6Mub$`=ii`^|)9i84&F6f1;FAjr9$N#Yu8fpVrV4*E8kmF%ZGUg-!HW3Dx9 z%FWawYwSoL{#|nY-EFmmrTSm(Gu`UJn?=P*Fg7nE365V;x^NhA@vp+xKYH2=*vb~= zDO%{%V3&Q`mXTHdarTX1psd+xVrwBL<}R8U>T!f(AxULXDO-5QDk#=iuPWPQ%B zAnYmY<-Gfz`1DAG!!w|o&ij>jfct6bIUSz?G}NlcI-U@DTY$2XpzW#+sQw+h6)54n}`zelLe)5p>B_Ea=?}ge&8hg+2bVG9e^SQaXqt5(EtVspt8(n4PO1SSq z(#c}G?twVfQX}4esnkBhX6izlCNa`B>oKSGZSrN-*$K04%G2$-HOKS*p0Ito6&sr- z^5mbwMww6h%@i=RgItFfYmg5oSshHBjR)z}`%?psVr+=UM0U-5nf6yk%fKSDpgfp> z8Mf3FL=5rmdVyS4rbXpWQm1O5fvEojb-aI>*Qa;e(jv-@_@fG1?lZ!2{fQRv_sqC^ zmfQzcc&`-{l%ovARgZ;dY2Go8gdBGaJ5Qu>T%sIvUrJKEbL0ILhi&Xd zSdjaK2}Jh#+DRN#~qW1V-}nkl9{Wv3pv+OM!Y7;z2dE)k5ytwY9pn&z_uTb(MU2m z3F~_{5u0TT?894c^E*oU{z@lM?P!a`VYJY0(@WFuzTipF3-GH8UUxqRoWN9zdP9QV zA7sPvApjC1aYNy{Imi#VGrcRi&&Q&BgZ|9AP@EfF{3~=I8%7>P{R7fOY4+WYJA;yw z!k#`I6i3dNKp~jys_xT`{seBC-<{etp3h-fnDs6bs!MWoKCSiVwp0B~&24|D=pr%w z=XY8ns-JAM*T9eMe!Ou;F43eeDmgy2;_psD*4Tldwxfr{$A&iH{%%((GHme?P^A0^({W=SC90&MK6b3J z!&8Vci75GHs#iQZ@nFBIf9Z68c$FRV3Br)bz>cEpD#F0g_~|}>ErR>X@M`})FnfXq zR31ziL|i4;8Z-*MZz^C&G&xz6KWjd83oVSF__Lrri4CBO_mSvi-@WQtmPGh+@1-E- zwO$+Mcs$jQ-6hAOKm`V`y|EXzqd{OT$t9>JErienQ)P1BLbcx0G-PfpGr1W52`JRUd zu6D!&&D^UWE$DqjbvOdj7e_xY*fkFGowoNhj$*6LJAEz(Z`UVJy94xOq4*NjDq1&g zsFY(TCQZ%P^qH+|M|{kiaxoGfxJ8La9d@LLjYaK;lBUabFB>P~MADf^g9T`wDwUUG=M5X{L!$`;6p zG6aT0yV~L@FCg!h;VcQgWjPdxBYiFbL>(9r8SCLWN~dr4tY)jqr~wY4yg+~KnOpE) zEAxYk{%5(hKxGhD5OG97a2mKHk!MoIjearwY<(y|M!fL389qUB%hzS)QO&wOI&HR{ zVU@&uDZ9J++v{A!`glP6$9}OK+|wbf>tj9wZ*}}Y&D{puQRQ{%kGsTaAI)Y3?WVwd zR=mvtMRXuCs`N}z4$>Zop!0sG!ym16w4;Ic)qc~z1U&{6s-Q*aTS7OP75x-B zBCZ)Zt{uk8qiACixMf!IfjQ~C=BgdOXH}}*r~)&VUS!ZjSANW7HqE{9KLq%h9|`JnjWWz8C|QG9g7K_6o^F;Ku>R?a zh%&$=El#WSX?9{QTf5*&`S@lqF8ykj_w?1w-2pc#d7UltxF7R&W(%~c*Nx31t>Iev zqP3E<4NQNDY)dp_qH!YL1%>XQtgedPE*{S3t>-Sks#zz4ENhpz@pKLX?F2aK4rWv) zw?=yXG5^JiR? z0(Q)yE7#?jx~o`^<}zpKOM?Z5@%Qr)CThS0|4CM zl&~{^T7vKWx+Xr>Pr`}Vyre||$_(rQI0;GaUvb*OZvDI~qnNedN;`M2H_kSWrg}@y zTR$Zc$`)ccriCU*yi#t-o^+VW{%;yu_&qloB72((OxLg=aUQ*)yClUNMD@s@pYv=v z`Ji8!iILzHnPU^o%8`BX_i4&~V~77U#JJIWDYrlRt5qsG%OB_)iWHQKyA^WGf zsnFd93RXTKS-G#kCs>?;3!yVP*5sWwI12m6=Db!GBHt(AVPHS&g{WG;gz96?PIqrFr^U~|0=YQW~)YeJw1)rCm{h&VR8j^z4^?b z3|&$6E!07TDbYh@OX1)2a$x4cVOBU5<)sUM`za93+CF`mRm}l2OVOAUteIaJY7;B3 zWy4bsTnx5aYXx_`fkF%4pg)i@3_O~UfkZag@c6~TN@o4d1SPUBEIaH3K*H~Luyz_%*xHh)RGyO)4iwX9(}hy!-YuoEz5bMswZga*o%f3thV{!H9*>G_Rn64QD}pcbxb@zXqc-RWnB+apS{R{_n$|dg7eoH_GU;+7E{!Mi`!mcRksl&@-7K8c@i`V z!7vV-dFE(S!E2)M*-e_4PDz|UnV1H4EsPe0oCLm7N=IBq7_7w;_1(W-`Tf444c3pbLgoEr{0-=g}C>Ak4DuI>nFj;43a~){0RQAUjQpb^#Ro^l7V+PBOVQK ze86r}k$f4q)9+40zVS>*?@a3j@mMdey`E4!#XStpzAbR}XL6g^L1c6V1v_N^lNWmN zXz-uVDJqJ($_iedClp=3`^hMCI9*o%tF)aw`Y98%7f-u5aY5mL*TqWo42wMfe- zl8@?ZJaD0kZC4o{AU2zo>&igIAy)Z@H5#S^{%-9glELJ(JMa#$R2D$1 z7;P6TEyLx-B9iiM9iuE*ng)c9l^4^OtK03<*e897vc9X1s8j8r5Kj7v=NLxIZLR`q ze`<`s$+Z5`X@2wSKQ2X)WCtBEhjJ>foiMQ`l^#b1$pcD6Zmm*kIw-?_ly#C(KH$Qj+Am4vkEhuFRN8eEcZf*4d(mTnWCcrOCXl^$07o8FdMUmH9ir|F75 zg->EqPewhSuWWyfC)-#;OQEIGpXlhSMfyTdxzGId0U1f!rYi14cwSRB6AQQ|xB|*l z(E#Oq8xe}0!L~D=w&Avk9Y**<6+6nviOW--OI|Is@%nv&WG>GWO3$mW-@g~b=y~C& zUEggtN3z&pOxt}apraHlnL#fU>OysqX%80cww5XE!P9yb8IWp0YC^k0#KdWe^ z1SeiW=O>OaqG8PoR8%?rr_piFlbJnU>#gfm-*p=&d^iR+;h4Umd6_FbQVu-9i%c-@ z^IhmrS__3XQ-Sa;;HXF;HX(=UG=Y*)6a^OJsJJTd{>x6o=+PuiH17UzL2SAOas7YB z5D+(XZ1WQ%8Er4B(T0QVHajc8ijea-c;GE z@(FSu?hUuP#=iV6PgM0iIfDZOs|&+AfF10bpHls+dJOg8#S(q62j`fdUrm)F38^@> zBqLVmUmw?8yAkyNrGWB&4V8ho2;WusZv5C6TjfQm79w_LvQ6(34XB%13i_53!gphPv@P@7u=J>Is{6XPOfGPUwRm&zf&K4uLg$Fhd_~1;D)!VK-gLr!hb=0W<&=G|hmi-=F}dU>eLY50OFA(Av`u!6c;?#;lE%Ec^1_@Fdx zz_AmRg6Y=vf=^!MN4r-h=AG~H&1cRq0~!9jUaO!?gw|jLC68B7)ORTfGuP)8R6>pu z-!=j`bB=y}iR(LhESrCoUTR$unZ@k3RO@VPGWh*+tJAG_(5&+{A+0DF1s`aB>H3rM z3d4Yj9uctpNm|hF+{&Mf9QxOyFCbqYX`E%Lkt4-*R`T@&$`A2({vGxGu>p9w(kdn{ zAyp7cyyAH^9Ze=|@o06pj#`ObqIU7JvI5UyyGI&5wy}04_M~nWZQrDOQ~Zv)Ej<5l zGB>(|N}$mO^ie=L4LWYbIZT?OJL;X0^Ktdj;)Ss(yyl$~YEZe;Kkf3h{nVET-Qy`A7~R~cu%e1M6@s8&85@uWNzT9y3IZ5EeYD|XNv+)UX?#(ATMy33`|6CxGha-8}hLRA5L95QwZ!!{@1DSGyvCju@wt z;0-mr`xv=1{=>a4-9#0NX19+-fnlu8{ggl49P!M`Giol9OFt%2BSc=&m3yAIUe{k) z(%eo#EK(z@%#n*CH&@=*y_6^!9u-eQW!q28hl5+o&}4zu72Hj_m-_|-7~Ji0azDir zj-%<2Y7vMa{Mhi4zn1?kBmOJ2GUA1O5C4uYib+bPbq5Cq=4BJ%ymugFDF6cQlG7CM zkMu-OGW=GPrjqRMVy0HlV*m++9&A)%me4t@zqirTysZEsF$&4fcR^{WL(c&Wm&0*; z>9XAgX@abp%x%rT=I@jN!=i0ptwd1r!km$>kJGHBGBpaWLs4(JS6&7yg$f{63QyV0 zu!W%f$mIP#qlXtx_p=#_V&ogFy<%ZjV#FzFfQV&3CiaF=D{Zs|VJc!ALGa6D^aBPE zNT8|EN)^5562@<49=?+%`v0hU%c!c}sO?v}yGuZ7(;!GlY(h$jE!~ZDN#~}KMkJ*h zr8{NQ2r3~;cb9at(Ae`(n@ zr)m|CG~fqWmlg}Dvm)`Ce|2ZFA9FcStI%jMn1E`pBFVAj%|HGAfV7IXi1PgIqgk4@ zYBfr1sLl7FHd-LHe&4efeaP++qnBtvyt!LI&Rl7$gKVgo#c1xnYJcIX*H+|{cY~)= zE1nlTAc=GKBlCqYXx}={A4}>8HUa)8E|n={#7nwKbPnV7VnP2|3Q^>$c$Tc(BHXf( zcM`T)sa<~bhvbEyhR76OEtOjbGLSA@ZWu_idasfpWy|R+ycWMQ>20Fe&fQGMi#tXD zU7kl|lxe;s}u zNdVW{A1XWnzxzqM!c-$)VHGa7!QlsQlEulKecpY0{BiYL(2voEhAJ$p(qSmeGHeQq zuvW$!&IHGUiDG6@@tS5>A`-%}lmM!FtEOTr4@+Hq)1wU~C6~8-Qx=lpZ^Wj4&P&&? zy4BkMC?A%P(EGmz@7aRGno*TCumyY%M| zK^qh(zoH_43jBB=V8x{NMbBNm(PevAZV88cl9cnlE<3z(qhNo%AMu2HoFy1p9t{VnP`;zf*0l_$AtLp8-)_Jg>BSMGOjZi=z5NjjM6slvI~_ zqF6)9nSkoLKH9!9ao5?9ox?SbY2fqwH)A$KU&C#x;vl1#rB=<7Sb1>)gqf$lZkXaR zjvAMbi_@4MJh? zhXmtI$ibT(9m|V>6wuRRuLAv-=6Ajbds2U6zPFvaj|GbYDB(6`$r`q@7iNAr-tXYd zs!%~x&>U1Ld!SH-CZLAV3p33p2VTbYyy<-{;Hj}&njhysn$>0?ap;)0 z{XGX`a$(w|+t7^QJx{i_Jrb^_bv2na=Xd@}_UzMt7BV}PC!6b7pm*uc99X?uw-Kida6 z0CxJ*a#{EY3b!AG5n3MsYyq>{s~57i_fw_Q$olQ-tgB@~*l&)2Fr2AJtq$Ugo5DR{ zWlh%(R~V3*aW?1=oPB6AWP*HG$X-)Q)^Co!)oqkxUZRFlFswtHR^zHaKEYi-YQ3Mf zFop=p2~aWULTJB|YjG97R_yX05J`|~Xhn-fIMcz!%SrazUu9C^*I*lMwjh#M2NXbs=zU z8m&tfQ2P~E@=#%2R8`(X;KZEMdGW7+edz6qAKQqE+C4L$Rkmg~J5u?)PCBS}B`(*x4zwrez}F= z!NH9{2Z>F{pDYa2)2N6NLesFMSJHX08On?D&mxocqp`5e)UKKPvbpi*V37?)APg+_ zmGSB4v3jB#Q36N%`i_$R8REd|=2zz*ryh>fA5heK9m@_;j|~oI1AYwZ)(A7)E*aBP zt9zxHnz;`cD@OvTbZsmXPynXi-PeOJsY;t#hOL`6TENT5$hyHUer?O*h zCfBBcFvGjwT zjyuv&4_s?C)3gv&o*U(okcWu(Gde!v)u2BRWF%QXO%#BUT!|_<-}JhT;rzu;My|a zc)e7avwrw4Q1W@!dxAglGwysa8~S35O*;Z}$fih&93THnN0HDc0jocMF%PFF?~w?c zb*Yewwxeh;Hd?Th-{G@dG8hYm>ED_MfUDH-y{L8gm%|!CVek5vqU?5Clhu0H&qEkW8T~dzLL?kJjft zfIo&s+Q+TyPK0yB>;+lmW_5k}1<_otuso|^upn}xDo5Z+%ZBZZ;dc3rAh!%{VuwHt zj_>h2HwI2G8v)c5*H18Cx9BG=xzffKloVZ&q~FkOvBd}@D#!{_>~Sj7P}JwYjB8c@ zZ4O_+q7B)scj;O{)9VN4M-uw>xJXh`5}UP@9t%8ZCgeM_s@tnabom^1NxL0P`lG#Y z0$#za)R!G7zQ>U~>2kBmtJ$rYZ(2^cl}OBUJeT@68Dl}fbY9+%|g%*KC#Kp zk$gEg4hcOvjaG==&Y_+*3-hwXLe#st8nZ~23qO`s96pfH9-j{5=*@ljcwA4&Op?MXGRG1m&l5j$rBn17xwCFW$9Ua`2{ z>XNe)%PaK47Bt#`ZHP7O4Z?JTA&8Bz9z3|j_n>w|mE5KsLX=Xv5NQq-vZ|NTjQH^z zgXL(x*8m5dm8cFO%SUwhY~nQwN>330B`VTJKJ!47N=epLC$hbzscZU>!UQ!o)=;dW zu1@u5e%)Bm(7Vw^Nll*_hN9-nu0Lmzr5D#U(+N0mpELS_3O_mpgi^iEK0_wO;>3=p z`Z~H#skyaZ*}x#egFe0z*7BGaYtKP1oaQPb20AK4w#p6Ji@<{MRDzuOFTEoeD)+QD zpvhbtm#ZU5x$Gu4E_fpyJk~!wlJsdD9$dUf^ou3Vrj*~GeHvKvri3|+ynza)e9WD+ zMF4#-EsaRX#vBKbeP6^PWGV5xbdZ`13{u=!T*MQJ_-o;3z{9u2p zCU0fN$H$$X887ZXo0vE@$l^KImaHFKeD@~yxC|VvPU-7GyYCh=_5-yTkMx*llsIXn z9-Un17c{A>!Ed_xx0E1&H37bfd-ALP=2!Ts?NR?lVJ4gA&sK8La-zq5+nim}hSqZU z?HcRxkRTe3>e9x5T_R-to6nKh7)iSprSWeAY1WxaX{;b`Nu6SAEc7X2Pev!JTPeRK z7P~M2^-{qt;_4C~7c8ai2#5Nsf?e*ql(VPg2 zT&qAq$$4H;G!vF!p`792FpAgEKxqF6^O*YAM}8?5dN_`?!DA3A2!IYkAWsU?hWag} z`k2clorfH!wj*#ge+GK**gn<``$sE3T>UHUE;M-NrWlTn)xuDQ+9IOg7r1oPag=}i z3vJ|cj3Hr%$tP+`kMlBNkblA$###cb)A7(r7(Rbq$-ww!~SeD+OU? zkE}Z3FzVh&@?4K|ae;!&AJQGsO;>a1npVc^5C?Sv3ip!K9?6l<;h}T}@>U&KQO&V54nA)Sj1_nj$4-M6;1k=?_kN-gvU5o|oH)kGp~ zve%z6Jo=UGG-m7z`c3~4NW9AACJsK&yzp+XTiI3`3TklVv^E#INicrBGnNlRHVT#V zDbkoi_!1+OVu?ExRl5GtV-rw~xECdGbp@2_4Q`L=SSji8o6DnRIkis@Q>16TaFPqa z!y5JhPKNLZYnF6-t^QMFW2p-JvuEh?$FYuipP^*i`EIo}SV};FsW#W3qV#s9?m#k0 z;NC*)Hl8|BS_jC5k7_QRpRQEWM2rmriFDGO#u7rSgDgB8!h7G~qjHO;)gvLVu!g_k z?bmxxWjeZAejm6|_5Fb|H92r{m6)BRu?SY9m%UH#>T|l?OfbBBsD8t2EP<5_wt@Un zF4UDrqj|R|5K5j4-SD@s*h%yRngQ7(;I+26jTKM<`z`RwXV;uH)22|hVv!wG*%?=` zcBC9X;@jEv4P6aX^HaskP(kH8-IEuti@IjK?=5`{&$f2JH1ecc_ZA}LNX*@t9jhZT z*S|mz)(NGc&%+~rd=z~B|LRI%|K}o=$APuK6pW7Ea)B|DBJY_wq;7Sc9iqc=Q?x+j z`c(q(z!Z6i(^{x8l5ip#S}dY^ruf|he;n5+nydD5k+DBM{ghJy)0am}zz!`5SQpv% zQ4P1(NQ@JWq6@P9GIVmUx@n#4RL$LAh}F3yE9%ZR6^@Uu^9Bfewvu1=-N4wP-rsF0uL%jg9CzcVrEgw@{&Tc$i-%s81V+UlRDT(eKh&H1g?{D7@a3k&sm`XjaF{)T~R~?f)v;B zv*Vd7zTd$f0@pVqnMuYtvyXr3-B5*)K*3YFF_s(&tCE&Tl8^^o==R504iP@F%m|vm ztNn0Gn1dP%1YkCv%gBq%H0h+6P zxXU&Jjb#NPVs3`xEg+w6Jfi60a8pQmIA&{1*enJ^W^|7>@y^8DmqF0}i^!|BM5e`h zE1bup6^pFj6K?+amUI%IJ0u6wO3qQcOYS>gxC&n}#%B(!FL_tC`X5+-xrLbF=H>oK z<47R2%xYxWf5NLu^~9_99{cJbs&_6OfT?|1qJJo74rAH}f}G#p!H_rA$HSNYnCWyu zHz$7^Igvm}ca#Y~ZnuQ(s}Z%!hC%pHX=P3~7G1jdE?cTGu=SrgoU& zp?U{u;X#6+KS(T?z^gNtE~>JFm)uKp%VK>j!m`nUBh;0yLX{6l6&5K~g0Y21OiIT>~l0%@1z z^P~Uc&SLf9Q{TN}mNrp=!;@Qij0|KRDssaq{-n;BWnaREAPO62aClOb$bUkDFJA~r zSf$Ca%`+5#4}^Z}vC3iD`hsridUu_;6U`9eSIjuo91~jD>u#9hdX&M>=OrV}Q4g1b zA96gq37@_+)ExLa=yQ(Av9kzET53MXj`fC)SRVh~Kqegx`*6Z`f1F206L;n9AD~cL zF^Apw6y*&Hb#AS7`w4=^EalP43p8p;CjmgNPub*31L&piols4PtX$5T6@TkfFS|Tr zQOpY%6LgoW4LPeEoOQ%wpnq%fspvxq$1fm2FoI=!$47%+%9n35P^e8Q)nzby3X6Ia z%4YiedVfJDV_-NTmiH)awAprIpv3JN{Jlryu)Qj;p_&I`Cs3Q-+lpfXrRKpp+vVe2 z6PwFnGFwyi=An`7rzA*Q(%hTGz8T{_<#MeXi8a85;);fuL3^(J(75IP{EZ^lY!|?} zn`tx`$^8A1O@$9_Gi9RVBV(n;J6a9lJdvjuRMURe$qVPVve0X*cX%OjQ(%jyYZ03* z!J9PytF#05{mVDuz)pmA$wutW4UeB{!ScZ*&BlFs49Ty`zG0Q{Z=_M`IWLv0OKr-D zB0>ReNry$i3FwSou9r^T^}JwSJhzadynJq2^4h}VlV8W1&v|g8c^BMdbw*0tq_C+I-<0N`%Yw+$KCaX+QD6M`N90 zqg~$dm9PzGD*y2O+FVek0rj3>xgaqr_x*124%EQNkNWIKI{(&C(R@np=T%NAl*E87 zZKm&T;SPA!`gtv_Iu*ljEIT7DFV9~qGlVfevx%7+Fxr(asp;8@=+IBz{Y;f#gu(HB zt!3+da9#IK%;>K&t_gFt$|y0d5UVF#dSCS$<)SmOyicDy-|%(r?3zF*TAA)@job7M zcq|kGit*ZM83F2b!E?7`30$9Ffv=PX80N1-?2`_k?+!Lzu$W3OT*qdj*Y_)gDX5B> zeYNE#O8oVt@34}Y2o_V+&bAIMKydahN;1--HUcq`<({B$qmo@4ov+)L+;j-Sc}O|QcN>Zabs=sWx#6AvSO zewlz6VH9NP|M%+1dkYpo5ka=*9ocnSg*QAsjx`Ln(yw{AVzoU^!|geS+|KduBQxm)6k`hwEB z{J)-b*j1xr(er^$I;imD|I+7Li_Kz>WC8B>ak;69p(2SGfBfOU0wT14_THQqBztR!KY@xY}Yuh;VMdti^cpWfwa$O4ED)OdtpkGmhZSxS`S{x zJisS^)TZ*7Z)K!-x9!;F9|#097Z=UrVnsI!G#?eVDhLaMepWHuox@d3@n*V_<&;nz ziq`!5$-tZY(tJJJEA_`f*+M7{dZ@0gXo1GcIXo=7PCT6W@HP1#t7k@6ojY{UHw^si z=?yqfzpR&+eAExApb|kYE^?@&f&(t-(#lFLehO+Y|6gUwqfWu@;Bwf9Xh7xY>Z`{@&ubloFhKWIl;wWhn z-)GK4o27_k2eB{ZkY1-%4Knq=*;wSj&ZJ~1u^aPWZI#R%(&VNZO!dr>gW7ScOu65$ z=_;`<|0#LN51GZo{i-Lab(S&(XysUrbEZK_$B|gkQonF@tzKSEUMUny%4k03g#>9I3lEFlVM%v=!Xv^9C%N%Rw^M`Xo@gXuuDs$UpKz{9MbPliFFj96=O2q_dV^crRd2X*A zDzkL2vV*bJ^GczA$m~LQ1TB3cRt}jW->^c|@NO*XmU{%W9?Xrm;Vaca=QLMWYsEOL zxdTrLSFm4sAZiF5E06CfTleAtkzP>uulu*%BG?@8(y4}!@8$Zgs+FKE6C-e2xy zF@0cri|5unA}=qW^~M(=JT>z)^!4o8(4C+MTu}ePV*Jj1^bvpM3%^%HGcO66)eg6v z?clG^?pmIIZYg3nT-pZj0&!#P7^sR`67fear&eb^CAc8-$L^eu8Kqcf#-fD^1Zl6HxOm>XyMKk(9Bc5;LjUFx|A|vT*$_)6d7KMl$D^^qXh;)=06lKKR zzm~q@*~sEGm`IZE?;RSnECjp+_;DU*g4D0cbzmY7N zQd~{h{;fTphJ=wB7`kL*$FDdRK@bKAcS98H5D^4cW_q7gpe5TMD>y&!nCm0xCIH>Y z3k_b_3)ZQ^KJQq6_?wOHT3!3d-+YSVQFqpJ%O#}Txp}4gl#CSZ|9uQ!p~La7GfmtY z0dmq@<>-1=z~bi=x$8258s8h|jib=3gkU#BRgE3a7!gThW%|ME046D2-M|N&Ki}sV*(9$SC)Z zf1ya(*c?*(*5J2;=o{Igc*z}mixn^^b)NY8il(ouqIkOawnbK2M&Tf$`p$$ySY3xn!VP*l$hUch40B3Wx~F zWl6d0vvIZcdfHPBK=GASGq@b<`Ia^hRec9X?{)-{Y2euvh`0j6UTG|EK<(RuAKh%| z-DP3yfZRE?LQG)6u$tqrXttc%BP{BOxl(9z|CyUx*(;=u@bHw^Rzb6s0nufv$>-;& z%wAM|E~;^q$^LS80|QI8_wFY$mQ1_;+s$X0`|VF{!qfq`TyJ23lZ63a5#_o{9+a{! zp;Y=+pMdf%sC}hyhCV}8$UH89t0Mg}H zGidtvr2IX=>Lgu%7FDX8bU{X`!sr=Q+b}SfkMH35UT;3JFHhX1zwGiG#n6OSs7>q= zRn~Fmj`%6ZwD9$BMfF45&Q5dcX4(LEo;fSKKyUAIwPOB(*8YKN+UquWyAYMG7Tl*< zVM##!SvwUGWsc2HSQr^yhFP+k_s8R|!xXEazH|*Qq>azzYWQ1go)a=J(K)?ROwSdf zD|qlCM;T4}A0y(>-`=;(7u+w@x4ZvNLs{Xxi?{9L6Dk0Qm=3n78ZT`4sf2i@$m64i z!Rlpa*U$3gkn{z0h#CFLj7m?KRVsw>V+=!`sUjT}L1;3m0FfyT44x_L*SS-Fu&@_nIyfgDrLYJc zv#4Pkj=uritn)yyfE%=9f0Mc%N@Fb(al0BIE=G`Qt#9ulBRmezwn@IewwpKng3M}z znzm#oWL}!BGb|3{2h+o-W(POu>B<=fDGR}f`NXCJ-A4lA1?RZDyu|iO>Dy{MIpl~I z?dj2U571wxC;m<%4I3dj?-7;jcny}k2(9)p{53I*eh2{NKzSll;YZIwPnZ99_6;$qfPbIH672ts&7_XKb}or0Wmy&*w@ys-xFpU!3I8;@lU zK1(HNprwbc?`HNc?_Q(-Y#xs$F&OF@AS|S=DBXzEnf{q8HTTX&zDdlLCnQ{L#GW>$ zJR;+A-)oV+Vwk!6zU3Yx8>yZf>iC_D=4;Im{9|4$bYfW&IhgGw?DcruJXupwF>)H6 zuqFI&Quc9~ils-K2j20WVP?0dr3dV$o*Q7hqr6Bs8hluppTTes1lialx46q?>?arn zX-;M6pzkK~cJA#R+1v$&zBjS2ZcjEf{e*AHq*4qDq2lB5-#Civp8)>~-R(@p^j>;) zD#wqBmV*)gav7S*IOzR*9sQ1vP;=~y9bdXIm$H@_ug#B+pDcL9C-09tIOtRzFIUIH zOwz)Kq5}5p!tOtD%;YBQiPHSMbmUsFW6X3eZc2Dx*^=YlwRV+9PSK?Gyzl+xYPMUT zX1E>N4zW+HI>xh+D2D0R-8o*x>?n1{-@I8{p3G=;3IB&DOC?~oQtZ4}6JtX*1oAiQBNNGko zF|n^juhnZ+)I?~yCQ$4mR(K%Rzk!XW{oy`KqP-6xsEM4NT?{=!Z*JQWuaVhs{bKW6 zyWv|gdYvv(`^$QP462I7qn&av^*`lR z7ZYiKP<-sml>bMv06>dmdmmq_J6NtGj)7At` zPZLXSlcxA>X^1b{7Y4sW-~bU}W#GGYjBdbSykTHJ$_(w{9b*o?v*Lr?W%|S_Sc@lK z6{X!AI@jIYJrb=>N)&Ft5&X7ok?v<$8%ZR|7u@OvpzG#qwBA|c=efEz{}O8kkd8~= zZdZTFrZXi7mQ;y`9-ogMgX>YFH27;21Ti{R(4CAyX_R~ls&aHDiA$2;GQiV=^^%8#^MfI-`1?P&9ggKdY z*SP~I!S+#xmsj|c(86!G;XwvL*MANEjX`A{d22c%m_oeox^96t*YZWDavo?c91#!K zBB88-ORnv#q5YvB;9o@T12}u0_s=TcV-qv(J6Z(nWayjdI0v1y;!tBOPp$fI5e4Vp z(4Ke&1b@7+A@Q1&@mnez`}D6nH)O67`!fJSTzP+4dsdCnKDf*x_*L6P7Zz+5PUT`&#gRxRLI%qf=H4;XV4DKKN4{0fO9vRo`;fO*aR?a*q3Iw5f z%oPRYyrx&xUZ;;;WT z3_e-1{iKn|79&y5ZB*dB8Mm)WeOw%i3|EpuIm-mzw3zuW3@3>I$UQ$8;_b+bS;IjZ zhal=}>+8Q#^Tn|j1dM~|Vd9;_&X2C`?Y+4-J{SWbx2v&bN5=r7)2npOCPmiC9loa_ zw1j)?>o-VINnnY54ClA=ga6oa-TrRxLPh&4Spx2%^_Xem-fASm-EE@i3v>Q-{__NI zyPs7MLV8852jpAV>)cj@3==lzs$ROho!1zs4}BW&x)R%j5F_W3U+Hp!H-nCq2LYGn z$S7wHoq!IYg%>I*+bjY4ixXPemkA| z-v~cfV@nDw>l-&fZuNimDeS&{Q?F`PNBm5Xb3_lV2sbdu>gscGfSQr`FL)E1}( zACIJk$O5g(35(iuyx~uTVWEyCT)+Wu^Zez#ru3$kz>a z;N*o%I$APzsL&m%qh&iHDNh(*d{52q`M#@TVln7B*zsf}i5{>|n#uUKpma&7 zvmhuyl04EP$|AuZuHmtchGPiOV2-gs6{CrC1WMP3N*KdQ;$6>z!Wcjgv_zD*iqpTC z8G-s@Dg=RVG2hHWQT8iA19FW&>X1~@G##5_{;;BLAB^GVN#mg4FHnE&i`DnlzoO7X zmt5OCF_g3~F7|#3k1}pq^nwA)dfoRmk3k}SI#7)K^duaIczJHt#9f8~94g(b&y0t4 z@zvK>Jr_F?$nG$N)jj}io!`n1EYZPXo#s&#(i0zGICr}ELIh&!ISfhfny8<%fQE=e zgqC0P);g##Q4v!5^-rBor+-oP^J3C`q#kXpG9jb^!91L-1+yx6wCNvT9Bs1>fn@I|K41;7Bj;-cKl=_ zHVA3_ANRHP>sNg2_(maJnbX%O3>KPYB)a0PX=3PtW2I$L5o1zVe?p$7tR!vUQ~!0e zpxbY^rbve;rQw?oM|CQ=k;0pOKjnnomL-Deevc6+kF*}u!}?X)2x%KI2rYBxgHB=Y zP#7vydL<&?V-ru-X`?vyX~f%Y=xnKq5X3`t;>8@{EgV3;B3x@*XIp?7>9n$9_#B$E zOqtaYkfbd_2;6c3FTQ=qBR0k`a0n#q>4u>l(~5_A;zx?F18vPh{a66?QzZfK59IbUg7kpfLVhraYnq4%=Zs%Yk(tgg2)f1cHn z7RFg^sGaES6+E547y|*cO2e_mU;<|?-59d>;b}M5cvGsv)UKvPD%!8^ZD_|yVQ$-3 z8dT|uS+8$Bjl36jIK;^^e^$iE64i;{=Y+ozQ(2u}@lE*0UMF9W!=&6$`neDpx)H?hCWTbk6)23qv>WE4lsYb2&#VMFza(d4~={;&pKT-lH4o_LMosUFdN9EsPkg zOd0qipJ(8sN6Xz2awA!h@>M{SIiry0i)}pDvX==hF8PmCv4!{a6>U~dJY~O{f)^;Y zt}Crx>u|gfBciypUPR^z>1m_QkY`lB>Yji3(r5GZcYTdZ^AvXheQpeQ`HEa`D)jR%ug0J*G@fhx&6nViWW&4| zZa%(z+oHx619PmIPsKId|3)gTUOUq4RDUlEUECgi%li{N=EiApU6Jw(mM(T0p39qu zQ15PHfn3Jv!Gf@N%L^hm<<1X7s>(_t11Bom!%Mqk$#MR^f~=IM9(*UQnpp|y(m%oqvI7fAX3+HV(c{ThMgB-*Ji+WP|kwMC>=I>ujG(s_KRWnUw zQB$nx0BcwDcF8^3yp4|1gFj~8YMe^c1^WSgS$49#5h)cBYgp`cbPL^ZsaOHjFLC<_ z!{*Lg{d}8>y-@kFJJnN?l zniROJ5E^G@AF{X@eW-uf(}-SVZiNM+DA!<&tiVL9(q;rR@#UoZ2FK^lvL6qllq?-I zw?{SIb!LGFzL#=br)I1oB(f;qV&_Z^Asu1K3+2Sb{j%|#JK;c1$orH!~`eC^j+lI|}A)r@0GuVO_bIl?N%sk^wI z9E>p;{F2ovk0@37rg8ttb5H}$0sRVfg8o5X5H%k6Knwgg@g5JfpiayoS8w4tkYGjX z$-CY@y_?96jYqb}q;N}kSZXs(UI3uoM9Ry0JAPIw1P}jk55%SdRg)sRZfjdM198?hkU?=j;!+_XAga08zr=y9GgCz{$iO>arN^dr6$LsGuwy?k@V=X zn6H#S!XIMe$;L73^I#VK`SNikL6Hx!O&z&3ndbpaB4rF)+^9Q3&+q3%KZh+YDjzCu zxLPv4gy6(#>hkVnuDfGJSm)*L1Lff5dfO9` z7k8>$g>%9^&DpIeq~!!$BVvt=8~W6_)0YA2J-Rs*nKhF@gj112a(QQyV!vT>cpFPS zMx3G=^#3V}fV60Mi2H{>``wGvLaNF@>sTIN;}Ycvv(KBhG#!Xwz#=%xmeE1wlZPAs z?JuoZKIAfMU?wT6Lo=R)B<9IDYC;pP*gU4h3WbU`rexWaRl>zyDRxP4 zmjq|dPl2-+AgPNSOKc8BeEnyG0)2#<8czl`vNr>WEZI{apP}t1E5Y%Vbe@<>cTX~e zApp_%D*LJJlP52?)n3W#swSxT9}9kgo=u7gDj2i%d65`ZMw}tNeB;s{_L%#g7hTXm z#|jUb>Fa9n-aa-@tpPEA2^41+YhV|}gtKQV7rKv2#%tix(d5QY4Wu`ZhByt|2tY!S z9<`Z3^@3t{NYJEF{;JdPrlDF|f%3t%wH)bT=`{ax?%MQ7s2ECF=H_F`wS0L;2IpQoac&{ofxs@Q0=2Gsx|Ms)^8!@hN^eaU8G7Lg_dm zfmMLZmEu6=Z3MxiWUrE4t<;|;oy_|V;el^tQ$F3(xo(hz4Q9%oUX`rGadWuI>_xp{ zW0qcB$V)t|f<-7lx@?;D)xM=^fpqECMRUD%i;PmY z4&H$-=0Q2P1ZM+w8x>XFoweE^!$@oT*&<8HY`tuDwmgwHJRI3=G~=aN=F>l_InkSI z2?WZ}u*J z2)18Nf|-xVFG7CmcN(JNX~r7Q*_KB5%<-b|X{;!tyUpEgtecEq|0>}0AZx6BqZ%0=t@=8i5Yz9345eqX;Mv~7C`ddo$ zOTJR$QfE^>r|8)0+24BI#;1c9id|-)W3qv?b0$nn>xW5ntjV|J8Ig zLVY9|CKdBDzVd8P$(UVCa7&jO^1;k5Oz3H>0wK-Fm*Ida9$Xr7yf~Y+QWX+l;iO$- z5Ep;sgPI+3K}|ifG+rTkgLQkus^>TRj4~*tGWsLAIf@qaGRPm6yc1^*efsjx$+uhc zTp_E7|3rkkU;sUkq6ur&sG}ilA{Ym%5TQcPR(Sc+Wq2-R3(37~z&7W6j+;a!UX z`iOo>eM6x!Sk293*VIgL$*26-KU81C6#18nF$h1k9#EvUQgPb3ZhZSc!QOgFO1jXbOv&lxXza$~Np+cBxIubUQQ& z0`uuA<9P%|(y>twxVVfPJN>4hZ*u8cUkQGHJeZ1{JD?=~{$Zm-ID~T(xx7)M(ta{4 zRVV*(4E!T?yYTH>)rx_yef(uKzjqwiG}+0OnWBSb96KI=-6uT{t*YjWpA+_vg|C0A z2G(&x>Y2Qbg>Qhc0K@tMnJpP{3#56Q@(GL>dzwhd*!uF9csuZu`NhM-Gbm$)dR#-! z3ZS-_{{imQ_F5~$d(K-}1Ds(Cd>(oG?5bKnbG5J z{0wz4Q}J+`oaq96sqgbzVtf~bp|l{4Pxb2mbVdJDFj*n(miV)!5;zu6=mrxjOz_l{ zqg-`AFWQ{ETjkhngLJTiK67rlq@6inY(g--#I$Ix@=rKJhK4*5{j)MJ-)-&Zi59xA z`M=#8_`V$C(Vyv}NRQ(9cCQ-Wm_1TeF|s4%5a!j{L8xQ7CHn5|-7@3)2-Y|^;`PoX z!cp}DHX2O;=H~Q{nDUu(7PKtVraeilsW;@&`s1-9?uf1eCYWT{BWvH32UUOet6d;yJf;51ryH;lHpT;98q3b7L6vZd>&z4y(trdO?}3Kj^gArg?9o z*_`(NqZ2<3YkgJCl?S1smmL~*)Wf~b`7oHC=5P<}dPtcodao!R-{Rb!M>4fpSE2!W zvIj?=yjyEc5bT;tzT0?f&bKP&?z%h5Y~q)GO#_o2)Qn79t(+ZSL6xa}`Zq`dZXptz z?|bRJPx@@<1QwG})hwfsC)Sbj`LomGZFT*^VYN?#53E&SV3g?o<4gqoG7xMoHH-VD z&&!*DI#O7D+rq>o(o0&$;=?i^jw0&UP%#W{+Xqk5RMuVpu<}ixtNrWPO8y_wQHjRf zHv0AUheVz+@m=ObZC0qVVbH%;;fPI9sp~&FZ!T^L%4oE&KXoXUEh9uwSMVJ0R%<$( z8~Q)DxeS{}5r=g-2E?(0*x;(>rD0R!`Gwdb35R)N*j&UY|41^~YsGg4CqK*<-#d!a zi@X&0>8=J8cAg6Vi=T!<1(ugH^{7X-vZnoudZi`|-+%xA^Y;rEMC#F}x*%9s+07sb zXNcyDG~!&!J&;A%;IKqRQHdWmusL^_c;sY! zQ_&%;<5yN9a2=Vs3McsIH#9J>@=)tMCyL3bF)*-D+UU`ipijz^B|XlplyEZN8QhhJ zO;*PBxN$}t?qB34H4aO75p)d1n`}gy&Mb)7em#k?yfZLmm!bt_w=qbLJa^)HNOl?QN*`{5Mc+a3IB2sMmh}|@x(j4W{!*ImI=(l_>1d(=?3A%d4!wRM6 z3w@Z;ImSq&w?tOgulBoj|Es?_vOtZ@8awlM1N$s8qcd9I6}O&q<^QB!{$C_ahpzph zw^E7TebTFwGPilPYpvCLs2eHwr7`e5I4D_}t!%2!OzIJF8tQ(k6})!Rbt%9AM%oD~ zydZqNhP-Ka?F&QmozW1NQk)c8MG1zU6BK4Tv81aWAeo_X&(dx|hxq3r#ekr(BoOtn zRHV0O8vzSDCGJ4Xm*XKaH4!dLONfQ>+Y#39xC|rTtb-P5f4_rTHhB zyH%J&{)nx3&v@tTzyMQKzsK(t;+Ok4H(NHLE;CzsEBP<|E~d$VPmE>&8##)+8}&U6 zxg8dT%&Nyk%m6ZtTQ3X9eejJ*F!HG82X}$yAf;BN|GGDdmD3G_c*6*KeRm#PmrmQxvy~|B+(lc z{2-ZzZneN|d&jo|=Vn~60vHXI>Cq;Ez>KIPuGNUaLS70JX7cazhdyBa$rT8tL+%8U zegoB~^7>YF+C3X-K4T8;pP`bK*!%dk#L`kxNO?d%9kowdHcP~8H2%Fqg+%>4>IJAm ztFYfNhi1luDOzPOxpiD|J#mkFWj(XPNHr#g^w}ydh0P*|C+)LYuoi#W#0yZeB&X&% zCI;35FinA;>7j^ae{Z1>hX!q8l$)i>$xUEu<8n!_-Fd);=sZ~8x%i8DGKqnJtxwkX zoLQieEk$D4i@5vcl2di9>t8(spJ>@rtCPHdwiVx{#Rx2dLrgy3acTBG_9IsK1o&y_5b@~dG%!Z! z&iDSUCR9@6DA;pWg4h*@HBOjy&3_;xnZNj_-=GD~x3d|Q*}D~Sna?n!47QQF>|? z{j1*$BV=}KUkU9tdp}n0D?z=<$(r2e504wop9fA{SNnp1Oqq-CgS0D+U)G=nD7WsD zh%0dG{pIeGAk-)3`ly|XP?~uji^kM)tAN3tB-#Ia+wyxa=x0DQUb~rAVeW$GAungF zIu6~yFAp8|CilcF<)F^(%kPntM_{N$B>MkT+gHX#*?ns(B`FO=t>s#OypM((fE|MBnGs{c;Nlp((Hzz5j#2sC{c=(8wxPg6EIRpv?(aZk)E zVV&vEAIa_l^nW@z4|VE-K(Uv!9i99IT5%Dv#XLwLvsvj;m1i-Q?sM{L<9#_M8Y6n! z%sL4;QMoV8HPslojjzwyoT`gYRJ{d_S^C`_&4kQ-9V5KF6pj?5@IA(%Tph-Y-ZWs! zGVUuu2)zjX8FC=Tpq{eWvhuy~<@M3$*IFxt#vJ_}zvso=qf3)OJU?kh1bG@6;{`hq zCpC~sP^^c6e{tHIS4hY)kXaj&zF&8Zf!~c8?I?@=+B?ut`&r|-^wp5$!awgez|Q&hw< zORO(U-Xed(Yh;gq0oGsLJjG7@tS*wS1TvpUemmz@ZkLyd1@Sy!M+JaR)LIN# zpa5+90m$0mu=X+hqGnlJ)FR2LQaWjcE65^eSA-@BC@_Pp>jg=Jh=cx71fh!o3;{?qC+&1sIt+xgR8{m|YCb_|6hkPJ86u2$~*=-hJ6# zowjCXfS3jexnq!I_g~RCj0d3wsYdfy#ciRVuUX23U?)?^jG=S9Vm_T?@Gael592Bs zQ0{4tbi4441mQpHrPF;7&I`IbjEVhyJv;SVrB=^Gsr6FQZm;=L)XJ7wrGO!)!sK%8 z+^-4<2Q5EYSeu3NQ?gC^yujT~N|JBXwv2TOJ_)(AVpVgkSLdS&u&dcU0%%>##aSq! z`PEKiSO`jCrRXnVk@aj(r-|B%?S}DZXXW{zbvVwC#(u8m@A5L0pSme&lNq1ReIZd# z5I;qe3WsYi#tUDv1_B2zi&voejcW*^i~RIZdD(fiEQy;IxYG;t>n8ncaarsgR22y{ zImC#upSKX%Ye`9;oTkfmzuKy5oZ<(a{A_U4H-TOur%in)uvoG;w6(o=M}?LLH?xF& zw!;aDvY^I;v*4q7(n6*V5`ac}2K1x;JiV)DsCgH)i!m3c*M0dwtF{Rjve$aXN!_&I zdw{r-NA2n&x5A5-^#gorJ!gp@ke*4+d$8(y3MWRsP6n^;C2*&}Wc?A61+2Q2zXA~D zh!;7h>W3^BR!8UN@~PoaqR zeq+B1*EZtG9>0JKX*pHHOI26pN&Q^?-)K=}HC~s$`wgOaJt)b@+P7|4#`JGHrOXpj zkc1-e=92Lsb(TawzA4f-tAlSCHytO-t9Bdh^3&NoL3@JNak!fTO%6ehy|u6rMsIQN z$XF(%%Y#o1{=L$p*ll@AKqSPx2o%P3Y(db!g5UK@>_wkG0Is;S9NHWR<&6^g>7Hfv4m9N%u{%3SJ_z zrOLM&KTqjqEJZPszV`26ubBW&-`44-0p)l?+uU4hW5&)lrsf$7!Z`7FY$mq?=j(su z2v6b(%z%`)C13cCP1;V*?;)F8;fH?sknK9Y=Piy2;)iyuE@U5m&?3Gu`hZHzg@O2d zTOS5byGCUsyD!}aIB44~tJ!F${#mdqIa1Te1wA&usZ&jKQzq~V;yV4Pq7nsGvxelA z^WBctBm%~JbppN1I13(Go!{NJLfF5!FU*WEFQ~q+KI@Fmnr8)RGdSNL+A@3{3CeBVBU?pCZ`80r`oIL_5G6vk+HMko-g*5- zaLDW5bki+eFOYyj*$%Z!o;roGU_=QSZrhO|^QyQbJVzb}i2(sRO`4A<0Fd4tRNuwdWjP+qYp8^gaS zcC6m(-1~#0A5A`Q)|UYDs*pK84VAEv(9I_faL)^Mm*e2>Hy0zYrh`W;NX&JcBA-lS z(S5!Z3QOe5O3KccNZO7|q8j7rkNq|jX3(zcLE$5nKrC(HD!eX%y-(`%ZTxQYFLq{* ze%L1hs1W3yqlS~!xCyXy1Y>wStjqk@EKK;gZszwz-ehP;z#x4IxXP&EYz{In|Im-JZQ1kPmsBmP z%Td)%L{M?fn>thE&bDjDoV^6{uHldu5{PSJoS`T5{4;ja=TK@xH35xwyZXL9_CSiZ zXe2<9v2M0VMH|nb;E1nPI2*K;U6!?xEmlAHDpdsce>qtUl61eYX+ru|qF4-v+1d+s zjp!Ml)Z=h{B~cGve7NGmFqjvCMH%fgZ*>+6GcL^_T<&_D2kEO}T23YJIHCypbscFf zX8kH;1b*ENJH*e(*4VvX$4`59P;^X>pl7_0exc-@d{~!wiS(WV=oCYea%N!mV&+LghCF8lhq*ZP`42FN)u5~k zd0khuqK*+=z_g+AFH}PU?X@CGLtgxcsq*o{gb;i8Q2wz%qiuE4vU%w1Xou0ttz==n z4d;8sTvBAU9_aX(RBbZrM2(mm@%u-751y%m*4b)gW=G<3W2d5lsK4b?gW353yf@Xo=oWI^>#`)9+cKkCfZE)XXpvTIZYUe3N*2L>udcVso)S&jEjAW$t?Y# za0+17+!GH*@h|lgEgk-@7+$ z{(V3dRaP9ST&r+eoNi)S1HaO}>NktH3Z1HHMPxR(!YKEM>TphNLBubwnvb@D*1qp| zXPa%#kUvw|#_+K(e@!(;hFGF>P?m%Qj7CsOkbI2Cqv8Dl|972AKb2|bOP!9 z2npi}4UMr*sSxO&i~{%*K6ot`57uzn1uiXdP-2M1>oYh9H-0=Op9$+=!%5Ha>%nNo zm{S&nAf98Lb!JOxcJA=y!F9bW9o*(0?*z|dO=`PrzGsEpPWLcljt=jvkdLN=>|y_?e2~Uq67cQhPGiyZPO{INo{a=KJFe( zlUp*3V;#;evTaYQdoOLy?O@D%EEMhiW^S#U53??(N=rw?kqW<6WS$4LwJ3;%b)i=y zDP@;nb|iS>0gCpD)M#tq*?nzM8x(4I-C9F`5Hqs6!4oHcoIyQN#5ch^+(x$VQ<3E) zC_ZEnXAmEJIrMSzxiJWL>Pl+d*y&U8ER^tG_R?m4*!}m)2T({KvO(ZkeU9(UB>#Mn zr^s@w*#u?AJNxe$Jp8~-Pg!6{+d$5fahJ~*%v;wvsx8&LNZ)z?dm|*y_CPh9&{!ep zInV~b!PuqkVSio`a2>i8z>^&B62#GAh|YR>b-d~5 zXyL&AQOF-b_foJoj@kPB{_X+5#Qo^`(lg$90mo~+W4~66Z1+ARw@>%d)DznuAN-Hj zCJk+KY>b`Spqg!VehZ^~oa@NsPAivsUAXguE;nsKPd)gzo6xkKM&8 z^i|43N`ufnnf#8Yn#gyN<*|_0%ywu|uULvu2kFakWsMkA4$#J5rRG8qh(h#Bs{Xvg z!CWQ6z*Bl4U0!;r@3J$PFKNJZHK{rGe9d?9dJm@7T2*XT{b)Vx(*Ff)TUZ23v*Y3E zWWr>?UCX}5X%Hi(t1URfKx+pEkUa^wg#If<^N+V~f3KMDf{4_UX6%AT>ETq7H>+=F z7T364Q)Xfyl~UIt%F^&gMw!s@5@gZeZ0XNJ>)ytCIve3``R6+lbG^a$EDmVWU2%1; ze1Ej4SLXnMN$>Qf+)3*xd>dR7mK1s@Zx!a6D*KM!oFIRAtbx$&P@8s^JTTq!*-!k% zjg@A%U7AbK8^(K07+rjo0C&ZYulpNdMA73nnYwmR>SstxNFJ<+>t$tU4ai z_ZKRhzrd6fYC@|dSAgA#^s|^I$G%ps_4(>h;Ts}xfK)aIwL~SPfNkib{VW!nVeszgSdxP9VUiiQC9eCQw!)r~SjadhD z7v(5<@j%W<@OK6*^3@kPE3_XGRF=P4MbiPOrYpc_&q8Ed@J>XI*{8bDUhj9molNdr z0cl1?XO(D0w`PE*zLRdCybR!w2V2)b5(2OJ@R53oGmXI7;5zavvHAqVJvt}gE|0oz zbb-|3F$lQW+ot|?x@?2YrK2<4!pfiERix?)*9!4zAM6~CO85sgh8l&8h2W{-G=jsp zwcNb;G&m}+2mAWRvUM|Hn(iulc?)Z_`zqfwmX*)q&JPgFu1Ov}kl(50^BZUKh?g*z zt9dL(gS6=gTarAjPiZQvg#W3lxhb#-DbA6Y6|H#Vk@M>%|JYtC4Ic6^j-^^fTAqD= zTxn{i$S#Zp4>Wi8gakyJBP2DEk6)e3tot5kx{n{ppHn%I$zu4{bR0@*x@#k2 zepu9dx}EW}8qLST%fDo%tGtIkj5A4t($AGI+WxT#`^;lS_5!rJlN9b^Ww(VkDmjhg zMa<|X45&WN1QG9rZ-`twD{!CJK!#VRndr&Z#!3n1STuZ6{OAQ9mF zO$5vv4eFV_@P?7Y=(c~)BUkWQrc)D2CN53K8-EFZkbi|1&a?E1z1>Zb1LqS&{Abr9 zj2(}}zz(ji5AVGpBGj~AW>!tTB;AVk(5X#2-pN`=-i?*Z;dvC!sAPFisB(zC`HdsA zMMeN-ez(mZ@si5D6i(G=CdGjO0(>*Q^_CxH2>-%qv>jJwN9D3>s#k2eatYNi4B565 zoOQqJ$WsCTVz_&bh-w>N0_InTj?5*VXmY$x{-t4)3-zpMwp>5yPgS3$k?+(pm)IiB zO81b%1Ixa!r`6Wh`As$5%s#Kz$FIyJyet+n27CFJ+BO2I`QB^b6e<%a!1#lDf( z&|v_cx|nyYUs8X9{>7F@56p7)ag}O1Ox9HoGNUY=&x|G;W9J{&*qa#`U zI1^j&P2_Q8HJ*(;rWh#zGYE>L@I+U@r{}LKzZR9DK?eFeGtM3XX_m1}d0- zfn9m6j!I5hkXQ0Mu5uE4d9Db=qOz?$1nGzuUD>zs?=%{aNy`tHIMJz8c5nDKaBVi4 z@;(I$*3W#vl=@^SJp#{#bbncYax!8I8!bOz{G=UoFM5K=hC}KbAH~y}qrx@DvIuvX zZ0=Sy8~|zg`KZ}ksWh#z&qb4^DyDs<7o-@{^_Ib4V|%1W!ovC+ct)NZ)`dgK4oZ|y z2j@oA(&BgI_JUC~jGC>m>8mBbu;qdpL)V0vb`KMZL`BY58u_qM-x5$_;QH~}?ryGW zi`7}yCe~Fq32?SP8^W=m8U?GXUvRM@nl167bHxJBLsypeq*yL+RKtGf-O#Z71k&J$ zkt_K+})Y1ex;~nim!U@+^eWn zrDada|Hx+2J?`@YhZiOV>O}}A1AQDJTN}Gg`Fn2x*3d1M)Z(6$Ly%YPY{xq%90XIT#0AG|C?$iLcWFa}Ht{UHIf7^F?T-Z96&srGyw&0edyn{8W zJNRL0)AxLeWU<*ruwY%am0Cc5WoZU{{DZGXv*CBE_jW;qKy1XT@mE^`M%!?9&yrP^ zjbR2&{X2m{YeXNniC9!~A=3?&??)Ii2JBN(TjQ1Q0+>j9CW+?DFcN0NSfaIi+tIJ1 z$`A?N^-RZZc!l)1jI7bxqMEfMnD>}a9J~}<4l=8Ga4hlG2!U$l9`M*xObmicb1OrN z*QEz78PE3bqds2Pvt*W zPaDsbEUq@4ZH;PV_vl(741@$>UDwx|y2VdfTdIDl-8y5*EL32P4g^j+l*~Q{DrJt< z?8ly{_8C!kjtVWtloy}~me2&gFPF~h8uTYGZNiG~G%8Xo#O&Ll~=X-yyEQpNe zuQ2NR9adFveZME%!OU5i3dsL=$5MoakeGa8aDH>~xXGVIM9GmS(YGxHj&3EXvF5$^ zbGFnkQ~U*`7fB@!n<=e7A<+TJh>ft^{N>?bW~%*=6(#LM@`Um$0LbY0ll3f){$f?v zQHBVS>qv^Hm*I4PXtC2|n%?jWH?I5TLXGV>g7O>%Lg`ND_s=46NhlO^ZV4JdQXhp( zP1YF9emgVXnGyJD>+Y@2`7VptWb%t90qIaU-*79|3mW8#h|J@QWQsh_h$NEzqd`#l zoi!O@KD{BlKnH`3Mzo`vvS5pX&Rjh^SUu^ZDQKuYY?LU2&%Pjz_6eDhP)}LENt14+ z4c@0X4_x0z) zs$k3@VicSbgMmtj(X4I8IP8?zOZd^yUOo{i%?CSeb1+);;Rx0Bt?f{1m8Mitn&y=^2W}nY zciA?mSajGGV*760D1%`A#*oTRXM)(!sHHUsEAY*m;|I!bd3j2~$u__x3XPsjvSf2==Ic9k z>@&X*zpul{<%4{`lDmp-Tuy^h;EsF4nH(wZqK`V`CnS{YpBP65}` ziUn9ZYG^1~;bL?nnVJ@pUp7Fw?F|#h2ukj3MaKBVn)U~2~kzaB-@7PuH!H4)0VG&QgGT_s?0>o-Jv|me$x1OqqPpRD@R3k(kh8p4#5k>!t0Y<=xX5&#w^qq%ER~?}l zGCUslCrecJup9{9%CE8Fo)cj;z*gR#CCtHW4zCIe$MO}xXI>=#j;ikx+9{!Upzaw?)zM~_t6kKJO5iFhcL$3~g zsb}yK^$DDG%3HRnk3b`k@EjY3T9F6CQET*9vgMZ+} zk~JK$Wa)PL)tO_&8<;e$;dmYH>p!9T=1@_cyY;(MDr+@g&jN%qo9Mlc`16n?%8`NU)wFPf-=yYj(%5EXgd`K z_*R398}FL`SRzZ=LgT99Mp~;ESB3Aib(g{JMnj|kHia;i#(Ax1c#A0+jQN2egkr?v zLp$spuZctrG?8`sIsHFHUh6c44l#XIwPa`_XBQ~@D9q^aJvCI>KLuQFIG!dWgFyGC z+2~klq|QHBCD9;tvy9BSKH8nFQ{b1= zP|5r9lvN5hBEj_B?>ifGGb-+YeLq3D!?y0c%aziG&?-Qo$p)vF5fZexZr}9sPBCUo zA7jzsnJv*dSzay`$6@w=(Z2ua43G_+gAE|A3av=xq|+x$2uW;CC3L87sg0c?ifii$ zS&7%9i3lpEiR3Pgxqj9V;Eu$p33n@=69aCvq37-8p2>IVK`iDb!BT~RMod)NqEMmq z(8W*-6WRD4XlNEec8NNz1Y=}HMCfnPqV<#`64LGOPptE_4$t|NRyvy*eRECsRV`A% z3a?-*>L>UEsK)3z_gue@BFe6d?M?Rbj;ooX&b#lQpwR{(g`(I#fz!&2~jqAxIZyo7~_G=ZbI>I|^<2XDH z3sCVM+7IAvSekMrqJPg}MYan^epT<)`crh^1T=H1y{mf_b4uT8eGKSAW7JDX>M~z7 zuf`}6TI6_ZX$>No4htbpyIrIB#BY93v#Hu*d?C9fISrFz^QjA2?5G*llw! z;ZNju1a{RT-8L&tx5d(ZX9K-c8n~o@-Dfqlw$QGw{Pz1o8PsLA`HRHQZ_mFHk}RTH zM-)rmO|dKLViff;;X+w&d$_9cSxsJMz3f%39QsJdYpC~QrIJ^^V6w;`xXW}B?Ef(A zZtA7_$-`g|_pyIol?qN;B629ttpoRmuNwVdLhO>ZRepQ@C031iH1X?WZRD_Lnywz( zx21BGe$ZVyMV^2U>Srrv}(BeLd4311ZQmgaN$swnN&RdpPF zcXn+tI*EWQ+{&pWbO4oGJ)2iFTkFy#JJ>?%;vTd8>x!@PfJ}>@Rv#;!sP809nSIC! zK%O^0ZF9dEj&n6^g=7IW3P7IO$)5PO7hyF+k&b*8g3$P)Hb$bpdX@OPE*YIs)+i-3 zI;Qqy<7a2U*{<^lcW4JGl~9fx_Og6WJr&Us^`7KelFkOEWQFv{U>TM0dn%L5eNULR zz&myySP$OOMdZ!^CQ|xq6JK?fyNMbT)H!goWSm{L#QT}4E>Ec z;*-gyXl^2zpHpC=+Lh1%4#A=pxm3+AILl1FQ@{HmN(l;d3S>2n}#Da#V)%Z7=E+PWc2F zhkEXi+6$I?q{fhy#sz4fqZP{VK5KvSNJlJVOHVqeg!p5kLrZ(e7#8Kjj_4lTF0T<8 z@!0kCV-19?lQjV z(-|>|IQ|b~188M+JBj-CNp{d-@2Y`lnmq*zw>=Tr5860rJwsua?EA2g4w0=%4GbW4 zBBE6usXTt-P7YhQHt@BYsI~br{FEA-njxv%(9f%kVD>Sqwh(rhl59c+d|3k<1&uHg z#qMQM7U~MtjN6a?nb+tsE?-_U0l-V<$AXs8cQ;{Kf1Hr-0R(cx?%Pd|yiM1eWtj<83(BMUm+K(GRo1~z>!CT<9Ibkf2mZ|otqL)&oz~sdUo!v5wFN( z0mhZVatsb0rWMg^5fi$T;3q$*mwYgRWbC6=uW;?lC0N;uv!D^q^h$PGF}5=u#8Tc9 z>s4Sfk)PjQ-h15oPhA{vZl%K=IJ%MsdVBZ(kJ#uv6SvofMry?mHDN_<(X>@mt+%`= zzkdB1D^aB~3w!W{R^lQ{wfC!iMj8CrKNJ+l9A*d24=ll45NhbwC=8^|jTEY;V96j~ z2!9O4)juu|rW#i1#sLEDRE8dz#D@y8D_lC%zrcJ{4iF6rBvVAF=Hqa^Fp`Oh}^zipQOfrGPyaY>XfP{(#| z9m#I`?C5XKoZEcnzvXywSrzgH3{37wNx^ zTZo>#1V*&pS&xqStr6{nQMlU93#eH6uXcU2IEjlnZVd~(3_U$6^y?qk>%UJ<^o#^# z8`AP2IED^?nNWfdW+r-6S>g`e;oA!_g^5ceJZe`YXs9jP@KL_>@D^c0qJj~4sv^+( zQSB{X#zzz4zTEA<1hk8A{H&7t{??ZOa1jhF9}()UH@daJ|13esa~5FqdPe<-TXWKA zL#u8%9Mp?k%JJ)nS~XTkyPa5sw8_G zM36uulLA&78k|)B_k{lfTV6?w5GIBcY)(9~x%Cou-e}dI13-Ny7T;(BohsOyvHz0G z&}YmZiJzZy)0Nn72~1UK;Y|`Fo~NiG(90r=kM1Got*?RC;MGvT_-{%6CD{M`nVADD z>_EH;#ce5F5P`&lfIgGxS3eV8>a;<1djA^fH8wCl2Wf()0K={Ss~ph|T;;im5l!PW zVbRM}rt{ZxGUg0u*7*jQAfdmG2Y;_uFeV?(T?*FB_$n>3zw~?I^HxngHv2>p7;f?Z zwqgK1vi7rZJ>;Ejw-}C;zpXX0v0Rq|XNqc)sDJT%ne|98Q2Z|&@!t{yOqtJ(DHHLqVZEg*tI7*N z_ku=1AYu3j$^W+{W0VsO4#)m@HW$eC1}!c6?`d&_18R+Pm(ljtX8T_z8d7p&k4EZr z`)(=2&~MBcpebGiMecSx>U}$J8~u=5416FWBL}q8X#7aa{?-@yidZuc(*v&kY1>Tle-F&HnfGf Date: Mon, 1 Jul 2019 22:30:44 +0200 Subject: [PATCH 02/80] modified hand in hw guide, added project week 3, exercises week 2 --- Week1/MAKEME.md | 39 +++++-- Week1/README.md | 67 ++++++----- Week2/MAKEME.md | 237 ++++++++++++++++---------------------- Week3/MAKEME.md | 223 ++++++++++++++--------------------- hand-in-homework-guide.md | 20 +++- 5 files changed, 261 insertions(+), 325 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index b6bc335ba..b0b90dd6b 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -2,32 +2,47 @@ ## Todo list -1. JavaScript exercises -2. s - +1. Practice the concepts +2. JavaScript exercises 3. Code along 4. PROJECT: -### 1. JavaScript exercises +### 1. Practice the concepts -- Codecademy [Introduction to JavaScript](https://www.codecademy.com/learn/introduction-to-javascript/modules/learn-javascript-introduction) -- FreeCodeCamp [Introduction to JavaScript](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript) +- [Codecademy: Variables](https://www.codecademy.com/courses/introduction-to-javascript/lessons/introduction-to-javascript/) +- [Codecademy: Conditions](https://www.codecademy.com/courses/introduction-to-javascript/lessons/control-flow/) +- [FreeCodeCamp: Introduction to JavaScript](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript) -### 2. +### 2. JavaScript exercises ### 3. Code along -### 4. PROJECT: +### 4. PROJECT: Temperature converter > Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. +In this JavaScript-only project you'll write code that + +Follow the instructions: + +1. Create a `.js` file that will contain your temperature converter +2. + +Example of how to use comments: + +```js +const myName = ''; +``` + ## SUBMIT YOUR HOMEWORK! -After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: +After you've finished your todo list it's time to show us what you got! Starting from this week you'll be submitting all your homework through GitHub. What you'll be doing is upload all your files to a forked repository (a copy from the original, which in this case is the [JavaScript1](https://www.github.com/HackYourFuture/JavaScript1) repository) using GIT. -1. s -2. s +Take a look at the following [guide](../hand-in-homework-guide.md) to see how it's done. -Upload both in a repository to GitHub and then upload the link to Trello. Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. +The homework that needs to be submitted is the following: + +1. JavaScript exercises +2. PROJECT: Temperature converter _Deadline Saturday 23.59 CET_ diff --git a/Week1/README.md b/Week1/README.md index 286d16035..bab6aee39 100644 --- a/Week1/README.md +++ b/Week1/README.md @@ -5,19 +5,19 @@ These are the topics for week 1: 1. What is programming? - - Introduction - - Software - - What is a programming language? + - Introduction + - Software + - What is a programming language? 2. What is web development? - - Web development vs. software development - - Web development vs. web design - - Website vs. web application + - Web development vs. software development + - Web development vs. web design + - Website vs. web application 3. What is JavaScript? 4. What are variables? - - The keywords: let, const, var - - values + - The keywords: let, const, var + - values 5. What are data types? - - 6 basic types + - 6 basic types ## 1. What is programming? @@ -33,30 +33,30 @@ This is important to note: a computer is a `tool` we use to make our lives easie Go through the following resources to learn more about what programming is: -- [What is programming?](https://www.youtube.com/watch?v=3tWMQ3ZMjbg) -- [Introduction into programming Playlist](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZYJC7L-r6rX6utt6wwJCyi) +- [What is programming?](https://www.youtube.com/watch?v=3tWMQ3ZMjbg) +- [Introduction into programming Playlist](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZYJC7L-r6rX6utt6wwJCyi) ### Software As a software developer (synonym to 'programmer'), you will write these instructions in order to create 'software'. Look at the following video to get a better idea of what software is: -- [What is software?](https://www.youtube.com/watch?v=MSA3WsGeTNI) +- [What is software?](https://www.youtube.com/watch?v=MSA3WsGeTNI) ### What is a programming language? Programming is done using a programming language. Why do we need a language to communicate with the computer? At its most basic level, a computer operates based on 0's and 1's: 0 meaning off, and 1 meaning on. Smart people decided to make this more comprehensible, so that people can more simply communicate with a computer. This is how the development of programming languages started: by defining a vocabulary, grammar and syntax to put more organization to the 0's and 1's, we can more simply communicate exactly what we want to computer to do. -- [What are programming languages](https://hackr.io/blog/what-is-programming-language) +- [What are programming languages](https://hackr.io/blog/what-is-programming-language) There are various languages, each made to fulfill a certain need. For example, Microsoft developed a language called [C#](https://www.youtube.com/watch?v=paJUbVeKEOU) in order to make applications for Windows computers. Read the following article to learn more about different languages and their uses: -- [14 Programming Languages Explained](https://mikkegoes.com/14-programming-languages-explained/) +- [14 Programming Languages Explained](https://mikkegoes.com/14-programming-languages-explained/) ## 1. What is web development? In HackYourFuture we focus on `web` programmming (also known as `web development`): writing code that creates websites and web applications. Look at the following video to learn about what you'll be doing: -- [What does a web developer do?](https://www.youtube.com/watch?v=GEfuOMzRgXo) +- [What does a web developer do?](https://www.youtube.com/watch?v=GEfuOMzRgXo) ## Web development vs. software development @@ -71,7 +71,7 @@ The field of programming is broad. As a software developer (a general term for a Read the following article to read more about different career paths: -- [Software Development Career Paths](https://simpleprogrammer.com/software-development-career-paths/#title-career-developer-options) +- [Software Development Career Paths](https://simpleprogrammer.com/software-development-career-paths/#title-career-developer-options) Note: once you've chosen a certain track it doesn't mean you can't try out any other! If anything, you are encouraged to explore and see what fits your taste :) @@ -91,8 +91,8 @@ This is the difference bteween `static` and `dynamic` sites: a static site alway Read the following articles to learn more about this: -- [Website vs. Web Application](https://www.seguetech.com/website-vs-web-application-whats-the-difference/) -- [Static vs. dynamic websites](https://www.youtube.com/watch?v=4sP7fp3cp24) +- [Website vs. Web Application](https://www.seguetech.com/website-vs-web-application-whats-the-difference/) +- [Static vs. dynamic websites](https://www.youtube.com/watch?v=4sP7fp3cp24) ## 3. What is JavaScript? @@ -104,22 +104,26 @@ The main use for JavaScript is to make your webpage interactive: for example, if Check the following resources to learn more about it: -- [What is JavaScript?](https://www.youtube.com/watch?v=nItSSTwBvSU) -- [What does JavaScript do and what is it used for?](https://www.youtube.com/watch?v=OSWppEa2Zac) +- [What is JavaScript?](https://www.youtube.com/watch?v=nItSSTwBvSU) +- [What does JavaScript do and what is it used for?](https://www.youtube.com/watch?v=OSWppEa2Zac) ## 4. What are variables? +A variable is a piece of information that is saved. You give it a name that describes what its contents are, and to also refer to it at a later point. + ### The keywords: let, const, var -A variable is a central concept within programming. It's applied the same way across almost all programming languages. In JavaScript we apply it by using a `keyword`, a word that is reserved because it has a special meaning. Read more about this in the following article: +A variable is a central concept within programming. It's applied the same way across almost all programming languages. In JavaScript we apply it by using a `keyword`, a word that is reserved by the language because it has a special meaning. Read more about this in the following article: -- [Variables](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/variables.md) +- [Variables](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/variables.md) A variable always contains a `value`: a piece of information that you want to refer to at a later stage. Read more about this here: -- [Values](https://www.github.com/hackyourfuture/fundamentals/blob/master/fundamentals/values.md) +- [Values](https://www.github.com/hackyourfuture/fundamentals/blob/master/fundamentals/values.md) + +When creating variables, it's important to think about the right name to give it. It should always reflect what "type" of data it contains and how it would make sense in light of the rest of your code. You (and other developers that will read your code) should be able to read a variable name and know what its purpose is. -As a developer you'll be using variables to manipulate its content (the value inside the variable). Why would you want to do this? For most of the time, you want to perform some kind of calculation. The most basic example is the following: +Why do we need variables? You'll be using variables to manipulate its content (the value inside the variable). Why would you want to do this? For most of the time, you want to perform some kind of calculation. The most basic example is the following: ```js const one = 1; @@ -138,14 +142,19 @@ A data type is a category of data. It tells the code interpreter what kind of da There are about 6 basic data types in JavaScript. String, Number, Boolean, Object, Array, and Function. You can read more about them in the following article: -- [JavaScript Data Types](https://www.tutorialrepublic.com/javascript-tutorial/javascript-data-types.php) -- [JS Data Types](https://www.w3schools.com/js/js_datatypes.asp) -- [Variables & Data Types](https://www.youtube.com/watch?v=Hrd3SfCCXZw) +- [JavaScript Data Types](https://www.tutorialrepublic.com/javascript-tutorial/javascript-data-types.php) +- [JS Data Types](https://www.w3schools.com/js/js_datatypes.asp) +- [Variables & Data Types](https://www.youtube.com/watch?v=Hrd3SfCCXZw) Why do you need to know this? Again, this goes back to computers not being very smart: it needs to know **exactly** how to look at things, what to do with it and in what order. -In JavaScript, the data types allow us to store various types of information, and perform manipulations on them. -You'll learn more about them at a later stage. +In JavaScript, the data types allow us to store various types of information, and perform manipulations on them. You'll learn more about them at a later stage. + +## Extra resources + +If you feel like you need more information to fill in the gaps of your understanding, check out the following resources to learn more about the basics of JavaScript: + +- [Introduction to JavaScript Development](https://www.udemy.com/refactoru-intro-js) ## Finished? diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index 5b8ee9cb7..7e801d936 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -2,195 +2,154 @@ ## Todo list -1. s -2. s +1. Practice the concepts +2. JavaScript exercises 3. Code along 4. PROJECT: -### 1. +## 1. Practice the concepts -### 2. +In this section you will be doing interactice exercises, that will allow you to practice with the concepts you've learned about this week! -### 3. Code along +- [Codecademy: Arrays](https://www.codecademy.com/courses/introduction-to-javascript/lessons/arrays) +- [FreeCodeCamp: Basic data structures](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-data-structures) -Build a temperature converter +## 2. JavaScript exercises -- [Temperature Converter](https://www.youtube.com/watch?v=8mRGfLL1nzE) +> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference -### 4. PROJECT: +**String exercises!** -> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. +Consider the following string: -> Make a +```js +let myString = 'hello,this,is,a,difficult,to,read,sentence'; +``` -## SUBMIT YOUR HOMEWORK! +1.1 +1.1 Add the string to your file and log it.
+1.2 Log the length of `myString`.
+1.3 The commas make that the sentence is quite hard to read. Find a way to remove the commas from the string and replace them with spaces.
+1.4 Log `myString` to see if you succeeded.
-After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: +**Array exercises!** -1. s -2. s +Consider the following array: -Upload both in a repository to GitHub and then upload the link to Trello. Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. +```js +let favoriteAnimals = ['blowfish', 'capricorn', 'giraffe']; +``` -_Deadline Saturday 23.59 CET_ +2.1 Add a statement that adds Mauro's favorite animal _'turtle'_ to the existing array.
+2.2 Log your new array!
+2.3 Now add Jim's favorite animal to the array, it's _'meerkat'_, but make sure it will be placed after _'blowfish'_ and before _'capricorn'_.
+2.4 Write a console.log statement that explains in words _you think_ the new value of the array is.
+2.5 Log your new array!
+2.6 Log the length of the array, add a message: _'The array has a length of: '_ (here you should show the length of the array).
+2.7 Jason does not like _'giraffe'_, delete this animal from the array.
+2.8 Again log your new array.
+2.9 Now if unlike Jim, you don't like _'meerkat'_ and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it?
+2.10 Log the index of _'meerkat'_. Add a message so it says: _'The item you are looking for is at index: '_ (here you should show the index of the item).
-## Before you start with the homework: +1. Create a function that takes 3 arguments and returns the sum of the these arguments. -1. Review the [Git course material](https://github.com/HackYourFuture/Git) of last week. -2. Watch: [What is programming](https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro), just watch the 2 min video, you do not have to do the entire JavaScript course (It could be useful later on though). +2. Create a function named `colorCar` that receives a color, and prints out, _'a red car'_ for example. -## Step 2: JavaScript +3. Create an object and a function that takes the object as a parameter and prints out all of its properties and values. -_Deadline Thursday_ +4. Create a function named `vehicleType` that receives a color, and a code, 1 for car, 2 for motorbike. And prints _'a blue motorbike'_ for example when called as `vehicleType("blue", 2)` -> For all the following exercises create a new `.js` file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. +5. Can you write the following without the `if` statement, but with just as a single line with `console.log(...);`? -1\. Write a `console.log` statement saying "Hello World!" for each language that you know. + ```js + if (3 === 3) { + console.log('yes'); + } else { + console.log('no'); + } + ``` -For example: +6. Create a function called `vehicle`, like before, but takes another parameter called `age`, so that `vehicle("blue", 1, 5)` prints _'a blue used car'_ -``` -Halo, dunia! // Indonesian -Ciao, mondo! // Italian -Hola, mundo! // Spanish -``` +7. Make a list of vehicles, you can add `"motorbike"`, `"caravan"`, `"bike"`, or more. -2\. Consider the following code: +8. How do you get the third element from that list? -```js -console.log('I'm awesome'); -``` +9. Change the function `vehicle` to use the list of question 7. So that `vehicle("green", 3, 1)` prints "a green new bike". -Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error. Hint: read the error message carefully, it also gives an indication of where the problem is. +10. Use the list of vehicles to write an advertisement. So that it prints something like: `"Amazing Joe's Garage, we service cars, motorbikes, caravans and bikes."`. (Hint: use a `for` loop.) -3\. Declare a variable `x` and initialize it with an integer, using these exact steps: -3\.1 First, _declare_ your variable `x` (do not initialize it yet). -3\.2 Add a `console.log` statement that explains in words what _you think_ the value of `x` is, like in this example: + > Hint, the output should be correct English with all the punctuation in place (that's the challenge). So plurals for the vehicle types, commas followed by a single space, the word and to replace the final comma and closed off by a period. -```js -// TODO -> here you initialize your variable -console.log("the value of my variable x will be: whateverYouThinkItWillLog"); -``` +11. What if you add one more vehicle to the list, can you have that added to the advertisement without changing the code for question 10? -3\.3 Add a `console.log` statement that logs the value of `x`. -3\.4 Now _initialize_ your variable `x` with an integer. -3\.5 Next, add a `console.log` statement that explains what _you think_ the value of `x` is. -3\.6 Add a `console.log` statement that logs the value of `x`. - Steps to be taken: +12. Create an empty object. -```js -// TODO -> here you declare your variable -console.log("the value of x will be: whateverYouThinkItWillLog"); -// TODO -> log the actual value of x -// TODO -> here you initialize your variable -console.log("the value of x will be: whateverYouThinkItWillLog"); -// TODO -> log value of x again -``` +13. Create an object that contains the teachers that you have had so far for the different modules. -4\. Declare a variable `y` and assign a string to it. -4\.1 Write a `console.log` statement in which you explain in words what _you think_ the value of the string is. -4\.2 Now `console.log` the variable `y`. -4\.3 Now assign a new string to the variable `y`. -4\.4 Just like what you did before write a `console.log` statement that explains in words what you think will be logged to the console. -4\.5 Now console.log `y` again. +14. Add a property to the object you just created that contains the languages that they have taught you. -```js -// TODO -> here you declare AND assign your string -console.log("the value of my string will be: whateverYouThinkItWillLog"); -// TODO -> log the actual value of the string to the console -// TODO -> assign a new value to your variable x -console.log("the value of my string will be: whateverYouThinkItWillLog"); -// TODO -> log the actual value of the string to the console -``` +15. Write some code to test two arrays for equality using `==` and `===`. Test the following: -5\. How do you round the number 7.25, to the nearest integer (i.e., whole number)? -5\.1 Declare a variable `z` and assign the number 7.25 to it. -5\.2 `console.log` `z`. -5\.3 Declare another variable `a` that has the value of `z` but rounded to the nearest integer. -5\.4 `console.log` `a`. -5\.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. -5\.6 `console.log` the highest value. - -6\. _Arrays_ -6\.1 Declare an empty array. Make sure that the name you choose indicates 'plurality', because an array is capable of containing more than one element. (See [Naming conventions](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/naming_conventions.md)). -6\.2 Write a `console.log` statement that explains in words what you think the value of the array is. -6\.3 `console.log` your array. -6\.4 Create an array that has your favorite animals inside (see if you can find a good name that exactly describes what this variable will hold). -6\.5 Log your array. -6\.6 Add a statement that adds Daan's favorite animal ('baby pig') to the _existing array_. -6\.7 Log your new array! - -7\. _More strings_ -Let's consider the following string: `let myString = "this is a test"`. -7\.1 Add the string to your file and console.log it. -7\.2 Find a way to get the length of `myString`. -7\.3 `console.log` the length of `myString`. - -8\. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. -8\.1 First declare at least four variables and assign them different data types. -8\.2 For each variable write a `console.log` statement that logs the value + ```js + let x = [1, 2, 3]; + let y = [1, 2, 3]; + let z = y; + ``` -```js -let foo = 3; -console.log("The value of my variable foo is: " + foo); -``` + What do you think will happen with `x == y`, `x === y` and `z == y` and `z == x`? Prove it! -(Curious to know what a `foo` is? Check [this article](https://en.wikipedia.org/wiki/Metasyntactic_variable) on Wikipedia.) + Check out this [Fiddle](http://jsfiddle.net/jimschubert/85M4z/). You need to open your browser’s Developer Tools to see the console output. Press the Run button in the upper right corner to run the code. -8\.3 Now write a `console.log` statement wherein you first explain in words what you think the _type_ of your variables is. -8\.4 Now use `typeof` to log the actual _type_ of your variables. -8\.5 Now compare the types of your different variables with one another. -8\.6 Make sure to also show a message when the variables you are comparing are not the same type. + More insights from this [Stack Overflow question](http://stackoverflow.com/questions/22395357/how-to-compare-two-arrays-are-equal-using-javascript). -For example: +16. Take a look at the following code: -```js -let x = 9; -let y = 'Hello'; + ```js + let o1 = { foo: 'bar' }; + let o2 = { foo: 'bar' }; + let o3 = o2; + ``` -if (...) { - console.log('SAME TYPE'); -} -// TODO -> add a way of giving feedback if your variables don't have the same type -``` + Show that changing `o2` changes `o3` (or not) and changing `o1` changes `o3`(or not). -9\. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? -9\.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. + Does the order that you assign (`o3 = o2` or `o2 = o3`) matter? -10\. Write a program to answer the following questions: -10\.1 Can you store multiple types in an array? Numbers and strings? Make an example that illustrates your answer. -10\.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? -10\.3 Add `console.log` statements to the above program in which you show that you understand the concepts (just like you've done in the above assignments). +17. What does the following code return? (And why?) -## Step 3: **Some freeCodeCamp challenges (10 hours):** + ```js + let bar = 42; + typeof typeof bar; + ``` -_Deadline Saturday_ +> ‘Coerce' means to try to change - so coercing `var x = '6'` to number means trying to change the type to number temporarily. -On freeCodeCamp.com please do the [Basic JavaScript](https://www.freecodecamp.com/challenges/learn-how-free-code-camp-works) exercises up and until the **"Shopping List"** exercise (there are some topics we did not cover but you can do it). +## 3. Code along -## Step 4: Read before next lecture +In the following project you'll be flexing your HTML/CSS skills again, together with writing JavaScript code. -_Deadline Sunday morning_ +In the first part you'll be building the basic frontend, which means the way the page is going to look using only HTML/CSS. In the second part you'll be writing the logic that will allow a user to convert the temperature from one temperature scale to another (i.e. Celsius to Fahrenheit) -Go trough the reading material in the [README.md](/Week3/README.md) to prepare for your next class +While watching the videos and coding along, focus on the following: -### How to hand in Homework: +- Why does the developer -``` -• Create a new repository "hyf-javascript1". Also create a new folder "week1" inside this repository. -• Upload your homework files inside the week1 folder and write a description for this “commit”. -• Your hyf-javascript1/week1 should now contain all your homework files. -• Place the link to your repository folder in Trello. -``` +- [Temperature Converter Pt. I](https://www.youtube.com/watch?v=EHclqGV_KME) +- [Temperature Converter Pt. II](https://www.youtube.com/watch?v=8mRGfLL1nzE) -### Hint +### 4. PROJECT: -If you solve the FreeCodeCamp challenges and they are new concepts to you and you would like to take a look at them later on in the program, Copy your answers from FCC in a `.js` file and upload them to Github in a repository for future reference. In this way you build your own little documentation, if you look back at them first try to understand what it does before you run them. +> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. + +## SUBMIT YOUR HOMEWORK! + +After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: + +1. JavaScript exercises +2. PROJECT: -:star: Additional resources and review: :star: +Upload both to your forked JavaScript1 repository in GitHub. Make a pull request to the original repository. -- [Variables](./../../../../fundamentals/blob/master/fundamentals/variables.md) -- [Basic value types](./../../../../fundamentals/blob/master/fundamentals/values.md) -- [Operators](./../../../../fundamentals/blob/master/fundamentals/operators.md) -- [Special characters and their names](./../../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md) -- [Naming conventions](./../../../../fundamentals/blob/master/fundamentals/naming_conventions.md) +> Forgotten how to upload your homework? Go through the [guide](../hand-in-homework-guide.md) to learn how to do this again. + +_Deadline Saturday 23.59 CET_ diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 0c8cb5124..f81e36416 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -2,194 +2,139 @@ # Todo list -1. JavaScript exercises -2. s - +1. Practice the concepts +2. JavaScript exercises 3. Code along -4. PROJECT: - -## Step 1: Recap/Read - -- Have a look at [The Secret Life of JavaScript Primitives](https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/) - -- Review the topics of last week: - - - [Variables](./../../../../fundamentals/blob/master/fundamentals/variables.md) - - [Values](./../../../../fundamentals/blob/master/fundamentals/values.md) - - [Operators](./../../../../fundamentals/blob/master/fundamentals/operators.md) - - [Special characters and their names](./../../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md) - - [Naming conventions](./../../../../fundamentals/blob/master/fundamentals/naming_conventions.md) - -- Go through the topics of this week: - - Git work flow - - [Advanced data types (Objects)](./../../../../fundamentals/blob/master/fundamentals/objects.md) - - [Conditional execution](./../../../../fundamentals/blob/master/fundamentals/conditional_execution.md) - - [Statements vs Expressions](./../../../../fundamentals/blob/master/fundamentals/statements_expressions.md) - - [Loops (for/while)](./../../../../fundamentals/blob/master/fundamentals/loops.md) - - [Functions](./../../../../fundamentals/blob/master/fundamentals/functions.md) - - [Scope](./../../../../fundamentals/blob/master/fundamentals/scope.md) +4. PROJECT: Grade calculator +5. [OPTIONAL] Extra resources -## Step 2: Watch +## 1. Practice the concepts -1. If you haven't done already, watch: [What is programming](https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro) - Just watch the 2 min video, you do not have to do the entire JavaScript course (It could be useful later on though). +In this section you will be doing interactice exercises, that will allow you to practice with the concepts you've learned about this week! -2. Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Wouter): -
**4. Writing Conditional Code** -
**5. Modular Code** -
**6. Iteration: Writing Loops** -
**7. More About Strings** -
**8. Collections** -
**11. When Things Go Wrong** +- [Codecademy: Functions ](https://www.codecademy.com/courses/introduction-to-javascript/lessons/functions) +- [Codecademy: Higher Order Functions](https://www.codecademy.com/courses/introduction-to-javascript/lessons/higher-order-functions/) -## Step 3: Rover the Robot +## 2. JavaScript exercises -Go and try out this cool game: [roverjs.com](http://roverjs.com), written by one of our HYF teachers, Joost Lubach. There are different levels, see how far you can get! +In the following exercises you'll practice every concept you've learned about so far in this module. -## Step 4: String and Array challenges +Before you start, create a folder called `week2-scripts`. Inside, create 10 `.js` files, each dedicated to the exercises in this section. Make sure you give the files a name that reflects its content. For exercise an appropriate name would be: `greeting.js`. -_Deadline Wednesday_ +**Exercise 1: You are [INSERT COMPLIMENT], Noer!** -> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference +There is no better way to start your day then with a compliment! -_IMPORTANT NOTE_ -In each assignment write at least two `console.log` statements to verify if your code works correctly. In other words proof that you code works as expected. If you need inspiration look at the steps defined in the assignments from last week. +1. Write a function named `giveCompliment` -1\. **Strings!** +- It takes 1 argument: your name +- Inside the function create an array with 10 strings. Each string should be a compliment, like `"great"`, `"awesome"` -Consider the following string: +**Exercise 2: Dog years** -```js -let myString = "hello,this,is,a,difficult,to,read,sentence"; -``` - -1\.1 Add the string to your file and log it.
-1\.2 Log the length of `myString`.
-1\.3 The commas make that the sentence is quite hard to read. Find a way to remove the commas from the string and replace them with spaces.
-1\.4 Log `myString` to see if you succeeded.
- -2\. **Arrays!** - -Consider the following array: - -```js -let favoriteAnimals = ["blowfish", "capricorn", "giraffe"]; -``` +You know how old your dog is in human years, but what about dog years? Calculate it! -2\.1 Add a statement that adds Mauro's favorite animal _'turtle'_ to the existing array.
-2\.2 Log your new array!
-2\.3 Now add Jim's favorite animal to the array, it's _'meerkat'_, but make sure it will be placed after _'blowfish'_ and before _'capricorn'_.
-2\.4 Write a console.log statement that explains in words _you think_ the new value of the array is.
-2\.5 Log your new array!
-2\.6 Log the length of the array, add a message: _'The array has a length of: '_ (here you should show the length of the array).
-2\.7 Jason does not like _'giraffe'_, delete this animal from the array.
-2\.8 Again log your new array.
-2\.9 Now if unlike Jim, you don't like _'meerkat'_ and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it?
-2\.10 Log the index of _'meerkat'_. Add a message so it says: _'The item you are looking for is at index: '_ (here you should show the index of the item).
+1. Write a function named calculateDogAge. -## More JavaScript :tada: + - it takes 1 argument: your puppy's age. + - calculates your dog's age based on the conversion rate of 1 human year to 7 dog years. + - outputs the result to the screen like so: "Your doggie is NN years old in dog years!" -1. Create a function that takes 3 arguments and returns the sum of the these arguments. +2. Call the function three times with different sets of values. -2. Create a function named `colorCar` that receives a color, and prints out, _'a red car'_ for example. +**Exercise 3: Be your own fortune teller** -3. Create an object and a function that takes the object as a parameter and prints out all of its properties and values. +**Exercise 4: Shopping at the supermarket** -4. Create a function named `vehicleType` that receives a color, and a code, 1 for car, 2 for motorbike. And prints _'a blue motorbike'_ for example when called as `vehicleType("blue", 2)` +Let's do some grocery shopping! We're going to get some things to cook dinner with. However, you like to spend your money and always buy too many things. So when you have more than 5 items in your shopping cart the -5. Can you write the following without the `if` statement, but with just as a single line with `console.log(...);`? +**Exercise 5:** +**Exercise 6:** +**Exercise 7:** +**Exercise 8:** +**Exercise 9:** - ```js - if (3 === 3) { - console.log("yes"); - } else { - console.log("no"); - } - ``` +Why pay a fortune teller when you can just program your fortune yourself? -6. Create a function called `vehicle`, like before, but takes another parameter called `age`, so that `vehicle("blue", 1, 5)` prints _'a blue used car'_ +1. Take the following code +2. Write a function named tellFortune that: + - takes 4 arguments: number of children, partner's name, geographic location, job title. + - outputs your fortune to the screen like so: "You will be a X in Y, and married to Z with N kids." +3. Call that function 3 times with 3 different values for the arguments. -7. Make a list of vehicles, you can add `"motorbike"`, `"caravan"`, `"bike"`, or more. +Exercise ideas: -8. How do you get the third element from that list? +- Reverse a string +- Reassign array index +- Change object key value +- Find the longest string in an array of strings +- Sort an array of numbers from small to large number +- Count the amount of occurrences of a letter in a string -9. Change the function `vehicle` to use the list of question 7. So that `vehicle("green", 3, 1)` prints "a green new bike". +## 3. Code along -10. Use the list of vehicles to write an advertisement. So that it prints something like: `"Amazing Joe's Garage, we service cars, motorbikes, caravans and bikes."`. (Hint: use a `for` loop.) +In the following tutorial you'll learn how to make a Weight Converter application. You'll make use of HTML, CSS and JavaScript. At first you'll be building the basic layout of the frontend (the HTML & CSS). After you'll start writing the JavaScript logic that will `convert pounds into grams`. - > Hint, the output should be correct English with all the punctuation in place (that's the challenge). So plurals for the vehicle types, commas followed by a single space, the word and to replace the final comma and closed off by a period. +In order to speed up development you'll be using a CSS framework: [Bootstrap 4](https://www.getbootstrap.com). While coding along, have a look through the documentation in order to get familiar with the different class names to see what they do. -11. What if you add one more vehicle to the list, can you have that added to the advertisement without changing the code for question 10? +- [Weight Converter App](https://www.youtube.com/watch?v=7l-ZAuU8TXc) -12. Create an empty object. +## 4. PROJECT: Grade calculator -13. Create an object that contains the teachers that you have had so far for the different modules. +> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. -14. Add a property to the object you just created that contains the languages that they have taught you. +In this project you'll write a script that calculates grades, based on the American grading system! Let's say a student did a test and they got a 60 out of 100, this script will: -15. Write some code to test two arrays for equality using `==` and `===`. Test the following: +1. convert the score into a percentage +2. calculate what grade corresponds with that percentage, and +3. shows in the command line the result: the grade and the percentage - ```js - let x = [1, 2, 3]; - let y = [1, 2, 3]; - let z = y; - ``` +When writing the script, make use of the following grade scores: - What do you think will happen with `x == y`, `x === y` and `z == y` and `z == x`? Prove it! - - > Don't cheat! Seriously - try it first. - - - Check out this [Fiddle](http://jsfiddle.net/jimschubert/85M4z/). You need to open your browser’s Developer Tools to see the console output. Press the Run button in the upper right corner to run the code. - - More insights from this [Stack Overflow question](http://stackoverflow.com/questions/22395357/how-to-compare-two-arrays-are-equal-using-javascript). - -16. Take a look at the following code: - - ```js - let o1 = { foo: "bar" }; - let o2 = { foo: "bar" }; - let o3 = o2; - ``` - - Show that changing `o2` changes `o3` (or not) and changing `o1` changes `o3`(or not). - - Does the order that you assign (`o3 = o2` or `o2 = o3`) matter? +```markdown +Grade A (90% - 100%) +Grade B (80% - 89%) +Grade C (70% - 79%) +Grade D (60% - 69%) +Grade E (50% - 59%) +Grade F (0% - 49%) +``` -17. What does the following code return? (And why?) +These are the requirements your project needs to fulfill: - ```js - let bar = 42; - typeof typeof bar; - ``` +- Make a JavaScript file with a name that describes its contents +- Use at least one `function`, make sure it has a name that reflects what it does +- Write at least 2 comments that explain to others what a line of code is meant to do +- Use `node` from the command line to test if your code works as expected -> ‘Coerce' means to try to change - so coercing `var x = '6'` to number means trying to change the type to number temporarily. +This is what the script is expected to return in the command line: -## Step 7: **Finish basic freeCodeCamp challenges:** +```markdown +You got a B (85%)! +``` -_Deadline Saturday_ +Hints: -Go back to FreeCodeCamp, start where you left of and finish the rest of the Basic JavaScript challenges. +- Use either a switch or if/else statement +- Make the return value of the function a template string, so you can insert variables! -Please make sure you REALLY understand the exercises below: +## 5. [OPTIONAL] Extra resources -- https://www.freecodecamp.com/challenges/multiply-two-decimals-with-javascript -- https://www.freecodecamp.com/challenges/store-multiple-values-in-one-variable-using-javascript-arrays -- https://www.freecodecamp.com/challenges/build-javascript-objects -- https://www.freecodecamp.com/challenges/add-new-properties-to-a-javascript-object -- https://www.freecodecamp.com/challenges/delete-properties-from-a-javascript-object +If you have time left over and feel like you could go for more practice, try out the following course: -## Step 8: Read before next lecture +- [JavaScript30](https://javascript30.com/) -_Deadline Sunday morning_ +In this free course, you'll build 30 small projects that will sharpen your HTML, CSS and JavaScript skills. Each project is meant to show you different ways you could use programming to make fun and useful things! Have fun! ## SUBMIT YOUR HOMEWORK! After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: -1. s -2. s +1. JavaScript exercises +2. PROJECT: Grade calculator + +Upload both to your forked JavaScript1 repository in GitHub. Make a pull request to the original repository. -Upload both in a repository to GitHub Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. +> Forgotten how to upload your homework? Go through the [guide](../hand-in-homework-guide.md) to learn how to do this again. _Deadline Saturday 23.59 CET_ diff --git a/hand-in-homework-guide.md b/hand-in-homework-guide.md index 04d78fb3a..b725d29c9 100644 --- a/hand-in-homework-guide.md +++ b/hand-in-homework-guide.md @@ -10,10 +10,13 @@ Follow the walkthrough to learn how to submit your homework for each week: ONE TIME ONLY (START OF EVERY MODULE) -1. Create a copy of the module repository. You do this by using the `fork` option on GitHub +1. Create a [fork](https://help.github.com/en/articles/fork-a-repo) of the module repository. You do this by using the `fork` option on GitHub 2. Navigate to the URL of the cloned repository (it should be in your personal account, under "repositories") 3. Clone the repository, using SSH, to your local machine 4. On your local machine, navigate to the folder using the command line +5. Make sure you've cloned it correctly by running `git status` from the command line. You should see the following message: + +[[ INSERT IMAGE OF HOW TO CHECK CLONE ]] EVERY WEEK @@ -21,13 +24,18 @@ EVERY WEEK 6. Make your homework in the right folder, while in this branch 7. Once you're finished, add and commit everything. Make the commit message meaningful, for example `finished project for homework week1` 8. Push the branch to your forked repository -9. On GitHub, click on the `create pull request` button -10. Make sure the `base repository` is the original, on branch master -11. Submit a pull request from your forked repository branch into the `master` branch from the original -12. Pat yourself on the back because you did it! Good job! +9. On GitHub, click on the `create pull request` button. Make sure the `base repository` is the original, on branch master +10. Give the pull request a title in the following format: + +```markdown +js1 homework week 1 noerpaanakker +``` + +11. Submit the pull request from your forked repository branch into the `master` branch of the original repository +12. Do a little victory dance because you did it! Good job! For a visual walkthrough the steps please watch the following video one of our teachers, Unmesh Joshi, has made: -- [GitHub Homework flow](https://www.youtube.com/watch?v=2qJPAVTiKPE) +- [GitHub Homework flow](https://www.youtube.com/watch?v=2qJPAVTiKPE) If you have any questions or if something is not entirely clear ¯\\\_(ツ)\_/¯, please ask/comment on Slack! From 5385798358f18bc8fd1c03eb129304bb398686f4 Mon Sep 17 00:00:00 2001 From: Noer Paanakker Date: Mon, 1 Jul 2019 22:43:11 +0200 Subject: [PATCH 03/80] added content hw week 1 --- README.md | 46 +++++++++----- Week1/MAKEME.md | 163 ++++++++++++++++++++++++++++++++++++++++++++---- Week2/MAKEME.md | 15 ++--- Week3/MAKEME.md | 27 ++------ Week3/README.md | 16 +++++ 5 files changed, 214 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 32f06a0d1..9a45eff29 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,35 @@ ![JavaScript1](./assets/javascript1.png) -In this module you'll make a start into wonderful world of programming. We will be using the programming language `JavaScript` to do this. You'll learn about the basic buildings of programming: loops, functions, control flow and more. Consider these as the ABC's of programming, without them it's impossible to write working software! +In this module you'll make a start into wonderful world of programming. We will be using the programming language `JavaScript` to do this. You'll learn about the basic buildings of programming: `loops, functions, control flow and more. Consider these as the ABC's of programming, without them it's impossible to write working software! -Mostly what you'll be learning is 2 things: +You'll be learning two main things: -- The skill of problem solving. -- The skill of thinking algorithmically +1. Various fundamental concepts within programming + While we're using JavaScript to illustrate these concepts, it's important to keep in mind that what you will learn is applicable to **any** programming language. They might differ in syntax (a fancy way of saying the way the arrangement of words in a language in order for it to make sense), but the functionality will be the same: a loop will always be a loop. -You will learn to understand problems terms of an algorithm: a series of steps that can be used to do a certain thing, even if the details are different each time. + This should be your mindset when you're learning concepts: **I'm learning how to become a software developer that can adjust to any language used, because I know what the underlying principles and concepts are**. + +2. How to think like a programmer + In one sentence this means: **knowing how to solve problems computationally**. Let's split that up in two parts: `how to solve problems` refers to the ability to identify issues and find effective solutions. `computationally` refers to the ability to think in logical steps that the computer can understand and execute. + + This should be your mindset when you're learning how to think : **I'm learning how to think in logical steps, identifying cause and effect, and always looking for solutions**. + +## Before you start! + +In order to test your JavaScript you'll be using software that will execute your files from the command line. This software is called [Node.js](https://nodejs.org/en/download/). Download the Long-Term Support (LTS) version for your specific operating system. + +- For Windows, click [here](https://nodejs.org/dist/v10.16.0/node-v10.16.0-x64.msi) +- For Mac, click [here](https://nodejs.org/dist/v10.16.0/node-v10.16.0.pkg) +- For Linux, click [here](https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz) + +After you've installed it, go to your command line interface. Type in the following command: + +``` +node --version +``` + +It should show you version `v10.14.2` or higher. ## Learning goals @@ -22,13 +43,12 @@ In order to successfully complete this module you will need to master the follow - Have an idea of what computer programming is - Learn about the basic buildings of JavaScript -- Correctly write variables, functions and loops +- Correctly write and use variables, functions and loops - Understand the control flow +- Learn how to think like a programmer ## How to use this repository -> Before you do anything, first go [here](Week0/preparation.md). - This repository consists of 3 essential parts: 1. `Reading materials`: this document contains all the required theory you need to know _**while**_ you're coding. It's meant as both study material and as a reference to understand what you're doing. @@ -45,14 +65,12 @@ If you have any questions or if something is not entirely clear ¯\\\_(ツ)\_/¯ | ---- | --------------------------------------------------------------------------------- | ------------------------------ | ------------------------------- | ---------------------------------- | | 1. | What is JavaScript?, Variables, Data Structures & Naming Conventions | [Reading W1](/Week1/README.md) | [Homework W1](/Week1/MAKEME.md) | [Lesson Plan W1](/Week1/MAKEME.md) | | 2. | Statements vs. Expressions, Control flow, Loops, Operators, Conditional statement | [Reading W2](/Week2/README.md) | [Homework W2](/Week2/MAKEME.md) | [Lesson Plan W2](/Week1/MAKEME.md) | -| 3. | Functions, Thinking like a programmer I | [Reading W3](/Week3/README.md) | [Homework W3](/Week3/MAKEME.md) | [Lesson Plan W3](/Week1/MAKEME.md) | - -**Kind note:** +| 3. | Functions, Thinking like a programmer I, How JavaScript relates to HTML/CSS | [Reading W3](/Week3/README.md) | [Homework W3](/Week3/MAKEME.md) | [Lesson Plan W3](/Week1/MAKEME.md) | -We expect you to **always** come prepared to the class on Sunday. +## Finished? -### Overall +Did you finish the module? Good job! You're doing great! -A good understanding of all the above mentioned topics. Want to check your Knowledge? Go through the [JavaScript Fundamentals README](../../../fundamentals/blob/master/README.md) and research/ ask for help (Slack!) with the concepts that are not entirely clear. +If you feel ready for the next challenge, click [here](https://www.github.com/HackYourFuture/JavaScript2) to go to JavaScript2! _The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)_ diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index b6bc335ba..62a12f202 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -2,32 +2,173 @@ ## Todo list -1. JavaScript exercises -2. s - +1. Get to know +2. JavaScript exercises 3. Code along 4. PROJECT: -### 1. JavaScript exercises +### 1. Get to know + +Before we learn how to build actual applications, we first need to gain experience using JavaScript in a computational way. This teaches us how to think like a programmer, and gives us more experience with the language itself. + +In the following exercises you'll learn how to use different JavaScript concepts to solve common computational problems: + +- [Learn-js](https://www.learn-js.org/). Do all the `Learn the basics` exercises. +- [Codecademy: Introduction to JavaScript](https://www.codecademy.com/learn/introduction-to-javascript/modules/learn-javascript-introduction). Do all the exercises (#1 to #10). +- [FreeCodeCamp: Introduction to JavaScript](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript). Do at least 20 exercises, you can choose whichever ones you feel are challenging enough. + +### 2. JavaScript exercises + +Inside of your `JavaScript1` fork, create a folder called `week1`. Inside of that folder, create a folder called `js-exercises`. For all the following exercises create a new `.js` file in that folder (10 files in total). Make sure the name of each file reflects its content: for example, the filename for exercise one could be `logHello.js`. + +In each file, start off with the string `'use strict'`. This will make sure the code interpreter will enforce stronger rules when looking at your code. + +> Before starting, make sure you have [Node.js](https://nodejs.org/en/download/) installed on your computer. You'll use this to execute your code to check if it works. + +**Exercise 1: Hello world!** + +Write a statement, using the `console.log()` function. Give it a string as an argument. The string should contain the message "Hello world!". + +Write 10 statements like these, but in different languages. + +For example: + +``` +Halo, dunia! // Indonesian +Ciao, mondo! // Italian +Hola, mundo! // Spanish +``` + +Using the command line, navigate to your `week1` folder and type in the following to test your code: + +``` +node FILENAME.js +``` + +It should show the message `Hello world!` in 10 different languages. + +**Exercise 2: Error debugging** + +Consider the following code: + +```js +console.log('I'm awesome'); +``` + +Copy the code in your `.js` file and run it in the command line using `node`. You will see that you will get a SyntaxError. **Correct the mistake**. + +Hint: the SyntaxError message will give you some indication of what the error _might_ be, but figure out yourself how to correct it! + +When done right, it should show the message `I'm awesome`. + +**Exercise 3: Log the number** + +Follow the steps. Make sure that each step is written on the line after. The file should have 6 lines (excluding the 'use strict') in total. -- Codecademy [Introduction to JavaScript](https://www.codecademy.com/learn/introduction-to-javascript/modules/learn-javascript-introduction) -- FreeCodeCamp [Introduction to JavaScript](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript) +1. First, _declare_ your variable `numberX`. Do not _initialize_ it (which means, don't give it a value) yet. +2. Add a `console.log` statement that explains in words _what you think_ the value of `x` is, like in this example. +3. Add a `console.log` statement that logs the value of `numberX`. +4. Now _initialize_ your variable `numberX` with a number (also called an `integer` in computer science terms). +5. Next, add a `console.log` statement that explains _what you think_ the value of `numberX` is. +6. Add a `console.log` statement that logs the value of `numberX`. -### 2. +**Exercise 4: Log the string** + +Follow the steps. Make sure that each step is written on the line after. The file should have 6 lines (excluding the 'use strict') in total. + +1. Declare a variable `myString` and assign a string to it. Use your full name, including spaces, as the content for the string. +2. Write a `console.log` statement in which you explain in words _what you think_ the value of the string is. +3. Now `console.log` the variable `myString`. +4. Now reassign to the variable `myString` a new string. +5. Just like what you did before write a `console.log` statement that explains in words _what you think_ will be logged to the console. +6. Now console.log `myString` again. + +**Exercise 5: Round a number and log it** + +Follow the steps. Make sure that each step is written on the line after. The file should have 6 lines (excluding the 'use strict') in total. + +1. Declare a variable `z` and assign the number 7.25 to it. +2. Write a `console.log` statement in which you log the value of `z`. +3. Declare another variable `a` that has the value of `z` but rounded to the nearest integer. +4. Write a `console.log` statement in which you log the value of `a`. +5. So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. +6. Write a `console.log` statement in which you log the value of the highest value. + +**Exercise 6: Log an array of animals** + +Follow the steps. Make sure that each step is written on the line after. The file should have 7 lines (excluding the 'use strict') in total. + +1. Declare variable and assign to it an empty array. Make sure that the name of the variable indicates it contains more than 1 item. For example `items` instead of `item`. +2. Write a `console.log` statement that explains in words _what you think_ the value of the array is. +3. Write a `console.log` statement that logs the array. +4. Create a new variable with an array that has 3 of your favorite animals, each in a different string. Make sure the name of the variables says something about what the variable contains. +5. Write a `console.log` statement that logs the second array. +6. Add a statement that adds another string ("Piglet)" to the array of animals. +7. Write a `console.log` statement that logs the second array! + +**Exercise 7: Log the length of a string** + +1. Declare a variable called `mySentence` and initialize it with the following string: "Programming is so interesting!". +2. Figure out (using Google) how to get the length of `mySentence`. +3. Write a `console.log` statement to log the length of `mySentence`. + +**Exercise 8: ** + +8.0 Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. +8.1 First declare at least four variables and assign them different data types. +8.2 For each variable write a `console.log` statement that logs the value + +```js +let foo = 3; +console.log("The value of my variable foo is: " + foo); +``` + +(Curious to know what a `foo` is? Check [this article](https://en.wikipedia.org/wiki/Metasyntactic_variable) on Wikipedia.) + +8.3 Now write a `console.log` statement wherein you first explain in words what you think the _type_ of your variables is. +8.4 Now use `typeof` to log the actual _type_ of your variables. +8.5 Now compare the types of your different variables with one another. +8.6 Make sure to also show a message when the variables you are comparing are not the same type. + +For example: + +```js +let x = 9; +let y = 'Hello'; + +if (...) { + console.log('SAME TYPE'); +} +// TODO -> add a way of giving feedback if your variables don't have the same type +``` + +**Exercise 9:** + +9.0 If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? +9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. + +**Exercise 10:** + +10.0 Write a program to answer the following questions: +10.1 Can you store multiple types in an array? Numbers and strings? Make an example that illustrates your answer. +10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? +10.3 Add `console.log` statements to the above program in which you show that you understand the concepts (just like you've done in the above assignments). ### 3. Code along +We don't want to lose connection with HTML/CSS, so in the following tutorial you'll learn how to build a simple web application use HTML/CSS and JavaScript. + ### 4. PROJECT: -> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. +Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. ## SUBMIT YOUR HOMEWORK! After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: -1. s -2. s +1. JavaScript exercises +2. Project -Upload both in a repository to GitHub and then upload the link to Trello. Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. +Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. _Deadline Saturday 23.59 CET_ diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index 5b8ee9cb7..484379597 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -2,10 +2,9 @@ ## Todo list -1. s -2. s -3. Code along -4. PROJECT: +1. JavaScript exercises +2. Code along +3. PROJECT: ### 1. @@ -13,9 +12,11 @@ ### 3. Code along -Build a temperature converter +So far you've been practicing with JavaScript by itself. This is useful, but we shouldn't lose the connection between this and what we learned before: HTML & CSS. + +In the following tutorial you'll learn how to combine JavaScript with HTML & CSS in order to build a simple calculator: -- [Temperature Converter](https://www.youtube.com/watch?v=8mRGfLL1nzE) +- [Calculator]() ### 4. PROJECT: @@ -30,7 +31,7 @@ After you've finished your todo list it's time to show us what you got! The home 1. s 2. s -Upload both in a repository to GitHub and then upload the link to Trello. Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. +Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. _Deadline Saturday 23.59 CET_ diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 0c8cb5124..555776e8b 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -1,6 +1,6 @@ -## Homework JavaScript1 Week 3 +# Homework JavaScript1 Week 3 -# Todo list +## Todo list 1. JavaScript exercises 2. s @@ -8,26 +8,11 @@ 3. Code along 4. PROJECT: -## Step 1: Recap/Read +## 3. Code along -- Have a look at [The Secret Life of JavaScript Primitives](https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/) +Build a temperature converter -- Review the topics of last week: - - - [Variables](./../../../../fundamentals/blob/master/fundamentals/variables.md) - - [Values](./../../../../fundamentals/blob/master/fundamentals/values.md) - - [Operators](./../../../../fundamentals/blob/master/fundamentals/operators.md) - - [Special characters and their names](./../../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md) - - [Naming conventions](./../../../../fundamentals/blob/master/fundamentals/naming_conventions.md) - -- Go through the topics of this week: - - Git work flow - - [Advanced data types (Objects)](./../../../../fundamentals/blob/master/fundamentals/objects.md) - - [Conditional execution](./../../../../fundamentals/blob/master/fundamentals/conditional_execution.md) - - [Statements vs Expressions](./../../../../fundamentals/blob/master/fundamentals/statements_expressions.md) - - [Loops (for/while)](./../../../../fundamentals/blob/master/fundamentals/loops.md) - - [Functions](./../../../../fundamentals/blob/master/fundamentals/functions.md) - - [Scope](./../../../../fundamentals/blob/master/fundamentals/scope.md) +- [Temperature Converter](https://www.youtube.com/watch?v=8mRGfLL1nzE) ## Step 2: Watch @@ -192,4 +177,4 @@ After you've finished your todo list it's time to show us what you got! The home Upload both in a repository to GitHub Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. -_Deadline Saturday 23.59 CET_ +Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. diff --git a/Week3/README.md b/Week3/README.md index b515cb811..44c7d9f21 100644 --- a/Week3/README.md +++ b/Week3/README.md @@ -6,6 +6,7 @@ These are the topics for week 3: 1. Functions 2. Thinking like a programmer I +3. How JavaScript relates to HTML & CSS ## 1. Functions @@ -68,6 +69,21 @@ Take a look at the following resources to learn more about problem solving as ap - [How to THINK like a programmer](https://www.youtube.com/watch?v=NNazO2tMHno) - [Lessons in problem solving](https://www.freecodecamp.org/news/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2/) +- [Computational thinking](https://www.youtube.com/watch?v=qbnTZCj0ugI) + +## 3. How JavaScript relates to HTML & CSS + +Consider the following analogy. The human body needs 3 essential parts in order to function appropriately: bones, skin and muscles. The bones are necessary to give the body **structure**. The skin (shape of body, hair, clothing, make up) is necessary to give the body a unique **presentation**. and the muscles (for walking, climbing, swimming) are needed to give the body **movement and interactivity**. + +This is exactly how HTML, CSS and JavaScript relate to each other: + +- HTML is used to put the structure of a website together +- CSS acts like the skin and makeup for the HTML. CSS improves the colors and layout of a website structure built with HTML +- JavaScript is a full-on programming language that adds interactivity and functionality to a website + +Check the following article to learn more about this: + +- [The Relationship Between HTML, CSS and JavaScript Explained by Building A City](https://blog.codeanalogies.com/2018/05/09/the-relationship-between-html-css-and-javascript-explained/) ## Finished? From c90ad3c845ba7008270455d41cde14bc6c319e9c Mon Sep 17 00:00:00 2001 From: Noer Paanakker Date: Wed, 3 Jul 2019 12:23:25 +0200 Subject: [PATCH 04/80] Almost finished week 1, week 3 finished! --- Week1/MAKEME.md | 90 +++++++++++++++++------------- Week2/MAKEME.md | 142 +++++++++++++++++++++++++++++++++++++++--------- Week3/MAKEME.md | 132 +++++++++++++++++++++++++------------------- 3 files changed, 242 insertions(+), 122 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 556c20f41..cae483234 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -1,13 +1,13 @@ # Homework JavaScript1 Week 1 -## Todo list +## **Todo list** 1. Practice the concepts 2. JavaScript exercises 3. Code along 4. PROJECT: -### 1. Get to know +## **1. Get to know** Before we learn how to build actual applications, we first need to gain experience using JavaScript in a computational way. This teaches us how to think like a programmer, and gives us more experience with the language itself. @@ -17,11 +17,11 @@ In the following exercises you'll learn how to use different JavaScript concepts - [Codecademy: Introduction to JavaScript](https://www.codecademy.com/learn/introduction-to-javascript/modules/learn-javascript-introduction). Do all the exercises (#1 to #10). - [FreeCodeCamp: Introduction to JavaScript](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript). Do at least 20 exercises, you can choose whichever ones you feel are challenging enough. -### 2. JavaScript exercises +## **2. JavaScript exercises** Inside of your `JavaScript1` fork, create a folder called `week1`. Inside of that folder, create a folder called `js-exercises`. For all the following exercises create a new `.js` file in that folder (10 files in total). Make sure the name of each file reflects its content: for example, the filename for exercise one could be `logHello.js`. -In each file, start off with the string `'use strict'`. This will make sure the code interpreter will enforce stronger rules when looking at your code. +> In each file, start off with the string `'use strict'`. This will make sure the code interpreter will enforce stronger rules when looking at your code. > Before starting, make sure you have [Node.js](https://nodejs.org/en/download/) installed on your computer. You'll use this to execute your code to check if it works. @@ -63,9 +63,9 @@ When done right, it should show the message `I'm awesome`. **Exercise 3: Log the number** -Follow the steps. Make sure that each step is written on the line after. The file should have 6 lines (excluding the 'use strict') in total. +Follow the steps. Make sure that each step is written on the line after. -1. First, _declare_ your variable `numberX`. Do not _initialize_ it (which means, don't give it a value) yet. +1. First, declare your variable `numberX`. Do not _initialize_ it (which means, don't give it a value) yet. 2. Add a `console.log` statement that explains in words _what you think_ the value of `x` is, like in this example. 3. Add a `console.log` statement that logs the value of `numberX`. 4. Now _initialize_ your variable `numberX` with a number (also called an `integer` in computer science terms). @@ -74,7 +74,7 @@ Follow the steps. Make sure that each step is written on the line after. The fil **Exercise 4: Log the string** -Follow the steps. Make sure that each step is written on the line after. The file should have 6 lines (excluding the 'use strict') in total. +Follow the steps. Make sure that each step is written on the line after. 1. Declare a variable `myString` and assign a string to it. Use your full name, including spaces, as the content for the string. 2. Write a `console.log` statement in which you explain in words _what you think_ the value of the string is. @@ -85,7 +85,7 @@ Follow the steps. Make sure that each step is written on the line after. The fil **Exercise 5: Round a number and log it** -Follow the steps. Make sure that each step is written on the line after. The file should have 6 lines (excluding the 'use strict') in total. +Follow the steps. Make sure that each step is written on the line after. 1. Declare a variable `z` and assign the number 7.25 to it. 2. Write a `console.log` statement in which you log the value of `z`. @@ -96,7 +96,7 @@ Follow the steps. Make sure that each step is written on the line after. The fil **Exercise 6: Log an array of animals** -Follow the steps. Make sure that each step is written on the line after. The file should have 7 lines (excluding the 'use strict') in total. +Follow the steps. Make sure that each step is written on the line after. 1. Declare variable and assign to it an empty array. Make sure that the name of the variable indicates it contains more than 1 item. For example `items` instead of `item`. 2. Write a `console.log` statement that explains in words _what you think_ the value of the array is. @@ -108,57 +108,71 @@ Follow the steps. Make sure that each step is written on the line after. The fil **Exercise 7: Log the length of a string** +Follow the steps. Make sure that each step is written on the line after. + 1. Declare a variable called `mySentence` and initialize it with the following string: "Programming is so interesting!". 2. Figure out (using Google) how to get the length of `mySentence`. 3. Write a `console.log` statement to log the length of `mySentence`. -**Exercise 8: ** - -8.0 Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. -8.1 First declare at least four variables and assign them different data types. -8.2 For each variable write a `console.log` statement that logs the value - -```js -let foo = 3; -console.log("The value of my variable foo is: " + foo); -``` +**Exercise 8: Type checker** -(Curious to know what a `foo` is? Check [this article](https://en.wikipedia.org/wiki/Metasyntactic_variable) on Wikipedia.) +Write a program that checks the data types of two variables and logs to the console `SAME TYPE` if they are the same type. If they are different types log `Not the same...`. -8.3 Now write a `console.log` statement wherein you first explain in words what you think the _type_ of your variables is. -8.4 Now use `typeof` to log the actual _type_ of your variables. -8.5 Now compare the types of your different variables with one another. -8.6 Make sure to also show a message when the variables you are comparing are not the same type. +1. Declare 4 variables: 2 must be `strings` and 2 must be `objects` +2. Create 8 conditional statements, where for each you check if the data type of one variable is the same as the other +3. Find out how to check the type of a variable +4. Write 2 `console.log` statements to log the type of 2 variables, each with a different data type +5. Now compare the types of your different variables with one another +6. Log `Not the same...` when the types are different -For example: +Here's an incomplete example of how it could look: ```js +// Declare all variables let x = 9; -let y = 'Hello'; +let y = 67; +// Check data type +console.log(...); + +// Check if data type is the same if (...) { console.log('SAME TYPE'); } -// TODO -> add a way of giving feedback if your variables don't have the same type ``` -**Exercise 9:** +**Exercise 9: Log the remainder** + +For each of these, write in comments what the answer is followed by how you came to that conclusion -9.0 If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? -9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. +1. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the value of `x` after the calculation? +2. If `y` equals 21, and the only other statement is `x = x % 4`, what would be the value of `y` after the calculation? +3. If `z` equals 13, and the only other statement is `x = x % 2`, what would be the value of `z` after the calculation? -**Exercise 10:** +**Exercise 10: Compare arrays** -10.0 Write a program to answer the following questions: -10.1 Can you store multiple types in an array? Numbers and strings? Make an example that illustrates your answer. -10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? -10.3 Add `console.log` statements to the above program in which you show that you understand the concepts (just like you've done in the above assignments). +1. Declare 2 variables, that each hold an array. The first array should have 4 items, the second 7 items +2. Find out how to get the length of each array. Write a `console.log` statement that shows the length of each array -### 3. Code along +```js +const array = ["hello", 123, true, { name: "Noer" }]; + +console.log('The length of the array is...' + ...); +``` + +3. Write a conditional statement that checks if both are of equal length. If they are, log to the console `They are the same!`, if not log `Two different sizes` + +## **3. Code along** We don't want to lose connection with HTML/CSS, so in the following tutorial you'll learn how to build a simple web application use HTML/CSS and JavaScript. -### 4. PROJECT: +You'll first write the HTML and CSS, to provide structure and style to the page. When doing so, keep notice of how the developer chooses to do this. Why do they use this tag instead of something else? Why do they give an element a certain class name? + +After, the developer will write JavaScript code. You'll notice it's different from how you've used JavaScript. It is something we call **DOM Manipulation**. Don't worry, you don't need to master this just yet. Just follow along and do some research yourself if you already want to learn more about it! + +- [Calculator](https://www.youtube.com/watch?v=6v4vBXL-qkY) + +## **4. PROJECT: Temperature converter** NOT FINISHED Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. @@ -175,7 +189,7 @@ Example of how to use comments: const myName = ""; ``` -## SUBMIT YOUR HOMEWORK! +## **SUBMIT YOUR HOMEWORK!** After you've finished your todo list it's time to show us what you got! Starting from this week you'll be submitting all your homework through GitHub. What you'll be doing is upload all your files to a forked repository (a copy from the original, which in this case is the [JavaScript1](https://www.github.com/HackYourFuture/JavaScript1) repository) using GIT. diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index 595146ef7..11b008fcd 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -1,13 +1,13 @@ # Homework JavaScript1 Week 2 -## Todo list +## **Todo list** 1. Practice the concepts 2. JavaScript exercises 3. Code along 4. PROJECT: -## 1. Practice the concepts +## **1. Practice the concepts** In this section you will be doing interactice exercises, that will allow you to practice with the concepts you've learned about this week! @@ -20,11 +20,13 @@ In the following tutorial you'll learn how to combine JavaScript with HTML & CSS - [Calculator]() -## 2. JavaScript exercises +## **2. JavaScript exercises** -> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference +> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. -**String exercises!** +> Start each file off with the string `'use strict'` at the top. + +**Exercise 1: Remove the comma** Consider the following string: @@ -32,11 +34,52 @@ Consider the following string: let myString = "hello,this,is,a,difficult,to,read,sentence"; ``` -1.1 -1.1 Add the string to your file and log it.
-1.2 Log the length of `myString`.
-1.3 The commas make that the sentence is quite hard to read. Find a way to remove the commas from the string and replace them with spaces.
-1.4 Log `myString` to see if you succeeded.
+1. Add the variable to your file. +2. Log the length of `myString`. +3. The commas make that the sentence is quite hard to read. Find a way to remove the commas from the string and replace them with spaces. (use Google!) +4. After replacing the commas, log `myString` to see if you succeeded. + +**Exercise 2: The even/odd reporter** + +Report whether or not a number is odd/even! + +1. Create a `for` loop, that iterates from 0 to 20. +2. Create a conditional statement that checks if the value of the counter variable is odd or even. +3. If it's odd, log to the console `The number [PUT_NUMBER_HERE] is odd!`. +4. If it's even, log to the console `The number [PUT_NUMBER_HERE] is even!`. + +**Exercise 3: The recipe card** + +Ever wondered how to make a certain meal? Let's create a recipe list with JavaScript! + +1. Declare a variable that holds an object (your meal recipe). +2. Give the object 3 properties: a `title` (string), a `servings` (number) and an `ingredients` (array of strings) property. +3. Log each property out seperately. + +It should look similar to this: + +```markdown +Meal name: Omelete +Serves: 2 +Ingredients: +4 eggs +2 strips of bacon +1 tsp salt/pepper +``` + +**Exercise 4: The reading list** + +Keep track of which books you read and which books you want to read! + +1. Create an array of 3 objects, where each object describes a book and has properties for the `title` (string), `author` (string), and `alreadyRead` (boolean indicating if you read it yet). +2. Loop through the array of books. +3. For each book, log the book title and book author like so: "The Hobbit by J.R.R. Tolkien". +4. Create a conditional statement to change the log depending on whether you read it yet or not. If you read it, log a string like `You already read "The Hobbit"` right after the log of the book details +5. If you haven't read it log a string like `You still need to read "The Lord of the Rings"` + +**Exercise 5: ** +**Exercise 3: ** +**Exercise 3: ** **Array exercises!** @@ -46,16 +89,16 @@ Consider the following array: let favoriteAnimals = ["blowfish", "capricorn", "giraffe"]; ``` -2.1 Add a statement that adds Mauro's favorite animal _'turtle'_ to the existing array.
-2.2 Log your new array!
-2.3 Now add Jim's favorite animal to the array, it's _'meerkat'_, but make sure it will be placed after _'blowfish'_ and before _'capricorn'_.
-2.4 Write a console.log statement that explains in words _you think_ the new value of the array is.
-2.5 Log your new array!
-2.6 Log the length of the array, add a message: _'The array has a length of: '_ (here you should show the length of the array).
-2.7 Jason does not like _'giraffe'_, delete this animal from the array.
-2.8 Again log your new array.
-2.9 Now if unlike Jim, you don't like _'meerkat'_ and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it?
-2.10 Log the index of _'meerkat'_. Add a message so it says: _'The item you are looking for is at index: '_ (here you should show the index of the item).
+2.1 Add a statement that adds Mauro's favorite animal _'turtle'_ to the existing array. +2.2 Log your new array! +2.3 Now add Jim's favorite animal to the array, it's _'meerkat'_, but make sure it will be placed after _'blowfish'_ and before _'capricorn'_. +2.4 Write a console.log statement that explains in words _you think_ the new value of the array is. +2.5 Log your new array! +2.6 Log the length of the array, add a message: _'The array has a length of: '_ (here you should show the length of the array). +2.7 Jason does not like _'giraffe'_, delete this animal from the array. +2.8 Again log your new array. +2.9 Now if unlike Jim, you don't like _'meerkat'_ and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it? +2.10 Log the index of _'meerkat'_. Add a message so it says: _'The item you are looking for is at index: '_ (here you should show the index of the item). 1. Create a function that takes 3 arguments and returns the sum of the these arguments. @@ -130,24 +173,69 @@ let favoriteAnimals = ["blowfish", "capricorn", "giraffe"]; > ‘Coerce' means to try to change - so coercing `var x = '6'` to number means trying to change the type to number temporarily. -## 3. Code along +## **3. Code along** -In the following project you'll be flexing your HTML/CSS skills again, together with writing JavaScript code. +> Create a new folder outside of your `JavaScript1` fork -In the first part you'll be building the basic frontend, which means the way the page is going to look using only HTML/CSS. In the second part you'll be writing the logic that will allow a user to convert the temperature from one temperature scale to another (i.e. Celsius to Fahrenheit) +In the following 2 projects you'll be flexing your HTML/CSS skills again, together with writing JavaScript code. They are similar in structure and logic, so be sure to spot the similarities! -While watching the videos and coding along, focus on the following: +It's ok if you don't understand exactly what's happening here. Just follow along and try to understand: ask questions about what the developer is doing and think about every line of code. -- Why does the developer +**Project 1: Temperature Converter** + +This project will teach you how to convert the temperature from one scale to another in real-time! + +In the first part you'll be building the basic frontend, which means the way the page is going to look using only HTML/CSS. In the second part you'll be writing the logic that will allow a user to convert the temperature from one temperature scale to another (i.e. Celsius to Fahrenheit) - [Temperature Converter Pt. I](https://www.youtube.com/watch?v=EHclqGV_KME) - [Temperature Converter Pt. II](https://www.youtube.com/watch?v=8mRGfLL1nzE) -### 4. PROJECT: +**Project 2: Weight Converter** + +In the following tutorial you'll learn how to make a Weight Converter application. You'll make use of HTML, CSS and JavaScript. At first you'll be building the basic layout of the frontend (the HTML & CSS). After you'll start writing the JavaScript logic that will `convert pounds into grams`. + +In order to speed up development you'll be using a CSS framework: [Bootstrap 4](https://www.getbootstrap.com). While coding along, have a look through the documentation in order to get familiar with the different class names to see what they do. + +- [Weight Converter App](https://www.youtube.com/watch?v=7l-ZAuU8TXc) + +###** 4. PROJECT: Grade calculator** > Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. -## SUBMIT YOUR HOMEWORK! +In this project you'll write a script that calculates grades, based on the American grading system! Let's say a student did a test and they got a 60 out of 100, this script will: + +1. convert the score into a percentage +2. calculate what grade corresponds with that percentage, and +3. shows in the command line the result: the grade and the percentage + +When writing the script, make use of the following grade scores: + +```markdown +Grade A (90% - 100%) +Grade B (80% - 89%) +Grade C (70% - 79%) +Grade D (60% - 69%) +Grade E (50% - 59%) +Grade F (0% - 49%) +``` + +These are the requirements your project needs to fulfill: + +- Make a JavaScript file with a name that describes its contents +- Use either a switch or if/else statement +- Write at least 2 comments that explain to others what a line of code is meant to do +- Make the return value of the function a template string, so you can insert variables! +- Use `node` from the command line to test if your code works as expected + +This is what the script is expected to return in the command line: + +```markdown +You got a B (85%)! +``` + +Good luck! + +## **SUBMIT YOUR HOMEWORK!** After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 7e3f0bf57..94cd80723 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -1,6 +1,6 @@ # Homework JavaScript1 Week 3 -## Todo list +## **Todo list** 1. Practice the concepts 2. JavaScript exercises @@ -8,18 +8,23 @@ 4. PROJECT: Grade calculator 5. [OPTIONAL] Extra resources -## 1. Practice the concepts +## **1. Practice the concepts** -In this section you will be doing interactice exercises, that will allow you to practice with the concepts you've learned about this week! +In this section you will be doing interactive exercises that will allow you to practice with the concepts you've learned about this week. + +In the first course you'll learn about functions, the structure and how they're used. They are a fundamental part of understanding programming and you should become very familiar with them! - [Codecademy: Functions ](https://www.codecademy.com/courses/introduction-to-javascript/lessons/functions) + +In this second course you'll learn about `higher order functions`, which we'll refer to again during the [JavaScript2](https://www.github.com/HackYourFuture/JavaScript2) module. Go through it to get familiar, but don't feel like you completely have to understand it at this point. + - [Codecademy: Higher Order Functions](https://www.codecademy.com/courses/introduction-to-javascript/lessons/higher-order-functions/) -## 2. JavaScript exercises +## **2. JavaScript exercises** In the following exercises you'll practice every concept you've learned about so far in this module. -Before you start, create a folder called `week2-scripts`. Inside, create 10 `.js` files, each dedicated to the exercises in this section. Make sure you give the files a name that reflects its content. For exercise an appropriate name would be: `greeting.js`. +> Before you start, create a folder called `week2-scripts`. Inside, create 5 `.js` files, each dedicated to the exercises in this section. Make sure you give the files a name that reflects its content. For example, for exercise 1 an appropriate name would be: `giveCompliment.js`. **Exercise 1: You are [INSERT COMPLIMENT], Noer!** @@ -29,96 +34,109 @@ There is no better way to start your day then with a compliment! - It takes 1 argument: your name - Inside the function create an array with 10 strings. Each string should be a compliment, like `"great"`, `"awesome"` +- Write logic that randomly selects a compliment +- Return a string: "You are [COMPLIMENT], [YOUR_NAME]! + +2. Call the function three times, giving each function call the same argument: your name. **Exercise 2: Dog years** You know how old your dog is in human years, but what about dog years? Calculate it! -1. Write a function named calculateDogAge. +1. Write a function named `calculateDogAge`. - - it takes 1 argument: your puppy's age. - - calculates your dog's age based on the conversion rate of 1 human year to 7 dog years. - - outputs the result to the screen like so: "Your doggie is NN years old in dog years!" +- It takes 1 argument: your puppy's age (number). +- Calculate your dog's age based on the conversion rate of 1 human year to 7 dog years. +- Return a string: "Your doggie is [CALCULATED_VALUE] years old in dog years!" 2. Call the function three times with different sets of values. **Exercise 3: Be your own fortune teller** +Why pay a fortune teller when you can just program your fortune yourself? + +1. Write a function named `tellFortune`. + +- It takes 4 arguments: number of children (number), partner's name (string), geographic location (string), job title (string). +- Randomly select values from the arrays. +- Return a string: "You will be a [JOB_TITLE] in [LOCATION], and married to [PARTNER_NAME] with [NUMBER_KIDS] kids." + +2. Create 4 arrays, `numChildren`, `partnerNames`, `locations` and `jobs`. Give each array 5 random values that make sense +3. Call the function 1 time, by passing the arrays as the argument. + **Exercise 4: Shopping at the supermarket** -Let's do some grocery shopping! We're going to get some things to cook dinner with. However, you like to spend your money and always buy too many things. So when you have more than 5 items in your shopping cart the +Let's do some grocery shopping! We're going to get some things to cook dinner with. However, you like to spend your money and always buy too many things. So when you have more than 3 items in your shopping cart the first item gets taken out. -**Exercise 5:** -**Exercise 6:** -**Exercise 7:** -**Exercise 8:** -**Exercise 9:** +1. Write a function named `addToShoppingCart`. -Why pay a fortune teller when you can just program your fortune yourself? +- It takes in 1 argument: a grocery item (string) +- Add grocery item to array. If the amount of items is more than 3 remove the first one in the array +- Return a string: "You bought [LIST_OF_GROCERY_ITEMS]!" + +2. Create an array with 2 predefined strings: `"bananas"` and `"milk"` +3. Call the function 3 times, each time with a different string as the argument. + +**Exercise 5: Total cost is ...** -1. Take the following code -2. Write a function named tellFortune that: - - takes 4 arguments: number of children, partner's name, geographic location, job title. - - outputs your fortune to the screen like so: "You will be a X in Y, and married to Z with N kids." -3. Call that function 3 times with 3 different values for the arguments. +You want to buy a couple of things from the supermarket to prepare for a party. After scanning all the items the cashier gives you the total price, but the machine a broken! Let's write her a function that does it for her instead! -Exercise ideas: +1. Write a function called `calculateTotalPrice` -- Reverse a string -- Reassign array index -- Change object key value -- Find the longest string in an array of strings -- Sort an array of numbers from small to large number -- Count the amount of occurrences of a letter in a string +- It takes 1 argument: an object that contains properties that only contain number values +- Add all the number values together +- Return a number: the total price of all items -## 3. Code along +2. Create an object named `cartForParty` with 5 properties. Each property should be a grocery item (like `beers` or `chips`) and hold a number value (like `1.75` or `0.99`) +3. Call the function 1 time, giving it the object `cartForParty` as an argument -In the following tutorial you'll learn how to make a Weight Converter application. You'll make use of HTML, CSS and JavaScript. At first you'll be building the basic layout of the frontend (the HTML & CSS). After you'll start writing the JavaScript logic that will `convert pounds into grams`. +## **3. Code along** -In order to speed up development you'll be using a CSS framework: [Bootstrap 4](https://www.getbootstrap.com). While coding along, have a look through the documentation in order to get familiar with the different class names to see what they do. +In this project you'll be building a simple meditation application, that will allow you to set a timer, loop a video and play a song! -- [Weight Converter App](https://www.youtube.com/watch?v=7l-ZAuU8TXc) +You'll be working with the