From 09a060e1a72535fdc9109e9c845a16506f60bbab Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Fri, 20 Sep 2024 09:39:59 +0200 Subject: [PATCH] RED-9925: 500 when creating justification without technical name or name --- .../LegalBasisMappingPersistenceService.java | 29 ++++---- .../integration/tests/LegalBasisTest.java | 65 ++++++++++++++++-- .../dossiertemplates/DossierTemplate.zip | Bin 31723 -> 31736 bytes .../EFSA_sanitisation_GFL_v1.zip | Bin 549575 -> 548492 bytes .../EFSA_sanitisation_GFL_v1_adress_parts.zip | Bin 564156 -> 562625 bytes .../files/dossiertemplates/Flora.zip | Bin 137267 -> 137280 bytes ...EFSA sanitisation GFL v1_file-exchange.zip | Bin 778602 -> 774605 bytes 7 files changed, 74 insertions(+), 20 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java index 178c32de1..9f691baa1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java @@ -28,8 +28,8 @@ public class LegalBasisMappingPersistenceService { private final LegalBasisMappingRepository legalBasisMappingRepository; - private final int MAX_NAME_LENGTH = 255; - private final int MAX_LEGAL_BASIS_LENGTH = 4000; + public static final int MAX_NAME_LENGTH = 255; + public static final int MAX_LEGAL_BASIS_FIELD_LENGTH = 4000; @Transactional @@ -75,12 +75,7 @@ public class LegalBasisMappingPersistenceService { @Transactional public void addOrUpdateLegalBasis(String dossierTemplateId, LegalBasis legalBasis) { - if (legalBasis.getTechnicalName() == null) { - throw new BadRequestException("Can not add or update legal basis in dossier template because technical name it is not set."); - } - if (legalBasis.getName() == null) { - throw new BadRequestException("Can not add or update legal basis in dossier template because name it is not set."); - } + validateLegalBasis(legalBasis); var mapping = getLegalBasisMappingOrCreate(dossierTemplateId); @@ -132,20 +127,20 @@ public class LegalBasisMappingPersistenceService { throw new BadRequestException("The name cannot be empty!"); } + if (legalBasis.getTechnicalName().length() > MAX_LEGAL_BASIS_FIELD_LENGTH) { + throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", legalBasis.getTechnicalName().length(), MAX_LEGAL_BASIS_FIELD_LENGTH)); + } + if (legalBasis.getName().length() > MAX_NAME_LENGTH) { throw new BadRequestException(String.format("The name is too long (%s), max length %s", legalBasis.getName().length(), MAX_NAME_LENGTH)); } - if (legalBasis.getDescription().length() > MAX_LEGAL_BASIS_LENGTH) { - throw new BadRequestException(String.format("The description is too long (%s), max length %s", legalBasis.getDescription().length(), MAX_LEGAL_BASIS_LENGTH)); + if (legalBasis.getDescription() != null && legalBasis.getDescription().length() > MAX_LEGAL_BASIS_FIELD_LENGTH) { + throw new BadRequestException(String.format("The description is too long (%s), max length %s", legalBasis.getDescription().length(), MAX_LEGAL_BASIS_FIELD_LENGTH)); } - if (legalBasis.getReason().length() > MAX_LEGAL_BASIS_LENGTH) { - throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", legalBasis.getReason().length(), MAX_LEGAL_BASIS_LENGTH)); - } - - if (legalBasis.getTechnicalName().length() > MAX_LEGAL_BASIS_LENGTH) { - throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", legalBasis.getTechnicalName().length(), MAX_LEGAL_BASIS_LENGTH)); + if (legalBasis.getReason() != null && legalBasis.getReason().length() > MAX_LEGAL_BASIS_FIELD_LENGTH) { + throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", legalBasis.getReason().length(), MAX_LEGAL_BASIS_FIELD_LENGTH)); } } @@ -153,6 +148,8 @@ public class LegalBasisMappingPersistenceService { @Transactional public void setLegalBasisMapping(String dossierTemplateId, List legalBasisMapping) { + legalBasisMapping.forEach(this::validateLegalBasis); + legalBasisMappingRepository.findById(dossierTemplateId).ifPresentOrElse((lbm) -> { lbm.setVersion(lbm.getVersion() + 1); lbm.setLegalBasis(convert(legalBasisMapping, LegalBasisEntity.class)); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java index 1ae5de781..24b6f3ca4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java @@ -5,6 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; import org.assertj.core.util.Lists; @@ -15,6 +16,7 @@ import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisC import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; import feign.FeignException; @@ -88,12 +90,67 @@ public class LegalBasisTest extends AbstractPersistenceServerServiceTest { mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); assertThat(mapping.size()).isEqualTo(2); - LegalBasis finalLegalBasis2 = LegalBasis.builder().name(null).description("test").reason("test").technicalName("test").build(); - var e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), finalLegalBasis2)); + LegalBasis finalLegalBasis1 = LegalBasis.builder().name(null).description("test").reason("test").technicalName("test").build(); + var e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), finalLegalBasis1)); assertEquals(e.status(), 400); - LegalBasis finalLegalBasis1 = LegalBasis.builder().name("test").description("test").reason("test").technicalName(null).build(); - e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), finalLegalBasis1)); + LegalBasis finalLegalBasis2 = LegalBasis.builder().name("test").description("test").reason("test").technicalName(null).build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), finalLegalBasis2)); + assertEquals(e.status(), 400); + + legalBasis = LegalBasis.builder().name("test 4").description(null).reason("test ").technicalName("test 4").build(); + legalBasisClient.setLegalBasisMapping(List.of(legalBasis), dossierTemplate.getId()); + mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(mapping.size()).isEqualTo(1); + + legalBasis = LegalBasis.builder().name("test 5").description("test 5").reason(null).technicalName("test 5").build(); + legalBasisClient.setLegalBasisMapping(List.of(legalBasis), dossierTemplate.getId()); + mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(mapping.size()).isEqualTo(1); + + LegalBasis finalLegalBasis3 = LegalBasis.builder().name(null).description("test").reason("test").technicalName("test").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.setLegalBasisMapping(List.of(finalLegalBasis3), dossierTemplate.getId())); + assertEquals(e.status(), 400); + + LegalBasis finalLegalBasis4 = LegalBasis.builder().name("test").description("test").reason("test").technicalName(null).build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.setLegalBasisMapping(List.of(finalLegalBasis4), dossierTemplate.getId())); + assertEquals(e.status(), 400); + + + String longName = "a".repeat(LegalBasisMappingPersistenceService.MAX_NAME_LENGTH + 1); + String longField = "a".repeat(LegalBasisMappingPersistenceService.MAX_LEGAL_BASIS_FIELD_LENGTH + 1); + + LegalBasis longNameLegalBasis = LegalBasis.builder().name(longName).description("valid description").reason("valid reason").technicalName("valid technical name").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), longNameLegalBasis)); + assertEquals(e.status(), 400); + + LegalBasis validLegalBasis = LegalBasis.builder().name("valid name").description("valid description").reason("valid reason").technicalName("valid technical name").build(); + LegalBasis longNameSetLegalBasis = LegalBasis.builder().name(longName).description("valid description").reason("valid reason").technicalName("valid technical name").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.setLegalBasisMapping(List.of(validLegalBasis, longNameSetLegalBasis), dossierTemplate.getId())); + assertEquals(e.status(), 400); + + LegalBasis longDescriptionLegalBasis = LegalBasis.builder().name("valid name").description(longField).reason("valid reason").technicalName("valid technical name").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), longDescriptionLegalBasis)); + assertEquals(e.status(), 400); + + LegalBasis longDescriptionSetLegalBasis = LegalBasis.builder().name("valid name").description(longField).reason("valid reason").technicalName("valid technical name").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.setLegalBasisMapping(List.of(validLegalBasis, longDescriptionSetLegalBasis), dossierTemplate.getId())); + assertEquals(e.status(), 400); + + LegalBasis longReasonLegalBasis = LegalBasis.builder().name("valid name").description("valid description").reason(longField).technicalName("valid technical name").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), longReasonLegalBasis)); + assertEquals(e.status(), 400); + + LegalBasis longReasonSetLegalBasis = LegalBasis.builder().name("valid name").description("valid description").reason(longField).technicalName("valid technical name").build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.setLegalBasisMapping(List.of(validLegalBasis, longReasonSetLegalBasis), dossierTemplate.getId())); + assertEquals(e.status(), 400); + + LegalBasis longTechnicalNameLegalBasis = LegalBasis.builder().name("valid name").description("valid description").reason("valid reason").technicalName(longField).build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), longTechnicalNameLegalBasis)); + assertEquals(e.status(), 400); + + LegalBasis longTechnicalNameSetLegalBasis = LegalBasis.builder().name("valid name").description("valid description").reason("valid reason").technicalName(longField).build(); + e = assertThrows(FeignException.class, () -> legalBasisClient.setLegalBasisMapping(List.of(validLegalBasis, longTechnicalNameSetLegalBasis), dossierTemplate.getId())); assertEquals(e.status(), 400); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/DossierTemplate.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/DossierTemplate.zip index 5d533fdd983d93a694120dfd236f0b737dca285f..1813ca48cf87a994dc1120a19f5a1168d0898ddc 100644 GIT binary patch delta 493 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 H%;4$&=?X%E delta 7070 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 To^D|vg`Z$Mib`{3d;9+Z6IEIn diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1_adress_parts.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/EFSA_sanitisation_GFL_v1_adress_parts.zip index 492219dfc14768a32f40fe566d72344a6b0a7d85..7be90d8816ad625a23b6ee09cce7bf291816b5a4 100644 GIT binary patch delta 7380 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 diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/Flora.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/Flora.zip index 22e403ded71fbbf8e0df58becaa33106a528a838..24282703f7e53a7bce3edaf18d0da19b96351b4d 100644 GIT binary patch delta 3144 zcmZWrX;f5K5`J|b&}`kHG+WanaGaPKV+2&pq9cu?21gbFmx#zBwxS?ST+mFS!Nknb zxS>}q4I1%Ca&$n!g%}|kMTek*fa6Ap3m%umC4lItL}BW__t5dok9Y37-@8@!R@GPE zefvutkCr-?u3n>$`+VS}=pF0!4w57(is!HC7bi|K|n+Gocr5tpWpc&BNVQ zFxqiUo+M@3X4r6h4!nm+_rc(}r5lPZhY0?Aok!2peDtA<4Ai#63S6_#MoNl0Uj9K%n8Hx`|Q;p|WAl?g9duS5MQh+@lM0D+jD z4Slfu6qwj!6~+6fAP&Aj%W1H}4KeuOk<&1ajYQSw8#R!?iq#4Ebj7-K2uE`%oyCY9 zH4qIGada)D+kLx9k}&KG7=|sMf{#dXS24KoR2^qUt;whW^sb~1^44CZp zZzdDl3W&y_B3clXFY&N^AGB1EiEsjoadjP}!Z~cMgBf!07KvN7^ugSEu)r!jRu7Y) zNetfWwi?xqI&P5Fkd0?4ifs*$0z2t-CL6j9;VgLJ^#u@yN6%7aHmC?M-)6+t&uF{o z?+JaRp{4>8W~UPxaGTJ{1;W}}ICR1Ke?tsZV!%0=$PC*t@EjOY=!;EBr` zsm@_LRUbPpP@Q+E6JGMQR_BtRXdA~}_`^>S;V^2KB-zsV+A=RC*&FJa!C|9{wUzZ& z>$WhSmHs&{%W=l6Tx-!i-pk~ zY|9{8tiDWf)Zo_3Fi!T|E%Dsl-aL7dUaj@V+sS3Nf`%xY^TyoG2sRbm$Q_K87po;lzc{+ z1in1WjGJJRhkPs6d*PQiAyz(nP%-9@59-nV7WK~?7<&scV1*dW*mw)ZLz{T_#(9_;-r;S+Ea}{z7S6^b0}H#d|tSsKD^M;LpPbYUx<|E3y6r zQJhxt+Z9?ql&&6w4R;8feOQkz3t)iY5o{NjFK+snwiRjtodU>$RJ7a$8~h7P??Mul zA@?5i#?uo(<$&AUk}8`*Iu9&aBt9>K7BTz*{q937TX_uk-UUB==ElNMX{9?FlHkrp zsT~_rsjT52R%!*vT}%Ziuf!$y;C0?wsnNlGCLOB}zSRQpa@KK)FFxKIOIs+F)!5bo zQ(5H+obmw7FRM`8N{sk3{@4m>@}4S*AE`2n+z;58L5=`h+o&xI+DK0(i}wuDgTx0! zM02&o`&FATqlySbqVMeBEmfz>+gOsPq;e9R z_=mLbrvlAn<{H)PVhp8BWLwEDTd2akphnXkg>y|WP<#BriM@v{I%Z%aYK04v*ubPV z2C21rs6Dl~_X$y^>_2p<=e4-@DfHrf&u9%Ad5Y4QbVi`PdEOa~7$+VRF=`al2cJA9 zRho{aPr!$-tkO2e5aFGF&LM3LMmGsvf&!@;kH;Ue_>tJ+bto0T_Hqr zMPIPAY9tOaYnOXp2=5fLkL-bd)W`bu3>as5OFmMfpD&Vb4tT zzmsgw65%`i-kwc#>KUo|;o*zD)X;X9fx*f80$=+Vvl5?ZF8N5L;?Ib`Ij|T~jbS=A zK~9STtdF7=D%G(lB3Y-7&6oQ|1HKy#e^e8x$Ws|MIkHsdG8Tt9u^B8~8GS@UjF(T3 zRebak`WOR2__;HSV>z)HuBQaGII}2Lr%e3RP8=Kuum0GDVu=fzDj$jmJQ+_3402@_ z<}waHaAj$1nlc*kjw>4v$I+r^8N}dXJ&T2z*r{hJkc`O&7AJo*0nlwC-QX{TQ2Bq6 zyHq?#O=FfDGuc@uf`ocfLbUBClKhJI+}IS-h!S_^iOKGio%P~-@ib^L4BgUp+ zj0e?o92R@9G$=-QBb&zTlQ73f0mUQ%?oFc7+%U4?@^*Fhrb>`yp3ETI6R~JP0A^1G zdzFb#J&B1qDsIAHFBU6%rfP16rFN^G_@|QRbmLvAWL=QjeZdQPlP~pilz!l`7eoUY7hVb delta 2986 zcmYjTX;f9$6~5oO;6sK7%KRLFXpNavoRTh$pr*lAnG8`uP#%arB7!2OaXIjaN!qMd zuwG@`g$77Xs+cG&6sIDFHd0Uq;}FFtV5}NP)Yv+pcAtA+gdcaEd%knd-uvwRo$s8( zp)V?mGFB@p7@}?2I0zG&8WDxx(Tqmeu$^iedEHI&Y=RY&X-N|@@g=o4VJ=>v z@Ma`9Eh$nIn)qkLP}3*y6h(@5r|4JI@&N~6_Y-Dy&}K!8+&qN5Y>d>junRjiwICi% zvhk;|t!j(8@H@DRB4b2r-O`t`K4cT+W?>e?i;emD-*I04 z=;+Kn0cY)4v8Ul`r=53ywRV;B_)^+YIY%zqDS>p=eXC)u{502a@mA_QiQpbN zmLA2at(12bKIGkqp%k70cin;r`NDv+S~&@w-}BCLyAgMqdj{`{YYwF045nih+0VjP zJMec8>O95VJ1P6=V&pbyCy;D5M9`{Kc37w*KE#%1i^tpOSSzNOe!X2$vQo2k>W(t-SC80?2a{7mgz_b2&QNF&h?ovjdB;QZ~U_wY!Dv2QY-(F2aKA z60}hGMZ~HfS1Q`B%E1(Nmc!d+mB)@sm2|8Zo`e*?3~J-*SSRdsQNnQz>U`4 zz#s~{fk-Tt|Eq9OHUntrO~i`aZ|Kl<^rPNhBFrG{c>^iD#o92bRv+bmXYEh5zD5St zuI3DUT}$~l@M4eSH6Wdx2GU!%@s4W!r=qp}%a6)$v)6<4^fpqkhpe5*=CggW6RB$H z5k)(Cq`$!ksiEr6j0~(BWK=r(G8>DcCwH(=-B~A%^((xDR|*&KDL8nS+2u*6?;;Vg zwC*00Eb<;E;dA+)DV!VVFZcN12mj0}uuSh*C?N`cjJ(cS!_j*llXC*8%Y}E{e2slA zq?r4xuT8QEq6_!=yuaS48`A8J4nmCI0oPt$%9DwujdbV%>u2qMF-deb(q|7bP)m35 zFbW&rz#d|oBsz!=t;RU5waH9v|6@h1(b0hQ&5mH?#t~1|5BP9pJ>Xnb%Kr@Eb6h&; zuf-pCOgz3z z!a1tCXGm~w8ug2rW!W^b6jMkRNF6*H6g3(>E;HCS-Vip|^P_qG;>-(yzz~N8#B! z;<*{CjW^pVweu3)RK<7Ge}-IEzH=pn7L9 zla(!`7Z1%MdoM9hR7@i{3tzfDjoGXF)AhlPrkcbIbw(t}9?9a_Ee@3i6ey`2PH#lP z?9o%x22h@hn9l^b>LRS-X*5mkEf(~i9V260Hg7pK-e=D(pK~@3#pt#JyQw^EBS-!M zt#=jE)$~|UdmNXl%T+|GwMNgPGnY!;IAufWA8sOrFNPp@k)%F-2b32FZyFc(%RZX- zvy+)|IzH4833-6kDu&qdOU7=?JXpW{XupSuMIyPGMKY#ShFMIYZzn*>Nzcik*ryn4nEiy>`Yg lJ%z- diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/fileexchange/EFSA sanitisation GFL v1_file-exchange.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/fileexchange/EFSA sanitisation GFL v1_file-exchange.zip index b183fac8002bca16cb02d4aa251d14b81a00de25..4d78d48d19e61ebf63be80d06b1eb8b750f94fc8 100644 GIT binary patch delta 15964 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 delta 21386 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
B1dfe#0TYa1NE^B_?FdS?J^+cEI0T~9dy zz~3f@3ld>CIAP}EI>+Jg$nh$iKHCm`JW1Qp1gYD>w}T^uXX1GRnej{=7sUt(U`Vw8 zuh2EG#7AxE^-x&D`UeZyL#?9e#huVoseiJ-G0{ysqXl6wfOKf`4kh~OKQM+3&=8^+EofO2xFNr%8)Eo25J*4*11r@H_p>YyI{0ASz8ykeB!?IM}MV4q<%KAaXJ13;F zMXMUw*>C_UW^q&Wyfe+;1MQ%{?#5Xag+sVj?S^pe*F_-cUr43xfvKg&GeROLDKDpM z_^ciE`Vu^*e;FmSq{4xa3DPxfNEBFbdmVA_4u`GeN>K?JIz;`cZra%+mG} z5qNS;OQiYxNo!iH#c6HU0-^$+h0t>`a3s}FFHOG!GkuyYAnxSL9wW?S-P!Z@wEag0 z&*5N=gx0J_f$fq}HhS?H5~A71jRr|anMHSf4av)(v%%0|%$>@6dThE@217PHIE?y$ zD$7YEh>k9Y*`3Ep%*{tp{Mn=Dh@huD!spXdugnB1>6U zI67bNBA?=MwwOC!$fHPW4XIL1RgLQ{2!c_h{o}>15NPg)AkdzO)B%UEQs7z}pUM!y z^hg3BdRw^Sc!M>3P2}>bfDjOmZzvl4W}`aQR~o}bcXX4T6y8su0u~CraEg}T750o4XG-sUJn$~@nnI@%AaaPy6_BO26a(&RV2Wx zZVNi#m|={nk_SmJLjP45Pm5H*8WzS*gY{tl6E4M3jT0gPU-62Ey`CpPzqUgJgzo(| z+kT>Xv0lYwNL0{XIP4+y;Yo09g-nI3t54*(MrzzJJ*@8QG(!(%pMp`&%6y?Z;jb8> z?{LEbSk4*y4d{GFCg2-q!&Qm3Z|VrDJPoyP;J27~Mtlpf8{)GN_WD>q@n8WwI*K8r z0*D)s)}w_{;GHnbEppu}9ZheXfx4IO{7z6}o@|mSz}B3>1o}?N+nUL+HIzL6ED0v1 zQcNAYvd|FhjiTNv3_J&O@*X3R40fzL7||t1NA%MfHl3BCGU>Ve-qkScAX|&E0-U{R zwYwni(%Je^?GcIMyIX0OibWxOoDSJSCph*ZfR2mLMUbaUa=aOQCZ$lAE6tUPF$zVG I@$9be|0rXvCIA2c