From 1a05cf34f6dfd84bca969eb02a28b458e3e3163b Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 14 Sep 2023 20:36:55 +0530 Subject: [PATCH 001/279] extended EntityJenkinsContent Table to support passing of columns from top level to modify table. Signed-off-by: Abhay-soni-developer --- .changeset/spicy-poets-sell.md | 5 +++++ plugins/jenkins/src/api/index.ts | 2 +- .../components/BuildsPage/lib/CITable/CITable.tsx | 11 +++++++++-- plugins/jenkins/src/components/Router.tsx | 15 ++++++++++++--- 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 .changeset/spicy-poets-sell.md diff --git a/.changeset/spicy-poets-sell.md b/.changeset/spicy-poets-sell.md new file mode 100644 index 0000000000..28ef965282 --- /dev/null +++ b/.changeset/spicy-poets-sell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins': minor +--- + +Extend EntityJenkinsContent to recieve columns as prop diff --git a/plugins/jenkins/src/api/index.ts b/plugins/jenkins/src/api/index.ts index af1829c0b4..32c98ae5a6 100644 --- a/plugins/jenkins/src/api/index.ts +++ b/plugins/jenkins/src/api/index.ts @@ -16,4 +16,4 @@ export { JenkinsClient, jenkinsApiRef } from './JenkinsApi'; -export type { JenkinsApi } from './JenkinsApi'; +export type { JenkinsApi, Project } from './JenkinsApi'; diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx index f82ce2e7ec..b0474b73da 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx @@ -239,6 +239,7 @@ type Props = { total: number; pageSize: number; onChangePageSize: (pageSize: number) => void; + columns: TableColumn[]; }; export const CITableView = ({ @@ -249,6 +250,7 @@ export const CITableView = ({ projects, onChangePage, onChangePageSize, + columns, total, }: Props) => { const projectsInPage = projects?.slice( @@ -279,17 +281,22 @@ export const CITableView = ({ Projects } - columns={generatedColumns} + columns={columns && columns.length !== 0 ? columns : generatedColumns} /> ); }; -export const CITable = () => { +type CITableProps = { + columns?: TableColumn[]; +}; + +export const CITable = ({ columns }: CITableProps) => { const [tableProps, { setPage, retry, setPageSize }] = useBuilds(); return ( Boolean(entity.metadata.annotations?.[JENKINS_ANNOTATION]) || Boolean(entity.metadata.annotations?.[LEGACY_JENKINS_ANNOTATION]); -export const Router = () => { +type Props = { + columns?: TableColumn[]; +}; + +export const Router = (props: Props) => { const { entity } = useEntity(); if (!isJenkinsAvailable(entity)) { return ; } + const columns = props.columns; + return ( - } /> + } /> } /> ); From 78cfb4e2b2647adbc9a00ef1eb6fb82c4234256f Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 14 Sep 2023 21:45:48 +0530 Subject: [PATCH 002/279] modified readme Signed-off-by: Abhay-soni-developer --- plugins/jenkins/README.md | 29 +++++++++++++++++- .../jenkins/src/assets/dynamic-columns.png | Bin 0 -> 218507 bytes 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 plugins/jenkins/src/assets/dynamic-columns.png diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index 2a0ec451c8..d21fee2b8a 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -5,7 +5,7 @@ Website: [https://jenkins.io/](https://jenkins.io/) Last master build Folder results Build details - +Modify Table Columns ## Setup 1. If you have a standalone app (you didn't clone this repo), then do @@ -97,3 +97,30 @@ spec: - Only works with organization folder projects backed by GitHub - No pagination support currently, limited to 50 projects - don't run this on a Jenkins instance with lots of builds + +## Modify Columns of EntityJenkinsContent + +- now you can pass down column props to show the columns/metadata as per your use case. + +```tsx +export const generatedColumns: TableColumn[] = [ + { + title: 'Timestamp', + field: 'lastBuild.timestamp', + render: (row: Partial) => ( + <> + + {` + ${new Date(row.lastBuild?.timestamp).toLocaleDateString()} + ${new Date(row.lastBuild?.timestamp).toLocaleTimeString()} + `} + + + ), + }, +] + +// ... + +// ... +``` diff --git a/plugins/jenkins/src/assets/dynamic-columns.png b/plugins/jenkins/src/assets/dynamic-columns.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8525740354a40436511a11b18e545442070fba GIT binary patch literal 218507 zcmeFZXFyZkwl+!;Q4q0ERH|U3i}Vg6ARwSX=tZf9-aAA@L^_BRsVat&K#&p$gkqsr zX@L-WfKY?f&_Zr__de%*_k8Ewn|psB{E_8aYql}xe8%&PF_Y-0x*800H|QuRC>S&! zKhme5INwe|aYpalS@NBm>q##uC@v@gRaKvAs;Y87^>TLry4X`tJdRE^rZq9>V97Oq zpQQZqv-bIh^E?u-K3p=RSh6&Hc!m4JHENX>D;8!8q{;WUu$X%$Ko+KFf`Ty(A}od< ze9NC3Pkwy`JM1JZ94_>NNHSY_Vz}P%U|I_JRrch2i~w40Ym<8k4Cg=HE&Mv5sYiLy zhmtvoGUu1jCDHtRUJ60gwW%)T3Pp0YG5c3D(kiJ;Euu|in(Eaf)$AVv(+jF0=P2sm z3tVBPQvR^HU_hs)e?j2)m0uJ$t!}lLdRg$bT=%NibGXXY^%}uIahv&~MmEi><=gFp zu?W+rs&FowyEpZ?&nU-VEO!q(zQx(RbP1!(cDY$URK1l^))X|@eGN6|QSr7sM7ZJ$ z)4h9_<~<9Dc}sg!x0UoB%>AM>N_FvkS>n@s-(AZ4ZlrcOU32Kqxb}PRByJvaPj{@| zROds#|9z%b!Kq#7`HyT$j(0f$+21|hG2Fb!vY@7ZZ!hkN%6&E)#KYgkuOIr!HwRr3 znPolG!sk-`?rsZz$mgApHY^4|^5);!hk+aM+Fn;P=!hfekm`qA2130FdapC6%GHv& zMX%TZ-f_@-VSh49+Qw9xCaX%?XqJeF(Z93Z|CvNlt7!Cr?_vUAG<|{fLJuqEz0h+F z{y*VASNEOKY77sN7c^455E?C$CHF*?mh~6dS6~x8P!Fr zmPC^6?ku~=ZGbYr#g8Uaa7xTw+f z3s)aprc-|~mkg7%)4afQ_KIrsk4NU?6oi(BjdKAzQN!0Ar*l=e_T2OW9xn38-?HHK zx$36F)P0r2G;i{oVJCvQwtY{O6~R2@^NZSptLS2?C&xI2^fc@@<5faL?gV$2ezQ;y z9r5m3Q_pl%;pcC>a>>ssgwc5}TU(C-a)6o_%s?2ZJ5e4LHxp9%HaKjz@8IU4{ODVf zOSI6>i#BVcnyc)7OwJTOB{a^>vfpg=yNpJXYD`S!YoBWTVFan_8D(}*72YVc zDiqmle0XfQBzNQ6o#=vS8dG$n&z&QlKT9q*M?7y$pgYhs6iWoP@qqpRRy``sTr(LcZ^9aB9Mr=QP<$hiQF}NKrdY@L( zL$UWeM*ubG(wU#iOz&vRpsvcbGXGpHP1)qXnjA$=F@&d1YyOtew1#_|bF0W3z<{bM#<0nnisd4zozS%1VFABF*-VvG_)1+WW8gY-Ka}7G87Zbni+Cbt8RQ8|II|9(6qzN&VB6 z3+H#wh)`uEJ!$88a`VHb&hv8TqRto2SS{bI=e-gw`^fnV?RYF-GyAO1?3Gz{8;*@L z<*|G3q?LJ+w>5Wfap^NftMcDUO+uyYCYe1>*Hrk*sMV=;N2^!shgPxHLvWzhycRMw zLBP@|2(taLM7R1@aB_aT{HFNkgH1m#v3;J}sH2ZxRLTqXp3d^ge5n24`@yUe*lF3x zW^ZpVX0JDY%|3jSecre8@IxQJ($nLjFU2;6KlL>Yl8XcZ=wh#j^J$%I{HacAJB0=M z^u^l6!$Sr`heM1IaexM(nqSYi+9}ehVcC8--N{ZuTcTj>4BQ6p1&?rI9X=T9STVZI zy575%yp{#R*8b&grFi=ZLJ;rv(av5FILJ3>WLt4*a3^Bhd&hWDYH>>JJHzS)n+pZk zTpmcf{+4>^{DyE2|8C$it@^m+BZjpLwhV=AZepwV+3!D)q!Ybzy;Mrpe#o)JcGW%G zwtj36;aPURr+MVj^NO*rEpsxKS-oFz{UiODMPk9*g3kq421^Ta3i5hNdaiUYd>sBb zAy$|n)-Bd!oK=%aFwZcFgJ-;WX6uQ0@6z$DyV}AT?Y2MJImX}N^cfH_Eat4>TvCHDmf>u8=f9nccQ^#og73E}ER$E3+s09yAPFOu}>Th(u_2Mh;@k~1; zS&H3|J>#O^K=o=|*;YQGVZ{m}hJGjWV?|^D?gfbz)}TKBJ3)`B@rG ze%0O!vc}TZzMt#PAiMp5K7sR2>z)1+b3udg3z8_;&*o5!u|K1Kd2nfPSyZG(od&p# z;VlbqX89XWRLb=AX&KB`5l%zIzwBWdwG}8(E&vy_z8fal8gv2Fy(^j+(j6kLXdYS@ zy41MTXdZ$jJ|Rkn0m2xGJ;cCcxud)Xt{-K(6}rb|-1@RzFbo5|;F<+ZC$exMAE(e7{69;ts2 ze;8&Mc~^OwFZbB?m%p$zj&EQCUgwK*c}MkZwFvNx@TD~Wt_D~1&DKY4hRyQP92|1I z)d~qLQlf7D_7(|eNm;9YO~g-XG^5`bv~It)FJ4y8(a9x)Bjec8K^ zO{jfVE9XtS^?q}CGj(%tE9*_>Pm33rTUbqlyS~w@YPY}OJFHShp5R%dV*Q!8X|VJ+ z=;70eAyLiho3V2$$?nh8`lI-w4KC^qXYgl_iT1dS%>wmeBVs{W33@nP_na59w)i+& zv5#Uky$>DiyPa}e6@!1Q=E~gk_Ui$6_v9QN$`=L-;2LuB#G3-c`(Mk@a}uv?YU_}# zgP3c5xE`6sIum;)R+behXw|f5&R4b_^3lLF5S@N|{5B56L0qY`rcHMcUb9$ebQ$!T z^_tmS5jZkhH7hQ!2$;_Y*cuO)6_g2E68(CbC2*aVT~cM>lGKtlE7o$DXG6=u{7REc z`=m!H&!;c2fp1=(^M~>E@##|g?vM$Ws#=$=LZR0}QZ;W~O3NxB{8Q@VMpbJayUlBB zO`>7Y$rs=9UD`%+e&$RdZT#VYU_;||$?=Agv!%&H+jvckH_&~0vehhVtkhT5*Z%Ok zVn-wHaFAfFbSdo94mbAs+RZN2)F@z-_Db>raEHi%W|)ZQi?`Hyp;Ov3*%Os0&4~^i z+J4z0x@OyzV2~gptvISb{=nm*&zE&OREI|CRrB?1Ek$3rP(kUI&)!m{>Zil?d*}-f~~kM2G((rA%BD~`|-pY;a3hmXNOfmSkh{mF9spRujT?#QolE|6Sc&zeZj30gA!^XA~|QE|uMvSV*w!tPmuRgfY+u#dh!wlDNH$mz&* ze_&z$bJG!Nc~K9)9(X%UVlSwJjVL8IRoCds@s1Ng5++UH2w<*lrPYJ>z0qU7rNO~I zgT|!Bl0&CM_`dmG4KiXsB7!F&gZGg6`*SrhG0K33s}xRj6ygDj`EeirVc!OgL@_P z%vx+y?0Xa6rWlUVlQd3M3=!C?C9>M9g_!Y(2B?u0#UpzYO$Qwv3V!nSISMMuD-_h^ zD@yV|iYOq(nZK?nDDIFyDJZBuQT@lA^X;Fg|Ks|M-pNBzQ0_zWD`$a*CO#%QPh@S~ zU4>uRx!c$a2e^8iyg(rzAWObqU)Z?&`Y7=5 zoHX>GfB)#G576PiT5|LL=dj2F6ghb!A}V}evfiTmR6BLCx~|FNj) ze-#xKy)X8E7X3dS{j;dN$cd%?56k^yTK>9Ao)<+rd6EB|V@0~x6eSiE6v`Buk5mi; zC|4)WXBf?gN*!}iUqG(DM%)yBMUT*SF@naMiklC9v5|zg7Q}D6+N6kw4!V#EG7B=m ztq|8M&jPQeWR41|SGL(*lJZdTPeCMPHy_QJIobKP zW$)uPM02aSAH(Rc8i!U{ODjc~mHs%)`Gc3=ZPJ?}e9n*4? z|Mv_19|o*4;FhYXeFu4!+;0)iF1kxv|WjD~~A%r(N#hy(b0D zvi@2Ju~q*cfPt50EYs52TiNY!ca39T5wG^oCHU`g#ZUWF4`uB{U2Mv!EvrmRf3Ds4 zJ_2+3-&g-vrOIvR$OYmmk*7wA|83zEo8*7z;WQZczgGHREBy_${Vy(^YH9p0dY=Z2 z|9@C%dvW^E_ammK1R7iCQd{Qcu#__x)~~CyHn(Urs6hT4T14eb-qFcqan#HY6I49e5L~nKL0D8Va<)-+ZA|`J4N~N&zu34n)u0fMUpg(VQ!Zo~MR?jm zr}UIz!-m7O)pwZu$2!{DqLjpCn!Xbm6~-1Hj!cN>_lK49-ZOq|a`kk);CbPzSL3>| z4b^bybBoI{+AF9ko_oe6vEFCq>CQW!lBhj8*S^-0_qy}>IJt+|_u9hIOM``Nt7z{p z@E-_Qb1CD{&P+~t@_Qy%!L%!htmCWg-%_;R6A%_PXeGzlVV(6gK@};Pvfrp)k)*9A@;kc z;?AE0&Q;y!9?2JYwYnr%0P!Rpr zL$bv=`y^N7uoaN*xn+boPUgS2xE`l-x+$#7enscCww;_Fg@x5FEY~}YGlqF+2wLpf z$jgANQamg&wS2b@0Bb&kob+0k&i#E|x(;T8ddRJs!8Vpt?97uOeN%jxb<@3@8vYq{Pb*L2-;p|OD7SVnoDT8dXR28p61!2Kz+~A z%>QnxznN3Zho6L)=bY-^w7b>M!3PWG9l=0=f%YJzpwp9&y~b(20x|o(BM@}Jt5aMj z#oq>Y9`RYf-oSW`Qz2+4_GD6}*FKytMv|q+)CTP-2X{{V@>3Pqc}-Of2&a^%jp{Ym zon?uQ)ylp!bt}&f8dGJw$QE&d+*ph|-%y$v-EY^4D#a0vI zC@(LJ^vin-&hO7M-a0;P zYGNiRZ9hg$T}pzoga|OgnGL>J9UuF*-Da%^`!t|jzAlq(KQnfVFO>i zJ2M6xv`LZNvllLs4Cni#k%1f^|k97;zmnZ{5@Jhn0^!@zo3?PzEpt3XF z{tLu(9T^efEU&P9(KWdDL2dec`hy;);OM%Gr)&Q(LfO2)q!i6%Rg|Awey&ZYHb9Fr z;qV6|{@uEx_T>ZtP(sg&QQCT1br}+<-k1YvTr2gks8gv6b7~R8$sL~#u3u4vzb6Cs z#TY{c*h^MN%G!@&{zmZv2eCWAyIfOtPQ$Y%bnW0yPoUON1A1VGu&c1Uu!WR7-4M>~ zRx2kqghmk84vK>;=-PU+1Fb6)!#bNc0Ew=cy4%7a5)%8Keo}vDZ*s8&3dOLc`<@bC z&aD!t_}ka^&aFeU&=5v%bcKELYmecv>H{HUw$VoKgnpKb~(ws!fr_z^g#FHeZO>De%hg3j%$3=eh0-@ zv90FEHJctlrAQn;)uB3q3R)|12;2ObHkv7$^$1l zM-f4q^3slB`Ijab-AG|pG-XG*)u;36++_b|mQJ_wMr(cs5vw8oX41{7o(EsI;)wQv zinLbPcWJqYc8j((_qT~Zfz~}o$LNF1B^@S79>uemX3wa3jIqVeJYwBZO1$=oY9vAq zTfv7*Pp~Adt>b&xRJLr1zhm$=X4543|?ckwp7ku$nVgo?*2RaHLmJlE1&Q)_0knLZ)$ z%ZaH}{@4S_CsUaZy~I|QJN3$SPDdKUg#~`k^S6U3OrN<50TQ%l5Lv7ueQ9qyJ@~E> zW*Bu6s)WaGgSM73cBb=1?H0dXOA^hIDshZILUOE=2#$3x*F!hm3co!P4 z6PhP&XHpM3j(wI+Lm`qGqB8yfTfOjh`EHR2*c&J;X>w7_R4Vvvz1euE2lzv;-}crtXQdFimUBvM11K_)F&O!J_jRaIXtCNA(7z9b9Y#NES#x z-nCk?%oJwRZj#2qfh5DycE%u|Qs*64u875-t zUCj-R5(W5SU^*|x-j7^YTRE@Ht5h|(ekjn=(a!9J*H7FhYV6|~Or`M^E}0`Muw#?` znSi|x8quJazkDF^7wzO)2z61xMqh`zhKo^=>v5sDGPYzu}4kF>s^y%^Ka z8`b=R_iWn|mN8a^cv!V`<8W-6Cf2w)Fb`4QVH>(UTWPy#dRJm;MCCLf^{JH1@Y2(~ zdu0ks3-L8rIbUU%*$#p!35wEhfivAfZg=*z?pPl`%Jw-*j(-d0cPq^C2^pqyk3WlF z(4|{o4oCPzGsS2N(O_?+<;>K6nYEBrY}6~Of{exZ^F!KmM1fQE9i>)HqMU&X^N_wN zeOz}N>xYYs?FAnij_Sp*p}5=|4MF%qr2%rbq(I1Ad)?5*1ykKHI=(()UX5z2URCHa zCuC+W_BRZ&RtSRZG5>8T{||&Z+*s|?xwZy=DG;;!*zNaxYC8zHd5vT-r|~E&^T@#Q zJlCPVn#r1mXA8hO0lme-@(bf@X_%mWv$pE1kzt&6TMU*@+5dzv4zKCAkg>#DYNT_D zFLF-S**t}YjhyZeW5$K89%LY&dpd^p5RV&riF=^dH;h(;FZYKSlqT1wy68`#hj)F$ zVK)-A^SZ*!+@QWn`Yqd#QZ|l_Xw|nZ=`6xM0v%vFH#O!OpJV3qCkcbPii%{4J22Lj z+B)pB{?XkXI`zKHfCj;I0uG}ChOpGZLYBL%wy}(==F(_pTwLKh4%Nv;8ZIthEie;Q^jnH$TY;$%exrQ9QmV$3Q`E@EH z;v*am<0MQB$5Y^F4*OX>{5r@n~OSf(0G^uKsLsY&%2pbT7oI9Q&N zpm^(eQ|E4LDM5a8t~@UcXj;F3=m#IOTA5z&vkRRs)ho;OJlOlCWl87>RSeshPAPxh zzuEr4&y(0TX)bHziv6)qkFBZ9OEA@|zocyhi)VJ0e59jObInV6>e|PTda`~#^-Ev# zXERizjO7}hO)UuRYz)O}v+aO$A}W#=rYS=+w~hV2dgBypq;msiQUhl9jb~Gtoi|@i zzxzS$6;-LLD0|jUsms;1_@T8|@a%qzs0ebm9+y5B-W(Cd7-zWS)~%w-V<|^-1cBS> zH({HaY%CRp0cR}goGgn4(8E3}Mq?sV0ro9pd+1QT<}EU`d!rpcC=O1-6&|cmd#&eJ zyqei}H<90~MXaXE4c0k6$o!%b>7a0VWPBH@o_<5Y>+$%` ze3$J`T|60v@Nw2kM}|uQ+Jlw7fd}9{QUQsFGsx=&Fl4{A6VA5z6wSpMD%`j^VcjNE z$a&S+(!+>d(#B)|n>t2B#GHBkU>hW{tSy(f|2+%)vr^A(z}lyT>}3=QYk6%s1VtmC zRMeKW$$NKF-#TXpwF@f=UFJ2uA5PGmw7~6BN+TbOAvr9x|$Nz1-?)4;S z$%ks79)G)ic%Gb%j+F{*?|bm}a+cmlv(>^Ku<36hK(h8tG9H-kXV@Um^)uhB{h~D6 zJK#{KZm(8Hi|ZEQa9>e>cD}3>x3+?fVqCV~xtyK~xDAzku7OJ{-Ptgck+}HT1?>xOZav! zpIsXN9Fd^(B*Bmp29_k^X=j(sLD#dYU0i`CVS)fZq(f`j?Cw-|^m^zn5eX=U)n=7+ z{(QSm?5?p@F_M5u2r0PJojKkp$IX(6TZdbnUZpa9*ZwxHN#>A`r$mScpL1Gx#}4qt z_aBL78SsxiWlEFY&rroKx}fsDfM;oy>InTIQa!rcb?0qkR8c29;deNdfKkc29}!t1 z%Y$hefxBo&>^t6smtB0VctZwL-rZiwY3j%|Owt}6 zIl<4c9P;9Jl9&iySlLvHQ8uURP`K}Cwf`A{;k)HO)#uhO&@S<$CbPgoL4>gd{M^D` zS{RTh0K=p$dji}iqh(ng23?Gtqc}(FNVcS90%&BJ9DCK>!IC!eB_pvhj^@Z01|f^q zBr!B*Gbxh>tC$A>JL^cpj&Afd)(al@ zNrhd*3>;Oh{T{GCo;e`7`jQ`|#io^Ygz85s#Q(i-|5UDg!0F&jte&u1u30-$d>QOl zK5GU<)`J^nO+r(@+=;DR_ZcWr2WnQ*{S~|UeN4sod-u00<9t`Hm4fA6OA(>5MuFc} zKdKF*@dqnqQ~uUf405i?W27xQ6M-+lQ~-^dGW06VN@K`E4V;9D zM-LSjT1@!V4Q=B1t7DzKTEgJIqHrhARZv=K!URJHcsVEs7&9EqReB7n%V)fy?;(NI zZMyC~n8;Rub@lt5K)r)jy3`o3rO@-Xsm{MFI-ik~g{`6qq0|%*Xm~WC)YN$ppH&I8 z0$ravIwati{e(E(1JaPtge8>FY|>1G%~Q#SKVs;if|ZJ3qv~zOIM6Z5a${bgw@m&+ zRDYxQNXZ?dnnqn%ALoSaR@%WAXuoXaInqj-7IqiPru~)R%aQxL^YhTGH}r?Q zu=tzQ2WhbW1_wt6LU24*kA1-=#uraetT)H-_EdcdI6vTmm9qKqD36qBBLfzD?aa(8RQFcUE7jM4_#e5 ziT1(twwn*$I+>H>&n7JIvo0H3Jg7yl6n-bW^qerfeIPT!Qm1BYHPVm0=t3J9&xF!0 z6}nklj<$Bf;R6zn=5+tG5kO*c1KZ%?vBhNM#dh%f-qcbJ79Y8L^p6UrjRFtxWt<7P zie=~2QsX|(jgO3tGLy%dw!E%|)pxv)$?%&Yl8QB$UTLiDI}t)q`JrW^IX;k^5d_Hf z7(=LHml^X|i{*Wtir-`6tmQxGfiiyv&abtB0^}7#jz4-DvMdX@lhSljGs9vFE5J|3 zXs3eI>tD$yy-h21ENv{l*_wv>W7hm-a7iV7XOcl`nQBB?)sZrPg)xsq+ zjB_WdA>ntV`|r#oi_1X*WM7p2(<@b_mYn6FS>7E%@lkv2tf0~q6LkPuJ82iIZFm9B z0#ra?z~!WseyDZWE=p%5%K}_PmtJ7*nxO~>f?;>=0+#OO!F=cT4Dw0eBCy3%#QR*P z@&@J)y_TAHFESbhuKF!$8Q4v3DG&ZJ=Px~aC|SC^j+4Ji=nMY5+)y{-6Dykk)=0sq zRE%iUJ=KWw-FSO7G0yhl^<3k}0$k~kZ=q|nO#paX3Fs1ib9-%rjLG9##z&A=6e_LY0&$E0nwqORp-*gOndA4Q(8;0#SRA1ANx$?OGNLeA9CDHe+soIdG7fU3>jizJ@!zPia(Q+4CXdQj zvffN`2Jg;?(2Xb%X@6%ITEjv-ENNZhRT3TOJDtxeYq zpzk2l`a|2550tg0iSn5sma7Ll(LKoPN!kD`zWt%uFa&0~DV3LSlD&F-v)0wTh8(^q zNNtZv8fPE}R@DR!Vu%ZsEoT8+9f|3wd*etTFUDeAuz21-x55IFuO7YM&Uhd21 zO$%?rMEU_&cGLZV3c0ni-e8>z6C39INLeMC!bYEc4E9J#rV;(Qco|bMtP_#sE@K-) z&JXUZ-61V$2A*^MG5hvPeoMJVB?Y>k)he3lfwOb4%?|-`@;7zOeTrBI`B5$|+&kN=E%$M1snr&Hp0V{@Rw($HtputmM$-O2qrEOtfdCHts$c-093cb8o% zvU!;`QXDf;0a(e*Cj1KKiWN&#;<3sDR6s8@gf39KConc)yYJv!`fy0*BxkDpzYV#+ zO#SYEyz#{-UaZKLrg~^ZL#HP5&eV1I4&MMlA5%%%S)FVsExe&e&bScOpZlwN{q#KS z(HNhNsFt{uE}Zt-0~mzbpHe|FUKqZm`tNs;0u}F@Em6Z6(mCtu?}X!F~{izt9OjCWk7y+7k->Y$Xdu zg+WpCeG0kjoPL{Zo4!G5hMKU_o3)$HeyBAj*~50E6=r!Pc;&0DIT@a$nw2(? z#^3(7f!h{~06elb9Sd7o-5Ze|Nsd-#)#jA7o!=}yXGV0c8Mqi(=J|Br)S>bc5jJHO zab&(S_@Sa$p$W0ET}Uok8;tq70jzXF{#iAceHZaoQYK9cxUQ)^gEV9o0niJ&Ls4$; z7)clc*(vs{I47`iINBKu=RVl|EzO@rP;nfvPN z1-U%tie7-%b2F8AX9DNMeL_M zg{&(TQ7)q&xRytd#$=xVG)`gr`{D?)IwSxn*JHIaS{b`ZJg>pY^ow?iWhPpN?b1VJXx*ib^)Tb4KJvi9{^Zm& z9>NUzT*mId{rQ&wGINz{qT6wETYFg5Uq|?9fBEx`&6wPFkidd_L1>dED6nmoS+0;n zcpU@;k`v3Rt*Q6{#IK9&?9`R_&Af#G%fW}v39k4*oI815-Ji)b-9lsRpi-OHo1G<6 zETZF_Mde)#v4&U_#`)j0|NHF3D3Z##;$tm~pwnLN(svbVvdn|6*VxUEnKXHN=ZAM0 zNp%Yk)o8W5cA*Z6fwW-K5p!K}y zVKGh{rz^kwO?oXZ+7m0}-)h@sG*29fyUx6HqnJ1`DAHm}pBIxJ#lcQ}mND@dt#36f ztV5GU6^6`ogC7NM(fhwvy4VLv1w%aDm9`L)=}(0rh4AL2;|G>#eVR%|xPkyOYc+A~ zSx)JuGThlHp}5-m2>a#8By(W<^IdDfb*CLax=iM^NPgzIvy6-8?D#)BZ6W~%M-ICN zHtBdcxPo$;9`#hkCqyz{?q`#8Jk*S@(A+SzmIwg z+g(!hbH?;V{K8nQX$!KD1uy9E3{$DG?bbpF>#@{RA~T6ysc_54xi{F|8oeslJ`Cqg z8Oqw~kLx@AjAfQw`Ddkw4B?w>#zyhlpDVxESnMOJ8vI(`o1_RS(ArbNlcR8eV6N>Q(Elc= zlVe)S&{HrVA29m;?d`*^_5P>}?%wxd2>kc39%BuG)~{2~i(UA*M>0|42&WO3o}GcJ zqBV3iY6O>Vo|Bqj)evTzqD@#gXt>~;5+3}SSLfqFj-DkG$!AaxJ5y-JMKS&@P&B=n=$i=B%@S7i+2jH9Y852ZEJNtmiuc1gMfiPp)n9y;US5cV)CvJ+)T!@1x%wf|M}ll!{#)*df}rT6g^ADHmipwO*! ziiN&n-6l~sz+}gNjMH;KG^)AWR9ct(%>;5HxrpVx0O3-Cz{p|f=i6W9W$u4sB! zGh{U>YUwtg;nOn#9OfTjkon|(gm(rZ<0Xt;-yG&=@L9-DLciiC zbi!**rD6B}+}~)AfV{=VXmbTkPs?+s@8$&pO)DvDnX1@8qv0*UlOWCF09ESES}Ij( zSkgB)-D&dox`6oKis&h_d`Y>Z6I0d-2mCOYNAR$xLt4Sh&hrM4g69^H?zEqdrLKJ6 zs&BH%&o)an*QxcjjHwBcA_I2E#APe)kGIO7lWKG?lfJKAs{r?Ogu^yHEEExuN=6Mw z7W5iy7n#?yU8<_ji?cce?{%afhjx8pM%7uX zRR78V*1h_kA!@t3QnN~y8UuIr?X6liLW5d3%I`3?r0Nx$x!xEa@E!Y>Twpl?P{y}U zD)8zA23fG|*6yUHJ~PY=7N_sd`2a|e`&u1bT(*f)@Hb2pSm&w_buQ_V9T10^9n!Oh z{`mu8ZP;iNGr!OdUea`Lz=cC_oD&wBI7q&~U#=t>12Y-%tE1%-VuwOtCU$3-Lam2p z3eaY7)S!(cQ?E3$nvqRZdb#4ec_6e;>*>_i_ale0Q0-m8rYHTih(fXiV52o!7n4(#`VUzICsx^kgMF9Meq4_uf0t^BG*LU4HL zrNszr(hS4kI$r)t@=wq8<3dtGkNI*Ja;suM>3F0|E3{0;%_oFl%$U9#8{g+RqD$Zq zMQrqqF7L2aUc#ibd>fF}kqh4bJggcCR*{pGbVZw?Q`ZSyVaHs-e$P^DD=UD2Ea(%d z{gM>yGA1mQWb|}D8tH5q#_%t~US8oRaK34Y30C0-yvAfij>qiI4ggvlps1al_$EC8 zU5LIdSlW(EcEg2lKfRuCavId=%)*qG z7=H1VT0JU#?StL?W)b)pX1pG@wrk;BXAcgpd}Zirv;hI{g4G0UeY+ z2_;Xq+cJya?H03zUCATu_F#cdOlyKp z)J&oVPb8Qv4I~n)4@Xonsnl*iQhN-u&Fh^o6ZoABnBW&^1xzC0eMe65D<7EWt~k&| z4C}zU3Llgn7C>iBrW;>*;KR#ORbnnXgXL&Ic2WkIaJXRO-lyT%Imo6wQ|Wgy|g&k)ogKV z)NK+H+v%IS1R}22NGK=VaxjKz6o|)M!EYJIVJDEW&bV3 zVi$T6W+~}7MnYVuD@Z842@UPn#){C;zxB)%;W<=G$eP9mCtG4c&$Fgb^Xw#Mwa1}< zVcF_OW$zipEQIftv0}lwj*o8eOJn{ceezpRQi`7vCJNU^@2+fvA|9(Cm>vtbud@%_ z2iQTljSZ7mln_A~rAPHBw?YccRrGd>cSWaps*sL|lFoKPiGyM%=A_ zrgd*g55(dgh{4RxT}_BpW#r(`N+J4Nm(= zYZ+gseDAd?ooP}dsqYIYuV8S8#aJ_S*o>}?Lq6oW#Xhb~<}G|;qi2JwUXpt&h@j-wx04OHCK)02_S(}mYYX&bajvL>vc^MfsjGh3VA%;8&Y z?BZ2s{*yIim#$7(W2F$>3 z6N303JoLX`jFQfr-NtN8SQvf!QoA0}Ipx&R2@kv+4Thpp{r@`E6wX04|D$Fo719Er zZ!Er513GGtyDnDni*q|S7{Bx_crBjoqpM~Vc1-sk|_K0 zU1Elr3=j2L;uKKKqDtOw8AtY7}+sgNmd)XQzWKz?9Ge)^L8wt@RVe6ahIf`69=)&sy`*&QoglkkS7G7YaQ|44 z8+@ZoVdfoTKChtJQzNd#4}osMVNH{wQm=fN z&oH)l>wQg5a%xj=XS1iv&HwlEC9xN!a+Q zL~?!7N9ASgVDQswBRP@jS7u4NV33Se&~o&(kfG**a^Kk8t{R;(GamE`8()&2u_VKy z6dobvcGwb89;h7}OOPjv62xk~=EkwNUaTQ=sRAZigM+;Wgs0vhl9Q-qA%v0g5Z^5& zWT;bc>ky$)F*sq6R|h<%4_!kmC=wgJZ3aA}+6vwFG)o}*=gW_dnCcFjxB|S{6>U5M z{ZrPMIuD<*^k(fgOf^rSm7bUl_R4J`0@lvk&K_`)e;=p;_hYom-Z{1q{CvFDF)mh| zVeJ|1I@+*WXtMoZuzlumrnulKR`+7BTeEVcfM?mF$KN1rbxw|fu8}=}Mp{|7?RNnO zE#Pu{=TLdLhh|(4ouFaX24Bys?dc;{?YQEA$iI#+$kB}5ND%0KLJo#{>(rRFud=O> zQ?hsYRXu@9J2j5MWIn|!G{4r)n zz1}?|3%Rwiy;YnNmlCl!f@@=@Dft}V%fsbu zNb%2+`lUQUPVcf(kx?*Wn^Qyt7(SS=UHOpK2&{#5GP_!FkeTVYi_j%rQbXe#^(5PGw zAMjUK2;P3DLJY<+4#^2niN5Go+4z1GSuR2UgXpqw)l+?!W4!${^%qA1{#lc2u%IPe z(!u^mGXU+cTg>4%JuNMLIQjSlTf@(WZ@w~L2D+IIFVw%8%S=H_9gw51!MxnYG7Zbe z4X) z{65JJngb`fs83|-9HOn=|JVM4vb+!e=kbSoZ%vxCs8T6wx38^Te~&yqSjjR>L>_H+ zS%YgPh#0@+R~9xv9p+j!J-gKDw@thUjGUa#MuNap2goJks$6)3jcU0;xp0As&S0_R zNDRLhV|SerXSRaeTLv~3(w`0Jtc0Ad$)COKMUV;BL*H{^fqbNnd@T3RRHK;!OePUF z+T;V+S$gJNIraXpq}kutVV5ynJkm*{JGTn-a`k}kaHqJ(@m$dCeu0=Dv!j2PgQ4u! zUcac*D5WVF!D_RGD!q*1MY%iOV|m}|TUHz`O3N6Zk~oR1lwzxB13tJkH!w!KvBjgB#&DgL)j+2CCp_kLJLc;q6Jl`HJ}V4+^3RPOLo3Ab?-+Ibvt+njWH!YNBv?jsB{unqASG*8JZ z3$p0_rbkNd{D0W{%D5==_FpMckWeXUMMWB=h6a^TQktPty1NlUq>=9K?rw+fp&N#w zyPI>fySmT+oM-pA=f!!oZ|1{ihMD`mua56^{rIm_w|0SuBHiF`ap9#Id}o+z$(G{! z5hCemrutbUXGd#QUFWek?HHaILF=9~F-4Y2Z=|!sY?~|s08_=oIpD*xUgBf1u4T*` zBNx3(<+&jUfF2X#%htXsF0XiaEs9vS9Rj%KL?(0`{&LMa%57kfA?t|>+NAz@03TW& z_kK5%f3p$QRQQ=q#e@<^!<`9S)97@$X*FPD2Jhvn#I@z_lRTB<_9f@pgo(#rh#$;0 zT%H$Mi8%XhLutHppdZr1M=V*510ggK0@oU-LdFdUMfR}j%-QNR>w*d$>3byHJmp3c z*fFfRIS%3pk0~f}c8CBt$p(!t?8=B^7)jOXxmTQ%ZpyAl3IFlMLOy6|B}MBnnq_y) z)P<+TzfUv`_-gP&UVfBvy@50Sfi^ev#V0}M)oHkNtm z=}J7hKnu+Ng~>_c)yo$#axAhzzg6=S?cI;=l^(7_OWURQZEaFhkj1$Vhn~Ba&rdf@~f^f5qmDZmLLr3T@_rqH zb^UyX(MULUyyp3qLjCh4-EGMkA3kN3qu#7(4p_OcbdSM#e4~9r?aQSG$;;(UCLnfF zwma%LpLyf>Ki$_DG<74$grF4LU=lBV-=FL)f| zjZH3DJQL+CnfZb_VC2H!8Ozc+=>fB}Dx?imoPcm;NN`Z($8wYnIc}EfpPr|y&q4dR zmDVbXOwm*K23*g#MqAb5tq1Eb6XOH^Dp&arW~(PW5OyzTmNft$rQQJJg2Q|JZ$@LB z6$I>PfhNsxr3C4#+;_tH<+ihUyrb5NiN+$=VFOG6#NYHWxjgb@xeW5uAWjZEPh(=Z z^>O8bT{ccdPWUHtsuTIV*UApF%wjx^S$6TJ=0#3s_-id#37SPh z`)i8?#Y(PtrH02q9S8TcFe1Ue*2ykqlUcyv^dJ+J)LAoE9bJ1q3Yj{LSrActR>i~V1>ilT4#;@2#~;dbvD9>gW)yIpn(1G3 zP!f}sUADrdE3s>7pHhz+8n)c9xVfq4c=Vc{*R>F93!Cao`($0Hpg*?v0ks)Xp2%4B_NJP-9ZI@phv`Q|%&>oiFNq^I8{}0XmOMAU?fT+Sj9>Ft>^Nn-P4QT;A;oK>PcZ2j2 z(_1l+dt_>U!!Un&6q6EfWe2`2)M9Ko~b$yAAPV2n~qiS@jz% z$M{EAI{Dm{Q?uEm6CGP^vAVEgy)!4}YJBZpWWSj`R%$Mt+BoTz3sxQ&v^jMdAS=o( zwcqc7icGTp8uQ5eWs#8=k9I#QoCQ?edhEZ`r1&-@_$Ug%?A)I)tL z(?IR>EVSwGMp2AKNrO`dBnVYB8RB$g1~I>+J;07aFdrZNxm{l*Gu3s_D7`%uUQZnE zq~oFC;g@=L12A_v3zBr=_r>VI4aV4Mo2l78P* z$zHPj{a_Vi7{n#)>7yN856JB8W+qJ+SA0^$Y)5mI$kgI& zjHh0uJk}nydOPV@ZEXmCL$9J^gJ%~L>UnyzPGU8gYRYzC5j{CSpI)3}HMR0^WO6U< z&On+w6>)}x^4DJ-p;mbdjGwom#=X|2S_z++5J0y%V9f=ibq*hq5#)^K>NC4Y*cvz< z`N{gm`}P>h>vVMrM%1Ly63Y_{JL^Y};(Vi-SfANB;}Qj0C201Lm%qAh#R|pUgb0X` zW=8Ngf%r&CV%)Stf^~0CW)-Sm1Fm#2a;dY>z=B7`9sNsS5X}~Jw)1>p2JkIBM5k|nIX-Asl)GIBi z6fK)yRBFCNd%#958Ao$V@q`&nh|ibdg#H~u=zsjI`s{s1hykY)UPy6}vH?5{ZnInr zmtBmHWGk@xYUPYj`{2v38nDv$z+O^WQ97(MAS~TS*u>S00hzx}AsR8wF)cOyLCe2S z1pt$4Lq|?tVVEKpSPAS}%4w4$8q1JKkUBmxp4{8~nBYjSJI$6e^y`}vz?A(d)-8Sp z@8s2S{l`au zQvI=^>a4lW@z`XYN=4HtTJ^BG1E1MpG`U!LO%$4z&iWX=@$%}p!B;GX6|&?XvsXWE zx%8c4{M*FFIL5kFewM7|1J_>)EXeuD@qe=z&yW|vVrA>@!-y6&JUM4~<}26e9e!zK z6B`($MzlC@Tvih;aZsD?zR(9p)0bt^M%>23T^%Ua`mr8#T z)c(E3UAZ1@A*uST88x01vB?zLB0%VmW*~UXgpe6c5mAW?(IJ8m0x{;V>5r5|iv;|O z*f#2p161yR*hoxPNOsx37dyW(HC^YpJ&nErXTPAYVd6BtF5%>~T;c{+J0qarNdE6H z?q~=|i_{?E|Ko%I_Rl}wTcJX{-F_I#y?XwSzLts2$d~`A<;So5(s$kCpQyVjON@uq zWBr%A|I45H_p$z@?!VmnPs#aL2!B%JU)}msNhJCHH5q?W<6o2UQ%L|9^RLPHNsWI^ z#-B>^ugUl+7J!lfCIfmL%J!{3ut=-TE0E{x1<7#IGE+C>n-!pXO~7IxW4B#*>|>9w zYB$daAl&dT($nkmtgMY?_O4pfXyh35i-ulBiO z)}_YI7yxx)S@y8VznofmxK_?{eX*};F*92VWgXGA0ai}WdtmXrSb}%d?)MUzWy=m) za*RNImaSrATrPIoAWDlV6oCgLWPS zgKY}i1h~BTc5S`$xt9kf$BQW|sMvh{`4&xh$*jw{XP6u~i{R+%?_@)J(Qo8Fd%0yh zkL7yu=8Z4>_G+U$QcJj!$s?D&kOUkyX`<*Vq=zcD)7BcZ&c}31CqU7LOdK@-S@Q(H z;Y0wmSqk-;rzxm?WmI=K0x_eI$gew^C~U#x#0lA|JD!>EX6mE$a!&q(OK4UCZbT~$ zr#+^GVB{tqWOusK{@17Wa<;7RPmUX|RR%x{V_Jb2CA}Pm^>NI%#44hQE>X#x%-(E2 zj$0X$mcU@P^Y*l?s9KKa#2j%>Roz(dWyp{8+AkfJQ_9m+<}d>md?F)0psK~6kr5aPVSc?end}d!$?- z+PZ^5cm%QBkJPJLV6Lc*6g?xs#Q{>RFKGp=JQ^`Jl6(1v4Ws|oR;aW%Rk(OvThbR& zFz~bP@$~%^NQ(|<;xRJYfg3DsWUfv{9N?E3Y;C^yPCrN&BH%W=resp}?3%*cKjsxW zZDFJKIG%j=56T|kAb=f19!KyN4{lV#0yOf5FF5I;za5<4Zo? zIe`V@H<@cQ3NyWt7aeOt_#`VBNE&y2pRs&MN(2QFy+gRa6LK~nH{)pHD1issuHE0e zRdqB2+nH}^>7Yy?wwW}pC_I`ltcbe!gie14i}%9p<(1OxnOwYmKEc3e%7*L9ZQtB; z?Fp{6%#`Rt8T_O_Zc;kC5oqT1>q1xDzjPZ<$4!sy2e2LlNG85cEV{y>)-_i*xSy!G z-h#zTdo`H1mLkhKx+(L6%;48<-ImO+g=@(5zhZ2+`lo7M zw-T9dw6avLY~ctyb}4B2vk-2XRHRHE01LC16w|K(A+xp`p)zn-7s|+-o^O2-gwAy` z=OOC>YX`qiX)>7hzWEmnhWZmtq9zHR)6~lAraJ6Ti!myLjeX~y z6~n{rS>F6Xz<~VjrV^i_RNB{%syfOVajHmsqg%_Xm_d_K&S2{>t=TLu{Qf{hMs(KC zUBzbn8TMykm~_xJ5$ci|K8z^T`r5D z?5I?&bC6Z8>E_z+4$-d5f9p;qkSGMyA=XD3cI4^bcBdm)$SmYFT%Ex?eC7r4RhV~1 z2OiLPRbo@z3G^*C@O&@dschLJy9v*RDLls&PhC(oYeLB>_sZtbV*Tc=Lv3#!sTIKf zI)TTz*{GyP&TvoMf4Q#Vc*fBlLeSM}2Uzoso#K=Exh39d>%zEUv~`F59yTP@z1~_Z z>gsV+u3o@Qvm8s8S#yg2R+n&p_l$3jm)~Nzv(g;4r+&qp((zD&YvABk6$DQyH%rCO z4_N=vU@vGZ9(RgSpgRxx$u$Z@VJryh}zPe-mf1Wp1Q$<7YQ$VnhL0eo5?uj}yYnt$%` z^y!=jR`U&ub^u#}?+dgom0GIT^Eo@#rcdrkUcWl>$bFXcNHta2lp=#8jutO`I8M|#Hnt;0(TV}CQv22Sq zdoHo^zf)W8{tMfJ_oBB)O>i_>^a@Lx(P*qzHovd)y7Vck%J*`DBnUxf>R(3sSeQqP zV&%>1_*-Xsl|@RVdQ%j{{rdDugVkfP(6^{Gn(P(iX*oX6ediWz%z<;%>;ZlR^EW#N zF{#+aP1JJGWW=cS3#yoHMn;-bWQphed37&H{7r0)oYgP_W0tQbPv{eb) z^W~#=%S=@PCf-`^QpWbLJc<2XQ2_o$K1GBZnZxnshCE`OkH#V8lE>0?3LB=b=Sl?Z z7TPbTv0QdMYJ*jYcYy;q9-C?td~rR4CfI-!z9c?fiw34qs%o3#bUx^d-%^kM3d&ER z35;!k?2A!ftvb86;`rnB3Ty*@PjfG?e1f{~OxmwKK6KsU4i^ZRko0}$g+)dRD)95n z9 zqWrKd;32YB!wLkV(YX6gHks?mhEO}L&(%btwv<6wc&4fN=DP)&W zXpMIp&^xE=Eg*uz<^F=rXEPvxkHW)?9Gd1y#N{M+!qrB^Op-+gw-i#*p#^l$W(=^( zF!fzw^*&F0RRX;sob{(LU**XUrthY;%iOq&!K(J~F!Q~}bFCUh(+SUq2_p69xeX=! zk&yRJ$&ENK_&iSSoHX_gP@4A$kBKt(B?9Y^%kL9+?|y@r$h3C1bq0w_=8w>jZy#B>JH%$S*S<56--9|I zw=y8#=2CtJO_LrpO4-O;XG30vy-cEvWX_E(lCn&~Jd{NG1h3b({9NL7mwG_n1h8ZV#Zcav2MgR&6Nee&VhpkZ+%d|`TXIg zsViqe?K>>LZlSb$2>MP<4M$}KFSB3B#KrTV#2r>qiyyCboUK#xh}n?clir?6W*+U-F;Xe~p5=)(7ZdMezr7NheL%!tg8O*c`46V{p;O8*F|?s^GBeECyiuuU60a}4A=TBtC648 zU~fOhF!1jB8VHi+joA8F?tAuPZAS0=yNJ4%mDIgLDrD==q!p@m#>vh68pK$~Q^n%c z&&HF){fraui^R=ywX=xa3o>lA{nBT3 z_GsQxAkL`lOnOA()+FG#A^me>#~{_F+p5%8qj*! z+Q{CT))us9`fjTH$mLDdyfcu8eyN-SsW~lzTB;D*-mmGcq2RaLJN*$NySJi%@aJr~ z!^7lN*#nh?iJ)dZO{NZcv%nbXhe!Mx!}*s4LM@c}T^->>eeQ(Z+jATs?(IZ=aFtmd zrPOuk=*8|sMxEc4R2#PR|BN6kzI*hIKYcf z`-MaS492?C&T_x#new?4jA%A<%*%=+fhGveiY~&c`f0*4uFf##gMP^mg6Uy)yVCx? zzAxxC2b-HRl&e}0ynKpEgV?=B#PsKzcf5#9UI@O#!mTcSpX_M}*6WDYO?ao4a~zBG zFwYcv+;b$mPQQ6HX^I8p(N;YW^CU&g01?X8?Op1OR(i z1)P(u`m2w$?Ru%Nb;zFdyz_v8dM%-`v<~`mxB(p(=?XtGk}AZhmUrmm!+M2bx+=?4 zo*PSLXieAJ-UWEX5xp&k&oRsf`AQEC^SPFzGr<?_zT>=M-9<1&%N8$3d?{y zM64f`nsK+BzIPyzFyl3+w@V+jVCE3f(j0`JD7zQCJzDI1qC)%}gJ(Kiiv8Wh)j{)D z9}LV-qHk!PAP%cw}12xA(K&{WVq z=yRswz9J#E?0$(G0}<%%b2%!xIF62CRc?nE;o&~y_)#1}vkJLoO{HJ)q)hG&$_}6r z3ASZ&hS41?@r{ht_P(Cggw=}k%DxU%YmtNb_%JIK=Tt-15fTqeP(n&T8d%3(ess9~ z0tj8A1TgbsiibCeB=D9%_!HV!D`Sfi$!&Nmy z)iqKmU+dP2DvOG({bV&KAN@q(wH}VB7uA|N)lkH@q{nzXG}?L;?OuksQ_#6q0;BQZ zvw_MDaNv~sdnDRZzYU<4Wsl#`{iYRZO;Sr8eNrG%qOSTK&+!yNGUt=>Fb=(Z)GU1e zG$#KfSS=4V<1_RfB_T#f@X5x$&~fqw>Fy;tWA22Q%+mQ1TSHV|um9+Qf~ep?eMcP% zAzk`x4uH^FjC%g=ZR7UchG+T_eZB4~R`jD`Ncb;9+@XH{H0+;lEIcXEI`s+9j^VFou^e-LMx{usEtP z#9~$-#=7$)328dE)v(a&+`hLAeN?SxqgaG=xrzObfB#^rU~GCIc zW>`Ifo6DF%jLcIJ;f)WKcr51HC@_L3Rti*;9HA##{E)}E%AoJBb22WEXB#TbCV@5fgk2M@*DCUpX8*4P=!Hq#`3_{&liy5 z34fywbxEzE+b7^RV4uvtd2>MWP6KpwwUeroCeb!^JNHDlNK^@8UhA$Iq@rP z;oYk&SB?d53LlN$H(99#VY2?a%!Fw?0k5Y?6VOdwf1jfv)UgP0^KpF7{_v5zs1cFp z9Qr4=JCfdyZe>j_q~C?*;I1uZ<|M1;DD%o2pIH(6ztNIJW~19#>3y({2ICkcA~IJl zA;X~MEW@iPceK8{}gBOoMSh)pn*{Pev&hy=as3G35*nt;H- zvevfIuE6g)-wl;jVai|D{S+$WwIeqvU-&my;g2>jbL7Z+2Y-DRs#!?PZ=#=zHeKGj zo?vH!8zIkAkrYh2{JDsqc$eyX=XX#TC?OCn6y;tJjjxqPBzjWmcl0z+0D5};yLAdR zC;h-5y8v3-_^Lq|Vdh1t{A$FtnYU>0!TGJX*i~V3L`aK+=xnMKKH+lG+QAfe{Lw0a z>b7qLhYBY9Vo>(Jg=FfJZ)oYIsR*vCcJce9S^^qQc}DH)`s8F#jYx2smpS`xur;=f zJbg|&6KBj zr2HS=a$U>HX#K!L{ln5rf4-I1xH=KvITab^`hJWNF<@}R+z8r9Q!u3qy_0ER<3>!A z^vSi+4Z)tAumyR2Ae&20m&rs5*JP`0uClUsjESE(z+V=|$oAw!gh+7&Jt*ah?sgkQ zCn(GBIQF*Q_cN-su)$n?ZQ>_)sOe;;n0TX_HIq~e%%I04npW{L8Sw) ztV^_AU*NayvimE}Rw8^q8a@->Wv6NoQs7 zHo(c|wa!wRvi`DqbAdn%i;IK`Ic8s;-lN?xso?_7 zu&-_sKzCvOFpAgrk3I*pyxaO$W(qoy<#-|5*o=Mr0(^FP@_MZle^#H6#Xx1wRL}LT zJ@#wroZN2-u(s7flOb4TK396v0qvL1BEx9M_L^?Q1rfmN$HyP;N7X``S*Tu;#Eq^16RXM*fW!M-zh!#~Eb36T= z(*5-P)V{B|{+=GX(Q+{!bf{5wiSz1jhZveP-j3Up7xvKZ19@bR())qISN^mnR#n7} z9j_z8iy!0qz@=DoZ4o*Hh3!db0~q>wt=LO~N znY0eDC|qo&7-ECpLj7AqrBoeO(|p8|%B;(Z*Rpfuh&KPMNh%>{CcIgI zRZK}u?W7Cr1FO&;x$MWxS~;qJm2cnuFKj{U)ay0z>!;U$JJj4Z! zsSn5{V;Uk~1~}pj@nb84>C^-KULgB~A%znGMFOmqfEc*tel+=tLj#dNZAlcgf7s&m zIDVGYfx(BHU^fOLX8ozYi)}KdijH37Hz(tsCFa&Wx5~oSq{8g?4&9tcKir&9C=6+F z;ZQp^aK^6F6Z8dqtk4Oy(XAX~B43A{EqjE(*D}Zew*Jgvj^j?jL3Gr5%DOLyqgpQ6IdA&A2?B@r70MV zU20FhMnMYc{z5Peefo(p(7;QQFHp75nLFVa=S*L`#ZIl66Sjw?qR*;z%^WgKRV`5UknTO_lpbT) zO-FQpJZw^IrCW8l^sa_Vr+N$XyI!9za2T9Do9}RW6p<*hom>uQ9;>rZTbQZEaLEf) z$M9vbQI+1zp!y|Clyp}2$grokA6WK%`i`L8_morQ!ezhRObBVQ@*`ixf<9}zUiUUS z#`QW$1FUrVw7tlWeyo>cJy-Gy!)G1t#il5tZ&U^JV3yfJVTM1fFW)js=Qs?+#tyVY zXz(I+36@cc>%Qeu*70b8=-{+VtA^9Nv4$heQP}>S1}e6U@wYj4!6Am!`Cqz5nT|AR6SUv=E@X-H*H1%Gh)=&$=3Q+!v$&$ zT;O8{*HaM+UxNwefx-#IDp0)}b}Z_MPAM;6xU>6uh$w|Sjr%-&+) zR5zhjg`R2vwX#vJGCbJZHddx*i=+Fky$-wpzKW0go(gFz?S;`OQy&*}{#KRXr(}-( z_^xG#!!^##%&q*_9vGi6Ky4|XqC3~~!?#|ociIfUqOEDGPTj+}g}AYX^0L*K=3}Za z%$|08|DepF54t5wDR2Zb$qZ$hzi%}$Fc{p&&rMXla8r7wk&`%LLDV0kw2HgfPq?l% zD9`eV;$WA=^!DWs9mb28@mo0Ds~ui4k42P@xz(hmPjcHIt!oz7G`|+EB53w zYVSweOj)_HcVgc3ar_KuYHuBDdN&Do0b2~4Zz^N~*=Mnh)j+j5+b(ZP#o+WTF|sfw z-i+Z(br8WxpFQ$28QhU8H-7&s0dbpIojQl=wrCPR>9Vr+E_^C|#GZIGA+~_TVI@h{ z@xexSbzH_W8UZ<*=av#;PbQZy9XDQH;IqP|Xo!sMIllZ}JOr>W@19BaHh#PP zCJf1^KHO`TSo+}+ac-158TNXgfFN+*w?(s~; z^pvT8dN!_RyS~P*YpV2gq@q3ywe)+iQvvjB093CS2v2NtX#2dkoW*5YQr-c7(cg&( zI2(oCn3nUz^E^|a+{7~b0KrKAoog3#w=6!yj+|TYrax~~1i{0d{w&KGFbq~L+a<<7 z#qf#RS}@OYs`YEzH|X+)-N6JZle{J-A+nz5{DHhzb`bWv%cxV8WIzHCJN%>Dy7Ku} z(StZ{{KS}HWF@v7T}O<#nRe-oa#Pa*hOgrTl9GE}Y)xxGmAYDCTTvewZbXlJG;`=U~d<&Z4; zpgfbfaqrqM7N-MKo6Kv4k13?3k`}^{mV9XP6^az!l4PKMa1rgybEeTX`@I+IPQ~XI zE=(C~_8Jo2FRKs!3f|)I+xO~Woy?8=f~FuPX)8~aP}BeIV*>58HTaIq_2leTc)(uO z5BLb9B8pyz3MQ?Hhis?y?O_wJwCT6| zCvzeW9~wrqW6PWZ2jC9SVNU>wRJl;$#(^6^p+a>L53PJTqr5!j9@9(At2xh>I#Y*N zJeD?D1e9==fF>sHZUvB}!lMq_vmc4nnZ&}Fe|isRcZ=g}<^8aN^MwZ>Q(;%vD!KV+ z#`xJ#q{TZ{ALC13;@=G%+)~nSAMU=zo*y-MtBP~0lH#V=u}g;&=qDk`jYN6953J8g>=0v zcInXKHj&9h2EMXr3%`>EKDgK-xC84pUG^QEM91+`nJ%M{`Yp@fGrs3xjR5vY@;V=-^ z%3vZsqWMazd4D3m{T$(bg8fpI`CdBjx4XXYHC|1Ae@!yL1^|w@8hy_2d+`~nSCUUG zD!7a3)XpbHoAoo|Mz%OQ{n>7?Tec!XBp8n@SE84I9-N^q`}9kGFr~aI&vMU3-wk}C z`&Ae1X*qyx^Au>2OQ$?B0w6Zjx@oEmTV%bnKneO_=di$)8!KMx3E~T&m);=HJmz;^ zpdgGNKNqEor{K6*R#RB|wM6cG3%iux?fEtnop#-TNy3Y`r_@ZM;|aF+p=~$?@SjgF)V-nvWBURJn~~ zdxe0g2jP=9)RE9B5HMgTHz2IfSC{9@?iNG5X4{|1clS&?ABfO?i16E{P|0YO+R}`1 zB-c;e>`!_#IW#`R8Bk~(YiQ=dM)#D|8^OY_VFB3It?IZLcD;m6dz^56k+E=Sr5az- zd*IS%G-KI|9%B@^kgE-rv==fdbhJk)+)tH^w#LF>ZH%rVd z$~6BX&}<@os-ov{=c&}h*w@C!VR^MW1r%ryh?-76rPZpo4_6pS@kLnD3zucGcXa}% zEvLLwUPbJ?2h2>p zi1Tc@9FS`=14lG~s_jCSM`+^5z4u9533;k7IzO?m2u0 zAz3pHxk^?%KxgZ?`z<9u$>|NZIJCRXxP1J1(0yLHcxh8Bpi+t3gs|#=q?=zcQJiTC z){WBHJ4-YuXfux`O1Bm>;*9#771(U_o`)ed0MqmnK_UI9eek=$xhjP_BjlF%anErO z+XFxg-nGkK0M1ix3TNK>6YJWvuts!1=nYQuPCB`gq9gxffBG7VSrPyUg2eb7Zu>uJvmk;I8;!~7^R`SwV5hl3R#_)AHi05jV6+b#WO!5oiFp0>qI z5MM+6lBbNWf!&|c*E~R**H|vnf6nVH&UQwz_N|xnni5F9$#3qO*)8Di=``RIevgos zQS|1*RPik~KWu%-sI_t_>8K?^N4R7LrOddWVCK_6k>3uz#13jTgqw&}_0l9vGF!~t zA63~5CTDtZ7qXAmo3&CFboMY`ZOqHU2<12}I*LDFGr6fBK#QswEsTFmh(m=3myzrT zQwYfowMl01<@yS^A0ek3n&97m$LPtZX`{`&fm5 zA95V@_|2Z5^{S>G&Lh)whN{JH)72QO4tMXQ#8f(XzBeo`3?pKb;(dsOCI{dZSgkb< z!`Z1+ed&g)*c2!>6{HGWn8oF{ zgZT&$9n8LZ_96NQp8|P_lj_OT_qi(23=s20zGyV1anBfbu{^;LZ;&>pH#w5y?6nBt zphF(Ai1mIX0xHi~pFa_M9-(Af$AT3=(U?!HC&$xTP`TiRwr zsQcWzVL3K17eE5wcD+L#yZx#r)pH}>>VB`7-PWii)gzy3TO;!)`U6ZSStULt(8r z3m9GgxW2YbKpr`H(5(jDhyo`#jWMyFTPr(39gevv6`d85h!(9c;^y6(Ki~ z0p^(PG@;r$qR`RRG@MUwm#>09AHNegbVnssxSu#YbH3fVj!f1+QCIgm@NR5Nc%Rta zw@=#h!LWd%@NvIUsI!79Y2IGP6QH;m?{c=fKXT}VIXIUA;%!3J_D}KcG4R}XFmbzB z5#lv~eK0-~Yzv+bh(X1f!AG!|R#ZT>j&v@;I|uq5##izByJ|V2o!giQ6a*y&gRjlj z1&NGtD)FdComDM5o~@?ZvsUae<340&2<`HN$~(dV2gbztai)$I_;`!KPSS#)WWuoy}p4- z-x-8eM7zy9Om@8d8Z!l;ob)VfHHnX1$HE;vW1z@m>Bm}~(EUl@HlTl~=F*|@qmb`* zYh0siTrr0wmxkfnx{pP2Jad15mz*-0NpZ(>**+3b!W>7)Sb%}Q0U`VL3sY(P$o&Tk zRG8ve#(qJ;Uwhr{-osgS;@o^r^y;_dP%H#VL5r9e2Um+>?lm*-adVWs#^UyaqnB(5!yhb z)pa8U>T7Cb=p8-8S-s%5G*3VEb>ez$(lykmWV$Wu&B5z+oA zXB=oFfXSd`5A%|$uweyGDVa61ymVO|x=q`RxZnLtv)8taElz(_KKSHOGz|^bMD^Mw zd)Fq1;T3GW%l1R~!Et^uC(NH$0^YA3m8YZ>NDB!>SQs&do$HsE1<)HxiAj(UEklPg z?)Qg|1P)K$F8)>&nCY8r62`&31~-^C%dE(aKbQalzrxv-U=JaaPZV9(7VmL#pn z8ll+VpY%ad)B^SH#0(G2=7GCxYyU{@LZxxGArn7dP6UKp{XX7z2>p#li?Wd3+ai-cho)!{gq z_~fJCOxyi`qU3)di+*(M{&Vi;<~?<4{1suhSe0CHI2qn-{g0IMM=#_Ddw!HAe`X5+ zjiiB?a6QX$|C{vOJg43>psE7aH?7M1mB;zXBn)%{@=?aHhyREerQd+GJFm22 zO70KK`72E0bN2!y)iAR2?mr?1_#Mz(lABO6$@vFLk;vBqP@Y8;{`nsfBkw7|WSUL7 z3fW)c(+?1k20(ejbc@&jh!}DY049eWg-`w*Yx&8Ozq#lBLV)rZ((Fn9h!`|?0Vcn9 z>@t@9ZyNDe@98N3l>dKFuk`KiR!m@54^s(y;6J%dV6yGO%4~yc%YF?1|AY9u>$mz7 z9qZ5-7ydJnCh}1r>INCU?a==fHTx;)U~zyt;gdQhh5zIkfolPBnY_sSH$47nbAAd0 z9VH-_U7N4iegg7--p1eDbK?CQx%^;3_>bf={2?HhaGNNi-`n=TYU#WIx%7X*?*EU7 z(RCx27B$@%zw9S}vvh9($_s|Z3jQM{h2NO{DwU<%Kj#d8g$2wv`#LDzi>Le|9e(3o zzr~H&pQ5+)_(ztG@IFBK`_D3d4wC*2Z-45n9{Y{iH;Jff`jyA|DN+7+0LpuRgZ_Nu zSH4{u3ox0kqH9Y1A4!zp4dwq;uivEA{a^L^PYdy{di{sq{i|O8Y4HB_UjO0a6aW8u zFKERS9-F?$wzI+8li6jp&pLQ94Bgyqxg_8Or}22oBAFRdM?{YlZk*fp{*U?l4is0TCyXuTEUan z5yP_a05+jO3<-ZbrrOJyFQ3M9QPSsqrM9X7~H1fwk_Jj{m zvgNZ$oR$G|&ab$R7BU&vrm>nMi(t)&mOZ3rI+MjKPL?(+b*{mi-t$qj(iAgjmfalE z3VO{v2|DSII&+NH%;b4e#HNEd&<(?Pg%X_bNS&|BcI3)|F5f|k5!qqyF>bk(xMeq%kh^47ksgm13(~&XpT}p&M187M)ao+joe? zgWsy-&TmLpqYyJ!8AIy86KgfDq9{4ZxoWVtIyOUwq1Z6(R>W4UUZxi7Vr(}T6>QI_ zUY&S)et=ek0e-eo2g$}j_2uT=+uV7rD>SYSaamnxE{vGH)0W_BXtz=&KRL$u7{Oj> zvqndue)|G*Gzxm;F=oe2;u`nC@L+sZbV?Nqc{_^}qWP9U-n>Yov( zinx>Z?fEgE^F~$EdkjfP`1vMz^Q#$@?IvOKCD+cXFV7z+&aKuf<&oA`Z&~2Naxj=- zOkm@x0O_B>)qiN)-cBl%IN+kDNYST_kMA_`zZm=O zaJK)pZM0~sXiKS@zbb0C)ZQJmHEXZfqxOuw6>Y65v4Ut7wTT@gRLvk&6HxS}+IhAygCb3q&nb`<&;l zG=uXeKX!MkQ~(*YQ)!e{mRF8p&QtG1YOx~^-+=foQCed`be_Q?j7_}DsML6OJ*|id zCEWz>vm@y4)+~;7c}O=%Jj*HK^4BT}o27lk$wRhr2HBnOyZV_`Rpx9tj%Tnx)wZ@5 zB0R~%krUS_6Nnc(@TFX0!JtH1BYle<7qmbr&r!JTB#rfZi16VE^n2ror$!+<@WTJ) zor}H=>2AXl2?>MkQTWMN?HV+3ZF;lZL)V#HJu5jBa^btjDTVe6R&W}H-ri}OxVt(= zPcMVWUPN}Joah#;rXqoj-<8`R(G`S>5r@5U!*vwWk3Oz`n)a@-M=}O7hRTuEa^TGu z!Q(yRZ=3tV?nrY?!Pf}QY>=^i80Y^sd)QEpE)$EL3)h9;8inn2GrZ^eMBRV$Onp-d zp=Dc|YeE`5KcDZ=ao4(@BWn3RoO$4$X|$6fvWUwRDNK&~UR2-p zoste|AjQrZ9p?~MbmOr3oJRPq5fmueIM5zU$PaYhSzkEz?&N5Czp1PACL!$fn0p=? zv5w4InLfYMjQ34kRWp#izC z_6w!>d0wR8uotnD+q+KnsSIc1y|#vUK=F;m)+2Mo8u4geBz7KP_H%B+EU^FbG9be- zi`OO~b%ZR`6*z^f&x%al{2xf`KW07i{6Cj3tt^l>mLHxSjV+Pg@JOutPKa;N&Ebi6 zLIC5w#g~ z^4`bww~08BOl_xDZYMxl-xIy*0&vyc0MbZnuv5zzZ%O=q{ zP{yRBKl{?YR4V_Zf%{ZiQrdIhqwUb+ z`bewvR3hSe;7WH$eOAmB@E)6}@z%dPYyKy~{C~LgzlDJJen!A^(;XyXUVO2PM3aSN z-fp92CA=LulDf>89j%&W71W&tWhD#6EdL4OB22p;)xOC*`5@u6-5;Ela-s?%4SWs2 z@GeV^j&-<*R3>hFWlUsQ-9NKQc;D^glbZvrew0c?Nk8vGO_-T{abYaK45jY~4EuN| zS|b5h_wwc&maOjO7_*NzaS2aYE7#|bUtF}KA|Dl|QWP1{Bq1-bbY&-V?k7Ik*c; zP=8uV){5a2^e-hMKND`(pY3#Y-|qI=i}OI4Nn`E?hdt!$E|$?5$h>3ig>rr@hWzj1 z!~Yz3|Gp*Ozn2s?bo~A8uz`s4GKe?{n2UP8E@%}ghq(teZY6D|MOWIIeX3W~G|t;u zOR#>Y+q2l1IcP1eeqVQ>;koqVYxC;AR-HvILwcj+GS#wb8?Tv-4>YK^3M0O8##chNo*c^M^|15CV&sGn}H`w0|M3t^Uk9PJo|%Uz!G zXy5;_^QNYQl+*I=>=E$z6@CE&YRm*w2FcB5vTAf#xFh;rPB!=c7)+-$Yp$yMJ&X3q z-3bdj8QFt0vz0=`a8DY9G56@u@3ZDWr1^_u&D)8t@sHYaDKxIB<@wuMRP63q`sF-N z%z{+hdiO%le$I-^9{EC( z{{M5XHd{AZ_WIaMQ)J}hIuTsx-mO-Z*^VngABc<1>+^YmRcr|urIZsJOP-B)Nw)PP ziuN5Zd*0oD;JL8S;i|)4Unkmpd`5;4ZxWuAke7x>N=54E{Ztp8VC>_4^B^Gj)h@&Q zNBv(>oxQVz_xp&sDv0|UA2|V4$_o2cbu>Ik&d*F5Py2Uvk z|B?RSwY;hz`bkr+pa6%knH{1PFQSrw!*CCk!sW=qIipp5c2>2H;PH{$dIwT+y|OpV zzE5W^vl&f%fJV2s1ZApKTelv#CI*pB$WoG z-QgcdRQx4OWa)-{md8J)2MeX@D}al>ofz;Do2c|Jf&W$Hd1!Ry21h@dJQAYh13`hW zb8zqVeS<%lQZ8U}-*uK1_A;z^-1-z#QyMD;8K<_tt^*EDF-xpgMM!>B!jxRi`7^M{ zLf7rWokD!fy{$m9{D+=Dar|qlKhs@0O3%7>!qN|lFVh%@)WmUJ84nh1>Cf%CKr`6k z7pD3zy?d9x+ru@lAEHj%jbtwT7Dw@LJc7OW& zhqS@;XeKI3HmR-r_mm;m#{pP*Gihj!bKYlH)+#L~%_@)S5Ue9rWO7EfQL2lHm0ehK zee$qLK}iMVb*7BnldQ&Y)@)&GMM&|wRk(s822KcBmjF%M1u(Ui>8J+I1s+5sRT;`lzsE`uiza#p98|+q}r3Y<*u2TALL%8#Uf_c8xSvuvo#P4D~CI_M4t8SHmn@-o$ zgE#(2J4tU#X*!~QkRjL^IZtBGlBwC+9T0hQ0HZAswX*m;)R`Lr6Jh%ERx3$MRvRy# z`2jbV=WBO3WLCFLF0IJdiIWr9 zUhlO=#x+WF@s1161tp=xO^~CzLRhLc#)&6!z5AsM@sm$&3pW!UUQd3X3$Qgy-zy1y5ZVzhC2}7_jo@){t4@a6E$`V z#FG?GK7>W4^F5qjqo={s!DpNkKXi2mu%cG3Dxa>@wfr$0Pl32xD&0wb&x)24~}$e1HCk zj6{~AozOa)+y#N(5Vx45mvxKz%L$Gv~&$T0UPp4`J2LoNUE4yt`p66tAb)x2@5 z`F=f5muj-+ZY!T`N1jv)A6oEis{|$6J#yK7&5HxG<%l`uvn%0?;>nfYPKx`7m>yp7 zB-}3$;4ra6#_i2Tsd_t`RcNT4Ns~M6K{|c%b^FUR+SRw}`+JX=f?Ba5h&T|`)0(xw zIi-u(xfH$ry|-B>TZ0sYuiICF|JCVsbXqwZv5 z+Bsj4BZvAP>e#%v-dGX0K@d8>-iMp`dX{AD-hSyndxwAj^skiDuN~YrOwp>dogTMV zz^CMKZGiq6{XXT3L$A*O>yBwIp@88Ro;&+ripv3L9UAzyIX{Fr&ct?QH`D z=wc@k63mwuHa#D`Be3b3uH~Mw@Upq;^sr}Fd!E)XBIA1x$Ad#a%CN=oAvjy{QOY@do8Z)e0dFlfTZ=RoOgGjJk?2`z#b@Sf{tB^@sT(xWj1&$Awx9$K@&mc(I6=MfK6 zkFvO)=4OCGp7&n<3BOf1T2lM!N4NMr0ka#+@ak3-M!OZcIEwLk+NxWf_4D$a*G7k( z3wF_#W=<+GI}gHYesy(UO*d3D46EV4oD@KCZm_%bzgnSCm`L?^d}I)LY|lQt5U}wkw~+AnT9Q?7wVWL(II$6Uz}L&uT3;Pms~t6`&6vvg zan=FUWQJHP@Ux4Wo2o>N;)kYERRsAr4fqb&DFK+OpE74c7bR0I+yPFot-e~99*c+n}ZUAyP3-3^T6LVrWKh{PfZ{yccE$z#1*O^V{;z| zfbUvY939)TTv5*vMC6$W3s23Gjez$e*rO$M3ejuFG8)s*un^qy@XZ8YqECMC6B-2x zX#Qajwx?PH!gS^1{VSMLS_ndtF2E@VkdsiT2n$)Q>446MAjsv9NcgD^m+DKF?$Hb< zHWj(EWbXlV^^oL2FP0}8_j6ma{qV~{-|PI4m4n-4S^m_D58a{M(HAMuhLM~plUdRF z-}ocLn>-XdC1B5ME5+ax0ik!LY>m z_27@}h~vc~-Gdz!jH7Ll#q6CZ6HGYzd16%NGK&Xx#I4p$p{ z%+9dOSVOF$t4+j5VP?gO#374xK2i7+fydd;qW`RRjlX# zatD9@%^k?|bm3Olt;5KDn@=e<`!9DM|3Tbn(}CE+Huu$eI4xofgn!#9`GMEX8ZymjBX(3016xpZ?t`9MBx*caui!@wnZjD2`GU}}2pf)#AtAT=#y~%~VWUmIUOobnY zDCauF%U1@l+%Q|G8Ye5 zmWMA958pL^|8UOwP0A(cXAfN7^<9p`hg;y1a`6gVMUy?6z>U z^$pfEl?x#Sl_}rkV&Oh1`zUu!o+ zm(;c#Azc;g05>II6I0)DiMhmI7Hx& zjHjJ_v8yZ<^5_#8mAe=IOV|@Pl?BJ5T6@~j<_fV|b`2Df>o+keaG77*C^2GV+N9^A zKUrlhO)ZoRPr>C2a4%yrG~D>s1up83{|loAGITS~JLwJwFV?m){i;3_lsQx6G4bst zZ!r;(s@X12dS+5QC1+3PD!dX*7C4xka(v>$LZ>~q_`qfxQql5lH_enBYTT#u>VN)} zkiO!%2D8lkpISZnSo^83RJ%U5x75huy3~0+1M|&ty~Nr26F>(ydLku}MII-Zv4PJR z_R0|8zx-(;M-e%2G}gb|#=5%Zarcm=&162Pn6I3sGi}D@6Yr!{f zN$Z3Lpg``|Q!E@7{Go1o)J%;uZkmE z#HeSrEb~XHX+&gzWg)1Ey@^_7O|tB0X+-5aiopAoZUJcO2)#`3=TC>QN)H zK?x?WrkNBxZ5$U1 zF_(2ki$3j$FI#nNk_kJHMXtiv|0<0M7za~41{ZNdr{hn7_jJDQTCy7gGwV81+;cOO zVavC0ZrrSEv4#|GA9U8cNAEU%^l|VQV^PgQR(4CGeFc-q92I#YSlGn^ap|1hlf3$N z*XDTTgyf7VO00-ec*YHK2Skit)G4=Js4k02R}G*NY|2+JkgQPA&*{Gq#Hps zx+R}~Y?!`;mnLQiJAXjcIOE;M<}$W^k1-47&$T8xSZAa_FfnBgV6iFG^Oax^dF#)( z$J7!P5+A(e)r*#eUm4A6`8q4|V>m zUmgtjf)vt_Zax0A&>z|hk;j{kz~7ABgAVrczY4xi>FcwxHC6FE9DFt}QN*OQ2L)+0 znrsoFCiL!3k4UlV0_`P8RwbL?yY?64p2t(8u`T-e%$F2QXBCHBIEf;ed zt}@3$Fv+O7F%ZA`MzJ2oi zQnFaPZd3ThkJXaH2nC_D`wDPKC!$K6o%(Bj=(eqTPJei)cbBtM?MQ(2WPxr7so>yj zF=-BCIgS-i^BXkoV&EAA zT&m1u{({)yGZ2;cP90xYm;(PtpvQ1hoO(Cl+UW-)iI)fY-a+;U-$dogF6kAOiar!V z%sdh*)Dal-tY2*mL%mC%l|D-JCji~$;=k#yFJ1KVz&V1>e-9 zjYzY)L#Fp!IT?~Uf6AaTZ6;2?<(34 z>IU_xGZOow-ftWQxe^pymI48KPp8f{@0KuC%Tts`b(DI%v;idu{;sP9l90su*vCe_#%#YpnfY3@c-=>hLeHyfn5 z-xW+2PFS{(e(W{VrFw2%riG504O!V8BhAn*cLD(qHuR!7x-+W@Z)$b9{+i4f6}?Ac zqYin6Et39XNKrvn_+dxm$l2*n71)nl|7Ok|f=`22F;miehbKlXHq>9sPEHOae@-;b z9iQY|v>08tx|{}?%mE?*s-&7Rwxt+9L4+6FHhsA3wd9-);O!oMDrapNKXNafbMlMY z{n%s)8P?x@q3wm9awzt{Rug`i`8Xhuq|4inx;t6vaHupp%tg|B{*JoIf3pJrWb_0v z*+ORv%zM=@&QJzlK7Ju|ciCC=5p2q^-yx;xHvcD=avJYxd))Jw<&24H=hCOz2z9Bs zNBuR}y|RP_j^&{rTT?U3xFktN>)bOOHK#(zVO6Dlx;b17Z|dkAYWbX4?1u94W~IOc zW#fBIDo-X3HwksYc-T19aY=U#_(=5c9WL)$mbFAYjfJ!-r#34H13D1yh}jlNZ6Wg(!4z*s_bj`)h5L!t5Cj? z#}*NX!4~S>Su%R@ZGQ4xpQ_rv6PbMle$gc5?!4->I^3OIBUQ@_e!8k{wwqC`O-uOQ zplmX$|Fv5h;dI|%kfw2iqGQp&v!Oh`%wY{)z|F$JN$_E0*DGCoiZ*08I(3e3DUDS} zKDKDOShXUk0V}fQP>b_*=oaC;$I(!)Gt4&L)10JX;wWmKb6c_Wx+38aIrL?{zrU@< zMsxG@g1IZ`D}ATI$0=8Ev4+Vt>&U*>P1|lptPcqN5U@vPYU3Jc$skE*lo&91(w}?& zfpt$;GNh&=yHV88*X>=$HTMx1{n{5X(Gf~Kh1dH(A*mOx8T7i{S)E^ZHn9u=CW&!X z-=IIjFOCSFhT@^cIgB4Qv-Vg~sH{9<_%h^WhnG30UQgb_PN93n`SQ$B+V$smeZDUx z-=p*mi6{^yK3b`e+ZmEOR{>LI35rtN^IDT%3| zD5T>Iow@#U=zi%n*7P-z#85Twua~&~1~!*ldfszTb}yftCH+l(HDE5hFOqA{Ma_3; zJ92(ggRecL+xOd5B(sF=Y)Rut--v}B7m+b1PVL`OQ7`H;^RwIH8$!qW%wJb8HOBPx za0$QAY7+gHqzbWzW< ztj`#x&`(A(Qh>e9Sl2Vn8dt^_^MO9jGCDod?lbQEp5h62Yud{p*4=VL{$F@nfN(Eg zK03oD)m2HL>Zr_lSIB_X)$*v84ZJQ`37c5M$_BF1(;IgQJPZ^V7XnQqhwDw?r;IU5;iIHB4 z1ZwBX$9n6Gw%6mzr8@fR&QscWzAYvF$`?yNeG5Cqu_V{XiXWZN>+`kn%jq4HA(&7( zcer#~r@w6iJ`i7{C$tmNkI|gYiafzG5*Ng7=8DQMv~O|*x+lh`QOE%@(o#w$OXz}! zvS!3}YqW96w|YOQN34IfpZ|n?+FjR+B^nT0%NqQ{7)qdX`EsdN2IX917!Y@p&!PMt z2RWL&XpZXC3}ZR9dyapkYwhQ{agmggGauopVRFle$Tn2jG|Xi`UI#VIP0>ioPXj)( z>zAFl`~B3oOcA7HG%l}lf;50q_n!m{fkbV^r9HM&N?oQV@l$pZl)my8_+%yivJ%zg z#I^?C)FRU3+MJrU*<}Hktcf=3NMA+vO{K`nb=Wr()`~6QTTn@=6nD=}RU0Ie-kK~( zXGC-SY^xM?fLtjCXCG`e8~7hVvYASK-i{J}{uh2ywIML;dFN3T-*Oqe+)qu^;AN8IQ zZHQVDvrv~rsmXEv2ui2C!*n+Eqtv23GmG%1J%TNP47ImKD5)9B+VSpSPGf;1 z=4Zv{89iGjlBHY|zcV#mGcaESrf{HjkJ^hsX}VJJs%jnutR{!w3#D<))Y^26WJX*g zT=Zpep#a)R)XL>zZ=-Fe47x33;U=UlfH>@^xV1hMP`+KZR}DoC%0q4wWG(Iv;jG_^ zT9}z8Xk{;}1A@X5e}>;zLFd`LYTj^}72ogg#c8I1{GmQZ3qhVd21SL}aBeH>$;zUh*(I zP~Z7lg^?xiBJ!APQ);Wxx#8c)X4Xksay~$1*UVov>X5n3Gx?L|oZGPU!%2eZC5S~K z`ggGKurRl-^iWtkil(WoEOiU?3Vg5~Dq-rYR4XLM1@RD zSKOSmk+jpfr(mPkBf^Z1%4wlxtmZ_T1S5guU!K#ts393TC}i?WyPN71JxNVH2(&KR2r2kcW0NVxTr^`U{8?Wg(~FBF_4b8p11%)W2)kcy<)5sc60P2_TpZV% z9WI-P5_@SnJ%F?>{)Ota#Ph)ln|1lUyn(^>Ma64PZR45S?SEFJo6eRA>W)0O9hxIg z^s6mnbY@mj{!zN&-`ZE^idAy>q-Vi8TteVXl##%1|67kL!@bcbwy}QKiGSc(>vu9I zDcAiKe}mv>!+x_$)`UxQ33R&T91h~kPK;s^n9G)7~gz=!0QBM?=)f3XVsgIons_-`ZlH1I?8xk zN24Bj?Y|L|^ECo?^bSRG*we3V4qghUtFph)sXSMIa{-uXFl0 zN|bLGew{V(%giN;EC1vBMJL*j30rGpU~H+PRlIEAVbSd2M>M+jas0hD=+5NJ@1`Tp zspCP|)DDkJP&=t`BoUYd(*BLCSgmMi!%yFG0lU{0;%0Sg(jy~GAM&CPPlSgzHq9L8 z#2cgS>Zn#SXAA3RJqimt39;H}uc7;A#q&)wS%%X`8|SyNv&W7k7tIiSuuF?DH_Nub zaS%C&99d0;uj4ghdyY)i5+qs97CmcHvR$oCCfVfh?@3b)e9-pH|s2QTjPIxb?~! zu-&GejG)M@WKSXc0Ag#t#NGR)BFUYb=f#E6=#02Y=aNYT8Ju?RBRXRKsfl!YM;F9UosJf>$CBVN zyuNN_p39e9jV038#DJ{JS_N&xnK(C2f>L2(=b5zjN=)4x3cN?YYN}S$#^?JMUlT*{ zK`%W;TOdt4&B?9WTz>81HRbkq>hL(b5yg=m?$dz2FSzQBdE%HGMdCbG{=qCDC=R8>Lu|6mVj*H<5r zW7-1MYy`k7f=l*6mAL*nNNL&M;G2J010Fm%>L2|l0UuL+Q##5Nt_>{s8nzieFLw`+ zhg#k3`#k-OyZI%P|6Hlj^4*uT4#MPF7>rx@DyZ>iPq0F(NuQ)RY>|AMQz7joXkJ*h zI_toL#S=XXyv0F7Gpq5he?t-;9M!cHeLahNRZkNb#}xRm+_ZSf2ao0;#8>$I-=sS}TBJAExu zDpYi@3{H|9UcF(?m;|L98Ae4lIa)P4M}(x7^u#IO zAY&sYz1E@xG{>@z>*j>uxP@e>H}uWYljijLMqjITGWCkW$ksQ z05?bJ;%<{P#v(C(0{ar$VRrK$0frxlgdi6w>U}(ztW_IeSx9(3=xp#GXd7Fua3f|xW4uH+z6S19cQGEitiQ` zyJh1{hl~-w6?(9EJC1WGrnpPlk;_n8hMMApU|5?@YL}9}bzFRXBt&kWq*Cj?0 zW#27fx+-5=quNS#LdvqCD?aeg>2pL=wpS~q9)_M!F{+WHW z*SHR<0zlBKfVss|0s$E&+wDO|-6`FytTBx(u9OrKuS~qm{NfwMlMW64?{cusb3ZZx zqb{Mob?>@I=}-V9s9Nc@!~~6&(18AI<@)(0Ku&Xfw1~vmdGYC4nwtG^9$&@$b_o52 zOm@s==ImnWVW-#Qy$siAl07$%Ig)lHQGSjabZs~IP`jq*E7Fz%c^5}#dIYP9hHEiD zUzV1yYR-s2R9Zbmz#CoD8xaT4WTPQdoG|t1R>$LC)drQwJ01ODY)?D5+nSVlLX3h^ z$k@=qvhd4D(`>x~iaN8~y|T{u{v8pn;anEC)7qsO@gr8%A(H+R=>q=UDgmd zG>zVsnI^OUyBHwnSVI&2+BeTgO+#Kc;=qM;9<2;W#IADq0Qc{#uEBb!+Vt=WQzrTsc`r3oo*+?`yj_RY~lhbZZn1i^B zYsHdag*#4T;Sn8{Qj^m(9GmX4_R6C3!IVFRp?3F;*qv<<@A#S=CxZ{)6K9dLe?Dnf zw~n|L-}(kSe)tU4skFIH?aeu36WOfg*fkz)4LV8klw_&&UVS1p z=X^jOi2g;8DL3+bi0cbb%<`L_gQ*ba>taI@ctVO`8D!a%Su$MJt_5%yW(DY;O4 zhF4GsbAB^%N?!n2wB9oBgg=sw-33ZN)KPmrq;p&}!f!l5<9JfC?R`mO#9J3M@+>-k zOuzwTwA!F>+IH!Hd-_vrmcP=R)sYn{@Mf#YA|zfVBv>Z!iJZiDWxcC2B-5u-pvNPI zQF+xZk%!pIRoCgVJk`lC`J10@F4O`KhmAjJsX55YMds5785-0&F%ly=6sKz<(`Y>c zRIGK(iUY)J1)jv1U1<#WY@Fr;sp+txPiM5kNNsY$swiMyiORJUVGC#r;t#9GUN%s_ z?@8ll>yg2mJXzJq?q}9Rw{_dScG|xArD(b0%934`Owih{gO`QhgoFzSCsyVPX>KT(5pgr<@wjW(b_v=! zn_~5#8-}jR$Me{J0bg{fGp%3u)7ZI-Y%wi8y|Wzr9{}KC5z-&<=HN%$^1U1_DV^@% zL22q%3?U}B6Zr)$tgEo4I^OL>gs+uVo@cJBc6mOiwS9&1it>j)J_19i zR;q)yp0aY3zNI%Q2z!g5DMcTmr*KSwhld69iUx&q`O+0fioyWQzq+-l^ zAs!?pr3Ig`W>fA3+-C!vsI&fCVLFvSZ&rmdbaR|K&9K!E;C+|4ZBX4yU`3!418K zL0SS8hAc+fX5jBbdTtB#3OiR$vpXC>U}dJrvx$Bf)XZ_ZCwJ)MF{;(^DapIJ)ueFo zDQV-AsO%`bg`A4A3P$cHic;hI1~wxMQ-~eIR$|LwohRzF{VsNnR}BnGq&PPi+(J|u zo4Z3?uNCOyn}W2X1F~kINn4Urh9Sjf9p}8UYwp%f+`B(Qm+zTTNJaX4=ap1g)iqqr z9LTprG{#F&Pt5}_>OKqjht9Z1{#81jmR%PL_859aC{yye5pIy#m!(qResQvruvQsr z71*6_o=J5{d}Hq3YVTI0^>ptSu+C%RaNLZs1bx##Oit`1_#E~f|JoNO-^>l8k_Ork z$f5-08!Jan$?_c<=#=GNlY&84VZEE3jT)Op?`OfnP@%2}9 zDhjEoIfTG5P~uAQre8?o$oipbX zF)?Mgy`&kYQ08Gk`WQ;~g@vkD9(=jNW2MLyk=>z!Re?xcanJcaEPHIoZ2y2`Cw;K8zT&n z=trM@YVD!1C-chq^7Z@>626VyAVC zwTWD#2YFOwmj_q3VifW{c(CRVwDyc0&fpU<#!PS4zK9n9(I-zZUoQS6 zP?yV)By5mBRM>~O`1-4@Q*hj5a< zGpdib@{ziwB4YAvH!A?auh>l_w3lzsF}v4H*(jl_8>g4;q^Ji4r*yh6xpL1S^D8`l zn#)_vUUCCJb$8jQHU8nWH+I#}vD?t#hH6=OVr&2ADTjYP-?2t_vAHLX)NWs`QUq8z zH**bDS9ctIoeAl$-pJfvPm>5g#ix2E5EJBfFgw-@9J60OzrMOvo0;NKS((qtScQ8v zx8-N*n5)}7%}&n5x(!`lYEzaD@o4;gMb~1YlqVPN$c-_OE%*Q6A^pkv%`v$fW23eL1C!p;;^ozf(r-? z$Eo5aLFmQCJ)GfwA2=2(k?jh3Nt`cpsG!T-B?kSP%O>8u9p zdHF{Y&pH`W*2($UzdZO?YaaPyp|owEO>;WvK(VGogi0cd=m!-_`{ip6y0bR|_0|8% zHvjeI6=zD2Ds=surGZ(}TrR_pQ~U_QELtq2x{E2F*}%Z5(9fOa!+Jv4>X1uI^ekz^ zrgSJ_%h)|s8n$?xe`HGQX(3g;1T(n`KYBe~#QeL|=62)!qtHAnlZWHE1sXDr3=QCZ zsr<*u6aKzZRt9SfoRubh<+b<3<%Lnzg^*h*gItzo-6tEt+OmF zn=yXBCx#%jNgU+O%GSkV*SN5;MfXzO5*$ntlNuObc``Qrs$C4ZT>6q=Pi>a}vpg-B zuybHXgX4n^8z(P&8Bh}k^|V(bZijs<5qX^0oaJ5Ns@Zaaq>zzV(FJ#{_fJNPQ2mo$ z^7w_>tv`+Oj~0ZD3`W_!~}`PCi_SCqzB zlo*jW$%+O*v`|ZNeNLqdWKN*8B-7q*1hB&=`r zuSQaB5NJZBOFVF%k|@24|1lwu^ChmnI?nhbl&T@!!+Ivsd9=aoHL#}SoYIjQHkavX z#Aaw+V62>a{Vq8a?gzXw)3=Z==Q5LW6oa8M^^LB=H$md*M_&`ETjdEim`<#?AVx>t4S|d4L0uX} zmv6cg0CUrp2P-yNa!>h`3r@Ua+REJHhj=($>J=J2%_Thx^=sk&Dm!z~wAbEwP*8Fc z?VH%?edR%8E2%Rc57?x@___1ipswoWm6_-&Tq%eTRuZ-DrqbBwGIg8`jsX*U= zq4rg$a(ZP;*Vu0nwT?lNwdbBw4RULWw!A|iAuefIiOO1~T`p86sexCuI(kGRYqAMW zFY#e=yZ6+^BRrIw`yleUz;)(rkcF!G7vZlI-E+ATx4vbh%t*LZY)8RNP#lfPk)ESR z2fRV|)=Gh9lx3c4kI%=5GFIa+b89n4k=?ZyJ@IAtcS!DnUx?P+j>>mr5Z57x`K?tZ z8YWFGZ6j-?TA7n7l0R~U>n%(-F|`rr4?$^1RjwzWE^LQGt8`5@*QGr@>K|@76m)X) zBLO=SCJ&x|^^(}duBblD=k8M?zx9uh%Ne34dx4z;EP5q2XKt`&srgw>j@Atx5D-88 zxMB+FL~S52`$h7gz}LZ`$imd%A!KNYo#~N| znR}*Hx%ABc!vAFFr|L?@DewPqEZVK?D1&I(CPB2^acf@JxyiYbT}J5H5z>j8+krU- z1OCfV^3?WUJ^sZKvJ}D*R=^(5;7tP_s=~Kz`u_{(7t2doslDc|&RLa+-=z39v<;Z4 zYJ92jQ{VffRmu3JAa&6L-d|VP-z{BQVP0IWDM7t_0jSE~X~N>*zvdnF&&%3v+xN>m zC8?DJRdv{u{pk?*g(=;!VZV8MDGGuof<m#VaS z)I8|N$$fog5cub@*3X#>mDS>HZHbCPE&tZWyVsKD3fTIbORmynmT4hbt)260N2|n> z(G5(mAfQ^@fuZ@XpLh)cS2~=A@l%|gz|>{?tS)iuJ`Qo?DO;c zuEP(m6-ct?nsbzUjCqeSN42>X$E!cH z;!~D1di&482?Z%?Wh2V6dw`ah8AzcKaM7hPCwfXuLP?UWr*g_x!>FZY>bseH!$kZH zA#3`~sF`E)<xD6DQ0qO}^_bhnsY43SFcbH++oDK3^MSp&pb8MpJXs$W#;68`REg3x+@QfAJn z9k;H2=Rz#eG$7qY{;TcLbw@a-X@M%o1+KSPfX8D95ApAg)0Fb9eJuF%EotUuy%!lQ z!0WCA#UXb}`!3{MOUxnYqn;Cg^vMo%M^O2&1iKe{>IN@0`(2XWOQ_`=kT7AA*Bg4t_D>*YDDJypZ zxschbgs~iL3TvpcT*9tPOEaPO`;=zRqxuOl)0bC}?l9|p`PwXM<~h$%fnd~xHRwhQ zSg4_ixO2#>TE_*QHBc*T-eWb@!oeb&9T!UQV2B-Pv%>Oi!7%^oRCZyg6-Lu8l-pOUJY;zC77PUtxZ5T*8YNpI~o-O}q*O!uBB3}d{_G>y8cMI#Y&83y?`}q91yGQ;J|I$1$W?Z>Um4U< z5}FbeM@hfe^O+Yar2bt#86rPO*m{+Y^V3QxR*y%e^P>$`(azBd{2lZC+V#D0Ql2QJ zot`Bl?e?}ckKOY`j+i2+zCaEMC8leym2{1iYN+^R6w)ZQal@3|#(L_Hx%`z!n+mng zH>K7~sLOG1Ocb+7<5(b>@m3T~_!S9K{>xj~b$oW;B#Nz8E6Uj>%bCU@tW}01l@Om_VmvM_6=HbHMJ;k~TlPmZcabVo z^K?yTQkvmPj8VlNR;5WTA_YXT<=u1kG7awfAH#un^X&+<28)Vj4aE38>z(bE(G$JU z8&>L$ZSSpftI&&oieI*0IXhI(UEhVw;_lD8#fuEdxbtUR|-O zwrp-L?+WquPzM#;&X;hm_=rQid`c7{vVl80I@=84Dl?m%*% zSI`n)zj>nPr^3 z7Sc>fepG0a(Nmf1>Z6}gdze7GKyQr1Ycc%Z$@2%mS|WVTAa~s+OC~H>{0nV?QT~Qe z5w@#!gNMn$9)`qq7lVH%7s*{~2zX>QS*xeG}V z>iKd>Oyg>16WCMtSo0?CW?eNXz{nnk$cO%W4^k4Y`C4>UDeeXSs)yLrPaR`RIRy%C^@3T7FIvNW)KJZrdl9oEm1{~9jf%UfL*(e3xfk`@b4LPbk+1tJ4>d@#g2%yN>Qz!;1n%x#j(*@d^DW9ou#>y&(De z;bb?`_1+2{-X)yNc>#z%+xTd$osNiS^(epIPdUjwPc;^BjeoIG7v?WkY1wvv5S(Nx_>tdR zdYTi;dt3mDiv`C2DC40-t9(I~5T(ANK} z>pFIse@4G;ZN0R?w*u8FRBbvnwVl`^8_o+)R(0CZ!2Oi+?GII{Wns#tOuOEIEalvO zH%Ujatd5@70AgL@z~9o;Y7z@kLo@y9R=tDB?W$Zx^4YkJ-h%P-qf>3n2yOIpUAoCj z6+l3VU0ZaikJi3eqGFvx%6ZMA$c2MFTDE%JvN5NyxBhusjcM;Fc&?hgoW#NI@)y-z zXTLzZ7C3{=mHfW_f|AbBY9IGmmOm8vikk9`cX z>Sds3r9Qo?0l>TEZASK#k|=z4{IRw0hSqS#kXayyVRmPnZSp?^iSljUgj8~Q%STWM zQqmEEISISj`4M-{(%?Aijl6T}{mlXfWzw~#3ImcgkC-`Oy9yruKb+Tl37>nnz-%x}bs;WQe;4NB{q&2Uh()&#iVtZE<6^5cs9u+j+}Qv1rS&};t_N|HE? zl;VE->omG)&!$5D+a|-|s~cUlUA?#5^g>p83pDUe`xAN1wW|Y~i-DNepz>Sc$v@L` zoLeG@U#bGDvx%Xq;yt;Jz;p4WhxK=2cJLKJ@>hm08S=NB&RQYG2K6MEhJFZ`f z;X{ggAD%7^e+JLapU`J(<`xbSiXU8MDCv{e1HH+4hLvCj2DDMf7eLoalbAE#5H?dL zkvCK8M%)EC(fOAmMYiGF5_mI1s-RdxpPXl7cJ?!@%CIt91MKEnT+N+uR0Ia*Aog~e zgm6CBi#ma|u7tfw56-^C>ZLk>x32!YDcuszYwd1-Dk6i0RjyUDlSnkWo4$-_|3!med^kgyl0`=!R8kW;P>R>pNN2%P9 z3xYA^g&)j^&}Ke5j*oX@%3-zVb!~|E5v{{H&nrh$7WLuTDrI8VmeaVO$j~g3a5lN? zvlqfjl=--v<6~02Y;HSa0Z+z|f9zKrK3n8zW*iN{saD0Gkuwtmr4bUA%A1}Opm~k8 zk*WuS1CI*FchaoVpz4{+ZYdoK&UbSDkpRBiU4xV0YHjPxpw3k2jI)grzu?uJ$w=5D z?|pz9z9}^gJ?WiK2m-}*JhutZ1q<`D7FGMIyoQ&%6M)}l47`sT(_e&VSO3W2B>vV~ zn*=bKMgrb<;P3(bPtK59rRwlS9mjUO>-& z;|)oc%d$eN%@`9GNc-=nl_hClv5<`r%*MGlGMflIw%vxM4yLY^2mP|mShdg#k(mH$ zo6dR+3K!Qku;`bZ#`GZj0o1173iW%nGT*oNEU-IiR`tm!!tIpV_rBQ#6R?Q1-HHSh zw6q|Tta$e3kTc!gJ={b{6}mQvjBrVM9M_=$>l1@E z4~rbFCBC`4d2C);aXEHc5NakQh8Mt5Cwj;11YZduUvw)d8?BYz$4))feTFAspXateqsn-?x<>8$Y=6 z@|J#OJZ^fpB}BECo<3UN3x?Zojni5MwB5J7Do2Z9hCA#(j+R;rOOt6cZEC3I=A2%< zv4hmxUu1BqBJSU{w}4Q-`O>Q$+lF$N1!WkpI8jydm= zXhG@?aGP9u<+DLZJnPsz4ApFWqcwteXZu1j?vQb=Ie|mQ-Q@=v%Ij4shI}iAW4R0VC=cHm+Ve0U;0FJ%P+alEh3x~{ z^OJha_vQZ75>tILm*W`v+K{DUfjUJw&g_+D=>gj&p?Xk$C~DKKY0bw(vt~h5Uh{H^ zBY4~`!iQuYOMQ1sVXDo5deNA0oDK=^PXA~+e_hX3geBZolM@3H>*Rg8r3omx>!-VX z)BZ2R=(mjaQ_jVJ74$J80ntw|ty5_crQ)*w@Z%r706NQN{qxB_WvixrHVX&7*8)S< z>iu!Oaj0$vEFB53*>iAm^3*qOrGe8Z<;6L#I~w?3ZHE131&sLbzKsvYZpj%bpAfq+ zYN!V*^W(lHn>XLHp?VlAi7iDA=Mr+KvZ=Q^#pa&}6o-gik~m|FHprpUFR415UuZDC z30PGlH(jpq!o^rZBovqBqvtU?lRW~s@D$f^zqX!3EbD^dHGEXQ_tQH3KsH`;!n?QJ zq01w+zs2z3E_V#`ZRwhgoR}~cQS|2c3d#3^lJ=q=Z0JxA#x^h++nB6!F&UczS4cst zBXAbTZs)QY)LZIq1v@T~k>!#m6GX~Y(VE=I_AZUZ!EJ8wECt+1%J>wG7H}TLg{X>)sy0 zOt%lq!%vM3Y@JfyYCOZTu~mISjt{auE5m!)++7%S_3WE4N85}38)lr^tN!#ub$0K0 zG>ojBbCQaSNM48v(cMoGH55_8?qN2&KT=_Jz@BZ?KcVbxK~bb<9ow;2-Zk%ZiOIHk zhL_H#ltj8$o?gM<5=p*)kAeZZYg@P|3c8_cX|SMVCGVkb*M?10u5eyYJwxpjzrYcuh5FWN%h~vYsPX-vBhRQBFuSEOYf%Bu5P3Bl{ z96d>J;S=3LzlPQWhB;ua^A15UqsBV0 z;VVhEnT6>R_j|wwM{P>eFA&j%BmJBVBFNNlgm})3#cG`)ag)g-FW8yL@C8Lxx=I}Y zQ>WhCrG1)TXmuon;PD#8FZKq1kTTqJW#<+y`y>P>xX5_-Z*n zqxFr8`yR!FKds>TI5mv|{kT7vfq6q3`9ntMo#P)9#4zTi$`HIp4~*bipt(3V59P&% zSbN-ofnqvb`2uO`H8O8-vm1BBJ@hyHEgH8W6>^!4CjYT|<0qL!F4Q*- zo}ZU4g|q93Fn4=EPs@-y6+6fvh$|^$M+w@=T2*|1t*-Hu>mLX#a_?qr6GERl#W|=c zbDBOelw&rW8E%C0Oe% zXHB71a!FyXW{BBx*_1wbK*h-2iJs(wSr+VU>4HvLS zZ7Q;&8aWY15TemhU)B+tgolE(Ty(|CUi}RGQ;o zOD5uOh6#AJ5R=DVWi*g|c}Yi0;==TtY?uN|RQDYN+a@Pk*V9w+K*P#KnkUz7Q1hxr zh4Z@HcW!kt2ef4~RSzb#Irvy-FFOsR;tY3PUT%fKJrm&ubjC99#kYL6^jLPEf@JTr zk#90*_nkNAJJB2)v-!qP`*OHJIrrJ33{$j8u+@c4xba2vWtTkdWQ_$v1Uw{`r%+ofEIty$IZvb#jK{b4-kl*^nBPy9#1Ibh_pXkWb;p#W+@q z3775FI1I?G?GlFb)hlOj9ydCVQLXi0cN6zWAnD8uLwKgY#7Ig(>UKf}knqA9ACap9 zUEorb4X(wPl@HLj%xdej) zM`%Y;-_^|e07IwMQmzT@)OGK9;)cL#S($y^B_W;OUW?JBq2YvQhj5vM(|MB1!yeZ2 zb{iDRU>vqVQ7}=WG2aOCwMM*4fdM4ItDG%K!P)Y)M6M4hOPHxQ3u;nqn=cQ{6E>Bo z){`d+wkGA%QC2({eaaHT&Z~&%YShs<1ZoI)O$lK)ff-lGL>Niz*e|IZ5=0l?+Q%?B zFi0A&#{=GI77Y|1X>;({aZ;X>87c8938UuU4Rz8S>H8`8k1(T^qlQlIZ zSTTCEUh3uCG^^`583n7>lSzUhnhi1jRRyswOqc$6S;+c}-rz5`Sz-tc_Pt%;rqkRW zwEveKC6wOhVuH3&!zj2H^bwaWXS5~#wPrS=*Co!C4J2P`L1mjf=?IfL<0VMLV0WY| z4%Zj-s5s*MWl^5LK$`}uV#o7oc03PRj0)lh1XPF2WaQUf2{<^##WnCv(z6d-b-A_u zQiPZfPNzcp-+B4Jl8o)WZEuv?JIFjTl^MhCv~Au+165SoX&f?7lE%M1Mc7_)O?MYdsl>)c5(?c{Zbrac&8=G-f|uV11~O8~N}>)yV*v zLUsQxbfO%S&mvfIp3xZZM4ZfgO&4U5FkR>+Z);?X5B;fleRziQ?P4;C=k39m-epFB zaD`9727fz=^(1v1=8Ay>H@5`exO7{)Fl9mXiTsv}_~Vy^&;7SA;z;^us1VYVwZHO> zljaZaD?F$cMUEPtRV^Sp?=#e_+d3Kiu?7AcYS@;+F~08DFw(c2{oCt*_3OvI+k}O| zJRUEzVyi;?L3P06%`v7fsh(RDop7ICiZ}8Rt>G#Co0|~^zaxe}f`@DFhN(jl{@?r=HC*eH|4t-2%a zQPO{i=9R2RI$Y=O2BoCn{<&fQ&rflx(~4(&D#0d-8o;yK^tdwl>;nDDU63Ul<5dmP zbYV>F48_eZ5Wj2}4|jL=t0*j6`ENYJ)myspa0tpDZ?HR2zr1dHAea5D{+SrHQRWzr z{u0j3ZbooN>>sQ1d*bNdy_5i4r=N|N0|<)SRp0T5*1)nfM|)+>|LG$VX1Mw4Y_{RH z^R4V^5m$9CfAz(s);GO9)Z(gWv1KKujNVDQ=`iJ0+X*t7*YHyuFWcGLgT2(22l0RT z`G5Hj?Cnnmx0kg3Aj19i?f>cHN%t5eICuuxaDU(L{#*0Q(2ku#(1VnY-%Z+IJ?KB( z2}{kx`sjXv3bH@o>)%;PKO(}r3<<{e6jwE9fAg8Jf=7j2A@1dV)xY&Pe~g2hP2#;? zV4F70e{iSw5@t7VNA`vC$V>k5HGk)x-KE$~HL6?Y4uAidu#@@U#rkt@|GQX!YQuju z>rb!nU(Nc{>i*XZ{%Mo{>$CoJp#Sw*f1;iL0*wEGcK-hgF#I5@+6rawI#iRwJpP0b zf9I+@rZqJvQLu#DQ^G!6@xJryWY=v_wql2 z$^K8V*i~{yr;znO8shh>SV*Dc!~gm)e;SW#IJmM{An#vUrKR~F4e6n=tEk}xIq6>op8xX8$evYa0 z|DRAWKkPxJ(f?%VjS}!}=1vl>7}wxaX~GKX^zFdulc@zWM71rr8bUzM{qba;6~>WB z_iwFD#x(+av!ZKYUJa_>-{&gsw~5qDB&4TFjHh&6$4wo`drcb~-|UJ_U+?nw6Q#Zo zE`P`vOv#r;-}0S|S?@VFTMb?XMG>#)o|h=x6vDY_RbMH_055eGsau~=?#B|bcIqG6 zW9o8bcY0-Ayw1nylSjtZ8a(EkP%nXYmxocOm&db_pE`c57xRJS$Ra|QC3kV`yoEYu zFK6EH{|rb-s|8-ZCJUW9i+=57$Sf>g@N2oefZLoo z$?HsdLkD=P3*do@(1FE+idm~|!{%5)bfhP9(dZgGyu7a4VwQgadMAkQO>K)Y>AET6 z70)hP)_`ucOnkQO!?{4Mn1!MNv5zMJ^GZ7k(V4S4kFGOc7z3+L8~K}~OYN~D{mY;v zfL)!3dB4I~9q5Tu5V2#?ThA67P6ODUce)sUSk(>B=DX3U;D%9S6I&k ze+A&>B>jCk4{KU|I)W2lZE1$oMYB#7^RrG}taY+FC2}iuSgp$KP+O~Y2412uGEP&h z?Q@6WLbc#tY*$%Uk?jIOS=?@j&5e~qd9Sn7GP4flmWOd~hzTS6I1xRbUo{u^pH(SD zK^)CQ&z6S<%-Vv}!!8WHsku&tD=s3$2Uu&4UU;eCPFC1Q{5!|>^~wSFI`{v>0e@A_ zP#KUj8`fX%*xt`WbtW+_V7`ahdA+4YPRB8IrMSA$ekrupwRLS&slK`S3~E`V6*cPy zYBBf~K=>x+bGo=VM$cEn%gJG?eU3$=L`_J%gar}*;r)eS7SDHF^GnOQy|vRe(thi7 z1&08pejS^68oq&}4QDOW@?~9GqdSGb3DFXjJOxvCNv~FH>rY#*Ny@)eAwPf4NQ`!e z|K&pu+&=}Z!S6lJjjlm0i;Gf5xvoLI4LOyylX9^%0e)^-Ed6VM($IG=?b7zp{B+b4 zlMqqJNpeEt7Yve1gbxZ&+RWEa5Iq!aZ`yA&9PFiF(9E;J&(f8&YwRLKQ<$FrHIjPn zj^jnysBRYa=Ubx5f5AHgaQg(F3Af}JA`!RTb`@I*3wjyvX7NdBPS@j$ z%=#vO^@UDNM2MI0hxnWcP929&1#y!WU#z-iq56w$dhf5p{mHG*+C}CNRm`vS4Gf|4 z)H5dy<;(&A&XQNiwPPoH&1RqYuzw>UdHC2;TR#4^mw$M$!>0E*K?bMp(MeSn*+~_q zaVmG?dZPh$TG+Oj%}JZ1p08gh6;kr-LZ#P|NIGGsny+y($mo=o8!Odaa@%!dC+% z)eG3}rQDqJ&Sr%@kK4)Jk4x4AYuBwOZS7G6w~^0Y(`doZvUI8W&sL2|!y3oIV!2s) zs>NTuXinBqVZO;s^QYexk}H1n>z>4%_Q_m6C)FOCQST?ut>zop+Mx$Py_BDmrq5JN zrGtZKP*RsaW9D3ei*Uv{9VqpX&@*_WCo$G6^3f|M?igSI)Xv!&neHlMr7|7em^}BW z6u8M|zF|KtCyCpbo1I(f=45rA%KlVq)L8!&yQfZGGpPwR-^W|54WrSk$=63cQ9M<} z)Nh)cCyBTvc^qWnujyK^-nfC9x8?+9Ichuo#4qaKd`-Vytz39|zVFsG$ct^z^lr@# z#ad^lqS>hiUx_A#n|j${JY3fxV>5A2=2#ha5*7f-<%}T>#^?pl%MiQS<=xl(eJ6D1 zhwzTI9WL#pb&k>!L%7ekISsU7N`+}Qp$)c5fXgY8eZ*6v>lJBl^Ed8J^jV^qZykn6 z<-N@#-L={;#Jr+C;8$_J#PInj%Dc;wji_HtF)bB)6_(&Z-*k8nZq-(k5Z1n(G?jm6 z)2^CqT355Gp1968kj+GEOaMbEHO7YzwYi`3-1$qz$5x=UU=jAIFLhbqABrzAij%Hr zXax4T$fAKolO1tiz@>L{9J5dc-u|$zTTLITsMBd}0z=c|Ok%lTFiXhtYuEBm~57DSznvMyq;W2@*%ZHyMDX<+@P^`@&jSMFy( zqM-3T+2212vZvm>+&9LY zlAhC{c)nhdJUXr_CjZO}|ML}@p5KqbE%MnZN~ZyrQTf%tJKxk{YR{Vt`#0}XeTh*Q zBYa)+Bstl!&a`nKa_7`BzV19bLjPF;m$KgK?zzAm;^rc^SGhcsMBKsG@&Sg?Rx@jr zoN&`*gIuK#gSrZdb z2CQn#v&J4e7qcd4_K8b^$&Iq)tRpT!_13*(VBU6kOcxiHwxPwCVKzfL-MgPjid655 zD@Ujfju)y;f?B!(4k=7Ru>2T1CyEkoMii@6zWQ^Md`&i5EQgD4ACLZx?0 z&P}glv`m|m)bEC14K3RlLm8SQGgdbX@v51|CDtHKv{y{`HKcoiPx0d~f|-CVs<65$9N zC1WFFl~7txX=fUA2~o9FkJGy9!V@=JlgKktzCeqqsyZD5HEp@*5!MLdP3A=(SutZ$ zxN)q+HwCEgPSlz)V#%*|U^vVBw|)u{Eqs%)m6$Nm2wS=eUqw=)@UaUGdqbzsbCa54 z7hr77$6hwJmk&Q5OPoW=tA&pQMmm-WMMh25Y2FJ*drnIIs}OE1xvO~eWW>i^7n)a6 zNsI%0R?7tdCgPl|!6B0c>C*>k1ge!WMrB20pMmYmnwxc|^7_3FABhQG<6J<`$6LwEp z5l;pRJ6QE=uq55R>Zmk@G8s~HPKWkmul$^IZ`BtT&R6YBoYTwF5N@xhtAqJOG{lKs z|KZ&KUu5f-`lR&rt?td0R8Gs|1>ZC)A$Ux19sp!KBKz~I+d7BZ7SqVJx_dEe^`k~u zip=0Wnq1O2Nn{0)b;^WAK&@!L(B<}IF1 z}pwV+)5=5w6t(yM}(be>tAZn%~)l+%!L>6`9VIM-#fGSB0avP*7Sdl8`s z9#+q#wJa86_hJ}z0Mu@$C=Dp0;D!#XHo5)!4{MHgY`oh1PO^#xvWw~zR=IXe7O?Go z&#iFDH$}5UX#6qSy?548k1FlHwGL+4?rWB&+V%yxHl0dSTA+T`+J$j!41c5;!B%QM zyjbDOUHdgSb=e+Z7wTB??W<)D&PpYHA+|}Z4bXBXLT%Idd||R!m1Fed2?Se^(VCTf zA%5&7!RQDXYw2z}7yo>-Ym>jLgNZJU{S}s=TYe}1LqTuC{Q1^xp2ZU<2&H9%rhST! z<{aeb!LymApMF^b@&J=BGm8fcYuHRKwx%PKbB#WNh?@jv)W1PkLMBoVf&;L=I?^h$ z@2a!v|HxYWv%PP;dvP*e~fbB7v~Rkxc*(yxC>9rXlzn#$YZKqaAcry*;O zS0RBT*je$@f3*J#ZleD_Ivyfl5-#Y!%&Vu}g+^^s;SX!xjTGzh2HHc*OY&*88sx&S z`Xdedlq|cNK7)cPWI_2ZRjaBKv9>njLIC5H;wwDGrw47ACL1LQkhgFaq=Kf+Az4ZL`#AROgt1%SKk_xDlNILXEaugn zWCpwMuuz-kzCXk^iO$ia590ksk)%#(bQ7Kx&{3wzp(Ueb;~qoaB;Um
zhm>Ic%igb3llghqT?TvgzS%O48DWfO`J)ydIm6QDq5P{RXs2CNE9kU?q|NYO(~Yd`eND;96>(p(c5C^O3`LnGqWh5Pvf}E z6QHk+U9sN|;`j^nBe8b#q?X8$z}?eh`fKHF#E0!`P(_wFz%F!ePWFDP(IFGrLR~EWifPgt8vxmI5{JaH0T)x` z(rK-f!MmD`pZebCZr?%1pRXuch@mIVIS_r=>J<#fY?E9firhf6FnUnK8L_k>&#l>D+D~Fm4$;kqPMzNnJI&CfEZ$e&+$?S%^%SNX-nSG8{_rEF0_<-xZpx3SbQxT-c7NnD>3mKYt#M@+JOp_*ooxDJaR+hbULJF>Q`eqcJbcM>KdkR_kB!W!beotS6 zCHq^k;nV#Qb0@94*~(TE>W8c=9P1yI zMrKmpB_M>p>E+#b(2p*fXS=OW-$76}ZD7$w!RkEltS#<)2(S92%V6Ze=2T{K%i_i~ zM9(7C-(~0dz`6(`hk|`YfsN_A#Uo9vCf}9HZ@*lS^xDNWSw)m3yMvdIdv*>vAobn^ zz?IizFdC?Q;YX!!p6Z|mPh>CInHn%4QMT_pzPQsRuTi+Zyk}0k8KRworkA-SeGaO4 zx46N)7C6>mZkYfLZr9DNL;SLUkYRfse1(x!&d+%^ksrlZ<$03lVVet8&uO{LoFo&s zBq579$!r{!?o+TC9dK8KbL-IFOBx*dd@;l zw7@vXB4hwKyyv>&pw$S?L^N&M=*jHG=z32vMI}AJr<%3KT7&tQUp{f^C zqN3dgQ(?Wn+IYp1fYlhV7~0))u||@GX|7OHTI{C_ij4Yf4LYP$Ym_oi3fye+>3QrViF=hm0$E^zY|P)O^K!8<7^>^@;dk+Kia2~p76$T% ze3N)b-cg3_?TixGNhpq3lCGH~4&$hD7Gu*+y%2p+)I@jl6Xj1l!OSYS#YfrnX*`iz zI+Wj~Uao717^i=*6a$!lb)E43rIT9^xy#_)2=NkEms_w)tDhN?NtKarcnH?&%wanD zf~RmI^PJJK24J~XOz4SsNxx#+kg78t(vVD7eD9ThJ35H%Y2rlH!FM92+T^%CkSygx zn58D>^o#Q#fv8dR*6`)MgU17D@&*i)Vlr29U9-~-Lbt3WGu;yE>hL9buuJ!5^zt#b zQ;hwk=9}RHyb$!@oOW%qIIPmc;_XD9YPKa$Ut z@xXAV(C@KPCdf`KEJdKJiX>N4-IJ%Tg*lc2kuz37 z;1N5x-D9oH#dNmJxE_9ZO2VTj+@g&S6T^s!ek=rQVUG+f_4ty65Lk{F1`_7Hk%A>4%- zv|7ygCH05R{D5>`LGwfC?qMc0b!dK=b1QMLJ|n^9rM9WvA^1g1k?zNwpU@+E_;`gF zhv3grg(U&Ql03c5m970?7eC z-nVpI<&BPcyT#LFN1kxJ87oUexvLBoldH&wRym5qeo{}rcN1%E{FHG^7WE0qt!gLc+;$uCcbKkpu&|B5A#L}U+Dh2u>)y`;n6TEdU}ex6wdr^T{ny_`CQL3}=pahD9<{aPOf zJjzwAJL0V=t7ldHYCkTWcSaLh@Ao_oy|9(qFvNqJ#`6fh`UUEFX2>i(g%~bQ}m!6s=RuDw&le0SWRF=8eBP|onw4+ie zyTeLfKK2bLYH$&Y0cuqa54^IyJT4jaK&+`=k_zK0#-Yc%@Kcj9@5b{|_!=d^lhG5B zP>;T;TPB;vHRPPhfvPT^HDT^MNJrRrq9EQmqM;%Nc@A$!1t86AZT04SwegE1tSOZ= zhmplT+^LJ`s@0&Rg>$WiNqq*)(_H|E;p9wiTzC|7$dT&j?fBBf--~(M2=K{r*!8F? zg>u&)NeY%Ta9KpWO1=qxmbHVC$afm|A%j(dP@M3&;RK2*kf4?$5fvlwzBR4ey((9+mWnBKK|kExD(H|)7J z?NWJ2{UfIC0jfJ5KZgjjYtB7KXSeI|<6ryu+$3~V8TLqvxxM!qERGigYc6g-Zs~cB zVTe`533@fy?wH}TyS(>(BKFZ=czdi(G!lRO!e;u#Sb=8AxkUtWs(4o=YNf;>+lH5Z z-b<3f{V;X@va^&SHL*nASqOANfcz1(P`h?+oBXCOkC8PJ3AU-XEI5)Oz?w|UNmb4G z7rWg7)OC)9;&QCdxKiHz7^=A8m!e8=x{t#vPA@p2n6fpwBk@=``)$lyh22|GUqCU1 zgkg`_Hgw~D3VlJ#RF%8s-(Da)b3sxRt-S<46)T7DwQu`)`OV&DeNIHU(nuKi3&ivx zUk@DdstY}=H3|MT_bDXP;F!QiOC^`Es4p-gpL{eTD_z+vIoN4jxO<`k9B9y**#F?W zEhF~>KCbh?Z>nfdKfV0Hk^Sm-aV}XJ%r1;Gg}O!lbq7bgWy$qqo^sY(%S+27eQc40 zw7Ds@2+Nl9FpW8dh}Daw8hSCiPKHRNR^m%+cc#zpe_+I7g?J3m&I^Oe*fRP7%78pQ zO}tr$aBVOx7@K}1UeN8DbpSx}My*(msF;~1=?i1v@JZ1;hn?*bJpVx_?Z_8~%mPXN=cAJEymqGc7CL-eanzF?P6XqVOf^BbAN*D%s~xy6xwxf&T_r`YTH; z3EXt_-Eo**$90s8p`yxm+>ps2QaU$=BS3T?E_4uN{PU- zwXERZ%t|-Ot@&|R_XmoxJ3DyCWduK|-^gh{RAk^^%5@In7YuN=QW4*fGf~S|l}^yG zl!O$1w?PQ3XXUxXAP>g2MR5f2FPEgLy|U(mz>`6*Hmz0%RhC*Gs{ktl;e!VCU3|r| z7Hp9E$`_uD_uIK=EypK?e=(LDm_o6}C`2PWcO1zq<-+k9wViE^{lo0;!|9{UkmVZq|5%l!*<W-N5`ESy4) zs~Yket$6xl9_W?g9zT8L^nXp1ECbukc!AwDo^XYpwK%bT8$?E4LNO>u*IZGswVB^B zlQfI@e66X3#Nl0itj&uyrEuYG2Bt{hLz}uzY%HOR%qI852ox_%HYb+n{di4XM7nQC zb^qB`vhuqstuKfP7wG6mf0z7D%JZ(RWntD&M@s^qJ?UD|rc5aj&pH=uyJ8bm#ABa9 zI!cmCt|J{AaLe}U025xWW$*MoJ=OK8C-YV3`AB?yVp-KiKNV~+oe%%;0;yF1K^ zRqNt{-A+9G^jIRgn@WiJLJFzlz<0$wrRlSrgL^tTkqOkHvvsVq;AH00|sIChu(NBElm7A7RQ+_lyB**uNDwjwt^_B6=5k^IBm4*iM8EnXu&TOuYl|V1MSJE8ME$5bt9GfqLAW423GUbd?V^Lb{btr;04}t*__kICyhoR;2y|?VL*Qwj`d#YOtbc!LV6LpKXyZ^WGuqQ z8a;~^f8sYgj>}qc9vTV=oE>K_sw!4|YI?EMwYfIFTQm@Pz@wjFyWLL2$C@Bti`hqY zX&`=)v6`{zthWpBU&7u`?NKeSOovVEv>~D7Kgb0+5HP51DAEO?wMl*lB9pUdXG|H zQ&z98HOFG|l+?#i>ZA^Yxx)jRC(tY!3g4zlc``LraJpX?4IOGT?L@V-i3=HcCT^4! zC=p!bMzv?t>5Qz8r>-BnKAty4XS4rh#C!cVnGMdT<-?(aR}2Y@WswiImbrj>2<(xC zpfPO6uIs5rl*LJu(9K(_zn-a1pDKnE!=wcUmg^OLZw|EQDaC=egJXp7`W_RC!>9`! z84m8z1(d|N?{tMivy8ihTSTJrz{B(By_%B1Iit8N|98uFUNl<0T3rq9-=9=XIcD3B z)~--g9H7_-$rbwUPv^Bke zY&s-;2!Of9FWqt!Kt7h`oC&GM&vx_tl^UfqjanMWO|s$|{Vq0r`N5(!4|v zAHRl*IO&_&?shkcTa|m5bi3E|He8Af31wps2$1)lEi_P{>H@IFkF2lwNu%ahv!(ij zYLuM5+h=Q>&jznFmMZT$_I$XxBo^x`ra^=ToO`~QJZw_GY@3Q%B3PNH7G!?VJ3{Li zZ{=znc+HTOuf$MvgR?xtI#kvvL0Ti%dA^~kcSL)=FeSnS|1#EdE*-DV;Z$++&UVLO zPQRh?Q-hE=4HR~f0}w)jM3~_lWR4nXVCf8Kq5RUf&rba+K|d&r<;YI@Te-l;UK~Qt z#x4QPLoM%;^REPr5I=_VnRcIa;3IY-~$5`)Y!=YRrM=z0$jJXZ?%7g)>BU-p`V z-h~jjM>k`&Ay0n?&IN?(9M^HTLIfsi%G*tM@qlu9zzb zxDT1N_e3!?<^Rax7eSUO$|jsP3JI;eL#3md@2D0B)?^(DxBI%Te=Zq9I6L_WD_p@> zcN|BZrv1b_U{}ORsz&2skzp(dJu#i+C!q8_tkk|meTI%}JfT{@a2Q|)`uf(+bWA;{ z!@;;_bl>ewVY8!-@2v5_Tz>s-t#7Nn=A_#Zmu!xvx{egRxPq?fQ*|*U>2#wEhJBgv?c#v7`?Ov+?!`@p*MZK?W<6A@#43tz_ zLP|h7r9?WU8&tZ696AI9q(eFdq`R3R73t0aW&o)nhLmQA_sf2cd;6So_H&;1{r&Y@ zYp=y0vy>TTK68KWxUTEI?-Hw`o8H6TocdMsypEl6h7vP|5J}<7ZWmBe>0P$2v#&yj5oy#r$A4FMGjHnYTQ!>zF420%!KXUrd6UY+!Nh*j3wV@MF zE7w8@nx?m9$_h{HdOBmUavO>Ygf%A7&0++%`D+N+G`{6VuaiG*m=?%*zWasOG+DtT zH>JFH!rBR=V)1e}Cfbg{a}O%M7W2iu`I)si^i!E*=uO`bU2LJeX?$h{{F_^_K7ZTr zXK?2YCxy6pRGd$0l0{0=QGdQJwmGxEr8N|IyLtr54V>uQKNs6r>fN*U)XB;wmJ%I{%~12bqGn<3SMZw8j- zdC?8k)~~nD;T1@r(6e8&scF``W_Zao^N69cMQaZjD>*O-ByL3)Eg9$EiBLil3LS_* zgi-9F(&L0|mo4GJgCa*|>!lA)C&6j`nvwgsdgind4SPOGwoDo0d-oG$U!AX#t-Bl* zO#pK}<&=w$#*I-iuD!Q2l6;!dSwA0a7vW^8b?GErfvx4dxAefW39WSdX%Fy$AwS*= z&3jGv3^0;9=Po<2{kSP|gj-EqYpg>1qbgwZFV zPaT_D&LeO|)MEBnh#R>@F5f^s9!kEI$)SpmQtn(+^Oz~T#3CRj8x;;^E~WUeTWaqv zy42?}YZtcswKyuYO0Px^BEs9T*aT<0qN(!cM~h?=@sr-tduDS# z;EmpVl*JiN=OF+5o{jYYYG!~xbro4OBELrX$izl=^dq$PPUjg@L>tcl!>bK1%|%Z(c@Oi~fr;Q8Z?28%6Z zRmXC+Zb~39ZN(kSkHL`A)_vuq$*&!{c6wfY1DRPTm8{KUlLsQ`;WwG|Va3HX7h7z4 zHKfqTKB%|Yk*Q{cCm?Y<=SEZR_PpZKr)B?^3=pdT&x{F!4!R4fmYyB$Wo7V{6SB|f zUT16Ccz;-ZX(tjSeX)Z8n^qClYm_hBSuWTmOi#2W9I>w;j&dC*RAt%IBJot1mdby$ z=5(g?Qh3c3pMk5AY-VCu>%In?+iOJn_iHYiLdQT;X&J*4dG`QrK@^0|5Pp)anZAl? zCyV=h631kJ#4Nd)=IdIOuR`wa!PqXEz=~GK_U^Qq znh$!7`y&;18m`F^&{v#br;U&w;%y0yy@JI;2cl>yFwL*vAIMnpI_!_itsDS#H^!UP+R<)@ z=G?h?$c(YCo?)lwXTsafB9<{8Yrc59*n(T#+OJrl!wVV26gEzq#aPy{=>}N>>=WQ{ z%-VUr3OTtWAE|m)kyzDT{zS?{fA)Vz-TYS>)y3%RwuekQ*;{Ey*nR;PCgG7Eq)LpB zH{JiS=gmKw`aqN{ffM9m#DeKy&mdR6CmvY7(Kx%Q0GqI|*D-4`cMT*>8L5_(Ty|J1 zH7>klY1?J0RB*khWARXNP!C&Bp%a76J2$#CpS_GH)rR^`56pHouVfkZHPCq9gO)s; z5B!k^mK*MWm6P{F5l?K9;l|8wEk_5L1DWEXHEF8Qn%Xtt$Y;@B=% z$}|Jy{qpuqwK~c0b}s8JB3P-)?AhW*cJVQjqdWYQnBR>VyLe`}oR7%Ne$$@1i@$3- zR6&toJkQbeC>67zPn~n7JhmazVCrSdR>^f=L~4#z7-sD3=FgZEnn%TeNXv5tTniQWSdqc-Q>}`Dnb#Q*^BTuH`+(S|#PX(yYr)CUyEnd*ZET}z z3xdH+r{!qihKc1G2pBW*}oV9oPit z>#E-?aj;kYkU_yD4gQ>0e3o*8-phcZgluS@PQ-pd$)b{7G$LPQrGG4-Q1ad=Yx26x zu%e8I92WR)UB26Cql5COka#?A#On>#-U{8GbM$pv&mLBMSmY=d*0#W>uNz!N(bHWP z9Wwak3~C#8`(HW6e=sqkTo`z*cPWJt?*r_Hrwaz^c2&m@*5g2AOL>Jfc=S;p__pG8 zLEW^H8&g$gxhLQ1Bzujq$;wT7<3HQ#6S5fyO>Hg}9m0gU8SKto*P+eG)rWosyn$hL zZxiQ18xFe6dXuxtA$WM!C!~(^&a$W_a%g6*A1_N;K z^4A~8v=zyzk#wdU;W&>#@ltZA+anf4zjX?RRW0F*wOozGX?6L%({T*5;=POW_(x{8 zdUBXYi+eCLhe_ypOGZkhH;Ft()e1NWbL7a(V@+jvcW9r; znJ^HpU>Pbo>l-+HeS^HhmtwZ?pG!GbRzxI-JgCRITT|+CP^d1QpVBBGRb!t+x#b9# z+mdwG7fjELG)Ql^d6p@LtQ@Z4q1(NWlF0tBV)r?=7w@4Z!ok=wNuzD7MCVJm_BMS} z8G-xd9Kcd(B5|)6o0gDwm^P<(GMeq;Nd3OCog!j}7@}Xfci3|h!>f}t$jl5+?-Z-& zq&mK}f#=7|X_J>x23I6ZvKLS7G&p9+RecrGcUfAAT9vgBk9(^E%tNbDIpN>^EyeaiSoFWF?I zMm;%NdL-zZqbib(*WFGOW+BU#v~GWFV^J8y>=b6IEA;|0Jzgh%Bw53}l4w%D?WduE zW3)YT%$CBTEv}gJQe9^pQ1|ga$cfM{3gjlslQ>dh1n22?jBcz14FDsmR-Zqm|0Y3M zDea`|HpN<(;qS)JbNbhSW|S^Q@U5ztnLr7LTg!NP@o*z5td@&&G<~y}jsS*k9Y`S& z^PU5CR*2Js;2NF!nTbt7e^b0_#@P5`{VJ$f6PsEUZ;I#Y%~;U0js~|zyY{kXw|J+L zFBrN*3NqLcK=_*B8Vy$rP-zYvRkB3WSPQVc6zb%j5p7W4sQZE17*T#bo?1KiIH#p5l(>GZlZ_u5p1-yJ&OwvVKrlC| z%AsbemEDufO5JE?#CtZ~{J+`3_SYdMB4q3Tc|-XX!?WdJ~ii7+61v9u%& z#Y%a6EF;9-NpB8gxIwuY3XD44x!+aDMqCH`zr4X8(Jyc(8{sS5Q4oRFn7^9gZ|o{C zMlPu5zC16+cm}IDr=cgNlp-JLBG$*LvMmn%kd*|s73AXz{G=>7FNMy|Al`k6^wwd6U!y|dMGr3 zG6-`JUYzOg4ZBB5cf9Pzul@vMCV{VYi;5c6NUJdSyMU%#1kZK1o!FnNzzuSV*TZP{ zF;r=4Z?|!wE}}^dHJBkn$qSkM;Lu2G50;PMRkqU{`2W{dxB(|bscT=O;3qdd)9U)CM?FvTQPJ5Gr$2!_a8|kb$gs`c@%;wm+q24v}|ZAb_nC z9@XFTHXX%6A4%Y&(jCo5SCvdqj-srAA)pe{tpvu|x4StM|B_NfWng<+ULFnh4!tNe z@|L-LUZ$BkhlNk>?|pqAca09JNWFQ1p29^2<2DB~?hI|ex}x6o;M;bN;-CG>S#m+w-v%_^hhLeSxMNYFx4fZ!2ZM}T0xb^XIjM2r8K46 znQtoqrNEE6p8;QWTilcMtG*q%`5IJ}K9uMm#*_wt#q5Qx9V818yg$q5R)2Zmn@aHc}33ho}Z(n_;Vs|1;sNj zV4q5!3&G5VLL5t|N(}C)=2^gJ3luQwIsqQ|;L*uSw2LI9`a$9LL~f?S<|__W{G5VU zANKC%fd{Lf4kzJnu~*zr;j}rsiXq+)! zIrxh>Cpt^6ZykmuLD*@c-*({*y5VS9c2F(+r%%M8z7{-&2afm{rGUZQM2i?{B(AeC zU~56Z%sOd@ZOmYU&5ekv@VdwgE!T@=Nx_>73ZElHqsPE6l`3wzt`q>0z@+OoID=Y` zqsOP7<8ogQRJ2prsw}v(R7$6;au8yYdV8kIzaz1GFTPNY)tS}#U=k#%NPo9XG5I)<|Y`zn3qM5H(S`DGeZW&-f3GSvzye*or<;k1d3q0x6 zmV(%Gi0FvZ{Ab8muElE!BkUsa^VhZv*n!_fz_JfWchrtO61(*7J2^kFD7w zKon5}GD6*VDOAWNiSV9*Cu(luE>~v3Jmlh!h{<7(?LMep3S62^*)S+pgQ8^Z<^N65 z9(8%k`qZmPj#6Ooq9c25bHAZ`;2|zquH}APN1jO7^uWcTvan17RSs%&Tkv#K4wuvW z@O=NfOPE@?5-yqWkFESq4IZpQ)2SvtM*G8AV&DXggNMw?4NK8S2>)cuxxJw$%A8`y z2Ul{1`_kOkg5gL*mu$ztUYR*v(*Xxm-t&`0#@SEaiqJ0Sw2;Gj01S0AuHE$X$HOx1 z&tFWSwYo3 zndYhl^0s4OsAf?9 zHch+I-G3N2*X3;cHcSORfg3YFWUs6<+T~O>&*P>ae|-)Bxy(zw7ie4}Jk3V8*K;Ze z*>uL9r;$;#*$0sugM=49*r}^518M?qe>`i&#F}sY>soantu{8;0j;8K40B zG6+}cDf`rIb~&xbIT8W$_j^0bgc!^x@}JqeQ+liJt-lGL`0-!(xZLdL~-1xz;^rjO>hnFZyDakx<}87yzx(ZpaTb+ z69NcYDU)-_&vTml=p2d&x+|~xjk^4J7VY>nV$X}|pzze<$NHtGx@_L5z5roHc=x^a zZYxC@XTs^9!pv8qx1`Au@>8@p7V3Al=xNq}WR;kgn#~IztvGN9J*UUUr3nZzc({h% zvq^fQ^qa5VkG>e4MN($9QCuO1YFP=19Lje$5pEHX?So9y?{%tvPDzi$6D?rX5sptk zzGKmmKHi&eVYO2NR)6&y(QYmr)CPo{&6XDV{&D&l1RPXVwKGTb@ zTr)!-k5}th;Ciq(_Nl~`FBcPgDn6j-FI_6o^Sd;?gHoUQ6qN>My~J!sYn55%me^9( zEoP3kA+16dqq<=gO3#^{1{lCWxaX?g094z@7*zK|oj*AjkW!LPs1EAZZ97%nwNmfF zCl*dqrMyJH-TO*EmxSA#PA2q#0zhw4>FXL(itUCP22a>e*ODf{N+KhGk9k#P-7g6n zj6GpKds{dA=n!jx)P{05mD-<>;SX=(OYmTIq|$dd^rx(w$_MYEpiza#EmdfP>lDdF z&#;nVJ=0_(hu*i_*n4rCVvmoSQbR=dU$5_Fc-jK_b=wt`>mjXyyTATrG8bGpT}(V9 zUpyzW7#?YI|6Oad-0Sw+m)s8TT_a)%V7$u*uh1=q#7lf&g^I zIqpZUOd3;eC}D>TK`iBquQ~G~{k5#1mgMk>mu2qll^}pumVu*;G)@(B;ID8LAd%{f zhSOtJ7|@%CSqz@CH6l4<^3 zrZI=Pf9ZLgDIb1#!5f&wu1ZwzD+1Oxbgb@ojw(EcS-t3kxB2jtj94b(ZZ|z!1JTir zZoAJ9*^*xAXo^Ps%l#=EX&d?0egxn)8hIzy4wdi%Rnekp+>pP&)XYw*m2Rz?J?B;c zsooQRW1hl|M+rh_>G=0Lbjs9r-wxzl9xL`6ac2VA^JL_$4MhF0yvUZs-pbYtBOG;o zV|%5)<#>#MQInO<>#%w4M#8uhE*cj-xXiz`hnteLnmyc-$X4=BYb%}92X4ufz-D5p z&T1ARSPWSkg}99c^-}^;6)!5UApYW)Ud&yyM(^xUq5l0;R$ZUwzKZy)j^r;Un^fU? z37Hlq)!G4L7M#M*`x~=3tyZU*`WdWb8($%*O`aqJa{%y#P{Q#OYxdGcoZlv_&`?Tl zqt=pL=$l7B>vQ&75&|LZ=E%bA9O3Zz+R>xO!|I=RWEbiios0J1bB4L|M#n&^OkWMJ zLpaFgIuA#v=iWrG^-Yx6b6`q5laYUbSAkdM5hOZ}lhd#L{NBKL2kmboMN|P~JEu;d zXtqGTHk|Z*mD3LZW9*Wf#IvFPU##b*_QrUF&5&N*v4$`j5M#{aGnEM1g zO1UMrODuB!MehoN1SD!*W-+`p+zZR+j2% zaSw`5ItsHU0b)0lm{Jr&vVf{OU2;v)<+ zqi?@a=W=&?(cBqrRKp0=UzRp6j2?D~GM)Lpo-{I{yqDm{+y`veNZpao7_GZJa=cPP zAd`bt^hE$xyflMHW5`)!@P%GSETnfLDVnD(+TfD(EZect1JK2B*eGq;!9=*bAeHef z+KALq)cw&BXih2oIOya`ZPmFJ+Sk|aq2g+$ll15(ZK#wVcL<#NhQs=!Xg%xZ;HP3#3AgB`|8UR$Vx7`4t>xHN2$GZM zy)XDkeN{@Bo*NWLc_{Nu=t|YQ&xcs|j1m>!(QyikuH9xxi7yiimjy=gfS(|QwW2Wq zE_?35B!?L&eZ$dUzv0au(cUE5&`falbYi&Lwr)a95W6sLLCyZ?Mw3FzmW`i@gUIG+ zPJr^wbj=nrGw<}Ov5n~(I62{`O#fon(M(6<*y25XErJ-lHbru}1z4 zdQM}6Jg5Bthojx1PHB@$oXFuUOp#2pNS1$Zy~HfZou{Taax}u)=)$(uj`Q^@reQn5 z&vb_to0iE=t`eT#PxBHK{k9>W*+fkef3n@GMTAW*KpNzOOn`eyQ6=d5732QP`TR6D zDjeU;#nI8CLlBIsXXH$E97v{-Q({Jar87PP^8pf%q6^Sm(@CM4@G)-@Q?8YHU$J>z0h2~{Bp45mygz@J!))Y%8qI* zW(tvr*-gYl-ph*qR3~&V(!Y%UO6$+R`~Gkl=oRTpx^!>bn1nFfJsiOy?1`1PoD+Dj zw`g#@@8P(-NC_qIhSPkrqqC9yf@30Euc<=%iT!ulA@SXNQvl%{JXEjoT$87<0g}2$ zXWw&>qn8bnv5ao7b4>syK*2&mm2gf$|2uSjgo$PSu)6%i4Dt3MKOhGlu3MLy94o>J zMn#~;5OFk@u?!kxsbe+j#@u^9eF?2Jl{UMYvFw;#&)5b}QVMw7g(JdoDm-A><5nve zH&iXwE=umk%hR8>@UN{I_o=^+7ER=)-k?L>UIb$ZMt7RspadLkVnDPYyIG@ zvpHhr&dDrquqwopaj*Zg8^|qSgf6Q#RDJ4bXF~D*3XF1hlq?(O`!Y0 zWHTba=RO|JO+|h6E%0HyWK!o4oG6yzzk86fp05r`eRP=7>o~qS!cBVRhl+>Xo3v}4 zv$bnYvy&REOVFMJ>Yb06<*f5!OGCy{yeTWf7pz7y6Tyge0tY`h)GLqCp!kD!rKNvS zk=1A+5i0?@4O*+v@~4?_Vm$Xa-#u(XO>O7Bn}#pDW0Dw?S+8Yp&8tJaVEc zl4Iop%~B_y^`SB+2EVHy!>kl#wnV`TT1Tj$lv%Tp_PWJFu?0uf>4$t?5&pI1??pdrvKajzUl_i&m0}b|v9$ z4l>1>*~n31h$gj{bq%97U6iVTR)EC!-7NR^E9!;IIh%dogTdgD&h zG~pfJ)Mvz%@iqx$K8cX;tB0n|3S|Nw-6U1xIItxW*k?t;1WToYSH#6yD-p6)&~b;Q zA5WqYHRtzuHPaF8*b91G`RTE?cVIyTOiCwVB{JD1!2^8@T_KoJWDpZNk##t_3q z!1-B9^X22^-+=Ao*ujef!2YbM8nn{U)O42jT~wj=+~@J)B?ASN8uyEiey+O49qrN} zz4}*~pK!4uaGpZKzE0+@P1Vfp+b=&SPOArASfA49W0DtU-TH^C6ve}gc>sBtYpkI5 znpojG(Ud0Mi`kVF$q*vC*LQB?t722BkR@rtWtJ2791U+R{n#6RWBv2u{d7ivY5)FE z)R*Sj)3)cOjS3>urP?zXycbz7aZ+-@MNrM9?|H0RZ)jswoj~ey3XZ3F((~eqXOFLa zc$=-TDPY=zu{U)z+6O2$^=Hu8PqbH{M7eEZHzKp)*DipUW_3)wqhz7f9(dQMf9doKdi{$OYqKT8IV>{%$16) zB3ZHoc520Y0n#XilYt>+dKI9LY`?3luiifu7AEb7n0GdlkZH8 zd>pPICXLGk%K}171G|guN90IKhu>O&mCkI9x=yjFGU{>?IwRjNeOIf>L0h#!_C$WO zM_X)uH!ZmV*0vqS#pWYC!E$MG;ehFoB+Y)^_dHTG+F@BfZf}6S$dEFsGELJ5xHj+K zcUEx-2hrigJDODwt$>-bBr38b*Ocg9r_?^P5`gXS%#!mD_m$gNsxtyz?xWo-g@z?r zCqT0gr^gxzeQc3lshVrtr{b}xt2Tz;zg7qh)q`XSt!U8OVRv$2Pgf#d&XVmH;{4m< zPh12H4|}=QDT5`r?DeTpg!?=e78cm#p=ujuS)J5`@M+4^$;He@kqs8~PjmYv<@?7& zDqQR{=o&6P$~}I;+ghKYj94v zBJDk9&VOhQCu4#E5j8=q586ogRW9(BH(D?)^}Lf9hl?#_e*;R~1VizRGTD;Cs6;*; zfXz-(mR(m1P$^<+PT`mXR-5x!)`e=8@LuI9(zJCZ@Q6?S!{o`39}#H{R~6j7^|l*1 zB$scdzuFO+{EVm$(xPu`CB&(r<{eWN1=T;Q&hM$&Nyt{ z%JX0PlZYizy1+Z3&9q%P>3S|@2z z0A`>5>fjeCWA{c*6sj0s(ZxpLr$>fsbUC+iQl`LKNVW^twWHxlQkxHCkDY_%2l*;X ztZI8hb_SYV-bH)p^Tij>zMg%^F)Oq?Z?37I<7qLv`w2S#1ZcVQJx>(fy?LN8{V{TR zQbuvWUdQl!sjhwiXMzBaF~bfer+6QBIgBgcd7+e8wN3h+3~{ktx#<7q=yDJX36KeQ zksn!NfhqyvILyA)0F<}Fbxqb+jn3%CZI6{Ap+Uyr`tTif2Y9astWJD zTvmHt>L?yELU#{XjICKcAl;G_*8)w<03%vQT45$Qe38jqU?otR8AS1Cn@T zhnWa_RYEblDsizLTS?yFcYFbEUOb4~(V(5rX~aXP%eg*aF)$bY%F`;N%l@!rJ{b4# z$|0b9MmE1l@4GJ)1k1VeGvW>00wyJ5+DrwwP>l)z-met$USBw1{R$~F@D^^k7>iW# zq#omtB%^t0pBzarVA9Do@xy$fLxLRB=s>2asd=W-B$Qi8ku`*P1uJ;z!!XHTr5{~o zn5ABpQI9x4xumnIumf(qJ4>|9$M%7avy3{Q%TMMZs4x}e@=J!zG(-SFxRoaR6~eS- z>b!X|$|Z971=u1iIKWPxRbSb!Upv9yAD#gLpgC5u;o4}(If5cLov>>83D0@OxX{G~ zFH%3{P<`OVaMsK7b!4rhNAh9+x`eJg`IWs$yBvCK-5ZBlIU`O8la~XTJ1bXPlwSaZdweRmwW!CRV&!VsGqK^DNy)TXA-#b*~vdo+5tm z-(Cu^^80b3TaQdr4~hcfO$|Lgjt7zRE|So|y0p>JRA73^hGy1{zjOz` zo4cDVRdP8~9jSZ(sSc>~)%}SUAcL;F!>Rq|P2=JfpKZ355%L^JC%Xuzsz~U5MoU1} zb0+%zs@CSb-nkT%Ny`-oG?XQsFnfb-Jm6|-aXs#$ zrjMcZT#Jtn4L!uJFNJq-l`cIb{kaFUAOlu;rLTp$cFKC;7tjFV2mEvm`;S}r`F(4Y zJ*U6-DcII1K+7VxR)I6ta1m%Y>Texxsh{tTvo<8^x|{M0zG+s%w48b!F3+6!?*QXp z-rKuYLj_TB{(xMA_saoV$w%`6I>}0Ma*kzoX||nQ9vBNx66(y?G@d((^f%Y-6RqRh z>t$8r*#?QS+G|t;*uy_!qesBI5f`QqB1Y@2Dn`NE#H`htwY`#+^v|rnK85A4WGW!4 zYYBUrT=y(W^_t#JZ3r^7vP7)eMOjRJ3WWO$oM@G6zk9&x^yk;~51;nO9{|L$vbUs- z16En+81UC6{AyhbRPfio@%#Y23$D%6UjUZ=(G7&e|6$&*%kJ+K2o%LK2k?Q)?kic- z$Z6ONKQhceUf`b!b5TXoh) zWJgtXnuto9pedVcu|1}JkT**+i?QN|L%B7MHKBseTO4@ero6KfJe2@{uDbf}dg|h9 z>dng#9>}9bTix2JJ@=vlgMwl>&^UHxjsJ&j{Jf$6l_>vwPqgB#c~a_@qhdlxONx2DnJOb-jn-r$=yuto}ewx=4?X?D(bTbfZWZGKS& zMHZ(A)jL#+0CbDxO>cB)QZv9IG#Q6aS@6sCxk|tTk=6|cfSb=MF(oR~vEA}sX09tX zteePHN+60j5d?UZk4VViy_|Xg zAuM5(rO@IE6$OobgCHr{?(qP$ON>QR3EU+a(8$}B*_OQ9xT3CsZRR~=9fM&h6_a{r zI}N5lq-kbKv_u2l#p?!TTD!k@>@meoEh-+37Sow7m!BAWT#&3CTzHf5yO3`vV!h*86!fv_jOLMK2 z4*f?_R$#>O&UW*)HjK<%%GUTz!PNU|Z-<5t8@&Nsy_lgKm^=Lw{{2^{^oM^^#-@r2 z4GEC_!-JK(V2_n(2;ZmaeyNbf1bLS>1PLIO{@gH0`r=9ArH5mpRo+dY(`O^KCSJjW!q*w@l5F!c|_V~l|>Yn4EH+=BDZWvk_6OyNrQ7tS+s40 z&)h5VzjV`WLG!SZctIk9t1s?>Q%XcP8W?Y55cBg-Tv3u&u;vge8_t}3y46*G>#B~T zbzDyz4pLqE2F=_&Ae6&o)Dx`9-!8&WHb9Swayp$oh1I?%6rh+ZfLIumCF8>s(i{5D z_-vx1k5TEcz{DFG@15cN&%^r@Nw@t380u zq;e!!Vc8+4e_wa#G*&a4O}ei?C|%1wor}FHRI#@Gj&A}pa&``{s=TTmU|&Iw%>qK z&*sX(w}$qzO!UiBvjy1tzJ|kOEeQ|#CJKbr z!^RTcPQG{Y)pdF3P!{lW7C_29?nlFuT^TEw3w$|6UZ>FJT&z!hT!6X3h{dLOz#MR&lS3#_dfw;TEv8P8LV4uGrlUK5@hwf z^1~umq8hu3p@Zg?tdmfIuc@%;!=99Q8P*)dnvS&E5ikT_>S@ko;p!rbiYn zLBJva=N6#RH&-q21Iq&nphm_{uCX8x*|dIuTFCQKv96)6&{FgQdOvVf5I56;aNaza zMTYG|GTX)MXL9FC__j)33-+&Ta7StpH+&8F>d^JcO(g&kR$;W~{-w6mbK?atmGwp6 zl3TC8<1E`#-NO2USGn&QRey;7N%#Ga{{Hg{A_V&3Plpdw7LvduGAAjHaI1w>libT} z%5UTgr~N*dy_#inWU*}l3L4Vf-W_8jG}m)t{7Y|fjW6zY}f1SBrX z&}G{QIwxQCc-kCT!f25^*(_R#^Avd|+mXq}fnh0xCEBm*UbjO(HM*bMit+2c>VdmH z&eW&2-`mUJzxLTy(5l;V4`A|r7eAE^c60F>HJ&LQXddlsjq=Ma>t=jbU0b_o2(?->0U$am56VrB_HTf!OYF~4Rp$F=QEZN_0r%}+wC>fDw? zE07Sexg=ot=6m8B%RsmigjH)rn2NO#5CYXdXJ$H1yS>0|&Tf|M?cAr&bZa;51}q&A za!Y+p&f6Oha4t|u~SX}7bG*gx;!zfYI0{`DJmR6~Pdh5N6vZz`o* z?^RzrgS6+W&0jsA-y~D3)5)#NpVGXUWvck_$9TvfRFx z%!@G%e6pt?2t!E8*R(rxZ4=|27cAWHwW` zuhX!5^l55xE!3~_y^0hCf}xO4F&yCf2&?;L9&a$@I^|S|`*E=`gpNOnK2>8+e&$%Q z>(`VX#3N%onl#OIi?RrSqgg_Eveoh~v~1wf{N$kOLr4K?Hup`rJK%=p0Y}|%qR*34 zpi*K9tuwkxmCxt)(GyQo%Jg#@`SW0z$Tkl)E-c>C&G=9tnJ%iT&iRR1{|`PW{WlDL zCBHud6T@$qvF=sU^ZRo3z}yrwyr!3=7Yc)3Z)d*DI+T^Kngbm=V!$FBqdbeaPc|b6 z6ES!y0WkCXqYhVkqQy6*Dh0lFOU2q8uu8kR7GShQ@k;$Y%P|xYDr2X|$MAyYhu}gZ z$BCxv2>TIsW*y^gfvofM;_NUH#ZjVCt};({)^)zUN|gm^pVH>%3oD5!cqyeNB$&Ob z_5+w{%D-X`f5wep{&jK%*xe3axyLB@Q}@)`EdNP72@mrQC znMRX9Qf>XJ?ejR|V|tB-^bWUR;B^?KZe0p0<6?57uS22OF7vt{yLDI$b&XE@h_B$x zSHhO$8_I|=09XH>+UpnLpe#+8J+D!ow>rh@1|Y;POJBkjQUbZvx$x4wb{FqxMjWo} z;x@Azv`*$ZhQ8CRu60wUH?2zr8xI|f9yaP!b9e-OeH}nR;1qHC5CB5iB-0er>xA-c zm3<=bv*&;Qv#$Q*g8kFy_Pqlrk@yJz_;1l`G2_kK%Qn*=N7hXRS!=xjYudWvK*G%I!8c(Hf5=Jn(9{uU`raGbfZ|w13+2C0dR5O)EHDb?%QE^$mr`Pb4ChG1}}5@pnQ03t{f-_{2DX1z&vM)S00ir^s1B*5M_1+4L&{tco=>E50A6LBo&EYzFM z{Z?HXPxXjAhzZvi&M^US23!C}KCsL8?feSg4w|KyPd%pavW*=sQkjZDMwSTn0d=Wg zb8oEBkdS?Ux8!IGHSKD{Rd;;1OXEg|0I1{b-fVvG*70`9F2d+WKA)Su@t-c`CfD)(6I0jJDZ@v`SQ_+MWBcUZ9zZP zDW?D-aG;u;zsapmpyWzw<@kktQ$6gF!nzu}?W|jAf!PhSXysz_H;%iz6SQz zvNOvTpoe!;qS6g&G|{O!ns>JsPo(NNDbG+}|;s&+)dGL|5 z_S@DLav1yM2F-RD2hj3y54i{ZaNdXi7?OvB*m+@^M9GjG>O8DFP(Y~h(au4<5e=%;#fv46EzOw zqyb*Hx8|rPs`C? zTL0rGqXJ|{43%YD579S%dEdT`)OMQy%?zmH`+k5^{1mEf)R-Am|NEi*dyDyjb&YK4 zN2mR3f?q!1jSsDFQ&Zz9a$<-cuSd-03y{KX5mUWomM1vy{jt4jFg#TaRa zGPU(p>nv}4)ToNF7%k7`&o!zdI8@a9<(K~Ip=jZ)-v=FteB3N{-CgJ|75DgGob^9r z;ibSnPbl}iuyjT8GbWO&4xqpI1pgH9{&B>jV$|<|<=Esb9XP)n`v2}BHohpZ-1+Z6 z`ai%ie;@Dva5#Thd!R3_T?PvTUo1t^W zE-rKR_vvuHVJnki$n0Qx)W5h8O8p)c)OI@t^ET~$`YqOP`n+3P7?&QFwWc1X9!_TT z-AKfC%4Ygj;rhDak>Zhjn(&bX*SJ;?ru4i2m!Ad6clR9ZU-aLN{tY|o|NiIO$KP%^ z?0)XI`G0(RIPmnp|N7r2|9^J^e_P$(H}3z%S^e#8{`T{K$GHES6Zrq^X+?AEZGuUu zui;Vs^7A3NHL1#{cdF%*=b*|IY2*2s>i-b-mQiiCTi0lDhfs>NSb!Fa6pFh$6e;dn zpcD%d+=3U16$%tD#oZI!3KS?%+#$HT6XZ*u_dMU;=e*C^dypUZxCeuTJJ+?=TyxEN zt%rLAt)SmUX;G4(rCeX!vS~bD$H{XE)c^V-2cpE38V6!U8#Dg>4hjM2WMy;gmjMDV z8HFcn3|SjCs&_bTca8W@l$NTvJ`Axq@w-?L&;wvi&a^6HfGx=dEghwon2s*F7lM;x>JtkwL^7=1ib{qA$M?5T1P z&91w*Dqp!tPu*hR$EdaM5Y55H0w-H`e%_L8g9BeZioFNmw4lG(S%%-gKf8atM*hby z6MbaSNzAccN-jDv;G+RKRCE|LKRkC9gZ9yCCij0y)_ELZgtyVRTyqKn)H+z)`^K0( zV2Sh&Z!+|@{uihyar0aPVss-?KF|91qJiLjk{|@jm1wtmwwoNz2k5yUh+9l{36{Qz zzeO3?7|sxdH+q%{xSfSGA9s1yGz@Sslh;WMm9>4>J|g=l;ds_O;W(I{V3kFf$v$^M z^*C1nO!6}$LDl)Yt!lR9#AtbWc&`=})PK%Iu<(I{uV>JdAv`uCu_Cki?R_^}B^h49 ze_e*p0lX-JnsO93qTTTX}$-!>nmwTUI7peKGySH#y10KogfJz52(V;OMashD+$_`r~HyGq|AtH(JSy ztp8G{u#2ERWp8G$>HXJ}lt7Jtd?kNwHpCMXKPi9R5*~w-UOuEP0kF|j6$*8N+ywj4 zBqW-U=A`4kz!i$jubBTLua^GVFFaQ8f}?Rpx>xmQ5w}gS&OPEV;9YV)B2=A|%=zT( zsUWpQT1S12<&yaf%rfAoKb9TZP)HLI6>&QECfDqE#oog0jRT_jwCHO`>+%C%9U{yX zt@qvtbEsi_4{Im?!u81LKpd*__n!Oz3s(SY6rrE8z0r05s?p%hOplh;AF2ZSPNIda zCN>sOiAhI4PnPIulsg$n&+-*McA>RqS5B-58&1+rbN9k{>*Z>l5cvX6X+Vf{t)4I0 zTNc?lnf)9+>h#MOvenm99WA`pN`(0p>R|*fGJ0E+ZcI8-t8j0mQR3^YU+dWPM!(r4 zrbLg?XYv=yoL;kkQy|JpG3J-`tz%7;0m8H@qp(3E^U0-!@>ZUrw|r(Z$!(Mjb9D>9 zzH{a@p?G;Qp2}?*V3DjuQ@FsNHqD-zhs; z$a1y%nmMOK5y7WK+Q;g#CFr$4%6oS8&aG_MNWgQJ>)LtVv>JKfbr*;3MJZ!6b4=gD z{`-dIZ;w4hov`55I^qnSbaTPK2v(AoOw&>MQx!=8hKxCw9aUZxl z_RhJ{|I9Mmyt-k<53$(IlwK5*x+P(&ydx04P@Md= zyr7h&UX?9Q5;3#K6)|hirdOlQ$fjqrxL6@oC4t)TibV(!i+c{_am7sU%x7N&a-U7# zBW4+0)WR|4d^gx?{1IY@^=coKhBKEwea2yVgZl&k7rh!eEGKjTY`-#U8f?Ca$>dlP z^{LVQZ8azCzEbPqLr|RbSu$1XtSpN$9~5oaXdWJk=J9i0J8eD9Mx#FX0{-Y?Kg)G( ztb{umdtMzeUsOBVvgGW1@Rp1ke^4 zX0_(&x4Tlr_^Jg6&SP_AI7m?7NHUlJ;C{D1>*Nx**+@Q!O$!oorrou*Z~kKS>+Ppi z>=d6XKc#T^?Rq^(v#*i9T5r!LhUH+G{`tRwJ0qk>igKa}bje{h%y|^#Capd2BtFP1 zNLUNq{<$p%X31;7$E|5t>e}$WvzLMaHHgdQLdmOaNr3w`@5Ta6PfM3R1zMot1y$T& z6Co~UP~^t&D^gxwigY1*oINH?sVT>W@8vXK^WJ?E>4`=m1jP3caGWPN_z)?2P}{da zEx$jRSQbJ}#>F4XxpV10*)0k5_$?wE`Up>5{4JKiC6$N;mCSF|WnT!j)_f{N6Vpf$ zeuR1%ZGqvU9CVRaD-d!us~LT04p^v{j~tEot*T&m2*K zYU$8hdpxu%N^SeVQ#>h@bbhO-4Lku5rRqZ`GukDcK)G2qmFn}WH`q+@&RPSka1syd zxG@&?qx9YQtb%3xD62n_8mNIP9&HLdyyxmmiv*}T)v+f19v=Tx{qBzNYmG}ygAUQx z);IMBf-h-B-RfciSaZPx38cMWm_Mtr>rO#$z9<*zZJF+@xJh8Dn%JYufa<(YPQRV( z*JP;hvliCOJM5T+`jEq1=^}T*HQ<)W#dB-MNO7B?+gG|pSDSYz3DI-p=#mh07nqzr zglhgE&SIi5Q?_bbOS`YE{GD0QmF29)>N~8dlJc_MRI3TzI&XVn1LH*;u|khKaR@KR zKr|s~a|u~Qr17PSgdVuo<>%@FW{%R85V1zPB>Of$Vz0k>c1p)RSQU75uCYF* z6+5+T$z*ji8r`Gv__7`VSfPSQOp1f)Pfn(YwN;xHWl^^o^zW5R(3V9Nf z7$xKG=Xv30TCb?u|c^P^2zJIXNh**8C{xMOX0_cW0n)9tK)^4^$J%|%utMzQ* zeS$k4n*UHBr6M_XV#{i=w|P|e>)-D$YitM6ZCn}mA7hqqnuVg+KD4)=*?B;DZ8L7C z1edy^QPJvjK<}rv^_m06q^FFnHA-gI9X0oMb-S$loPVpXGaVT5EoLOFu+hn~CS+&~&tQ}_vY!)5UD69PR( zvdx#z!qr#X+SE=7-GunDhlos85Byizl2fmt0hwE*AQ4yP(>PQ?0kZQcH_N5iRHq-b z_j6(G2m6RwO3wTTp;jg&qJ($?0)yvz+tm1{R_9q_yb+6pt;{NhQHqK)t1Xa?MnaFu zd&_&SDLtEq)~ABK&7rS-+XtYEgl$^+#)cD|mzppW1O5i(i3wb0_2b#{ARE@WU;%=x zsv-hxAJBs)R09Vo9fNmt{MuiJAS)8w5CnFb6508%EKoLo;Q9Jh>RCTID z=}ej=3R1CjHFhr#KRPBOg@e8Bm=cEE?{{8FYA#8ch3+E!yon~hTS{jkek5ZxXew8Np<3jFN|%m3AlMh!^4#tI40yYC3r zO~aB$#-pGMKdT4{r7=&OH4yD>hg0Uh#hi{-PD#QTruHY?LMe76C@RTK>7>g!ExEIrbcxl>3_yw4^d?GYiS-j2uib82+;0JscStmh zS>YXUK`(E*@!w%S^XO^K{sj#f0^7~91+Vrw>_{zh#B?duM)@@$GEA*18yC=VVGzle zm|>190^?mk(wmX>=&Vn6F@}bK8_}!f!yfZqQ>yS2z%qfBZhVQ4KNA4+$DeJ$`J1vL zqFXSsRdpP4B)oXvtxXkv4#)3UyW9C3+%c`!o6=CyvJwrN?J*P9_~lpJsVKnEfPs1M z+y{1sKWmFA@s+_HCsr-7`kZedeWKsy+pnT@VlUIKmXNv!02SZyIT zjPDxxD5$_r4jF7W*zTr5Csp{n&%%eTjFjgsYH^$FYaP^QhVs*xLxK+Hr#j@RY&;H% zh6X>evMjFpZ}mFk?G-;63+QY6v^qzi!l6hPBW(@~p@Y}D+YPL(I*>8mbzF~2b$eqQ zRUE6!RtEk)xG$kZM69Z}Vx$wYCLZY+$JaVEJqq&PMUA+*UlBkKz!azu&|DiDb1QR1 zX_;d6sQ>dfXB=;U7#BDw;d2sGzM8;a;-I{)F3x+7dHL1Wvk|qhpRX$J%zh-if85#L zG&@ODbDr3J)OPr!cjoccqIm|Mb7}kd(=KcFOaETjP4$k88X}R|dpYq!C-wr>MiAZT z5NPryYU}PdFY^!Q>7lME(*x0fI9&2=%Zxvv*~aJF#)F3B<}2@qO}9rf)bj&UpsUV@ zdmh_w(sfGm%w%6wX=0o$OGQPIZ)C5}A@l(iT}dU!S@qJ?^XEP{0t~`BO~( zWv!sva=$N^&!}H^2X6EVVe3|CC>DLUT}-c%)U*>Tw`kF1F_CWf!rUJpb&uw6JAzD848hhv)Hm7hDM~cPw!!>Z~^WI;eG^01a{f&6N0X@{uy# zn6s$vegQ#L0n2ti=Nc{5@#-R$63tyi6~`Blw!bXRe~dU^pJPyE*sXcnoA!R_Eo@Uy z5;%Vo8KNK`2T4y}S>x0t{?r5{e?568UhV_z+qF8 z^lQfpHg&hA>P%W zk(>OgQF?7^(EWh6eI1VJYF$JOLH(=^wZ>o@*vY3NaKgrl!U@FTsacbXqAccSOyVm3 z3H742hwOgn_%$9?2^vOgmxMjkt&33eU4;LENKQ_jUe9`RqVjP@M}3wo^|$3m?`gGy zvia3w?5)Ab7`FzM z{~=)i2~nIe)DeYWF7W(QXTWx z#6dtxkiCQf10~>#xkS}&n)ui85+u3y*-38boH@AqeOKhF5MMcC#o|N{)0ZtP-v0hN z-SO9s4irD1ayfi;(^)2_vOvX1e;Rjzv;5?zAODB)DM-2XwZ+M~CjT|;mqhy1H)m}x z1KD?=?BI5M+Z6wiM71F;6;u4L>niIZ9XAzOjU#iLv!s!f=HmnXltr^ZN1xpSoD=C` zcCm$pW<;Q3RY>UjCf!)~#l#PKVP|irFZo!SgGs1oAuk_ohH^WMZAx2vcRK^#o$pQd z7gQ+FVs)TUZNV$i_*;?O!zUrI26EXK_{@{=^SXlZP=m+ikX6MQT2a-Wmv>3NwU4CW zT>B%N>&F;_?VAj=M4VA=zn?e*yoHb>hL0l(09x&Rt4Ew3;$>^oK;URW-Z2@LSZ{gt3R?8j(A{l97PfW4Hh^ zC31riAxJuFyQO#7#q~5b2!Si$Hq(Aiwk^F%4PfRUue|^zcO%biW{r_F1@1^M5pR!( z5+c^!47z+C0$qXSUtyQC#h1_*Ro7Q4n`0zqTg1?gi>{r zZ?i@9EvcPQEcBIAfx@=%MvKqB;S@8C7!FxO!VjI7t9$a5LPf?{@e`yhxIV3RtcRDu z?`Q4xc&|7^r-|^LiR@^r+gk_@qWKTzo%r;d%`%^COWh$xWyHnzJjg`?Np{;WBh2En zduMRh(tBU(WCeHB@3$RUbe>A zx>p=5ar^}#|KmzN0w`RfHV_U6P->wk?172znNf5g+e|JpFm4Wm+J z1!<%;gIbtpXP0}z&a6Qo$?*yeC7KpGeJUHW9ok%OpF@bM%c}C-C*l4qSDmjeIy~rf zb3bQT-#FvzUG7bevhvh8m_^pAD72j2PVK<+5T~bCp(i(@4jHn(8)ex!wRjc8`HbZhGTqvvDfFFZ%^9X8R)Z#kemmCWqt!XG1763dCtQoRf3QlT9DrlpjiHpmPNqSBe11BLDHcp~?^)@$D!n!qk?)$?kJPk74TG8U@$&6t#KE{otgQ~j7DAuBy~9-v%JFsV~2<@YnG)zyfV zu59PUxpc_f-K1kkthtOD^0taxb8RIMAbNW(0_N`F^-YK@tSWA?DT+5DkXk5|F`SU8D4ngWu{7>+zS$S_AIMzyKO2 znysgKOCv|3s5!lq6N5ymNovJ`gumoVcJmB(?4a%qpZ;s%$cH}KBEim=;%j*AKQ5AR zLR=K;U8KH&gmS)kA)fpm>tw5LL6ZGC=by*EsE&6SQ-Y8`KYn=Qdz+g9q_|;PbPi-j zlK?&I-s0bKm2T>Q(2i>i)P|=!G{N4GdYoilnJA(47RL_?Z*e;)SGd4UKTC?Bs2G?q zmJbG6X<@c?lXa+qxvH|X017s#ombFyIGxcOe+opheso9P0rfNQD50_Nx+y;*G7zE~ zRq(7ElZwgS)IdOEY4&``_Jzva2L{eQhpyJxOCINBc>tsXgiWqNqVTQJyr}?r5MY$@ zSSrrqhJ|xXPF2TPlJ{J*?7}K)hR4e@->D=yz(+5r3%~(C1x8V#GCx;j{<}6GZ^|(N z$$4{G(Ka4%^?fS}ER$d_`uKzd`_V>mFjbD*vhR+J-q5e6yN-vmE|$z6NPh~J^3y+1 z51@uRv`f5^aVUMh`fikWAt^YGYM$#s_SVFo zV;PB{h0cSOxSBc zmmheS8ut)O3buCg%QvP3Y3nVAryNAb-l{E`22k^d^P$U*1C@;R+fDvMCHIb!Js8$0 z2l)X);xcV{GPc&p@-BcSg$V{{9pyv&68@4^D>3XfSD)yp(2h{3m4dzy_&7{`&~qy5 z_bKaSyz=nr`_AizSHkG+0cexy=M*fcMjh z0gmhLyA6mo;=Th%kGdwFYze|`Xy(*-@icjEf9M#zBH?p4*m2+T>psVZ)A*BMM=8-# zY4~je)RJMC^8Upih$KJ)ip+=;;?}!ydnoT%{wWSWxgO-^A8-f5GIDZa^;!A)e8H}= z1}f-cYQ00ImPwb|m(Oi>Y#-_^?r1uFjga#Gv{{LMJfTtO!Vl+qqsr~wyPiHX`5Ud;37O$nBBdxJ zo?o~^^FB2)w>|8>J8ZG7ya;Nj!z{u2mKhB~H>#1x&$Qn$ zpq3Bw9RZ`jdi4WADs*w5z%o9cEbas;4*Vr4u#%nUojM7GEkAcr-6^&eY_5<+y3oT)HeHZRQbeIV)7N6r>Qr0b6eH5BMxFk^1PQIFbr zqcaA>cw;->D3IfCttHr4<+%QDCLs#R@vR?*nW^IkT@$)gg^zUh( zHA<6MHx!FPU2O*^MXPm8K?)_g2Yw3LJ4uav^Q}EQRG}0k+s?!j{ba|)H60!Ay7P@U zjDj^SO0fW@yZnpTQp+Z%*0C4nQ8@826LQqOf)NjRxd97Boy144bbxB=$LS8int!&e z0xRl;P~Zh!jL%+A;`Z$K8NN}h&SMge`GL~uT1`gV#w$t9B#L-Zu{NJOfsTmn99!{O zAqPq=K4i$Qpe=BO^4qd>jkxOiq;=isVTmD#sFlgcyBqI7v%#;A;csJsuhqTgD-MMB zh;il8GJTQFoeBZMsWp$o!)(Vkobo9(s^D7u&0sv(0T(I>NbEI9VWL%pPuFLR(^QM0 zaJ!SWU(afWVDfC_J$0Lcd!PA1hzFr=R216uP|o)rv8!R90* z-{ywM2rNvy3t-;h3e69q)yp# zQw;bya_jJ!DwpmOMr(6?qg}c?i#A@Nk!Mu!4o)M%-XIsOpj~^+D?*wDBRGUVt!KR9tOd#52Zoz=q;XUfPn`cQGVk&^Q$ z#;%S_b{$F9ipU9S|+rGjJ z9+zy?!M1TgPJVWcGGLqlV#@wcrgK8&^AoIZa_()7OY0R?Tp2>krwVDE+z0PZw)Dgk zu(FpK_4|}{`}m4U`-V?NvnVtjulu7y=3T%up`L7Ys`=A$u#sxyh$bf&rHXxp8t*$& z-sWv>yCe?AZoIH8_xVLNvpFW!48rNqFWxGk#;+J`DLt%YTfBvN`I$sdV4FYu9@85@ z=I6ikvA11KnMD3xgGYB}o3pb1l``#?PfGEGu69tQa{9SFc(v-T$^aa0CAo#I0dIdBw-KES?2 zZ&vI15z38j9?B1LHy^zo5xxW;`4=GBweQ5e%QSZl<*%Y6_&>YrC;dmb1@B~(aGt+* zy?q&ncd93W&uib~qIol8Xc&>Ut1F-~gIqfjE`;=g8A~Vc`zzI#*(?_%)eC$-u4xr0 z@RPAkFktE|OIUQxU^U^d)Csckr$NhhF=#^S))(?A1bkW^JP%p$D-Dk0T+-kL zmlvR@uA(3p$hS>{_lH&Hh(c9>Eo0$rD)GcMIzJ0yO_*eX~8 z(gC=<^bj_Dk%@&IU>7ahHY`gypjC={Y>-{s*kxU=E=EHxgKg;mU(Sl$5yB^aY4n(h z!+_~kP{ivtN?zSoDxm?bfaCf}u_Xulv`vd=CBq#NH|3qnNF3bXHD$a(N;P`}TMGSd z6zw9rPp_)@?=7JJb7^h z-(8vl9jieBb^n}}+w{QelHZAiD>r|C@f!sCv|x)R{Z3BSrr}Orq^PTz0Q2iiwyMxV z9f$O|B0fq%O7a1Wiw#0e_2Yh&CvE6HM=agl{=+;lO?6CrQgp}>y;C`N9C0x-#C5Yk zbF!YmPXWc<-9mGQBb6Whu-j>&-^1Yb` zpIBeIyXZFEd}a!lFa3Bvz0n}XZ{!h%hkU@JyeI-?i<9}8Grb8can}}GzXB1$){7sI ziL8^L0JOxsMj<@xdblzPs5f6IW+@KrV~%kZ+83(Ga@^0g)}MPm!hImTc5iqhN2C>{89*+6aoK^Y-H>I~M^?>KR z#LWkCFPUl5J+Bd*wv> z<3N8K;A+RMGhl&CwTc12K%cX)fj@njg}vklx9ySY zYv`f*IX1f$M`06g2s=Q!#n&dSa;Jeb2tkov3MkvT!Ch0`1r`zPmRm11setFFDD|mS zU+LGp1F;&B`gQaE?Zh!JD2!xgtHtx#NwKk7 zJy&jAH^{zq!U+_6?p(U+M%3qDJ z2qp-k!qJ{e)?;6szD>n|OS86aM3x;TAsz=*T*JwjzuI1^#l>1_6}d0h1zU) zACo&qA_JZk5TAk4(8JzJYcsq$sgKS<0*c*qMsD1Zl4 ztX8ZB`ylGRy6$3GW5A60o?*esemB>0X+g$s=pHy>ix~GB+$0OUU2j5 zn*CLa6X%wYootS8Veqg*M;N5jrj?4W%V*&g;OP%xAU?%Iho6fc;%%||VxV99qpjd6 zo}}1-EXT&H0>X4T`naewJq#gvwJb%l;2Z`s!`-Ci5TcqShtH$0 zI>~=ZKL3sESk<&$7P^|ZD76N+Tgyg>Q}{yB_Fv*M(eOJ{O-hE`tPQHH7jcBGmOV8> z@_yNH+CSy+?Fr^H!>ie^l`<78C7@f>yNi^#fE0Sp*)5t!sw^phEx&Fet^%0nUYW0kAo|kM zralWV(U_5SwCvrPG7TJ7EE2!YYbvAcd(ykLDqlWNOv58WqHYj);OX-jpv0|QP3i2n_7<(%s(AU z0;Yw&e-{gc98zx@{#bE6@||P4_>a~-db&#gJMWoF^I)$TZ$0bpzSk$#d~|e@N7aY> z-m2djB%F=h=2zZEp*8>$mxCs4eo$%V*zGp%487%3*#2F@$aaLiX7C|Z=iy}vzdq1I zW?@IFJD#M^mSuTmnHE58?5`;3r9D=7L-fx45orwY!Nbt5f&_O50p+&4W?aRGoM|l! zl$k%eEu&?^)^MP!%&=pxV2@pz=8>Jt54>ki>1|l*L%f@6Qi&}F;6plEB^-S~WM0Q< zBR#U+^=~!0Es>(oeA^zDS=qNLoN#=3zFgFn^K;t4N5?UK;e!%hSmKxIg?s?>7x=hc z>sS@)&im`U&8Q7^hL_JSpV{Cxo1G)^#)g{!MyEr5a3pF_cl6+gXZ%u$`cOZo${exX zI5N`BN0s$^=TuqKxm35`0c{K{(7?Gev|$^*9CQM&gzWyIY0HBg`{G#i5mC!@yWie~O7U(Nt8R+x0=tK5 zRPm|hLnbuUbyt|QXJsDMa?=BMeitdxJ@#UbsX;tO_S)yj{-f?4M2B>0J9dWPtUT$& z*nz&XEO6TCx!ZMJec zoO|6c+QRuM2*ShID<0lWc7?9b*$AgyO9aH-oP8V?4Xy$0duon_HilCFGO4kucsgFJ zR~@JIN^?4mz3xvnBti`f!*+Bz#6m~Q;4_(&JntAweyW>db_W3-MBlGY5Lktlu~66t zY)q0du7B|`5B$nVQY6hDTE{OT3lz9?FmPH`nR<=ycX3s_`VFf$gpL#nW{a zza(xSGB1g-LGvRrsRF&85~Nh~Fx8sW*`w*^+1p?URnP)&YGa5fdt|b8z+;jALg7(c@7@p)2oQ#4e ztn$$^Tlhm4(Su)|{^H6P$xLY>pRhjlTm~#(- z7Wu%kbyTAdkG3Fs7fv^B3L?e~JajG;QC`0%2xR3u;JSRd9=Se+D4_4LV%PBtMtc@R zU^Id>#!!Ig02XSdjc@DsMPG)VZjAEOcR!cxjs@WMZ~;r@i;W^)oNoDX){n^0(l|%< z&}AAnI*0E~`{+fI{(7ar@pRW;;1Y+uRRFrogV#ZpZp2#1{Vc`A9`dATGVfSCmFuaL zYHmhGwPê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�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 literal 0 HcmV?d00001 From 768d521c794b3969efd69a84587ec8e5762c0d29 Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 09:22:06 +0200 Subject: [PATCH 003/279] feat: add publish:gitlab project settings support Signed-off-by: Ilya Katlinski --- .../builtin/publish/gitlab.examples.ts | 21 ++++++++++ .../actions/builtin/publish/gitlab.test.ts | 41 +++++++++++++++++++ .../actions/builtin/publish/gitlab.ts | 15 ++++++- 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts index ac259866e3..c010042701 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts @@ -68,4 +68,25 @@ export const examples: TemplateExample[] = [ ], }), }, + { + description: 'Initializes a git repository with additional settings.', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + settings: { + ci_config_path: '.gitlab-ci.yml', + visibility: 'public', + initialize_with_readme: true, + default_branch: 'main', + }, + }, + }, + ], + }), + }, ]; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts index 994d1c580a..53b525a6bf 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts @@ -77,6 +77,26 @@ describe('publish:gitlab', () => { input: { repoUrl: 'gitlab.com?repo=repo&owner=owner', repoVisibility: 'private' as const, + settings: { + ci_config_path: '.gitlab-ci.yml', + }, + }, + workspacePath: 'lol', + logger: getVoidLogger(), + logStream: new PassThrough(), + output: jest.fn(), + createTemporaryDirectory: jest.fn(), + }; + const mockContextWithOptions = { + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + topics: ['topic'], + settings: { + ci_config_path: '.gitlab-ci.yml', + visibility: 'internal', + topics: ['topic1', 'topic2'], + }, }, workspacePath: 'lol', logger: getVoidLogger(), @@ -162,6 +182,7 @@ describe('publish:gitlab', () => { namespace_id: 1234, name: 'repo', visibility: 'private', + ci_config_path: '.gitlab-ci.yml', }); }); @@ -179,6 +200,26 @@ describe('publish:gitlab', () => { namespace_id: 12345, name: 'repo', visibility: 'private', + ci_config_path: '.gitlab-ci.yml', + }); + }); + + it('should call the correct Gitlab APIs when using project options with override of visibility and topics', async () => { + mockGitlabClient.Users.current.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Projects.create.mockResolvedValue({ + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContextWithOptions); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespace_id: 1234, + name: 'repo', + visibility: 'internal', + topics: ['topic1', 'topic2'], + ci_config_path: '.gitlab-ci.yml', }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts index dbab7b11b8..302d006e05 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts @@ -38,6 +38,7 @@ export function createPublishGitlabAction(options: { return createTemplateAction<{ repoUrl: string; defaultBranch?: string; + /** @deprecated in favour of settings field */ repoVisibility?: 'private' | 'internal' | 'public'; sourcePath?: string; token?: string; @@ -45,7 +46,9 @@ export function createPublishGitlabAction(options: { gitAuthorName?: string; gitAuthorEmail?: string; setUserAsOwner?: boolean; + /** @deprecated in favour of settings field */ topics?: string[]; + settings?: Record; }>({ id: 'publish:gitlab', description: @@ -63,6 +66,7 @@ export function createPublishGitlabAction(options: { }, repoVisibility: { title: 'Repository Visibility', + description: `Sets the visibility of the repository. The default value is 'private'. (deprecated, use settings instead)`, type: 'string', enum: ['private', 'public', 'internal'], }, @@ -105,12 +109,19 @@ export function createPublishGitlabAction(options: { }, topics: { title: 'Topic labels', - description: 'Topic labels to apply on the repository.', + description: + 'Topic labels to apply on the repository. (deprecated, use settings instead)', type: 'array', items: { type: 'string', }, }, + settings: { + title: 'Project settings', + description: + 'Additional project settings, based on https://docs.gitlab.com/ee/api/projects.html#create-project attributes', + type: 'object', + }, }, }, output: { @@ -145,6 +156,7 @@ export function createPublishGitlabAction(options: { gitAuthorEmail, setUserAsOwner = false, topics = [], + settings = {}, } = ctx.input; const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); @@ -191,6 +203,7 @@ export function createPublishGitlabAction(options: { name: repo, visibility: repoVisibility, ...(topics.length ? { topics } : {}), + ...(Object.keys(settings).length ? { ...settings } : {}), }); // When setUserAsOwner is true the input token is expected to come from an unprivileged user GitLab From ec8c69d9c38665488bc9aafa5e0f5d5efe0a03e1 Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 10:13:59 +0200 Subject: [PATCH 004/279] feat: add publish:gitlab branches configuration support Signed-off-by: Ilya Katlinski --- .../src/scaffolder/actions/builtin/helpers.ts | 4 + .../builtin/publish/gitlab.examples.ts | 27 ++++++ .../actions/builtin/publish/gitlab.test.ts | 87 ++++++++++++++++++- .../actions/builtin/publish/gitlab.ts | 73 +++++++++++++++- 4 files changed, 187 insertions(+), 4 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts index 5ac92128ca..1ea3a13687 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts @@ -251,3 +251,7 @@ export function getGitCommitMessage( export function entityRefToName(name: string): string { return name.replace(/^.*[:/]/g, ''); } + +export function printGitlabError(error: any): string { + return JSON.stringify({ code: error.code, message: error.description }); +} diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts index c010042701..a2f5a20745 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts @@ -89,4 +89,31 @@ export const examples: TemplateExample[] = [ ], }), }, + { + description: 'Initializes a git repository with branches settings', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + branches: [ + { + name: 'dev', + create: true, + protected: true, + ref: 'master', + }, + { + name: 'master', + protected: true, + }, + ], + }, + }, + ], + }), + }, ]; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts index 53b525a6bf..59d05eb226 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts @@ -45,6 +45,12 @@ const mockGitlabClient = { ProjectMembers: { add: jest.fn(), }, + Branches: { + create: jest.fn(), + }, + ProtectedBranches: { + protect: jest.fn(), + }, }; jest.mock('@gitbeaker/node', () => ({ Gitlab: class { @@ -87,7 +93,7 @@ describe('publish:gitlab', () => { output: jest.fn(), createTemporaryDirectory: jest.fn(), }; - const mockContextWithOptions = { + const mockContextWithSettings = { input: { repoUrl: 'gitlab.com?repo=repo&owner=owner', repoVisibility: 'private' as const, @@ -104,6 +110,33 @@ describe('publish:gitlab', () => { output: jest.fn(), createTemporaryDirectory: jest.fn(), }; + const mockContextWithBranches = { + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + branches: [ + { + name: 'dev', + create: true, + ref: 'master', + protect: true, + }, + { + name: 'stage', + create: true, + }, + { + name: 'perf', + protect: true, + }, + ], + }, + workspacePath: 'lol', + logger: getVoidLogger(), + logStream: new PassThrough(), + output: jest.fn(), + createTemporaryDirectory: jest.fn(), + }; beforeEach(() => { jest.resetAllMocks(); @@ -166,6 +199,8 @@ describe('publish:gitlab', () => { name: 'bob', visibility: 'private', }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); }); it('should call the correct Gitlab APIs when the owner is an organization', async () => { @@ -184,6 +219,8 @@ describe('publish:gitlab', () => { visibility: 'private', ci_config_path: '.gitlab-ci.yml', }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); }); it('should call the correct Gitlab APIs when the owner is not an organization', async () => { @@ -202,16 +239,18 @@ describe('publish:gitlab', () => { visibility: 'private', ci_config_path: '.gitlab-ci.yml', }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); }); - it('should call the correct Gitlab APIs when using project options with override of visibility and topics', async () => { + it('should call the correct Gitlab APIs when using project settings with override of visibility and topics', async () => { mockGitlabClient.Users.current.mockResolvedValue({ id: 12345 }); mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); mockGitlabClient.Projects.create.mockResolvedValue({ http_url_to_repo: 'http://mockurl.git', }); - await action.handler(mockContextWithOptions); + await action.handler(mockContextWithSettings); expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ @@ -221,6 +260,48 @@ describe('publish:gitlab', () => { topics: ['topic1', 'topic2'], ci_config_path: '.gitlab-ci.yml', }); + expect(mockGitlabClient.Branches.create).not.toHaveBeenCalled(); + expect(mockGitlabClient.ProtectedBranches.protect).not.toHaveBeenCalled(); + }); + + it('should call the correct Gitlab APIs for branches and protectd branches when branch settings provided', async () => { + mockGitlabClient.Users.current.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 123456, + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContextWithBranches); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespace_id: 1234, + name: 'repo', + visibility: 'private', + }); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledTimes(2); + expect(mockGitlabClient.ProtectedBranches.protect).toHaveBeenCalledTimes(2); + + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 123456, + 'dev', + 'master', + ); + expect(mockGitlabClient.Branches.create).toHaveBeenCalledWith( + 123456, + 'stage', + 'master', + ); + + expect(mockGitlabClient.ProtectedBranches.protect).toHaveBeenCalledWith( + 123456, + 'dev', + ); + expect(mockGitlabClient.ProtectedBranches.protect).toHaveBeenCalledWith( + 123456, + 'perf', + ); }); it('should call initRepoAndPush with the correct values', async () => { diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts index 302d006e05..68205d05e9 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts @@ -18,7 +18,7 @@ import { InputError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; import { Gitlab } from '@gitbeaker/node'; -import { initRepoAndPush } from '../helpers'; +import { initRepoAndPush, printGitlabError } from '../helpers'; import { getRepoSourceDirectory, parseRepoUrl } from './util'; import { Config } from '@backstage/config'; import { examples } from './gitlab.examples'; @@ -49,6 +49,12 @@ export function createPublishGitlabAction(options: { /** @deprecated in favour of settings field */ topics?: string[]; settings?: Record; + branches?: Array<{ + name: string; + protect?: boolean; + create?: boolean; + ref?: string; + }>; }>({ id: 'publish:gitlab', description: @@ -122,6 +128,35 @@ export function createPublishGitlabAction(options: { 'Additional project settings, based on https://docs.gitlab.com/ee/api/projects.html#create-project attributes', type: 'object', }, + branches: { + title: 'Project branches settings', + type: 'array', + items: { + type: 'object', + required: ['name'], + properties: { + name: { + title: 'Branch name', + type: 'string', + }, + protect: { + title: 'Should branch be protected', + description: `Will mark branch as protected. The default value is 'false'`, + type: 'boolean', + }, + create: { + title: 'Should branch be created', + description: `If branch does not exist, it will be created from provided ref. The default value is 'false'`, + type: 'boolean', + }, + ref: { + title: 'Branch reference', + description: `Branch reference to create branch from. The default value is 'master'`, + type: 'string', + }, + }, + }, + }, }, }, output: { @@ -157,6 +192,7 @@ export function createPublishGitlabAction(options: { setUserAsOwner = false, topics = [], settings = {}, + branches = [], } = ctx.input; const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); @@ -247,6 +283,41 @@ export function createPublishGitlabAction(options: { gitAuthorInfo, }); + if (branches) { + for (const branch of branches) { + const { + name, + protect = false, + create = false, + ref = 'master', + } = branch; + + if (create) { + try { + await client.Branches.create(projectId, name, ref); + } catch (e) { + throw new InputError( + `Branch creation failed for ${name}. ${printGitlabError(e)}`, + ); + } + ctx.logger.info( + `Branch ${name} created for ${projectId} with ref ${ref}`, + ); + } + + if (protect) { + try { + await client.ProtectedBranches.protect(projectId, name); + } catch (e) { + throw new InputError( + `Branch protection failed for ${name}. ${printGitlabError(e)}`, + ); + } + ctx.logger.info(`Branch ${name} protected for ${projectId}`); + } + } + } + ctx.output('commitHash', commitResult?.commitHash); ctx.output('remoteUrl', remoteUrl); ctx.output('repoContentsUrl', repoContentsUrl); From 3e3bf5311e7cef01a5a2609c79c2a410833c3d3b Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 10:18:10 +0200 Subject: [PATCH 005/279] doc: generate api reports for scaffolder plugin Signed-off-by: Ilya Katlinski --- plugins/scaffolder-backend/api-report.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 17e13131cf..46960d4358 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -679,6 +679,15 @@ export function createPublishGitlabAction(options: { gitAuthorEmail?: string | undefined; setUserAsOwner?: boolean | undefined; topics?: string[] | undefined; + settings?: Record | undefined; + branches?: + | { + name: string; + protect?: boolean | undefined; + create?: boolean | undefined; + ref?: string | undefined; + }[] + | undefined; }, JsonObject >; From dea0aafda7f6aba3fe763bc99054af09744a157b Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 10:23:26 +0200 Subject: [PATCH 006/279] doc: update changeset and bumped minor version Signed-off-by: Ilya Katlinski --- .changeset/khaki-tools-tease.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/khaki-tools-tease.md diff --git a/.changeset/khaki-tools-tease.md b/.changeset/khaki-tools-tease.md new file mode 100644 index 0000000000..c066aaf6e0 --- /dev/null +++ b/.changeset/khaki-tools-tease.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Updated publish:gitlab action properties to support project and branches level configuration. +Project level configuration is based on the Gitlab Project Create API available options. Is is available via `settings` property. +Branch level configuration allow to create additional branches and make them protected. It is available via `branches` property. + +Marked existed properties `repoVisibility` and `topics` as deprecated, as they are covered by `settings` property. From d7b1d040e9ba86b864fc8c2979f585ef629cf3ad Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Fri, 15 Sep 2023 14:00:37 +0530 Subject: [PATCH 007/279] changeset fix Signed-off-by: Abhay-soni-developer --- .changeset/spicy-poets-sell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/spicy-poets-sell.md b/.changeset/spicy-poets-sell.md index 28ef965282..2f08c1bcf9 100644 --- a/.changeset/spicy-poets-sell.md +++ b/.changeset/spicy-poets-sell.md @@ -2,4 +2,4 @@ '@backstage/plugin-jenkins': minor --- -Extend EntityJenkinsContent to recieve columns as prop +Extend EntityJenkinsContent to receive columns as prop From 0f76f34081ae20b1711a72ad8d1aa94ca47e9cbb Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 12:15:56 +0200 Subject: [PATCH 008/279] feat: add publish:gitlab variables configuration support Signed-off-by: Ilya Katlinski --- .changeset/khaki-tools-tease.md | 8 +- plugins/scaffolder-backend/api-report.md | 12 +++ .../builtin/publish/gitlab.examples.ts | 29 +++++++ .../actions/builtin/publish/gitlab.test.ts | 55 ++++++++++++ .../actions/builtin/publish/gitlab.ts | 85 +++++++++++++++++++ 5 files changed, 186 insertions(+), 3 deletions(-) diff --git a/.changeset/khaki-tools-tease.md b/.changeset/khaki-tools-tease.md index c066aaf6e0..a133a881bb 100644 --- a/.changeset/khaki-tools-tease.md +++ b/.changeset/khaki-tools-tease.md @@ -2,8 +2,10 @@ '@backstage/plugin-scaffolder-backend': minor --- -Updated publish:gitlab action properties to support project and branches level configuration. -Project level configuration is based on the Gitlab Project Create API available options. Is is available via `settings` property. -Branch level configuration allow to create additional branches and make them protected. It is available via `branches` property. +Updated publish:gitlab action properties to support additional Gitlab project settings: + +- general project settings provided by gitlab project create API (new `settings` property) +- branch level settings to create additional branches and make them protected (new `branches` property) +- project level environment variables settings (new `variables` property) Marked existed properties `repoVisibility` and `topics` as deprecated, as they are covered by `settings` property. diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 46960d4358..dae0cd536b 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -688,6 +688,18 @@ export function createPublishGitlabAction(options: { ref?: string | undefined; }[] | undefined; + variables?: + | { + key: string; + value: string; + description?: string | undefined; + variable_type?: string | undefined; + protected?: boolean | undefined; + masked?: boolean | undefined; + raw?: boolean | undefined; + environment_scope?: string | undefined; + }[] + | undefined; }, JsonObject >; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts index a2f5a20745..52ced84ac8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.examples.ts @@ -116,4 +116,33 @@ export const examples: TemplateExample[] = [ ], }), }, + { + description: 'Initializes a git repository with environment variables', + example: yaml.stringify({ + steps: [ + { + id: 'publish', + action: 'publish:gitlab', + name: 'Publish to GitLab', + input: { + repoUrl: 'gitlab.com?repo=project_name&owner=group_name', + variables: [ + { + key: 'key1', + value: 'value1', + protected: true, + masked: false, + }, + { + key: 'key2', + value: 'value2', + protected: true, + masked: false, + }, + ], + }, + }, + ], + }), + }, ]; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts index 59d05eb226..4a6019a48e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts @@ -51,6 +51,9 @@ const mockGitlabClient = { ProtectedBranches: { protect: jest.fn(), }, + ProjectVariables: { + create: jest.fn(), + }, }; jest.mock('@gitbeaker/node', () => ({ Gitlab: class { @@ -137,6 +140,26 @@ describe('publish:gitlab', () => { output: jest.fn(), createTemporaryDirectory: jest.fn(), }; + const mockContextWithVariables = { + input: { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + repoVisibility: 'private' as const, + variables: [ + { + key: 'key', + value: 'value', + description: 'description', + protected: true, + masked: true, + }, + ], + }, + workspacePath: 'lol', + logger: getVoidLogger(), + logStream: new PassThrough(), + output: jest.fn(), + createTemporaryDirectory: jest.fn(), + }; beforeEach(() => { jest.resetAllMocks(); @@ -304,6 +327,38 @@ describe('publish:gitlab', () => { ); }); + it('should call the correct Gitlab APIs for variables when their configuration is provided', async () => { + mockGitlabClient.Users.current.mockResolvedValue({ id: 12345 }); + mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); + mockGitlabClient.Projects.create.mockResolvedValue({ + id: 123456, + http_url_to_repo: 'http://mockurl.git', + }); + + await action.handler(mockContextWithVariables); + + expect(mockGitlabClient.Namespaces.show).toHaveBeenCalledWith('owner'); + expect(mockGitlabClient.Projects.create).toHaveBeenCalledWith({ + namespace_id: 1234, + name: 'repo', + visibility: 'private', + }); + + expect(mockGitlabClient.ProjectVariables.create).toHaveBeenCalledWith( + 123456, + { + key: 'key', + value: 'value', + description: 'description', + variable_type: 'env_var', + protected: true, + masked: true, + raw: false, + environment_scope: '*', + }, + ); + }); + it('should call initRepoAndPush with the correct values', async () => { mockGitlabClient.Users.current.mockResolvedValue({ id: 12345 }); mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts index 68205d05e9..c715bffcd6 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts @@ -55,6 +55,16 @@ export function createPublishGitlabAction(options: { create?: boolean; ref?: string; }>; + variables?: Array<{ + key: string; + value: string; + description?: string; + variable_type?: string; + protected?: boolean; + masked?: boolean; + raw?: boolean; + environment_scope?: string; + }>; }>({ id: 'publish:gitlab', description: @@ -157,6 +167,55 @@ export function createPublishGitlabAction(options: { }, }, }, + variables: { + title: 'Project variables', + description: + 'Project variables settings based on Gitlab Project Environments API - https://docs.gitlab.com/ee/api/project_level_variables.html#create-a-variable', + type: 'array', + items: { + type: 'object', + required: ['key', 'value'], + properties: { + key: { + title: 'Variable key', + description: + 'The key of a variable; must have no more than 255 characters; only A-Z, a-z, 0-9, and _ are allowed', + type: 'string', + }, + value: { + title: 'Variable value', + description: 'The value of a variable', + type: 'string', + }, + description: { + title: 'Variable description', + description: `The description of the variable. The default value is 'null'`, + type: 'string', + }, + variable_type: { + title: 'Variable type', + description: `The type of a variable. The default value is 'env_var'`, + type: 'string', + enum: ['env_var', 'file'], + }, + protected: { + title: 'Variable protection', + description: `Whether the variable is protected. The default value is 'false'`, + type: 'boolean', + }, + raw: { + title: 'Variable raw', + description: `Whether the variable is in raw format. The default value is 'false'`, + type: 'boolean', + }, + environment_scope: { + title: 'Variable environment scope', + description: `The environment_scope of the variable. The default value is '*'`, + type: 'string', + }, + }, + }, + }, }, }, output: { @@ -193,6 +252,7 @@ export function createPublishGitlabAction(options: { topics = [], settings = {}, branches = [], + variables = [], } = ctx.input; const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); @@ -318,6 +378,31 @@ export function createPublishGitlabAction(options: { } } + if (variables) { + for (const variable of variables) { + const variableWithDefaults = Object.assign(variable, { + variable_type: variable.variable_type ?? 'env_var', + protected: variable.protected ?? false, + masked: variable.masked ?? false, + raw: variable.raw ?? false, + environment_scope: variable.environment_scope ?? '*', + }); + + try { + await client.ProjectVariables.create( + projectId, + variableWithDefaults, + ); + } catch (e) { + throw new InputError( + `Environment variable creation failed for ${ + variableWithDefaults.key + }. ${printGitlabError(e)}`, + ); + } + } + } + ctx.output('commitHash', commitResult?.commitHash); ctx.output('remoteUrl', remoteUrl); ctx.output('repoContentsUrl', repoContentsUrl); From 09cdef6eca2f138d196bfe55dcbd0f16f9268965 Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 16:42:25 +0200 Subject: [PATCH 009/279] chore: add explicit replacements for deprecated properties Signed-off-by: Ilya Katlinski --- .../src/scaffolder/actions/builtin/publish/gitlab.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts index c715bffcd6..ee9be04a3d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts @@ -38,7 +38,7 @@ export function createPublishGitlabAction(options: { return createTemplateAction<{ repoUrl: string; defaultBranch?: string; - /** @deprecated in favour of settings field */ + /** @deprecated in favour of settings.visibility field */ repoVisibility?: 'private' | 'internal' | 'public'; sourcePath?: string; token?: string; @@ -46,7 +46,7 @@ export function createPublishGitlabAction(options: { gitAuthorName?: string; gitAuthorEmail?: string; setUserAsOwner?: boolean; - /** @deprecated in favour of settings field */ + /** @deprecated in favour of settings.topics field */ topics?: string[]; settings?: Record; branches?: Array<{ @@ -82,7 +82,7 @@ export function createPublishGitlabAction(options: { }, repoVisibility: { title: 'Repository Visibility', - description: `Sets the visibility of the repository. The default value is 'private'. (deprecated, use settings instead)`, + description: `Sets the visibility of the repository. The default value is 'private'. (deprecated, use settings.visibility instead)`, type: 'string', enum: ['private', 'public', 'internal'], }, @@ -126,7 +126,7 @@ export function createPublishGitlabAction(options: { topics: { title: 'Topic labels', description: - 'Topic labels to apply on the repository. (deprecated, use settings instead)', + 'Topic labels to apply on the repository. (deprecated, use settings.topics instead)', type: 'array', items: { type: 'string', From 9ef04db9f09ff185b5151631eb49a137c8f29489 Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Fri, 15 Sep 2023 17:30:44 +0200 Subject: [PATCH 010/279] test: fix incosistent test failures with time Signed-off-by: Ilya Katlinski --- .../src/scaffolder/actions/builtin/debug/wait.examples.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts index 595ae7c3b6..fc68b82d1e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts @@ -56,6 +56,7 @@ describe('debug:wait examples', () => { const start = new Date().getTime(); await action.handler(context); const end = new Date().getTime(); - expect(end - start).toBeGreaterThanOrEqual(50); + expect(end - start).toBeGreaterThanOrEqual(45); + expect(end - start).toBeLessThanOrEqual(55); }); }); From 21f409d7768714ce4e09e218b1a393482f68d8b3 Mon Sep 17 00:00:00 2001 From: Rbillon59 Date: Mon, 18 Sep 2023 14:37:51 +0200 Subject: [PATCH 011/279] feat: Export ScorecardInfo and ScorecardsList Components to be able to use manually queried CheckResults directly. Signed-off-by: Rbillon59 --- .changeset/twenty-bags-sin.md | 5 +++++ plugins/tech-insights/api-report.md | 12 ++++++++++++ plugins/tech-insights/src/index.ts | 2 ++ plugins/tech-insights/src/plugin.ts | 24 ++++++++++++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 .changeset/twenty-bags-sin.md diff --git a/.changeset/twenty-bags-sin.md b/.changeset/twenty-bags-sin.md new file mode 100644 index 0000000000..5eb455f20e --- /dev/null +++ b/.changeset/twenty-bags-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-insights': patch +--- + +Export ScorecardInfo and ScorecardsList Components to be able to use manually queried CheckResults directly. diff --git a/plugins/tech-insights/api-report.md b/plugins/tech-insights/api-report.md index 14fe512ba0..b641ae728e 100644 --- a/plugins/tech-insights/api-report.md +++ b/plugins/tech-insights/api-report.md @@ -68,6 +68,18 @@ export interface InsightFacts { // @public export const jsonRulesEngineCheckResultRenderer: CheckResultRenderer; +// @public (undocumented) +export const ScorecardInfo: (props: { + checkResults: CheckResult[]; + title: string; + description?: string | undefined; +}) => JSX_2.Element; + +// @public (undocumented) +export const ScorecardsList: (props: { + checkResults: CheckResult[]; +}) => JSX_2.Element; + // @public export interface TechInsightsApi { // (undocumented) diff --git a/plugins/tech-insights/src/index.ts b/plugins/tech-insights/src/index.ts index 9e075df038..e7659e39d4 100644 --- a/plugins/tech-insights/src/index.ts +++ b/plugins/tech-insights/src/index.ts @@ -17,6 +17,8 @@ export { techInsightsPlugin, EntityTechInsightsScorecardContent, EntityTechInsightsScorecardCard, + ScorecardInfo, + ScorecardsList, } from './plugin'; export { techInsightsApiRef, TechInsightsClient } from './api'; diff --git a/plugins/tech-insights/src/plugin.ts b/plugins/tech-insights/src/plugin.ts index 961519cd97..412d2a0a1d 100644 --- a/plugins/tech-insights/src/plugin.ts +++ b/plugins/tech-insights/src/plugin.ts @@ -42,6 +42,30 @@ export const techInsightsPlugin = createPlugin({ }, }); +/** + * @public + */ +export const ScorecardInfo = techInsightsPlugin.provide( + createRoutableExtension({ + name: 'ScorecardInfo', + component: () => + import('./components/ScorecardsInfo').then(m => m.ScorecardInfo), + mountPoint: rootRouteRef, + }), +); + +/** + * @public + */ +export const ScorecardsList = techInsightsPlugin.provide( + createRoutableExtension({ + name: 'ScorecardsList', + component: () => + import('./components/ScorecardsList').then(m => m.ScorecardsList), + mountPoint: rootRouteRef, + }), +); + /** * @public */ From ce50a15506b0ad8a953003cf6bd591765d14c52c Mon Sep 17 00:00:00 2001 From: Stef Louwers Date: Mon, 18 Sep 2023 22:56:26 +0200 Subject: [PATCH 012/279] Fixed sorting and searching in the NewRelic table. Signed-off-by: Stef Louwers --- .changeset/heavy-ladybugs-leave.md | 5 ++ .../NewRelicFetchComponent.tsx | 56 ++++++++++++++++--- 2 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 .changeset/heavy-ladybugs-leave.md diff --git a/.changeset/heavy-ladybugs-leave.md b/.changeset/heavy-ladybugs-leave.md new file mode 100644 index 0000000000..5af2324260 --- /dev/null +++ b/.changeset/heavy-ladybugs-leave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-newrelic': patch +--- + +Fixed sorting and searching in the NewRelic table. diff --git a/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx b/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx index 0cd1c3b14c..85183916bd 100644 --- a/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx +++ b/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx @@ -22,16 +22,56 @@ import { newRelicApiRef, NewRelicApplications } from '../../api'; import { Progress, Table, TableColumn } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; +const sortNumeric = + (field: F) => + (a: { [key in F]: number }, b: { [key in F]: number }) => { + return a[field] - b[field]; + }; + +type NewRelicTableData = { + name: string; + responseTime: number; + throughput: number; + errorRate: number; + instanceCount: number; + apdexScore: number; +}; + export const NewRelicAPMTable = ({ applications }: NewRelicApplications) => { - const columns: TableColumn[] = [ - { title: 'Application', field: 'name' }, - { title: 'Response Time (ms)', field: 'responseTime' }, - { title: 'Throughput (rpm)', field: 'throughput' }, - { title: 'Error Rate (%)', field: 'errorRate' }, - { title: 'Instance Count', field: 'instanceCount' }, - { title: 'Apdex', field: 'apdexScore' }, + const columns: TableColumn[] = [ + { title: 'Application', field: 'name', searchable: true }, + { + title: 'Response Time (ms)', + field: 'responseTime', + customSort: sortNumeric('responseTime'), + searchable: false, + }, + { + title: 'Throughput (rpm)', + field: 'throughput', + customSort: sortNumeric('throughput'), + searchable: false, + }, + { + title: 'Error Rate (%)', + field: 'errorRate', + customSort: sortNumeric('errorRate'), + searchable: false, + }, + { + title: 'Instance Count', + field: 'instanceCount', + customSort: sortNumeric('instanceCount'), + searchable: false, + }, + { + title: 'Apdex', + field: 'apdexScore', + customSort: sortNumeric('apdexScore'), + searchable: false, + }, ]; - const data = applications.map(app => { + const data: Array = applications.map(app => { const { name, application_summary: applicationSummary } = app; const { response_time: responseTime, From e9dd103ce015b3ccdbae56f47d1ba05d8b19a132 Mon Sep 17 00:00:00 2001 From: Stef Louwers Date: Mon, 18 Sep 2023 23:14:05 +0200 Subject: [PATCH 013/279] Add Gynzy to ADOPTERS.md Signed-off-by: Stef Louwers --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 0d5b9fba59..0481653a87 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -260,3 +260,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Localiza&Co](https://www.localiza.com/) | [Augusto Amormino](https://github.com/augustoamormino), [Jonas Soares](https://github.com/jonaopower), [Alexandre Amormino](https://github.com/alexandreamormino), [Greg Almeida](https://github.com/sephh) | We're excited to announce our adoption of Backstage as our Internal Developer Portal! Our mission is to elevate the Developer Experience by streaming information access. Backstage will serve as the ultimate hub for developer resources, including documentation, tools, software insights, and metrics. Through Backstage, we're simplifying processes, offering software templates to empowered and efficient development journey, enhancing self-service capabilities with the embedded all best practices. | | [V2 Digital](https://v2.digital) | [Joe Patterson](https://github.com/jrwpatterson)| We will be using it to be a corporate dashboard plus our software catalog. | | [AppsFlyer](https://www.appsflyer.com/) | [Shahar Shmaram](https://github.com/shmaram) | Internal Developer Portal, a catalog of all company resources, custom providers and processors, scaffolder for generating new resources. +| [Gynzy](https://gynzy.com) | [Stef Louwers](https://github.com/fhp) | We are building an internal developer portal to get an overview of all our software components. | From f9f3f1e6291a99185e8ba929f5c394e752f84732 Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Tue, 19 Sep 2023 13:23:59 +0530 Subject: [PATCH 014/279] api:docs Signed-off-by: Abhay-soni-developer --- plugins/jenkins/api-report.md | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 0782f0abd2..215abf5f48 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -15,9 +15,12 @@ import { InfoCardVariants } from '@backstage/core-components'; import { JSX as JSX_2 } from 'react'; import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; +import { TableColumn } from '@backstage/core-components'; // @public (undocumented) -export const EntityJenkinsContent: () => JSX_2.Element; +export const EntityJenkinsContent: (props: { + columns?: TableColumn<{}>[] | undefined; +}) => JSX_2.Element; // @public (undocumented) export const EntityLatestJenkinsRunCard: (props: { @@ -45,7 +48,6 @@ export interface JenkinsApi { jobFullName: string; buildNumber: string; }): Promise; - // Warning: (ae-forgotten-export) The symbol "Project" needs to be exported by the entry point index.d.ts getProjects(options: { entity: CompoundEntityRef; filter: { @@ -118,8 +120,29 @@ export const LatestRunCard: (props: { // @public (undocumented) export const LEGACY_JENKINS_ANNOTATION = 'jenkins.io/github-folder'; +// Warning: (ae-missing-release-tag) "Project" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface Project { + // (undocumented) + displayName: string; + // (undocumented) + fullDisplayName: string; + // (undocumented) + fullName: string; + // (undocumented) + inQueue: string; + // (undocumented) + lastBuild: Build; + // (undocumented) + onRestartClick: () => Promise; + // (undocumented) + status: string; +} + +// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "Router" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const Router: () => React_2.JSX.Element; +export const Router: (props: Props) => React_2.JSX.Element; ``` From 26abd48a5d992df4b49f6e01480763a4b6d13076 Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Wed, 20 Sep 2023 17:09:30 +0530 Subject: [PATCH 015/279] api-report modified, scoped column type, exported ciTableColumns so we can easily reuse the columns Signed-off-by: Abhay-soni-developer --- plugins/jenkins/api-report.md | 7 ++++++- .../src/components/BuildsPage/lib/CITable/CITable.tsx | 10 +++++----- .../src/components/BuildsPage/lib/CITable/index.ts | 2 +- plugins/jenkins/src/components/Router.tsx | 3 ++- plugins/jenkins/src/index.ts | 1 + 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 215abf5f48..ca6feac780 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -17,9 +17,14 @@ import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { TableColumn } from '@backstage/core-components'; +// Warning: (ae-missing-release-tag) "ciTableColumns" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ciTableColumns: TableColumn[]; + // @public (undocumented) export const EntityJenkinsContent: (props: { - columns?: TableColumn<{}>[] | undefined; + columns?: TableColumn[] | undefined; }) => JSX_2.Element; // @public (undocumented) diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx index b0474b73da..2c3660c239 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx @@ -82,7 +82,7 @@ const FailSkippedWidget = ({ return null; }; -const generatedColumns: TableColumn[] = [ +export const ciTableColumns: TableColumn[] = [ { title: 'Timestamp', defaultSort: 'desc', @@ -239,7 +239,7 @@ type Props = { total: number; pageSize: number; onChangePageSize: (pageSize: number) => void; - columns: TableColumn[]; + columns: TableColumn[]; }; export const CITableView = ({ @@ -281,13 +281,13 @@ export const CITableView = ({ Projects } - columns={columns && columns.length !== 0 ? columns : generatedColumns} + columns={columns && columns.length !== 0 ? columns : ciTableColumns} /> ); }; type CITableProps = { - columns?: TableColumn[]; + columns?: TableColumn[]; }; export const CITable = ({ columns }: CITableProps) => { @@ -296,7 +296,7 @@ export const CITable = ({ columns }: CITableProps) => { return ( [])} retry={retry} onChangePageSize={setPageSize} onChangePage={setPage} diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts b/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts index 3be4dae9ce..b5a7ac6337 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { CITable } from './CITable'; +export { CITable, ciTableColumns } from './CITable'; diff --git a/plugins/jenkins/src/components/Router.tsx b/plugins/jenkins/src/components/Router.tsx index d4325b2542..58dd93b550 100644 --- a/plugins/jenkins/src/components/Router.tsx +++ b/plugins/jenkins/src/components/Router.tsx @@ -26,6 +26,7 @@ import { JENKINS_ANNOTATION, LEGACY_JENKINS_ANNOTATION } from '../constants'; import { buildRouteRef } from '../plugin'; import { CITable } from './BuildsPage/lib/CITable'; import { DetailedViewPage } from './BuildWithStepsPage/'; +import { Project } from '../api'; /** @public */ export const isJenkinsAvailable = (entity: Entity) => @@ -33,7 +34,7 @@ export const isJenkinsAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[LEGACY_JENKINS_ANNOTATION]); type Props = { - columns?: TableColumn[]; + columns?: TableColumn[]; }; export const Router = (props: Props) => { diff --git a/plugins/jenkins/src/index.ts b/plugins/jenkins/src/index.ts index 7562026bdc..3a17a879be 100644 --- a/plugins/jenkins/src/index.ts +++ b/plugins/jenkins/src/index.ts @@ -34,3 +34,4 @@ export { } from './components/Router'; export { JENKINS_ANNOTATION, LEGACY_JENKINS_ANNOTATION } from './constants'; export * from './api'; +export { ciTableColumns } from './components/BuildsPage/lib/CITable'; From 198d93e66c9f12d158a4565874657660fffedb4b Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 21 Sep 2023 12:05:39 +0530 Subject: [PATCH 016/279] following the backstage agreed standard for exporting table columns Signed-off-by: Abhay-soni-developer --- .../BuildsPage/lib/CITable/CITable.tsx | 225 +--------------- .../BuildsPage/lib/CITable/columns.tsx | 251 ++++++++++++++++++ .../BuildsPage/lib/CITable/index.ts | 2 +- .../BuildsPage/lib/CITable/presets.ts | 28 ++ plugins/jenkins/src/index.ts | 1 - 5 files changed, 292 insertions(+), 215 deletions(-) create mode 100644 plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx create mode 100644 plugins/jenkins/src/components/BuildsPage/lib/CITable/presets.ts diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx index 2c3660c239..1f5d272c61 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx @@ -13,222 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Link, Progress, Table, TableColumn } from '@backstage/core-components'; -import { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; -import { useEntityPermission } from '@backstage/plugin-catalog-react/alpha'; -import { Box, IconButton, Tooltip, Typography } from '@material-ui/core'; +import { Table, TableColumn } from '@backstage/core-components'; +import { Box, Typography } from '@material-ui/core'; import RetryIcon from '@material-ui/icons/Replay'; -import VisibilityIcon from '@material-ui/icons/Visibility'; -import { default as React, useState } from 'react'; +import { default as React } from 'react'; import { Project } from '../../../../api/JenkinsApi'; import JenkinsLogo from '../../../../assets/JenkinsLogo.svg'; -import { buildRouteRef } from '../../../../plugin'; import { useBuilds } from '../../../useBuilds'; -import { JenkinsRunStatus } from '../Status'; -import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; - -const FailCount = ({ count }: { count: number }): JSX.Element | null => { - if (count !== 0) { - return <>{count} failed; - } - return null; -}; - -const SkippedCount = ({ count }: { count: number }): JSX.Element | null => { - if (count !== 0) { - return <>{count} skipped; - } - return null; -}; - -const FailSkippedWidget = ({ - skipped, - failed, -}: { - skipped: number; - failed: number; -}): JSX.Element | null => { - if (skipped === 0 && failed === 0) { - return null; - } - - if (skipped !== 0 && failed !== 0) { - return ( - <> - {' '} - (, ) - - ); - } - - if (failed !== 0) { - return ( - <> - {' '} - () - - ); - } - - if (skipped !== 0) { - return ( - <> - {' '} - () - - ); - } - - return null; -}; - -export const ciTableColumns: TableColumn[] = [ - { - title: 'Timestamp', - defaultSort: 'desc', - hidden: true, - field: 'lastBuild.timestamp', - }, - { - title: 'Build', - field: 'fullName', - highlight: true, - render: (row: Partial) => { - const LinkWrapper = () => { - const routeLink = useRouteRef(buildRouteRef); - if (!row.fullName || !row.lastBuild?.number) { - return ( - <> - {row.fullName || - row.fullDisplayName || - row.displayName || - 'Unknown'} - - ); - } - - return ( - - {row.fullDisplayName} - - ); - }; - - return ; - }, - }, - { - title: 'Source', - field: 'lastBuild.source.branchName', - render: (row: Partial) => ( - <> - - - {row.lastBuild?.source?.branchName} - - - {row.lastBuild?.source?.commit?.hash} - - ), - }, - { - title: 'Status', - field: 'status', - render: (row: Partial) => { - return ( - - - - ); - }, - }, - { - title: 'Tests', - sorting: false, - render: (row: Partial) => { - return ( - <> - - {row.lastBuild?.tests && ( - - {row.lastBuild?.tests.passed} / {row.lastBuild?.tests.total}{' '} - passed - - - )} - - {!row.lastBuild?.tests && 'n/a'} - - - ); - }, - }, - { - title: 'Actions', - sorting: false, - render: (row: Partial) => { - const ActionWrapper = () => { - const [isLoadingRebuild, setIsLoadingRebuild] = useState(false); - const { allowed, loading } = useEntityPermission( - jenkinsExecutePermission, - ); - - const alertApi = useApi(alertApiRef); - - const onRebuild = async () => { - if (row.onRestartClick) { - setIsLoadingRebuild(true); - try { - await row.onRestartClick(); - alertApi.post({ - message: 'Jenkins re-build has successfully executed', - severity: 'success', - display: 'transient', - }); - } catch (e) { - alertApi.post({ - message: `Jenkins re-build has failed. Error: ${e.message}`, - severity: 'error', - }); - } finally { - setIsLoadingRebuild(false); - } - } - }; - - return ( -
- {row.lastBuild?.url && ( - - - - - - )} - {isLoadingRebuild && } - {!isLoadingRebuild && ( - - - - - - )} -
- ); - }; - return ; - }, - width: '10%', - }, -]; +import { columnFactories } from './columns'; +import { defaultCITableColumns } from './presets'; type Props = { loading: boolean; @@ -281,7 +74,9 @@ export const CITableView = ({ Projects } - columns={columns && columns.length !== 0 ? columns : ciTableColumns} + columns={ + columns && columns.length !== 0 ? columns : defaultCITableColumns + } /> ); }; @@ -303,3 +98,7 @@ export const CITable = ({ columns }: CITableProps) => { /> ); }; + +CITable.columns = columnFactories; + +CITable.defaultCITableColumns = defaultCITableColumns; diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx new file mode 100644 index 0000000000..6944f7cd92 --- /dev/null +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx @@ -0,0 +1,251 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Link, Progress, Table, TableColumn } from '@backstage/core-components'; +import { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; +import { useEntityPermission } from '@backstage/plugin-catalog-react/alpha'; +import { Box, IconButton, Tooltip, Typography } from '@material-ui/core'; +import RetryIcon from '@material-ui/icons/Replay'; +import VisibilityIcon from '@material-ui/icons/Visibility'; +import { default as React, useState } from 'react'; +import { Project } from '../../../../api/JenkinsApi'; +import { buildRouteRef } from '../../../../plugin'; +import { JenkinsRunStatus } from '../Status'; +import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; + +const FailCount = ({ count }: { count: number }): JSX.Element | null => { + if (count !== 0) { + return <>{count} failed; + } + return null; +}; + +const SkippedCount = ({ count }: { count: number }): JSX.Element | null => { + if (count !== 0) { + return <>{count} skipped; + } + return null; +}; + +const FailSkippedWidget = ({ + skipped, + failed, +}: { + skipped: number; + failed: number; +}): JSX.Element | null => { + if (skipped === 0 && failed === 0) { + return null; + } + + if (skipped !== 0 && failed !== 0) { + return ( + <> + {' '} + (, ) + + ); + } + + if (failed !== 0) { + return ( + <> + {' '} + () + + ); + } + + if (skipped !== 0) { + return ( + <> + {' '} + () + + ); + } + + return null; +}; + +export const columnFactories = Object.freeze({ + createTimestampColumn(): TableColumn { + return { + title: 'Timestamp', + defaultSort: 'desc', + hidden: true, + field: 'lastBuild.timestamp', + }; + }, + + createBuildColumn(): TableColumn { + return { + title: 'Build', + field: 'fullName', + highlight: true, + render: (row: Partial) => { + const LinkWrapper = () => { + const routeLink = useRouteRef(buildRouteRef); + if (!row.fullName || !row.lastBuild?.number) { + return ( + <> + {row.fullName || + row.fullDisplayName || + row.displayName || + 'Unknown'} + + ); + } + + return ( + + {row.fullDisplayName} + + ); + }; + + return ; + }, + }; + }, + + createSourceColumn(): TableColumn { + return { + title: 'Source', + field: 'lastBuild.source.branchName', + render: (row: Partial) => ( + <> + + + {row.lastBuild?.source?.branchName} + + + + {row.lastBuild?.source?.commit?.hash} + + + ), + }; + }, + + createStatusColumn(): TableColumn { + return { + title: 'Status', + field: 'status', + render: (row: Partial) => { + return ( + + + + ); + }, + }; + }, + + createTestColumn(): TableColumn { + return { + title: 'Tests', + sorting: false, + render: (row: Partial) => { + return ( + <> + + {row.lastBuild?.tests && ( + + {row.lastBuild?.tests.passed} / {row.lastBuild?.tests.total}{' '} + passed + + + )} + + {!row.lastBuild?.tests && 'n/a'} + + + ); + }, + }; + }, + + createActionsColumn(): TableColumn { + return { + title: 'Actions', + sorting: false, + render: (row: Partial) => { + const ActionWrapper = () => { + const [isLoadingRebuild, setIsLoadingRebuild] = useState(false); + const { allowed, loading } = useEntityPermission( + jenkinsExecutePermission, + ); + + const alertApi = useApi(alertApiRef); + + const onRebuild = async () => { + if (row.onRestartClick) { + setIsLoadingRebuild(true); + try { + await row.onRestartClick(); + alertApi.post({ + message: 'Jenkins re-build has successfully executed', + severity: 'success', + display: 'transient', + }); + } catch (e) { + alertApi.post({ + message: `Jenkins re-build has failed. Error: ${e.message}`, + severity: 'error', + }); + } finally { + setIsLoadingRebuild(false); + } + } + }; + + return ( +
+ {row.lastBuild?.url && ( + + + + + + )} + {isLoadingRebuild && } + {!isLoadingRebuild && ( + + + + + + )} +
+ ); + }; + return ; + }, + width: '10%', + }; + }, +}); diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts b/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts index b5a7ac6337..3be4dae9ce 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { CITable, ciTableColumns } from './CITable'; +export { CITable } from './CITable'; diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/presets.ts b/plugins/jenkins/src/components/BuildsPage/lib/CITable/presets.ts new file mode 100644 index 0000000000..7c0dda9970 --- /dev/null +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/presets.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Project } from '../../../../api'; +import { columnFactories } from './columns'; +import { TableColumn } from '@backstage/core-components'; + +export const defaultCITableColumns: TableColumn[] = [ + columnFactories.createTimestampColumn(), + columnFactories.createSourceColumn(), + columnFactories.createBuildColumn(), + columnFactories.createTestColumn(), + columnFactories.createStatusColumn(), + columnFactories.createActionsColumn(), +]; diff --git a/plugins/jenkins/src/index.ts b/plugins/jenkins/src/index.ts index 3a17a879be..7562026bdc 100644 --- a/plugins/jenkins/src/index.ts +++ b/plugins/jenkins/src/index.ts @@ -34,4 +34,3 @@ export { } from './components/Router'; export { JENKINS_ANNOTATION, LEGACY_JENKINS_ANNOTATION } from './constants'; export * from './api'; -export { ciTableColumns } from './components/BuildsPage/lib/CITable'; From 18eaecffbffeefd4d8702e9c9c26eead99bf5a8f Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 21 Sep 2023 12:13:05 +0530 Subject: [PATCH 017/279] removed ununsed import Signed-off-by: Abhay-soni-developer --- .../jenkins/src/components/BuildsPage/lib/CITable/columns.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx index 6944f7cd92..733a60c1b2 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/columns.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Link, Progress, Table, TableColumn } from '@backstage/core-components'; +import { Link, Progress, TableColumn } from '@backstage/core-components'; import { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; import { useEntityPermission } from '@backstage/plugin-catalog-react/alpha'; import { Box, IconButton, Tooltip, Typography } from '@material-ui/core'; From 66681d08f369e969b269e008475721fd83670e17 Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 21 Sep 2023 12:27:57 +0530 Subject: [PATCH 018/279] modified api report Signed-off-by: Abhay-soni-developer --- plugins/jenkins/api-report.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index ca6feac780..c8df2edc1b 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -17,11 +17,6 @@ import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { TableColumn } from '@backstage/core-components'; -// Warning: (ae-missing-release-tag) "ciTableColumns" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const ciTableColumns: TableColumn[]; - // @public (undocumented) export const EntityJenkinsContent: (props: { columns?: TableColumn[] | undefined; From f0ee0bba59e6595de35fd5fbda8405c5927305f3 Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 21 Sep 2023 13:48:36 +0530 Subject: [PATCH 019/279] exported columns directly Signed-off-by: Abhay-soni-developer --- .../jenkins/src/components/BuildsPage/lib/CITable/index.ts | 2 ++ plugins/jenkins/src/index.ts | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts b/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts index 3be4dae9ce..cb00501bb9 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/index.ts @@ -14,3 +14,5 @@ * limitations under the License. */ export { CITable } from './CITable'; +export { columnFactories as ciTableColumnFactories } from './columns'; +export { defaultCITableColumns } from './presets'; diff --git a/plugins/jenkins/src/index.ts b/plugins/jenkins/src/index.ts index 7562026bdc..d1f2b6d8c9 100644 --- a/plugins/jenkins/src/index.ts +++ b/plugins/jenkins/src/index.ts @@ -34,3 +34,7 @@ export { } from './components/Router'; export { JENKINS_ANNOTATION, LEGACY_JENKINS_ANNOTATION } from './constants'; export * from './api'; +export { + ciTableColumnFactories, + defaultCITableColumns, +} from './components/BuildsPage/lib/CITable'; From 32644250b4829fbf344dbe0b2fa79d2ffe5ad36e Mon Sep 17 00:00:00 2001 From: Abhay-soni-developer Date: Thu, 21 Sep 2023 14:47:01 +0530 Subject: [PATCH 020/279] api report modified Signed-off-by: Abhay-soni-developer --- plugins/jenkins/api-report.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index c8df2edc1b..9ff6987fe0 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -17,6 +17,23 @@ import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { TableColumn } from '@backstage/core-components'; +// Warning: (ae-missing-release-tag) "columnFactories" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ciTableColumnFactories: Readonly<{ + createTimestampColumn(): TableColumn; + createBuildColumn(): TableColumn; + createSourceColumn(): TableColumn; + createStatusColumn(): TableColumn; + createTestColumn(): TableColumn; + createActionsColumn(): TableColumn; +}>; + +// Warning: (ae-missing-release-tag) "defaultCITableColumns" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const defaultCITableColumns: TableColumn[]; + // @public (undocumented) export const EntityJenkinsContent: (props: { columns?: TableColumn[] | undefined; From 715432ce71d8900fc6e0c657e35d2f0879890315 Mon Sep 17 00:00:00 2001 From: Kurt King Date: Fri, 22 Sep 2023 07:53:34 -0600 Subject: [PATCH 021/279] chore: remove alpha from import Signed-off-by: Kurt King --- docs/features/techdocs/addons.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/features/techdocs/addons.md b/docs/features/techdocs/addons.md index a41995c260..2e17891917 100644 --- a/docs/features/techdocs/addons.md +++ b/docs/features/techdocs/addons.md @@ -65,7 +65,7 @@ page in your `App.tsx`: // packages/app/src/App.tsx import { TechDocsReaderPage } from '@backstage/plugin-techdocs'; -import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha'; +import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; // ... @@ -99,7 +99,7 @@ is very similar; instead of adding the `` registry under a import { EntityLayout } from '@backstage/plugin-catalog'; import { EntityTechdocsContent } from '@backstage/plugin-techdocs'; -import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha'; +import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; // ... @@ -146,7 +146,7 @@ an Addon, follow these steps: import { createTechDocsAddonExtension, TechDocsAddonLocations, -} from '@backstage/plugin-techdocs-react/alpha'; +} from '@backstage/plugin-techdocs-react'; import { CatGifComponent, CatGifComponentProps } from './addons'; // ... @@ -179,7 +179,7 @@ provided by the Addon framework. // plugins/your-plugin/src/addons/MakeAllImagesCatGifs.tsx import React, { useEffect } from 'react'; -import { useShadowRootElements } from '@backstage/plugin-techdocs-react/alpha'; +import { useShadowRootElements } from '@backstage/plugin-techdocs-react'; // This is a normal react component; in order to make it an Addon, you would // still create and provide it via your plugin as described above. The only From 2d8f7e82c1c2680c6e8608ca7dc277a7ffe1c766 Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 23 Sep 2023 15:17:47 +1000 Subject: [PATCH 022/279] auth-backend: migrate microsoft provider to separate module Signed-off-by: Chris Gemmell --- .changeset/swift-steaks-fetch.md | 6 + .../.eslintrc.js | 1 + .../README.md | 8 + .../api-report.md | 30 ++ .../catalog-info.yaml | 10 + .../config.d.ts | 34 ++ .../dev/index.ts | 26 + .../package.json | 45 ++ .../src/authenticator.ts | 74 +++ .../src/index.ts | 25 + .../src/module.test.ts | 81 ++++ .../src/module.ts | 48 ++ .../src/resolvers.ts | 77 +++ .../src/types.d.ts | 25 + plugins/auth-backend/config.d.ts | 12 - plugins/auth-backend/package.json | 1 + .../microsoft/__testUtils__/fake.test.ts | 90 ---- .../providers/microsoft/__testUtils__/fake.ts | 126 ----- .../src/providers/microsoft/provider.test.ts | 450 ------------------ .../src/providers/microsoft/provider.ts | 288 +---------- yarn.lock | 19 + 21 files changed, 523 insertions(+), 953 deletions(-) create mode 100644 .changeset/swift-steaks-fetch.md create mode 100644 plugins/auth-backend-module-microsoft-provider/.eslintrc.js create mode 100644 plugins/auth-backend-module-microsoft-provider/README.md create mode 100644 plugins/auth-backend-module-microsoft-provider/api-report.md create mode 100644 plugins/auth-backend-module-microsoft-provider/catalog-info.yaml create mode 100644 plugins/auth-backend-module-microsoft-provider/config.d.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/dev/index.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/package.json create mode 100644 plugins/auth-backend-module-microsoft-provider/src/authenticator.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/src/index.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/src/module.test.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/src/module.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/src/resolvers.ts create mode 100644 plugins/auth-backend-module-microsoft-provider/src/types.d.ts delete mode 100644 plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.test.ts delete mode 100644 plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.ts delete mode 100644 plugins/auth-backend/src/providers/microsoft/provider.test.ts diff --git a/.changeset/swift-steaks-fetch.md b/.changeset/swift-steaks-fetch.md new file mode 100644 index 0000000000..55a703ad59 --- /dev/null +++ b/.changeset/swift-steaks-fetch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-auth-backend-module-microsoft-provider': minor +'@backstage/plugin-auth-backend': patch +--- + +Migrated the Microsoft auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-microsoft-provider` module. diff --git a/plugins/auth-backend-module-microsoft-provider/.eslintrc.js b/plugins/auth-backend-module-microsoft-provider/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/auth-backend-module-microsoft-provider/README.md b/plugins/auth-backend-module-microsoft-provider/README.md new file mode 100644 index 0000000000..5154f1644b --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/README.md @@ -0,0 +1,8 @@ +# Auth Module: Microsoft Provider + +This module provides an Microsoft auth provider implementation for `@backstage/plugin-auth-backend`. + +## Links + +- [Repository](https://gitlab.com/backstage/backstage/tree/master/plugins/auth-backend-module-microsoft-provider) +- [Backstage Project Homepage](https://backstage.io) diff --git a/plugins/auth-backend-module-microsoft-provider/api-report.md b/plugins/auth-backend-module-microsoft-provider/api-report.md new file mode 100644 index 0000000000..010c680612 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/api-report.md @@ -0,0 +1,30 @@ +## API Report File for "@backstage/plugin-auth-backend-module-microsoft-provider" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; +import { OAuthAuthenticator } from '@backstage/plugin-auth-node'; +import { OAuthAuthenticatorResult } from '@backstage/plugin-auth-node'; +import { PassportOAuthAuthenticatorHelper } from '@backstage/plugin-auth-node'; +import { PassportProfile } from '@backstage/plugin-auth-node'; +import { SignInResolverFactory } from '@backstage/plugin-auth-node'; + +// @public (undocumented) +const authModuleMicrosoftProvider: () => BackendFeature; +export default authModuleMicrosoftProvider; + +// @public (undocumented) +export const microsoftAuthenticator: OAuthAuthenticator< + PassportOAuthAuthenticatorHelper, + PassportProfile +>; + +// @public +export namespace microsoftSignInResolvers { + const usernameMatchingUserEntityName: SignInResolverFactory< + OAuthAuthenticatorResult, + unknown + >; +} +``` diff --git a/plugins/auth-backend-module-microsoft-provider/catalog-info.yaml b/plugins/auth-backend-module-microsoft-provider/catalog-info.yaml new file mode 100644 index 0000000000..1742fc9ed6 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-auth-backend-module-microsoft-provider + title: '@backstage/plugin-auth-backend-module-microsoft-provider' + description: The microsoft-provider backend module for the auth plugin. +spec: + lifecycle: experimental + type: backstage-backend-plugin-module + owner: maintainers diff --git a/plugins/auth-backend-module-microsoft-provider/config.d.ts b/plugins/auth-backend-module-microsoft-provider/config.d.ts new file mode 100644 index 0000000000..5f1fa958e5 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/config.d.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + auth?: { + providers?: { + /** @visibility frontend */ + microsoft?: { + [authEnv: string]: { + clientId: string; + /** + * @visibility secret + */ + tenantId: string; + clientSecret: string; + callbackUrl?: string; + }; + }; + }; + }; +} diff --git a/plugins/auth-backend-module-microsoft-provider/dev/index.ts b/plugins/auth-backend-module-microsoft-provider/dev/index.ts new file mode 100644 index 0000000000..e701470af8 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/dev/index.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createBackend } from '@backstage/backend-defaults'; +import authPlugin from '@backstage/plugin-auth-backend'; +import { authModuleMicrosoftProvider } from '../src'; + +const backend = createBackend(); + +backend.add(authPlugin); +backend.add(authModuleMicrosoftProvider); + +backend.start(); diff --git a/plugins/auth-backend-module-microsoft-provider/package.json b/plugins/auth-backend-module-microsoft-provider/package.json new file mode 100644 index 0000000000..8ba7630972 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/package.json @@ -0,0 +1,45 @@ +{ + "name": "@backstage/plugin-auth-backend-module-microsoft-provider", + "description": "The microsoft-provider backend module for the auth plugin.", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "express": "^4.18.2", + "passport": "^0.6.0", + "passport-microsoft": "^1.0.0" + }, + "devDependencies": { + "@backstage/backend-defaults": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/plugin-auth-backend": "workspace:^", + "supertest": "^6.3.3" + }, + "configSchema": "config.d.ts", + "files": [ + "dist", + "config.d.ts" + ] +} diff --git a/plugins/auth-backend-module-microsoft-provider/src/authenticator.ts b/plugins/auth-backend-module-microsoft-provider/src/authenticator.ts new file mode 100644 index 0000000000..bf2d7fcaba --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/src/authenticator.ts @@ -0,0 +1,74 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Strategy as MicrosoftStrategy } from 'passport-microsoft'; +import { + createOAuthAuthenticator, + PassportOAuthAuthenticatorHelper, + PassportOAuthDoneCallback, + PassportProfile, +} from '@backstage/plugin-auth-node'; + +/** @public */ +export const microsoftAuthenticator = createOAuthAuthenticator({ + defaultProfileTransform: + PassportOAuthAuthenticatorHelper.defaultProfileTransform, + initialize({ callbackUrl, config }) { + const clientId = config.getString('clientId'); + const clientSecret = config.getString('clientSecret'); + const tenantId = config.getString('tenantId'); + + return PassportOAuthAuthenticatorHelper.from( + new MicrosoftStrategy( + { + clientID: clientId, + clientSecret: clientSecret, + callbackURL: callbackUrl, + tenant: tenantId, + scope: ['user.read'], + }, + ( + accessToken: string, + refreshToken: string, + params: any, + fullProfile: PassportProfile, + done: PassportOAuthDoneCallback, + ) => { + done( + undefined, + { fullProfile, params, accessToken }, + { refreshToken }, + ); + }, + ), + ); + }, + + async start(input, helper) { + return helper.start(input, { + accessType: 'offline', + prompt: 'consent', + }); + }, + + async authenticate(input, helper) { + return helper.authenticate(input); + }, + + async refresh(input, helper) { + return helper.refresh(input); + }, +}); diff --git a/plugins/auth-backend-module-microsoft-provider/src/index.ts b/plugins/auth-backend-module-microsoft-provider/src/index.ts new file mode 100644 index 0000000000..ae4fbf5926 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/src/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The gitlab-provider backend module for the auth plugin. + * + * @packageDocumentation + */ + +export { microsoftAuthenticator } from './authenticator'; +export { authModuleMicrosoftProvider } from './module'; +export { microsoftSignInResolvers } from './resolvers'; diff --git a/plugins/auth-backend-module-microsoft-provider/src/module.test.ts b/plugins/auth-backend-module-microsoft-provider/src/module.test.ts new file mode 100644 index 0000000000..ee7ed8f7f3 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/src/module.test.ts @@ -0,0 +1,81 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { mockServices, startTestBackend } from '@backstage/backend-test-utils'; +import authPlugin from '@backstage/plugin-auth-backend'; +import { decodeOAuthState } from '@backstage/plugin-auth-node'; +import request from 'supertest'; +import { authModuleMicrosoftProvider } from './module'; + +describe('authModuleMicrosoftProvider', () => { + it('should start', async () => { + const { server } = await startTestBackend({ + features: [ + authPlugin, + authModuleMicrosoftProvider, + mockServices.rootConfig.factory({ + data: { + app: { + baseUrl: 'http://localhost:3000', + }, + auth: { + providers: { + microsoft: { + development: { + clientId: 'my-client-id', + clientSecret: 'my-client-secret', + tenantId: 'my-tenant-id', + }, + }, + }, + }, + }, + }), + ], + }); + + const agent = request.agent(server); + + const res = await agent.get('/api/auth/microsoft/start?env=development'); + + expect(res.status).toEqual(302); + + const nonceCookie = agent.jar.getCookie('microsoft-nonce', { + domain: 'localhost', + path: '/api/auth/microsoft/handler', + script: false, + secure: false, + }); + expect(nonceCookie).toBeDefined(); + + const startUrl = new URL(res.get('location')); + expect(startUrl.origin).toBe('https://login.microsoftonline.com'); + expect(startUrl.pathname).toBe('/my-tenant-id/oauth2/v2.0/authorize'); + expect(Object.fromEntries(startUrl.searchParams)).toEqual({ + prompt: 'consent', + response_type: 'code', + scope: 'user.read', + client_id: 'my-client-id', + redirect_uri: `http://localhost:${server.port()}/api/auth/microsoft/handler/frame`, + state: expect.any(String), + }); + + expect(decodeOAuthState(startUrl.searchParams.get('state')!)).toEqual({ + env: 'development', + nonce: decodeURIComponent(nonceCookie.value), + }); + }); +}); diff --git a/plugins/auth-backend-module-microsoft-provider/src/module.ts b/plugins/auth-backend-module-microsoft-provider/src/module.ts new file mode 100644 index 0000000000..4d5c5968a2 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/src/module.ts @@ -0,0 +1,48 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { + authProvidersExtensionPoint, + commonSignInResolvers, + createOAuthProviderFactory, +} from '@backstage/plugin-auth-node'; +import { microsoftAuthenticator } from './authenticator'; +import { microsoftSignInResolvers } from './resolvers'; + +/** @public */ +export const authModuleMicrosoftProvider = createBackendModule({ + pluginId: 'auth', + moduleId: 'microsoft-provider', + register(reg) { + reg.registerInit({ + deps: { + providers: authProvidersExtensionPoint, + }, + async init({ providers }) { + providers.registerProvider({ + providerId: 'microsoft', + factory: createOAuthProviderFactory({ + authenticator: microsoftAuthenticator, + signInResolverFactories: { + ...microsoftSignInResolvers, + ...commonSignInResolvers, + }, + }), + }); + }, + }); + }, +}); diff --git a/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts b/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts new file mode 100644 index 0000000000..e50340ca4e --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts @@ -0,0 +1,77 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + createSignInResolverFactory, + OAuthAuthenticatorResult, + PassportProfile, + SignInInfo, +} from '@backstage/plugin-auth-node'; + +/** + * Available sign-in resolvers for the Microsoft auth provider. + * + * @public + */ +export namespace microsoftSignInResolvers { + /** + * Looks up the user by matching their Microsoft username to the entity name. + */ + export const commonByEmailLocalPartResolver = createSignInResolverFactory({ + create() { + return async ( + info: SignInInfo>, + ctx, + ) => { + const { profile } = info; + + if (!profile.email) { + throw new Error( + 'Login failed, user profile does not contain an email', + ); + } + const [localPart] = profile.email.split('@'); + + return ctx.signInWithCatalogUser({ + entityRef: { name: localPart }, + }); + }; + }, + }); + + export const commonByEmailResolver = createSignInResolverFactory({ + create() { + return async ( + info: SignInInfo>, + ctx, + ) => { + const { profile } = info; + + if (!profile.email) { + throw new Error( + 'Login failed, user profile does not contain an email', + ); + } + + return ctx.signInWithCatalogUser({ + filter: { + 'spec.profile.email': profile.email, + }, + }); + }; + }, + }); +} diff --git a/plugins/auth-backend-module-microsoft-provider/src/types.d.ts b/plugins/auth-backend-module-microsoft-provider/src/types.d.ts new file mode 100644 index 0000000000..ca6ae9ac40 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/src/types.d.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +declare module 'passport-microsoft' { + import { Request } from 'express'; + import { StrategyCreated } from 'passport'; + + export class Strategy { + constructor(options: any, verify: any); + authenticate(this: StrategyCreated, req: Request, options?: any): any; + } +} diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts index e719468ac1..f8953e1588 100644 --- a/plugins/auth-backend/config.d.ts +++ b/plugins/auth-backend/config.d.ts @@ -179,18 +179,6 @@ export interface Config { }; }; /** @visibility frontend */ - microsoft?: { - [authEnv: string]: { - clientId: string; - /** - * @visibility secret - */ - clientSecret: string; - tenantId: string; - callbackUrl?: string; - }; - }; - /** @visibility frontend */ onelogin?: { [authEnv: string]: { clientId: string; diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 98c5e0bd8a..c6d4a2b59c 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -42,6 +42,7 @@ "@backstage/plugin-auth-backend-module-github-provider": "workspace:^", "@backstage/plugin-auth-backend-module-gitlab-provider": "workspace:^", "@backstage/plugin-auth-backend-module-google-provider": "workspace:^", + "@backstage/plugin-auth-backend-module-microsoft-provider": "workspace:^", "@backstage/plugin-auth-backend-module-oauth2-provider": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", diff --git a/plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.test.ts b/plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.test.ts deleted file mode 100644 index dee37f0f6b..0000000000 --- a/plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.test.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { FakeMicrosoftAPI } from './fake'; - -describe('FakeMicrosoftAPI', () => { - const api = new FakeMicrosoftAPI(); - - describe('#token', () => { - it('exchanges auth codes', () => { - const { access_token } = api.token( - new URLSearchParams({ - grant_type: 'authorization_code', - code: api.generateAuthCode('User.Read'), - }), - ); - - expect(api.tokenHasScope(access_token, 'User.Read')).toBe(true); - }); - - it('supports scopes for the first requested audience only', () => { - const { access_token } = api.token( - new URLSearchParams({ - grant_type: 'authorization_code', - code: api.generateAuthCode('someaudience/somescope User.Read'), - }), - ); - - expect(api.tokenHasScope(access_token, 'User.Read')).toBe(false); - }); - - it('special openid scopes do not count towards the 1-audience limit', () => { - const { access_token } = api.token( - new URLSearchParams({ - grant_type: 'authorization_code', - code: api.generateAuthCode('openid offline_access User.Read'), - }), - ); - - expect(api.tokenHasScope(access_token, 'User.Read')).toBe(true); - }); - - it('refreshes tokens', () => { - const { access_token } = api.token( - new URLSearchParams({ - grant_type: 'refresh_token', - refresh_token: api.generateRefreshToken( - 'email openid profile User.Read', - ), - }), - ); - - expect( - api.tokenHasScope(access_token, 'email openid profile User.Read'), - ).toBe(true); - }); - it('requires `openid` scope for ID token', () => { - const { id_token } = api.token( - new URLSearchParams({ - grant_type: 'authorization_code', - code: api.generateAuthCode('User.Read'), - }), - ); - - expect(id_token).toBeUndefined(); - }); - it('requires `offline_access` scope for refresh token', () => { - const { refresh_token } = api.token( - new URLSearchParams({ - grant_type: 'authorization_code', - code: api.generateAuthCode('User.Read'), - }), - ); - - expect(refresh_token).toBeUndefined(); - }); - }); -}); diff --git a/plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.ts b/plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.ts deleted file mode 100644 index 9b3ca09c57..0000000000 --- a/plugins/auth-backend/src/providers/microsoft/__testUtils__/fake.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { decodeJwt } from 'jose'; - -type Claims = { aud: string; scp: string }; - -export class FakeMicrosoftAPI { - generateAccessToken(scope: string): string { - return this.tokenWithClaims(this.allClaimsForScope(scope)).access_token; - } - generateAuthCode(scope: string): string { - return this.encodeClaims(this.allClaimsForScope(scope)); - } - generateRefreshToken(scope: string): string { - return this.encodeClaims(this.allClaimsForScope(scope)); - } - token(formData: URLSearchParams): { - access_token: string; - scope: string; - refresh_token?: string; - id_token?: string; - } { - const scopeParameter = formData.get('scope'); - const claims = - (scopeParameter && this.allClaimsForScope(scopeParameter)) ?? - formData.get('grant_type') === 'refresh_token' - ? this.decodeClaims(formData.get('refresh_token')!) - : this.decodeClaims(formData.get('code')!); - return { - ...this.tokenWithClaims(claims), - ...(this.hasScope(claims, 'offline_access') && { - refresh_token: this.encodeClaims(claims), - }), - ...(this.hasScope(claims, 'openid') && { - id_token: 'header.e30K.microsoft', - }), - }; - } - tokenHasScope(token: string, scope: string): boolean { - const { aud, scp } = decodeJwt(token); - return this.hasScope({ aud: aud as string, scp: scp as string }, scope); - } - private tokenWithClaims(claims: Claims): { - access_token: string; - scope: string; - } { - const filteredClaims = { - ...claims, - scp: claims.scp - .split(' ') - .filter(s => s !== 'offline_access') - .join(' '), - }; - return { - access_token: `header.${Buffer.from( - JSON.stringify(filteredClaims), - ).toString('base64')}.signature`, - scope: this.scopeFromClaims(filteredClaims), - }; - } - private allClaimsForScope(scope: string): Claims { - const scopes = scope.split(' ').map(this.parseScope); - const firstAudience = scopes - .map(({ aud }) => aud) - .find(aud => aud !== 'openid'); - return { - aud: firstAudience ?? '00000003-0000-0000-c000-000000000000', - scp: scopes - .filter(({ aud }) => aud === 'openid' || aud === firstAudience) - .map(({ scp }) => scp) - .join(' '), - }; - } - // auth codes and refresh tokens in this fake system are base64-encoded JSON - // strings of claims - private encodeClaims(claims: Claims): string { - return Buffer.from(JSON.stringify(claims)).toString('base64'); - } - private decodeClaims(encoded: string): Claims { - return JSON.parse(Buffer.from(encoded, 'base64').toString()); - } - private hasScope(claims: Claims, scope: string): boolean { - return this.scopeFromClaims(claims).includes(scope); - } - private parseScope(s: string): Claims { - if (s.includes('/')) { - const [aud, scp] = s.split('/'); - return { aud, scp }; - } - switch (s) { - case 'email': - case 'openid': - case 'offline_access': - case 'profile': { - return { aud: 'openid', scp: s }; - } - default: - return { aud: '00000003-0000-0000-c000-000000000000', scp: s }; - } - } - private scopeFromClaims(claims: Claims): string { - return claims.scp - .split(' ') - .map(this.parseScope) - .map(({ aud, scp }) => - aud === 'openid' || - claims.aud === '00000003-0000-0000-c000-000000000000' - ? scp - : `${claims.aud}/${scp}`, - ) - .join(' '); - } -} diff --git a/plugins/auth-backend/src/providers/microsoft/provider.test.ts b/plugins/auth-backend/src/providers/microsoft/provider.test.ts deleted file mode 100644 index 7bbfd085d6..0000000000 --- a/plugins/auth-backend/src/providers/microsoft/provider.test.ts +++ /dev/null @@ -1,450 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { microsoft } from './provider'; -import { getVoidLogger } from '@backstage/backend-common'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; -import { ConfigReader } from '@backstage/config'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { AuthProviderRouteHandlers, AuthResolverContext } from '../types'; -import express from 'express'; -import crypto from 'crypto'; -import { FakeMicrosoftAPI } from './__testUtils__/fake'; - -describe('MicrosoftAuthProvider', () => { - const nonce = 'AAAAAAAAAAAAAAAAAAAAAA=='; // 16 bytes of zeros in base64 - const state = Buffer.from( - `nonce=${encodeURIComponent(nonce)}&env=development`, - ).toString('hex'); - const mockBackstageToken = `header.${Buffer.from( - JSON.stringify({ sub: 'user:default/mock' }), - 'utf8', - ).toString('base64')}.backstage`; - - const server = setupServer(); - const microsoftApi = new FakeMicrosoftAPI(); - let provider: AuthProviderRouteHandlers; - let response: jest.Mocked; - - setupRequestMockHandlers(server); - - beforeEach(() => { - provider = microsoft.create({ - signIn: { - resolver: microsoft.resolvers.emailMatchingUserEntityAnnotation(), - }, - })({ - providerId: 'microsoft', - baseUrl: 'http://backstage.test/api/auth', - appUrl: 'http://backstage.test', - isOriginAllowed: _ => true, - globalConfig: { - baseUrl: 'http://backstage.test/api/auth', - appUrl: 'http://backstage.test', - isOriginAllowed: _ => true, - }, - config: new ConfigReader({ - development: { - tenantId: 'tenantId', - clientId: 'clientId', - clientSecret: 'clientSecret', - }, - }), - logger: getVoidLogger(), - resolverContext: { - issueToken: jest.fn(), - findCatalogUser: jest.fn(), - signInWithCatalogUser: async _ => ({ - token: mockBackstageToken, - }), - } as AuthResolverContext, - }) as AuthProviderRouteHandlers; - - server.use( - rest.post( - 'https://login.microsoftonline.com/tenantId/oauth2/v2.0/token', - async (req, res, ctx) => { - return res( - ctx.json({ - ...microsoftApi.token(new URLSearchParams(await req.text())), - token_type: 'Bearer', - expires_in: 123, - ext_expires_in: 123, - }), - ); - }, - ), - rest.get('https://graph.microsoft.com/v1.0/me/', (req, res, ctx) => { - if ( - !microsoftApi.tokenHasScope( - req.headers.get('authorization')!.replace(/^Bearer /, ''), - 'User.Read', - ) - ) { - return res(ctx.status(403)); - } - return res( - ctx.json({ - id: 'conrad', - displayName: 'Conrad', - surname: 'Ribas', - givenName: 'Francisco', - mail: 'conrad@example.com', - }), - ); - }), - rest.get( - 'https://graph.microsoft.com/v1.0/me/photos/*', - async (req, res, ctx) => { - if ( - !microsoftApi.tokenHasScope( - req.headers.get('authorization')!.replace(/^Bearer /, ''), - 'User.Read', - ) - ) { - return res(ctx.status(403)); - } - const imageBuffer = new Uint8Array([104, 111, 119, 100, 121]).buffer; - return res( - ctx.set('Content-Length', imageBuffer.byteLength.toString()), - ctx.set('Content-Type', 'image/jpeg'), - ctx.body(imageBuffer), - ); - }, - ), - ); - response = { - cookie: jest.fn(), - end: jest.fn(), - json: jest.fn(), - setHeader: jest.fn(), - status: jest.fn(), - } as unknown as jest.Mocked; - response.status.mockReturnValue(response); - }); - - describe('#start', () => { - const randomBytes = jest.spyOn( - crypto, - 'randomBytes', - ) as unknown as jest.MockedFunction<(size: number) => Buffer>; - - afterEach(() => { - randomBytes.mockRestore(); - }); - - it('redirects to authorize URL', async () => { - randomBytes.mockReturnValue(Buffer.from(nonce, 'base64')); - - await provider.start( - { - query: { - env: 'development', - scope: 'email openid profile User.Read', - }, - } as unknown as express.Request, - response, - ); - - expect(response.setHeader).toHaveBeenCalledWith( - 'Location', - 'https://login.microsoftonline.com/tenantId/oauth2/v2.0/authorize' + - '?response_type=code' + - `&redirect_uri=${encodeURIComponent( - 'http://backstage.test/api/auth/microsoft/handler/frame', - )}` + - `&scope=${encodeURIComponent('email openid profile User.Read')}` + - `&state=${state}` + - '&client_id=clientId', - ); - }); - }); - - describe('#handle', () => { - it('returns provider info and profile with photo data', async () => { - await provider.frameHandler( - { - query: { - env: 'development', - code: microsoftApi.generateAuthCode( - 'email openid profile User.Read', - ), - state, - }, - cookies: { - 'microsoft-nonce': nonce, - }, - } as unknown as express.Request, - response, - ); - - expect(response.end).toHaveBeenCalledWith( - expect.stringContaining( - encodeURIComponent( - JSON.stringify({ - type: 'authorization_response', - response: { - providerInfo: { - accessToken: microsoftApi.generateAccessToken( - 'email openid profile User.Read', - ), - scope: 'email openid profile User.Read', - expiresInSeconds: 123, - idToken: 'header.e30K.microsoft', - }, - profile: { - email: 'conrad@example.com', - picture: 'data:image/jpeg;base64,aG93ZHk=', - displayName: 'Conrad', - }, - backstageIdentity: { - token: mockBackstageToken, - identity: { - type: 'user', - userEntityRef: 'user:default/mock', - ownershipEntityRefs: [], - }, - }, - }, - }), - ), - ), - ); - }); - - it('returns access token for non-microsoft graph scope', async () => { - await provider.frameHandler( - { - query: { - env: 'development', - code: microsoftApi.generateAuthCode('aks-audience/user.read'), - state, - }, - cookies: { - 'microsoft-nonce': nonce, - }, - } as unknown as express.Request, - response, - ); - - expect(response.end).toHaveBeenCalledWith( - expect.stringContaining( - encodeURIComponent( - JSON.stringify({ - type: 'authorization_response', - response: { - providerInfo: { - accessToken: microsoftApi.generateAccessToken( - 'aks-audience/user.read', - ), - scope: 'aks-audience/user.read', - expiresInSeconds: 123, - }, - profile: {}, - }, - }), - ), - ), - ); - }); - - it('sets refresh token', async () => { - await provider.frameHandler( - { - query: { - env: 'development', - code: microsoftApi.generateAuthCode( - 'email offline_access openid profile User.Read', - ), - state, - }, - cookies: { - 'microsoft-nonce': nonce, - }, - } as unknown as express.Request, - response, - ); - - expect(response.cookie).toHaveBeenCalledWith( - 'microsoft-refresh-token', - microsoftApi.generateRefreshToken( - 'email offline_access openid profile User.Read', - ), - { - domain: 'backstage.test', - httpOnly: true, - maxAge: 86400000000, - path: '/api/auth/microsoft', - sameSite: 'lax', - secure: false, - }, - ); - }); - - it('omits photo data when fetching it fails', async () => { - server.use( - rest.get('https://graph.microsoft.com/v1.0/me/photos/*', (_, res) => - res.networkError('remote hung up'), - ), - ); - - await provider.frameHandler( - { - query: { - env: 'development', - code: microsoftApi.generateAuthCode( - 'email openid profile User.Read', - ), - state, - }, - cookies: { - 'microsoft-nonce': nonce, - }, - } as unknown as express.Request, - response, - ); - - expect(response.end).toHaveBeenCalledWith( - expect.stringContaining( - encodeURIComponent( - JSON.stringify({ - type: 'authorization_response', - response: { - providerInfo: { - accessToken: microsoftApi.generateAccessToken( - 'email openid profile User.Read', - ), - scope: 'email openid profile User.Read', - expiresInSeconds: 123, - idToken: 'header.e30K.microsoft', - }, - profile: { - email: 'conrad@example.com', - displayName: 'Conrad', - }, - backstageIdentity: { - token: mockBackstageToken, - identity: { - type: 'user', - userEntityRef: 'user:default/mock', - ownershipEntityRefs: [], - }, - }, - }, - }), - ), - ), - ); - }); - }); - - describe('#refresh', () => { - it('returns provider info and profile with photo data', async () => { - await provider.refresh!( - { - query: { - env: 'development', - scope: 'email openid profile User.Read', - }, - header: jest.fn(_ => 'XMLHttpRequest'), - cookies: { - 'microsoft-refresh-token': microsoftApi.generateRefreshToken( - 'email openid profile User.Read', - ), - }, - get: jest.fn(), - } as unknown as express.Request, - response, - ); - - expect(response.json).toHaveBeenCalledWith( - expect.objectContaining({ - providerInfo: { - accessToken: microsoftApi.generateAccessToken( - 'email openid profile User.Read', - ), - scope: 'email openid profile User.Read', - expiresInSeconds: 123, - idToken: 'header.e30K.microsoft', - }, - profile: { - email: 'conrad@example.com', - picture: 'data:image/jpeg;base64,aG93ZHk=', - displayName: 'Conrad', - }, - }), - ); - }); - - it('returns access token for non-microsoft graph scope', async () => { - await provider.refresh!( - { - query: { - env: 'development', - scope: 'aks-audience/user.read', - }, - header: jest.fn(_ => 'XMLHttpRequest'), - cookies: { - 'microsoft-refresh-token': microsoftApi.generateRefreshToken( - 'aks-audience/user.read', - ), - }, - get: jest.fn(), - } as unknown as express.Request, - response, - ); - - expect(response.json).toHaveBeenCalledWith({ - providerInfo: { - accessToken: microsoftApi.generateAccessToken( - 'aks-audience/user.read', - ), - expiresInSeconds: 123, - scope: 'aks-audience/user.read', - }, - profile: {}, - }); - }); - - it('returns backstage identity', async () => { - await provider.refresh!( - { - query: { - env: 'development', - scope: 'email openid profile User.Read', - }, - header: jest.fn(_ => 'XMLHttpRequest'), - cookies: { - 'microsoft-refresh-token': microsoftApi.generateRefreshToken( - 'email openid profile User.Read', - ), - }, - get: jest.fn(), - } as unknown as express.Request, - response, - ); - - expect(response.json).toHaveBeenCalledWith( - expect.objectContaining({ - backstageIdentity: expect.objectContaining({ - token: mockBackstageToken, - }), - }), - ); - }); - }); -}); diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts index 8fc8459f10..439db03311 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.ts @@ -14,218 +14,18 @@ * limitations under the License. */ -import express from 'express'; -import passport from 'passport'; -import { Strategy as MicrosoftStrategy } from 'passport-microsoft'; -import { - encodeState, - OAuthAdapter, - OAuthEnvironmentHandler, - OAuthHandlers, - OAuthProviderOptions, - OAuthRefreshRequest, - OAuthResponse, - OAuthResult, - OAuthStartRequest, -} from '../../lib/oauth'; -import { - executeFetchUserProfileStrategy, - executeFrameHandlerStrategy, - executeRedirectStrategy, - executeRefreshTokenStrategy, - makeProfileInfo, - PassportDoneCallback, -} from '../../lib/passport'; -import { - AuthHandler, - OAuthStartResponse, - SignInResolver, - AuthResolverContext, -} from '../types'; +import { SignInResolver, AuthHandler } from '../types'; +import { OAuthResult } from '../../lib/oauth'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; +import { createOAuthProviderFactory } from '@backstage/plugin-auth-node'; import { - commonByEmailLocalPartResolver, - commonByEmailResolver, -} from '../resolvers'; -import { LoggerService } from '@backstage/backend-plugin-api'; -import fetch from 'node-fetch'; -import { decodeJwt } from 'jose'; -import { Profile as PassportProfile } from 'passport'; -import { BACKSTAGE_SESSION_EXPIRATION } from '../../lib/session'; - -type PrivateInfo = { - refreshToken: string; -}; - -type Options = OAuthProviderOptions & { - signInResolver?: SignInResolver; - authHandler: AuthHandler; - logger: LoggerService; - resolverContext: AuthResolverContext; - authorizationUrl?: string; - tokenUrl?: string; -}; - -export class MicrosoftAuthProvider implements OAuthHandlers { - private readonly _strategy: MicrosoftStrategy; - private readonly signInResolver?: SignInResolver; - private readonly authHandler: AuthHandler; - private readonly logger: LoggerService; - private readonly resolverContext: AuthResolverContext; - - constructor(options: Options) { - this.signInResolver = options.signInResolver; - this.authHandler = options.authHandler; - this.logger = options.logger; - this.resolverContext = options.resolverContext; - - this._strategy = new MicrosoftStrategy( - { - clientID: options.clientId, - clientSecret: options.clientSecret, - callbackURL: options.callbackUrl, - authorizationURL: options.authorizationUrl, - tokenURL: options.tokenUrl, - passReqToCallback: false, - skipUserProfile: ( - accessToken: string, - done: (err: unknown, skip: boolean) => void, - ) => { - done(null, this.skipUserProfile(accessToken)); - }, - }, - ( - accessToken: any, - refreshToken: any, - params: any, - fullProfile: passport.Profile, - done: PassportDoneCallback, - ) => { - done(undefined, { fullProfile, accessToken, params }, { refreshToken }); - }, - ); - } - - private skipUserProfile = (accessToken: string): boolean => { - const { aud, scp } = decodeJwt(accessToken); - const hasGraphReadScope = - aud === '00000003-0000-0000-c000-000000000000' && - (scp as string) - .split(' ') - .map(s => s.toLowerCase()) - .includes('user.read'); - return !hasGraphReadScope; - }; - - async start(req: OAuthStartRequest): Promise { - return await executeRedirectStrategy(req, this._strategy, { - scope: req.scope, - state: encodeState(req.state), - }); - } - - async handler(req: express.Request) { - const { result, privateInfo } = await executeFrameHandlerStrategy< - OAuthResult, - PrivateInfo - >(req, this._strategy); - - return { - response: await this.handleResult(result), - refreshToken: privateInfo.refreshToken, - }; - } - - async refresh(req: OAuthRefreshRequest) { - const { accessToken, refreshToken, params } = - await executeRefreshTokenStrategy( - this._strategy, - req.refreshToken, - req.scope, - ); - - return { - response: await this.handleResult({ - params, - accessToken, - ...(!this.skipUserProfile(accessToken) && { - fullProfile: await executeFetchUserProfileStrategy( - this._strategy, - accessToken, - ), - }), - }), - refreshToken, - }; - } - - private async handleResult(result: { - fullProfile?: PassportProfile; - params: { - id_token?: string; - scope: string; - expires_in: number; - }; - accessToken: string; - refreshToken?: string; - }): Promise { - let profile = {}; - if (result.fullProfile) { - const photo = await this.getUserPhoto(result.accessToken); - result.fullProfile.photos = photo ? [{ value: photo }] : undefined; - ({ profile } = await this.authHandler( - result as OAuthResult, - this.resolverContext, - )); - } - - const expiresInSeconds = - result.params.expires_in === undefined - ? BACKSTAGE_SESSION_EXPIRATION - : Math.min(result.params.expires_in, BACKSTAGE_SESSION_EXPIRATION); - - return { - providerInfo: { - accessToken: result.accessToken, - scope: result.params.scope, - expiresInSeconds, - ...{ idToken: result.params.id_token }, - }, - profile, - ...(result.fullProfile && - this.signInResolver && { - backstageIdentity: await this.signInResolver( - { result: result as OAuthResult, profile }, - this.resolverContext, - ), - }), - }; - } - - private async getUserPhoto(accessToken: string): Promise { - try { - const res = await fetch( - 'https://graph.microsoft.com/v1.0/me/photos/48x48/$value', - { - headers: { - Authorization: `Bearer ${accessToken}`, - }, - }, - ); - const data = await res.buffer(); - - return `data:image/jpeg;base64,${data.toString('base64')}`; - } catch (error) { - this.logger.warn( - `Could not retrieve user profile photo from Microsoft Graph API: ${error}`, - ); - return undefined; - } - } -} + adaptLegacyOAuthHandler, + adaptLegacyOAuthSignInResolver, +} from '../../lib/legacy'; +import { microsoftAuthenticator } from '@backstage/plugin-auth-backend-module-microsoft-provider'; /** - * Auth provider integration for Microsoft auth + * Auth provider integration for GitLab auth * * @public */ @@ -241,75 +41,13 @@ export const microsoft = createAuthProviderIntegration({ * Configure sign-in for this provider, without it the provider can not be used to sign users in. */ signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ resolver: SignInResolver; }; }) { - return ({ providerId, globalConfig, config, logger, resolverContext }) => - OAuthEnvironmentHandler.mapConfig(config, envConfig => { - const clientId = envConfig.getString('clientId'); - const clientSecret = envConfig.getString('clientSecret'); - const tenantId = envConfig.getString('tenantId'); - - const customCallbackUrl = envConfig.getOptionalString('callbackUrl'); - const callbackUrl = - customCallbackUrl || - `${globalConfig.baseUrl}/${providerId}/handler/frame`; - const authorizationUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize`; - const tokenUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`; - - const authHandler: AuthHandler = options?.authHandler - ? options.authHandler - : async ({ fullProfile, params }) => ({ - profile: makeProfileInfo(fullProfile ?? {}, params.id_token), - }); - - const provider = new MicrosoftAuthProvider({ - clientId, - clientSecret, - callbackUrl, - authorizationUrl, - tokenUrl, - authHandler, - signInResolver: options?.signIn?.resolver, - logger, - resolverContext, - }); - - return OAuthAdapter.fromConfig(globalConfig, provider, { - providerId, - callbackUrl, - }); - }); - }, - resolvers: { - /** - * Looks up the user by matching their email local part to the entity name. - */ - emailLocalPartMatchingUserEntityName: () => commonByEmailLocalPartResolver, - /** - * Looks up the user by matching their email to the entity email. - */ - emailMatchingUserEntityProfileEmail: () => commonByEmailResolver, - /** - * Looks up the user by matching their email to the `microsoft.com/email` annotation. - */ - emailMatchingUserEntityAnnotation(): SignInResolver { - return async (info, ctx) => { - const { profile } = info; - - if (!profile.email) { - throw new Error('Microsoft profile contained no email'); - } - - return ctx.signInWithCatalogUser({ - annotations: { - 'microsoft.com/email': profile.email, - }, - }); - }; - }, + return createOAuthProviderFactory({ + authenticator: microsoftAuthenticator, + profileTransform: adaptLegacyOAuthHandler(options?.authHandler), + signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), + }); }, }); diff --git a/yarn.lock b/yarn.lock index 9217e59ffb..39c9fffc96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4780,6 +4780,24 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-auth-backend-module-microsoft-provider@workspace:^, @backstage/plugin-auth-backend-module-microsoft-provider@workspace:plugins/auth-backend-module-microsoft-provider": + version: 0.0.0-use.local + resolution: "@backstage/plugin-auth-backend-module-microsoft-provider@workspace:plugins/auth-backend-module-microsoft-provider" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-defaults": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/plugin-auth-backend": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + express: ^4.18.2 + passport: ^0.6.0 + passport-microsoft: ^1.0.0 + supertest: ^6.3.3 + languageName: unknown + linkType: soft + "@backstage/plugin-auth-backend-module-oauth2-provider@workspace:^, @backstage/plugin-auth-backend-module-oauth2-provider@workspace:plugins/auth-backend-module-oauth2-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-oauth2-provider@workspace:plugins/auth-backend-module-oauth2-provider" @@ -4815,6 +4833,7 @@ __metadata: "@backstage/plugin-auth-backend-module-github-provider": "workspace:^" "@backstage/plugin-auth-backend-module-gitlab-provider": "workspace:^" "@backstage/plugin-auth-backend-module-google-provider": "workspace:^" + "@backstage/plugin-auth-backend-module-microsoft-provider": "workspace:^" "@backstage/plugin-auth-backend-module-oauth2-provider": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-catalog-node": "workspace:^" From 2dfeb4b61265a831df403dbef9e8955a68233d17 Mon Sep 17 00:00:00 2001 From: Chris Gemmell Date: Sat, 23 Sep 2023 16:34:56 +1000 Subject: [PATCH 023/279] fixed Signed-off-by: Chris Gemmell --- .changeset/spotty-donkeys-give.md | 6 ++++ .../src/resolvers.ts | 34 +++---------------- .../src/providers/microsoft/provider.ts | 19 +++++++++-- 3 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 .changeset/spotty-donkeys-give.md diff --git a/.changeset/spotty-donkeys-give.md b/.changeset/spotty-donkeys-give.md new file mode 100644 index 0000000000..92fa44fa37 --- /dev/null +++ b/.changeset/spotty-donkeys-give.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-auth-backend-module-microsoft-provider': minor +'@backstage/plugin-auth-backend': patch +--- + +Moved existing emailMatchingUserEntityAnnotation into `@backstage/plugin-auth-backend-module-microsoft-provider` and adapted SignInResolvers correctly" diff --git a/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts b/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts index e50340ca4e..7ef4a57175 100644 --- a/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts +++ b/plugins/auth-backend-module-microsoft-provider/src/resolvers.ts @@ -15,8 +15,8 @@ */ import { - createSignInResolverFactory, OAuthAuthenticatorResult, + createSignInResolverFactory, PassportProfile, SignInInfo, } from '@backstage/plugin-auth-node'; @@ -30,7 +30,7 @@ export namespace microsoftSignInResolvers { /** * Looks up the user by matching their Microsoft username to the entity name. */ - export const commonByEmailLocalPartResolver = createSignInResolverFactory({ + export const emailMatchingUserEntityAnnotation = createSignInResolverFactory({ create() { return async ( info: SignInInfo>, @@ -39,36 +39,12 @@ export namespace microsoftSignInResolvers { const { profile } = info; if (!profile.email) { - throw new Error( - 'Login failed, user profile does not contain an email', - ); - } - const [localPart] = profile.email.split('@'); - - return ctx.signInWithCatalogUser({ - entityRef: { name: localPart }, - }); - }; - }, - }); - - export const commonByEmailResolver = createSignInResolverFactory({ - create() { - return async ( - info: SignInInfo>, - ctx, - ) => { - const { profile } = info; - - if (!profile.email) { - throw new Error( - 'Login failed, user profile does not contain an email', - ); + throw new Error('Microsoft profile contained no email'); } return ctx.signInWithCatalogUser({ - filter: { - 'spec.profile.email': profile.email, + annotations: { + 'microsoft.com/email': profile.email, }, }); }; diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts index 439db03311..8947c7432b 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.ts @@ -17,12 +17,19 @@ import { SignInResolver, AuthHandler } from '../types'; import { OAuthResult } from '../../lib/oauth'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { createOAuthProviderFactory } from '@backstage/plugin-auth-node'; +import { + commonSignInResolvers, + createOAuthProviderFactory, +} from '@backstage/plugin-auth-node'; import { adaptLegacyOAuthHandler, adaptLegacyOAuthSignInResolver, + adaptOAuthSignInResolverToLegacy, } from '../../lib/legacy'; -import { microsoftAuthenticator } from '@backstage/plugin-auth-backend-module-microsoft-provider'; +import { + microsoftAuthenticator, + microsoftSignInResolvers, +} from '@backstage/plugin-auth-backend-module-microsoft-provider'; /** * Auth provider integration for GitLab auth @@ -50,4 +57,12 @@ export const microsoft = createAuthProviderIntegration({ signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), }); }, + resolvers: adaptOAuthSignInResolverToLegacy({ + emailLocalPartMatchingUserEntityName: + commonSignInResolvers.emailLocalPartMatchingUserEntityName(), + emailMatchingUserEntityProfileEmail: + commonSignInResolvers.emailMatchingUserEntityProfileEmail(), + emailMatchingUserEntityAnnotation: + microsoftSignInResolvers.emailMatchingUserEntityAnnotation(), + }), }); From fae0735ee03778f9995e717f2c31d0ca4183b23b Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Mon, 25 Sep 2023 11:59:01 +0200 Subject: [PATCH 024/279] fix: use publicEmail in GitLab client client was using commitEmail that is visible only for self-managed GitLab admins. publicEmail is visible, but only if the user explicitly enable the corresponding setting on GitLab. Signed-off-by: Matteo Silvestri --- plugins/catalog-backend-module-gitlab/src/lib/client.ts | 4 ++-- plugins/catalog-backend-module-gitlab/src/lib/types.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index 79ae328ce2..0b69ded359 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -205,7 +205,7 @@ export class GitLabClient { user { id username - commitEmail + publicEmail name state webUrl @@ -240,7 +240,7 @@ export class GitLabClient { const formattedUserResponse = { id: Number(userItem.user.id.replace(/^gid:\/\/gitlab\/User\//, '')), username: userItem.user.username, - email: userItem.user.commitEmail, + email: userItem.user.publicEmail, name: userItem.user.name, state: userItem.user.state, web_url: userItem.user.webUrl, diff --git a/plugins/catalog-backend-module-gitlab/src/lib/types.ts b/plugins/catalog-backend-module-gitlab/src/lib/types.ts index a339ac57e4..5a4082eec3 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/types.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/types.ts @@ -64,7 +64,7 @@ export type GitLabGroupMembersResponse = { user: { id: string; username: string; - commitEmail: string; + publicEmail: string; name: string; state: string; webUrl: string; From 4f70fdfc93aa4e081b97bcb4eb6cda88f8493ce0 Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Mon, 25 Sep 2023 16:17:19 +0200 Subject: [PATCH 025/279] fix gitlab client tests and add changeset Signed-off-by: Matteo Silvestri --- .changeset/flat-rules-rush.md | 7 +++++++ .../catalog-backend-module-gitlab/src/lib/client.test.ts | 8 ++++---- .../providers/GitlabOrgDiscoveryEntityProvider.test.ts | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 .changeset/flat-rules-rush.md diff --git a/.changeset/flat-rules-rush.md b/.changeset/flat-rules-rush.md new file mode 100644 index 0000000000..f9f5354595 --- /dev/null +++ b/.changeset/flat-rules-rush.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +--- + +fix: use publicEmail in GitLab client + +client was using commitEmail that is visible only for self-managed GitLab admins. publicEmail is visible, but only if the user explicitly enable the corresponding setting on GitLab. diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts index dda30fd86a..2bb1f713b5 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts @@ -413,7 +413,7 @@ describe('GitLabClient', () => { user: { id: 'gid://gitlab/User/1', username: 'user1', - commitEmail: 'user1@example.com', + publicEmail: 'user1@example.com', name: 'user1', state: 'active', webUrl: 'user1.com', @@ -517,7 +517,7 @@ describe('GitLabClient', () => { user: { id: 'gid://gitlab/User/1', username: 'user1', - commitEmail: 'user1@example.com', + publicEmail: 'user1@example.com', name: 'user1', state: 'active', webUrl: 'user1.com', @@ -530,7 +530,7 @@ describe('GitLabClient', () => { user: { id: 'gid://gitlab/User/2', username: 'user2', - commitEmail: 'user2@example.com', + publicEmail: 'user2@example.com', name: 'user2', state: 'active', webUrl: 'user2.com', @@ -764,7 +764,7 @@ describe('GitLabClient', () => { user: { id: 'gid://gitlab/User/1', username: 'user1', - commitEmail: 'user1@example.com', + publicEmail: 'user1@example.com', name: 'user1', state: 'active', webUrl: 'user1.com', diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts index ce00510140..1b1357c1bf 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts @@ -560,7 +560,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { user: { id: 'gid://gitlab/User/12', username: 'testuser1', - commitEmail: 'testuser1@example.com', + publicEmail: 'testuser1@example.com', state: 'active', name: 'Test User 1', webUrl: 'https://gitlab.com/testuser1', @@ -571,7 +571,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { user: { id: 'gid://gitlab/User/34', username: 'testuser2', - commitEmail: 'testuser2@example.com', + publicEmail: 'testuser2@example.com', state: 'active', name: 'Test User 2', webUrl: 'https://gitlab.com/testuser2', From 3605370af64a3ddb82b5841e0cbc68f89c8c69d7 Mon Sep 17 00:00:00 2001 From: Larry Knott Date: Fri, 22 Sep 2023 16:09:09 -0600 Subject: [PATCH 026/279] Only show pagination controls when necessary Signed-off-by: Larry Knott --- .changeset/fuzzy-pillows-remain.md | 5 +++++ plugins/techdocs/src/home/components/Tables/DocsTable.tsx | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/fuzzy-pillows-remain.md diff --git a/.changeset/fuzzy-pillows-remain.md b/.changeset/fuzzy-pillows-remain.md new file mode 100644 index 0000000000..d4fcb30415 --- /dev/null +++ b/.changeset/fuzzy-pillows-remain.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Only show pagination controls when necessary diff --git a/plugins/techdocs/src/home/components/Tables/DocsTable.tsx b/plugins/techdocs/src/home/components/Tables/DocsTable.tsx index 5e5b41ee3e..927eaf7256 100644 --- a/plugins/techdocs/src/home/components/Tables/DocsTable.tsx +++ b/plugins/techdocs/src/home/components/Tables/DocsTable.tsx @@ -94,14 +94,17 @@ export const DocsTable = (props: DocsTableProps) => { actionFactories.createCopyDocsUrlAction(copyToClipboard), ]; + const pageSize = 20; + const paging = documents && documents.length > pageSize; + return ( <> {loading || (documents && documents.length > 0) ? ( isLoading={loading} options={{ - paging: true, - pageSize: 20, + paging, + pageSize, search: true, actionsColumnIndex: -1, ...options, From 630ba351c1a0490fa1766ccd2cd6635171b89798 Mon Sep 17 00:00:00 2001 From: Chris Gemmell Date: Tue, 26 Sep 2023 08:47:24 +1000 Subject: [PATCH 027/279] Update .changeset/spotty-donkeys-give.md Co-authored-by: Johan Haals Signed-off-by: Chris Gemmell --- .changeset/spotty-donkeys-give.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/spotty-donkeys-give.md b/.changeset/spotty-donkeys-give.md index 92fa44fa37..fd035869ce 100644 --- a/.changeset/spotty-donkeys-give.md +++ b/.changeset/spotty-donkeys-give.md @@ -3,4 +3,4 @@ '@backstage/plugin-auth-backend': patch --- -Moved existing emailMatchingUserEntityAnnotation into `@backstage/plugin-auth-backend-module-microsoft-provider` and adapted SignInResolvers correctly" +Moved existing `emailMatchingUserEntityAnnotation` into `@backstage/plugin-auth-backend-module-microsoft-provider` and adapted SignInResolvers correctly From d26dc8ee43f7fe944cfc78d7bb33b8f3e6b834cf Mon Sep 17 00:00:00 2001 From: Chris Gemmell Date: Tue, 26 Sep 2023 08:47:41 +1000 Subject: [PATCH 028/279] Update .changeset/swift-steaks-fetch.md Co-authored-by: Johan Haals Signed-off-by: Chris Gemmell --- .changeset/swift-steaks-fetch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/swift-steaks-fetch.md b/.changeset/swift-steaks-fetch.md index 55a703ad59..80b23e7658 100644 --- a/.changeset/swift-steaks-fetch.md +++ b/.changeset/swift-steaks-fetch.md @@ -3,4 +3,4 @@ '@backstage/plugin-auth-backend': patch --- -Migrated the Microsoft auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-microsoft-provider` module. +Migrated the Microsoft auth provider to new `@backstage/plugin-auth-backend-module-microsoft-provider` module package. From 10a0d818da44e8cdbb24da12a49301569b2b0432 Mon Sep 17 00:00:00 2001 From: Romain Billon Date: Tue, 26 Sep 2023 09:08:02 +0200 Subject: [PATCH 029/279] Update .changeset/twenty-bags-sin.md Co-authored-by: Vincenzo Scamporlino Signed-off-by: Romain Billon --- .changeset/twenty-bags-sin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/twenty-bags-sin.md b/.changeset/twenty-bags-sin.md index 5eb455f20e..797fd5bfef 100644 --- a/.changeset/twenty-bags-sin.md +++ b/.changeset/twenty-bags-sin.md @@ -2,4 +2,4 @@ '@backstage/plugin-tech-insights': patch --- -Export ScorecardInfo and ScorecardsList Components to be able to use manually queried CheckResults directly. +Export `ScorecardInfo` and `ScorecardsList` components to be able to use manually queried check results directly. From 930ac236d80f0221be5f0029aa18ec8c94726310 Mon Sep 17 00:00:00 2001 From: enaysaa Date: Thu, 14 Sep 2023 15:13:18 +0100 Subject: [PATCH 030/279] Migrate jenkins-backend plugin to new backend system Signed-off-by: enaysaa --- .changeset/olive-geese-rest.md | 5 ++ packages/backend-next/package.json | 1 + packages/backend-next/src/index.ts | 1 + plugins/jenkins-backend/README.md | 14 +++++ plugins/jenkins-backend/api-report.md | 5 ++ plugins/jenkins-backend/package.json | 2 + plugins/jenkins-backend/src/index.ts | 1 + plugins/jenkins-backend/src/plugin.test.tsx | 22 +++++++ plugins/jenkins-backend/src/plugin.ts | 64 +++++++++++++++++++++ yarn.lock | 3 + 10 files changed, 118 insertions(+) create mode 100644 .changeset/olive-geese-rest.md create mode 100644 plugins/jenkins-backend/src/plugin.test.tsx create mode 100644 plugins/jenkins-backend/src/plugin.ts diff --git a/.changeset/olive-geese-rest.md b/.changeset/olive-geese-rest.md new file mode 100644 index 0000000000..547fb828d8 --- /dev/null +++ b/.changeset/olive-geese-rest.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-backend': patch +--- + +Added support for the [new backend system](https://backstage.io/docs/backend-system/) diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 9e2dc78bfd..bb5c20a32a 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -38,6 +38,7 @@ "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", "@backstage/plugin-devtools-backend": "workspace:^", "@backstage/plugin-entity-feedback-backend": "workspace:^", + "@backstage/plugin-jenkins-backend": "workspace:^", "@backstage/plugin-kubernetes-backend": "workspace:^", "@backstage/plugin-lighthouse-backend": "workspace:^", "@backstage/plugin-linguist-backend": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index 9fda69635b..bc95dccc05 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -29,6 +29,7 @@ backend.add( backend.add(import('@backstage/plugin-catalog-backend/alpha')); backend.add(import('@backstage/plugin-devtools-backend')); backend.add(import('@backstage/plugin-entity-feedback-backend')); +backend.add(import('@backstage/plugin-jenkins-backend')); backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); backend.add(import('@backstage/plugin-lighthouse-backend')); backend.add(import('@backstage/plugin-linguist-backend')); diff --git a/plugins/jenkins-backend/README.md b/plugins/jenkins-backend/README.md index 133b9f42e2..d6f8fa5472 100644 --- a/plugins/jenkins-backend/README.md +++ b/plugins/jenkins-backend/README.md @@ -8,6 +8,20 @@ This is the backend half of the 2 Jenkins plugins and is responsible for: - finding the appropriate job(s) on that instance for an entity - connecting to Jenkins and gathering data to present to the frontend +## New Backend System + +The jenkins backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; + const backend = createBackend(); + // ... other feature additions + backend.add(import('@backstage/plugin-jenkins-backend')); + backend.start(); +``` + ## Integrating into a backstage instance This plugin needs to be added to an existing backstage instance. diff --git a/plugins/jenkins-backend/api-report.md b/plugins/jenkins-backend/api-report.md index fd1365547d..28dafa70bf 100644 --- a/plugins/jenkins-backend/api-report.md +++ b/plugins/jenkins-backend/api-report.md @@ -3,6 +3,7 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { CatalogApi } from '@backstage/catalog-client'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; @@ -79,6 +80,10 @@ export interface JenkinsInstanceConfig { username: string; } +// @public +const jenkinsPlugin: () => BackendFeature; +export default jenkinsPlugin; + // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 717d94733d..5cfad5de19 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -31,11 +31,13 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-catalog-node": "workspace:^", "@backstage/plugin-jenkins-common": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", "@backstage/plugin-permission-node": "workspace:^", diff --git a/plugins/jenkins-backend/src/index.ts b/plugins/jenkins-backend/src/index.ts index c55335c52d..4d01566a60 100644 --- a/plugins/jenkins-backend/src/index.ts +++ b/plugins/jenkins-backend/src/index.ts @@ -21,3 +21,4 @@ */ export * from './service'; +export { jenkinsPlugin as default } from './plugin'; diff --git a/plugins/jenkins-backend/src/plugin.test.tsx b/plugins/jenkins-backend/src/plugin.test.tsx new file mode 100644 index 0000000000..22ef6de078 --- /dev/null +++ b/plugins/jenkins-backend/src/plugin.test.tsx @@ -0,0 +1,22 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { jenkinsPlugin } from './plugin'; + +describe('jenkins', () => { + it('should export the jenkins plugin', () => { + expect(jenkinsPlugin).toBeDefined(); + }); +}); diff --git a/plugins/jenkins-backend/src/plugin.ts b/plugins/jenkins-backend/src/plugin.ts new file mode 100644 index 0000000000..8da26d62aa --- /dev/null +++ b/plugins/jenkins-backend/src/plugin.ts @@ -0,0 +1,64 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + createBackendPlugin, + coreServices, +} from '@backstage/backend-plugin-api'; +import { DefaultJenkinsInfoProvider } from './service/jenkinsInfoProvider'; +import { createRouter } from './service/router'; +import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; + +/** + * Jenkins backend plugin + * + * @public + */ +export const jenkinsPlugin = createBackendPlugin({ + pluginId: 'jenkins', + register(env) { + env.registerInit({ + deps: { + logger: coreServices.logger, + permissions: coreServices.permissions, + httpRouter: coreServices.httpRouter, + config: coreServices.rootConfig, + catalogClient: catalogServiceRef, + }, + async init({ logger, permissions, httpRouter, config, catalogClient }) { + const winstonLogger = loggerToWinstonLogger(logger); + const jenkinsInfoProvider = DefaultJenkinsInfoProvider.fromConfig({ + config, + catalog: catalogClient, + }); + httpRouter.use( + await createRouter({ + permissions, + /** + * Logger for logging purposes + */ + logger: winstonLogger, + /** + * Info provider to be able to get all necessary information for the APIs + */ + jenkinsInfoProvider, + }), + ); + }, + }); + }, +}); diff --git a/yarn.lock b/yarn.lock index c1887a4ea0..e988afffbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7455,12 +7455,14 @@ __metadata: resolution: "@backstage/plugin-jenkins-backend@workspace:plugins/jenkins-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/catalog-client": "workspace:^" "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" "@backstage/plugin-jenkins-common": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" @@ -25515,6 +25517,7 @@ __metadata: "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" "@backstage/plugin-devtools-backend": "workspace:^" "@backstage/plugin-entity-feedback-backend": "workspace:^" + "@backstage/plugin-jenkins-backend": "workspace:^" "@backstage/plugin-kubernetes-backend": "workspace:^" "@backstage/plugin-lighthouse-backend": "workspace:^" "@backstage/plugin-linguist-backend": "workspace:^" From 17bf9fce0b1dddcf5a1e81647497b65db6aa4581 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 15 Sep 2023 14:03:22 -0500 Subject: [PATCH 031/279] docs: updated aroung other plugin types Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/assets/plugins/create-plugin_types.png | Bin 0 -> 143712 bytes .../{ => plugins}/my-plugin_screenshot.png | Bin .../software-catalog/extending-the-model.md | 3 +++ docs/plugins/create-a-plugin.md | 14 +++++++++++--- docs/plugins/index.md | 2 +- 5 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 docs/assets/plugins/create-plugin_types.png rename docs/assets/{ => plugins}/my-plugin_screenshot.png (100%) diff --git a/docs/assets/plugins/create-plugin_types.png b/docs/assets/plugins/create-plugin_types.png new file mode 100644 index 0000000000000000000000000000000000000000..d10ae04442f6d0421578e977d83dc31cdb8a0476 GIT binary patch literal 143712 zcmZ^J1C%DqvTkGA?rGb$ZQHhO>u+OP)8@1>)10<#+qSL0{buj8?>*<;cVE@2m5~wg zWhA01sG2&e-z(s3?(= zi=&0LojC}IR8)#4l$PoUMvkruaXko_iil&d6ao=>D29*^id`s~5EU`S7j)j%pWCYg zU>t7hVm06{IdWiuU~-^`7KTTc{Ozt;^<&EI?J6;s68G8|yxgaejL$&8GQBCQ1tP(v0?|31 zij)V^1V2&``We39^LSn8+ur?li2lpjf-ehNd@aZfQpEx})C@85YJ*XjM^2~|s7j+TENR=dZbme>!bL_P|U`VMtv{!O_+*l}c=*(~()dNM2pYHuP$ee?6` z8T662FIX=5TLOZYnH8cIs%T_Szmo~o3;}2FyR#u5tO2;O`#?tXQ#W7d+SeT9RTw0g zC72(fx?e-d6LSmjAb9cve$rrK3m$?s1!WR=Azwl*lMzg@Gbd7xp!%3zDY6fM8=sq_i=nJS6roDtp?#;}_*ZJqbz{s2zZ0pK_ETwZ2NU;3SIb`TM1}2mI9l+#Q9p3B!Nf(a7B$A>0h#y zvQ1-{=7#x3wQu+c%MiQNsKy!|#32w}&|r{~{jLOqPVUa`;6fk%%AK8?{nVYfkpX9( z4wHl+K>Vw#E5WxP(Oih#28_+`Nd8CX>DP1lklih!d>KVjBRjWnpq=DwI|{5{O1e>( zd!C!Y6u05PgrOrrn2At|f^V2!?3yRZjZo7eEkab35K{wFjOdp^I6^LrFqfflx>1}^ zvq3R?%$@MpgUUU{rri_WIsllQ{80#lnhOdAx?=Gw1 zselnUD%YZ14Ds)e;=;GwR&aud*puc$%8i`r#@w~Nx$xrO3^p7f-0lE!g2fuiIgtU8 zxk6_`>3YdTsPlt=r#O9g!nrJF=;b9z_^DV=?$gteE;CN7K+Zr`MS4k*L)7?{5am^h zERlF5VPEnav9okok;*L2tir7GEV>Hj3AlEworDK@MB>~qi3?0iaC?Yfj9=JW@>@oM zcufgV$%M*p6m8UG6hr3g0cvsdZAO`VL-C99*I(T8EAtEUJg3&D`lq<;?CfytjtyMw z`Kxpd3pT#<&kJAsypF(!F$1YvGz%0 zP+rnVE6gg?t!k5Pl5f&fl$_FM)OM^jDBe`=Q1F-AlE^L0E$z|*TCLSl&h>4t`|!yh8{xre0a6^H24hM1#vlXB17(R7k$uu?GaJo>PTl!DxN0X=-dlD z{7#FWaV`wb4o(5w>o#7i*TsEPh@XeMJBdfN0|%4PKTuFeWhB^Qy)I6-M_nu3Iu0dV z;oP%M7LOlCH)iy=J2&4;pf*gChxpVSW{cRdrxL< z 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≪VaVX<__hEDB`v{R3((zsB7ZP;Yy5Ey> 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 Pu$zX8_RDG|>o5Nc{4@l~ literal 0 HcmV?d00001 diff --git a/docs/assets/my-plugin_screenshot.png b/docs/assets/plugins/my-plugin_screenshot.png similarity index 100% rename from docs/assets/my-plugin_screenshot.png rename to docs/assets/plugins/my-plugin_screenshot.png diff --git a/docs/features/software-catalog/extending-the-model.md b/docs/features/software-catalog/extending-the-model.md index 52ef565837..06140bdf75 100644 --- a/docs/features/software-catalog/extending-the-model.md +++ b/docs/features/software-catalog/extending-the-model.md @@ -447,6 +447,9 @@ want to have an isomorphic package that houses these types. Within the Backstage main repo the package naming pattern of `-common` is used for isomorphic packages, and you may choose to adopt this pattern as well. +You can generate an isomorphic plugin by running:`yarn new --select plugin-common` +or you can run `yarn new` and then select "plugin-common" from the list of options + There's at this point no existing templates for generating isomorphic plugins using the `@backstage/cli`. Perhaps the simplest wat to get started right now is to copy the contents of one of the existing packages in the main repository, diff --git a/docs/plugins/create-a-plugin.md b/docs/plugins/create-a-plugin.md index cbd789c757..cc8c2f1296 100644 --- a/docs/plugins/create-a-plugin.md +++ b/docs/plugins/create-a-plugin.md @@ -8,7 +8,7 @@ A Backstage Plugin adds functionality to Backstage. ## Create a Plugin -To create a new plugin, make sure you've run `yarn install` and installed +To create a new frontend plugin, make sure you've run `yarn install` and installed dependencies, then run the following on your command line (a shortcut to invoking the [`backstage-cli new --select plugin`](../local-dev/cli-commands.md#new)) @@ -18,7 +18,7 @@ from the root of your project. yarn new --select plugin ``` -![](../assets/getting-started/create-plugin_output.png) +![Example of output when creating a new plugin](../assets/getting-started/create-plugin_output.png) This will create a new Backstage Plugin based on the ID that was provided. It will be built and added to the Backstage App automatically. @@ -27,7 +27,7 @@ will be built and added to the Backstage App automatically. > should be able to see the default page for your new plugin directly by > navigating to `http://localhost:3000/my-plugin`. -![](../assets/my-plugin_screenshot.png) +![Example of new plugin running in browser](../assets/plugins/my-plugin_screenshot.png) You can also serve the plugin in isolation by running `yarn start` in the plugin directory. Or by using the yarn workspace command, for example: @@ -39,3 +39,11 @@ yarn workspace @backstage/plugin-my-plugin start # Also supports --check This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can be found inside the plugin's `dev/` directory. + +### Other Plugin Types + +There are other plugin types that you can chose from. To be able to select the type +when you create a new plugin just run: `yarn new`. You'll then be asked what type of +plugin you wish to create like this: + +![List of available plugin types to pick from](../assets/plugins/create-plugin_types.png) diff --git a/docs/plugins/index.md b/docs/plugins/index.md index a582556311..755c1b8a7d 100644 --- a/docs/plugins/index.md +++ b/docs/plugins/index.md @@ -12,7 +12,7 @@ development tool as a plugin in Backstage. By following strong [design guidelines](../dls/design.md) we ensure the overall user experience stays consistent between plugins. -![plugin](../assets/my-plugin_screenshot.png) +![plugin](../assets/plugins/my-plugin_screenshot.png) ## Creating a plugin From 9aa26f8c61542fa133e3da99158afb91a204bbb6 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Mon, 18 Sep 2023 13:34:03 -0500 Subject: [PATCH 032/279] Corrected image Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/assets/plugins/create-plugin_types.png | Bin 143712 -> 145056 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/plugins/create-plugin_types.png b/docs/assets/plugins/create-plugin_types.png index d10ae04442f6d0421578e977d83dc31cdb8a0476..ea45d1cdd130fa704d42517ec9e5fce0a4701bd3 100644 GIT binary patch delta 140862 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 {SLer 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

Zzn76}CRc17PB^4NO+cy@!qsGBtzPYTu-_Wn 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રLgHPm&F@@)?C;%W5#6{S=*rnGmN?4UU1 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 Jr1U)e{{W~vGIRg{ delta 139551 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%0D`~AfUZceq82AtgcajUfc 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