From d6734b76b14aedd800116218b02ae607b93df9d1 Mon Sep 17 00:00:00 2001 From: Michael Marshall Date: Tue, 15 Aug 2023 23:43:09 -0500 Subject: [PATCH] [fix][io] Update test certs for Elasticsearch (#21001) Fixes: #20997 ### Motivation Update the expired certs to get tests passing. ### Modifications * Update all certs. See `README.md` in files for detailed steps. ### Verifying this change This change is covered by tests. ### Documentation - [x] `doc-not-needed` --- .../src/test/resources/ssl/README.md | 43 ++++++ .../src/test/resources/ssl/cacert.crt | Bin 943 -> 1292 bytes .../src/test/resources/ssl/cacert.pem | 47 ++++--- .../src/test/resources/ssl/elasticsearch.crt | 128 +++++++++++++++--- .../src/test/resources/ssl/elasticsearch.jks | Bin 4182 -> 0 bytes .../src/test/resources/ssl/elasticsearch.key | 50 +++---- .../src/test/resources/ssl/elasticsearch.pem | 52 +++---- .../src/test/resources/ssl/keystore.jks | Bin 4128 -> 2958 bytes .../src/test/resources/ssl/truststore.jks | Bin 1002 -> 1670 bytes 9 files changed, 230 insertions(+), 90 deletions(-) create mode 100644 pulsar-io/elastic-search/src/test/resources/ssl/README.md delete mode 100644 pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.jks diff --git a/pulsar-io/elastic-search/src/test/resources/ssl/README.md b/pulsar-io/elastic-search/src/test/resources/ssl/README.md new file mode 100644 index 0000000000000..0a1e91a9e47c7 --- /dev/null +++ b/pulsar-io/elastic-search/src/test/resources/ssl/README.md @@ -0,0 +1,43 @@ +# SSL Cert Provenance + +The files were generated with the following steps. They are not in a script because a script likely won't +work the next time these files need to be updated. These files were copied out of convenience. + +One important assumption is that all certs and keystores share the `cacert.pem` as a root CA. + +[cacert.pem](./cacert.pem) was copied from the tests/certificate-authority/certs/ca.cert.pem file. +```shell +cp ../../../../../../tests/certificate-authority/certs/ca.cert.pem cacert.pem +``` + +[cacert.crt](./cacert.crt) was generated using the following command: +```shell +openssl x509 -in cacert.pem -inform pem -out cacert.crt -outform der +``` + +The [truststore.jks](./truststore.jks) file was generated using the following command: +```shell +keytool -importcert -alias rootca -keystore truststore.jks -storepass changeit -file cacert.crt -noprompt +``` + +The [keystore.jks](./keystore.jks) file was generated using the following commands: +```shell +cat ../../../../../../tests/certificate-authority/client-keys/admin.cert.pem > client.pem +cat ../../../../../../tests/certificate-authority/client-keys/admin.key.pem >> client.pem +openssl pkcs12 -export -in client.pem -out client.p12 +``` + +Manually enter `123456` password. + +```shell +keytool -importkeystore -srckeystore client.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore keystore.jks -deststorepass changeit -noprompt +rm client.pem client.p12 +``` + +The [elasticsearch.crt](./elasticsearch.crt), [elasticsearch.key](./elasticsearch.key), [elasticsearch.pem](./elasticsearch.pem) files were all copied from broker certs. + +```shell +cp ../../../../../../tests/certificate-authority/server-keys/broker.cert.pem elasticsearch.crt +cp ../../../../../../tests/certificate-authority/server-keys/broker.key.pem elasticsearch.key +cp ../../../../../../tests/certificate-authority/server-keys/broker.key-pk8.pem elasticsearch.pem +``` \ No newline at end of file diff --git a/pulsar-io/elastic-search/src/test/resources/ssl/cacert.crt b/pulsar-io/elastic-search/src/test/resources/ssl/cacert.crt index 070eaa67e21df55711e3b43a42d866adf1c497ec..87d462dcb4a8951b09ba06f9d0bacb6a9feb4dd1 100644 GIT binary patch literal 1292 zcmXqLV&yPsV*0RvnTe5!iId^_qjvuVm5+D~c-c6$+C196^D;7WvoaV68u9~$m_u2Z zdDznO^OF*b4CKUl4J{1JjEoE{Ow5c7qr`cQfm}m#C>NWSCMG3hgBe*Fn46gR8GsJp zVrpVyWOy19H069{!Mu}Sl^pfW9>wQ;^SW8yQsu+P{C)d`FRsgO*u7jDr(nb7Zhhis z{fifizx`4=Wswo-zGS{=c-l^@xYxZr7IzN0XGj?E3zWuY=$KxAp}c+ew)qF6c$XVj z{W+9Bvtjx2`s=0tgO~nZ(;E09MbAk*=x1za_<~s(_dY~^XgzRNIDGOtxm|HfI%8a4 zH3+RUTdk3JG-~qRz7vnP{<+U2s3lackdmv>{_IoHVh0f}%imj_9%OI-xX5x9>x380 zmmgG5O!_BwXzh*V`2yKSOoq;TwBmW!9A42E^^P_8km4Wh*2iKKPN(s|IjHg={ELp7 ziN*<6!&K|%bG85e`OlqMU9%!kSYd+g`r9G?bL%A}|1r$`HSfK1Tt$n*;-&X@<~XeP zxEoy<#4o+_fzvyE!?N9u0!e?KS6nigDj5`>*taC^*Nv=ebKm>^Je=4jk*RNVMD6t4 zPwm}Vjvs&T3Vg-xRH^&yvZGYhT#3z58loIK&Q2DJP=4_EdDMFUn7bzv~W zPz$J)6`z&rs*x?~`uTR{l}de(ExfiNTEe->5)W*}w22NK{139tZ@dK+>w z1g39bGGt^(yxV{DYF)y!X+_CwS3m9M$PqeY+_s5fcblF<#E;&MVV__A5tuze=ItEo zmv8qOI%S zZtdJTU48-YQK7s4=QphCxER=F!1Q+S_ic5@(q0~x|K{~wX?4-rFT5*tJj7D* zpXUefv4bMpkMJ&%xG+)dsBf>-)uk^==D(cns5m)O{>vJP#P&S*ZA)Hy_AC6l*}O2$ z=GwyJ%#s(S6XG|D&ziAFp*HJ_wBFR~VUson6os$fn7rNMis%|^vt~9ES?(qmrMhD* z+lmzzNp*xhImxk!H%i%KOaH`J z=NiPlJOBQJw(_U9v%^DPw6_Pas#TRw?VmC4qPoNNo9({3E2iZAHuw1S^3}HUiUulv zYj^6uJ@L12y?Akqn#9|G)4wi`-}LyZqq+K;u*G|<|G2MiPAUo78Zg&;`AvbpoaYX` zUNt|uVUwWSiB%gz9l4ldwS(;A=Vwh$G~(EL&5P5<|LV=IH#K^}FE@FYUu@I8vLZD? izBt_O$)#ruhqQB^{t|g9e#pi6z=>yDSAXG)^92BXm_kkf literal 943 zcmXqLVqR^~#58#UGZP~d6DLEn#e_w{W>a$wc-c6$+C196^D;7WvoaVs7;+nMvN4CU zun9A{1sMt&@Pjy9JRB~GC5go)i4}&t2HYSaZXTA9)Z!9DexM0JE;A2XQGR|&a-xBP zIIoeRfvKUPp}CQ%fnk&czmXwOz{JoTDnJE0ni!Rk9nQ$gz}&>h&tTBR$i>ve$jESI z^0jqpo*AM`9kXWLR1p8Nz}As@NsRISTYN0hAO7!6I2}J(F5Td50MGk;zq_;EsOxav zQ)XElWN_9=^w-VPBA<^gD)}QLy~)$WWUXZz_x{x-FMDn;xidv9%_>(j;f`o?b?lnN zITiQsS!~>~pfgJ4+@!u>@8rYLz0r=3r&daDvQ`%Jeca#Q+1CDXub*0YMf!D@yIUVt z?2@&WX;z%WH?QT~mS<^pMog2>@?Lq-lFGKtqWx1#BGW1ky-%O(WV=LHiEQJEoLyNp zLH<;dO11ny9;0u)E(blY_?|G2S(5i}fziPpt;M~M|37~*|J6pfgT}3!u6%W9T*5PqC5(la3(=uOfoWL=E?9BJ!@k+8Sq?p z=gSAP`)=6Hj4OFL{oJp0qWh9gI$b#`Gb6KeCx7#t6c3#b{ua9?)XwVLwexI3bHCc1 zpM1JzHorYIy>maP_m+J)&^)nm>*mAd7EjOD&METvX8xvQ>+5vpKFB{`?R;qg@Eo-{JNJCZI=|;wpUV)A0xb~!c<@&Tt$VZiZ%@>u+TVxAmk8~e>bLp(9 z{1vx*c4zjKbUv8XqtvCf@8b(eqioqE8tS{|ATmxGa3-w1fo! DB|l|L diff --git a/pulsar-io/elastic-search/src/test/resources/ssl/cacert.pem b/pulsar-io/elastic-search/src/test/resources/ssl/cacert.pem index ed6f0fffdad9b..0446700135d39 100644 --- a/pulsar-io/elastic-search/src/test/resources/ssl/cacert.pem +++ b/pulsar-io/elastic-search/src/test/resources/ssl/cacert.pem @@ -1,22 +1,29 @@ -----BEGIN CERTIFICATE----- -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 -----END CERTIFICATE----- diff --git a/pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.crt b/pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.crt index c8dab8a816352..4237719f20ebd 100644 --- a/pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.crt +++ b/pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.crt @@ -1,21 +1,111 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 4103 (0x1007) + Signature Algorithm: sha256WithRSAEncryption + Issuer: CN=foobar + Validity + Not Before: May 10 15:50:18 2023 GMT + Not After : Feb 22 15:50:18 2297 GMT + Subject: CN=broker-localhost-SAN + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:de:d1:da:bb:91:b3:16:c4:b2:e8:89:30:9e:c1: + 5e:0b:cf:db:c4:c3:d9:b1:af:40:a5:0b:38:36:1b: + 14:fe:0f:22:9c:e6:59:6a:15:5b:db:f6:f7:f3:a5: + 02:29:94:7a:d2:0c:67:ad:aa:63:62:7e:fc:58:11: + 29:48:b8:3c:91:b2:73:7e:12:6b:f2:ea:36:77:0f: + 15:9b:46:95:ce:73:15:8d:c8:d9:97:57:03:90:33: + 2d:7d:f3:ee:e5:01:6d:d8:c6:da:ab:07:b9:dd:1c: + e0:4b:ce:6a:de:a8:d2:e3:c1:52:6d:83:3a:0a:f0: + ed:cf:f7:56:6a:87:0e:73:e3:12:82:2b:65:ab:d8: + a9:44:5b:4a:2f:a5:92:94:32:f1:a1:e4:af:18:0f: + 0f:18:60:cd:f7:d0:9d:03:9f:d7:e9:a8:60:54:bb: + 3b:9a:05:db:fd:38:04:3c:b4:23:41:16:6c:7c:3b: + d9:b6:e0:2f:bd:cb:62:55:1b:e8:d0:8f:43:76:ef: + 55:86:cf:25:c3:bc:ae:e3:46:50:89:f7:71:ad:06: + 5e:28:e6:f6:f0:76:27:ea:7e:1b:67:53:39:26:20: + 19:18:82:b1:11:5f:ea:91:c2:e3:d3:f6:5a:c7:fd: + 61:a2:92:de:7d:7c:da:6d:e8:bf:39:52:10:31:60: + 4b:e1 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Cert Type: + SSL Server + Netscape Comment: + OpenSSL Generated Server Certificate + X509v3 Subject Key Identifier: + 17:07:3B:AA:85:83:B5:04:83:EC:B2:6C:1E:3A:F0:F5:59:AA:61:28 + X509v3 Subject Alternative Name: + DNS:localhost, DNS:unresolvable-broker-address, IP Address:127.0.0.1 + X509v3 Authority Key Identifier: + keyid:57:0B:E9:CB:23:E8:BF:47:3E:50:7A:3F:45:7E:A1:18:43:9D:15:27 + DirName:/CN=foobar + serial:D7:E2:87:4F:A0:79:E2:0C + + X509v3 Key Usage: critical + Digital Signature, Key Encipherment + X509v3 Extended Key Usage: + TLS Web Server Authentication + Signature Algorithm: sha256WithRSAEncryption + e4:27:61:e2:0f:b6:a0:ca:9f:ce:e3:53:0b:44:ab:86:a1:e2: + 4d:88:e1:7d:2e:b0:aa:32:96:2b:3d:da:60:70:6a:c3:62:c5: + 76:f2:8f:0d:16:31:f2:ad:e5:2f:43:f3:cb:e4:fa:95:6c:20: + 81:33:1a:c7:5a:55:57:c9:ab:ca:66:45:30:58:00:db:e8:51: + c9:2c:a9:72:c1:18:f5:01:87:9f:73:20:85:6c:e5:6c:3f:c9: + 67:b4:f0:20:e5:ed:e2:4a:08:0b:af:68:43:e5:a9:c7:e1:39: + e8:b5:49:cb:47:4a:6d:e5:16:ae:88:92:13:85:8e:42:1e:0a: + eb:59:ed:a7:c1:9b:bc:4b:7b:99:f8:1d:f0:d7:1d:90:c9:cf: + 86:6a:d3:10:d0:36:e4:f5:b9:33:79:c7:a2:68:31:f7:bb:8d: + 1e:d6:33:79:bd:e7:0e:4f:4d:e9:2e:15:04:4f:6b:4b:2e:93: + 28:72:d1:0e:aa:ee:e6:ef:68:be:58:2b:cc:56:01:27:16:f9: + 34:8e:66:86:27:0a:b0:fb:32:56:a9:8a:d9:6f:b1:86:bd:ba: + fd:50:6c:d5:b2:54:e7:4e:c6:2d:19:88:a9:89:2c:ef:be:08: + 0d:2b:49:91:0b:09:42:64:06:a3:9d:d7:94:ed:e8:74:74:48: + 43:57:41:6f:e5:06:98:46:1d:c5:60:9c:69:f8:fb:fe:a6:01: + 4a:35:be:21:36:c2:a3:44:c8:c4:2c:21:09:f4:28:9a:ad:a0: + 97:1e:00:29:cc:0f:26:fa:59:21:25:c0:9e:fa:22:53:67:6d: + ab:a6:56:08:fd:37:1d:69:fe:ef:6f:29:89:1a:66:7b:c7:ff: + b1:34:f1:d6:be:21:81:e3:bc:4f:13:02:a7:4b:9d:13:05:46: + 40:88:4a:aa:db:fb:64:f8:6b:fb:5d:a0:b1:0c:1a:b8:4c:ab: + 6f:69:fe:0b:55:4e:b3:38:1f:91:0b:71:77:1e:11:39:54:9a: + 62:51:ea:6d:a8:5e:0d:4a:91:fb:d8:be:5d:93:e8:43:f3:4a: + 11:fb:31:cf:14:1a:1c:8d:31:1b:99:31:e0:2b:81:01:91:6f: + da:ba:cb:1f:51:21:55:29:3f:4c:71:e3:d0:29:41:de:a0:00: + da:07:ed:5e:c9:af:32:61:6d:55:f8:f5:2d:46:03:34:33:fb: + 2e:1e:aa:7c:fe:d2:30:4d:40:cc:ed:76:ec:f6:bd:ed:35:c8: + d8:b3:46:56:aa:2c:53:84:56:45:b0:a3:f6:35:66:93:da:8c: + 17:39:c1:29:7c:99:c5:0b:73:c1:f9:16:d0:57:fc:57:59:06: + af:39:9f:a9:51:35:0b:c7 -----BEGIN CERTIFICATE----- -MIIDgzCCAmugAwIBAgIIJDCWmNVVXt8wDQYJKoZIhvcNAQELBQAwQDELMAkGA1UE -BhMCRlIxETAPBgNVBAoMCERhdGFzdGF4MQ0wCwYDVQQLDARUZXN0MQ8wDQYDVQQD -DAZyb290Y2EwHhcNMjEwNTExMTcyNjU1WhcNMjMwODE0MTcyNjU1WjAYMRYwFAYD -VQQDDA1lbGFzdGljc2VhcmNoMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAhlMnjkAdRlD9rZ7yMjTZK+GOfXjNiMZORrtIRSmILuOHw9GxEtSaWXFvDPD4 -a+JloIYK/N3CV5LvE/3zcB5jv6/X/TOAaz+eeQOMj9QIDjtX1ia4YLOe3FqVf3vB -2m9paIM6ug7sgDWIxYmpL3HYTfL4B7sSInsQzpErDDIH1IquvCo2pHRggKPbAgJ9 -8pOaCLgvY2JRLe4oj2EMB0fYpEzRRg7mQgkal3w0CySmatHvGqDw2dghHjkNdNFl -1hnikuE2HRvcx+MmA5ADSBfQU6IZKAetouQOMo3Fom2eSgoGLiT7+dlSoBAaxUnh -oDxHI6WkNdaTSjqC3AlF7xIGzQIDAQABo4GoMIGlMAkGA1UdEwQCMAAwDgYDVR0P -AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4E -FgQUCxGbyzMIwC84X57K+LX16fgFrvEwHwYDVR0jBBgwFoAU8HikOW4q4jh2lVss -F08ir+OdZQwwKQYDVR0RBCIwIIINZWxhc3RpY3NlYXJjaIIJbG9jYWxob3N0hwR/ -AAABMA0GCSqGSIb3DQEBCwUAA4IBAQDHJiJHs9qg9UavG+dJxAtqleLObNem7cpH -06LaH0+Z2BExmw/GJdAsRIKIIL4xQLmbNaY5vpmTi5JSPNC/ZxvS1RLla0RbJv3s -dfTEhPfar37XJCiKB917wck47LdPu3FUdwbNKZY/tpUBaasRQ7nJdnJgJwb6zkr/ -ifN9NVDa8LpKK31qgA4bE7iJw0HY/4LkPdglQebjJtEHFCzi4AbPrHMX6xdxnCAM -G1DGldOjEbv7kTVACr1WCRZXu3vynJs+umLKX+twebvTsv6fpUnGj85AUt/p961v -6BblUYD3tJxCKkID9Lrs82C1sMxGqBkSDqwtNensaj1ba0v9HiYe +MIIExzCCAq+gAwIBAgICEAcwDQYJKoZIhvcNAQELBQAwETEPMA0GA1UEAwwGZm9v +YmFyMCAXDTIzMDUxMDE1NTAxOFoYDzIyOTcwMjIyMTU1MDE4WjAfMR0wGwYDVQQD +DBRicm9rZXItbG9jYWxob3N0LVNBTjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAN7R2ruRsxbEsuiJMJ7BXgvP28TD2bGvQKULODYbFP4PIpzmWWoVW9v2 +9/OlAimUetIMZ62qY2J+/FgRKUi4PJGyc34Sa/LqNncPFZtGlc5zFY3I2ZdXA5Az +LX3z7uUBbdjG2qsHud0c4EvOat6o0uPBUm2DOgrw7c/3VmqHDnPjEoIrZavYqURb +Si+lkpQy8aHkrxgPDxhgzffQnQOf1+moYFS7O5oF2/04BDy0I0EWbHw72bbgL73L +YlUb6NCPQ3bvVYbPJcO8ruNGUIn3ca0GXijm9vB2J+p+G2dTOSYgGRiCsRFf6pHC +49P2Wsf9YaKS3n182m3ovzlSEDFgS+ECAwEAAaOCARcwggETMAkGA1UdEwQCMAAw +EQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVuU1NMIEdlbmVy +YXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFBcHO6qFg7UEg+yybB46 +8PVZqmEoMDcGA1UdEQQwMC6CCWxvY2FsaG9zdIIbdW5yZXNvbHZhYmxlLWJyb2tl +ci1hZGRyZXNzhwR/AAABMEEGA1UdIwQ6MDiAFFcL6csj6L9HPlB6P0V+oRhDnRUn +oRWkEzARMQ8wDQYDVQQDDAZmb29iYXKCCQDX4odPoHniDDAOBgNVHQ8BAf8EBAMC +BaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADggIBAOQnYeIP +tqDKn87jUwtEq4ah4k2I4X0usKoylis92mBwasNixXbyjw0WMfKt5S9D88vk+pVs +IIEzGsdaVVfJq8pmRTBYANvoUcksqXLBGPUBh59zIIVs5Ww/yWe08CDl7eJKCAuv +aEPlqcfhOei1SctHSm3lFq6IkhOFjkIeCutZ7afBm7xLe5n4HfDXHZDJz4Zq0xDQ +NuT1uTN5x6JoMfe7jR7WM3m95w5PTekuFQRPa0sukyhy0Q6q7ubvaL5YK8xWAScW ++TSOZoYnCrD7MlapitlvsYa9uv1QbNWyVOdOxi0ZiKmJLO++CA0rSZELCUJkBqOd +15Tt6HR0SENXQW/lBphGHcVgnGn4+/6mAUo1viE2wqNEyMQsIQn0KJqtoJceACnM +Dyb6WSElwJ76IlNnbaumVgj9Nx1p/u9vKYkaZnvH/7E08da+IYHjvE8TAqdLnRMF +RkCISqrb+2T4a/tdoLEMGrhMq29p/gtVTrM4H5ELcXceETlUmmJR6m2oXg1KkfvY +vl2T6EPzShH7Mc8UGhyNMRuZMeArgQGRb9q6yx9RIVUpP0xx49ApQd6gANoH7V7J +rzJhbVX49S1GAzQz+y4eqnz+0jBNQMztduz2ve01yNizRlaqLFOEVkWwo/Y1ZpPa +jBc5wSl8mcULc8H5FtBX/FdZBq85n6lRNQvH -----END CERTIFICATE----- diff --git a/pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.jks b/pulsar-io/elastic-search/src/test/resources/ssl/elasticsearch.jks deleted file mode 100644 index 0001e656925ae6516e91423d90bab3bda5169c0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4182 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 literal 4128 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 C+oO#D diff --git a/pulsar-io/elastic-search/src/test/resources/ssl/truststore.jks b/pulsar-io/elastic-search/src/test/resources/ssl/truststore.jks index 165ba17fa805779e55677b7a025445a9cd416f5a..0099d0ab956d0556c993f740cfebf200fb052bbd 100644 GIT binary patch literal 1670 zcmV;126_1~f(C*D0Ru3C1}p{%Duzgg_YDCD0ic2g9Rz{~88Ctd6)=JZ5e5k=hDe6@ z4FLxRpn?VhFoFgC0s#Opf(7>m2`Yw2hW8Bt2LUi<1_>&LNQU|5F(h3Z+zxVuw9EoseAsPY#ClCSwATSID2r7n1hW8Bu2?YQ! z9R>+thDZTr0|Wso1Q6Ne`3ohQOxo{(kxwgvo!fwd1%RE1y7Hlvk{Yie2~EC0&}4V& z%A!aaUaE~M_Q0NUNdTrwVyisZ?3EBMxpg?PahX%}+&#HLnM?;4I9id^JZ^!(&k&$r-mj z*@>czMe-b+m#ta2uFr?%fLy4;Tn&@VVKh9sf-fX3OCw_;f?(xe7~g$o(UK##(zJ}f z!0QzkU(X+rvp(g@3q9enk0-~(Ed%bnH)>tg-hxL29{cf}T;@qNW8UOxuS~!HJV8Px zvS(x}9N7D*vn`K#tISW6dySJ>hneB&DoZZ5>jicJ?Z;vUJ-r-@1s_x>Wqv7AsFX)S z`zja!|tL!uy=7!N4;npnv|C{ zDr7jRB_^M+l@elV#qSyR*b3;=Xie^gE@ZpcRc$t?OifyvpLlAG)j!EP>q@}fYc;DT z8QLc!vq>QxUbajioB{-ppy>K;X@ASnmoCJmh6cR4v=$zPBM>UJ%9zUp7;a$Fn^m6! zhkX{&*@<-|Rz{zd(K249n8Gs^s6EHyo196rvhMTX;13CMgY{`^!uQb~BFY;)MZJ^A zcGgX6X9QyzyYB{}7_qv=EB}%$rV-ypxSB6{d^BH@dRP{VM4JcuB{$yqiU0A$ zwTHd`4h90jx)3#R9Ou^-sR#r95{yu8pOOI5mOSsNwG4LhBD$i5bwk_6GBk+=3Os8E z_Ho>2_$4}#VK-Oa|L!|sIlrbO>CplY9mAR!k zJ-JNSKPj6`Q4$TU@o>x}-#_^kR-b2JIK!HL%{co{`=tl9P(13PeJ{17O%Z0Pz=Y7G4^RZ1ow6BORmPaIpl<^RLIr5(n&7V{O zXdQXOe=E&0{LPI&w2PQ;E2~1C#i}zZH?DNxDzmA3aZ2+Re)Ra-U}>;W{>90>+=OCx zDxyYTA+x#JR;vLmI8idboyA`Uxo_&;t$AX~1tsek+R;{IS%^zgX{rE(j7}a}Bz$RS zuVtCz8Fp(CNSnM{(ys}C!^ZTM)w1;H>DIcwl-Vx5^;FxFflL<1_@w>NC9O7 z1OfpC00ba+CaqPUZhfuad8p>YBiLw&F+_fmoWXL(VlORAUYW-P6q?a#IGCDsUyA%H QCN8!m-VR1dJ^}(K5O7%zNB{r; literal 1002 zcmezO_TO6u1_mY|W(3nr$%#N_WlY6ZO9s{mJyQcq1_tK!22ISX4VsuHFJNY3WMblE zXttQJDA;Ujt^qF_r&gOs+jm|@Ms8LH0|!HH15P&PP!={}Cbu9%K?8mehl_{9C9x#2 zxFoT{kk^14B*e|b5|Ub6V#p6P0mx$+1FIrOBwpp})YDr{T#i94Zto|HotWt=HwC=M~=* z<}pk1{w**%*rT<$_woPdFXq46=yuS!b<>rv4vj0>mMnYIvU`cQ?|mj_Mh3>kjY|z0 z7l9*CR+y3TKMSh?GmtWn1;&>wABz}^$cKt0mU&u_EXt-v>xla+t$#c>mB*j}B(2Pn zX^`H4Rl!1+B~Fw_VH3_I2#iTahRi$}o}y=MOeX`L>+XE{V0PaPyP0t%FQ=dTwN7+j z(n+T)M`dPYcJAbFo|EFC^TFR@*M!okCubh^!?9fmW%4e?+6Y6Z2zog79`6~Ne F7y#