From f2e4cdd0541a2c436e4ccfebdcd826f1538e868a Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Tue, 11 Oct 2016 14:06:55 -0700 Subject: [PATCH 1/3] Add tests for quickstarts Change-Id: I5f01ec8003b9a9daf16e75119c048556e14afe42 --- bigquery/cloud-client/quickstart_test.py | 45 +++++++++++++++++++++++ conftest.py | 3 +- datastore/api/quickstart_test.py | 21 +++++++++++ datastore/api/snippets.py | 9 +++-- language/cloud-client/quickstart_test.py | 22 +++++++++++ logging/cloud-client/quickstart_test.py | 22 +++++++++++ pubsub/cloud-client/quickstart_test.py | 45 +++++++++++++++++++++++ storage/cloud-client/quickstart_test.py | 28 ++++++++++++++ testing/resources/test-env.tmpl.sh | 1 + translate/cloud-client/quickstart.py | 7 ++-- translate/cloud-client/quickstart_test.py | 40 ++++++++++++++++++++ vision/cloud-client/quickstart.py | 12 ++++-- vision/cloud-client/quickstart_test.py | 21 +++++++++++ 13 files changed, 265 insertions(+), 11 deletions(-) create mode 100644 bigquery/cloud-client/quickstart_test.py create mode 100644 datastore/api/quickstart_test.py create mode 100644 language/cloud-client/quickstart_test.py create mode 100644 logging/cloud-client/quickstart_test.py create mode 100644 pubsub/cloud-client/quickstart_test.py create mode 100644 storage/cloud-client/quickstart_test.py create mode 100644 translate/cloud-client/quickstart_test.py create mode 100644 vision/cloud-client/quickstart_test.py diff --git a/bigquery/cloud-client/quickstart_test.py b/bigquery/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..f5842960ce6 --- /dev/null +++ b/bigquery/cloud-client/quickstart_test.py @@ -0,0 +1,45 @@ +# Copyright 2016 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. + +from google.cloud import bigquery +import pytest + +import quickstart + + +# Must match the dataset listed in quickstart.py (there's no easy way to +# extract this). +DATASET_ID = 'my_new_dataset' + + +@pytest.fixture +def temporary_dataset(): + """Fixture that ensures the test dataset does not exist before or + after a test.""" + bigquery_client = bigquery.Client() + dataset = bigquery_client.dataset(DATASET_ID) + + if dataset.exists(): + dataset.delete() + + yield + + if dataset.exists(): + dataset.delete() + + +def test_quickstart(capsys, temporary_dataset): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert DATASET_ID in out diff --git a/conftest.py b/conftest.py index 3fa68de6953..8ac8451e0ef 100644 --- a/conftest.py +++ b/conftest.py @@ -30,7 +30,8 @@ def cloud_config(): project=os.environ.get('GCLOUD_PROJECT'), storage_bucket=os.environ.get('CLOUD_STORAGE_BUCKET'), client_secrets=os.environ.get('GOOGLE_CLIENT_SECRETS'), - bigtable_instance=os.environ.get('BIGTABLE_CLUSTER')) + bigtable_instance=os.environ.get('BIGTABLE_CLUSTER'), + api_key=os.environ.get('API_KEY')) def get_resource_path(resource, local_path): diff --git a/datastore/api/quickstart_test.py b/datastore/api/quickstart_test.py new file mode 100644 index 00000000000..8545dfa04de --- /dev/null +++ b/datastore/api/quickstart_test.py @@ -0,0 +1,21 @@ +# Copyright 2016 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 quickstart + + +def test_quickstart(capsys): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert 'Saved' in out diff --git a/datastore/api/snippets.py b/datastore/api/snippets.py index 22d5e35e526..211592b5919 100644 --- a/datastore/api/snippets.py +++ b/datastore/api/snippets.py @@ -539,7 +539,8 @@ def inequality_invalid(client): return list(query.fetch()) - except google.cloud.exceptions.BadRequest: + except (google.cloud.exceptions.BadRequest, + google.cloud.exceptions.GrpcRendezvous): pass @@ -579,7 +580,8 @@ def inequality_sort_invalid_not_same(client): return list(query.fetch()) - except google.cloud.exceptions.BadRequest: + except (google.cloud.exceptions.BadRequest, + google.cloud.exceptions.GrpcRendezvous): pass @@ -593,7 +595,8 @@ def inequality_sort_invalid_not_first(client): return list(query.fetch()) - except google.cloud.exceptions.BadRequest: + except (google.cloud.exceptions.BadRequest, + google.cloud.exceptions.GrpcRendezvous): pass diff --git a/language/cloud-client/quickstart_test.py b/language/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..bd9954c83bb --- /dev/null +++ b/language/cloud-client/quickstart_test.py @@ -0,0 +1,22 @@ +# Copyright 2016 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 quickstart + + +def test_quickstart(capsys): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert 'Sentiment' in out diff --git a/logging/cloud-client/quickstart_test.py b/logging/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..1b49cd1263a --- /dev/null +++ b/logging/cloud-client/quickstart_test.py @@ -0,0 +1,22 @@ +# Copyright 2016 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 quickstart + + +def test_quickstart(capsys): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert 'Logged' in out diff --git a/pubsub/cloud-client/quickstart_test.py b/pubsub/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..bbb3bd75f25 --- /dev/null +++ b/pubsub/cloud-client/quickstart_test.py @@ -0,0 +1,45 @@ +# Copyright 2016 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. + +from google.cloud import pubsub +import pytest + +import quickstart + + +# Must match the dataset listed in quickstart.py (there's no easy way to +# extract this). +TOPIC_NAME = 'my-new-topic' + + +@pytest.fixture +def temporary_topic(): + """Fixture that ensures the test dataset does not exist before or + after a test.""" + pubsub_client = pubsub.Client() + topic = pubsub_client.topic(TOPIC_NAME) + + if topic.exists(): + topic.delete() + + yield + + if topic.exists(): + topic.delete() + + +def test_quickstart(capsys, temporary_topic): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert TOPIC_NAME in out diff --git a/storage/cloud-client/quickstart_test.py b/storage/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..cb0503972ff --- /dev/null +++ b/storage/cloud-client/quickstart_test.py @@ -0,0 +1,28 @@ +# Copyright 2016 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 mock + +import quickstart + + +@mock.patch('google.cloud.storage.client.Client.create_bucket') +def test_quickstart(create_bucket_mock, capsys): + # Unlike other quickstart tests, this one mocks out the creation + # because buckets are expensive, globally-namespaced object. + create_bucket_mock.return_value = mock.sentinel.bucket + + quickstart.run_quickstart() + + create_bucket_mock.assert_called_with('my-new-bucket') diff --git a/testing/resources/test-env.tmpl.sh b/testing/resources/test-env.tmpl.sh index 65a53826f8f..0734f19fa27 100644 --- a/testing/resources/test-env.tmpl.sh +++ b/testing/resources/test-env.tmpl.sh @@ -1,6 +1,7 @@ # Environment variables for system tests. export GCLOUD_PROJECT=your-project-id export CLOUD_STORAGE_BUCKET=$GCLOUD_PROJECT +export API_KEY= export BIGTABLE_CLUSTER=bigtable-test export BIGTABLE_ZONE=us-central1-c diff --git a/translate/cloud-client/quickstart.py b/translate/cloud-client/quickstart.py index ad5436767dd..51ab697c8f0 100644 --- a/translate/cloud-client/quickstart.py +++ b/translate/cloud-client/quickstart.py @@ -27,16 +27,15 @@ def run_quickstart(): translate_client = translate.Client(api_key) # The text to translate - text = 'Hello, world!' + text = u'Hello, world!' # The target language target = 'ru' # Translates some text into Russian translation = translate_client.translate(text, target_language=target) - print('Text: {}'.format(text)) - print('Translation: {}'.format( - translation['translatedText'].encode('utf-8'))) + print(u'Text: {}'.format(text)) + print(u'Translation: {}'.format(translation['translatedText'])) # [END translate_quickstart] diff --git a/translate/cloud-client/quickstart_test.py b/translate/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..5914cb5a9dc --- /dev/null +++ b/translate/cloud-client/quickstart_test.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 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. + +from google.cloud import translate +import mock +import pytest + +import quickstart + + +@pytest.fixture +def mock_client(cloud_config): + original_client_ctor = translate.Client + + def new_client_ctor(api_key): + # Strip api_key argument and replace with our api key. + return original_client_ctor(cloud_config.api_key) + + with mock.patch( + 'google.cloud.translate.Client', + side_effect=new_client_ctor): + yield + + +def test_quickstart(mock_client, capsys): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert u'Привет мир!' in out diff --git a/vision/cloud-client/quickstart.py b/vision/cloud-client/quickstart.py index 68348799180..c7a7ad9a556 100644 --- a/vision/cloud-client/quickstart.py +++ b/vision/cloud-client/quickstart.py @@ -18,6 +18,7 @@ def run_quickstart(): # [START vision_quickstart] import io + import os # Imports the Google Cloud client library from google.cloud import vision @@ -26,11 +27,16 @@ def run_quickstart(): vision_client = vision.Client() # The name of the image file to annotate - fileName = './resources/wakeupcat.jpg' + file_name = os.path.join( + os.path.dirname(__file__), + 'resources/wakeupcat.jpg') # Loads the image into memory - with io.open(fileName, 'rb') as image_file: - image = vision_client.image(content=image_file.read()) + with io.open(file_name, 'rb') as image_file: + content = image_file.read() + import pdb; pdb.set_trace() + image = vision_client.image( + content=content) # Performs label detection on the image file labels = image.detect_labels() diff --git a/vision/cloud-client/quickstart_test.py b/vision/cloud-client/quickstart_test.py new file mode 100644 index 00000000000..d483d4131f7 --- /dev/null +++ b/vision/cloud-client/quickstart_test.py @@ -0,0 +1,21 @@ +# Copyright 2016 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 quickstart + + +def test_quickstart(capsys): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert 'Labels' in out From 9c5541039c175191649841d9e8e70bfcf336792d Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Tue, 11 Oct 2016 14:10:14 -0700 Subject: [PATCH 2/3] Update secrets Change-Id: Id6ba9d8e4fd3229e05b1c5a57b2cd3518350224d --- .travis.yml | 2 +- secrets.tar.enc | Bin 10272 -> 9760 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e5e04c212d0..02d8ae6ca1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ env: - GOOGLE_APPLICATION_CREDENTIALS=${TRAVIS_BUILD_DIR}/testing/resources/service-account.json - GOOGLE_CLIENT_SECRETS=${TRAVIS_BUILD_DIR}/testing/resources/client-secrets.json - GAE_ROOT=${HOME}/.cache/ - - secure: TQ0e6XKeFwVkoqgOJH9f/afyRouUSC6s7LC32C4JS+O2X4sXyXTPXACmzu5wCW0BXPc6HvITMLvkf7g6XXyGlCPkjM8Uw5Vg5F9+cwN1HMlI+gK6bMGTUfrwN5ruFT+KmEnD4F93NY3xkDbZd0fw23d/mVloTc6V0gUsxEUkuhM= + - secure: f3aU0nf8ZBV2QfZ03oeqvR0f/JM69P/7IH3IGoBcRUWVIXXhQ6Esh9SmCUILPtis1ZKu11I9c+NDebZio7PFgTqfvLbKzAkrg0ucx+Bsyx6379/S1trbLeKunERSGA3GqK6+OCoR5q/9sKxNvlm/c/e9h7xZmPfP5W0qwVR/K0M= addons: apt: sources: diff --git a/secrets.tar.enc b/secrets.tar.enc index dbf6a4502425fc6c8b7a4a15836138100ac75237..5354a881a5c7301e768d0114111099687f666b17 100644 GIT binary patch literal 9760 zcmV+*Cg0gpVQh3|WM5ypuvq{A?ycYPO`xIa+&Bryje;PkOWGn)jrJWe4@g62U{)F#`ki|Y3VY>Q~j*wzGjbRB5Rne$G zL%8A3_gzb(<-(>XmQ?;i*dFXVf(zKo#rZH)TJ=F4mkd8@6(*in1G_z|JSuBS8gAog zPLbKgxGT8Vjs>xDmCN?9)HQoBU;ae6I6S1u{V_k;AtVha*E^Ig#E5MGV}VXY)nMiC!F=|jd-wy< z8`nN2b=5BwM&pmn1VR^gig?Llm6w&;+9bjrjJ~aIuX7_YDt1U9x&*8%cKYH(+Ssu} zB{SUr;MG#>U1tFqP3nu?$+L(`io?YH(^mp6aOi|I2MY_bkN zg=m~tONU+RfZ5OK@-o4RBJqo6p%InOuv>p_*%jy}3X}U{7b(z-*k8!1i_)d*Y?*E- zgAt{B1#k+5$2Uzz5fsa=m<<<$JC6ibbz4#96inX5lw9YJjECl?C~D#NdO5*P7s0^9 zhjlhtw{@F>iUWCYAs4SjG%W%a&Sr~bchB=o3in#`9wrd;77mMA>3`9)!Qr z!)p7xG!p4e(ky|YbKc)+W&N!awKQsZw%B+o-_FVlk}`GBQ{{l0`^7X0*G4W=Zfqt| zaJ7aF=sl+Nr+Hs9Q_vRwmM`80paF=m9ZTsjChBt^CX=BeYA{DiWqMXa@dMGFmxNeo zn4c(VED%F(@6uXJ^}9&yd`XaCzQDq99i*Hb)8CO2C1ju$Sk+-_Yc4n0yDogg)`tCy zo%5p=s9WL1f82VOj1VqpP6a$tziRKg2%sI`IWNOrx=Aq*$p!T;E&m&|&FpDpMMuf2 zYeSf)q+PUN@j)+Z)!fj1)VbP9n71Pcau8``TH@;>wb|XafyTAjX@0@9wJGNIVt~zd zi?ghMexCdVhXOoazEc%6Vusi^WlbgEoHrWB3Vdo4>X5PfFB*(prdwF9!S~(djnTJ{ z&6Iu^7UuiGsYeS@A8q_M5GP^lCer@;d-QDeZS0FqKOfI3bZs?|!Diu!{?g|&F+YkU zyQI`0r_KBs6=d zM~%#299+OsrTg2N!3#X}TazYTM`(R7CYYHw<$nF?2s(;ub6ZVsbFa@)>{(aY5Mdno zKPqR)wpUneVyJ$tv||IU#wq5L)$ER__D1 zKZ@)*Sn4C&pFMYIvNB9I-=3R(^so*`*!+*@FA|`GVl5ODpJn2w)uyS^|}$a;V(z9 z6zWbFDjZxHkVUZ42Kg*4qL^tU5@p#0(ihc3;n50MJ6uc*N6}l3>$7=~rH^HXMR@=o z{ou2jM>EplxVvi2vGzqmm_z%zy4(+Y)F6?78hwCMJTaWCjDWXfBn=sG&|)7{L0Dnz zr^_qvAL58Y{$sD%VndQrylQiSgAmx3NSvIi=k_vKmmPi9!q!HNegYFdHr!Wq0O3(( zTh{IVi5dr%11*5f0r0d*pP4x(*zMS7_J{yv)oli^LC+5b2}Ej_Vw6zGx(ca)GY~!_ za>y}u-ah|SpEJIH+fEAB55Pf(9~|#iM6`DsXqB?{q^{-l>Jm{$nnk62Ul&z>1ZVvx zeWw%nm9r5Yl4jLGW&;whD?#`opkg7TPezjtI)GO4W8U0h*fNX3r+6h7en-&wz8On_ zzvcc#cjXO4jfPN@iFJ2Xp5-&{UY_`p>{4BC;qAy@)hUay6+?}p_WaKSouSA$dlzeu z=S8{}P#qijuBHNM1MsK7^{Y__c{5u+Pb`&3TXj32a-lg#zNUIl{_(-?db8{l9O$<+ ztcbTJW1O5^alRH|N^_=F1-O@;5ZLUxc$QjO#yB6j=5tuWvbV?*Fde}ME%#`@28|`i z@Y-t&6aJ$a9v1@=y#mU|zf2sxqFLZ@+Cpu^SLB|hSg{T$a(crlMH9X2=bmRsw3j5G zJDjUO;gk^$-k7^u?zYtZIUApj$#<(zZc{wz(;9^ad7P}m;hL}Q&jjArht40v!S>+j zb0&#LWd*F{W!SJn_KR4u^YOrMB!1{?yTyO6ErEI6aL!%;@bx)>gK8y6W5D3#()B#f zki5Pql?W9r=fc|+GWy~wP!}2uii`=^LD7$GL&uM}XZ`INlM}I<9D>CAG>TI&ZwF&^ zYXJpJ1M{Jy+mwUTg(K`2J3i*z9~H5B3E=eYz9a$h>*Ie{&m&e9PR*JmnXW(M4$df{ zWx`n&LeEjEL*K}?IU5xm%>71#Z3;*~n zS%?)`zl|kJ1Sz3cY^XfOXTCti@99`j+j0csb(2;b1#cI~tt%YkXiV!8>rUR+x>yRj z=QAsLqG3m7j=RAI^pngjl#Y~{#k36mPfV^Geak&lA2;`o9yoDa$D@y1d`4_Om$I|m zO4D*3&H#Tf1`qCh!E7;o3b~6$3XWs!k8XmEWCizDy+$#KBGAZ|eHowU^2%X8kBla$;xN>BAc0G@Jbzm_Dmko6gxYcrQ+a-oc zC>Nm;f`e$IcPO}ht)T1}fK@G83KiN+y)|%(R|wJBN`?owps$VdnJV2W=3vP=)0r&` zp#3Q+D50n~>UqrBd4P@DI7Iab6oz~+MRo=I``Mj7N=lR0_AQA~H@=&KeO1;5=X%@P zcPo}wZE=PQjhamcQy>y8^BZJbyb0blrsqf4^hJ9RgBNx z!85kJ{E2IHK9lJ?0EZO2>jFQdEl& zCV15g1vfr%04I|p#R>2#V}n!)3&{U5j=F3X?@PVd`Td^GBt>a;#3mc$EeDJ3v3Zk1 zbvj3I4&UIay_hd&5Q9Uml+BudE+6{$G|9apQWr*2=5hAF^7g;Opw4MCKMu<@k@+P= z%Hp(7<;Y>N?v)7KKCVe+f5B|*1}p^@eWrqOI(^tWItFEIY$0f)Be4#!!o@ri z7nyxl2IVB6^*sV9fYSmPagnc@`3<6rD5lDf(<3_?j;EChSi*%_#E- zw>G0=Vmvh0aEs|D%xQLP&)yK2%(En)LUnTB9O$>Emb^L(29N@RFgBm9vG9=dYmx@3 zV_(GGnY2LZD>(7LK%HWpUqKI$44)ab19ix-B6uRW=t2RR?e2lN_&!DuwbcpAb z(Y2$;5DB1A82mOOr@IR$^h~pK8OU>}rCC3zQ#8dYsGwT}Boo;=Z;j5mdI5}{$BC2x zP6UX~F6E2o9mwmn3K#eXu(##co)Q7f}ILTTik zq#GfLjN2tozHL*+26CNolb?BHsaO5NFM19-blKiy#ZA9+Ybz*+110T@I%|C`7p1#? zD-iPw1T&)rc7>ZQHp^DQ-Y>?@Vjzbze6PDmlV_wqjKfeuBSYZMP_T&H`AeZ!Urs0 z)0QWkEk&eebFdl+!@6!asH`~}dJ+~TWq#@1;1J6@73t&%xYLNFXx~*9SQ8AUvZrP3 zBFXMHM5p5L3n*`hd3EL_O}8E+SIzQfoTB>Mm88nvU>`s2=aN$`CLpNFG$;_179J>S zG`8^nDXJt27j&r1X+Za&_#bi9LjlGg8#TOOXs0pij&n<`*UzPXahjl>&Lz3Ek_z2> zpQE8l(j7ea0=$P=10SQ6f>4r0z2x&SE~%R71@w?nq#c_vhm7tB+Te_qT@TjFY05dj z=wKSeV4mnMdSs0ZYWM-I$UCiZ!oXnv+lDB_kv62hy)UC2b!Q_g{KqpmYhvY4Mb{1| zf1u-%tB2O$6MJ9ExQf=hA(-Tulo{Ygw^q9ClN~oH0Ab;)vAtGv`2%$|na2O9r4sBh zmJ)E-pGA#jO-x@2?(3D_kFR!;q=(gpP6E773R#~dD$?C+zMsS&zxXWE8xm>E9E~ zg&mFGyDcTzb)l%d>Fz$`bK9|A|J2zL`w!h5S*m14_!LkEc1eR)HuqTTYxnNv9f3b3 z+X&RM%BizvN8xMEMm6V$Igq_8e$oq#_@3=tyoldkxP zVU+JDjcRQZmLRU!5n*oGjP$w<-6*-?_@NKSY{Ws;M|AZae!z#3$$fnngMQ}52y7m zk-D;sI~<@uQf6pw2Z0J@!B$`8g3v`X)YiNmy0=c|JTJJ-WBM~`jyFhwvyv+u-ylAm zLi^FKa|+Y9HuomM9UwlyeDgf){0mY?EsI4w1kiv`%wrztgsMM@wv)=ZFLKZ4Nh)#K zK@lclz)+#1dMExG34)j(-)KGAOlDgszUHb+yB`k13Zx`r^IrYW`$aTR<9LR6J-}RRvch z{f0zAj%2ygQ2z?n3IzzuIUJ{7GWnGg*@|X-Vse`Rb4Kb5Z1g_1b0gb%!^0K~>?Nve z_yG~Dco~I(Y91xHa?0?<%o*)Mh|QN9t7#xgN&=lqM5y;+FH{SynOviVmViMnRjuCh zaKd0{%2DybCDqjdLYRC&jHI2Is=^b$ytxX6KvC{;Qe}bG#}|&UF235HQ`IcaYMHuF z;4jN^&58EnqLL;jncIkeKQPE>13*cuAgn;~e3W2gBeG51S&we)74! z^YSU?5lm1=M_eDob`NH2w#(XR-KuvOcf8R%8J?fAn0i5_6g<;t&GR8nv540QZN~KkS%@htba#qZEtl8C=(<27oMVyp8v1jjA|+z*{CJ4KLCQEYP>zLOr>_x2oOt8Fnl zWnsL_|BI46aPMQ*2=I;QI$yoBiz&W4fy}FP0+G91O=e=R=Q*0&D#w@xpO3mGA;@N~ z31wT5?VNyBoFO>;?DV_HWUFmWdbF|{OS6(uiA_SU8){;zv{@1ps@b=6$M!3h@&x-v zPp}j)rQ6rvZ+-){jTuAUw+tW1 z)DjY4^mFO`=LjxYhUPz%i6rzFzKFgUvh$tq;e(hhV;CO|QQ22G2A}!_7sKl@CtgT1 z7--QGj3bno@8)mke8fM7E-LoMWa#5s*Bam;8D)AUUvd1~*F@=oK-wQo;Z%BS68fqw zkJAv}JQ2asmpDl)%I`#ejKX-DxdhKF(jU|bm8^(Dcv=)re%^k&(>1OOkU+S4dAIVo z5U2;j4)o~K5mFg>w+X{UwuVhWa9CJ9ZR_-jJ)4ZE>Xd^RkM;5p`i8qzLe-9`z{6@H zK*Z&qmc6}?Kh2$>P3rRR-JfWCjNGbyo#Vk*QSnFl`B_8RWMAy^4NU)70}Dq zp6XKW*TlWJO`lRK5f?&$<{^qnuyr9JF!A zZjk+BxU8GVTV0LGHZEjQ2dqP*DVC{VSSN=8elXI)ah@eivQr4XqF=7N--a{efpH7D z&A!-xm<2A(%AyXEms2B$<{a2EdlV?~0m#~=$V?LgDS$bUA(Q-J@az%viQFV}+P2>^ zgFf!Nx%UMDIdLY9T0dIx3wXI-g})A~gjTX5%Yxm?O96cu)W{jw8wIfwGr`cVlXZc@ zlOM)biCK86e6g4`YwQ-GOQ+SzZ%JXDZ+t|<=q$T-*N=3GyCtW^@L^oqyp^Wz*X48-^zX0(1NotQY9g};1R zaPRhd4LJ=&%MDs_>q~XRHL3=q3it7u?c+>WATUxKplF6vn0nsB$fd zPN|9FH%{iSK#aS(!+n5yr9R}A#bV1=87eOqSZ>gql$w;h_OLf2;!FV6nCDcQ{Q<5| zy#bMRm4DoJ)0y4zP-$_apWv5_C=%kN#5r{1pEaJ#A;hFEi& zqB=I<`2z%X0pg$Vf6JDcf$Y>&y$oX&ePT|k<(feS@6MJtVLOTT8s=4@-?|2lWa_)Mqdg~>xv z705SMRm=xlji=Rkl8hHN6IX{^3bE08zEhU>2aXF16#Q=Y9pHJlIQ6DHRoEI#58V%- zbH0V%Oue1mFp$ao=ivGcA9CK#byE3Ieo!%)+a$UPm5FNmgjHhE@>Tf_q*?DNTgM~e z-zk%ojCi#c{(Gn#sC0wbTZ!#l;8vA0lLQ*8SAg1e2Po$_o7dnFKO zSEja6*HI@m(XBpvvi6PHrc#?b{0@zg%D83;(+@|X#437msXwnv7EPU{`B&Vp(XMNY zn*YZ>)g~5&pQtQb@V#xJo5g!p8SegD23ZGMv}PNZTm1r_K??->`IDw<5H`qZPk2>E zPKyys#E++Sgz1W$9`Q1|T1b`;lTU0-j`OI~+ptYOFQ(B#_u4hL1;il`(dd|fz(q^} z6r^NHhJi5Drv8#b?{K-N zNCn6&xL7b&{Whnh62+JF;c1ppv^{vBX_%;wrv}YfI2+y)@V%1LO9V0jp3AKRx~7J6 zab>%G8J!jvwHv)?(E+bho@9LbVIBNn;>nj9X%%tZ^Qs#@sP*niKt{XXcUQXS?&xWl zxJqOc<0ksY7d@Y@eE|C56++7JobTATy;SqrDRH43zwFR>VJ0H>v#Mw|l`89$?Wz3* zlXZZJKDFA)^m`$0mDX7k>_5a2XhcdO!)Hr@(Wvvvd%<*K39y38X-@2+44pxSyh&tb zNR$rq95@BoJO1QbUifHa70&I!R$TX4TlpUaA!ZIq!TX!XHN=;MKtyKrstjKV$$HIR zko#dA7(_d*#`HgqkF^G)682}h_}s@Ti?d3U;+TD$+ zrfN<$gaP-Ey&6%iVbaz=yRJ?XZGLL!#2q};=$Gt(Aj|X5Bc@QY?o~j~^MBa{mdyIE zOmbWgd>NIYNWS+ZvYyV`3Qu(T1etHBdL*Y@FVg}(P7vm_pZm#AmDc)C_~T`=zP^-r zqjzq0H2W!aj(OJ!kY3CUzQS+Qe&}&}7N3XF!zbu%%w;SIxX-LbRWLc|{9+>T6`@GY zcD;Jm;9+KNr4nhh>W0Tm*Pcd+n4AySM z>_7l{K4CsPT`Fd&N9LEe%jIBN3RPPkNY7iG0R3q?L>4QwkEd=Wi(dG<8%!~mBl7}q z0VbIrrtQ2;<7_3n<&TV8FVoK;h7s(ZjN!jSeYp}x79~yNA#fL~bsv#qG!rIZB^818 z*L%BNaiDgvRWP&i-6s-J(ViVYCYygMS(GpLyi&Bhk;aQ~-sn_^()R09^) zM;O4lh%^d7ja550zu}Fas^SAc|KUr)37XS`6M{W|NC;KEm$QHAhg|Z>&i2^mVTD(| z!W>YprYqscJ7zaLhICre8fuA^2>P@YoiP028EKp5%j%%FkZ1Ffxx>DgSm_8yVTT?s zQc?-VNpgV>LXc8Mk<7v7RsVG8SzMA|8S0QHA1bNq2gKH$QFAXcB6;871#h+yfFLNY}Z@aT8Dn1VyCJQ7}DgD=vo0k$$X%_3|_)kMoyL zu4xcj$?`Z3HC^`Y~JggwhmC!8yp^}DfE!Sa(9DeK6ycLg2<}TxVysdHeXBo|jSI zcmn~0d8Xq9b&|J$=O%g&RZ?SSxT?%H8|DgyW>!+AAB(BCv2{ZarP{quW&7cvNKe=JYnu}_n|78V`E!p=b_)|3 z^a6LYSm#;gXRO#Tjl;XZJIMgmCa)!}csI{=v7H<>1!7%K!PEr~+p(?;j_+u1m7bt{ zDZN@1HFNFhKe+KZaq!V);sk!vl5#gS^~Q4|Kr6xl@9mXF`@kYt!@}#e@RVYl?N$8+ zJzoo$i@{DY@vpKW!vWaAa?hq&xf_sr2NiZ=!(Q;5|Tp&l_QU?F4!Z+Gnz zwvQXhRG~St6O#1oF9g|(LCi&n{q5)^J>GP3)e|o4%~Hc`IwY}hnItL>eLwH^UlWca zVMiG5Gij6);OkuC5*|H`6*?;hQ`AYnVz(h#i$No);! z0F+Tw_xBph;OeZt6+Az!W%6PEU&F2lPH{U2AH;M2NDZ$YV)d~JBE)WQ;mok8*CgAk zz?~~e6qXaH4)K63v*cMsTRz$RB<;@X{BV{w-*N8^aoej~Bl4WQ%P>GUvN??8dE@!{ z5~t9WO8HE;uV;HzKX&QmL_aco9KTCe#1G+~X4Bn1TCro&5b-+`BF}U@4(bRzi9| z&h&TZHC3NQx1@EY6bX}*wi~Cv%nOhAb@sPr`DS(x5I6!T05t8l@mTLC*wru=(Zr4{ zcr|$2p=&}tv2L82(!y#3Oc)MWQM~IH$9rZ*Bf4>A!jIF7nWC6Wjm-iO9kFL9>>*n! zhs5)#x{=0r7KluwK-=G;2-^iEq@H)G7J;gw+ScJrO`oYF@|h2rXC3lRwh?;aVTMTY z8Fs+relIp!RMq8gCD2Doma{fl?Z-{zoJYufn8LN@Z_6wWD&?-F8HR)96qfrkH}Z#* z3heDTcD4rY__pQ=y(LEm$h?D=_uPvb71+I4j3>*TmF{Tu)B3?z1L&p#A_HU|jaYp9apqXktQht zz71@tv&wRJVvg%B_gmYgfKhWAU)>?YFO@>7`n5tO75ir%gF&P7Um4M948G=SJ7_%b zj>xh__tN~QWd*CA)hZsbyl8Nj(gN5)%M-Sgp=--7e%P-{>DsaH*_8SQlc$b4(+4?~2c4mv?i#oSo z593UrlPmtgZT%_EvlbwNNX`tA-J!PUZGde#v<6K!zVYOcfABaw&h8jsTpAPx7!;KN z4&b$3TUH#0fSA3!mOcCW0G^<2HNKmDy?|5{-}z*3QW)qx2YV4EyqDc8CRWwu@q+%I zh)XrX0dbsp4mRNSto>aY<~g@S*aS@P;s#`(mXIet3vge#-8QkU9(nW-s&#wfW@!V; zBwcd6-}KB(2P#A4k=N0Hco{a-NJtSJr01^@s8UCI1@6;Alsho7 zw4000(RMJPRXDufX^Xt-gBT+O%Rpt3r&aTP6%{Z}QW&Lcr-@G>Qy0Zp(VpQf|AfF6 z7qZ5U>J5NxU+;ccgh+)3EKnbcm>?qy6W5MmH~A)irZGCJ;ABjYnWG=<*k9;yQN0Ohg3_%nKS1g0SM>Gvg% z!1BijyCU&h>jSkfuqEs5_}9@}7>k#! zYW<_!9uF-L0wd~a74uT7%o)gI95twR*c}_(IsB%fBQQ>S6;{1xn#~4L__c7zpV&C- zxTyxSz}~O>hxW$|>@W5axKH$-+W>pb8{NVaUOA_r_|$hFw`#1(vkTe$yT+F4Du*`na4MW#muP{(w= zYedFUY5>gV>8b=Z5=~e(fY-?GGQtSYqXbPoR;P4d7wNdQ)#knZ0_Q`m163a67D1EsVTX=Th`^rM;3x|-n=ryyoY|i$C^Tgd8hHgCK@d6r zL=<^E(13fi;tw8Fltmu>2rc1Ikg`e4k_ec443|0|xkbfa6GzDO4@t=|YXXKe6YlC~ zj5#}xf}=DiM8MUx2RM_K#P7@t+{endbriZt?v zT58YpdNw-}X1nZHjsu^;O`?xLnZu?>A|P6L2N2sL`(Xe;&#-6;UBXW++i2P)EywSn zax6x-b#NakD5f=pfELauPje`b6OjG~Wi&g!+FD7AY@0KC4qvo|8(xqYkai0LyZEB4 zU_khbSVKr|_3lNqTXTCToB7<-A3D_M-s{>eCOgdLG%~&RHY`AUh^?#(;!pD3b-~YxxDX3lTCF8LmM0jMpf_P5SVm-T|9i&3n*p`57 zCPkuuUfzvaUu{evh#zE9@jTnQy_#++NvCK_FeuE&YCxMU7fp2LvFbkSX9qt)6Gu#V zr?T?B8f>DCRF@vw06}(Z3kUViN#O_~8t}WaOH4ZL{J1KXP#9mmxLVdLA~JEp9U|X1 zt_Pw~GH;%W*s_oPF(5&&nTveQ@Ph1dX;dJduyJCa&OVi#+dE$J(`fjt)717Bb&X4L z&XDiT&!utJo1N+BXCWmXqq*Mn%w#-%B>8=rIv^5>!8}4t_TAp&QW%~i>iWT2mvjZ+ ze{Jc_kv$M5=PBzKYVc6?FvUd3;AIyYGXB!4s z*oDYYQ~m9z-@DfxtbPFnxuCvsJs;()t2ZA0$cWDt=vY@1EEDkuB)%cu359T8L}Nui zA{rT|BjXIJ<@gh17TalIkQWTWDJ{n+e=xl-E1{S0jSo_&&AtFzSbLtK-yn636yg)o zX_b~s#>0c+66Tys5aC#Y@f7S>omc?eQ5Pr8{Sbi#}=lHv2l^Lt;CX8gRi1=iuasgZH0E8b^uZG6PfE4&0OE z%WpPNU9R(Q>}jZA!!cSnX~~wK9ys8A+zYDDKGC$y#>I6jmah zdKwnqR5bNgaId(slKwXG%m?-p<3M&O*V(;`yuo4jx@FNedIKvB&=DAX3mRqSkz?au zsuj=^kFx5P_f=s6w-I(Wc%`Nfu)58{L9i;a6pJz35dm)I51DY4c?|Q4ZC@>;NSKfw zP14gb`c+M!*D%Vlzlb`PRsy7a(+nm2M9pZLUTh!hm#0iUizmT>3MK=6ix{m8W=K&U zNr$(5GuamQl+n)ba~)fWNpUVdyD5h*5^Ae**nWFKaED-e7fEGW`CNJS`HEE!w}xQy zseq9&D#X+fOqMRbgP6nBrI$>%Zt7N}-Vc5yR#iw;5Ms;53#*ZSu~FWW@AM1xsoIEZ zd;7*M4yvSF#%&``8+-AL5}LGHX+9`2*db#4clP-RBPiN)tw3bkLSC9KS1f|`+cbZ} zclE|+ZvZ@EJ-DoZF-bktAjWTEOH~@J=Qn*nPf=+{P#T&6-D`c22@Dq6&hO1>b8c7F z|Fr{kz|?Rd*2=2v4O?g2hlqo9wUb+qPCfm)V{`65z=iXg-;unK}zMmmZ10f z+iKaCiTZT^1|a)UxYrP@EB1>6-TQM+&Pw>_$v0j%xVw6OoYk**q-hRCI^X< zpPksAN*xC)ru6TT5 zz&OA5emlO$jI}xmq6JXJ}972p)9$qLlN_`06^KnUWPP>@y~eP)zUP z2}6L-xVuaEO-c1%uQd-{jk>&CEGP?$-C9r!P7$D>$2_H!C#TDq0_%(ZIp;sCa5Ze@ zj+uQL=VmLLE|30at~{V>F7mqmy3hy3>AEetXPdje$+@fyK8Cmjfj8ABZZWL>CLuqy zMFRVc{X__Qxl^%y5Fl#FM0kqDP3Xdc`hfYEPY?wckvQhpLiC*_zZWw6zwNzs(E+C` zI@Xz~;bY+4)cYZvFg-4mcMvyfzupIaK0u2Z=ou%?_`)6XlfE(kojeCn{(f81SnMBJ z`TylPmlNbyrLe+`Kq*vs&Yw=fff|L)HDWP;9UP>*sB2|?H%M@G$Bx6du=@lC&aclv zwpeX0`nW7Slt&Ay(J zw}mWLP+QP1uZgKGi0ZoMsAgZJ<>AlOAM*34s+_i&io`ytoOkkQ@YRpo2-qN>|oFL)C2%+8}4G0?qC#b5s*bqurgHw}j-hFf4L)Ntl~ zNhz=R|96X5tEv{Vxu4nNr3bGp`3^f_^E)xByI-i?+fy8^cz;qNWFNs`H@D27Nu4^_ ztzAMA*~eaQcx^24j~l)LZ=g%Q&qAzaTP~c?J&aBywyV_P`@8lbV0=E{cUtd~15ma%xWpCxdqILUDl}s4NKvq+^|8E~II*LZ>7{$Vsar7XLq*ocgprZ!Vtrnx< zDYQOmEsx)kpf|4|928II;J1NLcT>ZTyG(x*N1hfKm@Y4*t=H8=z`xzrHd^S}Je1=q z7Xs7OwROj8tULatuuUuc{TBym6~QN;-Y0uk6_CgeC0j0d@1i2OpD615AV6sIhq~If z5dlHDihOylKzb*z9!35A8TRN)yT^8Df4TH~_3@+?$OJ~{tWyg+!V|iy`f6m9a~*z= z=i??Pft;lM=)EIbvphlEQ+ob(b`C4dys*1l39MHJfIs2z#*7V z5t657Dr*21PLh-=)23%6Kw5HCIM~FV@RMo;=<1}7XkNs% zV0dAh0vCbFdxCJoe+(4o!xzD!mXMh~seaRuZ&1J3n`DH-Ug<9XE6PSz@`3W|1E zmQvN!W-2M^DPBxne$FuzBhs7l{0KU)nI>p63{SeO>5Rs$&zN4pI@BZ0p%&MZ$3jxA zL8gqx5rC`~i5}tUL|8W;s`dmgETW!up>5>x12}vn`bq0X8t}`|OR+eO^=PewzdB48 zAJI`(Tr`RVHR`^;0}gd>nU`MdTL&@BT9`^A$hFs~8wZ*>Hmdx@o#}1YCU@g1(e}*38Iz4N=WFKFw9mtic zWCq%eF?17rb8qXXZ&+D57CP6p7iFBUaD1&%2=JkL-TPRrToPXgo4Om+N)>l~Y~tCQ zw}@sB{bB5c`qeO|6>IZ9HWh7vU(~ExMq3%w0ga#tPYsAD8$p_C{kr_I7G6qqaCNvb z6+0ikDW@Gw@0y&zXi-K1j;ibg6Lh-`HrC7vo9k}1LNx=&k5o1K0d+#x^o3UL4vqq) zX7@M9m-`r*pGw{=$+(X>z~nUQAVe@G35tEJ(E6ZqOaQ^1#{YqD$JSE`nmq!+Vs7}( z4wkVjB+DtMB9aiqLvwS;f9Ae4L!yevUVa37<>WC5Wq59f99r?ZrPQjIF(b&>YqI5$ zZYp#$%iD~dT*z?y2bsY1Aze$hd|*wSen)bx7!c-Eb@9E2aFeJhIUD44Kgk}N&UDbw z#X1gb``G{7zT_^zE-H<9yWclrF0QTt+m+nv^OllXX52s?Irm@$uq3E6cw8eYS-7E+ z<(&o`$dxgM2eeDOM(5;N&({J7P>$Gn$>c7Lw97PoUEi@*!=ZkH_O?2UBMuhDrI@CF zIF4N56xqPkj-ZL ze6aq(v7WbG95|6P(rSF?=pFF&tM-BS zilmG-;C!}$PeVE83M6hg1aThZXYT2EAnZx#!>MIPN#!CiNP~Fp#JbA(S3|kPvu=au zw)`wle?3oUUrjty^*VpLbTD6%@dqnpoj-?LCWt%ktqT8WUIrXg1Z>yuoWY?;ULWe4 z%M3W0S^VHtn3Yu{oxE)>?$V*Ifcgy31Zj4ny3Q;dF|WUijl#X4jgbAP_Pm-L&{$q( z{!#2&$Y8O&GHCCW??p4XGSjY~YM^LLqXy-v!1N6;_TC zhv%jwRgTJkjpFfr@^v#%y*HU3&zeAVb&eGv(G^3<>*^Qv;bpQWnV#7=AeKLWP4~kO z?8aiu;AxQLwb{OGP+|!kfiU7w+&#n8r&HOf{(FeyD(4Kn;apCg)^5NuD-97CA%O;8 zr!)zx&~TrL;&lC5AP<24hs(jk2*7F{Ed&*3Q_#2+$T{On|46nVtq4Q^{~QaxA0pFZ z;v-ro--W3hfk)VMq0{E`fC{x=^i&x~qM%lH=cH^tORBF(6Q>_hEPe86Y8+dFXtw+QWUSJkWzu@dW+N02s%ExCbs|#=fV^dU*@wcW~l>_52d)+Ntkff7PGlov5FcNsMsFA8k%*)D3=#Jdw%B9 z3C85a(fiq>73NC2q<6GKlTvDUM!B) zrPfOF7Y4x&Cvl`TK`D_m>mrIew8%pFk`8R6bdT@1F8nE9()(DmrINcx+DsAh zC4(R+$$wr29@N{P);=wwj9KP^ou=2aOXa7vV6f*!n^W^pc2#Tak|7b|D|L6LCEF?W zaCsM0dr^j$=;|FCYmJM)FT?58agZaC@+V!Dl4)|hh^3ZmKK<-2eI}W`FwLaR8yBCg z@D*$zh7>z4Lwz2WZoufoN>X}C{1evpFZd2Q=BZ~&J~txw@(sZ_7-AN;L%N>0_b75} zE1?oxlPs!15w1vCr33~XFIbK~u@AQ?^&f z_V9>s(zU)HUVHt4e-nvHDRXp9=Aj$J#3U-d`$z_qs_AcyNLOk;Z;#=S_=}`O_VVFW zq^PzX?o)MygzgAviyZPFq_y07go~?S^154`U z(6mdQLflfFlTpc099j)ajwhxZbl(jafsY}=yAUO~bJiTyv4F%*W^befM|5!}K&Hzb zTe>5VGRYrfMk@g|Wr^MtKcnsW4UR>MKq*f(zjOy}7TMvxsG1hKc8=G656ID~p4}vO z7pg1v6dWpzvVSwO6r!qF8C{#pdt>{WRFYamh>Qr7m$o%2RS34$tDhl8@|l$BYnZ_( z5Ph>Q*6B)&JH-9& zsVq+LX)=p7Gi7>J#Qq(h+Z2DaBzh*M!aE znP0Wf!k|cnDRSF_WnggKf(z8a*RzqyBD^Z9g8 z-;(MsfK!J~Py+qLHfZ;yM9=#sFs>Bl#r_+q!Vt-&X^gPbLo2cmwf2y_F;}q#OYQsn z6wOnAowSXOYaO74?k6E>9~DwKP-T@H^*c@i1pDpfKglZUWY&tC(XMkHjmQ%@4@G8C zMV?(ei5c4XiN6^QX-ahm?Y2EU)`*aa; zZeOyOgK$A)t%!mewe4f=8mw1|u+r(bnX8esnq+f*IoxKoIuM!dmn}ImW|R_S66~$C zx%_$uW1sZpo||m)Rel1Nxmq11zZ6*Y!xoXtLJ`f#DjY}xgzQR0P*u@&=HlH*StueLvn~W0kooRZ>s_4R)_YS&GrwfMx`S{~d1E=aERwPHY zrZ@A#&)UgUKcLrfhDc|NMzfgOTabKnJdxK*>ZZyusjwh#mR7hmz&Km#>L_A3zB z$Bm*Te2Q{euzoH-0HkwP@1437?aZ(Cx?Z`kZ~qgOuo6@;b6Q?h#^bS`Ckjvtat&Pw zEg|KnIw8EGWq-#Ntk0yfLv&r_9(9IlEuNs13$94RLAD(N#w`4PF%44Aq=DtKfg?n| zqObhd@d-sf*XP?El*qy|ig4z^-rsizjB+7`BR}m#O^B_uuK_J|=WA08C8#FJ);M8N z|KVrH=*D!;j%7T7LI;{QsX}eiLkgz;uLXy{{!LLx!<08(+gCa5!^W*HifXi4#L@Gf zC=SYX3IT-$n=%fQj#o6-xgR|&jX^^`3^FHUgC^uKH>PBFNyV36in1+jQX zcd5Ti5$JJ-*m}$2{a?#D^;g_6^aC4!x|JAxfZ7beDt+Ax3)#+l#7oFFs3~wVGq51? zR$=u8_^w8P8jLyUl(xO2M?Tj3`M}3m7nXbw4wcbG$ntzh*Y-{ePzH>!pU3&D&!_(c zRq`98!+|#Zby3iWYjOg*PQdv?)T_96y^%c%3BGcItQSl)&MkMuf{0t3kf?MM-%14_&m;ZTGr?`tJ8~%P7QR^S9 zftP6#_zK(|Zug(ykcUcLWODB>;_Z-)(z)Q2u|Cdbr%k>!KwN)wV@8goCv-mK!xE0T zQv08<#Z2&CV|js<5vi?{dAsT^ zOe#i-Il&kQFUz74i%sJ7ZHk(nWL$u?+3);uYW1G;T!pEj{}Jz_@e$6Ag{%^6UIexERh&lZ_!f^)wRyD@_D$OUGUv64 z)ML;|Y>RphDiGDZ4q2)V;=$YpE?F`R`Xclm5w*VPqp}&)gZ*hcqG_5VYpLz6tX0eF zcNZJeAt-BTH^YlTyW8KV+#(wEfQFU$PGumkhlc6^C@@O9hOCwhd_JJn83!aHe%79M`y^{HE|LlT0qZZq zxlEpL6=Tt5vs~&xR2|yF-C#viNu|4-FrLgoC(g4u0?YVkGOV0pyQQb&pDL{%z@A?Z z9z-AtS>P=8+1hN-r6D168V$VySU|*VnK@3e@LXJDd--xTWpU+&Gj672|j*0^6P_2)G0QsR~2r3s_3A(82&+ zaNkR?zcYW_L@n0@>m53a#3I-DItNTC+D1))TEf{ezE zLD@!(OAQPUvN@&F5?O``{XO_P4>sy&>Y(g8Yy38DkMQppP081OB4NkCyd zP|CffawCd1_2qMccHt(Bq-^gwd7Dib(trG!d?>tKGla|JW%904WkNr0if?}gy?Imu zO%FOVXCUem|HoBi8TJ1&;TS$>fPPo|^(|I#E@n%%w-OZC?F~rH9%1A0iDIUj&$uC$AAnClgBj>- zZt}nC>LtfrS-)V(4zh~a@HOG17fOa11j9wXSZlOJInQ;@fz5ZeUOvyNfkyK%L6TSF zWI`;P;?3?5xcc@jzBZ?D2G5*bXL(IX=)d>Z@Xr-O@=^R91T|TAj0Q}dRq>!599{fkLqly<;?U2NMrtJcn^zLwxYL_OA}q^QvvbLo zu#cXVENa5^V)lz$c}#@<#%eP}g22GZllami*j%ZyHai-U1G?S5y-=bAU9z`zxhb=NdR^&bUg; m$Mw=+N!S(Fk`V+7J3G;vrP=quX4Cuz0UDiBy}EpyUsqc|!TM1E From fb08ca74593254813c31e3b549fb3bb78b85c29a Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Wed, 12 Oct 2016 09:32:57 -0700 Subject: [PATCH 3/3] Remove leftover pdb Change-Id: I5e259a0fe1864bcd65deb4cdeedb0d938b218ae4 --- vision/cloud-client/quickstart.py | 1 - 1 file changed, 1 deletion(-) diff --git a/vision/cloud-client/quickstart.py b/vision/cloud-client/quickstart.py index c7a7ad9a556..0453587fe9e 100644 --- a/vision/cloud-client/quickstart.py +++ b/vision/cloud-client/quickstart.py @@ -34,7 +34,6 @@ def run_quickstart(): # Loads the image into memory with io.open(file_name, 'rb') as image_file: content = image_file.read() - import pdb; pdb.set_trace() image = vision_client.image( content=content)