From a8f4d0ee7833e49a455ebdebd72793e7d258ce84 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Fri, 12 Jun 2026 17:42:36 +0000 Subject: [PATCH] chore: migrate google-cloud-speech to librarian --- librarian.yaml | 1 - packages/google-cloud-speech/.OwlBot.yaml | 22 --- .../google-cloud-speech/.repo-metadata.json | 31 ++- .../google-cloud-speech/prettier.config.js | 4 - packages/google-cloud-speech/src/helpers.ts | 131 ------------- packages/google-cloud-speech/src/index.ts | 45 +---- .../fixtures/streamingRecognize/input.wav | Bin 113604 -> 0 bytes .../system-test/speech_system_test.js | 111 ----------- .../system-test/speech_system_test_v1.js | 111 ----------- .../speech_system_test_v1p1beta1.js | 111 ----------- .../speech_typescript_system_test.ts | 124 ------------ .../speech_typescript_system_test_v1.ts | 124 ------------ ...speech_typescript_system_test_v1p1beta1.ts | 124 ------------ .../google-cloud-speech/test/helpers.test.ts | 185 ------------------ 14 files changed, 25 insertions(+), 1099 deletions(-) delete mode 100644 packages/google-cloud-speech/.OwlBot.yaml delete mode 100644 packages/google-cloud-speech/prettier.config.js delete mode 100644 packages/google-cloud-speech/src/helpers.ts delete mode 100644 packages/google-cloud-speech/system-test/fixtures/streamingRecognize/input.wav delete mode 100644 packages/google-cloud-speech/system-test/speech_system_test.js delete mode 100644 packages/google-cloud-speech/system-test/speech_system_test_v1.js delete mode 100644 packages/google-cloud-speech/system-test/speech_system_test_v1p1beta1.js delete mode 100644 packages/google-cloud-speech/system-test/speech_typescript_system_test.ts delete mode 100644 packages/google-cloud-speech/system-test/speech_typescript_system_test_v1.ts delete mode 100644 packages/google-cloud-speech/system-test/speech_typescript_system_test_v1p1beta1.ts delete mode 100644 packages/google-cloud-speech/test/helpers.test.ts diff --git a/librarian.yaml b/librarian.yaml index 7c3cb742eb0e..38b52713337e 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -1423,7 +1423,6 @@ libraries: - path: google/cloud/speech/v1 - path: google/cloud/speech/v1p1beta1 copyright_year: "2026" - skip_generate: true nodejs: default_version: v1 dependencies: diff --git a/packages/google-cloud-speech/.OwlBot.yaml b/packages/google-cloud-speech/.OwlBot.yaml deleted file mode 100644 index 935e8e8659e4..000000000000 --- a/packages/google-cloud-speech/.OwlBot.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2021 Google LLC -# -# 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. - -deep-remove-regex: - - /owl-bot-staging - -deep-copy-regex: - - source: /google/cloud/speech/google-cloud-speech-nodejs - dest: /owl-bot-staging/google-cloud-speech - -begin-after-commit-hash: f43939eac6a0bb5998c1fa0f79063194e699230e diff --git a/packages/google-cloud-speech/.repo-metadata.json b/packages/google-cloud-speech/.repo-metadata.json index 0f074bc04db8..8f3fffe654de 100644 --- a/packages/google-cloud-speech/.repo-metadata.json +++ b/packages/google-cloud-speech/.repo-metadata.json @@ -1,17 +1,16 @@ { - "name": "speech", - "name_pretty": "Cloud Speech", - "product_documentation": "https://cloud.google.com/speech-to-text/docs/", - "client_documentation": "https://googleapis.dev/nodejs/speech/latest", - "issue_tracker": "https://issuetracker.google.com/savedsearches/559758", - "release_level": "stable", - "language": "nodejs", - "repo": "googleapis/google-cloud-node", - "distribution_name": "@google-cloud/speech", - "api_id": "speech.googleapis.com", - "requires_billing": false, - "codeowner_team": "@googleapis/ml-apis", - "default_version": "v1", - "api_shortname": "speech", - "library_type": "GAPIC_COMBO" -} + "api_description": "Converts audio to text by applying powerful neural network models.", + "api_id": "speech.googleapis.com", + "api_shortname": "speech", + "client_documentation": "https://cloud.google.com/nodejs/docs/reference/speech/latest", + "default_version": "v1", + "distribution_name": "@google-cloud/speech", + "issue_tracker": "https://issuetracker.google.com/savedsearches/559758", + "language": "nodejs", + "library_type": "GAPIC_AUTO", + "name": "speech", + "name_pretty": "Cloud Speech-to-Text", + "product_documentation": "https://cloud.google.com/speech-to-text/docs", + "release_level": "stable", + "repo": "googleapis/google-cloud-node" +} \ No newline at end of file diff --git a/packages/google-cloud-speech/prettier.config.js b/packages/google-cloud-speech/prettier.config.js deleted file mode 100644 index a425d3f76180..000000000000 --- a/packages/google-cloud-speech/prettier.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - singleQuote: true, - trailingComma: 'es5', -}; diff --git a/packages/google-cloud-speech/src/helpers.ts b/packages/google-cloud-speech/src/helpers.ts deleted file mode 100644 index 0b24f145143b..000000000000 --- a/packages/google-cloud-speech/src/helpers.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2017 Google Inc. All Rights Reserved. - * - * 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 * as common from '@google-cloud/common'; -import * as pumpify from 'pumpify'; -import * as streamEvents from 'stream-events'; -import {PassThrough} from 'stream'; -import * as protosTypes from '../protos/protos'; -import * as gax from 'google-gax'; - -export class ImprovedStreamingClient { - /** - * Performs bidirectional streaming speech recognition: receive results while - * sending audio. This method is only available via the gRPC API (not REST). - * - * @param {object} config The configuration for the stream. This is - * appropriately wrapped and sent as the first argument. It should be an - * object conforming to the [StreamingRecognitionConfig]{@link StreamingRecognitionConfig} - * structure. - * @param {object} [options] Optional parameters. You can override the default - * settings for this call, e.g, timeout, retries, paginations, etc. See - * [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} - * for the details. - * @returns {stream} An object stream which is both readable and writable. It - * accepts raw audio for the `write()` method, and will emit objects - * representing [StreamingRecognizeResponse]{@link StreamingRecognizeResponse} - * on the 'data' event asynchronously. - * - * @example - * const speech = require('@google-cloud/speech'); - * const client = new speech.SpeechClient(); - * - * const stream = client.streamingRecognize({ - * config: { - * encoding: 'LINEAR16', - * languageCode: 'en-us', - * sampleRateHertz: 44100, - * }, - * }).on('data', function(response) { - * // doThingsWith(response); - * }); - * const request = {}; - * // Write request objects. - * stream.write(request); - */ - streamingRecognize( - streamingConfig?: - | protosTypes.google.cloud.speech.v2.IStreamingRecognitionConfig - | protosTypes.google.cloud.speech.v1.IStreamingRecognitionConfig - | protosTypes.google.cloud.speech.v1p1beta1.IStreamingRecognitionConfig, - options?: gax.CallOptions - ) { - options = options || {}; - streamingConfig = streamingConfig || {}; - - // Format the audio content as input request for pipeline - const recognizeStream = streamEvents(new pumpify.obj()); - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const requestStream = (this as any) - ._streamingRecognize(options) - .on('error', (err: Error) => { - recognizeStream.destroy(err); - }) - .on( - 'response', - ( - response: - | protosTypes.google.cloud.speech.v2.StreamingRecognizeResponse - | protosTypes.google.cloud.speech.v1.StreamingRecognizeResponse - | protosTypes.google.cloud.speech.v1p1beta1.StreamingRecognizeResponse - ) => { - recognizeStream.emit('response', response); - } - ); - - // Attach the events to the request stream, but only do so - // when the first write (of data) comes in. - // - // This also means that the sending of the initial request (with the - // config) is delayed until we get the first burst of data. - recognizeStream.once('writing', () => { - // The first message should contain the streaming config. - requestStream.write({streamingConfig}); - - // Set up appropriate piping between the stream returned by - // the underlying API method and the one that we return. - recognizeStream.setPipeline([ - // Format the user's input. - // This entails that the user sends raw audio; it is wrapped in - // the appropriate request structure. - new PassThrough({ - objectMode: true, - transform: (audioContent, _, next) => { - if (audioContent !== undefined) { - next(undefined, {audioContent}); - return; - } - next(); - }, - }), - requestStream, - new PassThrough({ - objectMode: true, - transform: (response, enc, next) => { - if (response.error) { - next(new common.util.ApiError(response.error)); - return; - } - next(undefined, response); - }, - }), - ]); - }); - - return recognizeStream; - } -} diff --git a/packages/google-cloud-speech/src/index.ts b/packages/google-cloud-speech/src/index.ts index 09b80275dcb1..c6c71034eeae 100644 --- a/packages/google-cloud-speech/src/index.ts +++ b/packages/google-cloud-speech/src/index.ts @@ -11,46 +11,21 @@ // 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. +// +// ** This file is automatically generated by synthtool. ** +// ** https://github.com/googleapis/synthtool ** +// ** All changes to this file may be overwritten. ** -import {ImprovedStreamingClient} from './helpers'; -import * as v1p1beta1 from './v1p1beta1'; import * as v1 from './v1'; +import * as v1p1beta1 from './v1p1beta1'; import * as v2 from './v2'; -// The following code is adapted from http://www.typescriptlang.org/docs/handbook/mixins.html -// tslint:disable-next-line no-any -Object.defineProperty( - v1.SpeechClient.prototype, - 'streamingRecognize', - Object.getOwnPropertyDescriptor( - ImprovedStreamingClient.prototype, - 'streamingRecognize' - )! -); -Object.defineProperty( - v1p1beta1.SpeechClient.prototype, - 'streamingRecognize', - Object.getOwnPropertyDescriptor( - ImprovedStreamingClient.prototype, - 'streamingRecognize' - )! -); -Object.defineProperty( - v2.SpeechClient.prototype, - 'streamingRecognize', - Object.getOwnPropertyDescriptor( - ImprovedStreamingClient.prototype, - 'streamingRecognize' - )! -); - -const SpeechClient = v1.SpeechClient; -type SpeechClient = v1.SpeechClient; const AdaptationClient = v1.AdaptationClient; type AdaptationClient = v1.AdaptationClient; -export {v1, v1p1beta1, v2, SpeechClient, AdaptationClient}; -// For compatibility with JavaScript libraries we need to provide this default export: -// tslint:disable-next-line no-default-export -export default {v1, v1p1beta1, v2, SpeechClient, AdaptationClient}; +const SpeechClient = v1.SpeechClient; +type SpeechClient = v1.SpeechClient; + +export {v1, v1p1beta1, v2, AdaptationClient, SpeechClient}; +export default {v1, v1p1beta1, v2, AdaptationClient, SpeechClient}; import * as protos from '../protos/protos'; export {protos}; diff --git a/packages/google-cloud-speech/system-test/fixtures/streamingRecognize/input.wav b/packages/google-cloud-speech/system-test/fixtures/streamingRecognize/input.wav deleted file mode 100644 index 27a14fa7e3c5cee61020a78d3bd7c50cc98999ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113604 zcmeFZb$paZxGz5Q>bh@~Bm_us_u^0}E=5a#(m;Wh;!p|{3dNmLycGB1u0@J#&;;VH zo6Y*}D>HXCl;1h`o^$VCzdujrGw#nb&%CoU&o^K8=+^D}H3)`w8q#&#q?uI>002nL zt&spMyaoUT3}EaxGr!qJ%KXpY|4`t6DDXcN_#X-YfboA%h5s)7f8RO(@3Bug!TmS5 z3xBkq-2cA6|99%gmj0v6$2K9^)q{VZ`uUU^jDIx$wZ_NtpT-ib@!$V_Z1YpO|Gv!s zJN5tG_W!%yf6m4K{{7dq|D5vwclaY6KhpKT()1H$KhZeIg^%I?>{BE)Xo9))zu`~* zr@a3fr%Bmh>L;HC3<(GAe{cRH=VQ5G%OC6iM~JQ*!>2w!`k&_Te^Ty$=h?^A_1~|7 z|B#O$i_j-V{ToIk1!4KW7zs<2X`kFr{>PG^azDjB)&JPmr#^zQkAI*1kFyA-{h#ys zw;)OX6#D4P|Bes;JHlYk0v3r45cARXfVQ(tk|}E+VmFTvBPuD&11ze#$SctQD*qY{gO8Vg+#>|C(U0!G7J9 z#zWkX&HO#IQgERK!;kH)s?jqy}2zYl*KT zu9lSe&*oD+m>)F3+KS4WAKMF#GuV6ZPa?Aj^6?{=eT45mvJO737BBIgm21aNR$4h( zNx{`tgbQ&2&L<`hXXDIDla4cp`9Mr6u_=}21AhCjd4ZGgOZ@s@`vM2!FG%baen$MK z_<5!O0zbwNNcb^{J*!N6M#?=Q<{2rOR9Pnpzp1SEhWNqO-;kWw_#FwQ;P*KB-~QfL zjwM(knWP3sluAr8P9rA0(hd4SlR{#_-1N#4A1d=cmVZyesigLY%2qQ-D43E~+1oo( zFPWG(#J(dYm=kO%SR)VT5SvNdAf<9ErO`vE=Ogmv`d5-fLUZb09`J-OdSC@1zyxAJ zP0$#$0bhct;23xf7}yf7gC(#B)s^Z)@$_5zYqBBVf=+4(T}=H$U8JMg7%r851bXA! zP-G&T8zE~t-%kV2Qb5C&;t&Ve(!)6;3~X8 z-=t=NpJ07v5GcpFw4Qs#KA~D65#>-nQ!l6=sIQq*oLW&`5yJn%USNI9Vd@VE=q>mi zT1v;!-%u~u5T+lDpahIS7MzAH)LQN-vmTtlO@JD&l$xM$+C}kTHm(T~oyDG|FRTSm!62A`T+##S3EGAJz{Al@AcMuICyqq@z;1e{{Fl@auBEPk6KE~PfWhJj zd78w~v*9GE1$9&Q%Ch_&F_VE=NJkvDqCTKE>IMhGvC>AW3+g8Km7)Y0|A3-UkyIPj z$1Txge+#LH{|P#TC7}x{k$(}|OKngGxiPLSbO;QTPEy;ECva2X<=@$+lE)V&UZ(EJ zZ-m8C1Gyp2mCsAl@sGeteUCk|7QL3^P zl7te`3!H+U<7&b$ViPJAJA^gh1obtzC|Ufop&Oi*;;HZOV!1V%gX^OD;tqU|rl?uc zdvO|W3RJKQrodVBExn2^!EJ^6(nxp`SkXeX8_l6QQ-e?$UX1Nz`!9q~zyxWCKMkf+ z6(CVeK*f|#YKOddCD?sY4))c|c_U5=az~ zSe5BdEyEAtcJT=w0#Bn2;0y2&mO@{EL2KY%xR^*mF6hMUrbbCerA7E6jF+~<*Zdgf z1?V&R?By@WStGdZK=&n2YMu^3Vy&5cpdeKUPtH1lH7>Q$b)A} zVRSF9KJCT_ zNn@NK1a+iN!5El?yTJ;%K6RfOhRZ-ba1k_w`{}DxSCEZHV*@O~c`yRUl6`dz`VL3K zWDq3}lwL|`aM%-eggeOoZGa_j>n)R*^8{O4m*?YqljmJ!Zl?^R--fW2H=5h=*84@uu7gU ztgF=@RA)Ex;+@66y63NTgDz z*YJCA1!c=eWfRV$wt$}qm);^7H9_l;1GNP_oWvTLF>sfhEvERKfq|%q&SuXrk@Qz! zA$CjI;zh|VH^Eoo=kOvvNLIQPY{VPnds2zG1m6Xn!MET&J^@$4B797KC~MH4(sB8b zyicalALu?X!Vq|ko&h3|TWTc@k#%qf+(L&jzk!u#GvcUs^eUzgYy~91!Avw*ZZFkA zD)<|Hjpk_^dL%v(Pf7#P5zvn5!xqz*=~Aj5*di|!@A+$q@u(9%K&@tbb9b2IbU*M8 z?U2_>db9z%!9&mydZ^JM^|N?#7jp|CRj~RXC82$vva{fDN>v-^cJ6y<7xw@ z4bzn>#GA4*euUP z&CpG}034-M)O%pVwA@rKLHj`t6+wTF2g+N-aIvf05$}LYsJoy-Hpx?jn}K`6V0kf- z8xJZKM)>#pp9pDUbMlQHjM}0kX}t7SYAXwJb@_p0#cHq~9g@@K2GSq0U!Eb}5Ml(E zI13fyNw^7GD;*0w2vEW)aTh9;C*m(rxO`j=Bj=|c_&d-R4?qf8A>S9fi65kI(FK%` zhT_{e4c>*1z<9FLAsmZlqrU;mj#h0@KURFf{7%jQt0B#(*um^><{N4Sm`PP-&v5Tq zCv%qe!9|3p8Po-)9`8`rQ~Q)<{557Y-I*T32KXte73`|p=#B9rXBEeVikcNWox_|RD^6CdvyZG; zTYkPQ&*m>XT~b*3#Ma8TyL5i(vC^rwD)wZ1EysIjg;VXi=zQ<+I|sO-?}@*?Fk5UV zEc6=#mxWEJHFJ-y22M%ar6^!v5|r`kA2i+6J2VB#bINPn5$?REmG-1zvVM-vtm&iv zR#QjYOJCc#-q2M$M)iuf^M_Q&wGRwl(`V)rhHtc;HE!iVb%Cy<>89CX9%XhJb{jhw zryDYi&>R-h-O|bQk0DOWO3b(n@z$EjW_ zQn&%kUFr;If>m%c90^89IYN{$!C&m}8E7K>9a!Z_a9*ph+t=F9S2S}vT_w(m&JOm$ zHbwF5qD^JzO5;j~6<*9cmKVrboSm0*BKOzaNSmd?Ru)$JGIvehn7ju?eQY=Ezq*h3 zyNPQ9iyWuQR+S92U+~-sL^F_I$6UZG#MTlc?31n_6EzP82TP8HzRSHG=9#RUbtYWm8obZI~g(xXN_fG}AKIGSPb7qPC1OcQAD~ z%``PIPcehgv*G&4goyO8DWO|K?AAf%8RnaoE|#X&Y^y#*ZJuhJX~@&J(Z}naX}4=? zYyZ*h(yh{VS5wNi{2u-U*NIio)v!r!6IdHSzBz&F@(p>fqzkNYeO3OttzPslI8KalY}eX{>pTl?@qhi7{O<>^8(0DE(sn zD&tsFb#sT1xgo`t4(2G+Y=cXisD7=yt*FDd2QknGY=W-gij0=H=BL?sA_! zq5M$U@S@YXE3$g!>5A$Ujwm`&I;nums*-UaZC&bv_n)Ud%UYK`J)>7%>l`UJD_6|> zH9x0de94oFbHY+N1f7=mOUW`Xw~`EUd$P+Mm!As5#Mi>_L~8xMrS4GsBHM`ax)s&z z2W%-7(6iZl-``SbB#lQmfRZkuKTs}qkYci?rV&`4SnO88($8GONSP*BcAB$IWv1Gu z_2$>cHO5+|t;Q$DvBu-3b*8Syjs~C6VrgKJ%?Hh$EaOb84ULUmiQJ@F=7)?9%?r6~ zS#COFYGPVV=z5T>oK}{jCZvC)^Qt>2`zZ?)dhQ*}K_{g|VSsP5ua>{RSL3W@J5=-{ zCn>Xf=FW6wW?WXMob9=T^TuaS&U}#e_FcW?Yi~o|T}f$}`abKgoUlBqWJ`tD9q&IN zjPl$q)+J7kb{)^geX35UtE!u*JF8oyku;mMaoQ~P7EQJ;VED&0%zUu^C!m_#An?2ELV1_+2DX)@JBzr2 z**R^}@203y2B(~SE2X5SAI@lz^-ZQH&H7>D`@Jc-X#=y`-yb#E>MOc%TRCFc?Q6x-XP_qj2-A^CR-q6*mJC$^R4 zgY9t@DefZQfxsGZCJ4|ixf&{^_B(w8Q(N;E>t`Wp))LDuOAl+IWr#V)G{n-`5@xAq zO4Se6g{s>tdhm_-aIQOlQc+X2P4!qcNZm?3TfJ6oQVVLmR;@j+a~Rr~O3dp*7KZK! z9}@9%_=~WJ&=2O5rjv&Insv&@TpB$O6rn_EsL$)#V{2MEsi<52fxJI*$7SzIdzHNU z%@5CxJz4Z(^7E!iP2V1W`&CMn_cK3q&+z0b%YN~^0-IFxjUOy;BX(BVRwbc|5WX|w zVE9W*eM?t!qJEAlg8!UOK;yjj^0uW31-)|E>@TtgWYy2!n8O$DDZOi(Tw(IG^;^j~ z^cmVmMeyy_8M^w$))q_X%h2&*>%;3uObGuzY>U}KGKB2;`O}Mgm((aZS-QEjPT5mC<^J1uMD9Y%+$mM5Cfab( zGCnjTVnr2qmGY>4(Sxf@t8zbbOT>+cMG@KI?$Aif2K@l-OjV*Hl;;(X_(ZlDbBUSA z{mRzicJiCp4@?#l%Pr(jD{iS~YGwT%V-0hpCCjP}0hTy(BU6}BV|b`5*S69Ap&ZF> zgsp`$j(ug1iq!eja_8mM$~^EsJ^8n!<&UpFy7dU&FM4RZ_vih{d&?frd-hB6hAiG5 z!uGS=h(1+SS9NFD_n}+Ok)doj8`-1EnV6oj(Ge{yt908G!-3xCFE7bIkP-7CG<8Zw zn_M}6Z%I$v;Btd4#eTxM%=oMe-jQl>83lWWBOP5T&;xy3$VVz~EY z-+82Sn8sQUhrG33H+3{NHH`}#og*}UrIZ^3&2C^XG9m0VW<8V1)@2(r=gE!7LwYT1*v8UcSh-rJ!5Rn5@jy@87R~llaQ;Y|ztx9-Y3&K7RRp-m5yvv$8qc z3(rYrnqf=W$#6yZxX{dyu9nTl7N%*T4I=J@o(v5&f3Mrf{)u@11pDZsec3fK|4Lt; zRx^EX_JqRAC30E1y@7MJ>%DKGxDAJ}Hx>Q0sk-jw980nFVCb9Bd10FHb77l8e-3*e zdMe~z=*;jf5sf1JVV1CN)_umCx+v`lbwg#5;)v>=>ZtNDKZ9*dyI>n2;ECkMvL~oT z9ijE?basd0xvGZRtJUikYSikQs>ysiHjVZ}5$_V3dwaUpmcK0ewjecEpIJBco8-*b z176Neig>=}`IA={U$%YwWy;m;4Yrf$2kl=WeIxFMEVYc&4bpDXpEM*|Qp5K~{u~ai zwY4i0`{?P?Qtv|huA(opCuY1z(`0eE?}~WaU0ZkCH@1=GKF4hDRT08h>@4MUO^mLE z$!b{`Y9%x35t`P%l^Y zSLgD7vAPzfX6witW!a8R`ra?tSz~Q!pViLOUIXXEs;x4R*dk} z@ZJhkk-NcEx+lL`)7?~HofZ}zJ}|7%sha4O&f+8+fTG zu*tv2ulDWrF7#wOs+U(Ud6cs;`)x+^jM#MN`^5Kc-nDt#|IPZhOH$@#jx6(u#}u87 z8OEmO{rZt=SrM+jt!-*pVxAGwCRAn3F`d-6P@kd|VlQV->B_>xxuS-Pbm5pF3y^WiosHb~t)>vDHya}xlI?no=WutXc*u{wNqKm4o zsMa9%X;emJXxIbG4nv~8Oj}QLM>#~vsMafA@U!{%++1cTbren}ciX?<`!Iprkwj2q zs2VU13`LuyWx^qUzHhW|iC5!Y=Q-`ZU-4tv#-bl`PUMWv`ZcpwdU8r+GL>vd1}Upk z+GjK>y6GKF?N!avY}Fo8>(!kVY05%%xZ#2MUC2x8U*s1;XVX=~IOS;2De$9njcq{j z?n0qB%bx1$?rH8mQ=zo8<**{fN%?*drpjlq2WaWHY>ax2$!uk;_d=J1j zyGQkk*&1^?maE!6s(<*4(8bnv#xVWQ+Si&abJNgx{>f-|Tc z)K~Oxv=>s)iPUnQxI3TtyU~nwo!Fa?N?q=_ENNEHq*_*5S~!~6dX}CqipxKkH7{dFTJ5yM z?|muDQ`)B{r>)OyTJpP43O}&Rl$aaHd<9v08Oy6@>VG#?4QXrLV_al#=)<*p`H@g9 zE%$D5B-&b)_i{{jb@$ftxjkjh97iYDLH7)=Nt`bC!)M@A=!U!4-l|fq+MqFSw<0SW z+QFI_-mpq&)cBYKRc};Hh;l^o5j#UKnTH#18Ww7wsT-?WsVh|HRn62Rly`WEJQn@{ zuH()47;XjbA|pOSZcCyA^ZZSHzxo>cLcQy}4czgL9p%q$bZMi)-|~m&)Xpx>FsHgc z9DZNrebKww8EA(nLWu2rk8^L zXo_@7I41NK1__$LU2l7z-Phmui+7C2lG&9um)#ufX`Df&wyqz@J zpWqqi?&jO%zw4{xuO=J`oDKK`--x5-SOh>V@D47bhO&uDqwbl0zCmgJ%z{j(%!{lQ zAzy|c4PO#@HL`8Q;PBpI)2-c2D&q$I8tqN>JykE&9F|nAxeNY}$f2XF@Un(|m5&S-C7I{~CDuf3F zf3EKrVWD`4+%r}YTZ_Y_g>sfWiTo}C+&XK8*(og&m4z5Xo;^#PlQh7KJJ?M zSWJ^LDM{cU0xdJpL^EHG6=%hvTGwL>QRt?eAIOuHunh4tGn> zc6Xx7ThXBc+os!WWnx)m`R}$XrT)^c#T$#B7Pl<=x_Er?siK792gSg4)6Ti7_-y{X zz{%BvC zh<4WA-9F#mxMGUEymV2?+p_1y$;G~sC1qJ<3(CH-T`u?A$5(iqb$q_S>;M$q(iM3X zS^yf-6X+q#pX?8crF?bn6r0LAxD!k%wG4*AJkSv2plNsp9*|f;X=r{Xz`qln{-oc(Cx7B^owZ^4! z_i&AH?Q#`W6jY3JD9T^j=9G`A*j!#{&$mx=Hg&zLh;a6C5A{giuLAD^2ZhUmB<12Z z_#ingsKGB_J6H&ofQ58*ItjL?SY|I=jhmth`2)I)%=kFo0u#u~V=*P>PmHIxG#Bby34#Ce=Q+Gye|Ry zkbE3{hQF8V$m`HO%#yR{6!J#*4*UV_U^2J@TQZ2UQ6Ja`>;vuxwuCEFHdpmj^(J@R zzbLyai&U(7oJy}gsz_1BDrYM;DCY4$C|jrwE51}5Rn+E(vzs|RpU*c{yyddF8HytA z2d+EgqCe0Kt*5#}4hrb46iL2)Z$KWthVR0wAVK!XkA*L#=h7bX9f=obh%Nln{11HP zzC+%NoJNe!OEYf4)OyH5A6rW0u zEEbV+=Ko`X_Q759WEKoWVEJcT+#8+o<;kuD+{BlW0h zY(u)38P2q2AbX2#$tAF5*h%j1$8yh^Z|Ow(55;Q!6y1wxjhy6b^O(Mi=h4YLV*654 z$=>>bs?Q@ub8t=B0-mCWu{pFvmr$4FDqtR6o4N^I@@seqjs@dE2`rU11~!maJ)S-( zHWOMSl{5;ilR5-kqD53lR(XZ5bD$%#yHdR6(m?UNZ?<3Md*VAGeI_jPX8A4!miebh zeSHPKTY=|<8a>2E;^@E$v76+V4Ct`9*qbfnfs=&S^Vp?mtzRbZ+(YmZFqfR~7O>wC zZI}w8q?Swl0L$5Fw2OXAb%Mu%m#U?$$9O?kHj!@!yHOXE$DxC60&9yu@uyU?r6ph{ zuCDw_#o@Uyj46g!89O(f9)sJnGg&P?3tgl7XnqxTf*EWpbe-KP>rjI7OI8Xb`v%cp zuw$e+K?n>&^)z;BmGd!(mgm5AXuRb0&XQWN7hQR1o@7R$a((mPM#bCG4PiO+4 zGMm8ze?57=B8-g^d-#sRA?hX47HTc?gVc)g@!x{8^eE7W{gTgu{b(Dg!PjNGG0%zS z#Ts>L9Kw^pWao z$5T`BaS5=$!Y@2LYXHY^9r%pZ6K$v2RCmcm#enl-BIsB#NExSW?prTD!s9qE6v->} zNSHwHfTx5N{%!O$b|sMfe@iWxm#~3s6{Zt?o+vl~UqQ7{8v2=NwA`XripBB)@^;MN z_4WhIU?$9;E-3)H&xb7pr~3tWhKs^8&i7z{)4d)klwJzq+wDq>M7BxU%0Imcf}!rsrudAOzD6_DOG6R zfDNk0{#@5s@Y&Kax?!LJ z^P~7Rrv$ad1afE6P2B=NlX|085CxRXU+S*{-90(n9ae(vg#J{HJc;c{zTBPZ)wBXt z1WFZy=tq8&Z>;h+CLi7K-|+Rs3ACOr7i#(Yp&4v@dOqyw+$T*j?)HxeYzjQkT#-K) zw#g#;jk}K9W4&V;Rid6Fh5J?F-*PB5N8CamL6ZUk*Bv}|_t1qhlkM#UJ!@5L!Rvj| zXrJOT(L(syJC3|h{^S^=^V4ar({d-K09s%pc`FpXzgla0(km3qZP-}#9r`WM3mnm& zGfc~G;1U!x8^P^GCtY6jM!yR}_fB!3{v|wImIxa18z>_s<0sq~?hAARt>9L|-pinfTBNrB!CVIp_`CFou&7}Ci8eg&^ zhyNUvRP^Wf9Z6ky|pC2JeiDcAmbFy<8<&D zU6pAScn)oRb+lG4b%*ow_4B=T{5jGxK1tX}$LqHSqP+J#lW;rh2>PsZpqK-1a}M^D z=Z)B!Jx29Y)wadUC-v2&I%1gzF@A0(X5;~K6aFZArR?fmBn(qb0`sXgo@=ltyBmfF zR^id=6V&!VuJ5h*LeZbk@<-u?@=2yTH4#k($8iB&ZfmLeUKyZ=%WcbAtA69(;XlzX zs0!Rvjzi7Gdcs&ZK{1S~f}06Hvp)W|ywM*iZ{oiLf5<*`gIP*%bYJ$~){LhGua*6o z>kNNGJ^VeK^^{YM&EWo`dz7rGtM2IvExQQMS*EhPT)(<*tG`t?^<4MgmWL~TQ{Qxd zEw$oDqp^ZS#`dMQgM3w5P8Fgt)D@H~Kao?YsX|NhdiPw%R(=y>)coSwTxwRWv;@!# z``^+^Wd=B6ABMXzcgan59?{F$pq4wTOxESRt)@Emsk1y4JBSML?lP zwY@PyGqnk9s;I3zY0|-i6*}QdW(GSpu!gFtzKq}6Rtw`zwK<2cyZ<|(wW^LKM{Z=_ z?Qrr}b=%+{zEx$D6t^skV9kob=rPOC$+)d20iRSC)3WP28X$aUwNstT?&-gfj!RYC z-{JM){ry^@yDwFW(r#A{@lTKy)6uxz4hY#$NJTR}*R}Iw;oUO{%Fd%I~abpglyS=9zT9LP=HCl*%;&naW%_ z(fb{44VN1`3qxGLP&3&A^%>Vh&o$iBdVzgd8YdR2)O3r$EtDzs0VS#obY1)vMF~;9 zGIcyN8Hzp+s*5bXp|MlBU$UZ|d(HWZak#bZOkjvvf`tLWJr|7E4Uz3xdvteAeT2oH zm#_!l)OQzu&(^|2rFlpP_bR;Pj`3&n1-P!vCl?uJu^j`)g_d9z{hWCY8c?748Yw1% zA^!Vpx+utX@Ohf&ZqoZG(Ra;WLVFF-xH4D|5?v3SNV<-Qu`V{%%hWgtF zjQSQ@S?XB4L4In!P4nVd_mDsr-8^H7yRENF#X){xNPu~nzoYC&U0%!-RFM6Tn97UB zG1O_-0pBt3fZVbiMx|7Qh~!1|Sfa)IZD1kWlIzc9MSxiq$Oe{)BJfQS3>3 z3BO$Hbq^M5NOky&iX87!e?M<)^&3ruccXui*i3zlvHH5m;W(R|%34S(smOJbkDIHRslm76}qlYSr=(lC}5v4i+&w@w(PVzuSICW0!BJ4m3icMe# zJQFAuA@d{sL9Rjli5~{~G9xJ&W%$GWoi$_CdEShQ7wlZ^@2<~Kl4^;(RagS<`4%ZO ziYdZ8;T|;{*W&Job?8FzY2dMXA{2acKmyTfieZn!(S)i?;W>PiKMkk&icvdUgS*WB zftLFg^NpFNfhF=hmSL+213@471g!$+P$wn~48%^UDavL!WwJQcwN_SW^lGa&N{o?z z1Ak}&vfz}(Cz?=>4$Q&V!Gu6LwS-@XKLgYKPx#ZIyX?oAVh`>KH62|+i>W$N0ZwGy zNJ%I9M{q{!gt&|DfRd)F^oa(OS2|_VBelPku=4miaun5hQ zPocK-0eKNK7Y`&_&ZlvA*c)%8`hpu$D18rvFVf?=proP1nM$6idN#?;4W@Yje!Mn9i)VFVFq3* z{{U|?v*aD&7slM;5Mzm zBTyok21erQcp98eeuW$Y6mAV-s9fBF@b)mlBm4@Q0zV!LZsAz)8^L$n0fUHc{UJi9 z&G>t;92_BNhtA~pM-*59%J3Ap9oyspo8^Qkw!*wio9YR1>fQya3MkH zc!*y2Jn|~&Aa_Va;};lk4Bmz-z*urJUxZKN6JQm&$6tk`L4RNdIA^(5`DBjcDr<}9ICxDEK7=usL$HLwp)B*>SSM5po~euOOqmoy7+z%k?JD3C*LYaZc2pdYw~ z7ZPm9B2b0!AsvqZt-u9>An8Ul(NjrF?FhQ(0d7W6Av*AeU`Nb^*PoO5BoQi%CFq}A ztRwg2El7wbI>qftNKJYgNN^<8Kpe60qWCVRdZz3DDK?Bl57Z3%M zL|1nNi8ms5eo=&KJwP`Q3c8c~KRqcujD*6-opT#dm$X-#U{pGQ>ZFd5guWygq6*xe zgxpw9N<@P~f|D|mayoF2V27F#YzrVSZ&_GD+OiYGjDt{&BQ$3T|+|X-MDxZX(la}5Sq)iEF z;TFLPNhI``+~K?-bPwu(=Mvr0C!_{VV%JF-maM1@(ua+-l}S<&=^=-#7KYsXyd=G= zfse%fL_X}KXPK0AkT65=Ik}a+AR?<|MM;$xdirPHF{6sW+sS5)>0E+X!t$f^l*aiEnoC$OE?!qdA%ZZe~0f8-Xs&QJs|!o zl70){Bx#R`dq6a}AClMuA~ko&*Ze+_;8&#XQKG$AK)8OI=s&+AHLu{yq}*eY z{|_;@Nco$j%_k)7Dyf%5TD(D0gLyZ|%J_%G|0eQymV};>mamd^agF2z`*=mPjf445 z$-G~X9$u0*o{`m)L)KpknN=y7O%b77aJ>exaUuzqRdU-;;sRM+h^&AhR{+@;1VTAT zXcj~SQbZCIgd-gBb%eW2C2~(s!WzQuFd}#1M5^i#>8nb@u|$$<5}B(_(rOdG9+Ay@ zL}u%ga09XrHXygzjVo<45^GIzn}H_8Z$lHQp3!TgrsGh&+) zw*yIQOu}7AC|IUrWlmcn!}Ul?Te6RIB0EX2m3E}nHl&A^Bpz)2GvYU_98n#zx6~qI zYCuL=lZ1o2Lw%A{kIbM33D+Pqiy`S%iCc}t!a)Q{i6pB!w9;4zEyBpIXCWq(NI)oA z=So74Ac9dvtdgvB9SH^HB8YWVRZ=b}HAa$RA+DCB8A&S^Qaf0}Kw_c9nu!e>GwCtd zM+E6RjPx5pC>u>iSCx!7wsKVUDrp=?Mpuhazbf(Tl9ak+4z-ABOy<^#P%*gcwIUR3 zLMYIL#9I*4n9!sFp-f|vQj^R(NZ}wQgZa%X>F|+HEl4{JNsGbSwMf4;h+muZUZ3<= zo6xKt$*oD!>sGecg!t77wHlDzc#S*49vjGa4UjH{0sLd_=I%49qc0K zzBS-imPyr+p?%;yZp3uuOayb-9X5r}s4-v=UPf(Y$8dhI6rHCL^^6_P=D_p# znXIRtlaW7!-{MrV8a>D*F2+AIDbR$r3*E3x&_O?;t@4aOxsZSk;Mt58d?UV>>w>oA zWzc}T6U@+R_(9%8C9*s4kMauYEY9_vrb6gha)o>WhcZ7Bo^2E_!|Mdq8AdRhL->6% z_Q&BZAcQ?5FCjbcec)oMK^wuj^d@)fW6(BP%{IZJFiAd!p39kJH4pF)47`SQaGbA; zuP*%!RbSo`h*TV68iVfANp~%Ho-^WG(tPLyKNA#JEX{)<_$edc#=UPhjfUvFzATi{Ev13eQah{gVT;xd#)^lJ|JJ|~(4f3PmN zQM4jnzJOA2Q#lFjMb((K@N0q{dkz(_3jTmBfp%Od)lamcJ$L|6z)k3ee1kT^dqNwr zv2*};mWIhYK^mGZw}KP!Kg?cHDHz}*d4;qSF)#q$%k5w|?m$kkb@3ATUP7`&322L? zLb2cm`x$i~HN+Rl7b}m7lpD(3&0uAI}r7z@Ug4bIreYsquUN!>&edd}^PLng`MdlUKA)+^ z6>&dtf@%jpmOakx!iyopFa0WJ`R#8`(dw*L7Vqt<-VK_k1CFE4Zh4s+9N&#bHIB zVvnM?Vwh4;g!4!E`+NgFTKP!XNv+X6Bq*N0jei*$=$GhL>y^em1h|)$!=&Cnso2hRrRisrNyN2oy784#`mo5aX{xsJQ&W06z%M=8Yl9fL%FDvJI=9IMP z)b#h;lN-Jr`({SUfUHM_Ul8m{v;2KoeX{<@>riy8G{Ii#dM(_=D`0&(mATIA)PuBx zb#rw6wf8igbve49Oie;nRaV7hM#V>ru*R7*`VU0U&8O(0c+H1$>GWVY1|1{!!(jp7 zo$4yAh%UF5HZG1Y*<-upyy^MO_mlUqyT0qV^S0}AuPsm}@1tmbvMNWDpc`gbU>a?? z6}mFwugLz9Uqv!eCu3Gt-xnWIyLFw^+Vg9v;}=&iuG+Y2VpTeJY1LgZy`ugh+O==Y zTMUb}FO@7eo{B-~f%w3FU!=F#eW7BfZAHn`Ja6`eOpyH{WB7;Elx=UzU-x*`_|>tb zXV1Ws=})vzUO&0^y#3n^nT?8SmwJmr^FQQ#o!h7&s%)EMh_@}OsW@cFG_N+B%`Yt% zLf3`=81YraLV|qA31g}Zh&f-4jbBu=G;U&5Q$(RF==5!O zt6du%18l8|TIDs%d6N~L{UO_xyP$A*=|J24^6c_*+a}w1dp&16|8*S0ttQxq1IFd% zze2PTKSZyH9aMdJ-1eFgwae@5uGg`_+(s{(WHifa_D54)qr|%XYyBSoBrZ8FI(}h| zQL&Svzm8aK%{1&&)BHW^gZM0hxW%(vy`hzkPA*S*@q_ zpSF5B@Ja1Q)Wh=+nm;&oul3zlcURuu@$_g)NMW~%dyY-zj-uGYu+mkIn*Mp@CJ$>? zg$#{(T+I|at?IGZ(&`iA+4!^7kH-jAj8UaAhieqn467yAq-sc2PFc&eIb283Nf_;G z=d*i{xGm0U_PwRP!uR<(Iaf12|4{h$!|MgFC%k#^E+Ms5c6|Ph!kFR<#Z5~h%i`@J zuA{z3auL%~+rTm{^jdgam1QyM)f&VzwY7CS);n3hOQX-5eBE?rGoksO79(36Y4)LU zzXq1NidsYBX4m++`jS{x%+knOq2HS}>y+wld~dopE)?7P2YH%1ua$o&-CDe$Ft=c4 zer67z6`h`ty7c|?l<4H9$5p^XC5R@}%BL?Oy!yyypu`(w?O7Bz^M2+*kHU zsTiM^fAk~}d_%hXT%aKeqqnHXhni!P<3`0jjNKk>jE;>t6jMLyQCMs1a?5J#{;L*$w*Df$?%|_2`?C&BDiqVe2HzOj8R(U7cCYD01i|yidI3 zf9LJ$akv|}|8XyI_jO%#c^yAi)VKGrO)nc()~7t7qNQVibBSYzJ-2LYSy$Vlvd*?c zrLBs~^2g+tj32{qnpelN>+#*Z36f7Pi^NcZ$l(s#Y9x+;#sQxCv$` zk~Q_!#mef668;b6WYtwgcYX-pSW&3_Rx?xglktir)AGu+*^sMgtaw3RMMndo@4P=# z*eylKSHuBAo`0Tqsk3)EQ&v%uSu(KXeDR^;4J9AS+S%(n_B*G#>~6`k);rQ$;hFDy z5V$Hmz&d(47p;1yiP9f5tT3K4b+Jqf;lf&m{}gelO1(r-}Efgi(PWCDJ?;XuKEoWjIGJP4uoaC0X+gO3x z3>$$_U?DYy8P8DEYU)RFOL7$LC;tzkosj0s@P6my?GwuMrQ3_@6>iJ*XTC`XX&+L+ zyU$+_dFx6&o_nR_uC1hGVE$KG4>OEeUuS!A68{%TR{_>W*0slH;v__Xpr!7vTX*+% zw=P@Vy4%*>s4I2fx_7%Z>h3KC3dJozJQ<(=@cmC7LdIwA+Gi`6Ji>>{wH7vNfODJO!LuwdObVs!_v?DZARY#bG^dq_|^NJ~@3d#8dMbrkY z`tR^|J`5s`ljTWLUok|uz%^mV253MwHt;g`~zzWw|QX}??*#x7mZYnY5LAs`k{ zuAt`9dCUj(E#3YQuc^8DySXg%oDtFQP#q*^V+F`N#EK@P7HkRHADJe{im$kD!C8Tk zeytDpX1SlZ(wvC%T-h;a6L&}N3IF=wCAN&c!xjZc1l@rH!D#MJV2qzZ4q)AhVsaW? zRaITXYa8h&8PcQ%QO6cWU3QUtKo z8$xus23i}-!D5i{BY4ad%6t+BDN((|jU7g}3r2fkSKJfAJ@Tx*{(;6UGQNg}#DAXelyMh+I=yhG@{yXltx7z83PR zx9Gi0q$)*qgJD!v)oE&zHeNqfU(xW@@XD|?qy(6YWriLG(a<+!tFaq!pW7RnglP2p z^%euJ->840d!m!Hw{+JuRRIB5L)}DOlX=ceP}Na=VyZHu$e-k6>Jjywu158t*OFby zwZweI>yJ&K}$qIs$;1TOqJ(JrkLNTCAXfomA-8yMr)_}+N4J)MDpdB+*) z)R*Oyz6IXvNq1Y1$4$GhI}K%>O0SjdFX>eBz4V1scK_}jj*&~5QT&8&?!Lnome`V4&py~|A*krO3J z>?3XwMhdNgegA>~#{bKw@$H2s!e!nJSY1k(F0>K43q6IyLXtR1ij?okWuTlf8B~Ny zkY#8a>@_wUm+|k!-{e#(jhaHQqw6q-n8B(~DwVpEYL%*=YPxExDpB=NRjhKWXiYOs zrn-q{u==Yi1eSD%J5pWUPhA26SErb^Oth*iQ&F`Fu&Mtt(^Suy^-ND@6z!lw=}|NX z$i#{iPHm>vQ%%W+R6dzc93;j=FE9ZQ;w4xeydBmA8-z6gMTK1uNjR@mKxPBJ@U>Jb zT@{Z>v&Bk+i}!F#xMJ=B?D9^sy#IlkkUzXQ@SIt(C^XHX)P0^lgU@iN;**$rFN-T zFpE@i%ts~+loIBs9?=ukp|n?3TeXzo0TsHE`NWK&r!f}+VcU>q=$q6idL)@Zy2#1Y zZ`6I_44p|nqcD6dlLGOLT&x>%4F7`m!PR(0ybEC8s-Xd-0-#vd$<-x0C}vFKNvRQs zL9Vk9fge{?SqVjEO$!<*hY9;Bn9t?e}EC_ZgK?iod~DO zh#vGf5+gs8&1nxAO7En1(5d8MRdePW$uNGp5fh|()5WA&Wnp@#^O-zm55+NWn0}fp zRXB|@bu_tW#xSlm;NyrI_zk=rnTqVkf1oq*JVZ+@K&lZmdH{-~p)>E6Qud(h>x1v>aQ`Fw$mT)&{&KP6!F#_=e#O1J`=UhF$n7t+SV_obkSrwchJP?`$S1ODY5RP#>c%QsX-hmzx zM{vb_Hs279RhFRxWjEZPIkH!AAZM`!$Tz5GIgn>c!ehy95GM)4ULdu|3@TSXh9lHl zNyH<_@kAl*AlCsdF@PSW(wH>$4~zwkGm3mi?@(#z3Ba(rL0_Z)qFQOjL+f}1afF@B zPdX3q-@B;C^lnV2y{0p&s?ct_GI<#vU|4L}!c-@()71z;`%9Imv*05Dvs;_&qg_kB zXF|1u$m=SFIF4IFbw~uolLv^sM6tR6>p?B1jxcM8CgeN3i%?Hfncb^_r(Gk>Bi25dBF3&~g5?7zRk9FrXs!*SWXaF(JJD5$r%eDyIgqY49VL7>lPnJ4J zCn3Y%1k}%J3myG`@^66Aj1!xb5&X_Fo$ok1SDLNli-qoI?jCMdI3+a@4hJWB)+v2T zFZ!49!^HE!eAs4$$o)`QS*omA+)L6cJDcDmah0e$`teX-irE;sW z4Tw$36}3nO;xEC1-USX@H*q&M7w@lJL;m7_Lwh0}sCzggwnh%)^RNxX0r@>DDO1%Z z==qK*7MgXX7;r-z_k`Lhk6^dip3Dd;1M5iS8zwT{xygQlUatf5MFS1*;T;0G1a z6N0YLbS3KoYk|QIi|deBB1>71T_l!@RRsZZw)^FJVrMy3J%+qQoiF>>J%pM>FE^YG zru&z0Nt|6i`RVdA=8-_LDsHhbNF1QKC>;&l58M(f3vWO@ ztXXh_QV+c%Abh6(r@}M6rFYH-WJhckua%0pdH53vavJi&U_*GL6O_wJAvc`6fF8kz z(5IADentXx4DwRT3R8+NVt3IE)OzM`+`wP*sR2#dMYlmeSNu1yH?UeBk4NFt&85|iFJO>O59lMvJEf+uPxTK(L7OsnnYPp{xM!`! zYQbZwj>bQfjzll1frDW_Ma8LZNdtYH5|0$wEK->#pIT(7Mu>cbI23u0-P3*6jSb`n zYjZ|?ok`Ff^L0WKr5=FG?5aFvCF3TozwBUer5LV4^bd%)O69Vi?tP{&>LRSJxXS-R z{2Skk^d+v4NzRsXKk+n0XfFA-`*#wT>9?|#d+onPhxs0bGHgT7Mr=#)ddMAev~wo+ zBG6kikJwK3aVvh6Tt`aK{iAqTfnDdnp(N8g@P2`ZtdUEyj6v zNo`e+uw?d1a6h1h8U?qLe=!y@f%x11-aQi8to{vf@&#V6FG+5yrkIAoJHB0%TE0sS zR(&nX=2P%`xL%j%Vz3KRdoeL|iMZHjla>k+HX~#k|8Fph=*cXvmPqyutS!6?Jndin?e0A3x#X`LG(nj7a77_7K-F)Q!Krd$pWNMd`Q6CQ$Rb8+c_}#7FwR zL%EMrxdq8Pig791h_BKoL=Dfbo$6_xLGC1DW?X~fk%brVEA;8mi@{NfyKJejR$WT$ z)78ss;=FA>p|2wJ%)JzBsqP%!pD4(!SGtNCufJj%ke#V!FK5}|&Dy&w`%clK_2h4H8Q9qG** z<*u!)44oBI(>)}|7Z_q(tg5X(<^P;Z8gSK7?GVQsALP4Dht#!$O^ZjNvFf{oi&n(# zIhXt!%!}13s9nQ~J4pF>tB^ss#j!?8B}D2Fm#WI~s)Ji~FLX0qyWAyMSKUb5q;8)Z zq}Ir*1G8hkut~Dforo{>|1HPF^~W5J+OGQOH1#M+XE<%#T1uC048BqNS4mbM&Yb4& zFCmmivsy)Y76i_bbx8xVkc$;##8%p8HgFgY^0}IV4Zq{ z#>M;yd6}as?Z@n)qwOX+#CyK1Ncd$th4sejDX-yeu#Io4HPRs9A)dstU7jhn59Vd1 z5qJu9wqUlSgK1Iau{@CZ0?&z7;f?VQ9+bKv>xph$>(Gw$=i&-^(~-?leL|ah<~Sk% z5xgp@l;B{5m5~|rRE+FyP2o+Br^PG7>uSRb{!pchqtQ8-Huw>AEeogve9+U!*hA^& zT!$|uDq}DFw+xqpU7Wv(Mt!Q`VDSq615%Nyh;{p__D%{SIGCXC%_v{6uvC2^TASk7^APBkWLmkcYK{@ydZ)1&@3+Let`-6up0J znYVbD=4G`BmKz0?lf6_eb3^75T1cKNc_CF(j|`5)+LH≧_#KQRyc-RK6TuU%f|g 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 l-p3gZ8oTv!I~!h2IX1jXPlPrXr7D z1h0|{!cyTLWbi-GkC+-Fz33w|8!FTb89VbxbWfZhc`ogMN^nh?O`3zhzRKpy`zmzG zSIYXT(W+UhIjSqF2I^1h;hJL2H0@dKD{YF_rq%2E>t5>`=(p*=;MlG2pwH1A)Xe|} zbggc)ZoaOC?u|BDI|TkUV)Y(Xl#>Cg7PSf`hk;D`mr3E)W}#`$vM;)y1={th0NUOXxJ)_u6KZmXvHPmRsf*stXS1 zwaj&!SD9$j)a*0aJx!NPz0Gmv#^z*GSJSKP2ia3ix6Pk&D-_Hv8dtohWQ6s)Rb2X@ z^s{ZGqqa*@776B)ByclO5+I-+u7DPNL%t`Nu3kY$Vlq()y6hX^l$s{kMd*bqQ3)9= zG(+3tm0+P@ykNh;A?Qi0CWa7Yf+2$Up;4hGp*k2LOOQ8y93DFlt@C7Sm}7_Pw8w~v^)vbm)nX0g<9E2IaT>X*g zHq;K$?$v(RigmSgb#=VJG}cn z@nx^v-(3%#yB*8yv9^fPO4d!q3oMC+BMJohn{zMbj5o)d2AZmwjsa&s(>&PR*WB8y zH>=D(($lE7L!8C<{);#%;n z!7#idSV`o7g|>;Pg*x&S@Wr0V~T#*z>^wN>i{ZfzgPg$mHk~~Y^ zLvdK)RrE);K2I5~8m4-L%FlkaAFVb-GgGr(b5OHYvs|+PmHm^N+nQv}3(YCbEKPTf z9M$XfYJ>WRYOzYMI<1r_Cn+AutH}4sI>_EidrHqreBv%Z`Rrse>2P`uC8k!PLdprR zqAFDzn&>M-MSNfW3^#$>13k)C!99Ve{;j?T-U{9*tUhPB*SX@IryYmvJ#6XL6(uK% zyIMv8m2J)+m)9+q$?1i5J7toX-k#Vf7u z(nhwXwuZK~wu5%kSs8klFMO)tW_C1Jo4dyLW~Z`{#RKQ|55YB}Shy8D_iw@+j53m# zhpN9vc$2J89iq-r9l#P=C;WiA?GK{2@Fn!1yr@O40XL^BaRUtCDo~kuFEF4+Q<=yU zoP}mg5NZeU@U%UPdeH&6zn>HI6}Ne-FJ`BK<+?$S;?p55wI;cL3!OoN`W$+ zNgbfBqbm21`ax+?8~sYR1;(R{X(}3kn$RK957b`b#S10j(j@6TnN!wRenD=NS5_=l zq@oSeltWcnsw(Ok>I3R)>d%Of9<>xJw)vWWG)K{vqcxQ@dFmDFhR79eS8Y%=RQ*(T zQ=U>(P`s8`lrNF}l8%zPFe}cML_pR5vnWzDA1(@az--K=l+;eLHyH^Zg;&C=!s)~v zaGBFWQ$jYrn4`FE?CW6Tpb+dSrSCM>Qx(caxd*sLI9oVsVSo3~I=JMfQqXX2FW0?!}i%!b`JDBkex> zeMhQupsSC2SJ_nWBq$>uW^=hUya#jsKhTs2fCpTi(4nf?mmEn>C2NvzgsY+Aa1F=~ zS~yiGz$2AN`~Rb56!0GBh$YCqW@3ix4NpfWYI$RbNVMA{!9~G!L9QT@=t+zMXHr01 zgsa(~&;sf!ScaKT3|H;dz=sTlBY8cd9We|};CC>>rwAVk^U)^)LW(R;_9g#8y(5fT zMOnZ?JxiPD7^VlafVsq2;r;PR)Jc3tTvu{jqLKb1eI%93+Q|0FwDJS;R;ZZ`P`*}H zRZUWzRGm|uSM5+8Qr%M}t4OsJhezd7<*8n&wyEI0rm`vh%6w&}@~Co%l2aU1G*o<% z&y;hr)3Rx@-m>;GyY!~Co%EVyhh(gzyCeve>C58b;{M_jqMD-FOg25Aehf7IL{ddA z5qbzMF%f?7yZP7LUG`IOZlI?BnfHOGZJE^F-xYM!ba-uzO7+&B#WRX(6>iA?JHKb% zz}&Stwaxjanx@&N#ipAkzbO}W+4H$q^7iL%EeJ0>TF4ciEP8M0TJp@g&?a~6ceZf9 zFKg;;;Bm5tEiC=q0U^BhgYfg^ta_16!W-_8*MjIg(G z310=hoq>V}0v@yBZ&iSQLofMq{7G&BH-o#*@mwE%8oz+=%=hBQ^Z$b7-5V>AK5)gT zN30_b5q}ZAh&q@nCJ;A>%2*k8B`sh!mr!--hI9*ej`t>xkJ z4)Ow7YuPH<02wE>N#{$qO6yD4q6N>2HDDTFW%@8{>07Atk0jR!U%{C%OrQxZ;n#D| zSS6bu_~M`HQ+V%|J$G+(wQ)M^?d^Yni#NWMwk8xuShBG`*_SspcT`o{O+KXKi_{inGiwuH@OQ`lwfWOf*I zL7E`be470Qx5s7NRqhmblv~90;2Lx7xjtZdorI>^3e;)GU|idv$kh#c!zM7k4@2`~ z3f7HP$(iJ7ay#bJM%WA6gg#*`*%(eXs}M=0RBfsUHGt|zjir_#8zQ9JV&z{#Hv>j) zAKV)+GAEgP*d@E+r*U1>2<+b$lC=`MWSsP~v;{_vL_SUaOWp;or&o?su2Wu8u2lZ5 z?5*sl?5pgmoQUf6GG%wvv2UVX^{RkUr7BQ#Ux3@g>|@#Yv)h^)W0&?kr%m3X{P4nYMNcfklF`ib{% zmtdWF170Tk*(Tf@?i9ZY3T`EWzHk7_fjY-&qBZd^>L@ir3*oZbguBO9Vs{7i!Eb@F zfyM!cKf(V2ROeQKb--M*fgadb*q~m}0!~bm*ct3v_7R)Rl3Y*j1n1^fVLyI6)Bq8- z7P#o6h1D_VO`<+f9qIi*@Qh=Az*CcD)FPhoFzL)q<~p+#8Rgli&C3`Y?WXhKCi9)X zOW&ZM({I2eUPyPOBcKA5KxI)ssc+DgNu&t68uoaL=u@NAWSq7->b> zec5QaPrgu5s2GhA*i#j+s)x*;Pu*6tSrex@rdg%wqACBox}#p8Zh~m*RMG0Ms^{2g zM5~OdTj&dul^Kfbit&m*iZuCT`A^wRS%29I*$|9YUb#vgC#ZN7(i{2Cl3)U9Q$}h=ll2?-ZcWzj&56Hi)oXKMI zJAaA4&R^sg@*@5%Hy5K&!F>nPxHs!XoxvD97YGYn@i+FHeTRLsd;@)Jd=GpE|6;!= zur?qMZbg3U2HTb^;_mU2L#^Sb^#qy(MsgRKPgbQCQlBZB9!PINd&!vg*gHICOpK4I zE*gnQnk}j&9w|O7zAr99L}es;tT|Y5f%q5JH&1bi$N0R3%LU9_XT;a=*h{fVtdVq- ztdYFIzC$mqC+#F{A@xaKO5!AoB$Kgf*#g}C2Rt)Gx=$J}ErXv~3)wQ+6Im_!zj7I} zlMY2c)ac$|ho7Rnr`)ETqwIm5N|cgO<|~pErxlwO6OltXEN>Q{V*X+CFzZAFR$OLjE^gIqxX_T7YNgt(W)8C*E zbdA1BJ86b-(a*4ZI7IiPlPM$Bk!&n%PP7&*5B2Mjyo<(&-Y|=p63oo^sK(SmvLRNW zA)$~26_0HFf7GRw{H^lRj=F@|d^~-ORx>M@Y+z6Kh|)zW@gL$n@U7y+gCyCKKGN-& zQ~gq@jF82{@$Q|Zf#i@_FP+}ifZt!_R|L8T?geVWJE|k*IXHMB6Ez-lS8J$P3gJ?>i8zD3-3fU9 zW)I(^D`%ET(tE zhr2u7j_!@@)c|@E9Z#pxVypwUFngKX%oXM(BIPn>GV?bxj2VO8IT62q2D6r#i~C~6 zfZn>4j-)SAHK}~E8`P{yfJof}eV1zac|UR~^^;3VkJ0 z9GlC6zMa8I+;x78Ku0_VhHfy`i~i2oMH?l}q?4uj60P*3#31P<9w$B^&KF;koRZ4q zljJMqXJwKF5AnkVT48_cPv#GCwDg?pfqb6gzQU@=SA14{RG1WZ zFvAa5(28k5pw)+?)(lZ2MhRTRD{?({V{ggUP$F4J^}*R{OfC{`B66_$Z->0sJLtc4 z6_R8od77FA9hqB9q9|7KQaV9iQPoJZ89agsz``twcmnL!{D@!SGs7!{hlLk~l?xvm zJ|%ojc#ZG_!0hH4oce5CzE+^^2F6lD^;MNw*+lt=Vwk+1OfID*UB&UDZlZOf_o7tM zU^uHC7mr2UX$+sK{fId->LMv1#mG)A!hAB5*Z@b6`=~B#48;1LdM>*y&U^N{w$|23 z#rcI>3u@#I&8cI$owY4Ou#ZhT_e@tW8!lQKxA#wEMLWH1X9E-G@ua{_-{k=B0lgnIFefz+AS=k(M+_~;mj6_-TlA6`V=Nz2DaIaEv10S`>c|e^ zU5#t?zqEZd*{Y68t9+Ae5*YScNeGVFtmLlrENYBvF{?0ggUl?sF0Lx7&-_W3Q8BaM1paZve>F^8*+tJb^fno7$nehR;@Z7jb?9|+C$zjybvD~cQECuY}5 zZT&O(%Re7uKP123^D*?LPC{&QAbqN7d~Qx&<$NmtYu;b^+Y8T@Gxml&5G3}!4<*!E$3O{HJ>I<}5^)vYyaRn+dG?ZQM-;6qz+EdXJ;mJY9 z?WZ%_HoHVu)FuC7ZdUHP{Hm7PwrXX8pcwk}UF8#1O*H$pVY)=!E&WL2-{IBEnJP?) zz8-t9Qs2tOm2zSa#`KO3kJ47`QDJHMGv!JnWZ^Rm&o!NuZKO3tlYtPMEld;Eq^xwj zs56)a{iNR{zr>3~jhWT-7`lueCvu5v$T}$Gsu}8V%|eY=-AbLJ>ZaPS+^Tpg?;txN z884cPTHUVDK=wjlsc((9vS(x2xUyBw@{Uj`RjkT?oHHhCW}53)L1L|+!tW!#CVe43 z-j6SSV|y{;S-Gd)$IV|(ec$R=OyN&oq2#}aHkJOWoz>tJ|{0LBYk}8(&WLvs9zP6|4S8S1@q>YuJdLI zo=Q4umWBN)SG!_L#g`RdRJd88cEvtXD`GBGYFG8I>UV2sYIdyIpho>__DVCN{pHRW z_i8T5dx%uRHC)BObYF`1lW%;mJKvvZPJL%M(MCA1e_*nxiqsRb9W|M0FF7J_qOPxR z7v_$rQ0_^&`sGq0s)koLhUp1yK=nlNRrW!0L-dUR7NN_n|4wG(5XYhA5+7x+9fM&PY}#*G>}syq_@SyXNbGPuoAdc()^7@iy|^=r7k& zuh^90|Dwk(k8hnf2Ds};Zda_Ri{<$S?NiIwYsIu7GH*? zSJvN2CEvb(QodjCM)I=ebM=d9Z{WzDa3F10&SguP{g#`6E{n;v%yqL&ALvg^mQ@Jr z8T&`AQ2pDD4mTRyAgQ*g%HI{L8dS=w;;|&uvAm6)C#+R1rh+s1Yw}eEtqP_VkOiId z9-Cih`!YvnR?04yC$)a@_ymuoSvr4Y=jer%ZdWEMKa1@blOA=q;+G03PlqL_!29z6McG8^okRZy|4 zMl1@s*qwns;DBy)m2)1k?=Ou-u4i<~g%YjhV&VIOWXMPCGA}Tn$ZnL@KKX8v>)W1> zRX*m#hrd!hpZbz|FH87Rpr&3$J!^Qg-Tuzs+P7-{vyLFPn*OlpC)rZ6Q%6?ZQDt&< zN0mDj%Nt{5A6a$j{p>-BhR=QDE4}{uBJ0K1mt)^d{_rbdMOH7%Xy+bpO@EyCl>3}x zlkHaNGe?-Em9~`qZLawbKyGOFY>1EgLZA!lvk0|P1c(w4n zWr1~_t*O0|ZA^)>s5Eb{d8TQsIif&hOYlu6_bF?K{~6V?Qgr3Ym6k{CDjy1$84u~2 zXr`)Ls%xm8D*pio^s#KdY@YP0WRz$&)rqJMH@pr30aQ`n!i#UKXtA78=W34wvvXOi z(5zMuS3A_bw57WBhS^~=!q0{4!{uQ^j3)gp-A|xPHmK{UG|IK|7P9HmIQZDAB}2sJ zMTztxco>_Bb-*fkLd~F`dkT)sRn(cITm zC39VxIb~^L@W=ZfUp{+3jr*`No_n|B{hNfaf{~%?6_+&qqf^JOH`**{SXM1I@};6R zeUKO@?y7GYGr!iMI;*QMu2@5JNchBM$-9?Ae0v=)d^PRm);FU*M14~xRm$vN@Wh_% zjSr0TwR0V`Hne0G62&o&3hZ%7obgBW<7!iCPO34s@}lwsbWZ67>I9L_9}Akjr^-&a zH@mO7ue*1;Bi$dI8|{(-)8p2=lBu@4*Q?2bLy#nLIIZAumt?=D(g^sHb? zez)9e=A^6!>BCbFCc6@YiTMc|f3E)V{9Bt}N6hWqXBD?At!*^4<-JBzYYwTnR@*^( zm}aPA={()HsCm_yn(r&$i^!6x`Fz`x+{Dzhgh^j}eXjrI+jmuR!>r?ZS1mV6AKF_x zHk2AIy>s7WZ!$#}ytQv+H;D6eCFM>=#Z@d9nXXHeuVr=kSkeA2ceIcK_`e=`G1}K%#7S~eu9utTX60~Hetsw_09WIOB3>NLpib^*gpzr(fFeQ_ zul`r_NHb5fOkEDX*PW1kwyP#-ra~*^JoK9S=nJ({O*`dT*$7D!kr3Hsnoa^+s=ZJm z2Mn<#WeHm``S=)hAJd z^pNcH4lYt<2~#d5T})b@EKA#v)i3{U$>q{krH6`76x}VTl7As*n7Kpl_M+`hA-jqG zE?4Sy8&>Ni%EgRLz_N9KRan745N3$y$<>Nkl2^k1>|)Ow$4Kkc;-!`iCAVxZotfTM z!D@W6;GkeDT%!Zf$hgRvL*2->Qj;btLL0Rvc37njv0J0sRJajN~q4FbZV-feJaI z&d^*#Rn(+zq3!}S_cr-{c`5pH8ncwLlHG_Ayp}ZvpZnW*YI*j$dzVfwdYrGxdziC3 z_f|pqf`R$U!X|n5&3m(Mr;klp{Hu0?J;{{3D78lV^sKMhikvz{KF?8cysl}*EfuZh zZW`Jvno1r?ugk8fUPo-H6jA469e>qXQPVU}2wB-t>nzL2!sx=~mX%hm&2QabQmgo6 zelOF-%)Qx-OwY1|*(-C$76nThJ2(6K@NJ1V!XP<{`hhADc-r(3@ebJ_wFb<^GTlwZ zAn`D`l-BlN@XEb|y@lRm{&~TRfm(s5$bbz2A8eazNm*xKY+xa~I@FlDDz2l-(mxCH zhdU$gMskrqBcGNNR9FE;n($alj6FKM;>5_w#--Z#sOFDSu2Y!gpQM{5H=%JljCun< z^E||oBV;&s)5}pytIeq36P_R%Cz>tt0K3*%bcPXP?eY=1Fqhwp3a?tl)Lt!Tgv!S>CL?M>%mhFH9q|KV}R`>yg^?mmpP_Rz58@V~?pz zq1QEqq{P={DdGq+l7Gif2t5^=q`BJH6+c!juCcJ%=;#Y!pJn^$TSTUyx$rKfK*lo* zD&2YfI^Ru4vr`Pz4-r@Pa+MQ1?;$P}55DQTUaFZot`GCk|d{wS;BKJQGhC6r#aWtKd*{%O5qjeu)?d_n!9*7=`u4x{Jh=c)>p z7Bws#1ABGFa7^vnK^5eMVARYL}tM`oZUiYSY5BqBQ{r(C;ci^OdYT$IBUvL0x z;U=Kg5F#u>3+WYJ6m}t>Q$6Sp^a*%qe?>mBo#a39X;B0+(~GbRpUyO6r9pN&S-cVp`M+8nuzg>7>)|sKfL*d5+VlQ7Ybem7&Yr}!ZB={tFOs+)6ObiUb zZT@d=7`r66l}%^e$g*7HU-J#Q@?5K+Hjs_nY=K`Iln0Lmp9ePuKL%?CH2yz*%g`ou z1A#zRpbO9n?b&~WU4v_aDZ$6=L@t+`!<~b=-a*t~7IE*mC&<%}3#ovsDuRl@LjE#$ z09BcLsFP3R??N|i6^=~K%cTSVQ;!?Wskq+UGhlN?Tys=>nsTGLDqJPtxmFhYmjnAAy|$DZvW*6PIx& z;)(IZLgdj5!X2pfLN-+;2d&L^gOJ)t4GgO`)~} zG4KJL?n2~PGf~MOkL+Y2d4~KKifY%$RQ%sV;kqb`!o0; zxDCn|t%8E!gTR77!$7A0q<^h{h<~(yp?{TsxBr+w&VRyx)PEMob^j}WpjTFFhXT6-=K{BYMv4m74?;~pcmn9L(x5k3nQer6-VQc{ zjX~Am2HLm|-D(n%&z99PUpwL(#1m=fk;CfDIE_`5)!e8PMFlJu(*;L2s zcQlysdy!d_qc%I1*iO7cov(p#GFajlh3P_qtW0(!2auD2%-Dmv-$k6iqvQeLITxbF zu!D@lqg!zM9~k4~fd*p(U~Kll@`m`6^7mcdMN5;+Qw z*MkOx6o`~;RPR$zYknv^CR`xw0px&}ctoru`VdCK0S4s>!CXNXcu@pGIr#SfhQ^1w zg{p`2P(SdYAEzSYdy7BE|HIGW2gAoHif4E?SHcx=rCc_b4E1C)`o5L3Ua?i-G~&~v$hI_OpI3F>d3xh%X(z=!d5P(hu6v2v0BfNH1?IIeD?;lR_)3ay1d z&Q)NyzTzzAz|G?|ym)>)^!x{u-tS`-&iAa))X<2~V0f4f!C0P*M>eD9#QkPf!L_Cs z?lV>XpV6EEZ>PC}1&BM#1RHT2f~(U}!9J{ScA{OTq1SbSH%lEvQaRj3Lhz!o!l&a0 z977(%`Qjly?+I`&iSY06gKMRP{(Ku$Y=;7&G!t&$JK-dC1PGY(P(3(zi2&Y^BN2bjQ4TG|JW#G$2&=b!@-;PIAd(FS$Kk?uA6vPRn{NcdWIMf2K z>w(`i0S-lr@mv1^j_m|6Y{zhY5!Yw%dB5)+fJ@0?^tKD3Yxu4|pv2{ct4J7pVp=1U zI|FF96XYhBNv{H5qOh7#UJOl@vGrMG8HwcUi<)z&`$6* zZUsbRCB7P8kFUWu;al>J`1ZK8!wBxk55ud*@blnJv5en}cz>CH!aw3)q94BIU-0kI zG8ud>@8lhPfam$}P+g!`TcLN30mAU#&?#UpvcLy1z$2(Te$#mTwryzr`}nmkS~0bxg+O(Ei68O{=obLa;)gn_Pg7*Q3tss>oiwFfF^0I)gJ zFel7I%$!Rs1|nxQT5l0BJqs~r7ZX$Q=u~1j(HHYTTcQ!(_q)Xm_!JS&y${uGiy#jO z%1nHld|(#R1u3|ffEIZzcmfo|L%|KWitIp7U5>sw0Z7W;f`<4t6|hgI1U_h;WQ7vo znsX0*>m<+*n?lPl-X>tA4ME@R7-|Xswg#c9aFvS+8POgP07RR}LK>j2_2|RWkUXTu z{2GmGd8j=4ya9(C&*^b567P%-)rYQrLtM8FbqMtag0mM!@-(#ZQt+RD`)cijqs}En zf&1tUZ{S|?4o)%2{~w2G=r!5+h9*P@Gp=)SZGqENDIDF3aa{&apfVgB{HRFGD8Jp1 zjKCEB_GYRNu6T3A>6}P|tY75MFbM*B(nBk%k2_k`{mm$KC zIKLiv6&2w7C&Q`e3x3yI^!YpJ?>ErnFXLCA`Tyl4M)xT=4(&nQJBks168Dbd{!zT{ z=>N~n+0Z$hp$oYDb~`(VXD{HnE4cn05w2nk-G}el6SU%QH=;KfUGFf~ej_e_`+WUA zKH-vrOEN~`_y2o+rQyu}_9{w(d(!VC5&ZyZ^#7mzuV{%Ec>fdJzQQNJz$f3uaRm|X zGCbMt{r~^n$L&4*@27}K&+yvcuYQ65{tCD8_zrK-ufF0pKgM|f{aKIj3BNz*G5&gs z`wtLvAK~~N30~lMhTA)M>(D z12gBrV;p8-3O(SrlNb%mq7v>lM)dTm@ZPG1Skw?6fGvMJDELA&t$_!fga%?ER|S~x*8cbGhmamvz>#ny>J0y>Z^0^|mxwk8 zi7lb;>~6Laef}RU3!82hG{N^ca5;uouL!Xfu ztc0=ACG?GJgR`N<>h+qS8~d3p3@!`SXOrP7)rLfTgYsCvz&959!Gd{YckE?#WLshr z_6AF#nD-ud?sGy`xRXramxS`TRCvHVAkAb`vS+9vR_xQDM|2ADvMo^?tMCj~^}8ps zHwC+}V(2P30EdsifvBqzs=<13#vWr0{UX#X)C@b@@`6Xgze0>KDMS+E1XsD${1icB z@|<85&}h+6lxl#uUIwiCPf|hng<8QFHpInY&iY#b?oMb0I028KSzWl3DMPXMyF37XTxTpLQ!OqZSLA{Vz@DO{HA1oCr<@&NsLz4v#Vk$4^Yx0YO zHf|r(T~vbY@HK55vIVnQG0s^gJ%Sp7XVv^gwhKX1@UtZ*3KO{F@G7dw?d4;kVfLDT z5X=h>AueDvByyeka)?}ALr1_l-iz^GA5Luik=RF!6t0J(M=Ew44X7qW7MvpP;0&ABazi;!>L1%J~1 zg14C6_kkPLRxkqWhC^IM>>HBVGnjXt@FPNXfFeA>%D7qV{@@vQHC)O%@ulo5f42W% zpc)&;&BYpb3Ks}|0?I3b9mq}RyTEl*Eto+}Mof9ked3OwS6rnE$V1e0vI5ais3sY5 z3q2KBg)boe702kTp!lw&lIR9iLjH%CRthGmn#Uf1yTv`?h5Y&8m|*2V0I2xM-Z%d9tP88N7~mYz z*t1+b#@|t4cREotSL&92lom^e$=@nmsu9{Bde#sNHs7JJ>tU0_t3`B+ycPKdde&#k zZ9zRQ7b<=i!v6?=6ZS4F1v(u%T{W#+Jw?@7>652Q=c1}#AnMF`DHAzSsKfg8bf_wJ zo1eIh;E_NpKkJ?B--oP9RN$rmw5QDF0AKpL1FH9qiw?7GdTBm1*Tz};7b)^eb8FXS+z4~r2oojk-02KW1V3CT6{TYLb^5SS9)pDcK7r^dH?6YMfM24nceQ+h~jMN8#*FPkZ5!htLtRaTe28ctL(rWlFf4?}u@UCfg%GSp%m$fjm`_qUx@#q#tTXH{K4f6EQq;YWZCiGo#aEl$E;0PKcQw-7czM zlrXAI)RZVg)Yl4!%b$!~6#l~42eynopbPELuxehpR~{o>EB+uV0D|~CeTHgJO(Po# z7YVXLr?9K3iZw$|?BuG4()m+dGW#-^A9xUK$<@R>aW}Ze-_keI6NIizd)I#F80a{C zFS%pcUHqnSaDFqhDI+y?Y*Hwx^w*n|g4AFNnelgaW^SMVv2+&TZ6j^hmSstn8N(?v zGsBjdX^UHC+;+>jrMI|cW@c`;%&=uh(lkxOOis)o{7?J+moAem+pT1Q!~VwR7! z{cCF)HYIX=G!uC$WR`J<`W-!!+NHFRixp<_Ge+eBagqOk^8so?hx~*BUs0l+Ea_7W zNMl}H_Up_snd`F(b4nNRcD*y&{kJF89pbv?Z0vgFeam%}Xyp+mTCLTV=m#M#)4?>~ zGAE>SM4wV0%3LpZto)M-a{03r_Ewl$zI*wP<>d;)E8VD+T(P9Qsce(z;}K~f+Kml! zhdMzRYh}$aPSs6NFJbC|`1TT7zKZn!;N(1vC@ZPNEl^4A#CZFZ?d z-BH&{uZd0#>lw1s_Rjj!wmsAo%Gq9oHi=pky(Hp)*53N6>iTqqk_L6}Z)uG?bCYv!=d~?7XxA0<_5ypO!iCxW)2pTp$f%IJs<5Zyl)FE4!55wLoR=ME zokgBjL8mZO5masm(WIO1Ao9g?kgxpMm}@&2-Zq*pv%Tzya*N76EqlE5U#04nYFfHl z*@YFxS2|s3K!v$wE<}|I?-<$|%*9usL&Cm<6@~V(y*9PgjbY2GfIwvvpo5gv8`x7! zDJq0a$4GPo=-v*p0@Ns7sqbVVksza9ItqbQyy)7G|2$ijpt>$o#f4VL&_=H#=_nkBM1ji!Zn)II3ii z`#wF+ml({u;_V@Kr?!H&v_!R^s2p^7Zu*ZZ)s{`APnL@=9U9Tl7HwRlGwY`rDw*ep zL`J2QxnJgUM5?Kix)o;o&B!UPh#4S{GMwp8ca*z$+ZD~q{Ug_vf74#pS<^MaIiaLd z5t+L??NZW`q|WI>bKBU@Ibxil4rP&;*D^OT_j&%n;>Didxcp`hopr(3mX&JvGl33Ys$MTY^iX$+_BO#qVgj)N7RWbU+RA8 z@@0mUsutxBOR%*wk2CJjSB9>mm+6gZv9W=^9r(6GaP=y!WI+P@L^ot=(5y0%_$pl! zCm~1j1d*)Jf`N7$J<~mKh7g7SggCLLr;j(vbJ)Gj zF}gV1z9%mxw`^W&b|7FHUn0>87e^IXx>?1xF$5)Y*JE{t^z36=;B zsF}+P8E&#9 zFKlr{jR-a@!Ftd1UB5y%Q2SYvpjoW_M;oKz*cEgGa<4o=ijgGwcgzy!!1?LEln%<= zdgNEc^68>e9*um>5ArB5Ov(z|gqh-Qxf0h{}q`GsI>yYP>H^j4{_(Jae zEMwkK=NFEI4(X75RM^b3T)TkZ*Ch}mQjDlyZXRo#tuC!xig947VjDG5HC=O9-w_$< zb+v=2ZQ>x#EbJmyQA3#)jGdC;);gK*=6mcK;_3p&nI_^B@e6+~Fx0!*)!tE~#97kG z^`BP{zro_*ZvSIXz?JIqyK6uXJd@897sLBjCtncT3x5f%q$i-O-KVRoEbL-d$*xh^ z89lTTJv2vk{S6I`-Ho-38xUFFuK%CDDmY4YOm`@nIz=EKBvNwWz+*vn)h&;w8F_QUpgb+6bkw3$VOhu9S$xG zxRA%X-tz;jqAXWi*L&xm&K}OHPK#qn@%JLSsC`jud#&RB#r2R`|I}V&|6q@{|5Y>* zUNqZEt~VSaWiW^im6>)e(!(9ASd zOeHHRrzmSG-;!(K8M_=x&Q3}bNS=$~UD%wyMwzM8$_vV3jOk8M99503Mi(IRmVzwR z1HiFup=K#IprS#=S>M>(IM&!7N~Ji%2B==Na2Q#nSL%1^D(Eh0 zYk^T2u34lGf|~hCRZTUYNv5MPa($uHLA`Q9k&b!YMRFoWf1||XLLzVB`*H^mODz|e zjI4LoH^95g^VV&3&vFHvkDZI1l(UwjUCH3${q~yn)S_!eyNebS%_*8%)UfCwNR{Yu z7t|^A72YkHY0t9{E&f_uyJSwu`4Sa0F!9bPcQ;QJ??rD@-yt96pX|TjuMl_;I1${* z_2T~nvB4}<7upEpgtfv)p#$a-j)PM?4KawZ80BumOi6vrNtRVSRSY1DK%?yk)!rcG zbWmwaQ;Vp4sskcHpFvu^N-w9oqb!;svv3)_Xm8QiL0TD3N7J9E6Vy6HdJclRdKG-f z9f${YrfN`Ssq$1aM5FdnAE{i#k0R*ubVn#suG5)x6%e~0F$Sm~j;az=)iC}kVSAx$ ziq-8j=b;3gq`j)m)>Z<;;jr$N&a11e?}ej(5G8dK%7h8}j{2%_H^>2PbBAt}E<*QK zJ59@I&qHhLfbOBaIv&jZWK}=aV`yfs&`s%!s4ZI&-&jLtVSIlOzTji!cTy`vjFcGR zJ>*099^8&#T)-3<>Awsb<3R6e5A7N0e&h;qZ9;k<_b$(HZ$;m2Ukm?b zzcny3@GPJW{uy)z7eP6)kblX$_)uuU<_V|KQ|l<67b_#aSPFBg7cpI1o(TLYoz}RsE^@dU*8g~#{pz6$Q<}h;KpD^XlAv1|1M*A)TCKL~73#C4XquyE6${P$0JTp2mR$wzY`ki=Din&oPE0m({mat-Lb;X+MS}-! z*SUyEd?Wf1pX4s`ZK;y93Ur7Th}-6J&A9c!m_X^k6#q3}iMOeDB^);H@`{HRC)vl?gGJklniu62?k=1NElHEYhPd@890~o%e}$nayRRVVU9-0fqpBanM|8eFH^9~xXA5f&H<9L2zUNQHe z@!EpY8Or>Iqiq1kzJ$)AW1&Df4$Z@2s2}=6k=cZ<2mNt9x-Qxpindb;a43EXf92=Y zE5ul{sA5oQ3sGkSl##B3U;Pug9#5g!q?t-gb0|3vGx6Xh4^!3 zMRqn4%Gjw;0B%F699CaZUsvB%KZ1AA8NA-8o~iB%9}hp9#QqCr@L0AAn+AgLRFKZT zG5f)Kp_wQ2Oz6!%P;<~y--aTQCy$Yh;7Tw9QJ{Z_aPU@I$giY9QieD|bO?(DfnUul z_`h)-SsL^Q{tV>$2l-=s?R@vWwY}#&RXnHMHNnxu`(mW0nv zhvAB4E_T{u?Q!-P+$Y)H_6o%lieIBu+*%@)jC15W{&Xr_2V9NZ3GT(7^4|Zvy?img zvHoQL=s-zeL6G6raw>i;FY*h89HBdCD^|>@@zN~J77s?$qbl_2`OpcS#%y6vM94X1 zZ!o80sSvs=bTLn%PjN%VRfcKGbYZ&vS~@a)nAS`UCK|Ox!w6{M;_26@L1*cG^d@-0 zO+_SqFx?xm^U8E6%B~1Xz4y3IokO&J590NUs6WwCc0%mD5mg6Eb*d%R2hs8c)Gl1x zK2S~&NW0Pt(C&Vs1E9%|LoI&~^=4IMU;G39R3_?TCAKX)gN`w)}(b0)3H^O;8jchnk7G zjrn-Q%?YTXItRZ8 zRt2nq^Zqve1m6N*i0`Pkn)i{XpU30g>Tc^Ua;o$Qz_Qf;kttLvl5IwcY{lWkEjO>aYn5j=DDj+g8AC3qADhi>y zZbXXW^s>1e!hHfv)iGuEG z5^COQ^*42CO;_-BA8E8u!uQusMK)8Rww3NTT{m4lT}RzUTni8C=IZ+Bn&?7wTF~7t zYNu$!wcj-d;ms7Gxu+hD%-R@sH>lZ?YJsYv>H*sMQp{&ur3;aVF%H~`1E9&zCwa^a zHbyB%LN~6G{{&&Eruc_&nGfT~aG!z=f*S%ceuuA|uZwq&$LIddeGWwF`_5j@caDaj zBULMjFJ4~UrZ}?LRxF_3_}YHJKHEOSzQumro^J0}{H=HiN^T!&;XvmbsPVk6L+;j| z0?!5S3||DUe`Nyy1T?{e!CKs7t}TC#R|%7aCjuq*f{*wYv99z#WWrQO6nwe7AMu=G zS&vBBBE%z&itbRa?@`ihK=y8?nFoib_qci`Vfln>*eT6A&0@_Es4o5Lo6uUa>YMBWwh>#b+6rpU94PcU z(EBMj+Cg|4kVf*n!UGMQ1#ynia*DJ7k!F>YC4NPo!)5V;xIx@5-a(c`BxVxMBH~{T zSrxkxWow0KaW?dddlgBFbokeki04#?TCP5+BE5>8h}DaTJmy1ZX-1w`3+YcW4q2E3 z_!pd#>l@r0&;^G06MfOX<6g-#)RTug*VL_c$AO`_#kIgS-?av8Js$|x|G4wr?LBKe zDVVd}=%sy&;Hh}pUo&tc&@i|tm=KKS=5ls!6wiT?#6Xw+Qml<^s4a+v=SvataKsZ+ z5I-t|IA(vu@9$!tOMx1(6g-FmFefC?;p5PE2`IwxJc!4d&|fYlk7KrWKY0O}CMn2m zDW@EZjG#niKh&fsw3k<*DI3QWFbh>~)igGR?Wq2&Zlk%Psfd2NRtH~1=+;bzfrh^f z`_OCujN1ppBdA$l8PsAL42SnGNqCMLp#PH+zZ^#HL!wJFr!AZdffu@14{vrPT zzDB-B-u1}HJLb`P#=0r@C)YSvX;*>swKLBdaNcwtagKE^ah^uoR^)Uzqg>5gV_g?< zwClTfo>E1jV$zNF8_nAeIqksgM* zP!_ukwLtOMV?1U&XFLI#$6ez-Feu9!Avpm7Vx^(Bp}wIBc=#O*XP_mI*RtAGpgi1B zC$K51WN;_)z$yzO*ZU~ycW*^`qLQ>$n807)>IB35Y2KHfDW1h}7s|1ZD=b?uIPZ_# zec1yt|H;Tm?+o3)kQtWk$?lg^Eq7M#hujCb$8yi)M&*?)m|ax8B-`n9e}(%?!+;o= ziR`Zd+(Q1jP*<7(pSluaBW9f*B0H`cvgke_TOuE97fw6@I**%=;X7b7RRf*_-T3*O zm75!^9?T8w4vYw7_{{+-P$_UbFbdjV6Muq#3gvh|oHEQ_mW zA^IARk=YRiw!VPu4i#d>v!IK8PHsl2ti(8KC;It)kxlmoBeI5w=Q7Gr9&%+E)7{?n`PZ+>1MfLxn;R;S!{U$n$dUDbyGRhHKQ9;TUl2|w@^DkTU+Y` zWoMga6?*S&5p~+gUREuFrnU>y8N}B==>cG9o-Av zjohW(n~E3P7Z%LTP05MMs*@3&+A^8>QTO}c_!Ds>W7mH<_C@$SC#KfdgFm|GTrYX* zedH@~4k>izzqXrwHYr9CPAy;@nn$Mhwu!c>W)och@(lG1H`E^#t@*-WRcS7DM^%Q2 zBi?Z~|3;6+`MjWI_P^Q>xgo1R(Ztn%}8P|>CiuO0flU!qcIl;B7U^cr>vsSxWyIT{cUc|H`Lq#@l17{rJ`{bvC z;lX!-F36xw1W8~nzXI8Y9^`H>fD+m&?2wIA6#HBg)WYOU3*#Ji8FJgVBZjBbR?_Ao zLiJc%Pruv1g4--;wVIP`MKDeFAm=?@Q%b+Yc*0a@s$x20WKE~w7RQ-nQ)#nku8HzH z6EZTiQP>}0zR>$2A-21g?v}qToh=V7ove$kH>?A!_br2=r9Es+Lkn0-AEhHeAr-ZK z(Sv9S?Z{~DSWO}nn&0W37`bo3xMU8-Af6fqnS;7W;=Hd-aHZm~ZoT!Bc?!r{nbskZQ%fnM%7<|JiRxq2cHyooA-8Yl z$(%|hb9`+BH9Xp)u{nFPTI4LvwP%NByiTc^BBb@orV87;bX+o-p%%0s)n}=N#3y1B zRZ-neZ!_I6M_34K#cA0*&ajvCTNUMkrQJ167 zM(d*Dz%)w#{(O*ah=cg08-{3fvX9q1SGrDWzEs6c~#qoJuY`?EPf^HiPw>@rLe(rk0vQ-1;;vD36fK6bZy$g+RWhZc}Z@kK)Ndv?s&S zx1>SIYKO=9#y!ldhJR*8a64Z{+$24ddx8J9iOe9gmE)Nl^$YzoQzJ`VOQd;|@womU z?E>{&)qT1|8LQyrHXu>70-Yn4*r5nlT$68t)pZZ~yO_(Ciokw^FD_Mw{YP8YSlv=! zOA6J53t95*tXC_+n<)&Cfd+Zm!UDBcd|!2 zPruY~!YCLEOef3}Ez2$cnD;{?KGIlZ{A@}x`z`CO!)>7d*cTtXXGk^ zyY)=je=B_``_@XRSE;&ct)>Thf$GS!{w=|dihE2foI0z@VZk}B&?0U2iWE!YnuO>d zD^oRD`*P0Y)h`<2%Hi%QhEU-oElvn%d>-$8U)|tcVV+_+JyEp{W1Q8jNAm-;-8}Z3 za)wloEAOA|UF4nZzs+qEebNExcTwi6z@OC*x6Md@2k&9`A(!m3dpZRg3jK)!;~0$%$z9E7req|uv6I<9{o6}kbJ~C-m zovnf`2(IZU@MM?5*)ZN*Xi}Pb8FztKuQSy(y)(@*SF#9}i`K@rziqQ^Q*G64pR6;j zGpx(33aq(oTV#u}owaVUyfs%c*D)=H0%xzThBgoWo?TQ0m^i`Y1 zuRSMSCht0KItYKKgHirNo=MKS_Q$#3((fkkf=93;X<^Fs)P5PSa<4kha6`zc$n(ER z_9Z4rO~re{KA{wp4Ozu(o#Wl*jrTV5 z_X+;s?cx@U2}VhA{Fy*~pUFGao8UVUILB=lM<`~|L)3?LlZ`XrfwI!v+L)#N%#LRs zQr(qMtROSzGJLr{Dyos|Ff#aqT&`e`NsYUce7dgb|6zR zhN_5cRRUG&s&279#n8?)&%Dvn(0bn5+;+=WCWN;Qvdy&K02}zM`Mmj?>7MDRX^Odl zrG+)YI>PqVmSP(f@-d`hXhO*KkoUGaHl_8JCC>7n<+5d+B?XU?rN}~Cb1fS!vbmSJ zuW7q+j^TyArGB992Ub*egwBqgs^|Q;QpH4ZO+6*MDGU-P$2Ij6P86Wr#w}xEsJh~HwQmoh?`V^hy z6~79Nd7e8eP9cLTrLKd1hOU-oj%pGm6EDTy{NmsUxXCyXW(XV2>(*tNpw<%p$@;)UNJ~eX8&d0Zw$a&yDPhlX@(fdSY?UgDRCe9 zht-hYy%Xb-v&dO4k1?_nk;Pu*cBO~XgIaS7ilYyjd%C@F;Ot>~W9(q;YTRyYYnpA^ zV_ao8r>_Qn)m1}^G0dD{R$7a#gKgJrRYDepED5QB+yjR-1iCFNxT+_uE#bXWC4>yQ zXS-^f1qX+8%R%#aQ)S~4!*3v(^)~i5^)~OdynzQwrX|br1*Chya9P)0+eocrcQYnt zJ2asE5k=UHer_0@q-?MJ59J(#{?c%975@S4m_BgQ|I*(ka0b!e9iB-p*7*@+vgU>9 zxl6P2GMi`E(i2jaq%>!~a8^^LNX3a|O+5xt8xNB6!E#k^ZNFi$QmwwZF7yVae(I zoUGMpqf$zx#HPB_D`zgsnwpnV!UPkD8?aUH&WxZIl0%6QsfxH#{4Om(R`nO@C~=rt zuAZmwWo&M|r*EPur2iut3j=~(z{39nGY4k4clF~s30);K(MeHGaTaWX9o)A-hrqi) z6YjK-C4W;MSAEk=(myo5GB>e~v)Vu>xvaaZF0a~2Wx+$d5lXb9;;UjIsN;jc%Ir!W zM8>*Wk%w&AOT-ezC-M!oli9~E(zMp?)Q>}qZ4qLr=k=t1F&J^}bt-+7AfZe(y6{MPFSX8MPF&v-@mboUHrVo7Gv>Vnq!9daAz{E;1%8IdtQ z{cCD=+TOG-sgF~BB=t$kP5e8tPvZFavR~VLx%&Cc$HdR~zs!v57JvQwo2*S7%3sSrKCqs%i(%v!=DkLtR~uS` z`FGWD(cr{2Eml)qJzUj~>4uR*Q$zzRqfU2G7Q%C6lq`vZMFm>x9pWMBtlSJb!sApV zGgP&d9jN|Oy+~aGf>|ugL^#7I>_4II?f`RFT$}Y6s7dW^wl)U zT-9Q-?zF~QOIdeWewe$Po0x~0tAWJ3$y~wm%reG0(c04b5zOoNAdI6QX6$Z=HjFed z#RyIvC(P%YJ8Cn{y=}u}jn*A)PY6iB^JdkZ8$aJ`oUIEQ(r(_gof|;`t_35d9 zl7F3lnJ>;e0L<2j?x4$ELKHtLnqRoAV0eK$zkBX;xK`ZG?2}1k?oKNkuN&ZYp5a%oSCE%1>QJ z{zQSOP>@h>eIfdY{y=T-8%LYM{aJzJS>M-xZKU^=yePA8xa#P zrDwHC>>KEUgJgNdNI3-@x1)ST{wS{%d&mbAgOoNz>K=lUy%|252bGKAQ>{^V)J)L6 z({(UJqtCPtn?)(KxP3voo&oyPWCLL| z!E^4Q<%4y;ZK!Rz^^LjMG|)KR@J+uRPHB@2uaG_T)hHS-nA)57nuDgA#)Z)!rb=1?~H&#K*(|JUI zU++Kf`d;M9ev-QS$MnR>DXnup7BBJAP$6Cmmd37aYtN}-kQp_KIH<@|9;F8{-ZjI#?qS3XjihJ*Tq=(4)SG=tLih8sO_WzSK!*1 z`_6-gVVrQA`(H4}ztwlhJI2$}6NMP!Q}<3+Wn{DsFWFz5SJb;Grcf?aB9(qz?v<>H zncp(R^b;9*nd>quX17hRmaI+u`t9u3>^OJqkGQz63>Y6j)!4-6_{*ZP!*i8r2>(qWVqwSBp z+a0DqjWzVmHHg?MFGxGMkDy8=`?~nqfHByCo68qK)7*=rgDL(N{_%c3KnRh2nM@#&afFmsSZN;BQmuerTp;{>sd}Z#hF#U2RHO&ZzBY(YKXV)^PALl5$2;!1Zn-{a{~AH3Fi}mIzd&EU z0HQ%%#4#AyZXpU(*Ye`)J+)&%-i*>Da-L%)$uh`D2nxFtIp(yOvKME_cQr;{L5$g)GxQBty zKGCc9zHxta9dd4Td@LDKT-!dPuw22Fyq&ou*y()s-K&6z{fFTum;Tk`v) z?a9NE*rd}*9e!vM7bKjC|MYd;*V6GzOL6Xv};B;>XR|DkdI~sR6m0xvBYAuQW9^-!hLuk4J5Mpl9`;;I%dxPHQaqy$*A2^CGkxWi=I452^pi zHwuEBrJO?d!psTBZe}x7167xp0z^HlGhS64?M1^S^BwD$kZGZn!e)ehgUkGp5H_?` z=;kn2_>joyQBu^jsM(Q?BjUp*hW^jSSkuj;&1*mhK4wmapWaMk14Dn^DZ~Rhu^!b0 zm5!|hCip(EZ2j=V`isd0@Ad)}4@ZVXXvvd6nvVeWSCWpkGv=eD`i zT+Q4H*E#T1*uodNf9EX7UY}JzYfUDV9g{sf`}fSq^baZCA7c}<5-%lYfB%p$@cYw* zdI^i+0@>zka!kyZ9dUgV+9!pk6FH-bx_AUGAS~ibd}rJ#UQ+C;e8CRTHM2Ab_e3|2 z9v;RS?dq|Z9lFYvW#=(#>4BgpE2)}_P2z{ZCikY2p+&9oZ)A_k_?UJzJvPgdSEgV} z!O8q~`5g;t6jFt&3ceHuN{0Fdi}BSP6K|q$57s2G*mZsHD9&5L;8iuVY9=^ zgl@BSwQMks*S%!d(H)d&Xj!$;U=5XIajR$+yupPSOC0jt_jL6BOA~GgL?KYaJqTQ;aIpXVVdLA4@Ci6WjKX z@X&stokHt}ehtYBc^>i>&hQ&TcZZe_?HAGpDh|rxH{}~E8mk&2^qlsoW}&(@`Ieq=etL%9-ihNA>K*MhqVs_#DE2Jbs$cvNr?b4_(#5( zcUcGfMx(-v&j>~o%N_K-kM=vY*1^LvQwEC)Lvyic>o?4O_6`Fm~4+WZacIt6QzaX3LLdd z0x4z6DDRzY*^0e!UTvgNRi3LP3YIh>C0gbxlsfymFwFirS@ z@BtBN5v?K%f>gg5A7^J9#X9Hy7XvW6$R+uDwBCOZf+ z_bWuuw`=!lKWjH3hjkb@Vn>iQ;$)Ap6WH18Qg#y_^Hm;Z2i=UStZa?B`1?czQAr*q z-4ru~WkMnMF!&do+N%0HBIEA5$LzlA40qjjK60K#3%#Ty&z@~RXzx|zDkv&Ao3ALG zQ9$M2&CAOjnKLi@Qr7CM>zVH|DrU4!-<8%f)e8;OhonYHe6<&OotGlBOvS)vHTzBZ5!<>J* zYJ28+fAiJ!%|?b;gP@h)CcGCb%cBX8VwbWBeV+NIs-ixkd9K~7BlS+*BAr?<=tmiE zm_jkfFu*(nSHEb}YQqeDk}g@7gIv`ah}&G$P#UXRRB2Qr87p%T#NyY8ogmx&@BW2a8 zY(Lc4MEVj9>jQcjGaVF{%E%y}i>yMDIRiC|nF^3i$PviXNF#@kyA_WxFzunZh_UfP zxq>9{w|R-n=A#5>z!x~oZ3qqsb_%?Kufl9F<6Pchp1F>zu14Pd?yt@k&dH8`&cn{u z4!U@%y}tch$)@5jMdu3E7q%@qSiH-AzNnyZT2W2=Uj@l|l?%3@MU5#+D9{xyEnHJ1 z7ga2%m=~4jF6>~>Ev#T4U%aK{relM%w`-d7hNH6UfT!476@Hr|kVktZ5Xmj)D)P7B zf3jKJEjilt5ONJ?Nfn@jPm`C)x4e{a!U$-Qn}Evy7w_N>@E4Ig zag85=OtBUG1YX9sJ>~x9=fYvFlw2LGmYzf+hbkZY zfK3GBs3M#wE}-57+2-m_nyT;`DFkO-rLC{EfU12I#M^qv6H3!u04Mhh-VJKXV!mk$ z`a(LjnmxjPf-4?}%;y&BvFr?RpbxWZ^>pMyZ&wdtpTQ+B=4TW`Jw}~?C7?EHQq{}V zYt&8Dwbgai3Qa@xF?N||iuRml1%8FmMuDz)o|RPzY#H@)^(j>^_LjPfCP`fzPQced zvfGJ_(n<6k%0aEAKO@iM6!O=G(HH4%%4wjR-$0&Yf9O=H}~^zt|2twO**&$|<}vr*hSPbW`)U<1$jv)s=DPTy9pd2qSA zgKs0JLZtnGr)7ZfefKr+SMwhaCi-u9?)e`C=J^(S{_=C&0?_+?l4>+8wN@j3v*Ct_aici}JToiI_z z-~_oTc|;Vs3%rU9C+f=cg%0qY&zA+_wp>ECLKL94B8fbOEB|cijNA_No|#y`n@S~~ z5e%&*%ZO)~5V}4bla?!os@{^r$Rzm;vyV0^lL;TyLOWkEQ9h2|n^8Ri%9rx=QkK#* zq!ugEnIF_^`W*7iwjRcyDOUUQ+Tz zy0ji`{u)JlnN~GW*Qd6!CmFl)Z_1=8M2WU!AHgXklYXHb&TLeX>~Hj0YAn>IYxR%CDF%KmnmMZK&i=v z>M>*yk*(~?MAO-d;bcJAtADSwih^P_6-nqMwqMp!DIaulsWkrHKN3kzhEDfLz2@bA{*jw?5isRyf z*TqLfE6hxt^FQO7i3b#VWZl%kjOac2AMQI}DBtA@iEV)_U%vb&VoY~V`u0?(bZsQvGW0kk%vV3Q5fp@-Kk$)z(=l2DZe2zefu#X-ipYi_Tc`wIH zzYG8P$N0+&W99ZZL&qGf9Ai4XG1 zic&CGGq^%t&1Vy#;_Bc_{sYxkHhbG}7i5C`9Q?vf7M4*xq~<}T@De@dt;BXdhPxM} znKxu3f4EqY^GQQ#L9QU&gX7v=8eRhYu)q(w2x`F`sWZH5V|4qdnBZK&M8?q9rFzQl z$h53MHdhTH8hYC*W#%L$5wXGk)DvkLWu*8(1B`m(bObWSI?1QS&AOgs6=chHpbkkf z%xbE<^jiBi5H3x@n6szKqD=JMkyaT)w5R!{fx+w)4OsEqOJcvO7JGu}%a=x0U>)^v zLuJJ(;VsmmKX`l;wO_;14HG1n8u3ol398mJRr;=DB3U0^m#df=}D|oUUlvk&NB&$gup9T z2Cb2HD&6BSPi7>RYMEplwVl z-$WY6O<_(e=ZKTU@B9QRf-bAL@1H35XFISLr19S7awjlJ+Ny`k+xYXs5@xH;EA$YT z1@EbhvKxL|i>PFb_{6EFHR5{&t(_yYRNO+a0aQ2P9qI^*-R{qU)V~bh%6=zkEcx+{v9>9mruU}Bu2E~-DU3;8mEY03{wYxcHsVelHX+}(}os*|4f zftJ(?c8-FP-hftml3GYtRxGBU%H#dbi1TO{d;3<3!^H7a7X6!o^$$^;SG6G9agW6$ zNpHADO?N+&&I!5H0_9ZUd$28gn&gAa3oucMg2 z{3WgnmQsc(+JaTV3Wt^8LCPr&xCw{0 z2D6>dmIu=+RXLwu7|Q+-8Xz0U%4W$Y6@$U#amxQG>>$~Eqz;Hm#U=_JMt~xq$J<&lfOWZ)lIe1B!`JX3!N1pw3 zB2#XyIF8KWeIyUpDjGSSmqE?5fDqS2u?k*fg`l@sNd~#@T@}}f3s6EGfP!W)MiU#! z25{LKq>M*ieh-W?qRBK6<6@y_YX;ZO9AxIdC)X7l~GQBDnJYERdY}! zbx^?XLtgnwvJm{bn&eS3567rGe)Brn6WJxNpfr6BKguMyy122C ziFN2vC;k@;>?z)P0G7yE;-;z3aD}KvE^Po|49tHfZw`+f3*|exefbq^cOkt1eBMj@C}!L z?a>iDJAgg>xnCEt?mE8jCwuS`ZbzU}xd}4aRV=6R?mc|xZEW$AZgw1>z6Pe+b$s^; ztbdK?hw=Qvug_k_7FY18oA}HpJRZcaJjU}A_y^ZPI=hZvx(}Y&LzKx$?E4k0--rKq z4v#0W?kN7$S($y|Hame5Mn=tp(8lw^qM? zp$7KGf?uo#n%+;QUl?HpP0xb8b)%(|@h{xqc4mW5^|Kb*@jt)gR)E?Fj0|$t5}}!h z2j?ypw_M!r;)uM*k@!F2++CE$&+@o}lDm(ic>%|LKaTlnoIN{m^!K2SEJqFAgfo6A zNR*3lKL_<=GU~xh)TB|UThsAs)URa{Xr$w@OhnBaiaPhRw)aEL8idXQn&JXtC5WrDu`Iw=qrh0iTpr4P4AxA> z`(v@yUs(GGF#(avQP3g|!4_ljtz+?O6xQ~{(igwi>({UM#a?vB+0+TG@^83rjJ^3u zU2I7-#Cg~V``Z9~zq&YQev%)nV5xw!r#zO@Sjyns4#AmQ4zH_Vv>J_nS`O<&p=u4m zyFdSX)UWl?SQGVYeKa0J@apGl1DJw8uLDT8#p^QotnSy@8HVF##QLA#6aDLVO5s;4 z;+M)`KYmgu%i~+C<5?vaiWfn7QL|38lTbrgS=%p4r+DY(r9 z>v91x@7J;v&z3^ZyBs{w*(kaB#6pzCJgi*^M(7%l5LdvX^lz+NiO;XVvJC9o)x;`d z9h70qvDI3<_jB7hxL<;I{>E)NUa$Q1`JY=Xz_Ypd{dw4O=C7@1{Gx2mLLS37l)?4MEEP~{6;WD0xt%{t zs}!C`VQm!Fl)}1lxQ{~F{#^U>StzzChu4vK3`41hpbd>b^?VDiJe#p>k~g5$*@(WtIihm*ZQOW9#L3cL}yzi1kZ;eReJGm*O@D zYkzL{H-2FQeq#fE?H{yoJJ2R?{B_%dUdImX=T6*?V85^Y;)mYGe|rI9=v%b%X*i}N z%Ah%vl$$`iO(zWK(O!cm>p`UwG>g;J7V3zyin5)et$bdnk9fj4p)R=9e=0_jt)T#p zrk0Z*K)PI{2q7MW6#PZ}2zo=Ra8B4ShQsgoGT7F3X}Ej^-#&`SBqGRo+G8j1<#( zolsqBCXXR*DLRk^n1zj$zk-Xe(v&2l$Pg*;m2ek6(lG zJ5AgHVe=-t5L}?)YCW5&e4u=qT6YqoO(;9{D=o26LA7-bAbL;b<;_Y+;g59uoO z53z@i1-4{XHDcN&w!)VD$EZyfD1%dT(;AcKFSNqVi#q9a*y0Z*v(ai zCh?YNkgrP>h)tNEdI(0mkz|Sa!d{^gKO4OK!`v&e387V9AnQ|8sJqlf(gAv`PVS6- z>Wul(ba94UomfxO%6rgUHy{@(h7+a8hRVJ~m=ulcOjD^Q+J_s$2JWyJP7H-ld66_7 znE;LDEn*!1RoKTzbE|_*x$*o9p(T32;ovL&ON>BWUMQc3i^e24YOLY^5N?9JeFAiy zz2I(lC!dn%6qSh{(jg&Lm?aM2dqQ97=1vM)DHg2K1mc78Hn@FX#PaeG#UQD_P@C_{ z?-l+LA4qlJAhuIFj~4hn+R3HFb;T$mN$M&;;MM#f#42j=&H2^bEO9;Y2i%$ARH*zW zO;Gff3xpZs1wKn$K!l>N^cWP)dgK%8xH16U@_ewf!sVAZ>zw=@ZYp0OtP@^}W2JVW zY~K~lM6NhWN)lJ_dR_yovU>2#`G4)bb#z-vx8|(_f+GfV42i?!a5~J?VeAf5hvTHf zoOGC(JKSODPSRm!W;@21L6RlQ0^8zqj^@dG*ZaNq-nsM5npyMD%(As?OST0rRqfhU zwV&Tp!V!GGz*_Q8G7HS!bgCKMj;c*Mu;Uny`Hn&_JRrD(4174;8q}bO+HejNL?;rf z1c~e<3=*;STuEvwn65{|c_F&B*yw4eBy= z5VV6mg1h{;0A?U$hARVSc|vdvE5Jd-J>oT)PBHW_P)f3eG(C|D!fADPViR6X`+$+F zg1@;!Xt6%;NR6c9=pV^W;JvmN496NVA8r?oxh7z&>$qmDk)r}F0%mS6yAEz5^$`1V z!9-q3w4nv`P2wog26Tn~WP8E%z;!`3@r^tQqCy{fyl@scrX4`YO$yBCquHHMv0w8U zSr&10PQV5q9fk}eDhG};MU*6hf@f`L=f@U?$SBp!9zby&I z+*!63_k{hz3gJN@f*;Dtz;XU1*Elc~)ik9btM?=eu$$r`Izf{!fak^*dKs;y6R8bU z9jY_Y0@-*mrs_2TMW8lcz&#=IsOk92*W_V1HR`EXWCzMbH5R@XCei0bO~q5-?7UZu z{VZ`G_?<=x4`WvO1+E!CLsN2&`deraw~{OZH=?UpCcZ|`pwht5pMVou8g%1rWJfq? zj6wbFa(JhY6F#DcQzf9nufqFQj~GuLrbKjexN$^LMntiea4%2irm{{{G%WUQ@eM^~ zk;(hnCuaYEGxcu%Rv=I!Qti5aL2#Mn5VLdN(}@GBW2d`N#p zJDjI~5_S`J6?w&XBx>oPvya&cy?8NGB6Z5T%LmARl*h}$pi5t%2vuEItx?Ta zZdc`~_9#8dMJktapYn_HsNw}`(6%Y;@TbpKBr6h?y;T{?KR|D@sKT`#-DGG7?3y~- zKAPQ{#@YwkM!HqnY4E3Aq%GBq*Ur+;M@8#y)d*EfWmUx&d38mMqK(q5*n_Ia+p6!jD*tv|!{`xJG6904Xj)UY5DpWu7rM7kHB%*L{r{vqJVp7x#a z3PEd|j+e5pPT<_fvydC{< zoR8D9CHxFQ7qTu0y^U!~JQ=K!-I8CKWs1$H;e4gstWu~is}1U|n!9SPx&bObr>gzR zw`i%03Yj8THbl_^HK|?X<598JLGe=YSm{>nRPR&!)s>;y%F``|i`x5;siC5P@!`}&xVc$>7p%e>;tri;c4`f&Zt!X*U*3qtdbx|0%na=6XqfS}* zn9}Kv0gk1m>&g>L#ignCZ1|Q(mR&91=W6PC;`!VA+WX0OhKmz?h5t%l>JTjwzM{L( zEoh!Q_BIzWCl~nOq1P` zw^vqD|Dkbd&S(efwguG>njQRS$kGrZWOLA8y4l(e+BUkILG40XgiHb={3no(RN{s z@CNp3^T6%e0S(Yi!Bu#bOyiXxH%Ix(+!I~p<=-4L9V@NLB?~RX&Ff8DjlB)WjVi;s z!qEH~1rzfp7wpdKRq!TvaNh5^v-8sOF6PN|yXO90uqFS7et1z$TX5M;PYdsO;w|-7 zI8`i=oks2BX_*+V#0$lZ$ohi4fo3@E;61gx8$G?8j~#Ozep^?2GytCy?5wqQ$sOwy z>pJTM%OJbHw4JkZc}%&})z~w``@-Lp6A7B3(nCtWgGv)@ZLR`kOcJ}AC8>nq-Zpt+FE9zvZp`WL}r9YzIR`9rRPT`S)jJ%-ylzeagf}C5~ zH?zt!<=M|Ni?VLz{GC@{zuj`tDdBdLRV0k+iAE6|5@C!|NAHhF4%x0vQshWh(OChV zU+&5;eQdi}l3~6CPwVlf>*fdM{NjO@!r~gm7mFvA#M>I#V;!aTVn+`8dVSY2kIq-j zRuOoK735h;CG07(h}wex*F&;O942C^Q^b5hc;GsJh>K#Y`W9gI5DSjw9#4Ca@*0D> zHl9=Q(Sj*pG0&ha;>}D8c_q~>&C#Hap}$8|j~W)889hBFH@YagUX(oYJX~Z=A#UA7 z?R#}K6|FdgD!8twew%~(x1T{y+9^wuy_7$eC&+IoWOIe znsbU^q4=8eylzbJ&2W9xm{@<+zhcXyYeme~l*m>H=Mvl5@$OQ`vy$kdcluPQM$J%u z7wM-KeKzr?6w^fWSj$0M+p>ITH@6z};g7CoZkcZsH%}l1_2@G4t0bXXR8urtv|F4i zz95PajwTNAgnz$R?kxbNtE2m-^XD>yV|3}eGSdCQd(U47%=@kZi@-`Q742sZ$rq{K zXLJCE|V9fY6sA2ZNeud#Qexmq;U}Q^1Y;z?_!u zkd2l_gQ##<)>^Sw@vG{k>KC;PWQ%lFjB2%NuzHrJnWm}cmHMIjoO-`{lX|r}T$7<* zuP#?jSN@>rEpsz{BpbzY(IToXc_UDhOZUC>ob>GW#5)D$?;VVNAL{)pS$dljjn$2# z^l^pG{QH<2SLcn$>5=2gx}0VF*6>@?wEk(6Ga6=OXT8oeWnC_~Wfk)=@~GgZ5yPWb zR!ylB*U;BweB-(GM_1olX`9y1D9983Wo1Xr3Hec3(=t-i52W2rJ(@NuGa>Jy-fui+ zY+y1KtL*2?3}9{!biHs+b3Jl>@mydD;xuBw2{FZNlT}s9)aB|k$U&OOe`W5_cfMD8 zxSy9Fb*!>JL=Q0+H8#o23d<8K@A$=e*YniBDliRh8#$8p@{_7eZSUZ*p{v98Mf8fC z8+|k8MCGlO3u0=<2%|E5PV8^RvoH*EVD4bOXiA$#QjlyJygP*!e^=%EW?EC+rif?=ADp2aB=|lTnksLO-oweW5Aem$yH6Y2HA@ zX+`$H%m&|LR!N@Zi!y@TF{>9J+R(nx zS2)(-DQZ%zvo5!HDVyYaw!idPt<)tFntLh@3; z$ky>SbKNO#?6?VE*vDY=CYbk|wt)cf!noRaUw=^FxL{H~mA^l4Zr;J1iCOD1PJAQM zYNe9Njg$I*Y4~|sV$bwo<1+U-Nr85JM1!hvaot-cbtZef=;mr0+U#$jeXeLv>BfBAm>N7n`HN;9}%7xb}u}?QlIGRRmN7`Q#CU7d`y?9 z#}OH!WkEk_yDAG93*DZW!QWw(Y$-dEuOwgy@IB}*;$)^wZc+``EYcX&9n=?*gEY&k*RizfR0#-bjz8p}qtViwsSbo#-#@gNT z)|76lVUn0unm!e6MIHKULzMBnzLQ~wUQ@U_uT|dr>|I&!Gq$ErPMem}G^yX$^2B{f z)6yFjjxIky=cq@7AB^czL)D0Ed$XIkJJq2|)8g9Rm@(n3y1wK$-`C=MnFkY{AI5xW z^)c(y_0NYA3X^JO%*ZE9tTm%N)*m9sA%+t>1N-?Rey!jKQcQWt>Ew9w9kpDflC@Ho z>N*C0&=qNZQhQV#RpE*uk}2dB-`%n}D`P%ne5W^nan%U3_rtcSBIZThk62!5c%|sbHf!2DsvK~oYJz<& zRhg7-@RAKs@{Lf2Dor4mbd+wAxP&7pfgqCG?)%^_FaN3ZxovdG$zriN&*Up=RTNdU z(>UIkY}jD%>hBwZ^ds~?6b#EBlzTk8eb)Aj(sXUw$>ctXaS3C-^i8>$8*2Z^)6zfG zT|xyhQ|j$*Y42RK>+$x|=AG)>s&A}(Abg0r5&6`Sm=}?9<@1n_2_K?A{POT< zIu_-KS{3DrY!dY-YGl;;$PE$qL!Sk`)V2ma;sxsQpQ?U>5A7$W6%)&ZNisywvD4U( zTtmP)hnhoAgg=W5)lA{c3+V#Hk>6BbRdv;3b%Cm;`l!0KrlaN$b%{!;nyIuZ9wQ43 zQ84nY(vy;I;#a~wbSvr#VdD?@-+Gq0bmhUN$+jBS55@6jooS(|VbL_>Rl`Js)DWwm zr5~u@R(L7@=e#~SZjb_YXC-ES&G<9bncOxxHsz0Rdkcj2PTUO9S%pjcI^tUO)W&3+ z8|~+|%4qDW^P>8p%9|sqXdcsDoe6q-`jf;@pBsKk_)z*T;(h)H_17ogHWe%@{=Mw8 zzcw{g+ya%#?PX`>Hu+q6h;*+ggyI9+!Rx;-xIi5j#)!^*k0z4c@{6h;)K!&BrA<)B zr{~4&N6(jXy)E8cpr25nE8Jl?VOnlkZR=B3=03%}qW)yERD*+s5w#+>MkPnRjvf@V zC}v>vw8;GMUZEF)4rw{G*bJ=nFDMl9`%(+^6JqH%uxoE%M`f94I;g3gMX_KE&k(m3 zR~2`V7@4=Sxr(jI+N$4FBh+DFk)&&F+7a5en$GGKDuwEyB1$n`wqDwXsVx~Qt|SVB zPwg1&Opn6eQa8R8TgfN#v~mfZ%JL?qZ)^r@jgltC_f5NvHH@CZ*M&7PFD}SGoZTZ= zl#`bIG%G4wl+`;kIek!ChtyNasVR3dml`*e#{}HMrLwmwN7$$uRho5ZYiRRFvrTa| zYA4oER_hxxJIF)-R+>}L`&;Fd)UV4EbRSFJym%G$ z>y?kxW7Ua@Da;6=h77fV%qwyw7XY8%$4j?F4ye|(S`S{bTB%r3RA61)#H^DBU8ea zpNWbibsdI0pGUk9B4rhLf~mhA?-S&ET88mEDv5h~1dBjDUH?luARu zXZZ+a0x26L|5I^M^)q$(Kl{G9o4#Dqn|4CcH_$L8bO< z&d5glr+8Pm?>QfowJFWFXWJH7o0X8340AVAlcIk5E&6u_KNM~#n4KS=XUdtK-2$Al ztW3kV__Q%8vy&=+El)a{(bu@Kv^HCd{6*YDaUt~Y>S0afElYps)Z}aZN_A3eo~|BS zSshFX50xJ?oXU2kk4k-$*!iRR_3c+d?=~isrWfS>ZQA7UyH9ZOa9h75Yot;N__KkwmKSIMZLIlci&AHcqlhk|!Q5+%7oe%PoIpduwS} z`~e2bl}uZT45kg1Esn`ij%!AoOK6=Uq|*o&1{Ms0{F2n`KM*A3SM zE5}N+Me(S2YA^gt^dqSDmBIXdz>LM3@f-BjPgJc{r<7Zv@{%gsD3tQm(thv~&@err z9@r*5A-gM2RUAf^^0WGY=80CNTdqBCx=8^>657K8i7^h9qyd} zw6D;!15g=~G z$SzCXh@R3lsd_|8;52vBzs4tI-vub)Gf4~S1;!_t&nRSDAboX6H;NPjc>k8Kc5t?d z)>p*^#)0}bg=>vs%V-Dc8~ytPBGG7BZ_R|zhmnFRn_^eT>MJ*onGiLqQdZdU;DefT z@`e(UR+C!@hWtjZ!AidmJzdm+siWu#LfjFMhFa*{TDdM)8wBt59*SDh1o3iFF1Xto zQ5SI7H;BJTZb>s0v(<%Ko9;^x9lR^}WiTCbB&eg#puVW2^|d6mOFm;MEwj2G`o|NGl^IbH_1-jE)#!fx;q@xjZ`Lrp z;nO-ZqlYO^@s-N%7V8Z?^5&*xe4PJs@N@pvgO6cJsp<7|^7MX7Zg~(pf!f8qR}Rt$ zG?SEZ@;=fC<~PwvN-RibRlXLUb#9G!Da+w_dYCXv*hrks+=oNQJ#}4WWoaiN3tybS zeVlt$`E%Px^AE-=hUG=Y#aY&ej-lnFJli=vbw(=GybbOeUcJ)r$Yqgyg$)Z zi`m=t1tkkzpZILyVp)RnoobY7ymGRln%u^m5QS6w0ynwqP-zix-dGw~LN25Gh^C4^ zK%F{CsZ!-)2k)u)29*}z{U1F)I;%MxmfWID!)W6o(@0C2^)E+Z`3>*gfI=jfPthC* zo*DKqJUwDXC1vE2O83IakX;(3Vmrf%{-Rfq%dkJAf{UDiKTBkSmiJitQhr4Fr@Fb$ z7ThWH*U&W~%HVA}pXQ!=zpAG)0lOu4m`cn6=9;v&d>&@pKU7|LUkQVT29FJ4L(YcG z33ltIYQa`hcUQ{fQ<(siEoZ4WWG8Yy5kYJ~HODOYGJYb4k&nqCWFpS1X9?iiiu34; zAWu#31f0&YeU3i1jFPs+cGEi}r?(*LR71L!*)${jYc#`iSsph9+z5YY~|6qP->QIre%hq zY3{(Z4k}{~b z)(SfDo7iOkOg53LD(FVGq;Sbrzup4uwLR+ zIqH)*!*T39sQ zILhEDEH3yfpUmHzKRsWT&*aw3wq_<}zRXC-IRC9{`h%316iFJ9wY{*Kb%?XQ&%mvw ztcu~`qH2Y;hSq*iV{`TU)wk6QsnNfRFm#i21lOnRXUhZQp8RItHhr1+hJID>X85OT zU#F!yzdg=bW3X7~xhDj?Xu)oZ2Fm@)&#K0n_L`=uEwW+KSakf7hLIPVbt9_5yd zQan(P*ZmnhGAuh{eB_wO=@IioOLRBXmle67r{z(v0;&Ex9-+I~b=O_wN%THN&G~)4 zKiOAgW-2QLs(sLScGNWsz7wJk{SX=*ni4!B_(YI7Xm`+{ph>!)wRbf2HG4ImG>t&8 zGi#=3OzOkxp#ZKU_u)}=IJe0f0Ii$S2^hd`pwtXd`mRZF^%{xu&jIoAx z`iF&@!kYz>f|2<-d0d`5_gStyw^jD~?ABS*tQQ%3GGa3?W#(qjF6eJI*hTJq-{wGu z@TQ_s$n3~0?8N>Vl@fJ7>SJVbcu>$MnTN>rEOPX*^fr#mTlh_qwD8OPFF$_urCjx^pI*Pga(Ela(pTl($s9)Em@WRD%^=q)o*?(b3r3o`-s69-e_q`B!{y z;1aQkDx%lGFN6?|p(jy)kWGk-fw|mWpUr*Vd9i#f90I)MKRPp=r`*eY6ZlPJOVLKA zuiUBpT~jAW6cQKOJhVkfyCA=2ipnC-VNyjys0M% z3HeF5Taqn(C|7|$R6{*XQ%!pcl+oLo8X7l9L>)jxh}W#wEYV!j^wko&%epE-Awhj~ zS=xB5SR1cdu5JqFv*sB08OX^dON!y!5G8&gY6%|>zk~!`exB^BY@1xAc%Yz_TIFww z>GH|4Y^hW_k{KeQ#ao2c=^a!N*!^EoXP$t%?hg<~@u>Sb?#*{McdaQuT6)|ruqjF$ zVBCBwx@$aWp!Eg%QTnU;P5MRp;UFNlG02UZ4F?Rh4R;DJ6olr_&0}+(0gFihaR73782P9V$u?S7jzh=gWSOKLC%0ljq6pa!R37Qsq5Xcza6tHft>gMP|bVIaHG@sOIs$0s53Z1-xY%x~#6Brunm99)Na_m{MUh=x2 zp0G-@YMPqH+I^m;zb0Dq68o@Iv7dcfu};1Vl$&l$p7_3Kk#G_nMsdVP!KZ)=egLhx zICcm~WTbB_Nb@({jC&Y-h>n(DEc;ga%5l{G#Ma!(T4q=_7Edg`U~X%EW?EyOXeu#P(O!km0ZFYXPD_?2+TJo^;i+iQtACQS& z%D?JfhOQ4E7B&`hcCV1DK|b|xnU(6r{_d=0?{C>sG^wyn?t#oH8O<{-*(388>bata zmVpk&mF&|7NQx6)l01ZCg+@A;5i(Y+vOV-CvM)y9GkzkxHWpz0`2^ARHIYsZrxS#~ zi*AStg^chFHI0lS0)bVaMjZE@_EdA9c3E8~-P=7Ey_EkG+c%&gR|)S(Udg1&i`YGt zg1@;+*F>k(O4Pd)iP8p=cfu{yaN+|$h3y6Jzv-Tfo^{@-zB&H&EXTbFD9JIXs+c3m zXYNUN%DT$yC^8hyls-7Iy^{9=cV?V?r~I~j7kr~`$O%PHMTugZ@|beAvO9?N)$x5f zXc>nUy%f{oGj&-ZRQ6HsP{ybZsbq*ojAjkS_a)6C&3w(zAS{hk-^D)IT;&%~nGeW) zvJJ9fvfeV2^sKbAGz4nx3-E@x3Kj~;wZb&|H26QWiI%7}S_yx-qi|8fp0-!!J?Dw= zwDFX?mEg}EbhmULbxm{SI|n!&<#c)TvH_**9jolqY#*&*)~l8(7S0@2%$tsyh2|Qj z%f@}iZH7UH5X0-jj)gC<7ymi0eO`k+f9|#1=6MV9E`ULmX}nUr-B!Qso_n@`P+%vO zExsx{qwEE~_+<46)f}Z#v03U7B@!RmP3|Ac=G#IoQWIt9SgbL!AZg)(ZOl&9rLSnk*tNhvZ7EiQ29g|r@EtRp`L(h zg_`PHIPvSQQmOpP8_J=|x**S~;bpK7RHWu`GFS~C1G6ej-46TDDm8~&V^l@T#mZXB z6NnwR<@My9WbdSPr4iBt@F6>fGkH?H3Vu#ogmJ>L^eSo&Ihja;W{47u56s{XbI;gb zECmO$jquI+6(^o8y-Ph4J$Kz=x6_$e{#)6gQj?>$V}RXleO&U=($*3vX3a6h+s#K! z2TU?kkm-ss3Qm`cjb6iY!#Kl9{UF0%hEawohE%;<-_LN?*rh1aG#WeI&5N5@Qf-|} zp@8=u_HX92fn1`SaFFCZ^E(p^GNMb^N_d0HBQp4_{!#85W!vo!tP4v9Sb$sHPQvf?^INjiAff!te50EDvp+bu}~X1Oby9g z=Bc!g?43*@kAwS-O#WH+i)@$l9QZS@M7L1=V5CSYlx$DzM?G~6TJ(!xKhXf1t~QjO z%Amgr&xodpi^WwXLnJrx&if^mnchqj%)a*}CnU$fUXU~0z*hJLo)%-^bM=;?r1hku zr92~$-e9ue{F2AKW|Y!)(yr3Q(rDQdnOk-O^r};e&x+RQ4JW~}_rt$pgz}W4fufK6 zx~vw64`I?t%r{9>=83^c?Tzw`QlDd< zJ;XN2YO*ve`Q5V5a>`N#4m@ckjjgw=*KL#F`YgB4u+D|q@9;O%rKIA3E3&m;F zWQ~`%mi3d?W+amLqIdAI`hlKHoh1qK9Fa>z!{g~5&Rb@q25&xH8NIhTdhKRWyr_?8 zIDGV`gZKMf*hZL7pNG3sH>`Pjz>BM#N}@hf21-EdP{nu_n!@?iP;hOBgXk~-*9O9g z@)D(n1I9)=k*+RWiR!)x(T}JE`X&;Cg*8pw1-@%T#HYl6im!`ri1)&CYm4{}dPp() z$qVsuID2*!FBPv6hl}<9aO(T+Emm8^z*+4)+;Dclk?#ro#GVVc3s1qF>kw}5fSZ^~ zXoLUTd3q2O{ExudN`k75v7_K_poCwJb@E(z93Dr_-&uc4|9eE-p1wTqZ{Akk z*PcYrB2OL9J-68v<+|;3l}DBLC>ve6$1&61+P=k>XnkhARnpyBRI1anS`)8ZN-q1mpjw`!S ze!{iKGuu~#ZN_)O85w4MtUY(b{py;pc&bWdC?5lC-K2gpt!+N8*C z$$pYqL24Pnw3h^<@}MSG7xSnaq=H;a#G&@GJ~0*5vLWQJV05*E`{+n`j`oK;=5DM+ zeiM!sju!^#mvF;uhx*N9P_QngE>H)k=hO@8Hu{_n<9-gk5}uj;;gOk&-<+ftQcWl; zxea?BouFRr4)3b7(7%Sm-L-%kOcOXU=_@)d>LWe^C)#O}>k=uPVoN0_C8Hz+7%_{n zmN3DGB>~UB2R-kluoQh`yKpZkNk59NiBw`a*68m=A4Min4{>*K3U(zgq1BYa?{0yQ zp<<{;GjsrcpL6I(=)GUyWR?mCRRg>QSK_}YgO>IwDqi~$KMA~0q2AzcacXWMJp4X@ z4D{6hhdak)r7Wob7Tj#yt8R>51YUi9+eyeO0vYAGu(;S-| z3dcLgXh)vI>M%QYf)`Y~RF0pIhil_=+dJC=TR+=o>tU;_RF~1A1Yp0+|BaF5^nv|cFd7bI;ULizV2OzYT>N}O?8HE??(6(9e^*| zVR-k}5*-xA&|e4-zt$fD+G=(8DOVF`Ym^H~m_&vH%jXTVh>65*)-vWgX3c)^TDyU@Tn`Yl)`~lbGvQu2N;rkqBet}l z1k_e?B-xdmMcyG}pk6kDgIo)b_C)fHk;tlm6g3fRy+p+u#US_|4VCAC9rTJBDsjTE z%?k&>D5@8@F^ve5;5Bq3p~Q2{ZC6O1JVe#Sdo%?s1|j0h7|}RU2aE!j(1>0#8a{8Q z>6sup^{1l{5lW$hevck@m^wvmL8R(TeSquM9C9$(jkIA;Z3;1w=ndbY=EPWHH7-wx z1mYx7ihA+IP{$v}WfK(K!^pPeJSe~C!Bwpm{LE&Pg=80M8DgOyD(p3Ie0>ey$trl& zALwKB7@DOT(N;Y3O|-*&%+X5_C0C*EKmA7x)l>OYC@rE(@RM0oC-nP=U zvGo$#mgZ2n*)a312vmh?`4#Hy`alVCha1jSNB!wj_E+`x>HcrGh79XQ4y%D{8v8!&5FAUVp2_ zFGVBi52PNI@0tqTnAELf4|B>8E&K*Wh-VprI6H$>!kx}Z zM1luUhV{UFc%m+Wx401QkqnuGUiTTka2hg*3`OR5gBVQohst0y(SabKOBw-fW;5uH zqM>-K46U3DgsEmY$Mgz1qN@D@B6kQz)k!!s)~4E1QD6a-kV&Kj-*2I2GXn0uPodj? zM?6F3c^g{)eZ*seBLYMycn@vxIRc)5+i|%FX2Eym#Bb=&!{HG)9g(*t{2R^^r*K*E zkJlq4?n9e61xmuEP_e{7$7zLv?z^7vyW(&GbP>~`8|wk(K& zd-FWYyis0{$L_A`*0}e+FFzG#imp_5N{eup^+jWqIZACAYxD#rZ-gpzDe4#nz70bXirjI?9O1$uy1Zy~M{zhIIO9jCJ^1!*j45XqCUgRdteo zn18ST9z3gm^}qEm^B?qE{QaSJ>dN*&MxbM}{Z-kaev$uz@1%E#H_LO-^TOT2-Q2wp zuIKZeyPVsdCC=WiiLOtscdi|-rtabHLU^gQgu6nFcb4a~$L=}eeT&|_!n4?Y!nM`4 z!ByRL%B2Hsa+dQCXI_jck3fum9rikF@QO{|1MXE0iN51}Dy z30^_}J{=T`CV@S?9X^|bxnpo_J`Cr|Kln{>tRD*X|6H`07W3d3ylWh>4~&!A@RXlK zt)mX22UUg#UmCPHJQ&I6`Q_x&!S*PdiObM-ToUg+kzT5rriP!r+q*OeL! zE#p9pgDIFnhe6phgK9)Iz)YGzej)dv_k5p~TOyv#zz)kFwOj@)4Z8f=m<_#+nckzjzF zhn}`CwBct2IndI^!Q16L?o~kSA=bh>cp}y&!BDi0L&VgBbTAb9N*{k6yTOa0o`sti zZwIHOa-cgjSAT&-;YUSUeXQ?81m6M?f@G-fHes){6iTy8JXB)53u@c5+zt+VyIdA( z!;86^{9n+?wgxjH^dGUf2hI%q{1tu#Rzlm+pBEu_XbmNAj(?_K>i7AY`M>!ez&q*) zddDH|GdG#%_)Sn08=%}8f_R^A7p815c7m9GkI^E1#$ z4q!G45$wYIc?e2<7TWM!=)Y@$FW~(L-{W^giME)zenVu~4ORUgf($`8X0}-%46P>a z6PMx48jYI6Dd@`24W7#YWRRZt78YidC$dYx7y#<#|2Rbezd%exDg2#>&VaJ;aa zupP*So#2PvSy)?GM*oeGGz`zt4EmPySgn~!J$hUsc?L86cYog(SZQf61{PBrsrztX zmeCEdCJ&)2(^Y5*?W67?hKEo`F_*7~i?f)XJ5_3;HckZfhzNy(_k!nWFRMTV?oSK+ZV*0)6VtGU zoPd>3L&A(m`v>O8Uy%VYh%}d=R-F{+1m)v*Pl6milTYG5U?2Q<{#U*|9Dm*L`w;UP zP!zu7thgS6*>n~E0(xx|X5gBEo)`_o;SPMBZ^ercfmcJnybF7S)mSxjVy)T!>}d87 zo5l8kW6RI{JD$LpYk^)q6In;cfQ26m2jEO@6<3@4$}T{(uF5vT{^&e#-tWP|Yc;nC z<0FFKgHiLIzlnQ)A47|wcZ}p?F^*n=3TI~v*$8;I1Xw4#njOh@W{0xzaQtQ22kchX zjcXIRNpOj2zXV?+&R+pz1g`g_Zo*rVKi?kTd^5>!u6{4#z5a)%w9 zhWnFkz}9E4_{aM{`Re=9ya&A&ui97DHxQS*K8b&vzr;V5En?eaM4x~kaz59dmq9Ds z6k}@vHwXX0I_?tpf%}U)i5NbJU%}I$7Oe-5r7NfpD?undg)A`A~q_$GLs)(}dCnaE#akZm_c))0D(^N4ThAbow>!D_NP0f(oHiY-A zl(LX-$#>)vjLn1St@Ds|%tG(oiC4c3qJ}+>}TD^bM@et@JIPid(U55_YiQc-F z9fRIh8F|Ynb~DzD2G-8@=f-2~WpTymTY65yNAQWL@p+7AnZi}&@>n0svu5@Vyp=Dp zsnGr!&>N*72e(DPUjugFS&rs8?htxjI%c5C814JOr1%9i@2_AAG{@_H%`L#_kaHOr zbARH(vr6b{S91F>-fLl=c*|3P_Sn(wfjn#>c)H;MBJdF-B$|JLR#=1iXD7D^tJ!|s z0kmQ$=B!SL8(vPp>%d~Wg8L`%U(upz{CupBBS2z1hJL+3a1f5gy@}aSibujp*dgEr z9f)PvrJ9NPH~NT>OD3C)Of&J%xPqPyB8oE-TRo9LOM>fg-aC zu`LGcwzXKfJwg_68`1X{WE5LLQ#*sq=mbW~GGs};DJObmALO+ik;$sbCzw^W? z&aoQ=y5rcV`@R;u2Y%antm@XFP2vazVZe?`lHdW@Z9gJEjt1eSCeCB>kOkid?dSvQ zytQl_c>sU%mH7z1?Uhhkw<^eEu*pGQzNf#i+rPPAPeu% z2mUU9jo-)5!}}M@ha<+;f#!D@--{oK9oZ}J=(h7hy!QfRCVup$clhi5s5R@wtN48G zBl`E>s6Ts+akPUw&i#RSc!PV!$@mzstYgs62l3nR9N+u?4XiHj@>h}ZWT3{{$UjF^ z-vd_2WBww)mT$+)@py01=k0Ktf6pbtBRm(}fgh3o=3(wR$DiPzB5w=ezEAlB7_DFo z;%xpWtoT;&jqq&U@V$s{i@a_!`uYW|5(I)0oJ+g`H>wRTcHHk6=8+NjF9V#EuZuBW zhaZ3wix0dMT!HmiCwc;{K^i)bdG)Q}8gj$o$TatW^%Nv{4I0}O#1bJgmICB8C;2!b-hNz5{*L>_IoWp3y#j5T-#?eDiVh$6Fh|UC$ocT}Cj27aN zn&JPOj$C>_#%2O~S*d^%(4Ym{aqA|s?q9%OYJ}XG!K&>4?}Gqe>px%q{oj9Q0Rj4l z%XcQw_s@TR5V-RF^ZVEDm;e0nk30T>!<&%fXIKYo0_4Y1cg9`&Ek@Nc*N`FH<( z9sj)jukZgRb^q7xe_i|MZ~pDs|M?33?Wh0w>vyI7zg@V%e|2F4|Erh(>QVmnvwuF@ b|L*ty{QCdrxBt~H|F>NG=X?IY_x-;C+;_l( diff --git a/packages/google-cloud-speech/system-test/speech_system_test.js b/packages/google-cloud-speech/system-test/speech_system_test.js deleted file mode 100644 index 292de0cbd2ea..000000000000 --- a/packages/google-cloud-speech/system-test/speech_system_test.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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. - -'use strict'; - -const assert = require('assert'); -const {describe, it} = require('mocha'); -const path = require('path'); -const speech = require(path.join(process.cwd(), 'build', 'src')); -const fs = require('fs'); - -describe('SpeechClient system test default', () => { - it('calls recognize', async () => { - const client = new speech.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = 'FLAC'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - audioChannelCount: 2, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri: uri, - }; - const request = { - config: config, - audio: audio, - }; - const [response] = await client.recognize(request); - assert.strictEqual(response.results[0].alternatives[0].transcript, 'hello'); - }); - - it('calls longRunningRecognize', async () => { - const client = new speech.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = 'FLAC'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - audioChannelCount: 2, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri: uri, - }; - const request = { - config: config, - audio: audio, - }; - const [operation] = await client.longRunningRecognize(request); - const [response] = await operation.promise(); - assert.strictEqual(response.results[0].alternatives[0].transcript, 'hello'); - }); - - it('calls streamingRecognize', done => { - const filename = path.join( - 'system-test', - 'fixtures', - 'streamingRecognize', - 'input.wav' - ); - - const languageCode = 'en-US'; - const sampleRateHertz = 24000; - const encoding = 'LINEAR16'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - }; - const request = { - config, - interimResults: false, - }; - - const client = new speech.SpeechClient(); - const stream = client.streamingRecognize(request); - let gotResponse = false; - stream.on('data', response => { - assert.match( - response.results[0].alternatives[0].transcript, - /test of streaming.*call/ - ); - gotResponse = true; - }); - stream.on('end', () => { - assert(gotResponse); - done(); - }); - stream.on('error', done); - fs.createReadStream(filename).pipe(stream); - }); -}); diff --git a/packages/google-cloud-speech/system-test/speech_system_test_v1.js b/packages/google-cloud-speech/system-test/speech_system_test_v1.js deleted file mode 100644 index 78728558fc7c..000000000000 --- a/packages/google-cloud-speech/system-test/speech_system_test_v1.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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. - -'use strict'; - -const assert = require('assert'); -const {describe, it} = require('mocha'); -const path = require('path'); -const speech = require(path.join(process.cwd(), 'build', 'src')); -const fs = require('fs'); - -describe('SpeechClient system test v1', () => { - it('calls recognize', async () => { - const client = new speech.v1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = 'FLAC'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - audioChannelCount: 2, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri: uri, - }; - const request = { - config: config, - audio: audio, - }; - const [response] = await client.recognize(request); - assert.strictEqual(response.results[0].alternatives[0].transcript, 'hello'); - }); - - it('calls longRunningRecognize', async () => { - const client = new speech.v1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = 'FLAC'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - audioChannelCount: 2, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri: uri, - }; - const request = { - config: config, - audio: audio, - }; - const [operation] = await client.longRunningRecognize(request); - const [response] = await operation.promise(); - assert.strictEqual(response.results[0].alternatives[0].transcript, 'hello'); - }); - - it('calls streamingRecognize', done => { - const filename = path.join( - 'system-test', - 'fixtures', - 'streamingRecognize', - 'input.wav' - ); - - const languageCode = 'en-US'; - const sampleRateHertz = 24000; - const encoding = 'LINEAR16'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - }; - const request = { - config, - interimResults: false, - }; - - const client = new speech.v1.SpeechClient(); - const stream = client.streamingRecognize(request); - let gotResponse = false; - stream.on('data', response => { - assert.match( - response.results[0].alternatives[0].transcript, - /test of streaming.*call/ - ); - gotResponse = true; - }); - stream.on('end', () => { - assert(gotResponse); - done(); - }); - stream.on('error', done); - fs.createReadStream(filename).pipe(stream); - }); -}); diff --git a/packages/google-cloud-speech/system-test/speech_system_test_v1p1beta1.js b/packages/google-cloud-speech/system-test/speech_system_test_v1p1beta1.js deleted file mode 100644 index 19ca671458f3..000000000000 --- a/packages/google-cloud-speech/system-test/speech_system_test_v1p1beta1.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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. - -'use strict'; - -const assert = require('assert'); -const {describe, it} = require('mocha'); -const path = require('path'); -const speech = require(path.join(process.cwd(), 'build', 'src')); -const fs = require('fs'); - -describe('SpeechClient system test v1p1beta1', () => { - it('calls recognize', async () => { - const client = new speech.v1p1beta1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = 'FLAC'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - audioChannelCount: 2, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri: uri, - }; - const request = { - config: config, - audio: audio, - }; - const [response] = await client.recognize(request); - assert.strictEqual(response.results[0].alternatives[0].transcript, 'hello'); - }); - - it('calls longRunningRecognize', async () => { - const client = new speech.v1p1beta1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = 'FLAC'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - audioChannelCount: 2, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri: uri, - }; - const request = { - config: config, - audio: audio, - }; - const [operation] = await client.longRunningRecognize(request); - const [response] = await operation.promise(); - assert.strictEqual(response.results[0].alternatives[0].transcript, 'hello'); - }); - - it('calls streamingRecognize', done => { - const filename = path.join( - 'system-test', - 'fixtures', - 'streamingRecognize', - 'input.wav' - ); - - const languageCode = 'en-US'; - const sampleRateHertz = 24000; - const encoding = 'LINEAR16'; - const config = { - languageCode: languageCode, - sampleRateHertz: sampleRateHertz, - encoding: encoding, - }; - const request = { - config, - interimResults: false, - }; - - const client = new speech.v1p1beta1.SpeechClient(); - const stream = client.streamingRecognize(request); - let gotResponse = false; - stream.on('data', response => { - assert.match( - response.results[0].alternatives[0].transcript, - /test of streaming.*call/ - ); - gotResponse = true; - }); - stream.on('end', () => { - assert(gotResponse); - done(); - }); - stream.on('error', done); - fs.createReadStream(filename).pipe(stream); - }); -}); diff --git a/packages/google-cloud-speech/system-test/speech_typescript_system_test.ts b/packages/google-cloud-speech/system-test/speech_typescript_system_test.ts deleted file mode 100644 index e8a265f9c41d..000000000000 --- a/packages/google-cloud-speech/system-test/speech_typescript_system_test.ts +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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 * as assert from 'assert'; -import {describe, it} from 'mocha'; -import * as speech from '../src'; -import * as fs from 'fs'; -import * as path from 'path'; -import {google} from '../protos/protos'; - -describe('SpeechClient TypeScript system test default', () => { - it('calls recognize', async () => { - const client = new speech.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.FLAC; - const audioChannelCount = 2; - const config = { - languageCode, - sampleRateHertz, - encoding, - audioChannelCount, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri, - }; - const request = { - config, - audio, - }; - const [response] = await client.recognize(request); - assert.strictEqual( - response.results![0].alternatives![0].transcript, - 'hello' - ); - }); - - it('calls longRunningRecognize', async () => { - const client = new speech.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.FLAC; - const audioChannelCount = 2; - const config = { - languageCode, - sampleRateHertz, - encoding, - audioChannelCount, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri, - }; - const request = { - config, - audio, - }; - const [operation] = await client.longRunningRecognize(request); - const [response] = await operation.promise(); - assert.strictEqual( - response.results![0].alternatives![0].transcript, - 'hello' - ); - }); - - it('calls streamingRecognize', done => { - const filename = path.join( - 'system-test', - 'fixtures', - 'streamingRecognize', - 'input.wav' - ); - - const languageCode = 'en-US'; - const sampleRateHertz = 24000; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.LINEAR16; - const config = { - languageCode, - sampleRateHertz, - encoding, - }; - const request = { - config, - interimResults: false, - }; - - const client = new speech.SpeechClient(); - const stream = client.streamingRecognize(request); - let gotResponse = false; - stream.on( - 'data', - (response: google.cloud.speech.v1.IStreamingRecognizeResponse) => { - assert.match( - response.results![0].alternatives![0].transcript ?? '', - /test of streaming.*call/ - ); - gotResponse = true; - } - ); - stream.on('end', () => { - assert(gotResponse); - done(); - }); - stream.on('error', done); - fs.createReadStream(filename).pipe(stream); - }); -}); diff --git a/packages/google-cloud-speech/system-test/speech_typescript_system_test_v1.ts b/packages/google-cloud-speech/system-test/speech_typescript_system_test_v1.ts deleted file mode 100644 index d502f61cbd07..000000000000 --- a/packages/google-cloud-speech/system-test/speech_typescript_system_test_v1.ts +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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 * as assert from 'assert'; -import {describe, it} from 'mocha'; -import * as speech from '../src'; -import * as fs from 'fs'; -import * as path from 'path'; -import {google} from '../protos/protos'; - -describe('SpeechClient TypeScript system test v1', () => { - it('calls recognize', async () => { - const client = new speech.v1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.FLAC; - const audioChannelCount = 2; - const config = { - languageCode, - sampleRateHertz, - encoding, - audioChannelCount, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri, - }; - const request = { - config, - audio, - }; - const [response] = await client.recognize(request); - assert.strictEqual( - response.results![0]!.alternatives![0].transcript, - 'hello' - ); - }); - - it('calls longRunningRecognize', async () => { - const client = new speech.v1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.FLAC; - const audioChannelCount = 2; - const config = { - languageCode, - sampleRateHertz, - encoding, - audioChannelCount, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri, - }; - const request = { - config, - audio, - }; - const [operation] = await client.longRunningRecognize(request); - const [response] = await operation.promise(); - assert.strictEqual( - response.results![0].alternatives![0].transcript, - 'hello' - ); - }); - - it('calls streamingRecognize', done => { - const filename = path.join( - 'system-test', - 'fixtures', - 'streamingRecognize', - 'input.wav' - ); - - const languageCode = 'en-US'; - const sampleRateHertz = 24000; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.LINEAR16; - const config = { - languageCode, - sampleRateHertz, - encoding, - }; - const request = { - config, - interimResults: false, - }; - - const client = new speech.v1.SpeechClient(); - const stream = client.streamingRecognize(request); - let gotResponse = false; - stream.on( - 'data', - (response: google.cloud.speech.v1.IStreamingRecognizeResponse) => { - assert.match( - response.results![0].alternatives![0].transcript ?? '', - /test of streaming.*call/ - ); - gotResponse = true; - } - ); - stream.on('end', () => { - assert(gotResponse); - done(); - }); - stream.on('error', done); - fs.createReadStream(filename).pipe(stream); - }); -}); diff --git a/packages/google-cloud-speech/system-test/speech_typescript_system_test_v1p1beta1.ts b/packages/google-cloud-speech/system-test/speech_typescript_system_test_v1p1beta1.ts deleted file mode 100644 index d710f571ae4a..000000000000 --- a/packages/google-cloud-speech/system-test/speech_typescript_system_test_v1p1beta1.ts +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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 * as assert from 'assert'; -import {describe, it} from 'mocha'; -import * as speech from '../src'; -import * as fs from 'fs'; -import * as path from 'path'; -import {google} from '../protos/protos'; - -describe('SpeechClient TypeScript system test v1p1beta1', () => { - it('calls recognize', async () => { - const client = new speech.v1p1beta1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = - google.cloud.speech.v1p1beta1.RecognitionConfig.AudioEncoding.FLAC; - const audioChannelCount = 2; - const config = { - languageCode, - sampleRateHertz, - encoding, - audioChannelCount, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri, - }; - const request = { - config, - audio, - }; - const [response] = await client.recognize(request); - assert.strictEqual( - response.results![0].alternatives![0].transcript, - 'hello' - ); - }); - - it('calls longRunningRecognize', async () => { - const client = new speech.v1p1beta1.SpeechClient(); - - const languageCode = 'en-US'; - const sampleRateHertz = 44100; - const encoding = - google.cloud.speech.v1p1beta1.RecognitionConfig.AudioEncoding.FLAC; - const audioChannelCount = 2; - const config = { - languageCode, - sampleRateHertz, - encoding, - audioChannelCount, - }; - const uri = 'gs://cloud-samples-data/speech/hello.flac'; - const audio = { - uri, - }; - const request = { - config, - audio, - }; - const [operation] = await client.longRunningRecognize(request); - const [response] = await operation.promise(); - assert.strictEqual( - response.results![0].alternatives![0].transcript, - 'hello' - ); - }); - - it('calls streamingRecognize', done => { - const filename = path.join( - 'system-test', - 'fixtures', - 'streamingRecognize', - 'input.wav' - ); - - const languageCode = 'en-US'; - const sampleRateHertz = 24000; - const encoding = - google.cloud.speech.v1.RecognitionConfig.AudioEncoding.LINEAR16; - const config = { - languageCode, - sampleRateHertz, - encoding, - }; - const request = { - config, - interimResults: false, - }; - - const client = new speech.v1p1beta1.SpeechClient(); - const stream = client.streamingRecognize(request); - let gotResponse = false; - stream.on( - 'data', - (response: google.cloud.speech.v1p1beta1.IStreamingRecognizeResponse) => { - assert.match( - response.results![0].alternatives![0].transcript ?? '', - /test of streaming.*call/ - ); - gotResponse = true; - } - ); - stream.on('end', () => { - assert(gotResponse); - done(); - }); - stream.on('error', done); - fs.createReadStream(filename).pipe(stream); - }); -}); diff --git a/packages/google-cloud-speech/test/helpers.test.ts b/packages/google-cloud-speech/test/helpers.test.ts deleted file mode 100644 index 9cb690b272e2..000000000000 --- a/packages/google-cloud-speech/test/helpers.test.ts +++ /dev/null @@ -1,185 +0,0 @@ -/*! - * Copyright 2017 Google Inc. All Rights Reserved. - * - * 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. - */ - -'use strict'; - -import * as assert from 'assert'; -import {afterEach, describe, it} from 'mocha'; -import * as sinon from 'sinon'; -import * as stream from 'stream'; -import * as speech from '../src'; - -describe('Speech helper methods', () => { - const sandbox = sinon.createSandbox(); - - afterEach(() => { - sandbox.restore(); - }); - - describe('streamingRecognize', () => { - const CONFIG: speech.protos.google.cloud.speech.v1.IStreamingRecognitionConfig = - { - config: {encoding: 'LINEAR16', languageCode: 'en-us'}, - }; - const OPTIONS = {timeout: Infinity}; - - it('writes the config to the resulting stream', done => { - const client = new speech.v1.SpeechClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - - // Stub the underlying _streamingRecognize method to just return - // a bogus stream. - const requestStream = new stream.PassThrough({objectMode: true}); - const sr = sandbox - .stub(client.innerApiCalls, 'streamingRecognize') - .returns(requestStream); - - // Call the new helper method and establish that the config was - // forwarded as expected. - const userStream = client.streamingRecognize(CONFIG, OPTIONS); - - // Establish that the underlying streamingRecognize was called with - // the options. - assert(sr.calledOnce); - assert(sr.calledWithExactly(null, OPTIONS)); - - requestStream._write = (data, enc, next) => { - assert.deepStrictEqual(data, { - streamingConfig: CONFIG, - }); - setImmediate(done); - next(null); - }; - - userStream.write(undefined); - }); - - it('does not require options', () => { - const client = new speech.v1.SpeechClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - - // Stub the underlying _streamingRecognize method to just return - // a bogus stream. - const requestStream = new stream.PassThrough({objectMode: true}); - const sr = sandbox - .stub(client.innerApiCalls, 'streamingRecognize') - .returns(requestStream); - - const userStream = client.streamingRecognize(CONFIG); - - userStream.emit('writing'); - - assert(sr.calledOnce); - assert(sr.calledWithExactly(null, {})); - }); - - it('destroys the user stream when the request stream errors', done => { - const client = new speech.v1.SpeechClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - - // Stub the underlying _streamingRecognize method to just return - // a bogus stream. - const requestStream = new stream.PassThrough({objectMode: true}); - sandbox - .stub(client.innerApiCalls, 'streamingRecognize') - .returns(requestStream); - - const userStream = client.streamingRecognize(CONFIG, OPTIONS); - - const error = new Error('Request stream error'); - - userStream.once('error', (err: Error) => { - assert.strictEqual(err, error); - done(); - }); - - requestStream.emit('error', error); - }); - - it('re-emits response from the request stream', done => { - const client = new speech.v1.SpeechClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - - // Stub the underlying _streamingRecognize method to just return - // a bogus stream. - const requestStream = new stream.PassThrough({objectMode: true}); - sandbox - .stub(client.innerApiCalls, 'streamingRecognize') - .returns(requestStream); - - const userStream = client.streamingRecognize(CONFIG, OPTIONS); - - const response = {}; - - userStream.on('response', (_response: {}) => { - assert.strictEqual(_response, response); - done(); - }); - - userStream.emit('writing'); - requestStream.emit('response', response); - }); - - it('wraps incoming audio data', done => { - const client = new speech.v1.SpeechClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - - // Stub the underlying _streamingRecognize method to just return - // a bogus stream. - const requestStream = new stream.PassThrough({objectMode: true}); - - sandbox - .stub(client.innerApiCalls, 'streamingRecognize') - .returns(requestStream); - - const userStream = client.streamingRecognize(CONFIG, OPTIONS); - const audioContent = Buffer.from('audio content'); - - let count = 0; - requestStream._write = (data, enc, next) => { - if (count === 0) { - assert.deepStrictEqual(data, { - streamingConfig: CONFIG, - }); - } else if (count === 1) { - assert.deepStrictEqual(data, { - audioContent, - }); - setImmediate(done); - } - count++; - next(null); - }; - - userStream.end(audioContent); - }); - }); -});