From 020f7034f44595e7732a7c37d9befa02f50aad6e Mon Sep 17 00:00:00 2001 From: Bryan MacFarlane Date: Wed, 4 Sep 2019 17:30:45 -0400 Subject: [PATCH] JavaScript walk through update (#107) * update walkthrough * review feedback --- README.md | 4 +- docs/action-versioning.md | 6 +++ docs/assets/action-releases.drawio | 1 + docs/assets/action-releases.png | Bin 0 -> 63619 bytes docs/javascript-action.md | 62 +++++++++++++++-------------- 5 files changed, 41 insertions(+), 32 deletions(-) create mode 100644 docs/assets/action-releases.drawio create mode 100644 docs/assets/action-releases.png diff --git a/README.md b/README.md index 14fdc71c..b5a2d40d 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ The toolkit provides five separate packages. See the docs for each action. Actions are units of work which can either run in a container or on the host machine. -[Choosing an action type](docs/action-types.md): Outlines the differences and why you would want to create a host or a container based action. +[Choosing an action type](docs/action-types.md): Outlines the differences and why you would want to create a JavaScript or a container based action. -[JavaScript Action Walkthrough](docs/javascript-action.md): A full walkthrough creating an action using the toolkit along with TypeScript and Jest for unit testing. It also covers a branching strategy for versioning and safely testing and releasing an action. +[JavaScript Action Walkthrough using a Template](docs/javascript-action.md): A full walkthrough creating an action using the toolkit along with TypeScript for compile time support and Jest for unit testing. It also covers a branching strategy for versioning and safely testing and releasing an action. [Docker Action Walkthrough](docs/container-action.md): Create an action that is delivered as a container and run with docker. diff --git a/docs/action-versioning.md b/docs/action-versioning.md index a8f7e7e8..4e8a6c65 100644 --- a/docs/action-versioning.md +++ b/docs/action-versioning.md @@ -41,3 +41,9 @@ git push origin v1 5. **Compatibility Breaks**: introduce a new major version branch (releases/v2) and tag (v2) if changes will break existing workflows. For example, changing inputs. See [Git-Basics-Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging) + +# Sample Workflow + +This illustrates one possible versioning workflow which the walk through covered. + +![versioning](assets/action-releases.png) diff --git a/docs/assets/action-releases.drawio b/docs/assets/action-releases.drawio new file mode 100644 index 00000000..b5a00666 --- /dev/null +++ b/docs/assets/action-releases.drawio @@ -0,0 +1 @@ +7Vtbc5s4GP01nj4lA+L+WCdp96E70910uu1TB4OMmWDkEdhx9tfvJ5AMSPIta4Mbx5mJ0R10zncVHll38/VnGi5mf5IYZyNkxOuRdT9CyHds+M8qXuoKxzPqioSmcV1lNhWP6b+YV4puyzTGRadjSUhWpotuZUTyHEdlpy6klDx3u01J1l11ESZYqXiMwkzU3jpN/T9pXM54vekGTcMfOE1mfHEfuXXDJIyeEkqWOV9xhKxp9amb56GYiz9qMQtj8tyqsh5G1h0lpKyv5us7nLHNFRsnxpUv4m5H1nhWzjMomHBZNX/aMtg8ZDA8HMV52V5u23xTYxJFQWAZNnanTngTKPPjGHaWF3OSw9c4WtIVjvmKrcWLMqQlJwMwwRrjPP7I0IRylIVFkUZ15ac0E2Og1B5RlJQ84TuSEVotbxnVZ9MisGSPPSX5ZjVUTVXSlx+beaHwEwoGUIEX7xm9jU3pRZTWafmjdd0aBaVmECuIMeo+C2TIkkZYv7mIS0JIE1zqu/BZ2Ka3puXYfcZkjuHOoQPFWVimq64QhFxqkk2/zdCvJIUbRQYXcFsIKpdvT8i3mKJ+DD6q4Q9ctG6jqapYdRjDTPfUFNvHpp2c0WG/E/kNy1rE+tkm3RaWvYox1n7GoH4YY0mM8WXG1Pd4FsbUC63CbMnvPlLVIEwBxoVR53mWlvhxEVZ7+gzmrcugSrVX1KoYIrS3qVM+bvVRiGR3iWSxicIsTXKm5wBeTFkHYGVrqqnD/nbxYIVpidc7MeStyO9isbHOz42lE11mbRtnbEe9g9cx4Kjm7NLEeY8qf63ZeJVAuxcj0E4gkcjqTaCRKtBoUIE2BxZo27scgbZUcKyrBseRwPHRcODYKjjOVYPjyVpsSFNov5vCI0yhvd8Uuv2YQs8azBS6qkBrWHRFAu3awwl08ovef//7r+Rhtfj+7UtBvkR3N5roY4TcDFYdT+AiqS5omEdwbx9FCyy0aYTvcM5wyicF+wKu4rDABfRZqWEMYLZgl1GYZWRZ7od8gWkKD8pgEYO+NlXjBSnSMiU5quTY9E9kEiWt69kqSCbqEyWNSznD0VOas0elJGa5TLwAJYrzKGWbzyGkAqZvuGAa4QE9KJjAppSyrm4LE1fsbaHgVYrgsC1OAaaPvGGexnG2TbC70nwK2XKdrifja2DTCRc6F2waZ1OTHroi9ee7wzmbWoTefZpdPs0uUu9ybKx+HBsnMG890/GQ7zng1XhBl1u2tnVPClhdBHUp67pn85602+0oOmSartmgolgyTW9MKZkzPEDDp3nydtW7Z3TVu2vZqno3+lTvl5nq3yiMgZP9r1Uedj/Kw5fzHgeeESkTubJNO9/RgXZLPUVBzDEsCFUgzGybJuCPv1214DuSftZEVHafWsFX8FAiqojisMQ1h3GFDtzMuJKLZGucZZi3EOKorr0y+85Jeg/KwO6eRv17clBmqurf7dN3DPYDfVToPA8LtoG/Z8yMpJjZDoaOmcXRXTv68lSLfUXRV3BxySfNQfcFeFBHhF+v94QEPc/u5xiSfZQN36F+juwwuWa/fo6pSYL51y3Pgd/1PIfOppiao9TfS577T6cIWrdDol2h03tcdCgZLzO3d2uDlDSEvDFujQMpeWSQziZp+X190bQvuxbIb+zJp5oH2zXJK+o7wWeqGb6rCuBNQ/ZQPEsxY71G8KZ6bF3nXCfLN5xf9QPZUVTzq/3CoGa2ytYxJgjGFFN24Mmy3oZ08Gzw0BsZH0DNwLAPcLnMea/47cIY2N1jkMBAA8N41oQYOiAhNicrvG+u3vNilv73LMfj7Xfx1r6s0GtezFQTY1tSW5chdJWrxm9KCunYxp/Exsnv8QWBApIOo7MJpZi4hdHuN3euByp/i1+5L5F5Pqx072jJkU3zUzS+7XFYzHSBzcFbtteBb22Io9kPUfc//XwZD09OOx3q55umfIJwsgQWFJtfRNbdm9+dWg//AQ== \ No newline at end of file diff --git a/docs/assets/action-releases.png b/docs/assets/action-releases.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf7e80bda01fe81f5168b5d2cbfe7607354b344 GIT binary patch literal 63619 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

%Ep9;`HQ) zFT7)?N)6dCZiT`kXXhMiK84m-G;*V_GzmyF?P6?1_4!|eIE-5R#(9+vP~7l11`NyD z(J51jm~F4cz{}9fx;ceWyT3#9nqG&~ioD&~jU2X^L}lO|@T|PragRXGx*O|zD;XfV z907XubWqr`;gz*&_0SC`S{&_ubVY1JCSG$xQKq#cvK>&?7k(B&&TKdV-G=z+YM$cA zhQT=jv_IaFCFI9Qp0lc7;F624@O{gFQ#uhUPC4mVto?bE6Cb(Kn6mJ^n6G%-endE{ z_n*xxVG9jLb^@cIooEKntC&Xq9{mblc1SEd#dT#~u>ASf+KsqZPFWj;(fQlX_eLF_ zhM#;ZC#x=150(!H6m_r8Xu`;xHiYeSZ;iX#RUAZKY^;BaDL-{ZiF-1TKU|fyeO7O* zc@0l(;)Eim?&iG}wX0X3E_E^zJ-#`Jy0`G9Jf^Fh>V6wjZ$4N)g+}oRz0!`d`nkW^ zM6?2yltLWx?~o9U@HiXJ|O`UZMFEVX1#I0NeB)SzM! zate4^uY>H^@e%=mYdL7U9p3~XoBBol#yYBN1QY@9LwKS9lyAxP`(MrQ(;3!2_A7&D zaAq$2aZ|I~6+#V1BFPT|&&w)_yfj~m`<&cTbHu+#*^;=g=_5jOLeo7;VtANE0MAgJ z?HjJ_q!=fTlcu>%QtJGZ47XwJpm}&Zd=G{oR@+{i6y6_jnKbQ~Kcm6Kg(KS^;bqJ# zFf5?+@#D1e@WBHkGn4lBKJ8nm?EBp8Ket-N!=>0)w_&e8jmIGta2UZl3NKa>v*pT8 zAyd@IKb1ZwxNk;SFG!lQ2o~z!1L(&M-_`90?`{?TzE?abxd2p4WSFkmA~KYSsmt|K zC4N;(&RY^DlW68dB;HcTjlKy{Kh_BE%KG%i|lo?pKBNH)W>sy%@i{8|7evk>pP4n6Y@K zfB~gsgu5uSwO(CrWSP{*ueGQdxL)2RPq8Uf%)-w_Xx$FLc}c#PId)| zeEwA{XDcF~$b6f%-S_v+L~!mLaoPe(-lj<)h_~96uwpjj&opF{m&OIZs#;0)9E5*H z4%j^P3@82Ti!ZeyOUUB$!_@4t!ohcwt-znJZwk4=FSi5$b;}74iZ!0>-a0Yy1jOY-vbLH1V?L{-R zEXWV`¥i?1?xB7-v#oG60t#nH|6GYCpbl+&0D-an&ndCgX&BmB+8?bNS5G59b*OMv*@)*f*a16O7TA7A$PNu*T_Pt znWWt&K7w#^5J<}{0G!^+iM~w|P}g8%5w}-A2PGzCGS33jc!y-+{^nY%r_H9D?Z`Wi zV!dmcJLuBnK1qxe$?NvLX`1hPT|GY?_YcLtkAvp`1H->fbQMx+b^fh#Gh2pY<-Z+P z<>r-w*v0vo)B-)FyV|akX^ZDs{s!IwzD z_ITVQk`f&=`Q-#Z>?v^{)#gzUU$2+7b)ntChicYA$IVB+(aysk$b$lzuK*E;MfiQN(1_|Y|o4?S1o3IE-R_soKJC3DxuEq(OUsSRXvodFCxrXEmR6X^#d_dXn* zo$MU})|9*_xCptdpZ+_*Y^w%*W2pODnsNJ0EQk+39gYf?0+!%?-Z!pnpwKd9Sk|M4 zy%A~{$@B`J0Ng#Zm3KGoOCT*!XIyfg!ruZ&fH@3?1vfL;JhOJJ0UwN#aiHHHB-|e? z0rFi9+y!KPJ?A{zW`Za(4 z{NcwEPg$?=XC2MCMtd6enI(9|1Jtin4gYM_AA!R9`P%Mp<(6utFHGKoUEJM}-%?OG zz?QR0LEyvMN$4%o1o#uOdwr7LJ&eu`kDkhI?KwI5WbKi)j!ws9cAR1#cIh~OX4p08 z=~OG6)M*PodJS#;_;ujO1Ke`C2cTJbj)RJ%J(#7?M{aj^aDTM}K;KWm6>F9Ns#Z?+ zWFqog{gTCc>V4OK=#~{Pazy0o3 zxylr%UxNx_7@fwMy zhkzZH4pI(3^0x(LmAQO9rFVYOz9)#@ee~-iD` z$lTfiND(XXwQ&NF&N@Yfg=NP8w>f7~=Qi1k6*>xG(pcypw6Tuw(pwRDr?32kY4*J0 z+NSn0>ueQ`YhZ|?*xq&a8l9fS(9@0Dwyt-^;CTfOGoD6x{8WAHaf?0H!#lQlACeSwd!JJTUh#!1$SK4f*$X z5tRGcgMkX#7Sf_+1WIEUfS3IgsN+SFzwDrmOqDE#b!s467%s{<;kg7|ZpC1HgJ4{Kzqsp1 zO`v8%TRdplM7H->CgSiZObo)WxU_bH=aLhcuQo$K8MlramPbL3YVi&x_2q(XM;?zzmxTP#d#-fE?-}c>gG48aoUN zLmYQQb2vtnXfmi6=0bvb0+}&8?Bi_{KuUyOqtf|$D4vN(B#l)1ROliKE{NR9B zP5f|xQgHZYyt|BE-8YkHDFES47R@xn0Vh&1Lp8&C2hF(S^$Q5XDIS*Ozp%H$f(TRq zQ&|A`t&P8c_5eTf^#rxoB~W#yC__1wTyL3mEB2W)_RMCI)kAS+*od5jxG&2$gn z;mNR}(WHOFA~v4Fypf)#%y`B+_km_};6>(C_mba@S|S&shnjWf-wf1PO!&xUtaDb< z?SAVa%~K$yFG#UICwURo9sMo2`B9ofAz@O(Ms{3eW&A{y;NITLo33nQE7`O4cXh_A z9n9qC+CS?lPKfA*pZ?nuC?r*hCD&JmTPCT98!WVw>z>QJ;T5B^53>IvDoVq3R-x`E zMDyb+CE_cywM1m*E(zaDH=|d3v8vP#@H6=Q4+7qKPnKNUH?=HFQH*D%>S%rV!k-#$ z=zN>F^u*@;>Bq@;rplr?+lr_wcwTJc3u+E*gbNoHI72Lu!tB|_G$+A!faW9hQfTnn zxuS$n<}Wv`?gSl2+~S#e_GhW?bAUM5^|Q1j(mM@8b2y0iVEWl zXXqr>fGR};M%VZa@yHukn>c!jg=tU3{&7NQEVn5`%?ZRla?9T3PY~E`h>juPRsbPP z!MuGhot7uZQ*%9Uj~KV}7i{Pb(eo#60>8BoR0gQrl6DOnRq9q!CL;tKu`0ao2?Ssu zYZ$tES}2>D?VhPn{e;A}qxRJVoUH@Aar00I8!SKWgVpg=)*l|l#Q zLqxSeI7dLr3&(?9HO(jZNy!_MoU8ovHKmhyeXGq$ARE`hFr{l%-AlyV)bW>+RGL*= zH-xN@wA>RG4!p9TTBajRB>s3Uj*ETPa%7N~m>(^pv3h+>Ivo8RD@|fP$D|L$gq|XP zTMUFprnj_)|Mj$ya-gi##i(=bXWUIs?G2yXR)n0UHqa{vMAR5dri2>t_RJW92_E$4 z=dPW%lL+c{jSqr!L4~vaUh#9F%)=cGW%uk^7jI8uV7U_BB*WiavvBgzv1O0GJh`s=fpgK zgLhgHbs2SJzzqfQPezPGo%(v5Gt~Erv}M7unt71-+Yq77F-Z`vOJ_16=ieH?kg|*5 zNtbd_;Cy9)$fLy+a1AF~NK=vj)tY=5Rak&m%!>T}W(81400;Nk92BF_L3`7_hmuv0a?lYDG zbNg$r)J=rGCp77ow7olxyGK$4x!9fw*IEY`FOhz6r{=GhBiv4$ek5!TK1B!KK5601 zV3%}u>u<PC2XCEa!`Vyz=(^?I{}S%w4;e zCq}&)l3ZeaQF5mHM$@kM-ko&m0Q%dVM_93|R|1G6c*BsnP#fP+lhy3Dmn4^j+ER!i zErUfdkZ;kU1Qm{uft|gV*6xzAj{_l}C5{mqGz8heS4l8FT&cgPAp`g}3#vE%{H~uY zH23X1$@_qj9lqT_t`z0UNRHFUWY#@PhH2BxZWcY~UkYv4T59K48r;IK)KFwq?+#C-RxO9=fWh$(Wz6oNu;F`N>AWBnyO(BNcaH7#p^3DB7!6e_N z#m-$z8s0pa%ZtJ^rEbB*$k5KvK)l0nGCW7-A1x#bXCTG6#1B{sSP42|Joki>8LsTh8x$Cw$V!WUEpo#1 zU7x@G`?V7E9pS}<+RFQ5@z2tdH7P}9T(<9D+h}Cxs^y>c^ z;Z^uD&gZL<(DogF?mr$1Y)!oP)DD>jIV>?OmCVm@^$@fu*0enbclUhtNXOE9w zZJ>-?u?OcfVrV}4j@MIZCKW_XG{`~1_!cnfq-r3O68>Qws$%d54;mprvdHJN9TZNj@VPG&U z+uwoCAqNk^_VeJ%V`+L1Cjx8Rpm$n?92Ny&8NX8S{n^{{U80L-fuu;tpVZj$p^F*q zmfdt=11@=|&k)BNkj1?>)=3DjNblAr&sUIh(qSS4`C`sA z)Ga4qY54lGkOk-&{3&Yo)-DU*nk&HMlPR!iPx}WIa5mp0LJ3vwVq-mGzB~@PBk^M& z!GEe!iK%^eIN+S7#qf~q^m+MSeVD)6I<5u8G9TU{m+hQbV{BuDB4i}p+B`Du7o#2S zUG-}sfjUR|e~!C6RZy|5+R5RW`xzoPg?Ya5ox1~YK9k)qrI3OUDXu=M8oNlw|{L`imKaHd(ik4m-@LK;&|nms;OHyb+{GMwA-ne28x^zLEK z?CN|&?%b=cQzF28ap5idTTUsKa4LR<-Cb}DEOgZylcxX1$fTU$Xm=q#e3?MfzDQk= zdY=5D5UWqFjDi$K^&Fqjp!T4k-xBnZSNEEa4WYwG#?pw_GqH~k8CS;5n9WkE2&r3l zssj{I?jnO`vo~*|?hd7rX5K_JjGyMaS{qFdgt2B_A0LinfR*0;53-bbdT2f@@<~0rV%Gz@m3fmU zxaCdenOWTfHf+?Ycd0J6$h(cA>?v_{+o`@y4nF>z6J6S#avT>yI8aBkv+o}~`Bt+- zI-tQu@=Z7GPR+GuefaYHD6)F}rp{(@KB=^f`i~5(D4D#;0T7^j6@Xn22G#oO2Nair zPoThN7GylMO145H4Ub9+5kOrq5gNGiu9_#mke03S|J?%=+PnfYZtG$dx;QC^=!dkz z_Zz_~ex!22v86TAkQj^AC$Tq>De1$1$^X|XX5 z5KscbVmZ--B=GI%sE;suaWYb%2lz@Afuv=u;1=`<&y{4EUF&G|ACRY3<_CUI-qF%b zqg|RznH`GLTAZC1IOkRl?pXhvViMukEXi%9fp`P928orA0M>-}^&JinMG<Y~p^l(+P_?&Cb6D-Qrdc-!)!74d_uhtMje-^V|Y7d{GCvp5+-;zK@OMyQLJs_Z)wCY5_+gL4v)9ypo_c0uKn?)c!WE|8CuHYh=j)d?RX#12irKQr!tfKd?+0qj?9~1PfQC% zAa&g9=>)+paln^p1tcL~t)UdAOMSRz<(!O#Pd}fgLpe8R-i=VB-615eWP*BJe%?p4~ufPgaxEbyjz;*bje6fsUMIqN@>o z2n%rGs9!flmS;Gl2d~MUu|O^J_efy_f~CmEZ*?9~*wXnbx=a$H>{d^$ERtSGHz4lJ zMgqiu$Tu)=3YZ@O*e_z3nED$VP1DP0$CMz04COEOh-9G)>=td-`27*7n5xHLs~2eQ z3?Ar@eCI)<%ifM2ph)G43{`+BK>W|343pG=dWOx8A_VWj+hSanMJ>n~_ z9zrNym@KQlT|`bkX{!X`h2b6e3|6=ZSO_u!CB>LNy28=&$-Z9)dsfe{+A4-y;^gGY z|B#4h03x96Pvd_U)mnYzVs(%9_W3R(4K}aJ+e8q%eU)mq2uSg+-`SexTc zQznF%VJwBrSE%9@*LqID>4pYy{_o@F2IKC$9QP5y(0V5YxI%nhRt3-jqY{DbX+|Tf z&C`#90{sfpQqvK7H<*Y}SJnhLF|Oc?Tjvz@t$~f;Bl>(^vBLC@+JmGtE)6LLO$deH zctKESP<_{sc;|~$w=yAAi+GJ0^#wI1c=uZz$q|XR870gH3tc=oe6S1riy{X)5M2yA zCV|@2OTgfxl?5nmmw%5ze{phnC8s!HY{FGPOATAVQAP?+J^)SzxQtfpo5*z8XcrKO z3sTK#UVyzPQ~oj$^zlI&w!wr0VhS=x*b1W>lejJ7h!!8)*FryGpAl&Mq`Qy+goL5< zBUdumwy*SLE>4q*D-EVB)ItHw&f)XYs)^$`B}BFq(ABVMx3lxd`T8Z^viP)HRJMpo ztH@xnwis%So6H$GC5m~#kl3Uoq_C?PT0)reWkM6aO8eOL@;_h~R2V<~NUW0zNZwO} z*l@P#psWpH9E?7s5cgp`jwKCY`=0XI`E^t;tVS|iuKN^kNh-!ilTiVLE93l&r%(e8 z)VrVtz33JfA(JFKHQEt@NtP;ZM4U2u8arwL!5)se%h_XdT5&#^~tWsF3BA%!lfe#m|17_HZX4CTnDl zq|j^-@{5sAjJGB&saSd72bT=$b5;mf7MHGDI^swa%EA?!()vmJkcCK|){|OnkFZAO zQ2M*u-NA2u~O}@geB?I-d6Ldxvgs0_7&d2*Yghvwk4snhcjveK8u5l_E}dp za(hljm{YFBsuH9;y-D0OW^j|)Q8f#DEuRRFAb|P32?t@=j;_P?PU=6A>Y=8kW(AE{-I+gl(}v3dBM?YC3L zP7%lH5QT$Vr_cO;`6%@{7s`*c>hJ<|tx2RYJ?v3>lx9cJnHPbeRZaIHK(+)e#zR_;NTID2&AIAd=`tPL5}cM&^myVmNR~oQu7;rVhithEZ$3 z%QyedUC*#9Dz!dtG5c}wqh-rFA!;GCx~TxoqnpZ^MEZtT7`apn8nh8>y#R9-GsLUnisnRw-mB^-Owcd`W8j zJ{Mcqz{<-=hZo90;Q-{LF=D1~vA-6sjPge_#+$WIsG$iJGWDAWQhQu{>ljCg47Qizu(2Kz?C67G=9;+ zsXDHM?wh+m#J~hpdAt-*Cy+Gcvh2+6S#q!{>q(Up@QDptx4bTTs`nHQS#+7IbFjdZ=)0#O5yBO9 zRzdg<)&*}d8l3{eu;xMAy6NS2sLJ@_I_&+{0l$k*M=+(p_+ud!T#j$)4A*`W5Q_EQ zFqx|Q4y(M;5#XCf(3Jr~!oJs~VE2Li?p51QL;MWsbP-@9=?R;0b68Oe|JQ=8ui!yv zil&sI;n;dD#b|*6&<*G2hXsmB7jfT6ELi$pi47sp>@bhEy9irB)Dnz_D1jhc1?0sK zpqltABrbB-&Jld*o6{p0F;+5RaiPCWvMvf|pYXa=STY*f=kPJk5UINjzJ;fSr$L!a zaNBx_N1=l6ba13u3+=00>o$Yg3+03VoYePmMnp%vMV@-dlzZGoFI`ZnD}do|OT!dh zwnI(YCz@Nxt_4tT3xqa7akx3Q7S>jG-IGV6=zy!tD-$qEoT;MshP-8(UP?5!+(SU&O*TGM| zq$sg%%pGO@7X*D%knkWi!3IoPsKNYoSO!rJGwON=C)|$0mZ<3l>~k0=cFjY8eJ}M| z3twt*XQF81^w)0Jh=AW})*D@*Vio%CdxUQlPJ`$npp;c^rQI3U`{$4X)0Y4_M zjvDhU;&x!O1a>vlN+5ba8_}ZDa#b3cZ?azX+KwxL*-nwlwQIh)*m;B zmjfplqXNGpCcPQqR_;>HW(i~ZNPtXNCWc)5INTo7#Pv_dUg;aQA-8Sa{Su|EAJzN+ z`o8vwIvg!Cu(lM~6{E7HS+54tENjEK6bqH5>Gv3rayD~+UR1JWUWLEF+5$@z6BsB( zXeEL9u;mJTm1!(h4wUVHR(dwH6<7^(gNF37l%Ff*inD~)#;@c3$BfK?!}0r7Q-XEN zY*%e@9URzZ8lgjEN<^dxn1KSEq^FKn+1(%R@42gc-Cpob>&NGbR0RfpNgze84l-@R z`b%|H;4cRgh@H4seL?W5Ohr*CAIe?u##X{X7U4v3LaUs$78$}3>0ZiDNstPb^>c}D z4)zzj;!w1DPQnl#&#lW&U!s&Qwnc9Q;9fK+AyHCm2Vq*6U?jTmzxxR=?3<1J#!=V} zfDUclzDAYeg46<|0UryQ`|lw)BACIo{cvkC;+alwS1kCd=Fg>8*d63ch4xV7-_^pC zo`Y|`Nof9n@e}(Q5{h8^m17rm6XOUm_s4M_&~}N+Bjx0zfxS6&-YvUyd<_VOf5{@N zL_KsO*IBU%ED7+0$CS|Qa0Q}LmJzQ|yek~s2>MVB{L+_tf$Z1IOg~EQQrJ5R>%|}A zh~0Giui*&!E!M*<7ptmV8(vdaK0A)bK}!_?bL9lnd%tGnjQuf;82pan%n!&SCLX&^ z$T-O4^#&+rD|1OIr1ny{G*D8w5Mywld3cU4$hR9}z;2WlsbykUF|?E5HqJIPbbeb* zT9^#XU6jfk!pK1%odUcMxtM)4pc}B;_(KzMCG2A8 zcyvq?NeS$_>=gly-Qaudp;q1zlfSl8$nyIDTE;OtL*07zeQg-4H5Xj;-WY47dHNVZ zsQ+M_(fz}FY*k!^VCZzk7>bE{%|X5V%wyzVhR3SVW9ZKlmF(}hm$(|&E7;9Jof7Wj ziIJj-Am85G|Ft1oG3jNTiuXtc>$JmLFAs#F4QK{JVed%{5%6E-DR_@nvEQk~4eWiX zlUI1*e}A`f(XJ0dC%*wN?s2Gt-M_g1JtpAY*RT6p2{l+EPKrceO7nTPZYtN;Ah6y) zxox{UZ7HPj92|^5L6h&fvI5iw|13E>L{5-Q&=3mthS^Ca`0{jO5GnXUZyDp_$!T%h z4TmYQpZDrELJ`+X8btynym{!z6la3?Amzh<={A*TfZOa1Ci)Kc6^1=Kv~e3cP^_Aw zE)YrMj$fIJQARnwyM6Dky+PkFco(aRN&IYORqFV-_=+08lA8tt==Sl2YDUj zvcGB`$Ll-Jy9YnCjWMbge>c4r3Xp}m1|jwS%fzFCu^LN2_FgLh-iLD@`rx0UxXQDt zwJQS8lM55b`9->m4*rZh-%+iXf6}sMvDcCJWQ`%Sc?_7U+}iIXtf?Y6(5HtMl8|v8 z!eLbHHkGI|FZ(Ua82$ChLh7Xm5C1;_qqWNs8XF_xa{gu7s3zZ$AHtVjBosSrLevXF zWgT*3LNV>vPlmrlC2F1i-1fH^B*VFL5K4%|{&G?56%RxP_B)rP%N}0(Va}@{xQSc+ z3WA$@eC)S&nQWX>X9j6`udUW*S;>i8uO{`D%UHQun|~K!%}*FlLp12}TFp{n&ol>u z4r(A%=KTLRTmn@zTUoWNUHw^m z6}CB|ZB~!Jm3kzhxeogXovCi z@>-0p>P?`2@x@giK9j3$QhRA^IACWKnNZVV*lod!y<)8|d-95^LLB#j+5guX6NEx# z^YiJwKX6_#c3j_)RVO#z$zjWv24jCdOwr-4xqjW!UQY2L;&OLmr@k6%EKqsvS|mW^ ze$u|p*zIkI#l|!c3I6u0rp7xn%wPh(_Ibm?U;=r=O8CEr0-iwc-;>0nF4sF(n3(k! z1mmrcBJ{$)s%Lt6vPcNU$d5TCX;bfAP9c(*b4>p_n8JEh_(ay2Pjrs2`Tl>ln(iM@ z0h1ax2D^l8i`=W1%?Q2tLy3x*SSA>>gOG>Z;w;OhsY09GS?g`{S}s&O%_`K4A@c1+z?%j}@@xJ)_jY3|?*^-T!W& zaQXNYz~EFNckIvRFaEKgpA0^g``8S4ZQ+2ek_V7@=Cu#sa=EKlkC=;99UWo&^#Pf6 zZy-^0!m4RtKvra!?NNE-SE7j+Xo^@+T+HtM2VgqHpZqZgWC=Pf@uj0`+SK z)~=wlnC08|m(}P+wab`F5P|8jb@L96ju}iu7Mo(vk&bxz`gJ;TG!-sSMYGFucIFY46?SANdUk zOQ3Tiwxt-}+|m3~b|6OF0sbZ@s%7?QfMJoZSW4-oI>=f<0!ir2s+)pX!TI<-AR%f? z&Il&pG*}i=YSFph+G+KR-X;JH@A^ z87$K7Q{mV?C($oYb_bKcv|ar31oD|IK({~x(0sfXBIxaZetum7L}DKK_=wx0AvLXR zzd8TN?vpTbMX_cgm%`;{F9mXD=|9nRMS7{vuyB-b$)Yy_i}j3X8+6Sh1nSE26BPhn z#PlrfU{^js*!&lm)=j|524a@d`8FCF8rbd+?Q!coM&8&%=(kqi)X0O4CG4m`_InLWFC@D*0C;i;&}Q_~r8g=SUoePs{yeMzpz==3A%MtQto-{W8PB&3%iD}U z-kiL712Iwux=?e0083R_4L>C>d zw8p6hy_Mrxz7$qeP!(Way+9jHY-^s#;}8I#B-MR4i~A4AXyR&M`$EMBe*x+eX;pJT zK{{5z^gWH?TOPF9gX}RoSMuX$xWt^ldCUH>+yuR=NJLRUh;6d+_>rM+j`wInj{s28 z7VF|879Mjv1-LlIwgkem?mIgNXn$afaqItjm_4sGfcBPvyF)^0xPGl$bR~@Q6f`as zN8W`80WfCI3}R}&Us|_Ons1lCuMPNv#q;5?1t1jJ4HV8ck4j(cO#wo{QUq*VU%UIu zmh@e8{y*-#znAw`2%OlK77q?diETsyEBO&%zftU8gXDid@wC-8_uw4yQ3i zBi}2C90|i~9*lcf8cZx)Iv;$*3Iqfkkz5n86%f0u z7l*)YOyDLLkT1Fibk)Na$vYlg08Ba`9R{2mFZF)~>oVP~_wAM&WZ5hVaN^VRCIoyJ zJZ4hv>b(^5r7tdRF%7~!2Czr_=9-*{NdX#6P%4_94yX$9&moscm$)p(PvBitnB18s zVEPky^;8qW7+;@kppYcKb=dK5KBE(;TQi9|H_&Iy=m>yVNE;O;aVmHDIzttPjZ8#Q zAbD#jn5M#rq!REpF8oxBq5c=Inn{I=TA;Id1MKJcTZGIjzREGsofKUvfvMGubq5;V zLv2r=c7D|tE}{Ki!!py$=I<>>H|Zc`9FX|ropR87sRO1;H+-v@=jO_755k$8QIFq4)<@D)id-C zq;^E9GzyOhtVXKp3R~@;0|I=~1goNux6(Y|L%PX({S`D&ENBRQo2{rt6V74HP4p}l zPPm<8hD5u@b52qD)*L=kIs$IfE!s22xd{SY;@a$Tm;c4tXNtZ+lFgPeeux!ScF}HG zj1eR`awKxyq<79um+L+`-dQ4bz0oZ!+)CqJlQG&K2s#l*M%TquK%(#d0jN7Iu~*EP z)?aP2KS0fTZsMr_d}u^(SbyC&=kHa+tUvT2+JR_)_~caTkeor*%*+0*`s+T+G)*~@ z1Z=npFL_Nuwkplx8FY{6@J5Mm2iX`5PowPHK(B?!(*OW=fBpKk-5<3!;IHE8g#cev z#`>ez3-GsR^wY*gQOkxQWV_wlwtpL*QJ=<758J`P19Kj4CA-XO!a32O1@>SK{0#Td zQG6lZyD)BRct+qn@Ezd*CC)T_H&dYI>W~hauhxSPfR|s2duWy(n7L?U1va+(BnKJD z^J-oJyz7a=*q108nM$IYC|#N}9h0EHK3a7{@l%CDK#)Xdzczkz74!o`jxSZqqYl1QN!a|6&e4hu=x+I z;##Z~w3}PbxkDG@ZRe(EnO$4%hfxuahi5ZIO@XQd`BI_y)0HE}qn^_wti~^fu0-}^ z78{3q`aS;7gFm+|d5a~5wU=%N2iXA2`BZFmW;q@4O(cOjl2XF0iyF)j`CP;A>wigmM+iIwW zrql%e0NsPs6|&;H>(Y{o8y>`$C{zmNkBtblN3kjPeY7In<`Thu{*0n4R$b*w9xBiQ z=Xu;4k5+@2XD)O5`M1r6HgsvsW;**$9dnYy4_mj-ztP{vHtw^tD!Bia|NYsk2nh%Z;FoeD$qo8}MDmK6KjQ-4A;8sxP&9dH<*m(sgkh=>sHmMW7A zB5V&h&Uyx~0MbqZoD!Rw+QQS47>wQ0hyfP+YNlcoXF)KO2YQXxfuc-KmTaQpr? z4!OK-(3S;k@z_3jdVneyH1_HcdiN5W0%F+U{d)Ai^#})I0kp80*m=SIG^G=1(7<@p zdFEaZOIGNuETiaKT6?is@Ps6y7|R$3i-fY((wg_9Q~fOuW}-A>Kfbk(fG3XmY+4l( zV-fCgjHHPI-BcL2m%)XC3T5MfD2WTEJmIs0;hu!7=iY|O}yvUW^q~9oU^vA2fvsG3!J^mjqVqvnN1?5tyGD*O_ zXsC)xAH%oMbUATSn!KrqFg}w^6D#`}v@ld^ChBmJasS6_=qS)wm!@IGn*NC)H&KTs z-5|AZS$9GR|Mc<^e;e;7`pk$dYhUk|MF&lZRzf?zgkHRB?>(@&h?W7iDC{wiM!j+c zj}`;u%?o#a^=0=hO@g-Jo%Xu05Rm#XslMhh`bw>fx_5HZU#Lxf&3*t9jf>Wal`HE> z>Q3)94@3i+$8*3eVszh@j|mA(qkDRGY^!4S#Pxznc)s1k=c&zLxij%CTUlH}Aw#HZT2e?fP6 z7xRs^fq`J3IJ$3buPKE$eXVND?*%900^;5qzUV#D!fXAyG>MVceS<%0>3n`Z90C>0 z@>;O<;17ieNV&2}ZKY623t23`mcY?y)EU*7`MU8nsDvhj2IJdQB zUo_yUn zW*=!mdV(!6jIw!^$^3U0e?Vt=D5WLVIN=hgm|1Ezn~@@J%(_wCg!?a%*SE#>^j+>0 z$hn0E+gP-)s_k!i)22k;$454`o;1ET#K@f6{H=6ef=bxtYcU!!R%>g&4eGs!oGj`; z$)rEac$Qqg==&ufU4$$yl?(ecd_O}at${Z)$=_n&MD-bG_Lw)`lYDb0gmr7PZGjn4 zK+(v;x!rtD7YmG`J!K z0G6>(;1x*QrnbgUTS2A6^bL6+ocQFjQl^#)W4$b2Ki39vQy|Q?V^GDLMHSrco6n0( zlk8KTB}KfmW~jv{?g%TEN>Lg4a81~E%jrEMo=E;@ z;V*DDK2sv$(V2T5hPn2?q?~O|ZiRk&u=d-15N9Cxk1ub1jFjSL%T@f%3#Wxv&&IG( zDgznsF^9YTYdr(O^CT~x08%Vt`-HiRyEFRwa>y_7eLh>I2KFq`D-9RvS$Jp8v~}MI zI^1G6&ksB3apK4ZOKR^R9?w7i`BP1YW!z0$KhS_?C_T)ZX!TutvdWG?+yk_2MDtB# zEhyOS&D7GBJ=PyA0=(3jXi2JdDg&l(=10OAhnF?H&QwD1QVHz(xke5yN(z#IU9&$- zlzpsJ5XBeM40;pO;cF0oA6Mo#d=?*1&PkI_qN!Ob=2IbO%$Kt^XJF`WZ1%o6x{oJzRd&OCfR$_q|Zc)p>pXw2HI>|^nCmw_vbI>h`DjDHAxcQw$hbDDUl!z@(F}_$Ewkzbbr-KJHZ7*c6 zovvQ#JSI9zS1`)a9glXH-JLi{G8$*9mo`?f9{Lu;`L=u4GLNGOT`0Sp#Oa}%7hP1^ z@T**3#r1v{hK|E&#MX%{#@CuU$iFW@q;ZwgftWh>?ek6x-)8AGsh%YUzwkLhz1Lsn z`S*buzy8vN{L3u;vB#fVD-DJ8?tcmR(8oRVzRPvSnjxXE=7A7vlTn^g)nz2}Fe@+9S*60ALlB5gFLG zn9_$99pg79%~6fizpn_81yMC>W2;3(JwEG`{_@~a$6cl(XX3&8|7iZ6O#(qXdzke|TC^sUE`9l@MUm^5f&BlN zJBJ)F_p>C~|5*Df$B}{XrM2g+j8#`a&hKwDCi&RZwHT>qKbd-P3>prSnE95IYMvEO zm+_!=(@YwZB|YE~GE0nN8*Hz)a}#gM%X4V9=PZCyCsNctM)NqJ)v<_4qPS{BSRLN5YN%)SFJ{U)L|pR`X<3 zI1_#bdeKP!UTpQW7++gceM$cf&KBqQVALG1R4FU_26jelgQ=#|m-jm}DDby_CF!~I zlK;KKsGGN77PXN0GV}Oy1}M|7qv0}}pAP;AqRal^>Us9!KW-e|Rmp;9Bq?m}6%iEk z*}m}KTp-gxwE?Nro)eODbzPQ-uof+pE~;riiy{dso+!lB9fpr;WIT19{8;$<$(x9A zk_uM3##BkoXK&v=8}r_jdJ4k3cz326d!N(DmZ6w_*XRR@SG*=h5}WW*>nCd?-7e`X z5+%I#kG;MTNV1so3kbso+?dA>HbqaB!K51f6*I9~(f zA3v|RQ&GL;zWy2Hqsg4RGXZroohLa4#Ek66Cm4M*A17MSZcD5v=Cqzaji1G(y@>hx z(UWSBU?=&ospYm0ZbZ;2G!~k$c(DtWJpuJi8(g-gIjY|l)j}9OAlcykRAjYARZ>8% zY>=kka$Ts|`uGTFrZcoja^$|f(#a+oO1B4k1u&QY7OIJqY~kiApZ*3k%Hv$tg!+ow zlO4yd`?@=aKaN2L6jv(Z893(1u=TE|pZ2i_{;68za3kr_G~T?Ylio8@c!bQqcUidi z$nyWsSa;g#*X9>Ec zq~851Uoag!t#rS|kshgKfAnBHV}nk3VP?9YrJII)rg{pJMUkwL!1UUmIe4lp zN`GzcVM(oiVsASAR*y)_+Ql`l_w?HER<>jQrrHhhYd24Na&n(lf7m1YI|kSg-R9)! zXD|jtNc#~j6t7*o1jW&ZfUxxkM%|)B1+zySCk-jMPK=VAta_WX(LfQ>QUf~7f1OX! zzrm282xM40k&a&UdPq<9pgT#7N0``u4LNt4Gam=3|NH4s5j>e|NO*r0hI&%$EZL?k zxoPlU3saDNA_M+|-*=phx`k4iggx4kW}>*TfI~vmkCR?vR&0R_(g?#m`LFkxhqQRV zH+_rn8i3&0?B|5{3mTCN&E6TtC+q5CdArsl;$*7}rF#4apqxVhl-AexH0SR2D!+ab zduH_$(nj1FMtZ^ctSd;vHNeZ;JHO3u{^Tdu-s6&=?2l-Cui z+o$lOY`2h4b~oWJ%m4rDFvAqD4^{;~?7E1A{55I0r1iXU*d*RjYUt6dP5E)bXj9ky zm9<^p=()9%f_qxJ)WH~8s^2OnWUkpoyssWb{Jvoisa@)F9|43tZcX0PFj%U_(@Kui zFxifsBG3%C5+-pBA|b0d zP;=o|c{hGW%*Fz|tw$tWM!nT9|5Xc-IUxpUh0v!fAdOe>pSYOlGVh_H$cBAr`)2({ zJ}8BLiISd8td(>cj?w!?qqy0lOpMslJp{{c=pP-*{WDPA(-OM|N=)1q)^WMZvwY>}X_o*YoK0^7^{Ph@&v5P3Sf@$m> zD23yU<`BQ9`O)eP5MX&E*xAvsL>t-l@l<;MY0fZYiD4vE1K5q*Xw2eiU#dxAyQ8y{1#J;z|F^H2WAX+XoOudUA<55y>AIAl zV7|v{ZiUO(3mq+aaehTb#dN@z=6qVC?F7*H5P|DxrN44I{$m!M>Vlx{6 zfrMot0RaL1H-W5DZYX%hPCwjoWhKZiZ2ZJ7PYZRrSqB#Uzl=y=BN;U&y~^wH$GTl& zO3o!>&FVTA_v%$i;A}^dJ!quj%ad_j1bqtra}rJlme4j#Ylmm1u<*J@zraOv^Bg)s z|I^)t8SwRay)aa0p4IE&H}gI2I(+N>3*b_-n)M-+RcQ{72_GYT0VqKnKp-k)YF6VD zTDTAkBvYeNi%h(x2}m2b#-`6eEe3N7U1sb<;tw zz+|sd@o1OxH)9iEiZr0oQX;FUcsv8@6C)-vUGL}PfeNGkj_72RC5r=!Rbz6jSX1vU zwULe0Pg(=omrJx4MbUSwqd>X?9QJ*f7G92V(Cv?6Jjc8QVMlmC7{f| znh>W`0dc7|t6xJ^^=C>#0^{v6q>fo-lYYq6*846!ebTU!;^I%-dAzqvVtMN)L@zpb!D3Yn z?61tViiKAz&ze|c}adisB2NZDyE-?FeXWlFj(M>&H=LOR3Lb9^SpN(JMD=)gn zPJjlimdUihq&fpyZJ!>2#&?KY>s07DsMTsgVrU4+nPeM(T2L~mL<)9V{cVxtzA4hH z=`{<_x>g1sTuJXBf>-e?F)ogNQ0)_Ry+*+Uv{tXs>@Yx2kD=1&Acp-Q_ER$Lq^fu- za|H6FuU}y335T799%V7#wbwctnK-JLFKHL5b%P^xK8Fdn_Jv9mw8%_Bd+2D8Zk%HL z9gNdavj$r`4(9C{!I6m~pW82e^8t*DEw5a`d)mildD)S0^!ufqCmUHnt&hRb7hN6~ zMMtTDv0^2N5jjk$w}a0@r7L`OVsbLF8i=IzOkLG75;edOeAlj1e)6U{P8XRh(M2qG z8|J-y^JaewoDUa076&7*ct4H@3H6B2vOA#ZGxjDmb&L)BJ)P%-UPnv%{{8z+VP4+E zwO%#hIHb*DDsk5YR9dgWG5@!{JfcFw>M&KhZUZjd_#!<0r#(%2PtQ|YFk=`|Yq(3S zGtF=X4Xg%j*w@-;5vgvfF%W$8qhgiYz4z#mL}}`WW`vZQ!lTrA!Y>Xd8Gcfnx^mxZ z0mODp^*}X89~#p-AE5_#CC3hGJE;7J%ONnaWUrYqY;v(6dG}OsKj;+I9|axn1PL+- zo0-(BC-tyeA`bLV;74$xva-1MBFweqSc8O|R5EKRnaj5b{^ITaA2;^a)-xlGKH#wU zZowB){@41e*qV69XLTP~ClZM(v&PEKH`}Du*vo1YN&~c)|I0%w=b=7~=#mE>=(b-0 zkarYEA(pU$jt<2eD<=r)&(=Vr$5Rt%K7!+gey0+N1kj>f+CZKW!huKkc9QK|zM6&X zG(G<(EY6kYYk1anoMwOG^;f zC31}`S5yFjr~H;|-5f>}1kUr-79eE=K7ryFQtxt}2U0TCnYdHH)1$`IqPAdN6Stw3 z=!TgDC>P2=>M%zhdcNE%`8e<^d(g(>wRAN3gz6tGYYQU-xqPwA<(o8aq)1#BRsbcu z5g|yJ`Jj(;#ZNr&U{@ZbkP{nW=doU)I@&sp7|9sLj587-o1 z=SqJ=v-H%(2Czr+F9Mk_97?VN{+Jq1if?BANZ@VNnc#bZ>=mwYS; z0hJwkq3S=cFnp~Qt`kv^xc=0G*%fYkWi0vj-Mg2C8BS+PK(%&2TUB-^>y~gdn_|NO zxW7JbwV(f4YP$kzU2Wid9J?~pbW07DixMF@+ZQX!oBV>rK=@-N%I?qQD8LNf`anNh z5C^0zwau@;YCLnNTpEB;Bo1Us3fjsq3k@HSz9M5KU7EHhq_h%RSjL}bKaUgNy!izT zBj(ePkkekp&mN!Q;pZm@5T`Q;{KUz@HeKXB#M+PdQvD;<2xudfz;(+8{_XL1ZngOL z;0jT4p=Lfa{2{3DZM=mX>&qAN;F7b2JBq@jWm)&6sZ8U zcOOO*x274evVA;3oN{pBPXUTY-JrAe05ZAk&g#T*NPIZNEq>B6O$`mxOZUFUI3Q;3 zckWPW$t=7dn+Q4%Fm|uiPz^P@T_}mNBbtoiS1HhJd4u&p)uVb^aOZiLwKO#3b3h`h zFc1#7IC|h1ti@SD_}BOfR5WbA0KBQ!+*J0IQHIHfGXSfihw|5sj;2U)l zuXO?I;`aCi{{EQPL_H$gP7l3LIbYCEqPoytC4P!#jXGEdNso)a$`@}#QJNX1kO_-U z3=+?B+VG2ygppsYnHI$&->j`nsg7AEdW5!+5ou`t$tq|7Rrj$2Jf#|>gmwM~VhW}r zTd1deK#FSxJ$YzXp6hD`G9+>pbpvmZl*2`f=Xh-0OJJR=n>&~YBqAz^d_Z`ps)nSv zJpp3lad&id*hb++e7*LDcMD#?gbk9k0hVLC}uu zYHug!4zu`(dqX&1#_zm?#I*EWIlVsTg|;6;E5dPI+OLwA&Jf8;~}wj5*kV} z1`x{)tE;P(Q6gTSfLN_WOM6pQwfYbg!=e#Ay%``EY7Z(jgEQe$02p@0A8e1fj%qCy z8d!znn(PUM)vsP-zT-`h7@Pbbzy8$fW@A*r?RPg2dYZx(h_v;W4E=zQVP=*mA?L#;9L$HX1+{F&zLOY#y*czwNa5R@_m~61ILjRPsLaz{I>j z=Kc?aFSHt@2g2Z}Ut@nmz%=Da54e%_c;90?y_I{=a$6`hs&okucgHVHMYuAQXD)^4 zt#HHp>{!Ir#xCa~9a}Hj5Afu3NL45c5g^mpr8?{JKsy*f%oZ3Fb8t#ZCJ3_zkoRef zk$%|H!e$Xs%-gqt%D}zLt^?8JXET1_5H;VM)n0%Y zg2W~zsd{aM>@`q2PRcORP8t#Xm*Sfc5^w>GnG81x?bfNok4Q!^iDv!)ukc&}gQ7|8 z8#itofgi;9x2~@2wWAiofV+$ch@hShi8TC;gtKqcD{i$A!o3j)k3ozK z4Er?)m$XNsQFaoxnr^d1`Y@l`@cQWgs*$_rVD~qyM~HQKF9GXLLSO=sQ5<&!p>i=E zo={eXw5LYVQEKWiUhrJn^=~;60GeOHRD>dPzJ=H+uR7hNOZOEF;mBkxk5qEPFJWQf z)h|%GMokfij_7S6M^Po+6mEFtXJj8aRf8<$8NP1-I_$t5L|n8bF5sF!-p}*5EB|nf z_j6r~RwQ(LB<1savHxS=7V=boz=a@B91K7nL%mpk6|VQL6A+pDLzs$X3?1OHvTl4J zJ9+I3r0?;EDKJgL%=p8+W8(vFY;=*^UK!{dUN6VfhdmfPVHAF#5WT z!Q**b8j5j+A~@fakp1yd{tI*z1Bed8YXYO}>};WLU%%d5hEo*>CD3w5clU9!^Lu}n z+4h?+RzJ)HY2JFp+)qOQ3+M-aWxh_J9{ODvC<4Y%-@aQcq`$ZdAHFl5;@FIAD{4}> zYae6F0@LO*Cq-01cF|`Vksk~MzURa}Tid?ho#_uQp8QK1(0G`j%507{f7fl^#quR4|UButVT? z$W_b)qrXn~q;dgCt6s*{r+C00j((q=eFVjskkPyN&`Z?+^_|aCOI1UGQ+Pbhb}Z!! zZaAw)Na(_Ke!hFJgSbmjIv?dmRrG>{fGZ|GUg8mC>?crANeIiz*4Ao2hmo7XlMf6- z<{mAa)KDH2TkqYX7YA|~^EKMoAS~KtE9AmudL1b8^4oBnROspG`k@499|ceBeJ~cg z1Gi7yGGzZM1t@buflhx^2&w9r|Ki1cOSlj$es`sN627$C_J7^eJ zE&pp5K91YT0I}=JKnDkhBk)nzD}W1vA$;7}gSE*fa}TzED^sF( z1c^Z;@=iAP_url7IbI&GAK6VvNYFnxPDx2oeE9I;DLMv**+Y0R-S*dfrS~9MZh%Q$ zxj;YOUnz)ltF$B@Y%<V0TYq}>O z2rGw0))b$vNQFYcem~$*bsXa2Tk(+I-wpx5A#a=V;KmlfTIK2hao>uBut5w(pVTG@ zk*DR}P07 zaRVgR@QMekp+qRD@+Z_)AMvIzBQ;t4n>RA`SD%tGUUnK5$pZCgT`l>oyV(b%Id6)h z1O)_|K^8L-0@}(UeE2^QnOqBmD^Vd3P-TSkUU&e!t#pUFCxDkP`^WkfyHu&D;ZjQY z$VY$0-H?wA3qv(Z2L9hP3|V&Rf!*^C$;EI1G8O9I$P5?-#-~Xc7&c`>{h>BrH$|p=+pGf=cx4 z1oHruJBABx=W}uOa%etGp2HgpO|ec^7k5nM>T{|I5?JwLeyAw6rH$;#YbYpBC}Fxr zI0izf;NG0#@y}T(_X4!%j^CM-GDvk(=ifSIWrdo*GXX~q}{;F)kf zS_HouaXl$cD+SlzOa#+}Wtg;wto+O1*S<#s?1d$gc?CMz!RMo|230w_&3^BgqUF}- zv^h`yb8lptvlEGJI2ZzmRf%NQ-RBx#XO7G_U7>7*Qn%z7fbJumY;~V;Leo1)E`Cfs z5C6QghRQyPfHU2bHX=sB>kXz4ow7AlLdijly^=#5$G#;N(CuSmo>oG5`BuzIZZZ;l zG1hoa&Txw#FCQ|iE%e)2@q88e4P1II0l*|`3BD}TubiEjqd~7S80^}{O#%J9QbWbv zmv-@G_qoukN{0RzEDb5DfSwDeJ68(g;TYBc(^mc6M0Vh;k6Lm`OC1_#H5I4 zkYd|8_YTxp=(&&-0$tcGOyj`rD~xGO_T0o@yTWYJB9x z@0EE#kb5x_X=a5?-tzf%4~5?$b3`~wS7HHQ|E8r0o zA+^38L`eIowA4h~QMirxz^zxt5g_nnT6Y4dV7M4zOTBVbNM(*3e6Dj(*Y!QYRhr4N zA_;NRHgadmIKmz#6#j}oIs1eb&sEPWie$U)!sjs)SDDm3OP43`4urq1pPT-HVot(! z`y2>g+0G2TB;i-8+qrK~`2BKQv8+<#MSP1!zRbN+R!k;!tCM20&}4vCJqxy9WU+7R zWHlIqp>AdMg+9v{8J-_hLKiQ7?#WQ5>VoyKpjp#JqKR`P?wxK_Pkc+DiX>ib{-D?B!qV%P)J)2LqBdz!C+o`FbulHH$Vz~ zy8V_`987F&O}^&SsgOh7vya0ha~?@m1VqIes;4Df<(lwK40(zbTJK9!}5_$q_4Qp$KP1>1ycmxarAOb~^F92#YwruGiyr zh(v#+ogJP(vnGKdzhyTqixTW)WE`~gzq0PSk#HI>0__%?f6A!uSR_c16-!mo?Sd-8 zmL2tda*d02K29K%8`OXK>ogt}4S;(FqhLuFjxd79#pDg)ER?Up5%jZ#z7>lcsnQdM zV5!qR0VEL1b~*ZGe#nqE-1_Z)O%=pQRp=(^hOC|0dR`q6VjKfbDg5+MqvFCE;}?au z%ApGJCIjtiJ!@rA+4GrkPYb38Z9T@asWn9NH}y8kQc9x*(tet;uigJF&^J~attCII z*7;CB(b}51Skh_w0^^IBZPXIg{Y`f7R=KE^*^!RpAQFr)sgT6eI^DPcEh%$q_0saD z^%an+TY5_lLJigN{hvT@HW;jrCj0?)mU9Cln0tFnPCHzj0?h#$Y=sP+b#Cgd87Z@W z9_hToCgX##P;{X}{^|T!gNfwN_QHv%pix-v$Pv7AMY>({V;-coX0Ee=S-cfwf&=f= ziZD7=cd#Ye&1p790rtAtB3T28PdN^cJ0|ph{>`DDus>=TzTnMQ){WNwRyJsyGwN#e zW>1zgrn_{Y#bnfwCL+>h_uM<(rGPh-7~wMpyKWM#2gfYg?ean8A<}Ir&hE-N;qvB0 zMZ@_sn%6F_Al`Fe>ob-HqIkt zdnPQPx<@SyNBhVs2d6#h`Q9_rlXlOvbx%x5YC&d|R9J?kbc3EToz{8JtOWsdlN?yu+XWwC5&Ws|_$ISzxXgXnuR!;Eu(<`xRU5 zOF=Y!_`01WOX_={F_In|+n!#PX||+pN0C!L#Bn_n*HJ`oXnt^>Is5L@vB}lLO%irx zBH!t8-<6ykV>$BUN6E`3er9e*NuC>oM1=C>i!wwQd9wO?d(t&(#_Urdc@q|)6wNAs zN@0Kg-Tm*cNx6M)+;isoWf<{70l>UWaJYHs_i~I}0A%KlUMO9KYHR+heQ&`0%?n06 zMm#Q!8F5_LLgKZ@&M5svT$%D29aXe{=)yymTk>+*(x|t};U%v9hDLABRF9G|*fLIf zEZfj|)ufH=#Epz(>87l#&Rr9c7*u}QVfR-*PK0R|m(8#EuDH*kt9MWfQ^n>y{Z7iZ zk?DMD%S!x8As^|Qwtj3BJTytN64+U?NdpM#2dHq=1Kzt%1mHGU_K^cnt=m^hk|(_Qt?V@kAowWy|Fhh0awKrb7ptm5r%$$Fv~cI1S3QBi|~>5L-V@abQEgazBl!X;|t;!)uEqt5TOzE%oA7l3Bg# zu2~Ii0%3elMIn0Pwe_HFM`55t%nS$KO4OoiJvAhD7(F|#hJvaw1MWZcuUy=2GxtE_ zd`A$_jVE9+XvUCrQ5R9ch=i2Ul<;H)#*Uv4s=A?9q&Uvub+L-YB?PQq;>_r~)E+kb zsJ(={3!ilDEZ&+)uJ&EAd1Lall;KhLuFIw!1I|<(H@v*bOkcPgeaSEB@-WPCl-h|L zSxmdPB5(Uwcy_#k%>AL5lyQ}{wS%bNkqgn3gQ=`onjIG}p2U3<;cM1-0ihM@i zlc)tR#3SCUfyy2ZZHOlOk;*fE?3u%DM^qUv@x`<^41WW-4X{2d{1R%Fu#2Ko3WhrJ z$G)|(C}@w!g$CT~5i`HCyn61%bZO`7`%_VoO;dKMr}PrNM!(M-DqzUfq=JRd?3Of{ z%@=fGJ-O*g*DOlYyP>%Ie4*!^N^~-`s@J_?Se1THj-(!j5g&Gg!4jKch0~e(Mt?Dj zkWMomsIU)Im3A_E^dBdzDkCQ}<8;{ZOKwuP7iP6*D+i2?uI^$iy^1RotY1G|8L0U8 zROdtAzGGZ0o(Mgo+I7^SlTY#TWjo4M%a!Dcqm^W@A<_cg`cHpog^i_-pT<*pH+bJ&SB}O9EH2#d;cw=U4Zxp*mVR?dHy^g}v%J zm>8w%^e|Chpugo8@k`Cit>#PL#cm0SWJP>W$&})k=Xc`79HiY}&m}f3Fh%5mevZs_ zk`N2pg_ST2j*PwZg4~!7+CTOrF%~+M^O&SSvP_rNp)%D~5^H3yf zyE|rx5)}M)3sHi8ny^d%hacqN)%u<>dQmMfPys-o(6L&tX&9PqDsE#9XBM{_*@BzQ z65{VMAFZ%&*YNLgZQ!>LPe_&6f2=6O6}buKQ!!xGVgcdqgK4bH(Dinv<=5nJ!$ycCE&y)#t#^fVq9v&j32EZ4FUqJ@l5Ijt~>^-Ly0Dwp7iK%xv=m z_rmLl{ZlVYs6_=!(MJgS+UdrskaB$v2-7L`S~Y`-ZAy4xk$?Y~qUP5gHW4yf0Jpfc z{Yp+a4>y)1WvfMGa9-*6K`(_wVQ4V3V~OFtbVc`_;ZF&SHjE;qNm9Z}NVn z1h=9~p;T;UvV(emv@IFw=|yKKX1nf7MZao~Ij<}N_O%wFar+y9O-8WDN_YVp!_q;Q zlvSVux}FK7Rfh`A)jz=}rl9WMtvr)&c~!w`4h|Q=l-c@RkX&h(jDDRr+pQ4KS1(@% zLzW{--IZOb!rz(b?&#`b5H2`v`}~=HErGXpoktn+JW!0m(uymtR85;L4;8Xm+g6om z-|hQ-FRo8hmJ(500Q4vftY}zEZA58W&F@1WvTB~guR`7SnfQa>%@fczm}!Cr=6&Dx zQ4*t!34axoJBO5hPMA_J_013*wIyslmW?_0p>Jt3(D7G>TMpo3&k*x(kskw4)_#fd zbSS928yj!KsSLL5Xe?&5K(QUctaQQ!QPDCwpETEDfLs&-zIaf z>TF2YxY8^rL7oSK2{#Nw6>1`VjclNZ4}6xFWN34rNEv$pzBGzPZ*Rk1{5=bmKg{j* zJ>06Ded8!%8@2J~5v;FYf{^Kc8i1;eB$GH1Z*6ZX0ud6WX9V6%e?08&(7NFQ!g?S; zg~LW?+?b0`04H`92{x#GXlowbe;A@j-Yq>v(8}_tz){No;g<2a1vTHj zub32b#9lcxtl~)#cFwbgxu+)pWwlikS`C`K@civP@v0uAiSMOZM*jCTxO!lSe*`wK z*dBD+g&1c)(y(bJ{9_9`_~9)z!}?vu^KUwIL(=b$NQ!gu7u%hf@&I2#+5<1^-26D&s!~Kq4 ze{UaPsVGsA=Kh(T%>=|tQ|R=yBF%Hl(Fqq5P&>U&j(H~+Npvv0=%`viUqV|x-%lR% zfhpUbN>}s7rf{a4k+@3a^!u2h-W@vectn5` z#D?2ka8GFraQI;rmzL&QHF9`_TfGsdZ}Q+N4a+d=&Bz~?dutAHK*`Dk1TC<(=zcqc zn=8vx$(@%Qcx|7Of2X?c!^FYa{1xK7(54Aiz%-Wu4YT|@l8<`m)HJ~R8K2&;ktK~q zJmx0BXdoN2j0Z2cVLPzj|MdZ;h;PJghbQi&17++<6T9_o2viSoGE@FK{yHHe31~|n45vok3)D~Sp_Aj4 z_YLg#D87VJN&cPtvH)(elfrXV@-5wAG@NcQ8j4$v9b=yHL**}Qvr9!$l40S>yeIM& zEavat2&yH(Mxt)fj_Y~FuSs`)Yxw9wbCU}VB`X^^okcjf)Kl$cvynd)tn3gmNbYO- zZ!0+#1ntc*HWtinmn#XAHr%u!t2Lk-k*P+bCZ4%QT(5P&k3kJx{4dc8cOHzLIdi75 zJ4Jef9rMnrH=UU#n2W0ip!HG2X7e?8y+k)$-Z`Hg>kAO_DaT}&X8+>h_o}CX+WQ#S zyrAh+&7fnk?n=pgIjpKXDV%U z?idPyO5<8;6F?&O<>n2Z;>7&6{?czfTB6@y`pA!76USVcZG087Ym?3IRp$Q5gn%{- ziRT{NL4c}IW|lb}1Fa4^W$S9*FsbDY(iM^2kUm17xi|PDY3;vbDSUs)IH#%+Hwyeu ztD^;)8_^WG%~rLK(>(vZd`GSm#|W&cA*=sw3ryeb`_Pl~Gr*i7(vY1BIejjPkVxJa zNSF~dpk*U-gV*alOYR-xyN1uaDvjypZ=F>S<0q?mSNiVz>F3D9MPRyyPYcl9rPB*0 ztHiDyeW4A19cETTRUMEzEYFShQ8ie6<{0AmwB<$K>K}3A&oU2631ozWiYG*SG6d*9d9A*nOPhN5%`DQ4bR>4?BrGPh|ViX z7}k;iO2iFq$e1g2Kx{h4`Q^|R$OM=F<~TyXvg4QMJxiHlAQqfu^MJ`9@5wCh%I}Z{ zovz)cx(j5LHg>VrwhmF33ER2mNyKIG3G~X7DW_)=o$F3( zT#eH=OWKD(;^uD0d;5OC)2h75sIHicT69Q8xqbJxiQ&`1W@sqywfI4az%b`KtJVzF zj9T%bf^clIZKyhLP9GccN{46H$2Bx+x7fQcRBLzqZhz%JC zeCPt8w#PaLzDH=&PJMK~VQK67|8}{^E>bM$)Lr0h6$UyVr%(@+gT(%~t?6?f$NoAi z)FPvLa8^A<1*9nFNVPXkB7y`Ou2;u6Ql6Be_d&-;kts`OP1|#{(#%E)I0-AAM+U>V zIs&F(7QTg5338xws66%(T2yeP?8f?(7wns7#Q0_uSi ztk}Ywj+~JYt#tFoz$C9RPkm=|N6lSvLWL((7d*PBl^s-{-hQG8$laGa2OWu``2LBM zS=xy}AE1EDNj0+;7X9t}_s_${)};We4w7Q8pcK)=tPh^b+$NCI#4hig*X#z9!!VaI zrkadDpY4Xb<#$qEmUMjk-GXG3Z*WCa-fsAZxqo33Hg?=Oo+A_CsFmvXn4If!+Lm-4 zMrXk&aq^EyL`{OQx!LByMt7rv>v)|?C&_#=>YmJa5i>|(bH|YEoX@nq>;7U5nTual zmjlizlZXWh>=YMw)qU2H3&cIBSNyLSTb22{6k7SCa?E?@ao^Y5MeOitC$G>T9Appx zW<^kRbHvAQ4^nQqwdg)Df}Z%*+4BKQI+MmOvLLldU`;L>_ieA6Y;Z9B3jR5-(Ff0x zYx?wDWs?!-;vLx9H;@*uV+YB+IsWiz@<0b=f>$q#%QN*C6D2k^ceBz?Mzs9>xLxLBsQBv0rV-6t!CC(M) zj4wO?0&Xr|TjcUUuPfd`%N@C=vm${NIGGeoB9mL-uDkM&LC~nGB*^7&KU9-G^Dw4* zWCwIdy(;6C!y~bvHwgc%8G83*ET&95=bw$3*|vTpsSj?9qVNc$NBQC3^%le=pbqer z%u!o-0(fheFsUdZf;AV6do(G7mhvLkragsqYKYm#C<;Wm*Pse%&BGl&RH@Lc-o**r zgHOW(xl8yO(y{|z%VzwnYu)-htSZy(0%|M~s#;a#GUXM5-?tFxYCZG;n-Mw2{sM0p zCtq+^p@U0phSHqq_UE#Q1EHz*Z`VPH)?%~917(Z1%ZRy;irVPQ$hR?x!~_h;kOnY+ zG2qG2|HSzPBrRAOgji0>9YfXs=J$?y*bZJ1NuUi27{jMJAgS%lrcY8l^hd9EL<{`-~~=nf2pJT zY5LV%d{uv}Q_qFajR!^adK8_mh>^~An`K>f)yOSZWPGHCIsQ{hnDf;`tdi&sVjL8m z9KWL~!MG_La05q!32q`q8SymnJ+0P!tp94R1nL>kjpH7 zB%KsTdC2Av9(a~IJ5qUnECWFM?$C4oRl;vQAMXhMyN62uKf)Bu3<1t^LR1hmj^9^$ zNJCHGv122zgjXIzY_QX#qsjSa9_ru(Xb zH|+Fc#vD~fBtnEbp2(s@r(7AXnme#X$>S}RMDkt)`htDxHRn{W&BM=~sR=Mfz4YN^ zjCzt54S+%ekT<%RAAo(i=*?&{$;+@8Z6QIqn*$cXsKE~UF9~w@8bFS|EZ%A1~P zQ80fkN@DD;==faEYn$&qbOXyhX=zf7Si8CZ!^4bxj~HfDn-I%g&#K3@_~B$4)s(2vNtD+|7f%V1Ne z!*+9%qpC^W63mEQQQ9%R^6?*E@Ny)PC$9YLI4?K4B#G--j}T$&(ZUz`*&*7|5PgX- z#P!zuS5fb90-WMv1_LA6BhK;CQFlul^k$jPRK56}I&D+ytg*bT)Eth2uo8`0_(SITcNx;8%2O245a<7gje5tUHu3;A{8tP-(|Dm5 zZ-vMi1iqRUSu|POjJuY&8UGa}>)5g(J8u-tdn(DuE_4suDOabJ{QK3_HGdRU64eNu z6`f^-cSoa+fDZe^!V6DCMJZ|6zVZp|X?Mvr&|&?xb8;`X{AG1Fw^ugyi>OlfvTMkb z8nVT^?I9*C@=jRMxW-Y8 zH#V-L_uS12(A25{{x3f#u=~Gka@;f&%eiFQy@#HTr~R8HVkJ^=D!Wz&ciok=Rm@HI zN5FjH0`E*fn6b({x(j9Bk6)*^z_*^-9nN@^x){4d<5!%v`bqqA7vu)#)G8O3*bHTu z{u2pjeu6~Z<}fS_q>L{>;Wkp*tuRt*{|%@Nx@*7yEPSI7Ad{af;E%~7=N6oF;j`9Q zw2+`*{Lo_kKpj^38lf`QDE%*m)Usp7+%g*%#}D*Td!oQi2K zE9CNHblCW_7x85cLHJX=_64Uy&J>ll2xIT6Y+k=D%Arik&jvMF+s|$1BnDWM@ea|Cg<=S*saiajk*0aGCtiF{6+xA;?Ttf3 zXd5qqc7CXEq5^nHL%HUS4QhV#CY8v9E(r8ljR1>x0@Olo96cTi(L=F1^SD;MB0WNWcJsK zdfuns6el5k5=};S%~|~McJSb*Et;Yi*ROMu31lfWz5YZ;*Yx2oAqDTnFxuC8w|RSv z$nJBT=O$a&|9jlO=(+Oef>=^@^n}@Bf%@#*((dtz@tuyt)Z=z8kJQ;!Igh=;UKgFO z?J8QB3x(M1?YU7S)5r1?!={8)Njb7xxpTp0_(tC%@g;7jE&gE6sWm+NKrQt(PTPDm zw4(o?*O=?J>bB}o@_jO@2vpkD;p)32Axb0^B*84ugZCXNx__OGbEK$!Z-dsbUT?>E z@gVm5(~$=kqXMjY!*VZ>`*LE-!yGdd&h5_q%3*y+vTc67%8W|ENu?V=;22f&|c&F;p-czlaaevwlWb_emFtVVO0-I}d@b3Ielc-i{ajQprBjmxQ_lyW0sHQrB4+iTd~sS!?l$98h84(?*_skItNst(h+#q-{w;O~%B!8q=TpDyKo>ERj_XgFK%l8f4@ zG5S(2C(D*UQR8~ndPV9u`}ary$yD_+denPRvu)wbWL?^w%n@%d!HEkPF`>~#2TJ`l zI}HihGAcF??i~Z`&uL}_lVo0|L$ai9ri;-9KKnhNw|Zrjc8;EJ&V8X#Oc>HV*D%zB zRv4F}A6ucHZu3l*#FbMKr?_`l0Q%=@e_>JK-Z*CP;bZyQm1LQsrC8N5p5zybZP8cQ z(Q+dk1XtM!u3D6mzzqFvGyW;5NnH@U7H{xOAAviGg6~3B!rMnbt}}`cTFyBdro2_V zqf4GaUMbX~v1~gQ-RYe-xx$4_rkK-k3MOr$YkHv}mgtyKZckZZZaPRmslnoQI+`z# z{;d&^h6DSh&}E+8mr1|fs|g@=9Lu23+TPnOx$GAeZ*#q5+PT$QV!w69jK)c)!#Bd+ zr8_;(F)(M^ADeDa{xc`D|3PAi#$t8xvcz{7rjc>>S)XDAHM{9rZC&8iqm=Kk!#sn6@xCvg9M{DZL{BeCD@ zXCzkq)VOBvVEBC__w>q)yPWHM|F(KL4w#z9?+iXPta%`-ncp`Z_k(#=>U1^Vtw_)z z8=;$gc==n>>Y`xJuQD0g3vB8hj;gOKUAABBwg%KMxV!Ifm|QQTI(1J>55Anl`m72lrkb>Q09vn4xlyZ57lxOSGPoCHpVyPM!C4yao$(erS zkdWZn2pg9C>EGL!WAhn((3Yg?m;URFZA$ShH0KVRrRP$t@04cq*)_^Xn(Gn2c%YF@ zGdVc9GB8Nu78{$j#SlCi8WaU(0!UOOme!ZD$;; zDc#sa&O})XktpkKeiC{8`5f&mlgPc6&|9;dMe1o(19?vAl3yo=s5?t7RtS#Gyv@bW zXPSxmMkZEb1M8m+`Q8|F+*I>YAbN{E6$*1H>mb8~%LS3?imi?$W*%H^lH2n8Sk0O_XgCJV0XIftf8cVXw-Ht4 z(5r$i$u)B_RO9Yh*YVs=Cj0!Ud|ZZpn@q&?_kel*+=ig%7VXPPquPuc@a6d3=k}QN*K{(zRATCviedgxhTb=nZ#KB(BJ_6uaqpJ zb)ShJ8SP5yV*KFf2yWu3SB}ABuSV%aks$|%dRPjt@n)wi^xclv!#Jb7hvE4>T$gey zU>MI2X`!aQh1+Xe1*J)QrD)?=jm-8yo!Brn6Fa(^>hKOGxxY~LlZ^yUb8ETNwufYG zJ*u?d+)@1TStD9niIFxrqMA^C?Ai5Izgepy=3tjujgsa;!J#)H8st@uAKGg*rs{<) z?%ZUfUNUVQ8W+wV?zU{2U@ST_6p2GEFCIr;f^%*AHaVes%7=yG153sH-tp!AF|h zfi7stlYjX(z&P4C*Tk=sp+cyPjBdIi@|}2vZgJ*rPuBL^Q#UaMM0=&&-!>wwx=*e#p6yuGdClR4>(~$a$qSo()?eYwU9U6TXB=8h z8-3-|IDmGc@U}K|C8%2eT~p=9vii;Fw}x3&HG1?s1y142xNP&~ZaK978%FkolOTr2 zWg#)f!}e&{l6bXlqbsNw4oH_to%ed4Sp=ozAnq}_kUpnK(v4qxUfj z&nsZ`2kaig%~M2WWcD+liR5*CBt7E6T?@X3zU(v%)m6G0#(r&?`woLL*~Cu_2j~|D zFEkeXb#{CyTlm+hvg;<^kruYLEis#+Bu!7xCf`|sx~Ms^xF}5^W6GdJD?2FKgSkm$ zJoG4?Rj(Yh((XC6!U%5PgPLeZXNBx2vGD3N9_xDNK%x$}l{psyyaM9qX)RQ` z+aBGb(kUF{>rp(|^4BAkX^!=`^9)z!y4^LFvMW2TjfkwoKEKqym#oT;_7`iKDLV<` z!387+60O1xR3;_&zVXj>B$e($8!ZS6=(nP?>MyWjD8VUiBy~F(z=W9(8*aF*i^-ay z)sMeKeK&USECKAe_;t;sH^-l7Ws{2cCcpp6;~lzVbMPTvvXr+{g0QOi@Ist}v(em2 zzA#R||7>kSc)r!=KYC=8rQ(iBj&H07G7|@72_CZT&lpAMP6X!Z{@s@H44Gn?#fhl5 z)lX>jJ-H_NueL_IDr((5Z+Pc?3f1R2s>B54+?t)GZ+4KEu80OWy@tGWgJuTv-&Z1~ z6%o?rZ;1d+b!in=pZ}+>D-VZqegCuBD_ge0)F~uHWzE-8O5ZHeVyszWY{MXHwwZBC z2ZH26K0}E}L#7`NIITN4*KSmB8ITG6o z6<9b8RraBLE~#0WJkw6QXjSUx!jSNn0VlA5iRZFZ4-GBMq|RYN(bbZ25z>}5el!Eg z`~+RfsqIBYjEuHO2Y8}4In&zhJy-?z26|W-4Ro)92kG4X`gy=yb_9ZBN zg7ppBR=FJvC5ybAsGqoDTnBxj4k}i`sE1C0{p9y0WfBH%>R#-t73h+0t68LzDDHWvCjB)r`qI(tD;{eU$M|?`n7*uA8u?kF zD6_7BHJYdpa=c!AsXw;n#`2jZ=Vj8o9$<9ae;xn$R>DU*=l7|T%J9)e>pSpdbKxrh zAURNTF_6m*>3VrpEWdgP->^Oo1sUZ!$p#ELD2AH|m3In9>qO7HLFu!J6WG3m<^JjE zeT9XEta2zJnd%zS6!`@z8qypE<-oXA2KMf!KZy(!HI|OIwcIieXq^|ged0jO$bNd6 z7MuAftyCe~uJn&HiC$=Jk)asG@Ia4=#%RyCDcdv{;j;nuCv#6VP zjctmuH`fnE1HB@kRKVym4=7=RXFQCBG|bhyLd6=EU3q0< zZiiLO`clcvTp8Llw>y?>UJ65NpIdxPVjxl@X2)_~4|hx&BhXYKv$?+>wGe0fRzK*Y ze2=o8&lgQq*B6o}hb08HK-Hp!`;>QAf>jHxW`iLex3s+ay=@xuUa%^HK8lhcvNAKr za#J6v!|4P56y5nwpWxK-;_p2^r%%10yy-vj3FR(&n2_CvMh#XKM7QEUp1o!x8=?d$>S?%*olO=I05F(uo)s<%CO0-%lA&?dxaKG=BL(?DOKIs zEZ?U`&5Y&J5ARw^!y>g3zPze>8n_at=kUAG+7W0p%|MR(=4ce)C+a)|2@QX+k5^W$ zH-4e2oK2f7_8Fc#9AsfM42ce{CZDn=UILVwy7bA!|MqGsTY2V0^rMm|O?%w68*%2Y z(?ES>e%|5ER}>2kkTqnwsc8E9VWP?dnp9h8%i?hnVrN`$Rq^Wx9h z7Y;L)NAaH&JVd{J@gTT+;9saZyE>L*;QB?szJJX#_>#=&BiE`wx{Evzak?84W)gAe zW`Q2PT)^E`dG{P*?F1kK^ksn^_S-D#|&&v zv#AS)E5{&z`=-}PHH>Wt`bIN#hBTD>P+1$*_?~R@VK1(>u=Gj+BVY;h#1*+F;dw+L zW>%0vOE@Hf?o7-*j*6jE-CC43!4Kho^P-Jh-w?cFmu36;`y@L;b;Z$WY?aQTKKbu^|m)N5DWp9l|<`9V#4>wE7qX~#41#2E6PD0PqV!P?i=mM8?!+Choggft||c^ z)hkhy=NpoVZGj}HP5mP&4mnmLm8rV@djtKlj%KN!|BYvTsoqzsxdwhowxzXw!Qra= zp36)@meq6M(`1g%WwS+1MU)#xMhLI%wH64RbKo!j%C`&S|L12`5b!wm<0^BwVQWF02E%}T(h!?E5j`IXQw?+ z5gsDTMu&$@yHlC9KBBW`JM&c*!XH%7K}@LeCAalpxATYQ)5w zckjGj+FWQ&_==%sCVD$J%Q} zJQUsC;lHtbiKSobY7lN6=q$Y!5SiIGGlk${oZGaxSl4Zh1-FWtNZPfN88zZ>hOUE~7M^Ac}vUSGr{c{eOGR@BR;n z{J2|Ko2M-ml3YpLdGn(e3Wiu1fPNlP^Q9}-%E@)`LuF=jgdHy^GS}@BK$-KJET)Pz zOztKZg9fQWJcY z`CziC!mmP}I-d{e!W`RYHAL z?2Q9bC1XsiudjdI?qQHEMhZ}ofSXd-;eY-3(*N%FFbGMoJJn1Mtq(O`)qc(i`5$Zk zV9>QxA|l=x90#OJ=UEzXT(E}-d&2{sMhb?_{>Bh@(pZBc1|W;*h%6;#W9Ar+Fb|qM2H|3Sm`@iA)f%IFTvHNXQ>q9SVag%V6xQ|;Ipj{F zU)H@uVWtq2x}Q0=RdGwal)UW{MmqiZ9Ig z;(z9(-4$VQDvnK_skjRC6Dh? zuK~9z@eDyXF7QB+%10JT_fn+x}Vqn zpolz@I>fqd6^eV?haIj9@dkFn@sDak?)dAU8RYCAAABG+oQqV@h=ohu>P?QFZe(`P!tA zV+ObDzs`@k3%S9eoS-S++<&8Lml8?HQN5D9|EM-||1~h&m0&BWnfo>=6y!DMN@p1nmZGDkuD!tx3Be@Ih{8b znoN5PpP=zv5NUj-2^!Z5ht6Jd&5t91Wa2ODmp~2R92}R--K|qK6US-5k@^w+Jre6H zDnJm31cr#(v|R2f5DU;xZ&ZKu7XB_v5@wFNWL#JMf8_vCs`ys`0r~;sT8K44uoQ3x zZUTo%CZxwm4_Mw-H&i?&kVHos3dblh?ZGg>kK_l>K$toutFNeUN)uUqhf$$R+5daPh~*M30e!zSWLt=D%0a(Cb0)neS7JIzp< z>a(jSiTz0N8?g7uJ9%R7)$@g%XubihsY2?QuE6$6@uLhhIK)Rc2)JcOjC?@5|1zXp z6ESxF?j_1d^K}`5nP=I`We5ndudER|!2k7af@oJ(lMx|Ob~h?H1>#5@O4OGfeDI%;)|p+I zAbFF-NEWlqNkEKfU2;4pr9Z-qwmrxBBSmCXmlI=LVe$IfdyUyT=Wg4DC_fcEu5;|c zSzqT?iD_$Swh8q?3K4v>wGkoZTIrNi27)JOj1mpgMyw=Fc+=Z?Gjf4DwBD;;@Js0WK@9XURHJ#32h2uMZc&&#}7;$zxP z{hyo!P1jyCTvdT@y2ukC3D6b{w9M(ShfFtgDzyoQfj5(U4-{kw>mr8FV$JRqhn*zaNweLec)?q>P92jUdhYLg zxkQEHfFtoWajAwT*zC5{s3pA|=&8p%3!0I5y3O4U`$yR<1;;uILiT-cs}V5Px3`99 zfLLP@qv09IX8YE$Gp$X^hCA%5Jy4B;b>fBycDQEDWAAxTJes9&80d94_FmE=d!$;ZsOIm>PnG z6oQ4oMqPecy;HK15GFFoK%(KDh|>q;A_QX24RI2H$0WL-WeI%+PyyO!>g?d!LI;HK zLK}67g#FBepb20Q_>BSEhHw{h(ik>cM;UHq>oZS#a)g9YQivCnGQtUZh}{nUsBD;V9a_MDtsb|%6WdV zt|?$$SzuI95gC(bi({Qq8H{wLskcRj6E2!;@n_5$dU`px$jsFyvCq$SUBx@3_=b1}Y`Uide21zh=>4Z$x zoR>JlCUe==++cZ~xTpOyrD$Yek(G^I8-taX?_&9lbfxcR?MU}zk)XXX3fTFoE{fc* zr)uKjdoMaRzte|xWB$P=AbZ84$BjN zFm&i}>-Q)SKAE@iAeM1hr3LEx=)ZIwbcaZt)~Ae$wqoa2E)MJXW9$*=elFN^BRO hown&9uUmoyxZKVAY@FWL`!MM5)QQu_smDB%{tt>?_h NOTE: The location of the repo will be how users will reference your action in their workflow file with the using keyword. - -e.g. To use https://github.com/actions/setup-node, user's will author: - -```yaml -steps: - uses: actions/setup-node@master +```bash +$ git clone +$ cd myaction ``` +Update the `author` element in the package.json file. + # Dev Workflow The workflow below describes one possible workflow with a branching strategy. Others exist. -> Key Point: the branch that users reference in their workflow files should reference an action that has **only** the production dependencies. +> Key Point: the branch that users reference in their workflow files should reference an action from a distribution branch that **only** has the production dependencies. -The workflow below describes a strategy where you code in master (with node_modules ignored) with a v1 branch users reference and contains the product references. Actions are self contained referenced on the github graph of repos. +The workflow below describes a strategy where you code in master (with node_modules ignored) with a distribution releases/v1 branch users reference via a tag. Actions are self contained referenced from the github graph of repos, downloaded by the runner and run intact at runtime. ## Install Dependencies -After creating a repo from the template and cloning it, you will be in master. The command below will install the toolkit, other dependencies and dev dependencies +After creating a repo from the template and cloning it, you will be in master. The command below will install the toolkit, other dependencies and dev dependencies. node_modules are ignored in the coding master branch. ```bash $ npm install @@ -39,24 +37,24 @@ $ npm install ## Define Metadata -Your action has a name and a description. Update the author. - -Create inputs that your unit of work will need. These will be what workflow authors set with the `with:` keyword. +Your action has a name and a description. Update all fields . ```yaml -name: 'My new action' -description: 'A test action' -author: 'GitHub' +name: 'Hello' +description: 'Outputs Hello to a named input' +author: 'me' inputs: - myInput: - description: 'Input to use' - default: 'world' + name: + description: 'the name to say hello to' + default: 'World' runs: using: 'node12' main: 'lib/main.js' ``` +The `name` input will be referenced by workflow authors using the `with:` keyword. + Note that the action will be run with node 12 (carried by the runner) and the entry point is specified with `main:` ## Change Code and Add Tests @@ -68,8 +66,8 @@ import * as core from '@actions/core'; async function run() { try { - const myInput = core.getInput('myInput'); - core.debug(`Hello ${myInput}!`); + const nameInput = core.getInput('name'); + console.log(`Hello ${nameInput}!`); } catch (error) { core.setFailed(error.message); } @@ -78,14 +76,14 @@ async function run() { run(); ``` -Modify tests in `__tests__/main.test.ts`. The template uses [jest](https://github.com/facebook/jest). +Note that tests are in `__tests__/main.test.ts`. The template uses [jest](https://github.com/facebook/jest) to get you started with unit testing. ## Build and Test ```bash $ npm run build -> node12-template-action@0.0.0 build /Users/user/Projects/testnode12 +> javascript-template-action@0.0.0 build /Users/user/Projects/myaction > tsc $ npm test @@ -107,12 +105,12 @@ $ git add $ git commit -m "Message" ``` -## Publish a v1-release Action +## Publish a releases/v1 Action -After changing some files, create a v1-release branch which we will release +After changing some files, create a releases/v1 branch which we will release ```bash -$ git checkout -b v1-release +$ git checkout -b releases/v1 ``` > NOTE: We will provide tooling and an action to automate this soon. @@ -139,7 +137,9 @@ Once the action has a self contained version in the v1-release branch, you can t ```yaml steps: - uses: {org}/{reponame}@v1-release + uses: myorg/myaction@releases/v1 + with: + name: World! ``` ## Release Current Changes as v1 @@ -154,7 +154,9 @@ Users can now reference your action in their workflows with ```yaml steps: - uses: {org}/{reponame}@v1 + uses: myorg/myaction@v1 + with: + name: World! ```