From 3f24975c0ce614e0ae3d11fa52d2065cb234141b Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Thu, 9 May 2024 14:37:43 +0530 Subject: [PATCH 01/10] Update --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index 119da7a..d939d6b 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:c653f31 + image: xldevdocker/helloworld:41a1663 ports: - containerPort: 8080 --- From 4cb1ab790dab8f6a114017d9cf7024af4b376d98 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Thu, 9 May 2024 14:42:27 +0530 Subject: [PATCH 02/10] Update --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index d939d6b..45ce4c1 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:41a1663 + image: xldevdocker/helloworld:90a97c7 ports: - containerPort: 8080 --- From df40bab70fc9fcc2a61c6aecdd26b2ccd2545346 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Thu, 9 May 2024 14:45:30 +0530 Subject: [PATCH 03/10] Update Docker Image --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index 45ce4c1..d939d6b 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:90a97c7 + image: xldevdocker/helloworld:41a1663 ports: - containerPort: 8080 --- From 6204d690300e589e7358c5b285928094d32ead31 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Thu, 9 May 2024 14:47:35 +0530 Subject: [PATCH 04/10] Update --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index d939d6b..119da7a 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:41a1663 + image: xldevdocker/helloworld:c653f31 ports: - containerPort: 8080 --- From 151efbec34081dcad72f06d8a9aa39e467fb6e62 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Thu, 9 May 2024 14:59:59 +0530 Subject: [PATCH 05/10] Update --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index 119da7a..d939d6b 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:c653f31 + image: xldevdocker/helloworld:41a1663 ports: - containerPort: 8080 --- From 7cfeb2eef1b8d1fa9c0d9802c1cc54a1dde640fb Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Tue, 14 May 2024 11:23:19 +0530 Subject: [PATCH 06/10] Update tag Version --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index d939d6b..45ce4c1 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:41a1663 + image: xldevdocker/helloworld:90a97c7 ports: - containerPort: 8080 --- From aa44fc533254883bbaaa666af5c3fc7999474f16 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Tue, 14 May 2024 12:41:06 +0530 Subject: [PATCH 07/10] Update tag Version --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index 45ce4c1..d939d6b 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:90a97c7 + image: xldevdocker/helloworld:41a1663 ports: - containerPort: 8080 --- From 0552126c2b4263a3094af67a2ff1dac3ed163e13 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Tue, 30 Sep 2025 15:20:26 +0530 Subject: [PATCH 08/10] S-124550: Release ArgoRollouts Templates improvements --- argoRollouts/README.md | 12 +++--------- argoRollouts/manifests/guestbook-canary-rollout.yaml | 4 ++-- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/argoRollouts/README.md b/argoRollouts/README.md index 87c65f6..d9289f0 100644 --- a/argoRollouts/README.md +++ b/argoRollouts/README.md @@ -1,4 +1,4 @@ -# ArgoRollout using Release, EKS and Linkerd +# ArgoRollout using Release and EKS Use the templates and manifests to perform bluegreen and canary deployments. @@ -7,9 +7,8 @@ Use the templates and manifests to perform bluegreen and canary deployments. 1. Kubernetes cluster (EKS Workshop - https://www.eksworkshop.com/) 2. AWS Load Balancer Controller (https://www.eksworkshop.com/beginner/180_fargate/prerequisites-for-alb/) -3. Linkerd (https://linkerd.io/2.11/getting-started/) -4. Argo rollouts setup in the EKS cluster(https://argoproj.github.io/argo-rollouts/) and argo rollouts kubectl plugin installed in a Unix host. -5. Digital.ai Release with xlr-argo-rollouts-integration and xlr-kubernetes-integration plugins installed +3. Argo rollouts setup in the EKS cluster(https://argoproj.github.io/argo-rollouts/) and argo rollouts kubectl plugin installed in a Unix host. +4. Digital.ai Release with xlr-argo-rollouts-integration and xlr-kubernetes-integration plugins installed ## Initial Canary Rollout Setup in K8s @@ -25,8 +24,6 @@ Alternatively follow the steps to set up the deployment
→ creates a rollout with canary strategy, replica set of 5 pods with image guestbook:blue 1. `kubectl apply -f https://raw.githubusercontent.com/xebialabs-community/howto/master/argoRollouts/manifests/redis.yaml -n guestbook-canary`
→ creates a redis pod and service -1. `linkerd viz dashboard &` -
→ dashboard shows the pods and trafic split between the two services, canary and stable under the guestbook-canary namespace 1. `kubectl get service guestbook-stable -n guestbook-canary`
→ to view the application in browser :8080/index.html @@ -43,7 +40,6 @@ Alternatively follow the steps to set up the deployment 1. kubectl argo rollouts set image guestbook-canary-rollout guestbook-container=xldevdocker/guestbook:green -n guestbook-canary
→ updates 20% of pods in guestbook-canary-rollout with new image -1. check the linkerd dashboard for trafic split to reflect 20(weight of first step) in the canary service 1. kubectl argo rollouts promote guestbook-canary-rollout -n guestbook-canary
→ executes the rest of the update steps 1. kubectl argo rollouts promote guestbook-canary-rollout -n guestbook-canary @@ -79,8 +75,6 @@ Alternatively follow the steps to setup the deployment
→ creates a rollout with bluegreen strategy, replica set of 2 pods with image guestbook:blue 1. `kubectl apply -f https://raw.githubusercontent.com/xebialabs-community/howto/master/argoRollouts/manifests/redis.yaml -n guestbook-bluegreen`
→ creates a redis pod and service -1. `linkerd viz dashboard &` -
→ dashboard shows the pods created 1. `kubectl get service guestbook-bluegreen-active -n guestbook-bluegreen`
→ to view the application in browser :8080/index.html diff --git a/argoRollouts/manifests/guestbook-canary-rollout.yaml b/argoRollouts/manifests/guestbook-canary-rollout.yaml index 3874d97..40c38ed 100644 --- a/argoRollouts/manifests/guestbook-canary-rollout.yaml +++ b/argoRollouts/manifests/guestbook-canary-rollout.yaml @@ -8,8 +8,8 @@ spec: canary: canaryService: guestbook-canary stableService: guestbook-stable - trafficRouting: - smi: {} + # trafficRouting: + # smi: {} steps: - setWeight: 20 - pause: {} From a7565f6da901da9a8891cd4ec711a6fac2c11032 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Tue, 30 Sep 2025 15:24:26 +0530 Subject: [PATCH 09/10] S-124550: Minor fix --- argocd/helloworld-cd/dev/helloworld.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argocd/helloworld-cd/dev/helloworld.yaml b/argocd/helloworld-cd/dev/helloworld.yaml index d939d6b..119da7a 100644 --- a/argocd/helloworld-cd/dev/helloworld.yaml +++ b/argocd/helloworld-cd/dev/helloworld.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: helloworld-container - image: xldevdocker/helloworld:41a1663 + image: xldevdocker/helloworld:c653f31 ports: - containerPort: 8080 --- From 18046cab2d2d49960bb3ef32efbe199eb15c6fb3 Mon Sep 17 00:00:00 2001 From: Kevin Daniel Date: Tue, 14 Oct 2025 12:14:59 +0530 Subject: [PATCH 10/10] S-125288: ArgoRollouts: Update Templates to work without service mesh --- .../guestbook-bluegreen-rollout.yaml | 2 -- .../manifests/guestbook-canary-rollout.yaml | 4 ---- argoRollouts/manifests/redis.yaml | 2 -- ...llouts_Initial_BlueGreen_Rollout_Setup.xlr | Bin 2403 -> 2496 bytes ..._Rollouts_Initial_Canary_Rollout_Setup.xlr | Bin 2424 -> 2500 bytes 5 files changed, 8 deletions(-) diff --git a/argoRollouts/manifests/guestbook-bluegreen-rollout.yaml b/argoRollouts/manifests/guestbook-bluegreen-rollout.yaml index 51a7a78..8a1d0cb 100644 --- a/argoRollouts/manifests/guestbook-bluegreen-rollout.yaml +++ b/argoRollouts/manifests/guestbook-bluegreen-rollout.yaml @@ -15,8 +15,6 @@ spec: app: guestbook-bluegreen template: metadata: - annotations: - linkerd.io/inject: enabled labels: app: guestbook-bluegreen spec: diff --git a/argoRollouts/manifests/guestbook-canary-rollout.yaml b/argoRollouts/manifests/guestbook-canary-rollout.yaml index 40c38ed..11e1a93 100644 --- a/argoRollouts/manifests/guestbook-canary-rollout.yaml +++ b/argoRollouts/manifests/guestbook-canary-rollout.yaml @@ -8,8 +8,6 @@ spec: canary: canaryService: guestbook-canary stableService: guestbook-stable - # trafficRouting: - # smi: {} steps: - setWeight: 20 - pause: {} @@ -25,8 +23,6 @@ spec: app: guestbook-canary template: metadata: - annotations: - linkerd.io/inject: enabled labels: app: guestbook-canary spec: diff --git a/argoRollouts/manifests/redis.yaml b/argoRollouts/manifests/redis.yaml index 5e11ddb..5f54a4c 100644 --- a/argoRollouts/manifests/redis.yaml +++ b/argoRollouts/manifests/redis.yaml @@ -23,8 +23,6 @@ spec: app: redis template: metadata: - annotations: - linkerd.io/inject: enabled labels: app: redis selector: redis diff --git a/argoRollouts/templates/Argo_Rollouts_Initial_BlueGreen_Rollout_Setup.xlr b/argoRollouts/templates/Argo_Rollouts_Initial_BlueGreen_Rollout_Setup.xlr index 9afd38bb5113a89524269c574f604366fb405c12..de61076759770cf911517dc07a25a29acdf2be0d 100644 GIT binary patch delta 2347 zcmV+`3DoxE62KD@6aWYa2mtysPFs-1P#)Zs))W@=}$)h5(v_OrEEk4*FV393`hY%!YWU@tc)K-h|l9`QmWab%DDp<@pnZ)%TY$BRAh z#VCyaZsW(uW~9*XB;zUH*V5-4Q{~4a=Y{Wgsx;S`vGYRBrFAc}OqRNctv7;ePBQCd zR>JTf3P7|>YXZ8=ab-alz{(8RL=&Yi(SP=Ox6#lJhNEa|yRmD>w*7CEO*1k_FeiA(Dt&ZuWkG>-#r38~S5TN>&+M6@P!vBDfI zdi+CQ>N*$eFf>1Q{6#RlbJ1=@@_d%_95ODTc-lo=(L;eYel4^}S2 zFMg2t*o!?cNTM(aQ$n0z7Qkfu@OQ-Hu9oqrbNdc*IGaO0-xfNP>SNwTUU83q%vY%|NTXMhrI2K423 z+SgNQ&??$fP-RdrDf(m-ukGu|s5#rrD0+TgSvOa*%=aQ)AK_qWMHUqvHxW9pw6W~q z$c_Gbvpu1s$1_coE`iNBX3jwl_6_QtoRMOYNTS#g7w@ol)yx6IZGVbnHwqsLft~?5Kxc zm4%k8NrjQqrZqOsdVf`QRm-%EBFACln;b;ts+TO7beeF}aQ+0oGUqU}(^HvUvn7?c%gw`>+EOagfu*(vr@@e+J zgyz|mSaT&sW!!~=dniDydtS!lzQkL}HHKw=NWL^?>?Q4Wjekn7Yf!oprh#uI8q6wQ z$x@(Ac-v^3{5$M{c$`7}>GRnDKAMI{viHZB)hJf^3G-qir8vk9gTwt)SpZ#LXhhkh zG=ppBij7`KQKu%V{wr15`CZ@kuI!d2_E`aV$QSjt}M|0?G+7vLPIxq9dP zeGR6uwRRrFl79;pZ+piB=CCGsF(L7Tuq=V}*qWDkkxHao4img!&&~aMfC;n&$nO-a zxh#v@YWlzHhW}e}4_a-S9QmP%>i73n;=(vc#w@U@>oFP;Cmp+q=TKm-YrF3E_21sZ zhY40cr`1UF+=-t%@pC8sdd>YTo%n>_^2JWvw2o8z@PCj{jTe;%VU$*)#&NOrRucA- zWagQgvMfW-rP4(uG2B;Yh_yg$g?4D0-vxSxYN_IyiRpTD{|7M~4j;ttbC%qI2|WJK z4ui2NRfeH43ASQ)L{$%K2Sf4GL14%{Vh28>ewuo8oDxDtn6U%`n*=PPCqm$lKic>A zAMGEaX@7J3dj`{IFntEoldAV;0n-z@)DbWxYA$mne|^E_`Pv~_z91bWHNE6yNK&nQ z2T2Ml&lIsWs-Q)ir*-p911)A{)wN=)CLr2W2;E@emqEN<(7@mqS9DO>>``io$g`3r zU`)N3%(+Al=+BByJn`=)p;i$n+><3Al5zGTJ85&mv1Js z*SC}DmSJVKy&PB*eyT2W_GOhiaBPVOMXjE+&Ss?X}blxKi=@6aWYa2mtys zPFs_22s%L3Gt@Is(gCYL7uGc~G}SXRu~e!B08mQ@2;mTAsWSio073u&08mQ-0u%rg z00;;O0QxgdTgpg{zk3J(09GoK=?FC+`ZG>j;Sgo1GXMYpLI3~&4FCWD0000000000 R006#|JqaKNEC~Pr000y9c!~f3 delta 2253 zcmV;;2r~D;6XOyNP)h>@6aWYa2mmQX8dZ@FFMs9Lig+J-b9}5*ld)ZvHV?aYsXzdf zFrol12+C2V^53_?OQa-clz1|pnb;4u)CbV$>ub>bJYZxn9-L-b$}mz)@O*SBQbJ{D zhXIPCDD=(9bx0CB34Dlf;8|8;1$He)BH|{1Axwwufdgw4%&Q$-FkH@^Tytl@+Oy%vfkjDLcs5|rljWUxY?&IHGWl$5L5Oi;2+^JGw4 zKb34grxK|DeSiZ{w9+3xf4{${uta3W0S-MYwoK~!eu%6va9xV*7$r$!`-i-!^#+v% z*J!1AwZX}$TAYM1YvquPG`nJ27!di4{;7kBc%{ttRQE)I{RKxRqm8Wn$=%= zPC*ckIe&U1#f<^=+#7dp7NOzl_@Ms&R_&5{%lV zCy1qmq_YL$B<-z=VgbuMd^ve$-6UQTcmYC*?Rc(f2BBqPpL)pkvFF96cU;{}=_*Sh z;Kt1(FU|b6!cn#Q8w>$dbXIRP6KX-_tjgkY!&A}73-ElORU4uFMo~R%H3*v z!m>RT)%3Jo#!egPGk3%L{BQ!r4a3B<%)oQ8>qIz=U7W;bU=l$q@M8-8anYtNPk zTqDU)oR;-PXvzRIHnR+hol4$Bu`A!}Ivt%I*)rfjul8)o2%NT=Vesa>+;J{Nk?jP$ zGHXw@B=Zu?YOf!%xL&GSw|_RNHL+&)OxDc{FDaQZ2>f2wb@%S%96|Xa7D$o<9_q3C z%giZ6OXq0ci4R{Mnh1Ub`4)F|0DFXP3$Eh2sIdDv(EP`aLZe%4k{J1q7eRgo)@`?a{PADAD5c>=nQcrH+!?u@$-&uFMmTHjiz9?8Gk3(vk>+|i?|W> zBg;kDv7*F^gNTxYjyx-JC03IX{-$+nt$lh{wn#(wkUWEd;hX%3#j2BfkirTv-F^N( zF4f1?W71RQlsA63{cw7HeQ^%*k4V7~-W1>?V(L=J$$`0C$%2-x1#QluP4M}Ux{(5ZNu{eN$+SbD+NObT8acPi-}&8b{>f&s^U2Umtmh~9jke6G#dDS^uh z$*w9OyWqO%ZzXD+%g;o?!6vv0G{EpH^lUiJVEp;Z$$);+T^6Mu4>8MOtn?G4&qN5m zmqHruyBW2hczLP-nd3r_qOB`7Y9V-)!Lal{ux>}U-6OU|ynieJ12_d=ysf4gxTqz- z#=9l`4|4|`Q6C+vv^+30sxCl|s*X0g64~$ys$}>}B|FqN>S1%E*7xO%Vo*jI`&f++ zV`FXI^CjbCylr~-P*n=SN61QiCw47NiQ|}#^L_Zzd89Fc zw#9Hc>%Ah)E7H6o&7WPtKN->-(a?T4($qcgSezLmtl&O+&-J3EsE*Ot_#hB@hf@9U zQ5uG(XF{sHlo;+Vr-_xo*a*$g)ZcUPE>=R0D<%}s!GHbl`EWSA=YPyuG7XmW@x=}U zu_HFcxY$n+LN*i!qJfD565(e*)k zuL%DF1^kmC{1N@^2O&HHkxYu;-ZC*-TPV#IsKv=z^JtuujeLufl9oZp$A(?vozhQ= z=bIYuw0~yVZpTJN00=C{h8m#1K3P->H8y`$qs8xfk3tE6!SXl^^R3 zx1yAr;)_ndf!pd70|{$!4A-n%Rp!)hIDYf9=6*39U7&1=2(J z_NfVShh_bN`is8-*9z4Q|9 z5cNx?%|=y&COuBQh(<}?yse}M4LDKh)$KMwS!s0u_F_eU2X!UOmymD?t46tAZ$j+w z^3gd>P?0J_6XCj4X;k_XEVSh2t3VglH8(QXGc+_-ss#X0O9u!HdjuUb0000& z0000`O928D02BZS2nYZvMH*GV$-;Ra2mk<*ER#kFH6JNO8dVH?1RXN~002S&000dD b000000000000000VUwB(AO_C}00000--R~{ diff --git a/argoRollouts/templates/Argo_Rollouts_Initial_Canary_Rollout_Setup.xlr b/argoRollouts/templates/Argo_Rollouts_Initial_Canary_Rollout_Setup.xlr index a0e546b97c9ad502d1b976c7c429b208940609e1..8107c2f7af74a8dfbb515a931e67ef91e1ade4ed 100644 GIT binary patch delta 2386 zcmV-Y39a_{62ub@P)h>@6aWYa2ml8(PFs-y@_Z{lZvaK|3as_sK$%iDG84ic@_6!Am?Q_;2_s`Na z;go1DMRs~A69&qPN3Ijufgc9oh7JjwFakgJS^xI**}IiVB6FRM zd+!C;oFu)sL=d&98NCVUJjGQRT>#4yV1E-$ls-qh%bkV;%O4EGspX6vYiwD+qimdz zIg05#Lz(M;Aw{l1u^g_XF3jwYW0GWW(qEA;Z>6BQQXq8YE?i_=)=9te;#BeZ928Rj z^BIi?vNHdEeR@Err~-WE1U_+n*CTG=(ZC{JY!Tx4;IZMTGn!^yzqH^AH6X7txPNz6 zg<=J(sI;_-4jQav0+sD4s1?sLW2+IV^u7Yd^(<9DrNIA?+dtXi;p4qj%Q%tuuhtyy zXYd7Rz9&f7ng|LrO|s=oDHH;D#W~xDt2RJjS7ocWk1-8Z7VQh%i_Ph1EYmBa2?LK3#JMA*}WB&XY$8==T z$oEIqFmwZlg)t2R8i%1r0e^gNcwCIj4WAg{%1y-q*FnIw8RCrhDvKSOUxkI}QW<<9S}_ zc4hxfh0yhE_sB4J{D5Y<$Y1I3r&Bb@iel>7gnEI^+z>{g?GozPVQfc!2&~gXZ}Uvc z)uh14Y1JAlXT2@DYJbnPjV#4stm@R?Oej6GH8nRAxGr0@!&DQ~5Ca-$L`` zLae!xqA>1E!7XH<)-5mNao+%lOAO2WkbG{;*h|{W5|!SSpnr5BOatFaRG5{$mAOEh z@U~Gm`H$EG@i_hQ*Ka3%_+lC!Nj`Nki&3ob6XwN4N^y`I28Y|JvH-d~(}=QBZU)!J z6&t;fqD)Ox{dcOg)0?*KP1!AT?6U&!kgv;;1uuCqvgv*i{$0*#F2E^JbL~#~rxHxZ zy|sNOmRzv$wtsirVGe787ZWnR6TO~5`nWgG@gfyTxg5}U@SOHqB~(!6@LQ8UE|&dN!S~bm{(}3*E94~ zDxDP)gMB52SPG1LffZQhIYWO?E!DVWVv-)V{W~!j4DQ5p%&!$S=KlmU(b2g|(9b4Y zR_unT;+1QEAbu?%3z$nR-(%E^W0#I%LdXzvkAQCxpM~^DAba+k`5@STGrx<8)#dF4 z5?>(k1%DEcs@z`%5|8Lm9gs-WT&7C?@tVuiwM~+AK^l~)ddX2JGf=f~gEk5Zw`Aj< zSD=YDZ`$UY3Qfvo)kFPQ;aV4nm0~3#cZk(cU5i1QHM$3gWcoMY^96$2(Attyl4q#p z>$grxw?mRuuL#FI+v;95deW-km{kThP1N3TOn*VO`M_7)9H;}TSEdJkAQ2>6FFY`1 z;80V&ps&}qgKd72T|M8?gm%=yFJf9FNjnq==~D}B_45^(qs$j9q%|}BN1ZnE<0#2t zD+*%WGOX5qdvX4LGJAJDnQnQ#-kRXjF?x~l?EhtK2}AIMcnBmyRn()AJ#>7B`4MjC z41b4Dyno*s7vk?s=IZ7C{W5I43>(MR+pjWg9MM;veE%*Qw0YbCo&t0#R)aEKH`HeN z;cd5J)i>Rd+cq}A174o1Oy}MCXW)HE!v2XW3V|%8ba|!&b6peVoO$Z!PiiKyMI{0 z9Kox={SC>od#PCVUYsS#C5MDQq@6aWYa2ml8(PFs_N2s%L3Gt@Is(gCYL7uGc~G}SXRu~e!B08mQ@2;mTAsWSio z073u&08mQ-0u%rg00;;O00%TqTc>}J5Pt{&0G}$8{s=Wi2Q*Gw;Sgo1GXMYpLI3~& z4FCWD0000000000006=W003=aZfRy^b963hb8l`?O9ci10000200IDh0000m2><{9 E0EzZy_y7O^ delta 2282 zcmV@6aWYa2mqr{8dZ@FCx2UWn@AS^E0pqTMIbYG1(HJ&%%+|nc+oUq9tD>K!8Doy#1Z&-IUOC1^nC{C%g0nzDlcnQ!{RzM zykoVL)|E_CS?GLjy%k(@l3K5cAnLwhSl6J747GB)0#>BJt~F8mglJ=8YEP$QI~Y%+ z8{3_`_T09AL)j!HOBB;Zjxra&AVqFLv3~;2rRE6-j8a0<9F9gC^6|A4v``9!u3bbW z$F`3~wdXgAFPET@`uhiT9>~W0`RUtZeS;<37g`aK4=F5iz=(2v-=QnWP2LvSsw#qpo=Und&6%{7@q4l5 zaJO%M^EgV#7_c0AS9W(zGvG(=s0u+KJjMM_hZ|CT;JTl zCQC8l*2SGD-Tb=7(Y5*uiV4)Ps1I65y#lqUs<=F`7OR`+fnsRIx~>wk3gTcc;W z+ieeccA%o0nYPc^8v}jjetMstPNaBYnD~wz_#XA#h=#F8lh_VyMp)oHE}hkZ-WR{J5H$Y5P#~24)Y?IMUF?P z>qLnY2NAHrK)x<=EjQOC{N2=}wT|iQazt8YhU6J83||#TDmR_d!xGkno9XlS38}eV zvnD;%PI(iD%Xi1;=cgwqe@8Sf;Y|bH5w6dqx*piewJM+-E#&?L$AnnEY8Hkjewoa5 zCIzsQ0&e8P?0*T((|=R33&Q9 z!@_~LXl|YAw7g*)R9%3aR1rTVYuO>2qsY;KN!h<$6p@ycuCVuK}`41zRqQ{Gxmuxon?C zF2ogR6st=1Nq56epI!YqhqEU>BTF+9>qW^U{`6qxJUuKR7^QsebC&MQvKCGQzx zo+0KLV*cvx{mCHa5yR}eLrgvMz5p;d0L#zbmR%nN|xy~`BR7*9lnAkRluy!lP>u|9*xCM3DhC;h#mNh`bpx^SwaYzVwn>NY!a}DJ_)Gn;(o^IXPkb<=^xO%KN(Ix zVwQa;oF*ueDf!1sE+<=uq}htJ&{u0d3i`&X5pE$+L79PkZuup|Y4etMd0#_ZrB+`w zmo?Z9A%ANnR;>vGV$J?giQ!R6!s!({gx%L3g8Caiw?2K|nS(5E*<*xZ{cqsQ6(aN0 z-jOp>il z6dqWSFsSwafEwLyQIv{8NL@8tC*mm=Ys5=aUw>Tufrrm6sAg*;llIU5FCL)(O>vbq z(?D!Dg$L!?2<`0i4OybhM{M>jGZR-$TKRdL7O)cqvF$k4Sid?wd3(Khb8&sM<5||0 zpz0i>&v^d4tM%qv6hROsQy{U6NBT5&rf%S}AP!vLold{;rOK6wH2%zGp`Kr=JTGg{ z%YWLB>E54gS$o7V`=KvYN&qsKJzybbiSvRMn zE+Fi_4yu+1l7e7FT^4c5^HmqA3QRdCX-g=-e!CDgdhN)HuJ{(3FJo)?B{&N1E=iu> zNyYNF;y6vuIHYU`Em#1?kMrL5Kdn)te)vu6nUb6OOV;L~YC5wXr#50BQZ%1PnO`jf z@2HIG?ii$Oj5?xvv4Jl@uHyL`3ohZ+9@iU;9bP^;frJ#PwhYnAYK=<&no1M9k!{;1 zE!ec_RiA8+KK}_&O9u!UyZOO02mk;BEdT&eO9KQH00;;O0HaVERg=&NIzZAh)-zDj z0joe4)-^XW*E2LUR;mR6P)i3040{9}GXMYpLI3~&P)h*<6aW+e2nYxOqfi=E8N2zx zGY9|x11*zE2{j+1P#RSXdjuUb0000&0000D0000000000000000Ctm}2_OdK2mk;8 E0LK?Un*aa+