From edb1394561bb9bba24dae3de29f5e8abc1f23b0f Mon Sep 17 00:00:00 2001 From: Russell Cohen Date: Thu, 23 Jun 2022 12:27:43 -0400 Subject: [PATCH] Upgrade to Gradle 7 (#1411) * Upgrade to Gradle 7 * Document the upgrade and update changelogs --- CHANGELOG.next.toml | 7 +- README.md | 2 +- aws/sdk-codegen/build.gradle.kts | 1 - codegen-server/build.gradle.kts | 1 - codegen-server/python/build.gradle.kts | 1 - codegen/build.gradle.kts | 1 - gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 7 +- gradlew | 277 ++++++++++++++--------- gradlew.bat | 43 ++-- settings.gradle.kts | 1 - 12 files changed, 200 insertions(+), 143 deletions(-) diff --git a/CHANGELOG.next.toml b/CHANGELOG.next.toml index 1dffbf7f6..fd0c2300c 100644 --- a/CHANGELOG.next.toml +++ b/CHANGELOG.next.toml @@ -9,4 +9,9 @@ # message = "Fix typos in module documentation for generated crates" # references = ["smithy-rs#920"] # meta = { "breaking" = false, "tada" = false, "bug" = false } -# author = "rcoh" \ No newline at end of file +# author = "rcoh" +[[smithy-rs]] +message = "Upgrade to Gradle 7. This change is not a breaking change, however, users of smithy-rs will need to switch to JDK 17" +references = ["smithy-rs#1411", "smithy-rs#1167"] +meta = { "breaking" = false, "tada" = true, "bug" = false } +author = "rcoh" diff --git a/README.md b/README.md index ac9bf5815..caa664693 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The latest unreleased SDK build can be found in [aws-sdk-rust/next](https://gith Setup ----- -1. `./gradlew` will setup gradle for you. JDK 11 is required. +1. `./gradlew` will setup gradle for you. JDK 17 is required. 2. Running tests requires a working Rust installation. See [Rust docs](https://www.rust-lang.org/learn/get-started) for installation instructions on your platform. Minimum supported Rust version is the latest released Rust version, although older versions may work. diff --git a/aws/sdk-codegen/build.gradle.kts b/aws/sdk-codegen/build.gradle.kts index 14751ad2e..e15274718 100644 --- a/aws/sdk-codegen/build.gradle.kts +++ b/aws/sdk-codegen/build.gradle.kts @@ -8,7 +8,6 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat plugins { kotlin("jvm") jacoco - maven `maven-publish` } diff --git a/codegen-server/build.gradle.kts b/codegen-server/build.gradle.kts index 315bf3c44..7c761586e 100644 --- a/codegen-server/build.gradle.kts +++ b/codegen-server/build.gradle.kts @@ -7,7 +7,6 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat plugins { kotlin("jvm") - maven `maven-publish` } diff --git a/codegen-server/python/build.gradle.kts b/codegen-server/python/build.gradle.kts index c042410ca..8bcb446d7 100644 --- a/codegen-server/python/build.gradle.kts +++ b/codegen-server/python/build.gradle.kts @@ -7,7 +7,6 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat plugins { kotlin("jvm") - maven `maven-publish` } diff --git a/codegen/build.gradle.kts b/codegen/build.gradle.kts index f9e786d11..e73271af8 100644 --- a/codegen/build.gradle.kts +++ b/codegen/build.gradle.kts @@ -9,7 +9,6 @@ plugins { kotlin("jvm") id("org.jetbrains.dokka") jacoco - maven `maven-publish` } diff --git a/gradle.properties b/gradle.properties index 413f6a2c8..d41360f27 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ kotlin.code.style=official smithyVersion=1.21.0 # kotlin -kotlinVersion=1.6.20 +kotlinVersion=1.6.21 # testing/utility ktlintVersion=0.45.2 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 26684 zcmbQXo_WGW<_+46yi-*#FWbq;z#z%Yz@R^Qg0k3TKSq&y6+^w`oW$bd-k{TYmmNfG zFYhQdT-Nf%wQ`C>yk}&W( z=H!SiF)WrZK6iEJ_jBjt@7FU_bnRvMykm36ZpL>H_x1bA^VgWLip|She7CqUYIUvN z1KH;*g?310FTU5)UT>RvK1Dxync(xzGv}6GO||i@%3HwQ_+hHyDY^7b8X|{}7v}vA zyno6h_@cVDyK?Gc@yd5x#~*}bT`s+3mAZX?iH3t(r<7&m+OQf$`%@mzFM7{ic~0fj zl9%qW>04ix-+HfMd^IfLWxU2z3ClGh|J;Q*cKy7ew#tPoCr0hbijx_fD#F z4&1u$JC*mMknV=^qq}k*Hk)PIi2jH&+H7fj?c19duQn?Se`vq7k)eF&tz9|18HXO% zKl=1z=d%h6dAI8?T(>lp)%}+~GW}J&<%7Kes{93W%Pkl$=v@pleii(Q^WxS`cN~-7 zX=lw(e-Y@K@23!4_42OM;;Qc(d#0{Bl65rZu+`f3+cysIRxt*~9X*&I;LXg!#lXP9 z!N9=a$dJjXvs#{&fkB0ffk77<&ocG5gN4H-{>v8M+@RB8sMXoD(aDoRSbuBShOl0Z z3#__~xm#}Oom5xmo2NG{P>IYZcopoJqOO* z+Bb;z6nB`FQ`~vR6a&>{srRQoI8HTCP7HJ7nVu4JtlH?= zgnH5AdwK-KQeqB<7VeRE@(WnkS`d4PT`0&%X@_F6jJayfjn23l6-VyGz#FH!7c21T zC3+sKV^nBc)RM}Uddg(yT*ECzGp9>7EiVZ!_cQ(>bW)q=Ur*=*p4*{!pKP9bNoo7@ zt**@)iC0f$9}_)$?PzuHi}GounKqE%ZgZ`!+mV` z^*nco{gHg96U|!R7SY^rb~?|z@=J34D&^+tdAUpH?eSQBGx+dw&wbrRQ}^30Ub`bn zsHDhjsYZ1jQaXH$Pn{;(UJEWbf|n9BW%{bMZ`J z5&E?Gxuxn-25Cz!oi!dmA{u#5tz5jI$(rk3S2DwDp=%;FP5z>H4%eR2+gg6=^|BDz z>{HB|LW>?4*Z8f~ifRhF9Tdu1AOFCcHU44tt0h&JjN3w=E!xMm?_h##%vvdv?hqcv zC(*3;A2v3<|JbnXjc9w$gN`Qo56XuxXlogKv0GoC`Dt4O@6$J#bKRm;yr;!p%Gl(u zHgE3LV;{f13d_Ivtn=Pgx9~NM4avG^d?(&_*;JUZ{MhW*R-uza=1&Z1{W$H^6>H`C zpeKH1Yu|hb`dsCq60Kg6Z9Cyq>e**%M`y3e-?VG_^NdalsZVD6bBcR~?o3^O<50j~ z+e=TbE#~@=`Yz>`&c=vGtnaLNc3t0gBVqTIZ8vk2wp4vQzh}vmd48WkZdaZbL;Z;pe!9`$)jQ z+S%ooq!C(@yP&@M%zuvCi~ng=E&BJNPwP-}V}`<>$xD6~} z`Kv4b>wj72-1n>Ad5UAhx7`bZUo0uscf8xq_hsSyI*T6VJ|5TgL4V8(1ysBCI$gZ4 z%qw_jiMWHVMWMAz*^FxM#|ErY2ekSwoOR!J?jrx9i5ik^4NFIf|k9Z z-cyfTd+sq@0Ty#Z zR%%?$n&7aU^P3@)mQ&y4I|{oB)!EWDZHk_=aZQq6#=tKu!Dz$sjpaCp#mSUA`z-ul zGN(LxUmo20pJ8$~+ehBYEzt)|SQr>?urn|?f=kePc20Je)U?FXoRZ0}CFJUthTadB z4i)*AXEwVvRXE5)LnO-KwiJ_Us5Vz-cC><&l$WZA%j$EgJ9%&G?cQ&A;C%-uHg@^EY?Z>+An= z9MJx8!i6c{WRd9MOFbTwO;66rJzy#Py#8aF@T46I;d--nv|Lo{Nxb85?m)EKq6+Jx zM7dYVO8uOfdeSpY3XUESaX#`4 zVPk^D*6YU%^RJfL#O-@kEgB!Pnsv7nM|i7T+_$4$Z?CSpUELBdly~63r&Sh9~Ua(!whbudZ6qP|W_(>Yx107a5bD?piPLVL_N|?2|m#DUwmat+Q)d z(_;iv*7-i)EG!%}`QYi)nGK5Hw#-(H`V`|OCDIbjDfY5HMP1^|+9yWIQv|%WtNkpB zEet9u-R^Zzd(n%h7MxdtXGi2No%Me5^P96yKJcx$efr7rWBJpM6eU#aZOm9cS@){U zt4ZmHLgKW_gCDToxw%O4{=ywwQ^fX49et8>(rDMz^Z=%)7l%T*b1iZf%F2rMEx3G0 zlSgQ^BlG)+8EzL3an7mV@?vM@)dM}P*)vQH)NS8i+W5|K_QQ^-(ibm`FPoZgn0{ni zu+ll{it~ql@5p<|9Ao}L(fM0_$Xu8A4}5j+h^Si4{r5a0pG{X)`^v`mm!0^prj<(i zU6=M;7+C$&^<$y$4%LZoZ$I6!qU`js6LzlaC4Ov+UU)3}p`WkM-36zXf7)HoY;GP9 zkhDJKh@t5&eZSv%S;pP_wy%;2ipn`|crrCO!~4&+Hw$axzD?Mc5`5E&-@^FIh1?ko zA6whRZW@;S-Fjl#LPM3`ZO06L?k3n`OkLoCtt1X#^d}VKLiA~yfTV&V7^%|pzJQb_*tqV&qj{6NQua0$#W#VPDv_> zD}Ry{TBYp$e(U9mNKv)zy86pq3{595GErT{czZeS>U>0 z$%2GmiTf99VY)qg?w3bj?^P5hzqEg1Y&C1q84J6YJp5-Y8m#Pog#UOTeE8<=Et8kb z6|sK#&T{wu;%{^ATkigT@$>vTwgM?tW_LrWr4P3>+U;3=#W-+J`}e6|8XNfwuN{y$ zR$n^DSRk}P!>;SWo>}@OkCoI)V!9Rx99+_Onysqfr~{L{cK-YqJ61iGa-P0FFLZKc zTjQeFQ;Spmr{v7M{lR6a(%w5uc0ataPNP@&!%KhPbCxbt=Xbcu!imJj1eR z*SDv$zK9)}<*VJfD4VO=vtrsM>Fz{PrnhIS-t9eG-#Kf)p6q?2*7sFBe^x#ASf9|H z6)L25|K*D(aqJ@H^^w0er|f%JwRD;7=~4;5WtWcbew012c**?R@-A{oqEE}yqg4fO z+&HB9{8{b!qEjqg0w>CSucvje{W!X6$&cjE`waHa5SpqGE<4{S=Ea%#<2>%nRa>ho zO?!;ySTLMTIJ3Ln^!$`?ouef=>DsG}9#rrix9nRO@9Em7dFI88r$2a#Wj;q-*mz=N z%WJE=0-eWd&hgdHre{ryog{ahE9~WlH+ipQ=4&60mf2p|u6Qr+M1jTaW7- zRJqx-ovb<-Jw*eit_Dyw$gDk`yS!j@3Qx$K7UcSLflPJrpS2Gt?DoLGNjfne>d;_JCo2g zM>RuxCn-IeC3|ko-Kop&KiaU-MW+5oUSe#8@H}<1mx*3W!?~_}`Q5TP$U{GI!o7!f zRjVUy*5wI$DrUS23RK_kcT4h;$*kTp7x*t2MRU}8&uU|o+Redib4=RglY?0SQ~pJn zu(@|Xe9+HKoRvM(>d^g%7tA+!yjta~pSG|48^gr*4!!(?5~~(lAIw~#{7soJ`vU=(u+Di@p8__f^?@c(7J??bA5$UgVMRuLhf? z`4^1m9F>naI)6v={)9*QAs_rF__Q&_x$56jTP?6K|Do(8iJLvju9K9OT=OvX{qMfO zwteN|^xxm*D`bv53}|ljG~&?QXXG56@cXm*j$Wq>i_l93q0Ow9I5s(o7B!~I(tGY>L$#R`3s#BI#M{sS? zSz5BNW$A?rLY4;|7U*(TzsxE5_HxTyP2)5B$}(R6`@T;-a#O44^V#ob*L>Ij|HQtce<`-P2GA(Tzk(k=kQDHTI-Ka*B3myRLi_`y|YJF*bk$HFP|>T z6g(@sXlIbgYnRJfv&>qrYu{P-iH$$^VOssd-=SLN6&i;er<$+YcN+qOxYAkv1VAmGQq$6ieEXX_NsPq2)y(@P&udTj* z?c2S84a=o-=2m~Htx68*=QVFTlcHjF=S;{ovHqn#wrP1+7iVUOrGMJ?E&s-ad%Lwo z?%X?f#F0JF)bQ-BJGYBN^Q$$stX|8!N%m0kg>`F}@7}$4Z9TvBn^)XrTfcw#{`M7D zSs9!2+ZmDahaNo@_4#-2Tj}d=BZHlbKR!$>>}#F-@kznsf*^kP-eZ3~Z6_K`>YZC8 zG)qgO{PkkC$?SXAx*3Uf9*z?2%>1@OU+wwfGwdftS2n-sPh#sybCKA4XH)2{9vA7| zUsz^%IZu2zBX8N{fCrBb)!#h5OuEc!DXY<)>8?qFn_E|It!i65uXl@R^vpTAA2%q5 z^d9MX_vJ;N^3CP%`=kzC{OD-AE7afZ$PG2CvlBV^%Fg+0YwY^W_IP9M2B(Z!p3}mg z&#fw2RC&}ScqhZ*Cyq6@*S^2w)TcU$$If5Lzb3TsrGeBQ)*sw`P06x8DgD>#V|?oN z1y_~5H)K2e?4`)VDVrv&3&l_1paXi!b+CH>GcWEV7>C zfX%1>D-J|Pd9K*WAt2MmqkL)EGgHYAeOU*WwB_EN(3E3;lxOqC{pJ~`dyhz)yDVy( zvf{inlCtUF8@YGp%;+Aw08GpXJ;kOsc$ll9^3dOW4+>(FS81R`^%&@CKjvsPZB&gsY2Pwa`x$4k1{v1 zE)v_;5cm1>)pstZ`WW{Ha7h`N+2$8niOAo{o>4n7P8Cn(VL;YRZmMbN?1|Ih}pVZKhZeY$<(Q>_MqoRm)?)G^` z*Vg3q^PWoCwPu&cI^8gH?Ka-aQB&R+otbD6vqzy{Ka~|pb#EGdMOPXJ< z$dmeO={+a@PIT+>Y16t-YOPUID5dT8v%573b|6Z!ln!lr7&(cCEkEywtW4fxg{+8d9TVUfcwBpG8%P;tL1utIyA~PZNh>0*S=fvRF*(U#NlmUb&(oSvDv0^2>1FjpyHT z-Cy`|Zq4*#@eg*J?qhdf&LeyIMf;b&W8XiCPrSBy=hDzL59K-Y8z(&aWSswR%7p)_ z7w;_p`1enP+kXH01sC;S*#7X-h|&MJ>|=fNpVSz|^b4_%+ka?F+3U<&|LMBPKdXA@ z$L>F7bJ?%@7+B}?`1sFlYqq-xy*b$`mA4_%u<>t|mVn?(%b9*N+;%v=_||gBKkJWf zo!8^#KX3a~%#ywQL$c24@q3Qj^M4C+N`1644U4)waYfIQQ*X{Gu(eJ4c(LKw{io@! z#WI~52K7r0Cp}!&ka<$%Rmy~dPtB2!4I4KLFS6A1`#a}FZ}+oGlZcN@Ip)qrZe_Et ztQSAZS^d=a+&zU-ju{^vocx#dG~Ae6=VpIgHQmu}X(axn)x1n`^4Nc5V$={s_W_jPHod0}$i=DhDhVVoQWx>utL znT5>1&ixsnope1Uq5g=>%!Bz8Llnf!nOBx52_83l$dJK4F@afnd)dKvcG@P=Z!T>4 z{IUEeYmabOBhP}`cb6*9`FIwou1nR>O=ZoLUp`-k{UOuqxpvEM zNGnV4E3-ON21s8YUljho}F5hmUa7ZEk z<UAH|DU4F_u@x+0n3pO=yFR6dV6znNyI>|U7l(G6+!J{y%May^fGB2wU$~hiu zsm9*=z3s84S5s8t4 zrCoV-N6&=MpQ$!|%@k=rrOZ?BC)#Kp-jXlXF?)}7665?SiVqj4J8p4^p7{01lj>8p z^}EbvJejogjP(p>JU(fs$zr!`|ARl1w=}hP&zQ|Rm^sS$anH)mTkgv(B;@;F&#;Xa?WTI9(6JvPlE`!*aYW=djYF#fH; zvZ8sy+$rbX!@u^08LrXbh_noC`=yaHPgeZV{Y72%9NkNrCQlb@soXf7&oA(|wS#ET zrl}S!zb5%@?RA(n!LIsLa?)cr#oJr$J9oG}d1T_4Y5c$a7!Qv?ud-Wg^Ti4;n>9yM zcow}r|Ee?X{=8YsKZtWKTKUJ+I9YMJ=F+WR54T@<(4m;s+f?UnlNz=6?27s_fAM!B zJJY;x34~tjeplbN#LhLC-47|vTvix z#+yxLj-?;`(>Ke{F_^^Ap_}*8y+VI?qe0HMjWwwgO|6%$JvrUz?N8hPho2?%c;v*_ z=>I9t6ij|IL(+ODiw@7VstZ&0pU^3D`gnSQ>(yN2hkgr^KAFCgtM5{GFD>p0bLIQL zup@8T=M{ZCNxK?to-B`kA@FOvP#|aR9I*?zUpnvnFgP~ z3~{}$9=G~a_3pn%n}h2vizPK7u|K@bVNQPXZq3OFMUz67t=ly@7BKo{U_~bS+{!1V%DOPS*MO?K6K!ncd*;ySVcHQTkt|iH|wy4sz?bX}-=KC`j9#acXtv9t@Z?-b2F*!^z#rot%O2fHhJuFYBX>71_Zn)P49rk>1? z48186WgS&@-g!ylsp22=*fScJNM@gY(6TD(!m2&$FN4g#h07Lu8(%3YdF1F5`fHYP z$;|tuvqJW3J5Rqpf7!fWJX>X!*7vEo=2-ZJE9G4O8D)G$?cDZz*Zbny%zjKY-1RCX zxUx{OOW={d{Z}3xyY73-zBdNf>=gP|J3syOde#PZfr>+ORk!fI*d-NnJJay3i^Dsn zXX_S+E>WIQ&V0R@~^A zyM$y>p<5EyG;dh?s&oA0-W}t8zHzz8tRopRw)|gidY`|{-SJ;BN|htJWva zj^v47IDNrg(Bo8+fUR`%i%1EbhuklJe_<|isAu1HebhX0MMXIc1uCRRUjU7%H0o|!&lc0&5Z)vu1POlDA3Igw%Z zC|$VD#rI|XA^-0ZUu9m)EZ1e;ckh-V*W5`9WgR5%#Z1V}V}HuG-DXElDB>_WEv@K zQ&f0W6P~^}oxw0T*xv2-+8d5mGtM-0vnm8g+|f8E_vS%s*ynnNeg=nf%U3T_zUH1( zT{kV}QPx6x76-2lzl44%&pg(8&*0kn6Wr&|oxE9WI^*6_`RH#?G|WV&KIAyFP1*T+ z$mBDViEaDx&gy=ipG_r!VI5Af~fm@UY1PS@hqT8~?Y;;tWH`h4)?@h|EVE;JnY9sFg^f-~+y zKZ+{~Sj@I%Y+rQm59?pms=Xd2^{w*`oR~OgZNJCvM{S+nxBOqMU$}Tff$mhFg!=0C z7DJ{N%az!^`7qd?li_6XJUVH<;`0a(v8llpn|;HM&sfv9!DYJ4vCW6y?Ydl|_vwX` zwBw4RTv1<1uPf0UR&0A>>vh@{U-Nyj3A)OC;BvRe%H<6`(?4&xJk8pF_7U^ua?`)P zdv@x&P5O0PrYs=6-dFe9Q`X7*7ktk-6Otrc&viWYS$&3Co#RPr&5I3%FRsZyih zAms9Zp?k|DzIS;?@5!n9Jt|o~$*oIvxwv{Em*1Sp8<>vxl~=vL`f~5&M;1TRznARV zq)_|Q&Sd-NXJ@tlSAV|8({K0jLMlV{Q6<*%AsboG2Q7Sbv#6p^X5Q)tm0DgZJ6Y<_ zhZjt5694hh$v#enQ$OsZ(4H&(#dUjp4xSDT@jRxr$4PHr(9zWeaR*n2o+&)JKJa7I z9>1==(R|-eJp8Kl?x?iLo{RnFKR>34GUW$;2oo)>nB5h%C-$Iqh|W}|cSo&7?>s-g zJEY}9p6L67e?Pt6TU0S$=HC0`?0+vK)?e|>R@qJYkgd)Mw=z9gBKfBM8qzs+ynzRh`mGC=%U z0JquHoW3K<-^3ah1^lgJj9+c(kSqGo9GAMYrrxRo*q#;78!}-1K^r zOE>Tjjry{y*lOF+$(I8UJm2-Pg3<(Bjtt2Rj}YttYt!c{7UAjUH`XXcJWzv-;As zRPEI~q8olL_VLe5Q8RticK62a^^>!kG;~iXmd)?I{cC1V@)ORq)H`{bO;@Q4<<=j2 zP-ZMCpRrwsy<_IxZTISvrrSMI+26FDdkwFz>^-L7?S9#pzb36Lo9(&!e!=G&zk`m^ zx}rw%HZEIcE`J;tEPr7G|6QqhOwrCv)7lm%xUnp^l9Srkm@oAI&*hUTv;0^SG)_dl z+_cs!=)tPQXB*n`AKvELxA@`iA99s`Tq5&*>fLyv6Yl;m{AW@lZ-3!~^B<3c{ic6d z`VG6)CU183=P~Y(s_UAs`D15W{DbLIN)@x(1m|2Skns=ypv}AgSU$_M>K#`#Ul*C2 z3Vx?IXW7YYl?D6Hx)wCm_vi6%R}pgSiA?s~cmL$W?@Xs{XKde?p_=2T66a%aeWCq> zex|50xr_Cx<pXb5(rhi!LuYNF>ytDuDsfcl!m#L(sh-t?EFb&jN z`+@gTh3|?*J_+8d<@#rr6&zSF*|5#vhW`1x93Q#(W`!B_)_YE1wYSKaxiP`M`m&*I zBFl7rU!C~5liOpD_euZVrej}hKn5GuIY)X@D* zs#{lO*NTfrYCK~UJ~u06t*g{ndaiX%?_{e@3odSIoXlz>W$OR^nE#PViQQ^aM<)gR zE!h>^Ia6%c#m((;?k@G=%dYqyJuD)5O<4C@fKl3!w<~>4pP1TPY+y8H%ZxeR+*vUT zjW_)fw_aPh>t4mTb8B+_3KJH}8NGQ^W|+SyR-`Og_3j(iZN7`O(mfMdGuNG;&3)!m zkg~pl=Wf@q9tVwh7Q+>@cky0km+N5uIroAt%WLka7h8T+tvg(4yUal1UcLA>X{TV* zABV4pJ`RmjubT2a%g?Y>M5FDoaHGYOsV?)h?r^=^`7E?S*0$R=_AL97gU%^+mtQ5= zxjyY(JF7FQV(O{mTMW+5VY#j==V#9BWn8@Mfy<`naq~nsy}9K5G1@*l!y* zarWDd_2E&EzOA<~_TQHIe8a^lixdyPWZJ3cTQTFT&&5V3t=?^Czbrm;GQ{)LdneYb z({^m&_AOEI@8&$7rvGcoRGZ72r}_3ze$Op6udcH?_IBA5n^T9DRVrB?I_>u&;cwj? zj-T_@8~9B*lEqodip`i)=ai?OH9hw|<*c^F{n@7LTjt-d-?P2=jpEXY`Im-i6m)IJ$E&9-9_@k^)3H40e024D`^IJT6ne>5Ok;9G9tS%*^{wo_Ez>l@L4e^3bwNQFKS5}``*vxH7GDXmmvJkMflyJv^mK$&LwNhxvg%#*U>G&_prW9y=MB) zI4d6)??OTMAEwPxa!ZyR)>t&}_rk{#JHI_r`DN&ErN1aIVS=FHj$)3(0V`HdEkAjf z=c(nb5*c-kw>G)mO2;~m$l5Zg?f)s^$!_Ho>G~(uC&Z~%oB8YF42i>BO)mt(QUuiw zYLst#;~;u>o%8a?0T)Cc&tQ74{m4S4et(}8-^x#lGs1Q&&W%sydE)i`e(N3`?)22i znaz9}N)rVyPI@+5`|Xk$p?{)fGkDf`K3o>K=B)U3b?-ZOdMxaMEii z+PQZQro2$dyY!8%ZGF@4Nft*VP0Qz{b#boC{$q7|eXEZ}`PY?yRyXC(Z|dz|9CA?h zpkJ$3=ua_U>pRa=m;-JLXm}_7zB}V-gpRs((2EIa*8K~E4@FE7EoshTH=OS{uVwSK zlP=+zfzfH$=CNo|Na1zg$9hFn8|4^&tu#=Nvu8@La z3(JzZZ}?^_ZZ>}XMyIhVAa||%-q%yB=0~_Ly^-T|@z`&N?7jIH!`8anzLx(M>{^?j zW`6Uoj;7)K^Z(A3|GoEn-}m3X=l(ul*v`1-ko~hnW}UoAclJz>o;_Q{ysxKTY>BGO zM8QKHEsKp(mQ)t?xNmR&p!6>OjJE#6XG`zMJb%U~$+^eJ%{=bh*}0z!#N!Sw-krKf zXnoS8@Y5B%?>HZB_4&0+AnyF8dkT+xD}>kY*(vk=k*?2=uzCB|$^`D&D`U8)dG44<=|U&^)%UrzNA+j_>i$|iTUk9xrE#G4;I?t~?`iAip}ni8~G zxi;?pta^X1KM#{kZJl4O+WNZc5@(~A|ICH6K6>yA&L~XcuyU@-I_lN)^#OG0h_>8q)Rg&|#3Syw_-L@#?eaW(sjHK2N}T4rDt9fXzh>Xc z%#9(lO_QXiNhu#=JQU?+yJV|qvTxy1;lEmA!g+Pcnq+L@i} zcXgBnFSOn!@cxgSdoN#o`6|!pu7{SZ%$f9oA<{av%Ii>OC;aw|MtmYQRVbm7rHhV{4z_psWx@uu~|Z?<;Q}=o*j`W(#iLHaBEgj z>i!*d(_gRLCUYUCcx4{z*D2}Goi-J}PB>+Bsc)NiY1@f3E&4=~!1?wz+#ox}BWUuaJkUSDn0n zUesmL#I`FT)61r0&AwlQb}eEqoup&x#~Ef9yX4s`*L})+w3mBJKU595Jl&7`gdK~v z)(=gVfc>hsFE^if`_lKxw=X(H)m7#f%@_68S%0W`l(+mM!zqQp`qE`oL)q)3Tb6@UJ%4;D>WVCS*Ny$XVu=b*%382>eKqwd^&&b5W*P^0k`Ia`_i^fIR#Kew#qfQ( zVX67L!vF1o%~xCAo3Mx+U{p=kKL8SeT`p4 zq$@;|_2#FAoPj+Pk7NXWVY!?A5>tk7qTqTr16~H;@SJ50Ck{ zsZL2E=&16)dC`7%s~+xnWEgAlpzrpVBkMlY#w`_nnb3MVJ2ZR!L(8pNYcCxR<$1Px z*8KhppRwIB?bR`4*9S;H>W6WRG{IJ8Jiw_CLIgXPwo_b)sB6+B+9M zoFw`);swJs)r4#ohyNEd8qHKPs#5~qb4ulJUHU64{nV0;;rUhDCZt-k=Y%@>+&M6% zQ)FHJ41RZ1_@A}3W^`%G8W%r)6-FwuWKj{2T?&z^k zo}4^m@hZmiT$P5KWUXJnw!C|^Gcm5nqeh%t{7A~O|Bbw2>4o_X7FKh9)Kwq1e)PU0 zM$J#_V^a0z-ADD_7!__fZz($6U}f2SyGWLWy}#H|({0>boyQAB7#N&&85k6x4QO`g zGQ72soHZd=uiC3`-gEN94JAdM*~&sEylzZ)*yzb2#M3A=jV)-i( zZ}0PY)zki4e&1v5|M&aBWS1>7{!1;{8>3QxHu93s#AOk)R<>q%Et#pdexbtD&n3O- z6&?FOdrWAu34WI5X>5HWy*Of4ag$B^dEQHm^R#_e9{b#6()ygccIL6CjO#cq?TuMk z7&>8Dap{D2k6Dd^l>ND%W==fT-7NC#rDNP7@8&B9PCqH#X`;O((z37b<0^*hS$m?E zU1xbI`=?$_GDiBr=Oy*U6JGDIJHTtS*>6d{$f2)}S`R-n?{WO4)@#m|$r`_)uy{gP zqBT$6q-CzN&K^qd)~WSw*nY}m^|9L~_v9YPGTzf<&gTuX-R`+r+r$3ZU8()PkGG$G z-0HZiL7(fA+rEfoWsljdzuofq3)=UTcx?_!Huku^)BEwedWG)=F0;IwwgkIEP3y7uoRd_yO#f7!dT{EZH=&NdcJEl|K5PHyt5WYT|BzDKt2u8| zZ^o8|$KTvo9QSzHRRPnWdQIb_B2m|O?8~eEysi71>DIj4w?g*UMqhq5t$W**+}j62 zuGDlE&I}YbeRS7!?KaWQ^7Uy__a_L{6;`(k`p#zDH|?anZ%O%VvCBQrTCT=k&Xt@S zxOv%iqe-5ZS7nAxj*xue^X1rL&c%~6w@D{n-gRcrn@J{b=2>+}WcPDDx6I?N-}dBk z!o`x!>y>Bux#}5TcVCni>)t-oE7#~z+oZL}dYvD8iZ{%y_f?VGc-<&A;+s{~-hFDz z#dg=QPu{M0G1JI5r|-zwX(em!ZrLU|Lxf+&s^k!V2Nr z(G$OI*^|G0k&m#)WFZZcgkww5O8kyr%TY zrFV3zCUADt&u&=ztt5Q$Dw}24G&d{fy1w~0%hy4D z!A`wPxyy1sd@AAO=_=lBc64&4wDn9kpG9l;%HK23XX&Y9b8NMf_z{=d-+_7a+ zjlmk@VA(L0mp^XYmfX1DtxCK7v&E)o1ykD=9IkR!Vms_BD{1ieWX^>acikA{pf_7r zo9;`DIP3F6Yh%!(JE^J3qSi|vb>!$iv*7hJuzIsaFf>5ZNA*%z`%0#yIX9=9Sm$gG zKFhL*PiNopb=B1y}4Rg9wRBI(vYEd}p<(iEwM#+5~?Pqtch@Ja+f7C^hQdu&LVnR8Bh`k8u-HA+ouCfTI*ek?h2W@%Z!(COQmr+zMa zdv@8WNgH>k7rja<56jl_S6hGNNv~8r$B%a&D!)HplD^!OSo~zUZF#Fq&7o^@tq%Sn zZ{$p-*gw;Y*)d_|?XNXwvo(nic;&j zHpg=DpGWoDr?Y>qtek7)np(M5Ant1Vq3r7)9!=f!LwEVcA3m3h9q&(i7#ns{Z}oWz z&Yy-BdWW+v9x@ISU){X+RYU=kX7o0F0i(I|7N(c};{6-8y#1x%+&VA)*Iz7b7hVo6 z+3NRxsdlN<0>`=Qp7SR^Hr6Ulz36Kd>wW#@mi~1Ye<)kMe_r4J>W|^R$j8i|in`Cq zKlgv}$MYWx*ZJ#?zm*cdY0k}m>hIiI!#hzW%KS>`;;2hMjccThT>s_72{bd8JU##E ztyO*B`wKr6>LZ??|13UX!<}sL-u){+&#m!zzWYbs-2F$sdlW}Jul|`f_x)n=nR<5d zC#BD=*FW^xJNWbAxtzwLef8>Z3{J(|?l^MTZI674*tsVyPY$p?Ja&drcAM}+y(RxQ z+-%=$b4xyM%Hr4Y4VO|PcAR}XJt5-x@1Gs#m~B>k4%|2UaW7cFx;h{^77+^*KBt=-o}lt@S}m zoKrs*EIOT=x#M(0vGsY)-s#6~GvtNOnsHJ7ouQub;kU~q`ER@FXijzBVV?9|N27PO zKbN-HwrU>fUdegye;qWipR+|MBIA4eLihb|o;qx?V!p^avr@uDCpFk&Qq!$z5&U}Z zr>G_#ZpxTx!%?#GteC$N zK8f6zGxMB(z4EmKPbKHhfBL-SUmHW+s%py#9m#ylleX~`iBfq`;W2-p(@2{!zkLkboQ~R&+oc)wLkw#|6Q+xt0PVjKI4t=t~ z%#A0l`*A_h4lBNL)it*^Jee<_`6qd9y;9#rp_QzKQ#z#%GwOe=_cyJJd_Mo<`O<%^ zi;rEdn!70IdHl!qrT=*UiGQ`b`{$f_T)$=Qaj!2{_j`oh!i+WE96xfL!~JRKR-fQIUV&e4 zDr~Ka44(WYkF9vOmm}w$+*`_9=ZA#Z{nAUlrLkzw?M}_qb>9Ua2H%|fa*^>)>ndk) zL)XPe!sG)jzqaM4HZ3@P_hii1Htwwx!>n_k-qH5hKk?_9)y01uf_EHv$z|{;`~14h z`i26gb%NWS{dO|29(QzH>bQqlO0Q^Vv4;K8xf8@SUW?ScU8g@ids)e*%Nv${JJi5z z8Sic~@leNpV`0I2n~HWe&$2P{US)l`uq^5DhpT~wk(0IC{`{EtYFo9)wp9O(b8GC+ zYh+7!&)=Q9%4%m>-V;XaiBp}smq;ahO3&Z*Pp`CIX@&lB!!u?5TQ{u!v2#}K#4B&| zi$q_4+5dje$`f%B*O~qMHb$H~pO+Xv-{S@cqw-G9)`-=)5!)&f7EP%>>t@xr=)kRv zgp_T+L(dgVdGaN4&d+5su64h5{W$9#*zeJ&UA%GWojQx@a(-p2vi(&TW!|1rA-`3{ zKJJX2`eX4^zSrxkp8v}-Qm}CA^~j3dwyo8+*H7Wqo#1%0q;5}vWd}RdAFc3R+-DMe zIwmhN#AL~lOGeQ|qK(UAAi- z&fYuU>R08f7_Q&>ZsOJy`&BPzO#Znog{xv&8r)Ed2 z-4t28NIdiIgg?{oD$hSw%Fip9@h$hA73Z?qSFWa>Iym8VY}^W+`_anz7uCK=tn}qP zozpYRa0lx~1HHU&H)meI`0u2uKt1oXqIa@?H`<;%Tah6VnXI=z>r<(0;qfvfj^9;< zduEjIynRsV&S!&&Y83+DROZ7JSR zZ{!pFBIbm_^t52jdCxBL&RAJcaf$t_2BS*+iYIp-yqPw+ShxPJi+rPtU6kwZmx~_=Em``-@W%D# zt)eBywKB8LHq4v9z`rSr@9Yx)hbR5FCv6qiw(m9lAyfY4;co-6184p%%5>M$e8mt1@1wt72#P zsdr!hnR~d^beVkYytf~=Q2g*m<}PEf+Q%A!wrd&Ux{J>zhsA8Se?IH)7gh@bN+z3HrFvGI7uhT88lD-;F3@yM zz1O~C&)MLsRa3P3f}YyWSn2d^r)coi#mjB@FElYRxv-vfU->LsA`4g{s#~<6XPDi_#KhZD8e4@>9%{3P{zC50(x5oUC4!<+|aUK6e@4^u0 zufieWfu?r5=@&3UmYf<3kf`BUA(bnM*v&{$XJ|vACwO>tV0+7Ouc>?aa)tj8V;b zzT8{lf^^T>Y`epGEa`r3NgvCjBz2DaB@JIzP58#JR#!p&N8B2zw|A@${ukh>6BpS# zdl}<_`fi4Yp#p2=&Py{KT2m~3F-4S3N@Mz^>n}Vt7)};-<(;vxX_)%xS<{^2xf9zB zl(@ntJ!hFTV;XNyvQ({XJ&*8Nu?5vd!l#Z-@|%C`fBK8a=QkP{|9X8nUXU}VykSp! z`-&xNH@!I99J0MLx^2b2v;PH5w^VjrJNVkQ_k(53{(YtO6V8=?`oZ?3@X3N@%vds)rC@L!0&mBs8I;OU`#>(vo2jSE%|Ypo~BA3btA zitmz7`&&MnM@uZc@?{s8N#0PE<9fX2LR*Hp#lE#K-ZGagJRoqFA=bn}T)xfhD948E z%-yf@orDS#c62XWR9i1_O|I#$+@X_|JR(KajqYRr|aAI#$y_m$Wg-q3k z0bdu(+>q83uxPAhj+B4A-f?kNZ{3=UZoHhWeV223I0g3nbWw4+?YOD9Mk1%)Nk6Tt zLvD|!kFUN_U(oNpR}3BIo}KFYjGO+Y;~QSwZ?CLp*zw;(GI`Zu z#l>xY!Y@=sH!Br2OqjR4lZExu?|QGa>x&Iqp6nK#s&z(e!RvcZBCS_*9e-#k$~7T$ zvl#Ql<|k7Ze--;w$rt<7kz*grrKN|J&IW$`E2Q&3IOmU1((CjON6$}8t8ZNVE;Y($ z|7q6*%@uWRmijDnR`+T0UpvG6RDUXyc2Qk~ZfqDZ`|o}sn_|6@=?bntnPnRnVz#}^v^L6tn4x>5HD_0t84Ib*{xOS>9C*COG#{= z{335bkFeVvI~~1vC-oM2PL+5$p?-qi(SO}sA!jF8t8YtQTz|pd_<4)WQl{gVPFe&p z>rUP9_{_Ga_xdlltjY>K|5e`RBUgjD^v&hvKh^}RYL$H`o}l*GV%ACFfL@;^J8d-I z`{`sov6T%{RZgtS--$I>qcU?ZW=h*wTp1*n*g>`M>*v>kaw2Z8aI<|EMdM zD2JUCTofAe=nWrF__?~RM|o78ZYVb1mJu|uIB&RJP47t8os*WD2YAA*7^9lwR@6+Y zzZ?0Quko-{x9ywK$T#+TkJ^1p7rUM&G$~#*``zlfEsxJ4GH&}^_%y8@w<{6eBx($!}A53wExI& ze&e}|iR-0M!i+vf28Q=clQ;O-*9YGAI_w}|J9|m*+KbmJ_G|wLSS=xNU&K+wQA10k zXNsotbm9wz|HObwl4zogj(x2M)HF zP1ai$d&Xc#=uI!Zl*x%3t~@ZenNYYv-+ALr-M5}cC)}Gf(Px|FGw!{w-{XF5|ns&P#a+eBX&luLP`5!OGX{hBSceQD8k#mR;+wKMN zg%8(fMlA97xp+S6!&bJg8r_aPyl%fXrTpfc8{F<|7hc1rz0T&K);ha`bp|2lFUV{v z-83nKm*!*gj zte3tjYMZR9eEKo#QO^w)Hx~U$vMShiOaT5Q61~AZgUyVc}Sg}>|vZV?Z`_% z&TMYo-$7pAr@dRI8q~#I^Zx#oPp|hHC!aJcYShnvS6zJH_W8W>=jVQZUoKzA^T5K6 z>#;;wl%V^>_NxXVF?^FtTib>BQw62;U)$8L?5MEmF)H%C6*`ID3OYfZz6E2%$M z&Cxm;WoYWoxaHA`hHr+k#=4Q4#hy-D%kjd(-nuw1DQDll)r&Juv`*TTpml6XTpGW5 z&#L8eA>LfAFIGwXN>$D8UCq|Jt1#B#!<1DkuVpf_C*R(?z5aZg80(MYUzl9q&IvM2 zy`}eDBsuQfRFP$;cj}#LJ5`*2F@Nos?MbgTl>r$Gk5LW zyJp6+n2=*v7bQh8{fbo&K6$$>E7m`C`#!b*4)1myZM|J&sOzvm=6hbJ)y8SzTJ!82 zFE=W*SbCp}KY2=Yy@nO<(lzm+YS(mJjb(5CowazH!z&KSOBYtNgdb+q7xt~+7{tAK zW~@p=rFc)!-h1YIH7i*IwWH5+x|@E#DRBAru#(g=NsnExty!K{)3X}uWg&8 z9?A;2ecaZv{*fK0dg1(z`CcB6WjVz^cC@q`>Lv>DU);XmbWh9thq0VSMORqMf;?|$ zty~}>RCms9{{el^nNwQgKjw(+pY}m|TYX)3IjhY7PgBnu`gQ)8+j9T0tzi9x2}idu z#FzbP>9F_uA^cD0q5hB6E&CH=9kw4{=VKV0xpl@xouwzP+)Hl{{4+Q6uk(RC10}6j!|rE19~=Y*m)%?XF#=#)mfAFW7Q&N9U>*sXWgg>dRx3 zcf5GMwBC1aUV8r24~k|hBK9ovG(GjSz{pEgJoM~}wXqk!WcOM9Uv!uEnXzTwjN8+m z?RoU==nieZx`XehI~{2&6MHdFwpah{m6-B1nG4^SJe#7)-*$C))6VYQXtY1;#q}NBR#Dq7sy3VupR#qPDBsN%>!aypk069oH`g zFDbv`pRs3tn)j2(i__Ehuqn>l(K)T+lUmJt>)HO+xBr;PE%>MqCFsiTSl=7A=$)BO zgKmU9Rg6e!PIaVXwdLE8VCz??pQ^(+DZU*-Z)^^d~Wnzoo< z*cQ_4viX~qmC{_3FF!I@ELz=m+mFqxR{3_#_ngnAYf_Sf3z+YE+cwTi;H|#?dgoUq zkH-p6MU}5P-|%15H?bw#!^+Zc*PPdu_YPR7X)F%gHP6mNY5N5|>GYGIF5WZxIbUJ! zu@lzLTr3)WEyXFUCnx{Ym?x%oHsW&qK?}hz_YdvU`gXnGcZst2^nV+?_dA;V_&?BN zvVC@;dw1fiFKn_}P05CV%gU{n$yDk7IsbuUkNfY6=N?O*i&brAsW@IT>B29w3;Um_ z2eD^a+$der^`febnb~{d;gT?SyFw-TMYlgGc3q$Fo>A)jg;={@J+In^3H-ulpLfqz z;izB4Z*1ZJBUk0(bwlrJ{>irOmFlx6TKyK(v3MhXlF#WxXUpY7^~wETQ*WJAy*{_& zPUO*xzklCzRM8l-HX4J*f*+QpZxcqcYP?2>4oos#}>#iPnqu`Sr+Ig zcxqu`)ZS9Iy%i$;f^H1e8{ddbc99n^{%9E!rT9l&P;mMTzF2D;tMkDUV(&tfoLVO3 zD~kMQ(0$!`qM-I!^z-1)r!2AzV znHVNW>1#4DFr*hHrsSmRmKP-!6r>jE79hF5qJ>go^Hs`GNM4z}`l`m^`BTuV^`bJLcZAv;W-qr0*D`&z>t!c}338G=nq=dRt7WHb44<)kgDUwh`nPv#AM)9ticMt@&oWInC4F%&uE<`CBA$>#3oZ7}Og_yO9xPYS={$Me+F6?t zmu>S6y>21Iv-aDqGFPw38{)pGnLoK+q@tg_^Tevm6;XO|dM}I9;@W&=UZp6j>#gJI z-!~`krtr#17lK@GX5PQIO^|WY^fS*E?a8g>>O0Oe`}ri+a~qGX@hRNf*`=t~=Gf+- z`&?p4XzlS68pf+U=Jy%RW-JW1+fx6qiN9`3kN>btocHOzVzIfiShfj1ojK>EMypeTiC3gmh;!nXo2k2!SN-G&ow{N} zy)cv3^EpXIU#67xgj6}7oY9`{?J9Hn%67k&Z`*>_TecVJuhZ-HXM}HA)$CoOf5CrZS@D+ji*Jha)V63#aJ^sr z&h~9=#`2AkFK+0(x+$|KM^0AdwSw%;$3p8Eu65P_;yWp^ZnC-bSJ}M^cTD_Q><@h9 zeD@*!%I*)m^OpX5pJB}q&p&aQ;)!n;ca$?^{$;rLHDJcJegB+YFVAxgyO1HAkR!M@ zhx4sYD?{|g6)d^x?jdRg+;?3Z*W_J3<;vJDctG~hOT|p)8~Q93Hg%0Rqg7@rtv&EC z?8_UAs{V!~V-MAJKPGDT*)gSG)5wY z8*o0;zbIXQH0*WJ?GS-~eQTfW*mTKinWwbE1GeR!HJ!!Tvu|X2Pm1f57Qe$br)aY1 z)fF3;_UT;S$JBoydWz%>5u*$Lnjgwmh)8_%$VZ}XZPd2m#Kg&piIHw%(+}@xS}h~rb(ZV+s(||4YR<<>`=k}`JlUc8 z*vxK{VMA%(o*oS|3oe;*$zOBxd#Y;M5_R%#PW3q&wtaP#+iIzqrmMq(&%WK0_^Lc~ z_qyAbm*UKP4(~ivP<$!=Zz*s1p1X^t&%Tv1;o6$qxeuoZ@~XS%*? z^HyzB{N}q*<$)2;+E@I#(e?WiZ-p<$kDq_N#Mc>DELS$o$_zO_jIL`Ar>NM?j} zz*{H3bR8b%X^|x%w>53bcuqh0(UN!}x_aM>3yRUvlYhFu+Mcy+)vT#L7dP^5p7eT( z&rj#~8+;|2R>cZlDZQ~cKYiyfmr2_{@MT12+)k@1-IHIjp>>th<>P@jpS zTd{lXo4S}jrNif>Pip@cNV|K7+h(rd;WZM^Bp&U(lRTk2?C>>>bQdSS@)thb??mSu z?PyAz^Ki%U33g)3AAPE2o&96VV`Em;9K$1jeuR8rm~X7}vuaoVyBXJnH+!eevwh=n z(6Wa!B;HVkzkEYdxRmMLl6Cf1zof~{$)43yZ(6JptGai_^oEU{AAcP&aekr@$^F!Q z*Rz6}wGOV46;~wmezt9?^KdwPm%k-eOHBNKbm0ru3D1k3c4obP+rVc%!}?$La`$KR z*SV|pEkCm1Ua;${uYo65EqnR3s;00_?s^UX`^rVB$`ZYsXmOwG z^64qz<>Sfrnm)z}=|Mjs`(i*mFS$Bu~DX&*vSmd`dGPrZvQauZK znX^~wUdp{H3jgu@@cb>`_BYh;{J(#Nx9oAPq$}3Efv1lu2?p-T6m@a9Qe?2lcX#v_ z{!43ACfO@a@K{zR_^0t3;~wY7o`uJrT|6!(kS6{??_}G{p879_UfUk7TQO}?&qL-p z`B8tlWok`US5NRdDRSHOzS|>rmU)ZqzZzFC=nJ0mQoi(l#@8e2``k%V%!}#?XX0&TUV@G zU+mIt1y@`5J!rhuzAmYrX);UXnq?WH4m0Y4IG3Dwrm;@3H#5u2IB!DZ{)vw#SU4?L zR$xk>y->^}e9_F^cQ!J=`_-Cg_T0*^LhE;*<<s2RhZQy=)edmi?J6gVH z#<_OvOPF?uTfy)14wYX|bS7QlJI@h3QNU&X9=40D>4ofz=AV0%tl6NS@sA^D66Bz? z$pIIoHfOXfWa6rM6LjtZ8v}!y;N-%I>XUgd$<&{Xcv&tSD)N7?+1VwR8NDZJxfZ&- zm{ii(WF406x@L>(S}|=so|6;!mKc|&U22kkx4WauBe1}^P~0YH&4a2t{QujY|1htx zc(vDf@{(Mp%%4xDf4_I9{QFnc`ahq)ZfA)4*xFNdM|Ck{x%UotH%+rC!Y+?fmGukb zg!a7X+2!d}Z`8!d+1BHFLuWBl^p7cB2^*NybljvS1$I~eygco}sTIcxSd@*DZfGS- zzk59Ucj}!Uc8QM%IpmT~eB-*))LvQXa%geQUx|48xJLC2v46TT-8Q-L4@v|AO(j=%;-&iNN1BV59+r~1a>iwP z;w$saZHsSrt6z%O6!@mfp<~6n(%<=p=tr3i44vvqhK&4~TLB4obNX7-cH906n;s$<5oMn|bMxd~)y>bI=xDCZ-*MQuzE7h) z$f|nf8E?x|F{foOyxr=!Qo}jU!gzk=%gN$z6|`0MC?vMGh_lxH{{K9t@J(u5+_aq7 zQ>TsMqADZLo#tA1II}>Z{d-iV^}6`{f`rwd3ual$io|qI-Sb9d#_ZMa%5GoVR@nLZ zsyCP3(NwNQ8DSTimU2y77<#ZMX3+z;HG=gWbED?^2(7s#b-j6o9{;-8K_%;d#Rjd7 zespCer+0bC<)YB=+lyAuTA4O!`^>0dy~^u(ch(&D+&ujw*Xr%w2Up+F-LUCy$k&64 z<Yddo%jbl>ITdtl4@zF6hfuFIO& z7f7AnRCY!1?zQD-|0vi6d{B)3FK9RKN$LI=k(xt%|3&6|{)lnV4YT3md${4i()1g` ztWnD&&ra@mCemPfc7-m7$+;!VShJR2U$uhw`KmRSujZcJno}?J<0yC3f;_3UXWz?Q zDahmvUc+wsYX5Zc87i-LFB22tozBFZ6t__G$eG|>GfUWQBIjQDtiGRzV~wg%@CxIk z46%@l9U1;h*GzmfWx+%($#Yuk?q6OuHGlbmUzy*38fWemjj~y1eeO}J_Ou}WcQao4 zXudeP((P#~hwZi#nKNy6?yhfm+$j)P~E#op%;HDsEhzt8KgG+yj%@ z#+}vc&#`P)W9&F`jeYIIoTa*!u{VtVy=wN_Zz1*KxR2zjiX#_Sb}gT?{qlm(W%aX4 z@A(xAg!q@}9Terb?DcrELbzax`rjX#i}#vo^(|7V;#vCFUC^p&Q^p&PLl=)JPgvyZ zF3@>SJ>h3!zq|BWZbil<{ZmKeLb|RS`tNC!+Q={7@i#*0-jS;<+yP?{p^}im<&{Z+N15;{yq;U#q8FFrRTXUh1#V!+Yxu zerufjrDxW5>deNjt+NcuGu z^(ZkaALM79AD8juw!lHZ4f*bY=8mEFCq5S|QR(Kce;Vl)l)bBF6YH0GQim(=B|5)w zIL7)sy=l{if`DTuU%$wcQQz(P#>Of}+JNw}3 zw~4JBTi-p{Uw>(%&GRc^n`9nYJnPCA5WXKAQh&hqk$X?a{0-iJdICRk@10b4xbUNO zolyOQ@WMl%!>812>i)EC_M@1t$4_?3oeDX3UbvC}_6Fwc!r%$4+yZ@bpQv9ys~)KL zaN7RBVxg{bi~T|&8Qa+&Cf;)K(Y&ePp4{vE+1Xu@&!6*#_B^IsyD+n-DR;y~dVBUQ z$Vgek-Q{-dZQR8VE9J{4^a!o_{^MS!+Iil@BM%l#d>4M9uCU|(s)7rC_xGOJXXNDh zPJ#EI`H_R06@S`;hJh#RUy|Bf(N`tLE3nv>T}+69Ax9H53|u&0dGdy{&^0>uhgA)=mnaGzu zFd)E^MrG#76O~0L`!PyQUU^brawVGp4@`PVV=o6-vYwrDvf&AF8I*(1VX7Dy7?v~^ zaKaQKpMwrEQ3mA%V-!uyd{9k_lV_a}km*N09~DL6H$kXEj>*eTiB0}_LW(I)1upbi zLJVZl=*OR)C2r{rZ&_F1B+{{~USug5?6&nW>J8MS;1pUOXUA${=QR7#J*2^xcaAE3`YqJNcTA#N@xH1!NW= z&nTcMJ`@L4Y|F%z24?Dq$xdE>MvF-*8_fN1#)U~V56Wbp9CTJr20r4#z`&r4Vp>7@ zQ$#VCKv|>B*Xx1SY3XM9y8s3&D~zCdy3y zcS(z>VhNb*d)a}hV>y_)cDnfFf0qO%-@Giv)VdNZv}&f%WUVV&OpR-xT%O6TSFD%{ z)=xfoC64LH#>t9T17%Q(5EQ5V+cLSZQfcyrs|HLF$0tW^*O<(8O^Ye@{N$+ZN|PZ0 sDKNR@niNy#rO6Ynr7^``nH+z_S}eeul?`N$34;lPmkP)KaDAEQXUUUE)iadB^0bhvQ1$iKds zDG4&H$qvn3&E`USom;PkZP?=6G336`*+?vv(nWw&h6?;6g^(snYdhEQceE* zr;BryTyNZVo9Xz`Ic}r(l+*9hlH2_Le_8b|;9KSGqMyv=m#%0}?O7{s!TES!>(RSk z4#g~c=piv(BisMThUJRe)P)uv{mD~aAO4ofIlj5+aJbLB^2`4uGryS$f8QW8K|H&( zIxnN?OSxe9&)vpVH-jf{bULVKcjEJ=>>FXOZWC8+PKs#liQD>V^_`C&zN$y9$X0cZ zGHlr#S~P9zYQK5hmVp=6d1)rDe#FtY%A)l|ZxIZ|tVnsnmt~YzTV?t~WIG>9C;L{PkBIu){UDAtt zBJt7toVTq0Au&JTDASk8%VHlkxr@$!lrbTHuGp)}%MoHbYnMGLu37lVyT&!+?-IA> zC2qma+dG6#{h!#i{v+?zYU4LCSBrXu?rR7fKI*wUORV1HbeZX7t@lM|W1r6A_u;O| z3O|27vrV*vo9*g>h;>~2w;p^vmEd)B`wzb*-)s**_`fHX=lAy4&bu6EyYrqb)7@(3 zbz`gevt=E(TsD2I^651fuU@ro=FLSj70=F_R>b;NNV~}V_l8HGf^<7oOMiYNzk|m9tp?f1JtBRo#=KT|=(y z*WkAWGI-yF-+FVPFiLq| zfxX{_Rlm3-T$<)xSu3HWYm~;kM167(fA5;a<8OppiZ01dC|YX50+rq>g)Uqm=R zpRt8cRqyHsV?EcaQf0lZj~~9syY%iJMyxIPkeYs%0w@p)gJe`M)?foh#I zb&5%5_KF7=N^h$AUyGpsQtmJPf6xIg8Tx< zHG)`Foc2p!+QL2YDC?Xf-Xc#;)-L~G)F@`>|5)^rRq*md_SI9*#VLE*-zer%J1sHc zqHg`->%aL=zL@m#JGa5J)UyVD6JN{@PXC*JO3Uf|OZ69LdELLSO|0krICJ81;f2OQ z{UtBlW#nE?^y8eA^`cvD#lr{5E{`6@%Xz+8{`|kq!G$qf>>p&wwqIZH_vO^E3zxlD za!xW~vh~{Ff9W63L9vpIC5snI3$sLI_~r{3zrA?SCO~+%U{%|U9&-un5Be`Jntro- z{HK0$FULpT<4@nMlxAXJ@L^$KFqteUBsbZHPpUpR)?e6B#CEf8PVBab@Lbm?&JK4L zm37BoyfR~gl+ffXj{u>=moNC;GCl2QJU8lBzt07i_?C=E{2$yU-%n}cHF5o(nEvcu z@j2V_yl2^bf;}n z_1&%8@;V~gL)R@$Du_R}G2m&(_NXR@a{m=?U^LF=0%6Q68dx|vC} zZRM^D(k|~kLZwf%8l^>i`8@UeA7=ifh0PBaOzPdu!~O5Xq1CFF>$h$VPnluOe&RvS zscoyezFzn;&(2S@hhIF?XVNjtc@k>UQRdvfm*3x>7GU;nr-s4;??1CGo*5lb={5_C zo%N16_{qXvcb?Y&yM5Z;bZ!jpoH^0gIHl@H$MLTTn{QuAnx1&*jH{>9E4{;;;w2k0 zM2~$9`j^x3@T9;4`yk`x$th0tr;D0bn=ZAO>GA95TO;Q@kIuK7W`6k6VP@#R{#ffz zp$%sg9Q7Og7}uIG_pFsU@XJe@Tk==`_a^y5&NMq)2Ai0rrky%PwV$-RX2rZ?7ka6-1LVJW;Lb;)iVTmGqZ3pFmP}%FfceWm~OL~eSnXF zVUFx%J|Xq`xsjYTF~=kS*I#d}Rmu{_&efl=~wwIT)7w=Nlmc=G#FD`Mo?V$N!%hyxAx71i(IW!gpFL?*GP{f8N<1_lu`t?x$-C*B)Q5Z+dYsef5pq3uj#q z`TTm-PhQjCmcsibkK{kx&Rb*Gp-`vZasTLh){i`O@uu|)D*gqS){7kB`?Il8U*gAP zg=vrdn>ikyZ>o@s54jv4bawviAKeP~`uB&NjhFnf>DRwff%6aZn|?&sxSH07yJpts zKay|y;r?fGW4+nODuLM__3P?a)PHU0T+jA#{g3Tgf2{v0ccg!uulCP7@L%-XFQ%?P zXEmc~!-8IEKWT&Id66Hj?Dt$RyM%Lv*V&4d-_qOp?aP+O+e%-1b{Sf{ z+qhij*Yv%L$9<1Z;&lAGW%itcxgo2pr+u2!a%=h0J9g}orwe^tVtZ|S!(40jcYUf! z_v#$o4+}}@nAO)Brrw@#;QCCN#gj_!ZfvRT zlMR2>9}dzAKKf+RtXlJD`y!36^{WX#-q^Y2wT=((+i$1Xj)n+-eRGjp{msicrq3e$ z);yTj_GTaF@oecg?@xJls@~>1{-|$S!j0r)FVkh-n%bLF&UjXCbgB0X%Y7N8c3|P@ z#pkxndh+Pko-^xOp6}qa_Ir9Mujb&oyD?$2{Vd-#a;i^X$@9mfswO7Y=jcqnSCc*b zzgl~Jm%8PbUwPLr>Co&HozIrnX8LF=o_U`9M5+GXS-$X}JGySI(-b^?%fn)^SEyFN zOrPqeP}btA%lArdExs&U-E~>iuwE}da>iS)GyYPSk~~%`=C{#Gh!CuFDi&M&{Q^2Uop6?xjy>yEmuIKb-8o!k~LXo_PI1YyZc8>x{Y6E?oG>2(S2#>K1mIOHcD9QreFH%1Xt&qvQ1rPPgIVHM1`lbTSml~ z*@rG*owQP?Axt&+=n>|38k21#e3#t~be}3wTyH)9#@Z}-?&%*_WXWxQpp<&>a3y!< z)tDoy-1qyBzu4z_esA5GaB=Pe#-~=wyVx9x^SrdLn60+ zVxL|>*Y=G1`O!rle9=WNeV<~Y4l#J|dNM=x_|n@Ggr|M+Sg%^^bzA+ZO0rOJ!NXMBov6S5>DadptN(;J6{+f>)(O&q_$YdmV8iA*}vE_(ktXBR%0J?d5!5 zzL$KJ>Eu~9BV*!XX69PKUa5&eH#$`Gt@4ie1>Bxud}^_hQ9qBMzT`>e;+AeD_btrI z$u=E#Zg@m}+~W4@5uc&6uJ_T1z=K0HO0GjS!`^MmaU`xl(kojI+&XlKZt zvf@P7T(KIqNs+BZMO}&~1g=k-vZ3p5Gjn_NjO&>@BMwcE-?fKFk5j3uYUkHaA$v+y zrb%SmW>jx8H-0NH*`Q&E5;}I;W+gv9XwNZ0<#`)i$cP^{n6RT#h z^2E{^<~v;;B(L;Pdg&VU^5sjFQi<*fX3l>)WTdSYe*P*nQ777H?aoPoTaPlYm~vzK zVO!B1r>C7+p>@UKT9qMtc39q&=GD926lBdyQVCugDZ;xc+-aNXhPAgRW!;|CWs>9h z_VWK+?N?EsHrP1nXa+xwW#=xR$?L6ngReg9*|(azPd~JE#J=lU{_|=7)g&Jek&WWw z#pRw&JU+Wldf)WEzUxs}|2Y+#-$j8d!l&8p^7@?LR_^SzI!#lcKXb16;`19+&t3~} ztgIH>Bip2T-1cb~GsVbGy&SqnrH~dOA*intEc&dd2qDr(!=%IlupLaeeE>ki#sldHQj8EHifp zKD~WpMQ~A~)qw;%5d;e&y^V?7A0{1oJtXu^rDCAS7*RKqlnL*dpj;UB#z0_D^c*A~{Pvy-xc}Iimn?qOleDhl-+j@A_3clUn zj!fBi!gv45m`IK`!+tkc2D)$>RJ!RtC|IWZh*GG_>1?-J9+Gt zyTQMbz2)Ds;&?mdAH0*k8>QW_J9AOt&xeoES8u4C)!jTn{Hs}i#xbsKvlAYL?U}mw zn2z#3{`|}KuR}8(7gc+Ow7%0!oEmjxv87=B`zJlW6bq6c>u5>MUbk@5#-~y>y@~ft ze@M?>uXunnIqsdC6mQP5ExLE!mt9HH4qMRJccYE>iqp$Y+Pjk-r}whPnq?Vlmz=-6 zYsI`vr`)yV11;B9ZJlg55CjVfrV0TT~8?{pWnrV8#WXHEFk1cx^dFAZw8F#<)z1!XW*ZS+eiEkz~ z`IhczlE1R))d%NW-S%hp^-t0G{r(j9>N_nB|8A~t<6m4>f4THZ`i3>O2JII<$V}r8 z{?HY<<_#yiQN-1E**RRl(>Bi1i@%)LQoFF=#)*X78`BT&D*Io*iLK^Tj``J$!|xKV z&U>}W)-Tz?!OAXs=c9f)hpZc3s-&=Ucr-ldcnsjYF5>&JUQ<;c+}1cV_Uyw)lZdKOc|WB zr)sY@%BXwzZ1>k$(|Do||C6paIQ)<2R#e`CiBsO{KiKwd*Qd{Iv-q#?{jsBU+9x~O-`zjYvUB>C-xqqAZ*=mVE7@e*p(o=e-*@4myWx?G z5`7zg^%>9IHS?Y=kGK9jh2xhkI{6pL%d0*=ZrBiB*tN<3F}Fpt{zIL8J?tMu=Pa%l zTmG^1(!B$bf;I|ub0%xuNJ?~BexN^ScGRAx^2hEHSLRlT^&1!RdhI*3Q+x&G+i5@!B}uTl3o{%}~Xw6+-Ww zm#)}yZrz9O&gB`CMr{Hlb5`4XNhg)+;J-U2uDx4zeR^Nrh=KS|Z-x80hpq1{~TfB2GTjrrsqmL=z9zVV-bbnil~q)dj2 zNco4^j_Rw6<@z_>n6X6ea>-Tak`%7hoyCHS?%5vMTRG=m{DFyoS!Hhai%TR}ah5-P zZeq4CHo5Gm^oq2eFp-`cK5F~kZw}BbY}%gDmB?OynW`l;INS56(g zG&OPll*f7B&n9MAlz1`Th>lyxBOG{*Nfe%*tXnE=~|ySY5S!$dykx+ zth2gK?23x_%RsTq$vP@e*Ke->azLu+57X)GlkRLc%#vR!{cX}O?;ojd1(WQ~U6M<_ zvi_0lw_lt>^2z>*-yXBZ+pqh3N}JndC2Kv{dSouSs_8 zZ_A%T&x)$*COU;A-IL!nU#hHK?!v8k!MEDvQf|NFzWM4gfA0!^1(T@!R}9AgYcD3s z+y8rEa9PDlhGTPj3-iUq&6-v*@)>E#TU^%1Cg<$q+8p}9=IbAZE9<8!PAi$Q%RQnt zII(43QjK}mG7p}ui_j7YfD|9+h_ zMm-JPxxGq;THInbr&lKU2nZNxYq;`xE_!Tq=+!&EbLY6?PH&C*>a{0p-SsEC;%+{D za^V`q7PVnN|MgL2+??qjYgoHk9xLr} z(AgJou)AP>4>#8|t0&^x6`XNe3Gr%e)4Lyva_K#)lU)DhQE1$rsK%D-Co0x9nO4kg z%GwimOj=}(FoXCxl-skv>Fzc85|w6Qc1a~Mv0Jb^I_iwoB3GeZEwh^H->%KAJv;Z{wrf0op|hSA)Tc+s zx9u`&kJ_*@#ot0~+cz%_t}C(=A7mP~X|7e0=zAI4`GWKAo6CMKB@34bUQ%*5G1hsO zx#+kQ?{U>N{8G<64tK2Nb^p><7%VM)`D|NRwbg?&d|3}AdOx}R)K1JySaBgGdRJPX z!1`0Ekxi4_?CKZH6gnl_x8dRjdzp(nqwLb8VzwNriV09Tu`DrSZQ`eCJ(+1S&yUZ_ zv2~tU;M^_Po3$}9@r~l_c88^k%4O3Wk`DL%;obZE(KI>RDS}g3FBt9ZmDpsM)+%W) zK5^Tehiht6*7rO=c*(V|mQ!0MbH+k$YuPn*TDKEjGSfYeNJt9SpSt%%taZWO6Sbn5 zUbkE1ydv0sUf=bR|49+&_U*ncCC6nX=cg8IdHAr#+#^Ev1h2|gqpY2k=s;zda1)f_alk|S)jHSLQZv;cHWoItD%)Zso zdSPmf-=S*iJqPyWguX8R6{%v?EvPuK30!m1y7`|8yn z|JJH&kY8odS**3FW2MBw$Ekljj`n{P=G2Zk^Gal|nNZ?WEAGc3mE8p|{EKZZ&enTu zcANdU(Du|CL)QD}k9;WR+^Tox_l=H6V(N$DeJqYIh<`9$=*kO;-7WnNVeZBw=HT%K0j*_yPlnO{b;uN^CyYl zJAbBh4z6wMCI9Gn zU(K=akQ48ec>H(cWy5P>-%Ir4rB}>8&lr@n#IbyrT=8ay694T>BfGX)^TwI2Iy(F8 zM3<2M$l{gL4vMDVKKa4pP|CWs+8L3p$2#`K=FFe>dF!#S6{qWOrCqoB{jMV~b^Euc zm)Gw7aA5M~=NnsUKWA);)X3rREv+o(?7n-X!`kUkmKg5=@e}O}_^+L*4Z6hk?7PFi zl~1pH{nqq2FU~!G-N8zCw?u{Vxqa<|m(F>a zkF^eE9$c55CwpaDarf)3%J=J8zv@l+x!jN4SVL)DV5ra8o$t+CJ5!f$N!uhdcgFOz zXFj`LemS@I;;EFEmyXnWn10>Zq1IP#?DsFWvC{QA@8+_)=$BKwB(u6-Ti!JVIk$h!%6$5mXQkw}bEZ!|2jqNxBhy!Xf6j+y1Q25i{(RVi;Gx zl{5b}XRT>*$C~-_>iW+^Z2nf2?iSnn+$N=|t-jFe;O|xH1zX;6^B-*_YX>Gvz@8+U9>5%QKw-S3li zQe@hs)JUPzlRy04xoOeG*WdGI9q~=tv}t3>W0f#dt-7UkTvwa_UDEWBsa;)bs(Htz z)wH=TpKJS)4P{)fIkwn!-jdwRf8cnb?cNw~XJ!p|+i8i+VTtw1+meN?UaUWSqv?2} zcHiVh$?R$yguf@4zjGBn_c$yjVa~e5`EPd_9=ClWza`oH=H14Hxi+-tgbP z<+ht{>4Jm+&KvRNH{CQJ)lL=Lp*%M%wdcOu^ZQHpJh7TEH70diyhDevWXCg;`$o|Z zRm?u-Z(e_JyK3k0B^ylT*J*R-MY8qf?>D(4y36my-Iu|WZcID!O{Glb;|*)M`U8g^ zh?Mc>c_e->?aKIKs=D!cosPK6{k8K}->{Adxo_QhJ7~w>s;KGDM83stat$>|F1zIE zG%>4-;q;Ow)W@dl@c`dZH|oJZ9*##b!Y&~7@e@xmg^ zU}oB$klf|dls9l(;_7<1*+4ffJj&;%$gR#e$3V@JC)R&c#9}I?{0<4{tW*ETKbgn! z2Umf^!>`Hg3=EtClliPP>%)K6%cRQI-Fstr`E1LwMz-nO1eRVnJ1wR9!nI}Wx}Mq- zeWNC+EnKKE`R>cKStrj}S>I;nxA_nzqR+8h-PKj|Mo#dmhD9qnxK6GACtGL7^y>4u zH+g2Wb94SC-v3-}^Zs}3zWe3hw$|_epw!@7ku53hZ04RidGgsMIX*XKx)Y7-mx)9e zu9y*)a9rT7h;2bG!D9xu&a`!uB_`_7s7=DN-g zy1p3x-7(K-?vy$21u~`?MQ(oZb>_MQQ>V_%_7kzaywN>o^{N!$}L zKWpcr)!vqk=e9h47GxQIKFaM?%j)N!+h$8~|GF0y`0DuUyFC7{W^c=p)$`-t!g@~U z?zyFHnhDSAR|tGnJA3FBFVkx2%9q=@=jBBP&8H&ue+G01 zmiKYBRL|APudTebrT5^YFD(z{E~%%;+`43>vv^nbsme-29e>RQUvHb8jjmdlP*C+& zNIi1*#CE>RLW{4=da;H-@67CT;m-1>PH}Meg@rx+#s9{7reXc3ryGteD=j}&!2D6{ zw!x-WyXP&rmQ~Zb9xrisw9oo-^|JHlIW@N|@*_6Jrne67~ z6k(S0Ea$HFu9EHL8y$EV>OWZpm&6|a7PNOy#LIPz^KNViE-`j12#>Oqxf|5;@Lqbl z&T;KT?@a?xgnH5pzzCSoFRo65>tHRC9esZ?`@y%TI=Q1kz z&U3r$`n>CP=8x7pcHNOxYguL;vtDv^Qd6K(K1yfD@|Jo(iV$@NzX{V!g4|B;=w{>lfbe@h;g{)s#s{~?^qTtQ*x z<<}x>bK2il$h!WHGrsTmtfYd^`l9XvKFO;3gBz8`FaOyK^e=h#Zwz>2`p|<+xzgOnGnbqB_Jk@C3!s@y>&Yb*+ z9a7WgxW1J0Ix*|=B;!5JyKKB2{8~Rd*4|p--~02CR_<+|kLz5TwYFufJY%c1YM!tT zXUzPJ5ZC(GrxQ0vzF0lsaQo?5LZ;k|=bj$fS-$8&gzI^W71fjXNZ3v`9H53Ws?7`3o|t^i+>{$`NAz`@>TPV9~@t-spnoCd9pfL?yXzrwn7Q*4C#GSGu5Ym zUSH}caq4U4N`oW%Sv}=BmObZAxi!kpZQtYRbg%N~gx}ic+v*=H{WPy%oVCqr&$@SB z;%#n^f=ynu~p2wK_gl*=(Hi zJC^mpSs{n(PZ<<`l}?{=-_h;LzHO%Ye{BA1MQroXDUV^A79|wpbtz0HXDVOWpZoVi z_i4&yG;I44p@ZEtwLjkc6>7Z&+uu6F&rlS=+9*WgXrVhdAjY`P1KypZ(f8+0_ST9WJ%~r#JuoJdb*tBDwdXGY;xmR?R3_`M9SJ8FK9=gsq&`%=Z1jbrJ@ZC?+X zgv`6Q{-k>1`L z`fvVumiowDb9Hkt2%sW1zg7xsDQW>HAq$}wU1$7qRjsD=6<~U>8wZ~~bM{>Og8e$)Ch7h5XWn(v5ODEU2N;G48Ga^i7W7ip#XN%ct_hdC}E=aN|z!=ilU zl7{@7-b;ri!t)w_@m=D&GR^i;Y=zUox$l#fHXY_V_P_OBGMCkTwGF#9q^6yV`fjB9 zjxUHw)86&KAFag4Guvh^Wo1ge5^9`d|KxPN#P=V2`#9_M4@=)WAJ`K#`%lb~dPdZV z{SclNI`z6D3=AdO3=9gB1+8SEtLQ*e{2^Db+N*EgbMnItCPkjt9W0yLWjQ-qR6I;L zJtBHU9;QB1m7J-1ZjU18)-2ty?5%5~b)&AY%2*m2Af(WheKqRNs1q{r`OLOv)r4rccV>_m)pDKL5%7^xn^R#M$`;FUtHo;d{Gshl%nM$$HJR8kuhC zi%(8W>#6B04OV=vWpmE$&#UCTqT+cyz0;39e#U7NILk9{-kIP#CCvU)kFEaTnJ0Dn za>~DxT>j;S`)12MkmNdFa+yW1;If?FlzB>-U7~u0mqX5#7Hdx5xpLC!r^VAuHZPrN z+{5=NruF&GihYN;Q;s>ApM4U%q<&&|z4nux5jSF$l9%t&?4Q2the@U0>1SSX@1AL` zD|@`w?V)I1RL5R}vRx+HOIM0=rE|0z$Hu7Je&sUP*mLUW>e!lTC2I;V8|6(&TRS`M zaVgjO@QUU=^WH9t$}76;W#|5|H*b~rEA5}zdiPZ1pL-d*KRlb4^+cB|J1;M7zDb?= z+R62DcYS^5ynZBBxy{S?_}N^Uf{&GY_q1}@H(MS_6x4h4sH}3HzKyGB-_DhxBDYQ* zGx#;*@ui&L9fy4#*G*j(tX8JEC-&j`-7jlq-aaROqA9;)kNB>a!uvez^e1iaK58Pa z`NvmntC`HT#i5S6VwaPB=DnIFI`#FdYkBL|<;Lt@R#yLW*Ve78rOei^i`hL%bNM@) z+}UArR}QUx+UsT_kQaN#WRI3mpJddHi1nU0XFJGbvW(R@6PItA8B# z?onQ~b^Gg!pR9@nv}6ByxLZhE{NodBc;<&Tb@}JJsxFS=^c*1fz%OS>O&C5Gk^mF&0m zv(0+^X|JACid5o6{?~3lcbRUTF=@8l(v7~ejq4qgZH|~&X)Fp~&a3rDx8yqSyR=#5 zKDz$$o4BmCHx-vE%t~4npLX@mpE(Y@Yn-Pa=)9+QI*IFjL!`lrZuW)uOxl)<@+=9O zak4rmw@O`@{X;mn_qG{NHait`o~*z2WyZU1cV@TnO4|(_3SsO~UuP(4M<02ybER$8 z;kSj%C8fG8fo)QA&VHOG)>w7z*wYW&p6Nxz8=EZ4$;m1_U{c2se)?=^(hE1|&$(-_ z-}0TKS+nxc{je8y3Ts2nwGRLLT4i$K($sZFOeb<2FwLIu!1<|M)5<+1i^E?V#+zKo ztG{{a9lwj>bB%1)W6e)X8G{)gv;A@kuf8O|r}>$lGKH+VI~=X@ z(^h=(Uj5;z!c~b3-fTCURs2^!J`iFaDa7g;^9PD^%M&%Q#ms{5oMe?Gs%pOuoaYIkM$Y;#<82Z7u_eMcuzd@y%)EePb#Zqb4c1ZofnS9X2LPs7GzvpJM-3DyXA6X1+f0goZJ(tZo$5FF=US9Q|bnQ;^Wh*y@m&;B4 zGp5etSX=x{{QUHz>9WTk3G*(hkDOclyF5~1w~k$6@$%iildc>Ro)#u%K5OIcrhT(! zgsWW+shTw}@TF{3_|mwlh^6;0%ZF6WnHTU<=+`ta@yq6+RTJcbUKZ`+lAa&1QnP#C z@=M!a8ci(|*!1pu=s(8zwVzCD)*iZk^7vP+{}b{9e!AB%U;22lb(URp$J>yfZu>av zm6mvOY|o2{jO@yCeJcO??1#5sE}FQrvYt4#{li+V`^UDgu3`Vra#6MT=7JA%weBA+ zU%jXMec;cye=AMCuiP_xedy2hFKk7Q|4*5I+#tyDa^;M(Tb`B#^W|6BKA1aGe)h|+ z?q6n@%NXv_u;D6H?L;byX?{BcoMf)xYOds)46kJT@P&w zT2%i(^z8G6(NE`p{<~;7d&s@R-wkrDw1hkNCf`tc#9M317jo}3|Ed!0yURW~@9}?{ zm(hCrOqSLIW9AL!mmZxx;@r)4`G@~0{^#wp8P4_;J4H?3?t6P#_3TpHH>O(xb}z}z zcR!G!eVTtZYo$s36VqEJ%)RgC&fIus-pky6w+$Cwd~&)RyJhD$65P6<60xUKEF z+FYQyXpxdK&*SN;ak^aBgdBMo47YpheBb7xthoM}>7tJ_UYypNbjrmbzsm8Y>)nut zXZxSFPri6TJ9IuziAdSe3P)aoO>-&WT&@N3oIS^ep7(hv6^ z0-H+fx2)-L+p5PoQ_J2ff5jgO`*oj$KYdflaa+$l>F(Laf^SKgRHRdQs_Eg>ey*e=8TP5n@)D<74TkBVU%KpP3^zqe#bw^qJ;w;~Ey*{|D zV2wjJ=T<)5oQ}&!4c!x_74(#D{ZOtdq|Lp!EBI$=o%6%{EB{pgYd%%~#6EG&VXYq_ zb@h|)2mL(%$BgS-k7}RS`_I-|`?WcKaQ`>WoTXSgkDS0Daz{ulkJ_77Hv{F{*P{=uedjeFAd{kd}m_w;R!J?)mg@tJ#{nV$X{*7A>K`_nu;Tlu(){OS*xzhP}H z`fF5`z+<{zp&i?W72Zt*uq(7Pt@h9xjpGK7Q3O>#}!@AGto9xb9tTJ zqnaFnsZYv^oVN2loAx-&?6}gw9Sgg)d3<)nt}uEq*X+rWXHVGsq@9;N z#dMy1e7_?`sZ#%`<*Scz?^Ko6hABkO)tE9fO-B6hQP09PM>Gnf@=jheT~-(GDIJkh z&(^uigME?8tNH(IFFjAWKBdxeX-Wudrc#xlFRc+GLY&_f_{r zRlWiI2iX|@ZP;)xQ^k&5TKVZ&t}Cf`ms>hVudR;tx9@3-VV=7DwAF)kuQMu2e>4eR zoV1uZFnamq3~N!LiOn`8jJ3@(^p1p!#kyD)In^Jp?vuHGR-NzGGvVcVHpdg*J^doP zCH%qbq<{^NE%&Zy-_%`o^6nJl9248y&adpG;zIWHPgyjn_KA+xU3cYgGpuXG-?9`f zn%g!tPRd)ox&5U{>!*)q&FhYMOmv;RZqa+enfZr=XXhUZo%U0$=H`XpwZ9mvT4w)! zqQ-iD>Cw9;o9gAxu4r4-p1~657JkF_Ti&Ua1t*eyT7~}}wmlaobvxuqVU>*P(WSOi zZu>r#TfB#z?PDZ|WVgdkmOaxhxo9yz-|S--9<_Vvj~K7;%cc)bICj5?+Qk=g$E1H< zdtGisw2S?cxf61fp6r>JcW6zfNoQS;x%%Cnt7U8Uux1zh+4|&RJ@GzAkFB?`LnwWil*HpEsRWf%?G8=8L*LmMpSCwnm6?gKxclCRo zr@8OShAF|bt4>5Oydk!uC|2(ILhFoc8LvKD6vr0p-|<%uO{w0rJ9E}wGpT2RZf9RD zn`~Yo@^aR`#P;s;uX`T^?$V5}zmjBpbyJhu;=3%{&M%#~Me@Q8CgCiTsk1WGelF0k zpX;Wzo^q#S=~-eupacXZwEkI#-2YyR!2<1?%io?XQCravHY^4cYZ_6HTa9y+R@mj-_V>$KtAjRZ8f~oMG`r(?IN{314h^{@ zQzSp!-&rxQp6Pxh+y0ep^J6lrCJWbU*)pw^iP+e|_t1CAdQZ=I=l)q2z3&~Fyy?vL z<39bn@Au^Y$rtdM{<*M9N%8sWiZ15xZG#y`w!f|{G~^9+2*$7#W`Q(+1~iM^4z-YUFmz&(!2V_ma4oLOH+N%xv$uCa@uAY zwzDgnEEBK3IwrSjM||rgzI>UxWzqC7v#&w9lWXQ*bWZ;kFxO>9mBxmJPJ+B^ zvsM+@`c}%Rrf+R6?_a%f_PJXP6)KG>zK8W@rA&cgw!nW**0H@;1aMCT+gt z?Yp4D@7%GxU$Yc=`txpG@qKBzGj2l zhZlU~C@AK5_kTv_kuruNW|_~Czf?79PVu}^dkDVKCOI6K_YuKp$!l&xu zmsQ#Z-&22?{#w@_8NV#t$3otZ@qvMXCWAzC{oMNGLzd!y{+O{omnz!%Yr}f&%*sFO zLo#MMt=HTVw6JQCvI%Q#?WF0K)dh9KSA67Yy~eB0a`XDjUKh6f!_zCyw#?D}?Rne# z?A<4;wawmvn9(5cm_@gf6VFt)3-5i_i%g4c znP3%Xabi;ad?umY@7k4QD)e;BY*+F0Ppi6p>7?ojUv<%$FLY+wuzz@?xckXg>63}K z_a0We*S2!=@5otc&$urBNzD0U({ze^!_n@7P17f|&s%PJVcrG{{@YKJugSmk7f50` zwCahZ^tCe!%wOsTH?(S6>nyRKT_(WTHu-I_)WQq5ZGIXHoSalY-%RM|&(s{fyi#BN ztzKz)n-gRwtSOk6(#jCG%}7Cbi;TvW$)8+y2>s-6-jmmLKtJx~(lU#yKYf{xRcYLE zHk_g*x4T4AE}j4A(SzIGE_yg^b?#@4{&%l-``r-3vwE9$Ye+u3 z%)7vwwOn%5_R~RJISe;ArqvfZn=W3!#XrSx?!C58_Z9{#zBH=hpK_0VE&qgF_AE>J zCrq_-ar?#b#m-IVKg$)nwnui3UqAB)-^^Yx{bh;S-`0Ozy}3?_ALRb>ipjU``DXW5 z*4jB;Gc}&MD~xS7TM6rz@W-cTJ#P!HbNSDjc|=4?bN*$GR=cnjUpb~~i@aG}e{;!_ zhcRv!);36{e5i=#>yPtT^ zU+%!UNYnR8@;lpQYM)-#FEBj$H2CbIV{9ktpI!VvtM%O9W&Min%KzTmI_iq z*)NlWCA?vs%cd?$dQuQxANks3`;3fD54JA5kj^P4^6P(#p@@O@Qx~oBrXPX^d6os1 z^Nda_ezY*oygDmk;;~2iEA$U1JulQfR^z9$&Vxl~d1OOsTrR6hx|h~+RnZqI8+Cu6k{qAz?sRtbLRrpky%mz}9JlB7Oj)z(?9@e1m{eC66gr*{d-y16x#Y{sCg-?z z8_hD-{%jVXcW(BjGn{J*%yt`VHXC2I>oU^lZa-NQ7P!)@?}U@UwtsgIOn&Kp;}l{haHXO+P$TKmA=& zvclxx>D^fyeom|3aPLHk`n!yaeknBzUH9vk{&9VB_g8|#`B|M;dOq8&2ze^c`SsSD zZ<&`~X1s2BAeWNs8IiLhM2`Rbte|>f9+j5fHL8<@7f$U|_q@)bs&n&};_2(FEYE~a z6Ke9$)cWeEG-Fouy|Yuc{X8#F7ky*m&%0A%{daCFtuI%7_jv8Bj^_IHHv_gmvEW$l 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -86,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -94,84 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 0f8d5937c..ac1b06f93 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/settings.gradle.kts b/settings.gradle.kts index d2576c793..88192ba63 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,7 +4,6 @@ */ rootProject.name = "software.amazon.smithy.rust.codegen.smithy-rs" -enableFeaturePreview("GRADLE_METADATA") include(":codegen") include(":codegen-test") -- GitLab