From 44e74be86e4e67cc85fb743209c6c62e626125a9 Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Thu, 5 Feb 2026 11:18:03 -0500 Subject: [PATCH 1/5] feat(gkerecommender): generate library --- external/googleapis/update_libraries.sh | 1 + generator/generator_config.textproto | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/external/googleapis/update_libraries.sh b/external/googleapis/update_libraries.sh index 7efb27865b864..7c220f0e4cf63 100755 --- a/external/googleapis/update_libraries.sh +++ b/external/googleapis/update_libraries.sh @@ -166,6 +166,7 @@ declare -A -r LIBRARIES=( "@com_google_googleapis//google/cloud/gkebackup/v1:gkebackup_cc_grpc" )" ["gkeconnect"]="@com_google_googleapis//google/cloud/gkeconnect/gateway/v1:gateway_cc_grpc" + ["gkerecommender"]="@com_google_googleapis//google/cloud/gkerecommender/v1:gkerecommender_cc_grpc" ["gkehub"]="$( printf ",%s" \ "@com_google_googleapis//google/cloud/gkehub/v1:gkehub_cc_grpc" \ diff --git a/generator/generator_config.textproto b/generator/generator_config.textproto index bbbbfb69b3161..347d19edbc7fd 100644 --- a/generator/generator_config.textproto +++ b/generator/generator_config.textproto @@ -2673,6 +2673,14 @@ service { endpoint_location_style: LOCATION_DEPENDENT } +# GKE Recommender +service { + service_proto_path: "google/cloud/gkerecommender/v1/gkerecommender.proto" + product_path: "google/cloud/gkerecommender/v1" + initial_copyright_year: "2026" + retryable_status_codes: ["kUnavailable"] +} + # IAM service { service_proto_path: "google/iam/credentials/v1/iamcredentials.proto" From 05798197ea54c588301bfc04bc3a8fd63dd1cf0b Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Thu, 5 Feb 2026 11:41:21 -0500 Subject: [PATCH 2/5] Run generators and format their outputs --- README.md | 3 + ci/etc/expected_install_directories | 6 + .../googleapis/protodeps/gkerecommender.deps | 5 + .../googleapis/protolists/gkerecommender.list | 1 + google/cloud/gkerecommender/BUILD.bazel | 31 ++ google/cloud/gkerecommender/CMakeLists.txt | 36 ++ google/cloud/gkerecommender/README.md | 61 +++ .../doc/environment-variables.dox | 49 +++ google/cloud/gkerecommender/doc/main.dox | 48 +++ google/cloud/gkerecommender/doc/options.dox | 10 + .../doc/override-authentication.dox | 35 ++ .../gkerecommender/doc/override-endpoint.dox | 25 ++ .../doc/override-retry-policies.dox | 104 ++++++ .../doc/override-universe-domain.dox | 24 ++ .../cloud/gkerecommender/quickstart/.bazelrc | 30 ++ .../gkerecommender/quickstart/BUILD.bazel | 25 ++ .../gkerecommender/quickstart/CMakeLists.txt | 32 ++ .../cloud/gkerecommender/quickstart/Makefile | 35 ++ .../cloud/gkerecommender/quickstart/README.md | 135 +++++++ .../gkerecommender/quickstart/WORKSPACE.bazel | 53 +++ .../gkerecommender/quickstart/quickstart.cc | 42 +++ .../gkerecommender/v1/.repo-metadata.json | 14 + .../v1/gke_inference_quickstart_client.cc | 85 +++++ .../v1/gke_inference_quickstart_client.h | 347 ++++++++++++++++++ .../v1/gke_inference_quickstart_connection.cc | 107 ++++++ .../v1/gke_inference_quickstart_connection.h | 249 +++++++++++++ ...uickstart_connection_idempotency_policy.cc | 82 +++++ ...quickstart_connection_idempotency_policy.h | 70 ++++ .../v1/gke_inference_quickstart_options.h | 77 ++++ ...gke_inference_quickstart_auth_decorator.cc | 95 +++++ .../gke_inference_quickstart_auth_decorator.h | 85 +++++ ...ke_inference_quickstart_connection_impl.cc | 244 ++++++++++++ ...gke_inference_quickstart_connection_impl.h | 88 +++++ ..._inference_quickstart_logging_decorator.cc | 124 +++++++ ...e_inference_quickstart_logging_decorator.h | 85 +++++ ...inference_quickstart_metadata_decorator.cc | 115 ++++++ ..._inference_quickstart_metadata_decorator.h | 91 +++++ ...ke_inference_quickstart_option_defaults.cc | 72 ++++ ...gke_inference_quickstart_option_defaults.h | 37 ++ .../gke_inference_quickstart_retry_traits.h | 43 +++ .../gke_inference_quickstart_sources.cc | 32 ++ .../internal/gke_inference_quickstart_stub.cc | 114 ++++++ .../internal/gke_inference_quickstart_stub.h | 129 +++++++ .../gke_inference_quickstart_stub_factory.cc | 74 ++++ .../gke_inference_quickstart_stub_factory.h | 43 +++ ...inference_quickstart_tracing_connection.cc | 123 +++++++ ..._inference_quickstart_tracing_connection.h | 89 +++++ .../gke_inference_quickstart_tracing_stub.cc | 132 +++++++ .../gke_inference_quickstart_tracing_stub.h | 99 +++++ ...mock_gke_inference_quickstart_connection.h | 92 +++++ ...gke_inference_quickstart_client_samples.cc | 192 ++++++++++ 51 files changed, 4019 insertions(+) create mode 100644 external/googleapis/protodeps/gkerecommender.deps create mode 100644 external/googleapis/protolists/gkerecommender.list create mode 100644 google/cloud/gkerecommender/BUILD.bazel create mode 100644 google/cloud/gkerecommender/CMakeLists.txt create mode 100644 google/cloud/gkerecommender/README.md create mode 100644 google/cloud/gkerecommender/doc/environment-variables.dox create mode 100644 google/cloud/gkerecommender/doc/main.dox create mode 100644 google/cloud/gkerecommender/doc/options.dox create mode 100644 google/cloud/gkerecommender/doc/override-authentication.dox create mode 100644 google/cloud/gkerecommender/doc/override-endpoint.dox create mode 100644 google/cloud/gkerecommender/doc/override-retry-policies.dox create mode 100644 google/cloud/gkerecommender/doc/override-universe-domain.dox create mode 100644 google/cloud/gkerecommender/quickstart/.bazelrc create mode 100644 google/cloud/gkerecommender/quickstart/BUILD.bazel create mode 100644 google/cloud/gkerecommender/quickstart/CMakeLists.txt create mode 100644 google/cloud/gkerecommender/quickstart/Makefile create mode 100644 google/cloud/gkerecommender/quickstart/README.md create mode 100644 google/cloud/gkerecommender/quickstart/WORKSPACE.bazel create mode 100644 google/cloud/gkerecommender/quickstart/quickstart.cc create mode 100644 google/cloud/gkerecommender/v1/.repo-metadata.json create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_client.cc create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.cc create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.cc create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h create mode 100644 google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_retry_traits.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_sources.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.h create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.cc create mode 100644 google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.h create mode 100644 google/cloud/gkerecommender/v1/mocks/mock_gke_inference_quickstart_connection.h create mode 100644 google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc diff --git a/README.md b/README.md index 9914634f5fcb0..53e817c9b1c90 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,9 @@ See each library's `README.md` file for more information about: - [Anthos Multi-Cloud API](google/cloud/gkemulticloud/README.md) [[quickstart]](google/cloud/gkemulticloud/quickstart/README.md) [[reference]](https://cloud.google.com/cpp/docs/reference/gkemulticloud/latest) +- [GKE Recommender API](google/cloud/gkerecommender/README.md) + [[quickstart]](google/cloud/gkerecommender/quickstart/README.md) + [[reference]](https://cloud.google.com/cpp/docs/reference/gkerecommender/latest) - [Google Cloud IAM](google/cloud/iam/README.md) [[quickstart]](google/cloud/iam/quickstart/README.md) [[reference]](https://cloud.google.com/cpp/docs/reference/iam/latest) diff --git a/ci/etc/expected_install_directories b/ci/etc/expected_install_directories index 7fa97fa28ce97..d52deb171f7d6 100644 --- a/ci/etc/expected_install_directories +++ b/ci/etc/expected_install_directories @@ -822,6 +822,10 @@ ./include/google/cloud/gkemulticloud/v1 ./include/google/cloud/gkemulticloud/v1/internal ./include/google/cloud/gkemulticloud/v1/mocks +./include/google/cloud/gkerecommender +./include/google/cloud/gkerecommender/v1 +./include/google/cloud/gkerecommender/v1/internal +./include/google/cloud/gkerecommender/v1/mocks ./include/google/cloud/iam ./include/google/cloud/iam/admin ./include/google/cloud/iam/admin/v1 @@ -1480,6 +1484,8 @@ ./lib64/cmake/google_cloud_cpp_gkehub_mocks ./lib64/cmake/google_cloud_cpp_gkemulticloud ./lib64/cmake/google_cloud_cpp_gkemulticloud_mocks +./lib64/cmake/google_cloud_cpp_gkerecommender +./lib64/cmake/google_cloud_cpp_gkerecommender_mocks ./lib64/cmake/google_cloud_cpp_iam ./lib64/cmake/google_cloud_cpp_iam_mocks ./lib64/cmake/google_cloud_cpp_iap diff --git a/external/googleapis/protodeps/gkerecommender.deps b/external/googleapis/protodeps/gkerecommender.deps new file mode 100644 index 0000000000000..5d260a00b6f04 --- /dev/null +++ b/external/googleapis/protodeps/gkerecommender.deps @@ -0,0 +1,5 @@ +@com_google_googleapis//google/api:annotations_proto +@com_google_googleapis//google/api:client_proto +@com_google_googleapis//google/api:field_behavior_proto +@com_google_googleapis//google/api:http_proto +@com_google_googleapis//google/api:launch_stage_proto diff --git a/external/googleapis/protolists/gkerecommender.list b/external/googleapis/protolists/gkerecommender.list new file mode 100644 index 0000000000000..6bd3721910a64 --- /dev/null +++ b/external/googleapis/protolists/gkerecommender.list @@ -0,0 +1 @@ +@com_google_googleapis//google/cloud/gkerecommender/v1:gkerecommender.proto diff --git a/google/cloud/gkerecommender/BUILD.bazel b/google/cloud/gkerecommender/BUILD.bazel new file mode 100644 index 0000000000000..eea417d306c8d --- /dev/null +++ b/google/cloud/gkerecommender/BUILD.bazel @@ -0,0 +1,31 @@ +# 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. + +load("//bazel:gapic.bzl", "cc_gapic_library") + +package(default_visibility = ["//visibility:private"]) + +licenses(["notice"]) # Apache 2.0 + +service_dirs = ["v1/"] + +googleapis_deps = [ + "@com_google_googleapis//google/cloud/gkerecommender/v1:gkerecommender_cc_grpc", +] + +cc_gapic_library( + name = "gkerecommender", + googleapis_deps = googleapis_deps, + service_dirs = service_dirs, +) diff --git a/google/cloud/gkerecommender/CMakeLists.txt b/google/cloud/gkerecommender/CMakeLists.txt new file mode 100644 index 0000000000000..31d0b40fd3ca1 --- /dev/null +++ b/google/cloud/gkerecommender/CMakeLists.txt @@ -0,0 +1,36 @@ +# ~~~ +# 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. +# ~~~ + +include(GoogleCloudCppLibrary) + +google_cloud_cpp_add_gapic_library(gkerecommender "GKE Recommender API" + SERVICE_DIRS "v1/") + +if (BUILD_TESTING AND GOOGLE_CLOUD_CPP_ENABLE_CXX_EXCEPTIONS) + add_executable(gkerecommender_quickstart "quickstart/quickstart.cc") + target_link_libraries(gkerecommender_quickstart + PRIVATE google-cloud-cpp::gkerecommender) + google_cloud_cpp_add_common_options(gkerecommender_quickstart) + add_test( + NAME gkerecommender_quickstart + COMMAND + cmake -P "${PROJECT_SOURCE_DIR}/cmake/quickstart-runner.cmake" + $ GOOGLE_CLOUD_PROJECT + GOOGLE_CLOUD_CPP_TEST_REGION # EDIT HERE + ) + set_tests_properties(gkerecommender_quickstart + PROPERTIES LABELS "integration-test;quickstart") +endif () diff --git a/google/cloud/gkerecommender/README.md b/google/cloud/gkerecommender/README.md new file mode 100644 index 0000000000000..eaa43ebaf2e83 --- /dev/null +++ b/google/cloud/gkerecommender/README.md @@ -0,0 +1,61 @@ +# GKE Recommender API C++ Client Library + +This directory contains an idiomatic C++ client library for the +[GKE Recommender API][cloud-service-docs]. + +GKE Recommender API + +While this library is **GA**, please note that the Google Cloud C++ client +libraries do **not** follow [Semantic Versioning](https://semver.org/). + +## Quickstart + +The [quickstart/](quickstart/README.md) directory contains a minimal environment +to get started using this client library in a larger project. The following +"Hello World" program is used in this quickstart, and should give you a taste of +this library. + + + +```cc +#include "google/cloud/gkerecommender/v1/ EDIT HERE _client.h" +#include "google/cloud/location.h" +#include + +int main(int argc, char* argv[]) try { + if (argc != 3) { + std::cerr << "Usage: " << argv[0] << " project-id location-id\n"; + return 1; + } + + auto const location = google::cloud::Location(argv[1], argv[2]); + + namespace gkerecommender = ::google::cloud::gkerecommender_v1; + auto client = gkerecommender::ServiceClient( + gkerecommender::MakeServiceConnection()); // EDIT HERE + + for (auto r : client.List /*EDIT HERE*/ (location.FullName())) { + if (!r) throw std::move(r).status(); + std::cout << r->DebugString() << "\n"; + } + + return 0; +} catch (google::cloud::Status const& status) { + std::cerr << "google::cloud::Status thrown: " << status << "\n"; + return 1; +} +``` + + + +## More Information + +- Official documentation about the [GKE Recommender API][cloud-service-docs] + service +- [Reference doxygen documentation][doxygen-link] for each release of this + client library +- Detailed header comments in our [public `.h`][source-link] files + +[cloud-service-docs]: https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference-quickstart +[doxygen-link]: https://cloud.google.com/cpp/docs/reference/gkerecommender/latest/ +[source-link]: https://github.com/googleapis/google-cloud-cpp/tree/main/google/cloud/gkerecommender diff --git a/google/cloud/gkerecommender/doc/environment-variables.dox b/google/cloud/gkerecommender/doc/environment-variables.dox new file mode 100644 index 0000000000000..02d57a44c4b7c --- /dev/null +++ b/google/cloud/gkerecommender/doc/environment-variables.dox @@ -0,0 +1,49 @@ +/*! +@page gkerecommender-env Environment Variables + +A number of environment variables can be used to configure the behavior of +the library. There are also functions to configure this behavior in code. The +environment variables are convenient when troubleshooting problems. + +@section gkerecommender-env-endpoint Endpoint Overrides + + + +- `GOOGLE_CLOUD_CPP_GKE_INFERENCE_QUICKSTART_ENDPOINT=...` overrides the + `EndpointOption` (which defaults to "gkerecommender.googleapis.com") + used by `MakeGkeInferenceQuickstartConnection()`. + + + +@see google::cloud::EndpointOption + +@section gkerecommender-env-logging Logging + +`GOOGLE_CLOUD_CPP_ENABLE_TRACING=rpc`: turns on tracing for most gRPC +calls. The library injects an additional Stub decorator that prints each gRPC +request and response. Unless you have configured your own logging backend, +you should also set `GOOGLE_CLOUD_CPP_ENABLE_CLOG` to produce any output on +the program's console. + +@see google::cloud::LoggingComponentsOption + +`GOOGLE_CLOUD_CPP_TRACING_OPTIONS=...`: modifies the behavior of gRPC tracing, +including whether messages will be output on multiple lines, or whether +string/bytes fields will be truncated. + +@see google::cloud::GrpcTracingOptionsOption + +`GOOGLE_CLOUD_CPP_ENABLE_CLOG=yes`: turns on logging in the library, basically +the library always "logs" but the logging infrastructure has no backend to +actually print anything until the application sets a backend or they set this +environment variable. + +@see google::cloud::LogBackend +@see google::cloud::LogSink + +@section gkerecommender-env-project Setting the Default Project + +`GOOGLE_CLOUD_PROJECT=...`: is used in examples and integration tests to +configure the GCP project. This has no effect in the library. + +*/ diff --git a/google/cloud/gkerecommender/doc/main.dox b/google/cloud/gkerecommender/doc/main.dox new file mode 100644 index 0000000000000..ee7fa23366e44 --- /dev/null +++ b/google/cloud/gkerecommender/doc/main.dox @@ -0,0 +1,48 @@ +/*! + +@mainpage GKE Recommender API C++ Client Library + +An idiomatic C++ client library for the [GKE Recommender API][cloud-service-docs]. + +GKE Recommender API + +While this library is **GA**, please note that the Google Cloud C++ client libraries do **not** follow +[Semantic Versioning](https://semver.org/). + +@tableofcontents{HTML:2} + +## Quickstart + +The following shows the code that you'll run in the +`google/cloud/gkerecommender/quickstart/` directory, +which should give you a taste of the GKE Recommender API C++ client library API. + +@snippet quickstart.cc all + +## Main classes + + +The main class in this library is +[`gkerecommender_v1::GkeInferenceQuickstartClient`](@ref google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient). All RPCs are exposed +as member functions of this class. Other classes provide helpers, configuration +parameters, and infrastructure to mock +[`gkerecommender_v1::GkeInferenceQuickstartClient`](@ref google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient) when testing your +application. + + +## More Information + +- @ref common-error-handling - describes how the library reports errors. +- @ref gkerecommender-override-endpoint - describes how to override the default + endpoint. +- @ref gkerecommender-override-authentication - describes how to change the + authentication credentials used by the library. +- @ref gkerecommender-override-retry - describes how to change the default retry + policies. +- @ref gkerecommender-env - describes environment variables that can configure the + behavior of the library. +- @ref gkerecommender-override-universe-domain - describes how to override the default universe domain. + +[cloud-service-docs]: https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference-quickstart + +*/ diff --git a/google/cloud/gkerecommender/doc/options.dox b/google/cloud/gkerecommender/doc/options.dox new file mode 100644 index 0000000000000..64998376991b5 --- /dev/null +++ b/google/cloud/gkerecommender/doc/options.dox @@ -0,0 +1,10 @@ +/*! +@defgroup google-cloud-gkerecommender-options GKE Recommender API Configuration Options + +This library uses the same mechanism (`google::cloud::Options`) and the common +[options](@ref options) as all other C++ client libraries for its configuration. +Some `*Option` classes, which are only used in this library, are documented in +this page. + +@see @ref options - for an overview of client library configuration. +*/ diff --git a/google/cloud/gkerecommender/doc/override-authentication.dox b/google/cloud/gkerecommender/doc/override-authentication.dox new file mode 100644 index 0000000000000..277939954508f --- /dev/null +++ b/google/cloud/gkerecommender/doc/override-authentication.dox @@ -0,0 +1,35 @@ +/*! +@page gkerecommender-override-authentication How to Override the Authentication Credentials + +Unless otherwise configured, the client libraries use +[Application Default Credentials] to authenticate with Google Cloud Services. +While this works for most applications, in some cases you may need to override +this default. You can do so by providing the +[UnifiedCredentialsOption](@ref google::cloud::UnifiedCredentialsOption) +The following example shows how to explicitly load a service account key file: + + +@snippet gke_inference_quickstart_client_samples.cc with-service-account + + + +Keep in mind that we chose this as an example because it is relatively easy to +understand. Consult the [Best practices for managing service account keys] +guide for more details. + +@see @ref guac - for more information on the factory functions to create +`google::cloud::Credentials` objects. + +[Best practices for managing service account keys]: https://cloud.google.com/iam/docs/best-practices-for-managing-service-account-keys +[Application Default Credentials]: https://cloud.google.com/docs/authentication#adc + +*/ + +// + +/*! @page gkerecommender_v1::GkeInferenceQuickstartClient-service-account-snippet Override gkerecommender_v1::GkeInferenceQuickstartClient Authentication Defaults + +@snippet google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc with-service-account + +*/ +// diff --git a/google/cloud/gkerecommender/doc/override-endpoint.dox b/google/cloud/gkerecommender/doc/override-endpoint.dox new file mode 100644 index 0000000000000..7dce5bbc8f93d --- /dev/null +++ b/google/cloud/gkerecommender/doc/override-endpoint.dox @@ -0,0 +1,25 @@ +/*! +@page gkerecommender-override-endpoint How to Override the Default Endpoint + +In some cases, you may need to override the default endpoint used by the client +library. Use the +[EndpointOption](@ref google::cloud::EndpointOption) when initializing the +client library to change this default. + + +For example, this will override the default endpoint for `gkerecommender_v1::GkeInferenceQuickstartClient`: + +@snippet gke_inference_quickstart_client_samples.cc set-client-endpoint + + + +*/ + +// + +/*! @page gkerecommender_v1::GkeInferenceQuickstartClient-endpoint-snippet Override gkerecommender_v1::GkeInferenceQuickstartClient Endpoint Configuration + +@snippet google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc set-client-endpoint + +*/ +// diff --git a/google/cloud/gkerecommender/doc/override-retry-policies.dox b/google/cloud/gkerecommender/doc/override-retry-policies.dox new file mode 100644 index 0000000000000..05ad64d3fc2b1 --- /dev/null +++ b/google/cloud/gkerecommender/doc/override-retry-policies.dox @@ -0,0 +1,104 @@ +/*! +@page gkerecommender-override-retry Override Retry, Backoff, and Idempotency Policies + +When it is safe to do so, the library automatically retries requests that fail +due to a transient error. The library then uses [exponential backoff] to backoff +before trying again. Which operations are considered safe to retry, which +errors are treated as transient failures, the details of the exponential backoff +algorithm, and for how long the library retries are all configurable via +policies. + +This document provides examples showing how to override the default policies. + +The policies can be set when the `*Connection` object is created. The library +provides default policies for any policy that is not set. The application can +also override some (or all) policies when the `*Client` object is created. This +can be useful if multiple `*Client` objects share the same `*Connection` object, +but you want different retry behavior in some of the clients. Finally, the +application can override some retry policies when calling a specific member +function. + +The library uses three different options to control the retry loop. The options +have per-client names. + +@section gkerecommender-override-retry-retry-policy Configuring the transient errors and retry duration + +The `*RetryPolicyOption` controls: + +- Which errors are to be treated as transient errors. +- How long the library will keep retrying transient errors. + +You can provide your own class for this option. The library also provides two +built-in policies: + +- `*LimitedErrorCountRetryPolicy`: stops retrying after a specified number + of transient errors. +- `*LimitedTimeRetryPolicy`: stops retrying after a specified time. + +Note that a library may have more than one version of these classes. Their name +match the `*Client` and `*Connection` object they are intended to be used +with. Some `*Client` objects treat different error codes as transient errors. +In most cases, only [kUnavailable](@ref google::cloud::StatusCode) is treated +as a transient error. + +@section gkerecommender-override-retry-backoff-policy Controlling the backoff algorithm + +The `*BackoffPolicyOption` controls how long the client library will wait +before retrying a request that failed with a transient error. You can provide +your own class for this option. + +The only built-in backoff policy is +[`ExponentialBackoffPolicy`](@ref google::cloud::ExponentialBackoffPolicy). +This class implements a truncated exponential backoff algorithm, with jitter. +In summary, it doubles the current backoff time after each failure. The actual +backoff time for an RPC is chosen at random, but never exceeds the current +backoff. The current backoff is doubled after each failure, but never exceeds +(or is "truncated") if it reaches a prescribed maximum. + +@section gkerecommender-override-retry-idempotency-policy Controlling which operations are retryable + +The `*IdempotencyPolicyOption` controls which requests are retryable, as some +requests are never safe to retry. + +Only one built-in idempotency policy is provided by the library. The name +matches the name of the client it is intended for. For example, `FooBarClient` +will use `FooBarIdempotencyPolicy`. This policy is very conservative. + +@section gkerecommender-override-retry-example Example + + +For example, this will override the retry policies for `gkerecommender_v1::GkeInferenceQuickstartClient`: + +@snippet gke_inference_quickstart_client_samples.cc set-retry-policy + +This assumes you have created a custom idempotency policy. Such as: + +@snippet gke_inference_quickstart_client_samples.cc custom-idempotency-policy + + + + +@section gkerecommender-override-retry-more-information More Information + +@see google::cloud::Options +@see google::cloud::BackoffPolicy +@see google::cloud::ExponentialBackoffPolicy + +[exponential backoff]: https://en.wikipedia.org/wiki/Exponential_backoff + +*/ + +// + +/*! @page gkerecommender_v1::GkeInferenceQuickstartClient-retry-snippet Override gkerecommender_v1::GkeInferenceQuickstartClient Retry Policies + +This shows how to override the retry policies for gkerecommender_v1::GkeInferenceQuickstartClient: + +@snippet google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc set-retry-policy + +Assuming you have created a custom idempotency policy. Such as: + +@snippet google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc custom-idempotency-policy + +*/ +// diff --git a/google/cloud/gkerecommender/doc/override-universe-domain.dox b/google/cloud/gkerecommender/doc/override-universe-domain.dox new file mode 100644 index 0000000000000..5c819abbabf81 --- /dev/null +++ b/google/cloud/gkerecommender/doc/override-universe-domain.dox @@ -0,0 +1,24 @@ +/*! +@page gkerecommender-override-universe-domain How to Override the Default Universe Domain + +In some cases, you may need to override the default universe domain used by the +client library. Use `AddUniverseDomainOption` when initializing the client +library to change this default. + + +For example, this will override the default universe domain for `gkerecommender_v1::GkeInferenceQuickstartClient`: + +@snippet gke_inference_quickstart_client_samples.cc set-client-universe-domain + + + +*/ + +// + +/*! @page gkerecommender_v1::GkeInferenceQuickstartClient-universe-domain-snippet Override gkerecommender_v1::GkeInferenceQuickstartClient Universe Domain + +@snippet google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc set-client-universe-domain + +*/ +// diff --git a/google/cloud/gkerecommender/quickstart/.bazelrc b/google/cloud/gkerecommender/quickstart/.bazelrc new file mode 100644 index 0000000000000..c884db46c2b4d --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/.bazelrc @@ -0,0 +1,30 @@ +# 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 host-OS-specific config lines from bazelrc files. +build --enable_platform_specific_config=true + +# The project requires C++ >= 14. By default Bazel adds `-std=c++0x` which +# disables C++14 features, even if the compilers defaults to C++ >= 14 +build:linux --cxxopt=-std=c++14 +build:macos --cxxopt=-std=c++14 +# Protobuf and gRPC require (or soon will require) C++14 to compile the "host" +# targets, such as protoc and the grpc plugin. +build:linux --host_cxxopt=-std=c++14 +build:macos --host_cxxopt=-std=c++14 + +# Do not create the convenience links. They are inconvenient when the build +# runs inside a docker image or if one builds a quickstart and then builds +# the project separately. +build --experimental_convenience_symlinks=ignore diff --git a/google/cloud/gkerecommender/quickstart/BUILD.bazel b/google/cloud/gkerecommender/quickstart/BUILD.bazel new file mode 100644 index 0000000000000..e8d8c2acb9389 --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/BUILD.bazel @@ -0,0 +1,25 @@ +# 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. + +licenses(["notice"]) # Apache 2.0 + +cc_binary( + name = "quickstart", + srcs = [ + "quickstart.cc", + ], + deps = [ + "@google_cloud_cpp//:gkerecommender", + ], +) diff --git a/google/cloud/gkerecommender/quickstart/CMakeLists.txt b/google/cloud/gkerecommender/quickstart/CMakeLists.txt new file mode 100644 index 0000000000000..4dde70cf2d145 --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/CMakeLists.txt @@ -0,0 +1,32 @@ +# 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. + +# This file shows how to use the GKE Recommender API C++ client library from a +# larger CMake project. + +cmake_minimum_required(VERSION 3.10...3.24) +project(google-cloud-cpp-gkerecommender-quickstart CXX) + +find_package(google_cloud_cpp_gkerecommender REQUIRED) + +# MSVC requires some additional code to select the correct runtime library +if (VCPKG_TARGET_TRIPLET MATCHES "-static$") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +else () + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") +endif () + +# Define your targets. +add_executable(quickstart quickstart.cc) +target_link_libraries(quickstart google-cloud-cpp::gkerecommender) diff --git a/google/cloud/gkerecommender/quickstart/Makefile b/google/cloud/gkerecommender/quickstart/Makefile new file mode 100644 index 0000000000000..360add07c0e11 --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/Makefile @@ -0,0 +1,35 @@ +# 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. + +# This is a minimal Makefile to show how to use the GKE Recommender API C++ client +# for developers who use make(1) as their build system. + +# The CXX, CXXFLAGS and CXXLD variables are hard-coded. These values work for +# our tests, but applications would typically make them configurable parameters. +CXX=g++ +CXXFLAGS= +CXXLD=$(CXX) +BIN=. + +all: $(BIN)/quickstart + +# Configuration variables to compile and link against the GKE Recommender API C++ +# client library. +CLIENT_MODULE := google_cloud_cpp_gkerecommender +CLIENT_CXXFLAGS := $(shell pkg-config $(CLIENT_MODULE) --cflags) +CLIENT_CXXLDFLAGS := $(shell pkg-config $(CLIENT_MODULE) --libs-only-L) +CLIENT_LIBS := $(shell pkg-config $(CLIENT_MODULE) --libs-only-l) + +$(BIN)/quickstart: quickstart.cc + $(CXXLD) $(CXXFLAGS) $(CLIENT_CXXFLAGS) $(CLIENT_CXXLDFLAGS) -o $@ $^ $(CLIENT_LIBS) diff --git a/google/cloud/gkerecommender/quickstart/README.md b/google/cloud/gkerecommender/quickstart/README.md new file mode 100644 index 0000000000000..f088e08432743 --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/README.md @@ -0,0 +1,135 @@ +# HOWTO: using the GKE Recommender API C++ client in your project + +This directory contains small examples showing how to use the GKE Recommender +API C++ client library in your own project. These instructions assume that you +have some experience as a C++ developer and that you have a working C++ +toolchain (compiler, linker, etc.) installed on your platform. + +- Packaging maintainers or developers who prefer to install the library in a + fixed directory (such as `/usr/local` or `/opt`) should consult the + [packaging guide](/doc/packaging.md). +- Developers who prefer using a package manager such as + [vcpkg](https://vcpkg.io), or [Conda](https://conda.io), should follow the + instructions for their package manager. +- Developers wanting to use the libraries as part of a larger CMake or Bazel + project should consult the current document. Note that there are similar + documents for each library in their corresponding directories. +- Developers wanting to compile the library just to run some examples or tests + should consult the + [building and installing](/README.md#building-and-installing) section of the + top-level README file. +- Contributors and developers to `google-cloud-cpp` should consult the guide to + [set up a development workstation][howto-setup-dev-workstation]. + +## Before you begin + +To run the quickstart examples you will need a working Google Cloud Platform +(GCP) project. + +## Configuring authentication for the C++ Client Library + +Like most Google Cloud Platform (GCP) services, GKE Recommender API requires +that your application authenticates with the service before accessing any data. +If you are not familiar with GCP authentication please take this opportunity to +review the [Authentication methods at Google][authentication-quickstart]. + +## Using with Bazel + +> :warning: If you are using Windows or macOS there are additional instructions +> at the end of this document. + +1. Install Bazel using [the instructions][bazel-install] from the `bazel.build` + website. + +1. Compile this example using Bazel: + + ```bash + cd $HOME/google-cloud-cpp/google/cloud/gkerecommender/quickstart + bazel build ... + ``` + + Note that Bazel automatically downloads and compiles all dependencies of the + project. As it is often the case with C++ libraries, compiling these + dependencies may take several minutes. + +1. Run the example, changing the placeholder(s) to appropriate values: + + ```bash + bazel run :quickstart -- [...] + ``` + +## Using with CMake + +> :warning: If you are using Windows or macOS there are additional instructions +> at the end of this document. + +1. Install CMake. The package managers for most Linux distributions include a + package for CMake. Likewise, you can install CMake on Windows using a package + manager such as [chocolatey][choco-cmake-link], and on macOS using + [homebrew][homebrew-cmake-link]. You can also obtain the software directly + from the [cmake.org](https://cmake.org/download/). + +1. Install the dependencies with your favorite tools. As an example, if you use + [vcpkg](https://github.com/Microsoft/vcpkg.git): + + ```bash + cd $HOME/vcpkg + ./vcpkg install google-cloud-cpp[core,gkerecommender] + ``` + + Note that, as it is often the case with C++ libraries, compiling these + dependencies may take several minutes. + +1. Configure CMake, if necessary, configure the directory where you installed + the dependencies: + + ```bash + cd $HOME/google-cloud-cpp/google/cloud/gkerecommender/quickstart + cmake -S . -B .build -DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake + cmake --build .build + ``` + +1. Run the example, changing the placeholder(s) to appropriate values: + + ```bash + .build/quickstart [...] + ``` + +## Platform Specific Notes + +### macOS + +gRPC [requires][grpc-roots-pem-bug] an environment variable to configure the +trust store for SSL certificates, you can download and configure this using: + +```bash +curl -Lo roots.pem https://pki.google.com/roots.pem +export GRPC_DEFAULT_SSL_ROOTS_FILE_PATH="$PWD/roots.pem" +``` + +### Windows + +Bazel tends to create very long file names and paths. You may need to use a +short directory to store the build output, such as `c:\b`, and instruct Bazel to +use it via: + +```shell +bazel --output_user_root=c:\b build ... +``` + +gRPC [requires][grpc-roots-pem-bug] an environment variable to configure the +trust store for SSL certificates, you can download and configure this using: + +```console +@powershell -NoProfile -ExecutionPolicy unrestricted -Command ^ + (new-object System.Net.WebClient).Downloadfile( ^ + 'https://pki.google.com/roots.pem', 'roots.pem') +set GRPC_DEFAULT_SSL_ROOTS_FILE_PATH=%cd%\roots.pem +``` + +[authentication-quickstart]: https://cloud.google.com/docs/authentication/client-libraries "Authenticate for using client libraries" +[bazel-install]: https://docs.bazel.build/versions/main/install.html +[choco-cmake-link]: https://chocolatey.org/packages/cmake +[grpc-roots-pem-bug]: https://github.com/grpc/grpc/issues/16571 +[homebrew-cmake-link]: https://formulae.brew.sh/formula/cmake +[howto-setup-dev-workstation]: /doc/contributor/howto-guide-setup-development-workstation.md diff --git a/google/cloud/gkerecommender/quickstart/WORKSPACE.bazel b/google/cloud/gkerecommender/quickstart/WORKSPACE.bazel new file mode 100644 index 0000000000000..cfebba79ce398 --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/WORKSPACE.bazel @@ -0,0 +1,53 @@ +# 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. + +# A minimal WORKSPACE file showing how to use the GKE Recommender API +# C++ client library in Bazel-based projects. +workspace(name = "qs") + +# Add the necessary Starlark functions to fetch google-cloud-cpp. +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# Fetch the Google Cloud C++ libraries. +# NOTE: Update this version and SHA256 as needed. +http_archive( + name = "google_cloud_cpp", + sha256 = "699955112a4c57ae9111fbadeff1698674a1762acd77daf36360e6dfc227dc93", + strip_prefix = "google-cloud-cpp-2.42.0", + url = "https://github.com/googleapis/google-cloud-cpp/archive/v2.42.0.tar.gz", +) + +load("@google_cloud_cpp//bazel:workspace0.bzl", "gl_cpp_workspace0") + +gl_cpp_workspace0() + +load("@google_cloud_cpp//bazel:workspace1.bzl", "gl_cpp_workspace1") + +gl_cpp_workspace1() + +load("@google_cloud_cpp//bazel:workspace2.bzl", "gl_cpp_workspace2") + +gl_cpp_workspace2() + +load("@google_cloud_cpp//bazel:workspace3.bzl", "gl_cpp_workspace3") + +gl_cpp_workspace3() + +load("@google_cloud_cpp//bazel:workspace4.bzl", "gl_cpp_workspace4") + +gl_cpp_workspace4() + +load("@google_cloud_cpp//bazel:workspace5.bzl", "gl_cpp_workspace5") + +gl_cpp_workspace5() diff --git a/google/cloud/gkerecommender/quickstart/quickstart.cc b/google/cloud/gkerecommender/quickstart/quickstart.cc new file mode 100644 index 0000000000000..dea76facd2044 --- /dev/null +++ b/google/cloud/gkerecommender/quickstart/quickstart.cc @@ -0,0 +1,42 @@ +// 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. + +//! [all] +#include "google/cloud/gkerecommender/v1/ EDIT HERE _client.h" +#include "google/cloud/location.h" +#include + +int main(int argc, char* argv[]) try { + if (argc != 3) { + std::cerr << "Usage: " << argv[0] << " project-id location-id\n"; + return 1; + } + + auto const location = google::cloud::Location(argv[1], argv[2]); + + namespace gkerecommender = ::google::cloud::gkerecommender_v1; + auto client = gkerecommender::ServiceClient( + gkerecommender::MakeServiceConnection()); // EDIT HERE + + for (auto r : client.List /*EDIT HERE*/ (location.FullName())) { + if (!r) throw std::move(r).status(); + std::cout << r->DebugString() << "\n"; + } + + return 0; +} catch (google::cloud::Status const& status) { + std::cerr << "google::cloud::Status thrown: " << status << "\n"; + return 1; +} +//! [all] diff --git a/google/cloud/gkerecommender/v1/.repo-metadata.json b/google/cloud/gkerecommender/v1/.repo-metadata.json new file mode 100644 index 0000000000000..8a5a195f01d7d --- /dev/null +++ b/google/cloud/gkerecommender/v1/.repo-metadata.json @@ -0,0 +1,14 @@ +{ + "api_id": "gkerecommender.googleapis.com", + "api_shortname": "gkerecommender", + "client_documentation": "https://cloud.google.com/cpp/docs/reference/gkerecommender/latest", + "distribution_name": "google-cloud-cpp", + "issue_tracker": "https://issuetracker.google.com/issues?q=componentid:1790908%20status=open", + "language": "cpp", + "library_type": "GAPIC_AUTO", + "name_pretty": "GKE Recommender API", + "product_documentation": "https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference-quickstart", + "release_level": "stable", + "repo": "googleapis/google-cloud-cpp", + "requires_billing": true +} diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_client.cc b/google/cloud/gkerecommender/v1/gke_inference_quickstart_client.cc new file mode 100644 index 0000000000000..9e409793521ec --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_client.cc @@ -0,0 +1,85 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +GkeInferenceQuickstartClient::GkeInferenceQuickstartClient( + std::shared_ptr connection, Options opts) + : connection_(std::move(connection)), + options_( + internal::MergeOptions(std::move(opts), connection_->options())) {} +GkeInferenceQuickstartClient::~GkeInferenceQuickstartClient() = default; + +StreamRange GkeInferenceQuickstartClient::FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request, + Options opts) { + internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_)); + return connection_->FetchModels(std::move(request)); +} + +StreamRange GkeInferenceQuickstartClient::FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request, + Options opts) { + internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_)); + return connection_->FetchModelServers(std::move(request)); +} + +StreamRange GkeInferenceQuickstartClient::FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest request, + Options opts) { + internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_)); + return connection_->FetchModelServerVersions(std::move(request)); +} + +StreamRange +GkeInferenceQuickstartClient::FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request, + Options opts) { + internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_)); + return connection_->FetchProfiles(std::move(request)); +} + +StatusOr +GkeInferenceQuickstartClient::GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request, + Options opts) { + internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_)); + return connection_->GenerateOptimizedManifest(request); +} + +StatusOr +GkeInferenceQuickstartClient::FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request, + Options opts) { + internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_)); + return connection_->FetchBenchmarkingData(request); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h b/google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h new file mode 100644 index 0000000000000..31495ba34611b --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h @@ -0,0 +1,347 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CLIENT_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CLIENT_H + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include "google/cloud/future.h" +#include "google/cloud/options.h" +#include "google/cloud/polling_policy.h" +#include "google/cloud/status_or.h" +#include "google/cloud/version.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/// +/// GKE Inference Quickstart (GIQ) service provides profiles with performance +/// metrics for popular models and model servers across multiple accelerators. +/// These profiles help generate optimized best practices for running inference +/// on GKE. +/// +/// @par Equality +/// +/// Instances of this class created via copy-construction or copy-assignment +/// always compare equal. Instances created with equal +/// `std::shared_ptr<*Connection>` objects compare equal. Objects that compare +/// equal share the same underlying resources. +/// +/// @par Performance +/// +/// Creating a new instance of this class is a relatively expensive operation, +/// new objects establish new connections to the service. In contrast, +/// copy-construction, move-construction, and the corresponding assignment +/// operations are relatively efficient as the copies share all underlying +/// resources. +/// +/// @par Thread Safety +/// +/// Concurrent access to different instances of this class, even if they compare +/// equal, is guaranteed to work. Two or more threads operating on the same +/// instance of this class is not guaranteed to work. Since copy-construction +/// and move-construction is a relatively efficient operation, consider using +/// such a copy when using this class from multiple threads. +/// +class GkeInferenceQuickstartClient { + public: + explicit GkeInferenceQuickstartClient( + std::shared_ptr connection, + Options opts = {}); + ~GkeInferenceQuickstartClient(); + + ///@{ + /// @name Copy and move support + GkeInferenceQuickstartClient(GkeInferenceQuickstartClient const&) = default; + GkeInferenceQuickstartClient& operator=(GkeInferenceQuickstartClient const&) = + default; + GkeInferenceQuickstartClient(GkeInferenceQuickstartClient&&) = default; + GkeInferenceQuickstartClient& operator=(GkeInferenceQuickstartClient&&) = + default; + ///@} + + ///@{ + /// @name Equality + friend bool operator==(GkeInferenceQuickstartClient const& a, + GkeInferenceQuickstartClient const& b) { + return a.connection_ == b.connection_; + } + friend bool operator!=(GkeInferenceQuickstartClient const& a, + GkeInferenceQuickstartClient const& b) { + return !(a == b); + } + ///@} + + // clang-format off + /// + /// Fetches available models. Open-source models follow the Huggingface Hub + /// `owner/model_name` format. + /// + /// @param request Unary RPCs, such as the one wrapped by this + /// function, receive a single `request` proto message which includes all + /// the inputs for the RPC. In this case, the proto message is a + /// [google.cloud.gkerecommender.v1.FetchModelsRequest]. + /// Proto messages are converted to C++ classes by Protobuf, using the + /// [Protobuf mapping rules]. + /// @param opts Optional. Override the class-level options, such as retry and + /// backoff policies. + /// @return a [StreamRange](@ref google::cloud::StreamRange) + /// to iterate of the results. See the documentation of this type for + /// details. In brief, this class has `begin()` and `end()` member + /// functions returning a iterator class meeting the + /// [input iterator requirements]. The value type for this iterator is a + /// [`StatusOr`] as the iteration may fail even after some values are + /// retrieved successfully, for example, if there is a network disconnect. + /// An empty set of results does not indicate an error, it indicates + /// that there are no resources meeting the request criteria. + /// On a successful iteration the `StatusOr` contains a + /// [`std::string`]. + /// + /// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/ + /// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator + /// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string + /// [`future`]: @ref google::cloud::future + /// [`StatusOr`]: @ref google::cloud::StatusOr + /// [`Status`]: @ref google::cloud::Status + /// [google.cloud.gkerecommender.v1.FetchModelsRequest]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L117} + /// + // clang-format on + StreamRange FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request, + Options opts = {}); + + // clang-format off + /// + /// Fetches available model servers. Open-source model servers use simplified, + /// lowercase names (e.g., `vllm`). + /// + /// @param request Unary RPCs, such as the one wrapped by this + /// function, receive a single `request` proto message which includes all + /// the inputs for the RPC. In this case, the proto message is a + /// [google.cloud.gkerecommender.v1.FetchModelServersRequest]. + /// Proto messages are converted to C++ classes by Protobuf, using the + /// [Protobuf mapping rules]. + /// @param opts Optional. Override the class-level options, such as retry and + /// backoff policies. + /// @return a [StreamRange](@ref google::cloud::StreamRange) + /// to iterate of the results. See the documentation of this type for + /// details. In brief, this class has `begin()` and `end()` member + /// functions returning a iterator class meeting the + /// [input iterator requirements]. The value type for this iterator is a + /// [`StatusOr`] as the iteration may fail even after some values are + /// retrieved successfully, for example, if there is a network disconnect. + /// An empty set of results does not indicate an error, it indicates + /// that there are no resources meeting the request criteria. + /// On a successful iteration the `StatusOr` contains a + /// [`std::string`]. + /// + /// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/ + /// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator + /// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string + /// [`future`]: @ref google::cloud::future + /// [`StatusOr`]: @ref google::cloud::StatusOr + /// [`Status`]: @ref google::cloud::Status + /// [google.cloud.gkerecommender.v1.FetchModelServersRequest]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L152} + /// + // clang-format on + StreamRange FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request, + Options opts = {}); + + // clang-format off + /// + /// Fetches available model server versions. Open-source servers use their own + /// versioning schemas (e.g., `vllm` uses semver like `v1.0.0`). + /// + /// Some model servers have different versioning schemas depending on the + /// accelerator. For example, `vllm` uses semver on GPUs, but returns nightly + /// build tags on TPUs. All available versions will be returned when different + /// schemas are present. + /// + /// @param request Unary RPCs, such as the one wrapped by this + /// function, receive a single `request` proto message which includes all + /// the inputs for the RPC. In this case, the proto message is a + /// [google.cloud.gkerecommender.v1.FetchModelServerVersionsRequest]. + /// Proto messages are converted to C++ classes by Protobuf, using the + /// [Protobuf mapping rules]. + /// @param opts Optional. Override the class-level options, such as retry and + /// backoff policies. + /// @return a [StreamRange](@ref google::cloud::StreamRange) + /// to iterate of the results. See the documentation of this type for + /// details. In brief, this class has `begin()` and `end()` member + /// functions returning a iterator class meeting the + /// [input iterator requirements]. The value type for this iterator is a + /// [`StatusOr`] as the iteration may fail even after some values are + /// retrieved successfully, for example, if there is a network disconnect. + /// An empty set of results does not indicate an error, it indicates + /// that there are no resources meeting the request criteria. + /// On a successful iteration the `StatusOr` contains a + /// [`std::string`]. + /// + /// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/ + /// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator + /// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string + /// [`future`]: @ref google::cloud::future + /// [`StatusOr`]: @ref google::cloud::StatusOr + /// [`Status`]: @ref google::cloud::Status + /// [google.cloud.gkerecommender.v1.FetchModelServerVersionsRequest]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L194} + /// + // clang-format on + StreamRange FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request, + Options opts = {}); + + // clang-format off + /// + /// Fetches available profiles. A profile contains performance metrics and + /// cost information for a specific model server setup. Profiles can be + /// filtered by parameters. If no filters are provided, all profiles are + /// returned. + /// + /// Profiles display a single value per performance metric based on the + /// provided performance requirements. If no requirements are given, the + /// metrics represent the inflection point. See [Run best practice inference + /// with GKE Inference Quickstart + /// recipes](https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference/inference-quickstart#how) + /// for details. + /// + /// @param request Unary RPCs, such as the one wrapped by this + /// function, receive a single `request` proto message which includes all + /// the inputs for the RPC. In this case, the proto message is a + /// [google.cloud.gkerecommender.v1.FetchProfilesRequest]. + /// Proto messages are converted to C++ classes by Protobuf, using the + /// [Protobuf mapping rules]. + /// @param opts Optional. Override the class-level options, such as retry and + /// backoff policies. + /// @return a [StreamRange](@ref google::cloud::StreamRange) + /// to iterate of the results. See the documentation of this type for + /// details. In brief, this class has `begin()` and `end()` member + /// functions returning a iterator class meeting the + /// [input iterator requirements]. The value type for this iterator is a + /// [`StatusOr`] as the iteration may fail even after some values are + /// retrieved successfully, for example, if there is a network disconnect. + /// An empty set of results does not indicate an error, it indicates + /// that there are no resources meeting the request criteria. + /// On a successful iteration the `StatusOr` contains elements of type + /// [google.cloud.gkerecommender.v1.Profile], or rather, + /// the C++ class generated by Protobuf from that type. Please consult the + /// Protobuf documentation for details on the [Protobuf mapping rules]. + /// + /// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/ + /// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator + /// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string + /// [`future`]: @ref google::cloud::future + /// [`StatusOr`]: @ref google::cloud::StatusOr + /// [`Status`]: @ref google::cloud::Status + /// [google.cloud.gkerecommender.v1.FetchProfilesRequest]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L271} + /// [google.cloud.gkerecommender.v1.Profile]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L490} + /// + // clang-format on + StreamRange FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request, + Options opts = {}); + + // clang-format off + /// + /// Generates an optimized deployment manifest for a given model and model + /// server, based on the specified accelerator, performance targets, and + /// configurations. See [Run best practice inference with GKE Inference + /// Quickstart + /// recipes](https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference/inference-quickstart) + /// for deployment details. + /// + /// @param request Unary RPCs, such as the one wrapped by this + /// function, receive a single `request` proto message which includes all + /// the inputs for the RPC. In this case, the proto message is a + /// [google.cloud.gkerecommender.v1.GenerateOptimizedManifestRequest]. + /// Proto messages are converted to C++ classes by Protobuf, using the + /// [Protobuf mapping rules]. + /// @param opts Optional. Override the class-level options, such as retry and + /// backoff policies. + /// @return the result of the RPC. The response message type + /// ([google.cloud.gkerecommender.v1.GenerateOptimizedManifestResponse]) + /// is mapped to a C++ class using the [Protobuf mapping rules]. + /// If the request fails, the [`StatusOr`] contains the error details. + /// + /// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/ + /// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator + /// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string + /// [`future`]: @ref google::cloud::future + /// [`StatusOr`]: @ref google::cloud::StatusOr + /// [`Status`]: @ref google::cloud::Status + /// [google.cloud.gkerecommender.v1.GenerateOptimizedManifestRequest]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L516} + /// [google.cloud.gkerecommender.v1.GenerateOptimizedManifestResponse]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L559} + /// + // clang-format on + StatusOr + GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request, + Options opts = {}); + + // clang-format off + /// + /// Fetches all of the benchmarking data available for a profile. Benchmarking + /// data returns all of the performance metrics available for a given model + /// server setup on a given instance type. + /// + /// @param request Unary RPCs, such as the one wrapped by this + /// function, receive a single `request` proto message which includes all + /// the inputs for the RPC. In this case, the proto message is a + /// [google.cloud.gkerecommender.v1.FetchBenchmarkingDataRequest]. + /// Proto messages are converted to C++ classes by Protobuf, using the + /// [Protobuf mapping rules]. + /// @param opts Optional. Override the class-level options, such as retry and + /// backoff policies. + /// @return the result of the RPC. The response message type + /// ([google.cloud.gkerecommender.v1.FetchBenchmarkingDataResponse]) + /// is mapped to a C++ class using the [Protobuf mapping rules]. + /// If the request fails, the [`StatusOr`] contains the error details. + /// + /// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/ + /// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator + /// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string + /// [`future`]: @ref google::cloud::future + /// [`StatusOr`]: @ref google::cloud::StatusOr + /// [`Status`]: @ref google::cloud::Status + /// [google.cloud.gkerecommender.v1.FetchBenchmarkingDataRequest]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L242} + /// [google.cloud.gkerecommender.v1.FetchBenchmarkingDataResponse]: @googleapis_reference_link{google/cloud/gkerecommender/v1/gkerecommender.proto#L263} + /// + // clang-format on + StatusOr + FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request, + Options opts = {}); + + private: + std::shared_ptr connection_; + Options options_; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CLIENT_H diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.cc b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.cc new file mode 100644 index 0000000000000..cd48b8f388a85 --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.cc @@ -0,0 +1,107 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.h" +#include "google/cloud/background_threads.h" +#include "google/cloud/common_options.h" +#include "google/cloud/credentials.h" +#include "google/cloud/grpc_options.h" +#include "google/cloud/internal/pagination_range.h" +#include "google/cloud/internal/unified_grpc_credentials.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +GkeInferenceQuickstartConnection::~GkeInferenceQuickstartConnection() = default; + +StreamRange GkeInferenceQuickstartConnection::FetchModels( + google::cloud::gkerecommender::v1:: + FetchModelsRequest) { // NOLINT(performance-unnecessary-value-param) + return google::cloud::internal::MakeUnimplementedPaginationRange< + StreamRange>(); +} + +StreamRange GkeInferenceQuickstartConnection::FetchModelServers( + google::cloud::gkerecommender::v1:: + FetchModelServersRequest) { // NOLINT(performance-unnecessary-value-param) + return google::cloud::internal::MakeUnimplementedPaginationRange< + StreamRange>(); +} + +StreamRange +GkeInferenceQuickstartConnection::FetchModelServerVersions( + google::cloud::gkerecommender::v1:: + FetchModelServerVersionsRequest) { // NOLINT(performance-unnecessary-value-param) + return google::cloud::internal::MakeUnimplementedPaginationRange< + StreamRange>(); +} + +StreamRange +GkeInferenceQuickstartConnection::FetchProfiles( + google::cloud::gkerecommender::v1:: + FetchProfilesRequest) { // NOLINT(performance-unnecessary-value-param) + return google::cloud::internal::MakeUnimplementedPaginationRange< + StreamRange>(); +} + +StatusOr +GkeInferenceQuickstartConnection::GenerateOptimizedManifest( + google::cloud::gkerecommender::v1:: + GenerateOptimizedManifestRequest const&) { + return Status(StatusCode::kUnimplemented, "not implemented"); +} + +StatusOr +GkeInferenceQuickstartConnection::FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const&) { + return Status(StatusCode::kUnimplemented, "not implemented"); +} + +std::shared_ptr +MakeGkeInferenceQuickstartConnection(Options options) { + internal::CheckExpectedOptions( + options, __func__); + options = gkerecommender_v1_internal::GkeInferenceQuickstartDefaultOptions( + std::move(options)); + auto background = internal::MakeBackgroundThreadsFactory(options)(); + auto auth = internal::CreateAuthenticationStrategy(background->cq(), options); + auto stub = + gkerecommender_v1_internal::CreateDefaultGkeInferenceQuickstartStub( + std::move(auth), options); + return gkerecommender_v1_internal:: + MakeGkeInferenceQuickstartTracingConnection( + std::make_shared< + gkerecommender_v1_internal::GkeInferenceQuickstartConnectionImpl>( + std::move(background), std::move(stub), std::move(options))); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h new file mode 100644 index 0000000000000..c163e2055c0e1 --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h @@ -0,0 +1,249 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CONNECTION_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CONNECTION_H + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_retry_traits.h" +#include "google/cloud/backoff_policy.h" +#include "google/cloud/internal/retry_policy_impl.h" +#include "google/cloud/options.h" +#include "google/cloud/status_or.h" +#include "google/cloud/stream_range.h" +#include "google/cloud/version.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/// The retry policy for `GkeInferenceQuickstartConnection`. +class GkeInferenceQuickstartRetryPolicy : public ::google::cloud::RetryPolicy { + public: + /// Creates a new instance of the policy, reset to the initial state. + virtual std::unique_ptr clone() const = 0; +}; + +/** + * A retry policy for `GkeInferenceQuickstartConnection` based on counting + * errors. + * + * This policy stops retrying if: + * - An RPC returns a non-transient error. + * - More than a prescribed number of transient failures is detected. + * + * In this class the following status codes are treated as transient errors: + * - [`kUnavailable`](@ref google::cloud::StatusCode) + */ +class GkeInferenceQuickstartLimitedErrorCountRetryPolicy + : public GkeInferenceQuickstartRetryPolicy { + public: + /** + * Create an instance that tolerates up to @p maximum_failures transient + * errors. + * + * @note Disable the retry loop by providing an instance of this policy with + * @p maximum_failures == 0. + */ + explicit GkeInferenceQuickstartLimitedErrorCountRetryPolicy( + int maximum_failures) + : impl_(maximum_failures) {} + + GkeInferenceQuickstartLimitedErrorCountRetryPolicy( + GkeInferenceQuickstartLimitedErrorCountRetryPolicy&& rhs) noexcept + : GkeInferenceQuickstartLimitedErrorCountRetryPolicy( + rhs.maximum_failures()) {} + GkeInferenceQuickstartLimitedErrorCountRetryPolicy( + GkeInferenceQuickstartLimitedErrorCountRetryPolicy const& rhs) noexcept + : GkeInferenceQuickstartLimitedErrorCountRetryPolicy( + rhs.maximum_failures()) {} + + int maximum_failures() const { return impl_.maximum_failures(); } + + bool OnFailure(Status const& status) override { + return impl_.OnFailure(status); + } + bool IsExhausted() const override { return impl_.IsExhausted(); } + bool IsPermanentFailure(Status const& status) const override { + return impl_.IsPermanentFailure(status); + } + std::unique_ptr clone() const override { + return std::make_unique( + maximum_failures()); + } + + // This is provided only for backwards compatibility. + using BaseType = GkeInferenceQuickstartRetryPolicy; + + private: + google::cloud::internal::LimitedErrorCountRetryPolicy< + gkerecommender_v1_internal::GkeInferenceQuickstartRetryTraits> + impl_; +}; + +/** + * A retry policy for `GkeInferenceQuickstartConnection` based on elapsed time. + * + * This policy stops retrying if: + * - An RPC returns a non-transient error. + * - The elapsed time in the retry loop exceeds a prescribed duration. + * + * In this class the following status codes are treated as transient errors: + * - [`kUnavailable`](@ref google::cloud::StatusCode) + */ +class GkeInferenceQuickstartLimitedTimeRetryPolicy + : public GkeInferenceQuickstartRetryPolicy { + public: + /** + * Constructor given a `std::chrono::duration<>` object. + * + * @tparam DurationRep a placeholder to match the `Rep` tparam for @p + * duration's type. The semantics of this template parameter are + * documented in `std::chrono::duration<>`. In brief, the underlying + * arithmetic type used to store the number of ticks. For our purposes it + * is simply a formal parameter. + * @tparam DurationPeriod a placeholder to match the `Period` tparam for @p + * duration's type. The semantics of this template parameter are + * documented in `std::chrono::duration<>`. In brief, the length of the + * tick in seconds, expressed as a `std::ratio<>`. For our purposes it is + * simply a formal parameter. + * @param maximum_duration the maximum time allowed before the policy expires. + * While the application can express this time in any units they desire, + * the class truncates to milliseconds. + * + * @see https://en.cppreference.com/w/cpp/chrono/duration for more information + * about `std::chrono::duration`. + */ + template + explicit GkeInferenceQuickstartLimitedTimeRetryPolicy( + std::chrono::duration maximum_duration) + : impl_(maximum_duration) {} + + GkeInferenceQuickstartLimitedTimeRetryPolicy( + GkeInferenceQuickstartLimitedTimeRetryPolicy&& rhs) noexcept + : GkeInferenceQuickstartLimitedTimeRetryPolicy(rhs.maximum_duration()) {} + GkeInferenceQuickstartLimitedTimeRetryPolicy( + GkeInferenceQuickstartLimitedTimeRetryPolicy const& rhs) noexcept + : GkeInferenceQuickstartLimitedTimeRetryPolicy(rhs.maximum_duration()) {} + + std::chrono::milliseconds maximum_duration() const { + return impl_.maximum_duration(); + } + + bool OnFailure(Status const& status) override { + return impl_.OnFailure(status); + } + bool IsExhausted() const override { return impl_.IsExhausted(); } + bool IsPermanentFailure(Status const& status) const override { + return impl_.IsPermanentFailure(status); + } + std::unique_ptr clone() const override { + return std::make_unique( + maximum_duration()); + } + + // This is provided only for backwards compatibility. + using BaseType = GkeInferenceQuickstartRetryPolicy; + + private: + google::cloud::internal::LimitedTimeRetryPolicy< + gkerecommender_v1_internal::GkeInferenceQuickstartRetryTraits> + impl_; +}; + +/** + * The `GkeInferenceQuickstartConnection` object for + * `GkeInferenceQuickstartClient`. + * + * This interface defines virtual methods for each of the user-facing overload + * sets in `GkeInferenceQuickstartClient`. This allows users to inject custom + * behavior (e.g., with a Google Mock object) when writing tests that use + * objects of type `GkeInferenceQuickstartClient`. + * + * To create a concrete instance, see `MakeGkeInferenceQuickstartConnection()`. + * + * For mocking, see + * `gkerecommender_v1_mocks::MockGkeInferenceQuickstartConnection`. + */ +class GkeInferenceQuickstartConnection { + public: + virtual ~GkeInferenceQuickstartConnection() = 0; + + virtual Options options() { return Options{}; } + + virtual StreamRange FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request); + + virtual StreamRange FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request); + + virtual StreamRange FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request); + + virtual StreamRange FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request); + + virtual StatusOr< + google::cloud::gkerecommender::v1::GenerateOptimizedManifestResponse> + GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request); + + virtual StatusOr< + google::cloud::gkerecommender::v1::FetchBenchmarkingDataResponse> + FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request); +}; + +/** + * A factory function to construct an object of type + * `GkeInferenceQuickstartConnection`. + * + * The returned connection object should not be used directly; instead it + * should be passed as an argument to the constructor of + * GkeInferenceQuickstartClient. + * + * The optional @p options argument may be used to configure aspects of the + * returned `GkeInferenceQuickstartConnection`. Expected options are any of the + * types in the following option lists: + * + * - `google::cloud::CommonOptionList` + * - `google::cloud::GrpcOptionList` + * - `google::cloud::UnifiedCredentialsOptionList` + * - `google::cloud::gkerecommender_v1::GkeInferenceQuickstartPolicyOptionList` + * + * @note Unexpected options will be ignored. To log unexpected options instead, + * set `GOOGLE_CLOUD_CPP_ENABLE_CLOG=yes` in the environment. + * + * @param options (optional) Configure the `GkeInferenceQuickstartConnection` + * created by this function. + */ +std::shared_ptr +MakeGkeInferenceQuickstartConnection(Options options = {}); + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CONNECTION_H diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.cc b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.cc new file mode 100644 index 0000000000000..3ea7c8893fcf3 --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.cc @@ -0,0 +1,82 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +using ::google::cloud::Idempotency; + +GkeInferenceQuickstartConnectionIdempotencyPolicy:: + ~GkeInferenceQuickstartConnectionIdempotencyPolicy() = default; + +std::unique_ptr +GkeInferenceQuickstartConnectionIdempotencyPolicy::clone() const { + return std::make_unique( + *this); +} + +Idempotency GkeInferenceQuickstartConnectionIdempotencyPolicy::FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest) { // NOLINT + return Idempotency::kIdempotent; +} + +Idempotency +GkeInferenceQuickstartConnectionIdempotencyPolicy::FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest) { // NOLINT + return Idempotency::kIdempotent; +} + +Idempotency +GkeInferenceQuickstartConnectionIdempotencyPolicy::FetchModelServerVersions( + google::cloud::gkerecommender::v1:: + FetchModelServerVersionsRequest) { // NOLINT + return Idempotency::kIdempotent; +} + +Idempotency GkeInferenceQuickstartConnectionIdempotencyPolicy::FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest) { // NOLINT + return Idempotency::kNonIdempotent; +} + +Idempotency +GkeInferenceQuickstartConnectionIdempotencyPolicy::GenerateOptimizedManifest( + google::cloud::gkerecommender::v1:: + GenerateOptimizedManifestRequest const&) { + return Idempotency::kNonIdempotent; +} + +Idempotency +GkeInferenceQuickstartConnectionIdempotencyPolicy::FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const&) { + return Idempotency::kNonIdempotent; +} + +std::unique_ptr +MakeDefaultGkeInferenceQuickstartConnectionIdempotencyPolicy() { + return std::make_unique(); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h new file mode 100644 index 0000000000000..3b2934fce60e0 --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h @@ -0,0 +1,70 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CONNECTION_IDEMPOTENCY_POLICY_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CONNECTION_IDEMPOTENCY_POLICY_H + +#include "google/cloud/idempotency.h" +#include "google/cloud/version.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +class GkeInferenceQuickstartConnectionIdempotencyPolicy { + public: + virtual ~GkeInferenceQuickstartConnectionIdempotencyPolicy(); + + /// Create a new copy of this object. + virtual std::unique_ptr + clone() const; + + virtual google::cloud::Idempotency FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request); + + virtual google::cloud::Idempotency FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request); + + virtual google::cloud::Idempotency FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request); + + virtual google::cloud::Idempotency FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request); + + virtual google::cloud::Idempotency GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request); + + virtual google::cloud::Idempotency FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request); +}; + +std::unique_ptr +MakeDefaultGkeInferenceQuickstartConnectionIdempotencyPolicy(); + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_CONNECTION_IDEMPOTENCY_POLICY_H diff --git a/google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h b/google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h new file mode 100644 index 0000000000000..c67fcd530ef35 --- /dev/null +++ b/google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h @@ -0,0 +1,77 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_OPTIONS_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_OPTIONS_H + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h" +#include "google/cloud/backoff_policy.h" +#include "google/cloud/options.h" +#include "google/cloud/version.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1 { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/** + * Use with `google::cloud::Options` to configure the retry policy. + * + * @ingroup google-cloud-gkerecommender-options + */ +struct GkeInferenceQuickstartRetryPolicyOption { + using Type = std::shared_ptr; +}; + +/** + * Use with `google::cloud::Options` to configure the backoff policy. + * + * @ingroup google-cloud-gkerecommender-options + */ +struct GkeInferenceQuickstartBackoffPolicyOption { + using Type = std::shared_ptr; +}; + +/** + * Use with `google::cloud::Options` to configure which operations are retried. + * + * @ingroup google-cloud-gkerecommender-options + */ +struct GkeInferenceQuickstartConnectionIdempotencyPolicyOption { + using Type = + std::shared_ptr; +}; + +/** + * The options applicable to GkeInferenceQuickstart. + * + * @ingroup google-cloud-gkerecommender-options + */ +using GkeInferenceQuickstartPolicyOptionList = + OptionList; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1 +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_GKE_INFERENCE_QUICKSTART_OPTIONS_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.cc new file mode 100644 index 0000000000000..eb65d5deaac4e --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.cc @@ -0,0 +1,95 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +GkeInferenceQuickstartAuth::GkeInferenceQuickstartAuth( + std::shared_ptr auth, + std::shared_ptr child) + : auth_(std::move(auth)), child_(std::move(child)) {} + +StatusOr +GkeInferenceQuickstartAuth::FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) { + auto status = auth_->ConfigureContext(context); + if (!status.ok()) return status; + return child_->FetchModels(context, options, request); +} + +StatusOr +GkeInferenceQuickstartAuth::FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) { + auto status = auth_->ConfigureContext(context); + if (!status.ok()) return status; + return child_->FetchModelServers(context, options, request); +} + +StatusOr +GkeInferenceQuickstartAuth::FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) { + auto status = auth_->ConfigureContext(context); + if (!status.ok()) return status; + return child_->FetchModelServerVersions(context, options, request); +} + +StatusOr +GkeInferenceQuickstartAuth::FetchProfiles( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& request) { + auto status = auth_->ConfigureContext(context); + if (!status.ok()) return status; + return child_->FetchProfiles(context, options, request); +} + +StatusOr +GkeInferenceQuickstartAuth::GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + auto status = auth_->ConfigureContext(context); + if (!status.ok()) return status; + return child_->GenerateOptimizedManifest(context, options, request); +} + +StatusOr +GkeInferenceQuickstartAuth::FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + auto status = auth_->ConfigureContext(context); + if (!status.ok()) return status; + return child_->FetchBenchmarkingData(context, options, request); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.h new file mode 100644 index 0000000000000..29049bbe338ae --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.h @@ -0,0 +1,85 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_AUTH_DECORATOR_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_AUTH_DECORATOR_H + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/internal/unified_grpc_credentials.h" +#include "google/cloud/version.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +class GkeInferenceQuickstartAuth : public GkeInferenceQuickstartStub { + public: + ~GkeInferenceQuickstartAuth() override = default; + GkeInferenceQuickstartAuth( + std::shared_ptr auth, + std::shared_ptr child); + + StatusOr FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) + override; + + StatusOr + FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) override; + + StatusOr + FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) override; + + StatusOr + FetchProfiles(grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) override; + + StatusOr + GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + std::shared_ptr auth_; + std::shared_ptr child_; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_AUTH_DECORATOR_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.cc new file mode 100644 index 0000000000000..223464588eaba --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.cc @@ -0,0 +1,244 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h" +#include "google/cloud/background_threads.h" +#include "google/cloud/common_options.h" +#include "google/cloud/grpc_options.h" +#include "google/cloud/internal/pagination_range.h" +#include "google/cloud/internal/retry_loop.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN +namespace { + +std::unique_ptr +retry_policy(Options const& options) { + return options + .get() + ->clone(); +} + +std::unique_ptr backoff_policy(Options const& options) { + return options + .get() + ->clone(); +} + +std::unique_ptr< + gkerecommender_v1::GkeInferenceQuickstartConnectionIdempotencyPolicy> +idempotency_policy(Options const& options) { + return options + .get() + ->clone(); +} + +} // namespace + +GkeInferenceQuickstartConnectionImpl::GkeInferenceQuickstartConnectionImpl( + std::unique_ptr background, + std::shared_ptr + stub, + Options options) + : background_(std::move(background)), + stub_(std::move(stub)), + options_(internal::MergeOptions( + std::move(options), GkeInferenceQuickstartConnection::options())) {} + +StreamRange GkeInferenceQuickstartConnectionImpl::FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request) { + request.clear_page_token(); + auto current = google::cloud::internal::SaveCurrentOptions(); + auto idempotency = idempotency_policy(*current)->FetchModels(request); + char const* function_name = __func__; + return google::cloud::internal::MakePaginationRange>( + current, std::move(request), + [idempotency, function_name, stub = stub_, + retry = std::shared_ptr< + gkerecommender_v1::GkeInferenceQuickstartRetryPolicy>( + retry_policy(*current)), + backoff = std::shared_ptr(backoff_policy(*current))]( + Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& r) { + return google::cloud::internal::RetryLoop( + retry->clone(), backoff->clone(), idempotency, + [stub](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& + request) { + return stub->FetchModels(context, options, request); + }, + options, r, function_name); + }, + [](google::cloud::gkerecommender::v1::FetchModelsResponse r) { + std::vector result(r.models().size()); + auto& messages = *r.mutable_models(); + std::move(messages.begin(), messages.end(), result.begin()); + return result; + }); +} + +StreamRange +GkeInferenceQuickstartConnectionImpl::FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request) { + request.clear_page_token(); + auto current = google::cloud::internal::SaveCurrentOptions(); + auto idempotency = idempotency_policy(*current)->FetchModelServers(request); + char const* function_name = __func__; + return google::cloud::internal::MakePaginationRange>( + current, std::move(request), + [idempotency, function_name, stub = stub_, + retry = std::shared_ptr< + gkerecommender_v1::GkeInferenceQuickstartRetryPolicy>( + retry_policy(*current)), + backoff = std::shared_ptr(backoff_policy(*current))]( + Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + r) { + return google::cloud::internal::RetryLoop( + retry->clone(), backoff->clone(), idempotency, + [stub](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1:: + FetchModelServersRequest const& request) { + return stub->FetchModelServers(context, options, request); + }, + options, r, function_name); + }, + [](google::cloud::gkerecommender::v1::FetchModelServersResponse r) { + std::vector result(r.model_servers().size()); + auto& messages = *r.mutable_model_servers(); + std::move(messages.begin(), messages.end(), result.begin()); + return result; + }); +} + +StreamRange +GkeInferenceQuickstartConnectionImpl::FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request) { + request.clear_page_token(); + auto current = google::cloud::internal::SaveCurrentOptions(); + auto idempotency = + idempotency_policy(*current)->FetchModelServerVersions(request); + char const* function_name = __func__; + return google::cloud::internal::MakePaginationRange>( + current, std::move(request), + [idempotency, function_name, stub = stub_, + retry = std::shared_ptr< + gkerecommender_v1::GkeInferenceQuickstartRetryPolicy>( + retry_policy(*current)), + backoff = std::shared_ptr(backoff_policy(*current))]( + Options const& options, + google::cloud::gkerecommender::v1:: + FetchModelServerVersionsRequest const& r) { + return google::cloud::internal::RetryLoop( + retry->clone(), backoff->clone(), idempotency, + [stub](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1:: + FetchModelServerVersionsRequest const& request) { + return stub->FetchModelServerVersions(context, options, request); + }, + options, r, function_name); + }, + [](google::cloud::gkerecommender::v1::FetchModelServerVersionsResponse + r) { + std::vector result(r.model_server_versions().size()); + auto& messages = *r.mutable_model_server_versions(); + std::move(messages.begin(), messages.end(), result.begin()); + return result; + }); +} + +StreamRange +GkeInferenceQuickstartConnectionImpl::FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request) { + request.clear_page_token(); + auto current = google::cloud::internal::SaveCurrentOptions(); + auto idempotency = idempotency_policy(*current)->FetchProfiles(request); + char const* function_name = __func__; + return google::cloud::internal::MakePaginationRange< + StreamRange>( + current, std::move(request), + [idempotency, function_name, stub = stub_, + retry = std::shared_ptr< + gkerecommender_v1::GkeInferenceQuickstartRetryPolicy>( + retry_policy(*current)), + backoff = std::shared_ptr(backoff_policy(*current))]( + Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& r) { + return google::cloud::internal::RetryLoop( + retry->clone(), backoff->clone(), idempotency, + [stub]( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) { + return stub->FetchProfiles(context, options, request); + }, + options, r, function_name); + }, + [](google::cloud::gkerecommender::v1::FetchProfilesResponse r) { + std::vector result( + r.profile().size()); + auto& messages = *r.mutable_profile(); + std::move(messages.begin(), messages.end(), result.begin()); + return result; + }); +} + +StatusOr +GkeInferenceQuickstartConnectionImpl::GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + auto current = google::cloud::internal::SaveCurrentOptions(); + return google::cloud::internal::RetryLoop( + retry_policy(*current), backoff_policy(*current), + idempotency_policy(*current)->GenerateOptimizedManifest(request), + [this](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1:: + GenerateOptimizedManifestRequest const& request) { + return stub_->GenerateOptimizedManifest(context, options, request); + }, + *current, request, __func__); +} + +StatusOr +GkeInferenceQuickstartConnectionImpl::FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + auto current = google::cloud::internal::SaveCurrentOptions(); + return google::cloud::internal::RetryLoop( + retry_policy(*current), backoff_policy(*current), + idempotency_policy(*current)->FetchBenchmarkingData(request), + [this]( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + return stub_->FetchBenchmarkingData(context, options, request); + }, + *current, request, __func__); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.h new file mode 100644 index 0000000000000..2eec4100bbb49 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.h @@ -0,0 +1,88 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_CONNECTION_IMPL_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_CONNECTION_IMPL_H + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_retry_traits.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/background_threads.h" +#include "google/cloud/backoff_policy.h" +#include "google/cloud/options.h" +#include "google/cloud/status_or.h" +#include "google/cloud/stream_range.h" +#include "google/cloud/version.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +class GkeInferenceQuickstartConnectionImpl + : public gkerecommender_v1::GkeInferenceQuickstartConnection { + public: + ~GkeInferenceQuickstartConnectionImpl() override = default; + + GkeInferenceQuickstartConnectionImpl( + std::unique_ptr background, + std::shared_ptr + stub, + Options options); + + Options options() override { return options_; } + + StreamRange FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request) override; + + StreamRange FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request) + override; + + StreamRange FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request) override; + + StreamRange FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request) override; + + StatusOr + GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + std::unique_ptr background_; + std::shared_ptr stub_; + Options options_; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_CONNECTION_IMPL_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.cc new file mode 100644 index 0000000000000..7fdd24ee7bcb5 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.cc @@ -0,0 +1,124 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.h" +#include "google/cloud/internal/log_wrapper.h" +#include "google/cloud/status_or.h" +#include +#include +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +GkeInferenceQuickstartLogging::GkeInferenceQuickstartLogging( + std::shared_ptr child, + TracingOptions tracing_options, std::set const&) + : child_(std::move(child)), tracing_options_(std::move(tracing_options)) {} + +StatusOr +GkeInferenceQuickstartLogging::FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) { + return google::cloud::internal::LogWrapper( + [this](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& + request) { + return child_->FetchModels(context, options, request); + }, + context, options, request, __func__, tracing_options_); +} + +StatusOr +GkeInferenceQuickstartLogging::FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) { + return google::cloud::internal::LogWrapper( + [this](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) { + return child_->FetchModelServers(context, options, request); + }, + context, options, request, __func__, tracing_options_); +} + +StatusOr +GkeInferenceQuickstartLogging::FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) { + return google::cloud::internal::LogWrapper( + [this](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1:: + FetchModelServerVersionsRequest const& request) { + return child_->FetchModelServerVersions(context, options, request); + }, + context, options, request, __func__, tracing_options_); +} + +StatusOr +GkeInferenceQuickstartLogging::FetchProfiles( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& request) { + return google::cloud::internal::LogWrapper( + [this](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) { + return child_->FetchProfiles(context, options, request); + }, + context, options, request, __func__, tracing_options_); +} + +StatusOr +GkeInferenceQuickstartLogging::GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + return google::cloud::internal::LogWrapper( + [this](grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1:: + GenerateOptimizedManifestRequest const& request) { + return child_->GenerateOptimizedManifest(context, options, request); + }, + context, options, request, __func__, tracing_options_); +} + +StatusOr +GkeInferenceQuickstartLogging::FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + return google::cloud::internal::LogWrapper( + [this]( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + return child_->FetchBenchmarkingData(context, options, request); + }, + context, options, request, __func__, tracing_options_); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.h new file mode 100644 index 0000000000000..bb9a3a7e579af --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.h @@ -0,0 +1,85 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_LOGGING_DECORATOR_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_LOGGING_DECORATOR_H + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/tracing_options.h" +#include "google/cloud/version.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +class GkeInferenceQuickstartLogging : public GkeInferenceQuickstartStub { + public: + ~GkeInferenceQuickstartLogging() override = default; + GkeInferenceQuickstartLogging( + std::shared_ptr child, + TracingOptions tracing_options, std::set const& components); + + StatusOr FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) + override; + + StatusOr + FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) override; + + StatusOr + FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) override; + + StatusOr + FetchProfiles(grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) override; + + StatusOr + GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + std::shared_ptr child_; + TracingOptions tracing_options_; +}; // GkeInferenceQuickstartLogging + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_LOGGING_DECORATOR_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.cc new file mode 100644 index 0000000000000..e2493751fda7a --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.cc @@ -0,0 +1,115 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.h" +#include "google/cloud/grpc_options.h" +#include "google/cloud/internal/absl_str_cat_quiet.h" +#include "google/cloud/internal/api_client_header.h" +#include "google/cloud/internal/url_encode.h" +#include "google/cloud/status_or.h" +#include +#include +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +GkeInferenceQuickstartMetadata::GkeInferenceQuickstartMetadata( + std::shared_ptr child, + std::multimap fixed_metadata, + std::string api_client_header) + : child_(std::move(child)), + fixed_metadata_(std::move(fixed_metadata)), + api_client_header_( + api_client_header.empty() + ? google::cloud::internal::GeneratedLibClientHeader() + : std::move(api_client_header)) {} + +StatusOr +GkeInferenceQuickstartMetadata::FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) { + SetMetadata(context, options); + return child_->FetchModels(context, options, request); +} + +StatusOr +GkeInferenceQuickstartMetadata::FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) { + SetMetadata(context, options); + return child_->FetchModelServers(context, options, request); +} + +StatusOr +GkeInferenceQuickstartMetadata::FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) { + SetMetadata(context, options); + return child_->FetchModelServerVersions(context, options, request); +} + +StatusOr +GkeInferenceQuickstartMetadata::FetchProfiles( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& request) { + SetMetadata(context, options); + return child_->FetchProfiles(context, options, request); +} + +StatusOr +GkeInferenceQuickstartMetadata::GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + SetMetadata(context, options); + return child_->GenerateOptimizedManifest(context, options, request); +} + +StatusOr +GkeInferenceQuickstartMetadata::FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + SetMetadata(context, options); + return child_->FetchBenchmarkingData(context, options, request); +} + +void GkeInferenceQuickstartMetadata::SetMetadata( + grpc::ClientContext& context, Options const& options, + std::string const& request_params) { + context.AddMetadata("x-goog-request-params", request_params); + SetMetadata(context, options); +} + +void GkeInferenceQuickstartMetadata::SetMetadata(grpc::ClientContext& context, + Options const& options) { + google::cloud::internal::SetMetadata(context, options, fixed_metadata_, + api_client_header_); +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.h new file mode 100644 index 0000000000000..75dc9dba73ccf --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.h @@ -0,0 +1,91 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_METADATA_DECORATOR_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_METADATA_DECORATOR_H + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/options.h" +#include "google/cloud/version.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +class GkeInferenceQuickstartMetadata : public GkeInferenceQuickstartStub { + public: + ~GkeInferenceQuickstartMetadata() override = default; + GkeInferenceQuickstartMetadata( + std::shared_ptr child, + std::multimap fixed_metadata, + std::string api_client_header = ""); + + StatusOr FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) + override; + + StatusOr + FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) override; + + StatusOr + FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) override; + + StatusOr + FetchProfiles(grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) override; + + StatusOr + GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + void SetMetadata(grpc::ClientContext& context, Options const& options, + std::string const& request_params); + void SetMetadata(grpc::ClientContext& context, Options const& options); + + std::shared_ptr child_; + std::multimap fixed_metadata_; + std::string api_client_header_; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_METADATA_DECORATOR_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.cc new file mode 100644 index 0000000000000..574e8eff44c6c --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.cc @@ -0,0 +1,72 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h" +#include "google/cloud/internal/populate_common_options.h" +#include "google/cloud/internal/populate_grpc_options.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +namespace { +auto constexpr kBackoffScaling = 2.0; +} // namespace + +Options GkeInferenceQuickstartDefaultOptions(Options options) { + options = internal::PopulateCommonOptions( + std::move(options), "GOOGLE_CLOUD_CPP_GKE_INFERENCE_QUICKSTART_ENDPOINT", + "", "GOOGLE_CLOUD_CPP_GKE_INFERENCE_QUICKSTART_AUTHORITY", + "gkerecommender.googleapis.com"); + options = internal::PopulateGrpcOptions(std::move(options)); + if (!options + .has()) { + options.set( + gkerecommender_v1::GkeInferenceQuickstartLimitedTimeRetryPolicy( + std::chrono::minutes(30)) + .clone()); + } + if (!options.has< + gkerecommender_v1::GkeInferenceQuickstartBackoffPolicyOption>()) { + options.set( + ExponentialBackoffPolicy( + std::chrono::seconds(0), std::chrono::seconds(1), + std::chrono::minutes(5), kBackoffScaling, kBackoffScaling) + .clone()); + } + if (!options.has< + gkerecommender_v1:: + GkeInferenceQuickstartConnectionIdempotencyPolicyOption>()) { + options.set( + gkerecommender_v1:: + MakeDefaultGkeInferenceQuickstartConnectionIdempotencyPolicy()); + } + + return options; +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h new file mode 100644 index 0000000000000..67f884fd425d8 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.h @@ -0,0 +1,37 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_OPTION_DEFAULTS_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_OPTION_DEFAULTS_H + +#include "google/cloud/options.h" +#include "google/cloud/version.h" + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +Options GkeInferenceQuickstartDefaultOptions(Options options); + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_OPTION_DEFAULTS_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_retry_traits.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_retry_traits.h new file mode 100644 index 0000000000000..4ef0b0ccd7b9e --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_retry_traits.h @@ -0,0 +1,43 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_RETRY_TRAITS_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_RETRY_TRAITS_H + +#include "google/cloud/status.h" +#include "google/cloud/version.h" + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/// Define the gRPC status code semantics for retrying requests. +struct GkeInferenceQuickstartRetryTraits { + static bool IsPermanentFailure(google::cloud::Status const& status) { + return status.code() != StatusCode::kOk && + status.code() != StatusCode::kUnavailable; + } +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_RETRY_TRAITS_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_sources.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_sources.cc new file mode 100644 index 0000000000000..72a1265cd9674 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_sources.cc @@ -0,0 +1,32 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +// NOLINTBEGIN(bugprone-suspicious-include) +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.cc" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.cc" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_connection_impl.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_option_defaults.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.cc" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.cc" +// NOLINTEND(bugprone-suspicious-include) diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.cc new file mode 100644 index 0000000000000..78d41f105910e --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.cc @@ -0,0 +1,114 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/grpc_error_delegate.h" +#include "google/cloud/status_or.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +GkeInferenceQuickstartStub::~GkeInferenceQuickstartStub() = default; + +StatusOr +DefaultGkeInferenceQuickstartStub::FetchModels( + grpc::ClientContext& context, Options const&, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) { + google::cloud::gkerecommender::v1::FetchModelsResponse response; + auto status = grpc_stub_->FetchModels(&context, request, &response); + if (!status.ok()) { + return google::cloud::MakeStatusFromRpcError(status); + } + return response; +} + +StatusOr +DefaultGkeInferenceQuickstartStub::FetchModelServers( + grpc::ClientContext& context, Options const&, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) { + google::cloud::gkerecommender::v1::FetchModelServersResponse response; + auto status = grpc_stub_->FetchModelServers(&context, request, &response); + if (!status.ok()) { + return google::cloud::MakeStatusFromRpcError(status); + } + return response; +} + +StatusOr +DefaultGkeInferenceQuickstartStub::FetchModelServerVersions( + grpc::ClientContext& context, Options const&, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) { + google::cloud::gkerecommender::v1::FetchModelServerVersionsResponse response; + auto status = + grpc_stub_->FetchModelServerVersions(&context, request, &response); + if (!status.ok()) { + return google::cloud::MakeStatusFromRpcError(status); + } + return response; +} + +StatusOr +DefaultGkeInferenceQuickstartStub::FetchProfiles( + grpc::ClientContext& context, Options const&, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& request) { + google::cloud::gkerecommender::v1::FetchProfilesResponse response; + auto status = grpc_stub_->FetchProfiles(&context, request, &response); + if (!status.ok()) { + return google::cloud::MakeStatusFromRpcError(status); + } + return response; +} + +StatusOr +DefaultGkeInferenceQuickstartStub::GenerateOptimizedManifest( + grpc::ClientContext& context, Options const&, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + google::cloud::gkerecommender::v1::GenerateOptimizedManifestResponse response; + auto status = + grpc_stub_->GenerateOptimizedManifest(&context, request, &response); + if (!status.ok()) { + return google::cloud::MakeStatusFromRpcError(status); + } + return response; +} + +StatusOr +DefaultGkeInferenceQuickstartStub::FetchBenchmarkingData( + grpc::ClientContext& context, Options const&, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + google::cloud::gkerecommender::v1::FetchBenchmarkingDataResponse response; + auto status = grpc_stub_->FetchBenchmarkingData(&context, request, &response); + if (!status.ok()) { + return google::cloud::MakeStatusFromRpcError(status); + } + return response; +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h new file mode 100644 index 0000000000000..41ef3fbc37c34 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h @@ -0,0 +1,129 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_STUB_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_STUB_H + +#include "google/cloud/options.h" +#include "google/cloud/status_or.h" +#include "google/cloud/version.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +class GkeInferenceQuickstartStub { + public: + virtual ~GkeInferenceQuickstartStub() = 0; + + virtual StatusOr + FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) = 0; + + virtual StatusOr + FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) = 0; + + virtual StatusOr< + google::cloud::gkerecommender::v1::FetchModelServerVersionsResponse> + FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) = 0; + + virtual StatusOr + FetchProfiles(grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) = 0; + + virtual StatusOr< + google::cloud::gkerecommender::v1::GenerateOptimizedManifestResponse> + GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) = 0; + + virtual StatusOr< + google::cloud::gkerecommender::v1::FetchBenchmarkingDataResponse> + FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) = 0; +}; + +class DefaultGkeInferenceQuickstartStub : public GkeInferenceQuickstartStub { + public: + explicit DefaultGkeInferenceQuickstartStub( + std::unique_ptr + grpc_stub) + : grpc_stub_(std::move(grpc_stub)) {} + + StatusOr FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) + override; + + StatusOr + FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) override; + + StatusOr + FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) override; + + StatusOr + FetchProfiles(grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) override; + + StatusOr + GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + std::unique_ptr< + google::cloud::gkerecommender::v1::GkeInferenceQuickstart::StubInterface> + grpc_stub_; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_STUB_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.cc new file mode 100644 index 0000000000000..68054fa43f2a1 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.cc @@ -0,0 +1,74 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_auth_decorator.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_logging_decorator.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_metadata_decorator.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.h" +#include "google/cloud/common_options.h" +#include "google/cloud/grpc_options.h" +#include "google/cloud/internal/algorithm.h" +#include "google/cloud/internal/opentelemetry.h" +#include "google/cloud/log.h" +#include "google/cloud/options.h" +#include +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +std::shared_ptr +CreateDefaultGkeInferenceQuickstartStub( + std::shared_ptr auth, + Options const& options) { + auto channel = auth->CreateChannel(options.get(), + internal::MakeChannelArguments(options)); + auto service_grpc_stub = + google::cloud::gkerecommender::v1::GkeInferenceQuickstart::NewStub( + channel); + std::shared_ptr stub = + std::make_shared( + std::move(service_grpc_stub)); + + if (auth->RequiresConfigureContext()) { + stub = std::make_shared(std::move(auth), + std::move(stub)); + } + stub = std::make_shared( + std::move(stub), std::multimap{}); + if (internal::Contains(options.get(), "rpc")) { + GCP_LOG(INFO) << "Enabled logging for gRPC calls"; + stub = std::make_shared( + std::move(stub), options.get(), + options.get()); + } + if (internal::TracingEnabled(options)) { + stub = MakeGkeInferenceQuickstartTracingStub(std::move(stub)); + } + return stub; +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.h new file mode 100644 index 0000000000000..6abdd95568b12 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub_factory.h @@ -0,0 +1,43 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_STUB_FACTORY_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_STUB_FACTORY_H + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/internal/unified_grpc_credentials.h" +#include "google/cloud/options.h" +#include "google/cloud/version.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +std::shared_ptr +CreateDefaultGkeInferenceQuickstartStub( + std::shared_ptr auth, + Options const& options); + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_STUB_FACTORY_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.cc new file mode 100644 index 0000000000000..e3d5419e1c47c --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.cc @@ -0,0 +1,123 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.h" +#include "google/cloud/internal/opentelemetry.h" +#include "google/cloud/internal/traced_stream_range.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +GkeInferenceQuickstartTracingConnection:: + GkeInferenceQuickstartTracingConnection( + std::shared_ptr + child) + : child_(std::move(child)) {} + +StreamRange GkeInferenceQuickstartTracingConnection::FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request) { + auto span = internal::MakeSpan( + "gkerecommender_v1::GkeInferenceQuickstartConnection::FetchModels"); + internal::OTelScope scope(span); + auto sr = child_->FetchModels(std::move(request)); + return internal::MakeTracedStreamRange(std::move(span), + std::move(sr)); +} + +StreamRange +GkeInferenceQuickstartTracingConnection::FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request) { + auto span = internal::MakeSpan( + "gkerecommender_v1::GkeInferenceQuickstartConnection::FetchModelServers"); + internal::OTelScope scope(span); + auto sr = child_->FetchModelServers(std::move(request)); + return internal::MakeTracedStreamRange(std::move(span), + std::move(sr)); +} + +StreamRange +GkeInferenceQuickstartTracingConnection::FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request) { + auto span = internal::MakeSpan( + "gkerecommender_v1::GkeInferenceQuickstartConnection::" + "FetchModelServerVersions"); + internal::OTelScope scope(span); + auto sr = child_->FetchModelServerVersions(std::move(request)); + return internal::MakeTracedStreamRange(std::move(span), + std::move(sr)); +} + +StreamRange +GkeInferenceQuickstartTracingConnection::FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request) { + auto span = internal::MakeSpan( + "gkerecommender_v1::GkeInferenceQuickstartConnection::FetchProfiles"); + internal::OTelScope scope(span); + auto sr = child_->FetchProfiles(std::move(request)); + return internal::MakeTracedStreamRange< + google::cloud::gkerecommender::v1::Profile>(std::move(span), + std::move(sr)); +} + +StatusOr +GkeInferenceQuickstartTracingConnection::GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + auto span = internal::MakeSpan( + "gkerecommender_v1::GkeInferenceQuickstartConnection::" + "GenerateOptimizedManifest"); + auto scope = opentelemetry::trace::Scope(span); + return internal::EndSpan(*span, child_->GenerateOptimizedManifest(request)); +} + +StatusOr +GkeInferenceQuickstartTracingConnection::FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + auto span = internal::MakeSpan( + "gkerecommender_v1::GkeInferenceQuickstartConnection::" + "FetchBenchmarkingData"); + auto scope = opentelemetry::trace::Scope(span); + return internal::EndSpan(*span, child_->FetchBenchmarkingData(request)); +} + +#endif // GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +std::shared_ptr +MakeGkeInferenceQuickstartTracingConnection( + std::shared_ptr conn) { +#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + if (internal::TracingEnabled(conn->options())) { + conn = std::make_shared( + std::move(conn)); + } +#endif // GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + return conn; +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.h new file mode 100644 index 0000000000000..dbcf6bd8b3d75 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_connection.h @@ -0,0 +1,89 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_TRACING_CONNECTION_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_TRACING_CONNECTION_H + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include "google/cloud/version.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +class GkeInferenceQuickstartTracingConnection + : public gkerecommender_v1::GkeInferenceQuickstartConnection { + public: + ~GkeInferenceQuickstartTracingConnection() override = default; + + explicit GkeInferenceQuickstartTracingConnection( + std::shared_ptr + child); + + Options options() override { return child_->options(); } + + StreamRange FetchModels( + google::cloud::gkerecommender::v1::FetchModelsRequest request) override; + + StreamRange FetchModelServers( + google::cloud::gkerecommender::v1::FetchModelServersRequest request) + override; + + StreamRange FetchModelServerVersions( + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request) override; + + StreamRange FetchProfiles( + google::cloud::gkerecommender::v1::FetchProfilesRequest request) override; + + StatusOr + GenerateOptimizedManifest( + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + std::shared_ptr child_; +}; + +#endif // GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +/** + * Conditionally applies the tracing decorator to the given connection. + * + * The connection is only decorated if tracing is enabled (as determined by the + * connection's options). + */ +std::shared_ptr +MakeGkeInferenceQuickstartTracingConnection( + std::shared_ptr conn); + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_TRACING_CONNECTION_H diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.cc b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.cc new file mode 100644 index 0000000000000..d7da6bbaa16d9 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.cc @@ -0,0 +1,132 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.h" +#include "google/cloud/internal/grpc_opentelemetry.h" +#include +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +GkeInferenceQuickstartTracingStub::GkeInferenceQuickstartTracingStub( + std::shared_ptr child) + : child_(std::move(child)), propagator_(internal::MakePropagator()) {} + +StatusOr +GkeInferenceQuickstartTracingStub::FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) { + auto span = internal::MakeSpanGrpc( + "google.cloud.gkerecommender.v1.GkeInferenceQuickstart", "FetchModels"); + auto scope = opentelemetry::trace::Scope(span); + internal::InjectTraceContext(context, *propagator_); + return internal::EndSpan(context, *span, + child_->FetchModels(context, options, request)); +} + +StatusOr +GkeInferenceQuickstartTracingStub::FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) { + auto span = internal::MakeSpanGrpc( + "google.cloud.gkerecommender.v1.GkeInferenceQuickstart", + "FetchModelServers"); + auto scope = opentelemetry::trace::Scope(span); + internal::InjectTraceContext(context, *propagator_); + return internal::EndSpan( + context, *span, child_->FetchModelServers(context, options, request)); +} + +StatusOr +GkeInferenceQuickstartTracingStub::FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) { + auto span = internal::MakeSpanGrpc( + "google.cloud.gkerecommender.v1.GkeInferenceQuickstart", + "FetchModelServerVersions"); + auto scope = opentelemetry::trace::Scope(span); + internal::InjectTraceContext(context, *propagator_); + return internal::EndSpan( + context, *span, + child_->FetchModelServerVersions(context, options, request)); +} + +StatusOr +GkeInferenceQuickstartTracingStub::FetchProfiles( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& request) { + auto span = internal::MakeSpanGrpc( + "google.cloud.gkerecommender.v1.GkeInferenceQuickstart", "FetchProfiles"); + auto scope = opentelemetry::trace::Scope(span); + internal::InjectTraceContext(context, *propagator_); + return internal::EndSpan(context, *span, + child_->FetchProfiles(context, options, request)); +} + +StatusOr +GkeInferenceQuickstartTracingStub::GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) { + auto span = internal::MakeSpanGrpc( + "google.cloud.gkerecommender.v1.GkeInferenceQuickstart", + "GenerateOptimizedManifest"); + auto scope = opentelemetry::trace::Scope(span); + internal::InjectTraceContext(context, *propagator_); + return internal::EndSpan( + context, *span, + child_->GenerateOptimizedManifest(context, options, request)); +} + +StatusOr +GkeInferenceQuickstartTracingStub::FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) { + auto span = internal::MakeSpanGrpc( + "google.cloud.gkerecommender.v1.GkeInferenceQuickstart", + "FetchBenchmarkingData"); + auto scope = opentelemetry::trace::Scope(span); + internal::InjectTraceContext(context, *propagator_); + return internal::EndSpan( + context, *span, child_->FetchBenchmarkingData(context, options, request)); +} + +#endif // GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +std::shared_ptr +MakeGkeInferenceQuickstartTracingStub( + std::shared_ptr stub) { +#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + return std::make_shared(std::move(stub)); +#else + return stub; +#endif // GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY +} + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google diff --git a/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.h b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.h new file mode 100644 index 0000000000000..08434ac60b6c0 --- /dev/null +++ b/google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_tracing_stub.h @@ -0,0 +1,99 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_TRACING_STUB_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_TRACING_STUB_H + +#include "google/cloud/gkerecommender/v1/internal/gke_inference_quickstart_stub.h" +#include "google/cloud/internal/trace_propagator.h" +#include "google/cloud/options.h" +#include "google/cloud/version.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +class GkeInferenceQuickstartTracingStub : public GkeInferenceQuickstartStub { + public: + ~GkeInferenceQuickstartTracingStub() override = default; + + explicit GkeInferenceQuickstartTracingStub( + std::shared_ptr child); + + StatusOr FetchModels( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelsRequest const& request) + override; + + StatusOr + FetchModelServers( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServersRequest const& + request) override; + + StatusOr + FetchModelServerVersions( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest const& + request) override; + + StatusOr + FetchProfiles(grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchProfilesRequest const& + request) override; + + StatusOr + GenerateOptimizedManifest( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::GenerateOptimizedManifestRequest const& + request) override; + + StatusOr + FetchBenchmarkingData( + grpc::ClientContext& context, Options const& options, + google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request) override; + + private: + std::shared_ptr child_; + std::shared_ptr + propagator_; +}; + +#endif // GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY + +/** + * Applies the tracing decorator to the given stub. + * + * The stub is only decorated if the library has been compiled with + * OpenTelemetry. + */ +std::shared_ptr +MakeGkeInferenceQuickstartTracingStub( + std::shared_ptr stub); + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_INTERNAL_GKE_INFERENCE_QUICKSTART_TRACING_STUB_H diff --git a/google/cloud/gkerecommender/v1/mocks/mock_gke_inference_quickstart_connection.h b/google/cloud/gkerecommender/v1/mocks/mock_gke_inference_quickstart_connection.h new file mode 100644 index 0000000000000..36fc746346c19 --- /dev/null +++ b/google/cloud/gkerecommender/v1/mocks/mock_gke_inference_quickstart_connection.h @@ -0,0 +1,92 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_MOCKS_MOCK_GKE_INFERENCE_QUICKSTART_CONNECTION_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_MOCKS_MOCK_GKE_INFERENCE_QUICKSTART_CONNECTION_H + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection.h" +#include + +namespace google { +namespace cloud { +namespace gkerecommender_v1_mocks { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/** + * A class to mock `GkeInferenceQuickstartConnection`. + * + * Application developers may want to test their code with simulated responses, + * including errors, from an object of type `GkeInferenceQuickstartClient`. To + * do so, construct an object of type `GkeInferenceQuickstartClient` with an + * instance of this class. Then use the Google Test framework functions to + * program the behavior of this mock. + * + * @see [This example][bq-mock] for how to test your application with GoogleTest. + * While the example showcases types from the BigQuery library, the underlying + * principles apply for any pair of `*Client` and `*Connection`. + * + * [bq-mock]: @cloud_cpp_docs_link{bigquery,bigquery-read-mock} + */ +class MockGkeInferenceQuickstartConnection + : public gkerecommender_v1::GkeInferenceQuickstartConnection { + public: + MOCK_METHOD(Options, options, (), (override)); + + MOCK_METHOD((StreamRange), FetchModels, + (google::cloud::gkerecommender::v1::FetchModelsRequest request), + (override)); + + MOCK_METHOD( + (StreamRange), FetchModelServers, + (google::cloud::gkerecommender::v1::FetchModelServersRequest request), + (override)); + + MOCK_METHOD( + (StreamRange), FetchModelServerVersions, + (google::cloud::gkerecommender::v1::FetchModelServerVersionsRequest + request), + (override)); + + MOCK_METHOD((StreamRange), + FetchProfiles, + (google::cloud::gkerecommender::v1::FetchProfilesRequest request), + (override)); + + MOCK_METHOD( + StatusOr< + google::cloud::gkerecommender::v1::GenerateOptimizedManifestResponse>, + GenerateOptimizedManifest, + (google::cloud::gkerecommender::v1:: + GenerateOptimizedManifestRequest const& request), + (override)); + + MOCK_METHOD( + StatusOr< + google::cloud::gkerecommender::v1::FetchBenchmarkingDataResponse>, + FetchBenchmarkingData, + (google::cloud::gkerecommender::v1::FetchBenchmarkingDataRequest const& + request), + (override)); +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace gkerecommender_v1_mocks +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_GKERECOMMENDER_V1_MOCKS_MOCK_GKE_INFERENCE_QUICKSTART_CONNECTION_H diff --git a/google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc b/google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc new file mode 100644 index 0000000000000..27637061eed9e --- /dev/null +++ b/google/cloud/gkerecommender/v1/samples/gke_inference_quickstart_client_samples.cc @@ -0,0 +1,192 @@ +// 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. + +// Generated by the Codegen C++ plugin. +// If you make any local changes, they will be lost. +// source: google/cloud/gkerecommender/v1/gkerecommender.proto + +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_connection_idempotency_policy.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_options.h" +#include "google/cloud/common_options.h" +#include "google/cloud/credentials.h" +#include "google/cloud/internal/getenv.h" +#include "google/cloud/testing_util/example_driver.h" +#include "google/cloud/universe_domain.h" +#include +#include +#include +#include + +// clang-format off +// main-dox-marker: gkerecommender_v1::GkeInferenceQuickstartClient +// clang-format on +namespace { + +void SetClientEndpoint(std::vector const& argv) { + if (!argv.empty()) { + throw google::cloud::testing_util::Usage{"set-client-endpoint"}; + } + //! [set-client-endpoint] + // This configuration is common with Private Google Access: + // https://cloud.google.com/vpc/docs/private-google-access + auto options = google::cloud::Options{}.set( + "private.googleapis.com"); + auto vpc_client = + google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient( + google::cloud::gkerecommender_v1:: + MakeGkeInferenceQuickstartConnection(options)); + //! [set-client-endpoint] +} + +void SetClientUniverseDomain(std::vector const& argv) { + if (!argv.empty()) { + throw google::cloud::testing_util::Usage{"set-client-universe-domain"}; + } + //! [set-client-universe-domain] + google::cloud::Options options; + + // AddUniverseDomainOption interrogates the UnifiedCredentialsOption, if set, + // in the provided Options for the Universe Domain associated with the + // credentials and adds it to the set of Options. + // If no UnifiedCredentialsOption is set, GoogleDefaultCredentials are used. + auto ud_options = google::cloud::AddUniverseDomainOption(std::move(options)); + + if (!ud_options.ok()) throw std::move(ud_options).status(); + auto ud_client = + google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient( + google::cloud::gkerecommender_v1:: + MakeGkeInferenceQuickstartConnection(*ud_options)); + //! [set-client-universe-domain] +} + +//! [custom-idempotency-policy] +class CustomIdempotencyPolicy + : public google::cloud::gkerecommender_v1:: + GkeInferenceQuickstartConnectionIdempotencyPolicy { + public: + ~CustomIdempotencyPolicy() override = default; + std::unique_ptr + clone() const override { + return std::make_unique(*this); + } + // Override inherited functions to define as needed. +}; +//! [custom-idempotency-policy] + +void SetRetryPolicy(std::vector const& argv) { + if (!argv.empty()) { + throw google::cloud::testing_util::Usage{"set-client-retry-policy"}; + } + //! [set-retry-policy] + auto options = + google::cloud::Options{} + .set( + CustomIdempotencyPolicy().clone()) + .set( + google::cloud::gkerecommender_v1:: + GkeInferenceQuickstartLimitedErrorCountRetryPolicy(3) + .clone()) + .set( + google::cloud::ExponentialBackoffPolicy( + /*initial_delay=*/std::chrono::milliseconds(200), + /*maximum_delay=*/std::chrono::seconds(45), + /*scaling=*/2.0) + .clone()); + auto connection = + google::cloud::gkerecommender_v1::MakeGkeInferenceQuickstartConnection( + options); + + // c1 and c2 share the same retry policies + auto c1 = google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient( + connection); + auto c2 = google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient( + connection); + + // You can override any of the policies in a new client. This new client + // will share the policies from c1 (or c2) *except* for the retry policy. + auto c3 = google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient( + connection, google::cloud::Options{} + .set( + google::cloud::gkerecommender_v1:: + GkeInferenceQuickstartLimitedTimeRetryPolicy( + std::chrono::minutes(5)) + .clone())); + + // You can also override the policies in a single call: + // c3.SomeRpc(..., google::cloud::Options{} + // .set( + // google::cloud::gkerecommender_v1::GkeInferenceQuickstartLimitedErrorCountRetryPolicy(10).clone())); + //! [set-retry-policy] +} + +void WithServiceAccount(std::vector const& argv) { + if (argv.size() != 1 || argv[0] == "--help") { + throw google::cloud::testing_util::Usage{"with-service-account "}; + } + //! [with-service-account] + [](std::string const& keyfile) { + auto is = std::ifstream(keyfile); + is.exceptions(std::ios::badbit); // Minimal error handling in examples + auto contents = std::string(std::istreambuf_iterator(is.rdbuf()), {}); + auto options = + google::cloud::Options{}.set( + google::cloud::MakeServiceAccountCredentials(contents)); + return google::cloud::gkerecommender_v1::GkeInferenceQuickstartClient( + google::cloud::gkerecommender_v1::MakeGkeInferenceQuickstartConnection( + options)); + } + //! [with-service-account] + (argv.at(0)); +} + +void AutoRun(std::vector const& argv) { + namespace examples = ::google::cloud::testing_util; + using ::google::cloud::internal::GetEnv; + if (!argv.empty()) throw examples::Usage{"auto"}; + examples::CheckEnvironmentVariablesAreSet( + {"GOOGLE_CLOUD_CPP_TEST_SERVICE_ACCOUNT_KEYFILE"}); + auto const keyfile = + GetEnv("GOOGLE_CLOUD_CPP_TEST_SERVICE_ACCOUNT_KEYFILE").value(); + + std::cout << "\nRunning SetClientEndpoint() example" << std::endl; + SetClientEndpoint({}); + + std::cout << "\nRunning SetRetryPolicy() example" << std::endl; + SetRetryPolicy({}); + + std::cout << "\nRunning WithServiceAccount() example" << std::endl; + WithServiceAccount({keyfile}); + + std::cout << "\nRunning SetClientUniverseDomain() example" << std::endl; + SetClientUniverseDomain({}); +} + +} // namespace + +int main(int argc, char* argv[]) { // NOLINT(bugprone-exception-escape) + google::cloud::testing_util::Example example({ + {"set-client-endpoint", SetClientEndpoint}, + {"set-retry-policy", SetRetryPolicy}, + {"with-service-account", WithServiceAccount}, + {"set-client-universe-domain", SetClientUniverseDomain}, + {"auto", AutoRun}, + }); + return example.Run(argc, argv); +} From 51be46b10829c7a76a95691fbf174ecf67b509af Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Thu, 5 Feb 2026 12:31:35 -0500 Subject: [PATCH 3/5] Add API baseline --- ...oud_cpp_gkerecommender.expected.abi.dump.gz | Bin 0 -> 376219 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ci/abi-dumps/google_cloud_cpp_gkerecommender.expected.abi.dump.gz diff --git a/ci/abi-dumps/google_cloud_cpp_gkerecommender.expected.abi.dump.gz b/ci/abi-dumps/google_cloud_cpp_gkerecommender.expected.abi.dump.gz new file mode 100644 index 0000000000000000000000000000000000000000..e2fd0b86d6b7544e97922fe3eaae84cb2827def8 GIT binary patch literal 376219 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

0Zh; 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 kN^o+WFgPhBv@ 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 #xGYi3)gJ)p){z>+U~cm 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≦(yW9Y2PSjK8a*VsQ zKGPL69e^%u?KAyzS2Qh{7oyT;)-NpyH^j zIZdsbZF|jl(?M#Eoj}ox*03Z%%m6EO$$9A3whqbZSf|79gG!B|6;DO!PP22Ym zY*mR@h+Sr=g*lp%|~hraGbxzM1SlZOeC?8e7ra~%%44u0mSub0NziG^6#6t9Wotim zu3m1wYLiE1*L0UvAWZLAq27;2+k6y;0i>Oz#ct(|(0~Yk_Gj1MkK4(iHH6(~4Iu@* zdfPWlbj2Ny!Pi=TZ2i}JzqY!SwdTNbZDjGnRXp9$fH^`n0=$@27ffRda+~qOS*`U0 z5v@?f-*mwVNlS-o)viSas_KAXdR#U{8|=o3##G*KGZyF{pkhm!>!(5B>CpQRDu;CK z)scI5e~@D6(oB%RDf4CrwXqD@&2IO}Dv3OQY@hQN@7avNSZ(g5wy~NmitNjTXY|c-!r_TdfkW!!iIRs&;ZmB$Boj3Bc)XMlAo1?lSYJLQnx1?qDlyM3>phi z{{$J*=_^_#x~%}m5n^Xo#IOqEt){F z*4)$j5ACoO3kYnG>Asb5jd!pcyvhxTo>0aTk z`_*+m3Zv$60GZk;Hc=YkOtVr*@xWJmVI2fv+7-_LZ)=N+fJ2`@@1I$$Zz6+mjGb*#?x zAv{`PD8C~#@gM8mFV25~aPs4JTAtBQnBq3PJ?O{d@>3RV$qLmRSkDX0VgR#%XLTd2 zim`R{OO}AhQZg~Qn8pC=`k!#|0hvyNlU0qo2rEXIaVxzEepv0ki&|upG%Mf>{l;In z;t}uUg(>EEXlGZ4IXK+7)xi1}7}^i6BtTu*%kCE5(x0+#&-gV*xI*@pexUXdz&g#V zj)2Y|5-ygb<@*`CI6_$(_7w4II+M_MUe4+@(rxLV^Dv`-q^bJ`+V*m!jcnr?F4|r= z@)5Y?^<7-{aesQ0(@%Kl+sC4R#rcyN$EH*SF<~I}R@KPZ&d3wTRANRO4pEXzO zPuvFwW+?g^JcY@Li6)re_^e#E^JuqFAC;)!R?ix(fIMB|@Y2g3rob7)SvW7_O`VT* z4cF}jjpq;5=Sd}EP;#rGY?dnvwL|*y4Q^6h|8NdEV)<6*gxE9w^B%pkTeX~;DMu1n zho+ZtZ8t(4e3i}17IYQ$i=DgHwDCXGb)Bf&)C`s~YPD~2w7D4SHd+;AhUn&M3sdQU+nIkQ9Z<;} zItOi=xqA<0aJIHgdpLC=C}L9&?RcMn59;w=!QCm-JBv$LIN8#&(Yw(h2WRc3LC61f zJjwj8=?J&zU$9q_vDek^$!crVN{`@aNNb8xo#l&@_C1TK;)g>}S134&*)PPJx~6)r zE>7w3OKkNQ4KNFG>T_ZW5)@e=Gf5n^6_0Z6qhc}P)sKh&ccmwseQm^(lKd+qLNIwH zd#P9o?QZZe;fuHbqG|aSl=&K(IXo2BdGrs|F8z&Yf+r({Yc-hHOT7BdQPspq54;&< zwc6qhWR7+9dc-glqzV!Y9|%R~rhwO5wA`Qy%M7pd)LxUbJOxSPZpI%3PRcR#ymEc* zv+~Xyx>59>D2gdF+qU(p3tEI_u~O3ebV!jWt6|ciGwhy8SHT|3&iLWceo>+JyYgfrIah=?IW+p|kgDz%Ub`{)`6yOWInO*_y0+(2lb2PuIB#Rdv>rzuvuA2@9TZ)m{U(sMUq5z21 z#yqWMkc+Xkx-ye*(QtLh3}5}C&;!$#)qjb1@=VqV_~eGnoKCOzOhqzm!j^|MY-^5^pvi2B&O_u2uz5WAo=M!Mwmx~ zSbD-y9{nEku37(xOtd}QDa%Alf`bWn(~XLWEc|HFDMixQ>xUF-H?H)Uj_Dh?hBwUV z9XYKA4V4@m1|fx6dmaMmuslLOJ)7mnOM6j$9gdusocG~CJ>~RIAtkM@$*}@f;^aoF z*a%P&jhlBis$yf!-2((9EnR};xXR^Ds>3x-XG=&z{P_R}BBiFu`+RCmo0X+sEc}I#%wFC8TFL#y&-b^VleDbiG zFlt~Tp#rvM4JA8Oh6Ktrc16>QmyalRwRW!o3*W2vd9r@(A-e#+4t!CglIIEJPXzUI zb3%>NIR60U-p2%fQfty_PPM&WG$9CuS3>+|(ZRG;<<%m+vfm(>>Oux(Li-qZE%S`? zddeFArf3Q$!uH^nmL7wccPJ$#qO9n#5@H5TmDWPn5P-Ynm(#u8lcCd+x3m3sgVOZZ zWU-!`_*}H3=84KDl${cTTySNZHx$+hBNvOsS={gcS6W5U^*35p6RBCUt7R8_0KXs# zw{)@0Lqc>k(HD=lnCVaqW7d~oXpgL1fAUbVAXz5^i6aj}aS#;t^i&6y>ZYtTKv`-H zK&8h&qi(hzLd?3K>!;*v9(kI-Fhi-kof`co6=lg2lQyJLQ1O;R5VO*|5sX?ZeK+N$ zo0;$_c)b?2zH+zXDSL*`_v~S8-}WsJ>7qFu`gE6i9)j6{98s=}R{Y_7(v)UQ+F$3= z*S9a5{N#i`dzz%4JcRt4uX@HV1T5eW$4qhK4;^;e%9XKR!+(VxZo)Xdv#jUdqC-iZ zJ6DIWce~bhSoy+;p|~b>IN6SfA=$cl@v(h{X21Ze5Z)MjmHGQN6pJ{a4cUUzQLF$W zN-8splb1OtP>5Y#<|~qGlAjHjo~5L4Isj{YytFLcQXsijzqx_e z;T%k@qTK;QMXksjI9vzbwhOIn~dWW1R3zOqNS{pv^DF` zejIG9}PEe{n&3rcltt^0Dx3VI&((cW29S=&L+Zcw=>%g){wN~@E_Hx2tFEe0P zxm*lGa*RGbLq(N0H9g46KjXLnNbtONUokZO)9xKMZyp|>4|_WgPqi}!>6#vQD?bCx zb~6T{?QfFQe(hmU546G6t($*1IJ=Y?rulI*heAmo)R2>49-p1`zSXr#k%;%KLj4a+c82@r=YM!X1r(*1tPqxKdgU;I=JX^6q!Jg6bJ z5#`2jRCoJaQ|_-0mgf4&vGb_Ja~KA(3S4-!(+<&ty}S`(!syzkDHZKUM$i>} zYwS!ivOs3_AMs;JSSqgkk5hxnl5lo}tVMjw#Od|)Axzy^LQ*lgmY(a=^Ny>kpXPT@ z#!yTH%fCQ(`3c0VX+dVWtdVkjIuS|^7ppk~mSSk7t|-fF_wSYXNMKd3GpZtE`8xGi z;Z2JL?|9SAy$`Mf>P!tY`pel=gQy9Wnx+SD#-I2Wp^6qGp7@uADfi!K?h8->!TEoO z+}C(+Iak;5!`?r)#&4nbolS?b=7@ z?@Kx4+mR2bl0iXd5a&$QgqRJ^=mrHTG|>e*WJ$;!=3V^e%9x#^Sf`@^A% z%j#`=_u))pOQl;@n$m*+z?(51kFaE@zsqIxq9<;w2p6^8IUAL&d% z6yb4RY%4Ik;_X;jKZxm;oFT_me=KChMgyQfbOIb66;uWX{hT{-IjxaU@G;=6%@L}& zKb|u0FD!QDHD0SIP~pOqBL=NT|s|mA}n$9>#eC#yX5F}Hu3Ri^~}yegDbvbGw!PL zuXZJzuEV{zUa=D=rinAx#6z>JPPf>n?*@kVuFbVtTsX-8%W7OL1=)BDFD(UeW!t!T zoXc38^^%gGEoNgY$jRu34=N@uq!HrQx{>JDsMJ;R_uB55+2_me$HAkt{8l(`;5Yoc zWMvpI{?tJ!-|>~=nPqF+!c4oVdrskP!Di3@`qqi=9^Qn057PrKv@h!d?r5sLF^6WwScNh4mSClb$2(sof5#}J^iCO{zACMA>!Y9@xa8VKyO zcDMF#3!e^L^_C?c-zx!Yyw^GRng5Y^O78tS{y*C>1i*xGWlUm<82CXc3#Y->n1K~5 zb2R+VdP^O?2#T5p-ySaqZp{_$SE?JYiJCSROC<+QL5+C=xs3GkBNezqWL zs*GBvdQMOQfl~G(x(4Deq6zbJy>5g4aN6Ex4P|(wb9(z~;tBA{*`HIahSq&`>G?!@ z>LVzDau6U;hu+Vsg`x@=i;=6cpLjKj)j>XLMzq(|E$^f~G_u4zmcTcf&xEQfRIko< z(HfVi+~cH=$ex{q0FhsF+GD!7l>78?R<1J5SLtNm+wj= z?HaveHd%K{4E^2hbe&w$q@f6Poo8aatSD*Y|F!80SR%uTYe`|5YQGF#&9s5 zL6mK3V4Gxq&CU7I^P z1#{0UvKz0nejx0kBswN(D3f!Q6DxXy&7D{xp4r4pu$bLa3B(ThaHE`QY~&j-UtE|cjx_De@Q!wP)|C)kZ#G@b72f4hRavDZ@VkC znw=|3+{ktfC;L#iE+TeG6-uU-&!9P{cRvO8Z8${0^@Oj&5}8 zv8OOw%NhIMHqQ$5YSFS0PDy+5-_)9(8a<13>(f*w;4HYe|6%7i!9P?!@d1c$u6FZZ zt~UJ5)#^;XmxzIVU+CUksL$%rHl4(y+laY>Y~_Ky9kSRnH_yDaHZ#WgA-0s0owaX$ zYILNNQ<`I$;b)O|)gO14B^8RZK%b1}Pcy&zZ&9$TJ#VtVMVFEM5~1f?aBU#KCAhn{ z!s7coEk`9oMPf4+JZ9snEeC7e=`o@Dbo$4DFnxwcg|utlgM-d|{zM=SZiXV$5At`y zsY=|zLhz7m18kOU>TL>9_V1^4t;g4n_tS^AC7V@iozLA#=CK+B9-+w6m08V)mht)> z#2a{#w^{)=RJn2H{_$&@J;p7?2g{LXZDX&aj*#4%@4 zt8s&P+3@_Fif|Y%1M6_PPT)))N9=afI};MU8JDp4K1F<=NKK}t2GO_<2Ud+t$dXP8-hT)C zdqhnR!?3g-v`?yZ6+*D~?>@Q7HnMRE@#C5h2^4}=z(SNveh-uBhGqQptWG!+I~02G7I-|Ntv?__^X-t%`&7Zu3JU!F z5rH8RpmM?Zgv?a-xNnmZNKcxkJF>A_4UKu3sSG5DAsA=_NJAh&(;=7(K4I=rfG|}`T*-#7qO*$s>BgA`U7A`$#uLzzg<#n*JK#u}AcqnlZa zN@!cNgfaSmMMqM^8j>c>zM3--RUdHE%yJ6z50JE zLR~=hWf@I0(}RqNUWKf#Dh;%G9!_=gt9W%JjDTP!_ii+a_=vc&*nv0=3SjS~2y&_M zm{Wv*t5ZCldoSY69u58<8~rv45O0YDWRvNNMomK>={Z+Tl`l8yI5F3${EC)mtuUO0 zExrO5onI%7&(8QMDPP%eA>8*FUaxjZ8x&4d#IFr8Gz8fAKB2$r*w1p5wRL1>-5O(jOmX%y*#AjFweIDh9E$5(UoqQ%ypvb5PkeZsq71YE-xZ{}B=Xb;ZU^ zqFN_99puj>H_;8G>_4?bnBHj?7YMMm3a?$M?*Gp5%n3vq5>YEiIJr*dt(}?Vj9Y<8 zJhH7YMvcDx5y84@M+`pM6U6^<9L~DoB!mtP`@^cp;+9?2;UPYO=buL49zDG%~=ADP>BJn~)Mvc|gy7@x+Amui`+1kdV`@FxdVpimo9kkB8Slh73+9Fm*b`uU?mwM@klMdVlT62;^hs!NOw$<_PxBb#-P;DWxVO^-XQD3*@` zO)AWZu&YjNYH^M&pw-N0A+WcRBt$hrT?yjY|pvc{XxtGqpd%iMvTwys% zR(bEsI^@zYzqym#J$mz1ZfsF}LKh1oD2UR!@@StN^w~ISJ-tq9xzxVO*qXNBE$x5c z#>adsICOQo*5A7N80a*KaqB&Nccp*SVpW!1n&@PRKe#YgJY%?^h4fNf6KlvC+G;OZ z3?vf+Cz$IY3#m-qkF|icp&mhIR8#5LMev-O%|77;wGeDi`=cLU@BG?{BGpekj*ZL8 zT6Jb|Rlx^32?x2P--dl7Iy5|J6@6vVb?$)n&R7t^X>W_VUv7+jc}KMXu4~@!-NN95jQaaL11m_ z-1jBC(Z?G;@9$T*1_1RYKph;1k`714E8e*+4^YJ#*JCcEOw(zUR>f2xg_D9d8@*aEG4L+mcP6<3io{F zTKs*ov+-asy^KR??bxVYJNMYyc`Xs$mC4U)aEB^no&Az)tTUxrwGV)XMRIB0<)*nB zRN_nv?U~zEu9q#U`)95FZy+o(&Q(Xg(2nWf;QQ4U_f$og&#lW=QJ>BG%w0~l4h=dr zZiyJH>lrUBm?fJkEGS7f*uH*G65Y?*UrJiaoTv!yu5FyKngbpx7iI){SpgnhZI(a7 zsxR(n+ecaxP6c)7aJUzU`}$ZVipLWvkuRqXPCbTg4fzCFiKzrMAyyQY_AaCLbqX~E=4j}-Zh$wnX>ZNCYdTx*R4C))qiQJqh{G?&!}+*~i{tmbVN$*YHlYD#nNkXmU21|;6NPbADq0(jDM z#VNU=QG(sX9*XBzkTdw`-f>Q$)gUb1z9qy=XX9s_@!W$QgMIP9CeYxxHR;g-Rg}0R zNy3YB9~F?7_n(`u%k`q^f4+NDHd9x)$bSt9ziS3HMZR`!WMD4{M}y$Pu!n3j$tTF3 za}=b)k)1bQ0~)<`8<-d7bWdptoI*1QJgF)Om%Wz3emR9IKogdpipk}uB^ONhmGGbL z_rz!c3YQl=+xOK74E|;c+H%!dsg*IWH2%@!`Ao5@%pZ)8^4vkYRBNO?Y?>!qof`v^ zP_M_2uPiQlzGhoNVi@jV7-zI-OIQfF_r}q0uG(fe5N0)u(%%MY<6in*VlUG59plh9 zOSHLsNA1K`k0fv}4-WC})<%2>5`dR(qP#(ReH~k@cX`gIV>|R2S zRC^~4S&p_gEfb*LsmJ0=R43_Rxx|5Ux(9j5@eMpX$}nPlOCW3wYZVPiSv-3LSWnAp zrayLcQB5?;=6*CGOCuFh;JwWKUKf~>`3W*F@b#Ah<+hmK)-x=xdewnbXSd#1LkAD> zJ8~UaPn>4h=PIwFW_M@onxS})9MaZrBELqx8x?(y{#bv=b_#}HsOX;9e;RxS7r?*_C+DhKKe;fX93D;>b`EX>90Ri`PDkT+gcm@p>(8>j?3Y=359Yefsq z&rby+ta3X@hD&wEbPM3BGy}aJl45`bQky3EQlw&qtBwPatk%$32(?j(X#JAhRC5fO zvJ3;RzY`FLr^%74CIPR4Wzqkh&EIX^*>)Hz0lyBgXjngNacu%&gi7#MMPTSp>OhzV zlU5wD=Njfs6Jpo}gUCg-`t!|P)7K+$AxD!u-y<7|7`g1DxGAxx9Z$A1vT^-WsWeYV z&&-eg!$JEHx{RG1nsGSG#^Fkb34=7-*Qjm*^9x?2v-q4l6C8QXrY?!0F7sM>aK}Ic zL`;G$7Su&vUvfgI?F&)4l5FCnda~db6W~XP5MilG)Ily=anEGXn=RfN>=P)LQ^5^E zsuzdkD>CtBMh#oV2?`FuevQtY05@F!*_|A)db&S1O@mIGB?ffiB6E2s-qX@Qxt3?@ zC(VI_S3;dy*32F22WLl%rSBI@6*B^(-FKubo@We}c3^WoMU<#R=JR9EiW6ITCG|az z3zPQPJ^SJ%yq-iwz&qvO1QkeL;pZ?jT6Vv~7&@p_^6!3V`ngqT+Zj%kwr!L~1Y5ZXvB5HGOH5`g zeI`1)=sXdsDQD2)AfhPF3fuFu|A(!&ifV&_ns$qq;-$D3cXtWy(n1Rbf){spD_ST} z+@UxWcXuyNa0?LJ9TM#1{r>OB#ktE>vR1N^?7e5^88p@SJkDNa!`qn*Eq%Wt%(8Ie zo|&Qf|F)Y3c2wYCyo&ym`9KVtUKReb+pWv`n2=a@*uoE^|uf&=6SoX?B=SmszHU`f1PBFrnTZFn$Bsr=FH zyZQzZXTNTjO{FXCPU>z0Y4N!nFQaGB9Nw9qmnyk&%iDd_;K`4`jJRK;GCll4>V`&{ zU|+(vnW2SY6^E*VHf0C>X?Y4gq2Er@^ODlVZmQ%KE&qlf{Ale`OnB9w(a5@-PcO_U zKQ*M?YER0bZX4$p@x#kciimmH*8O7=|Jx?($EwNt8-))T8tfmvE+^d6V@FHgP3Nwq z3Ih^%=Iqh^8pmthz4qth(M3R}VZIuVa z5{IH8Ml1uK0lwmA8(AW7ILi6Z1#PzU z!4D^;{5DobVMRRIz&aQHpzalZLc{jXd3c~L|s&SzQd=a zNHA$bhvMqC6CoX({kn2{a29CQ}h@7GQh-PZ) zwcDJ}ebddi^tYEfmLtII(+;^_2e%?zTK*hb0BrfhO*()u?D+0%_Z{1o5K=euQr#%^ zFLp!MYjJ)3iBmj%E$Q!1In)t4;Ev9(N2Iun5u_|mm9A+b16*o+vR=UF!GXB49}UrTx)ORo!4&%WAJp=mD4s3oD+46|F>~MT0%_>)#VP%h8=qN zYt)YpzjL*00oGQC!S0Yc|+{CDJ$fr+u2vd3D?)fAic7a4TS}xwf8?T<-GuS&BXtsYRBKg*Ss8d-Yq7hhsJbyXY-$sbaFD5PPj`@>KXBkqHAp8^7! z>agm{U6|~;sC62ps%&eZ&f0d#gAnSe5cjpyt~eD zTLt)w>^^)12vgic+7Vnw7()EHF5=hlM0 zD=>bWcZwH{R6UKB7Zy`C%Yl95Kn9j1^CFxrtI#5Tvi@JBz(+QGKU(|E<$wIOgyzyu z8_21@g0aJH5X5ROqyz6|rC&FLQ*T3lGZS^R2-(nJ-MVd+OK5aFe529q;G}MtbLCk7 z!0a9v-i(`8QhXD`xnXbo=gT2WS@;lgvB;>y={kzJ)Q!6PWvz4*sWw?At3E8{n+$$v z?{<-G0{@NbQl3kk-S95V%RII&i2r7R=R1L0DvIi>p`P&;zKHY~XlD0?ZvV3;V|D_s zJ6^wtU0392#5c@yQDH>pME3#AGh^X_XOliJ2o_sjWm`b!)-%ZNr+OK#z0t^pIx+8{ zGWc~%jXzvDr3!1v*QF2lZ-e`nLewl#l8se-(@t@ULu>*?ihJuB%>&@`5NbI$tkx-Z}L0!6BXw@k?GvvLCo9 zuy8Zvq}R%qtoEgKzJ_^V+Ci|e*FRu*J32zd->v;VB$mCm^Y}N3j(_wwxas{kufFey zGM)#9lQXzcFCDi*bgWF}4QDUa%H(wOtyQugC%RJ~`S2JBZC}Xb!adDvLgsHAntw~^ ziC#{LNx|D733nWfxMU}G{rR?nrA%&_@o-B?Cp<~AQvRPoJ_Tu5M0q&pn2}VrTY5KJ z^pb$h2$iWmR@y{d3tnrF@TVnEp;OsPBjPRJAi|E^`c#jcoy|LWFhk$2z01dfazoN^ zbXm;9dvJrKAK8h**$6q-HA3XO*p6Vgi}xbB%khm#vEhjAyVM{?90oolR3l;1sEb&b z#GZ`uR8YAnwisqlqqK@b$Ys5WkblibL(vf&z`#rj)pHuk83#3|blW7(sq)hBghJm% zpBj1&Y812pEB^DTdzL+i8FotZNQhZTkG|$U>1~*N78Md6*`{s;%OvlWNJFG+)I;DGR(wULIybZ@P zk%M0wBG@B~ewLR#GBwo7jL0^s{P~*x`(DiIHT?Il0~tRsOD9>lnZ=;Gm{_JBuvPdy^1@<)4g!I%%CxUU>UP<=7~4TwjuC)^Tcc<1On&U(>*C zsL<`-HjI1GZ-z^1-L;17s!pU%jG=?M!R#r^C?0)!2+h1F^RQ3%6O=1CHJs8QG`)z% zb0=K4m;Gb>)!(=yGLP6T+HZ8LvKzLaG>#B{M|fa8q&T_@ztPi1N9v=(G0f`8cC~%) z`zE_a{tx|&{|dzwB?p zbO&OiNEF;6je6N(8Mz4ye>8Z+4Y)tKbj;wsA~F@&h`y~G%-yI>gHi`x8aX~_sLjHS z2HdJ()o3LTt-^vtc$msC_gl3FF`(aBh>d=i-0DS^0+7*^O->8q%YluA>?2*a`b}9)t8V|wBHPema zZTH!e8Yjc-Dgyi>w%OdGl_U?SI@I;TC43h-8zliZGL8715>5GHpV^^9Te(L^LAbf+ z+clE4=!GRTiv7c{HsSh1!^<}%+cG&(hniCnzFRQ-%e+zr34?RnG^x47bIF|o+pA4^ zg;jIIz&FCGJE;WAcK?X{kI|ZctW;6leg>O(eM>5s!=>!Qs%j#GMIr6`Q2r3(`+k&% zG6%Ft~x`rX&F=^(Q($Zs!~7C>Pa7#NP^t8}yKzAo;s@unTt7 zT$H~BKued-y&LcRWrw-L^m@pu-goS-8qJf$A7|ZsxQ^@o_Z(_R*2#v&x2wx>n%&Er zkW~izo1=K18-^_H>4ktP_?UIsP=_%xwbTpygbpY%(rE;Qq-E*WVcYLBDXmq@X~lQBTLkTNvppu&fwaTq(w8Yy4CT1aOIz zf;hEKvVuQ?dGY>aM;m;2XF$-a!yrNks(EB^sJa?XCk8u>Z}((JVomDI!^Z(bWTT)Z zae_RGebfhs{7chfnx~Z62#?7wVQuOoQcP)$ zCv2ZE#7Q_@;#lb)ta`K*f<4}6ay4JZ_@eC!7;IiOX zYOH7G6BuE4pR?c_QFy)#MQ;mK)`?Jj4yUs0K9?ffaDFJ$z(&8wzm$prTtZk3MI|bZ z>8Yk6MW&1{$zxpPP>X*0lYKpCl;pT9nW;ivRp;zT4UX(&IMSG8Z!=^xF44O)V21CcpZIunyT3ULQx?_g7v zd6t3y6+(6WImWVD_N6kN9;D`)3B;#Vrs2>D*_&ffxS+Hz8M5nFSKie$QQ|C}ue#aE z-Z|J%@aG89?{#ELT}MF!_MfyoQ}I^5Oc$dRW3oEkdv- zLQ#S)`utBHXh3o9+^@|`MD+tRUk|EMQpUkJA=Wctt?qX`xyfIBXhd-SQ)#*+@O}e+ zDI3zhJDLxAyTLv~p){?7;WaNE5h}H~*WZtx#f6#Y&bm@)ESV#bP|XhLU49c!2x?DE z4fcO?{#Q)p>Iq)KyZKtTE56N|s{_3H4>JVPu{nq7qVE2W*q>kfgpA>R4>CKFt833| zFK<}vHr(k^p_0-5EGTBNwd&M`vK8DFvp(uraOHshw&k!24*Sr!C{HKP>x7-e?5wxD z?}5#t_KXI9OgEk7Ar(+8PrKx*2?Z)f?J!ghROiRm@)hKIf8zIS8Qe{oH&WtPR*2EU zms7t)zB;@3jV;?Py7O;0Z}NGBT+vFG(qR^8Wjn`^-M$(4WD%rRC zUq58yAeQ$o#)%d1)o5;}c?ORUH&&P_hE zcK#_eUbokp37bCH_&5_eK8P=yfQQzq5vt4Vk!Ut8oIx(Zuy7}4+nwTu+3w$+M?axg za_&Nod!P6CrZ@Bvk+DAJx*zw7}gjcd-WsJ8fdS@zr-&=pi9kAtPxzAqU}hT#@B70_T>L;t8}wNm~Avet;(A+4z_(g-%E-14D+=$N;!p-ng(TD4a(6oM4audGn2|SNmwZT@^@<+QgQnWhkv9%nP zr*E;dMrAl&??|%XrcIqjs6L`OEjd+I^WL{|Y?>8>V?Y9nN)#;j5NAbb)v0doonJA# zE)4nNJj{v<-fuKS^i=)+h;~exOg&mp>W|~!1r^CmV}PB|*EY+RLyL4fp8`q$ z;b0eg>m2)_x)!UmD3vLloA!vrjl@b?avpEe4;t>R%0#jX5_@vT0n$N#gTJA%mEiUA z=_#z~NBykHv0@_e`Rh4f#KqtkKdnsTDn6yNq50fE!lS{MNP!iH$ISw; z=~||NCylq7-9F%qwL5DT)h^Xt%Im3CYdoAQmE|7HNbmH12(9@neVhOk{ubG&aH=G% z%4Kflua(AAQ)^S-03UxS>63pYaKHKzn4CU@u%2*z+?I>}`!x4n*dF>92_vn^isEJn z@7^KUreMjB_CaX$Z#rHwdaI|nzh){ZEc1veQZ2dT$S!KtFLf^`tK&c2gv^mSB2B0` zHjJvU?LCc+x(7?~QSm5G$UAeLz6-@>#WE@TlZ~cU+GHf?N>_|&&%Bv{M^@X$L~>M& zdHUg?W_B7UYlbj{10$m9Uk_2LJ-|3>%!&~0ylaVpUN7B;@#bPl-p;Fc!8tGf$(FTo zcilku!l_F6%!3`JGo`wzn+;M#dEpWFkMXHsDd!dTz02|Imo%eu=>u)pi#q0EoBL+@ zLDm{&Lq{2-XY;69C&u*5v=hX8x;RShW75vO`Yf*kma1))2j9(mZ*^8da-WZ9%Cbiv z2JG{u^jfLrwVW_egcTufvSJ%x`+qx@4w6} zgu5?H)4IIrqznlK+n?u-@sDrOA>CWIKd)f}>yXTm2s|q!9>Lk*BCqCp!PyTV8U<&E zS$(yBH6XYn5Ow~fW^1hO@aj|og{Mg12eb#MM2*Lc zzLJD1`#gzmXKV4Fy3SS!!{toNDz&$@GpkWuX1eirxa~Tk1~v*E3NwQx>i6`A9M_3F z{96t`r!@`CXSC}5ZLr}Q_9NTv5RadqmsNRe-HCM@P6p|0$nm!8tc>UZ77I#ohLe47 zn5W9UWr_Or{M*<*0e;O5^mSJ^DuJ)R`uMj*@}sLc&sTlhRp)h*TH$<^#dFZ7?A<-% z-(pWT`0AP$7l^}mz*GMN-ZqO{yJUMK=XIoNqh|4v`corGf5lh~99<{!sl%_eI)m7y z`RHh-UJIdSXca|T^3`#j68{cpUmu0dMyOu4pkzRHxQFuIX1Tm5OHaTtQth)kPLA3v z6{GL&Nu-OWw#*aLA+lk0cqb{PA=X5hzW2d5(y1svg-h9GlJMEdcU}jZgdF`n+T`Zz zBqSNUqvJA`Vou)jsek=#k!0$avTqbONx z9Ul(;L{Hv9pxI>>RKm{iwg&YWBRO@UwjZ3Ox?Mypls>UTZ_+lIFEUN{&dM1pULV+5 zAu*!2l|ae>xl!Z!B2EJ=%BSBnewLH2*UN9~*{GczV>Yt6_k+}z1p8A}*Z`3$b*ta` zS3`}-JI739)w60W3hpT|d8T$CoHsl{ByEaDzeKVsx78*+@J;;9f`$-$o46H_TeN(e zc#6AS7r)kN0$zH=$Fz-gqwM25xa8r-v`e8(gZ*Ku>`EI$G%-Q0maz94n|V4P;CGYgxGaC5;z=q*iC&Fqqqm!CztP(Ei2>~YbFM0W2)c$ZoDbpqU-Ai&tP;t|%n1>wgZt=np zFa@Zoh&J!r#Kvr`^9SfEeMRntTlX5XM<2ww;=-bkKKn9wMvYqR?q2ws<=EdctYDgw zrDXP>r+YUY8BgS_Qb6uNsA8~=1>^eu6dPvoYMdck*r@2!kIcmtk*k~~Uxqug{tkqW zA*`k;JrVJD5_cVE*VNna7r3w&0Xx_JhQ&9EPvlt1=jzN7Ui~DxHy40eOWe9J_5`Fr zXLG~U5}%yLG-`f(0>q0AJNAeBjCC#+yI*v6*E#<=LkBg);P6rls&6cGzNX9nnNt;N zsS%m)j`nlR6ROYZFa?5tWaZk%F#OIPp;&2q855d#pN`zi^ zyEC|sL(3vX<|KofWQ_0J+Ky<2p^JvJ!VcMMl7CCrTAet)&xXq+PlzY)8d8+FsO*EM z;|Yc`=o-M9^EDdM=dCTKLsmbgFXv(^Zk$g_*b)8VHzUQTr}nz-;_FNQYK^WGbBCZ^ zEODxaj&_-vC+@T}N61PnP9WSF7w>(Qj}#EvAD$hVHfT2(92G^Xc$Y;5s~eBNBnJ@P z3RE>aV^qhkwwzHs`nfE`d%Y!A)E`Oy74V(agKh*-ox&z*mHbGuHpV)FZdhahT3a?M zPbPJXTPWh{Psp+{p9TSwfBpaX6enY=oyFj1LGA!q4Tfc|JwOhDpksKml3bT?7@0e< z=PCgCjN!LLzOqkWN$gujKVw!7eEk8j7j`vyZZtuEklpTAd}Q}WeBG9JP(75OJ*!oNV?QVHjWOZ z9-K56ZLjL>{6Oy?(JK9|v!I!tC%Q(sKH(o)dsZuL?A4CQA3TG@cOj4F!c%bEGd=m1 zgKb!jJni=kAA#mk!RM77OeTfdqe^%)|6moALG_Y3_7 z={2OI-=GWdYBK&^W4h)4G4Gto=tB5cOXPiuEa8T}^bo0L%6l=XQJgQ=P2~{t2c0pH zNp|v}v6FB`f{z!RaUb5G0F}i&72KkZ7IkM2QC;8WYN$2?02wg3R)lEY-05v{J6{KR z(0VoDH<(b4kRdlLfC-J5Wun5jo65x&JAMwI35V{sEw4}TwKX4p|7LFXf`3ioHiyI) zPPi}_sZtV#mufWYoH2J;8vN`gq{^76Fm0V_)}VN{{KULs0SwseVGv9zKy8RRT^`q> zD7|(0=D}|_q%FY98mRV*c;?^M0vEoHxLSw1!@<{tT}!1L!9PYH7U`i(NR=N2gUqzj z3*VGr@{8dM!Z)nnqhk`6y-h%DM^JmHSmO+=avzRMV!7q7;vxZ@ndM=!D4Qbu?Rxk~ z^2*Km^}VOxg`Eo+{RS%}u;*5_X8w&6zbrvce&VV-rm%D5On%|;)Iv&=khl1NyzGdT z@C+6^cs7MG01;;TQi5Zh9ht*(lrtG-X&IVr?RoiA#z^q*D%Kk|-625p(tBGm--30rQzFC8nT>*(vlSjK zho6NLou(%(>u*Sm^~FR_?8o4cz?CJO0(T=~?ZjUlYQ#Ga4_vI)6MV1Pskd68BMVw~kn;8q$61%x?9ZcspFPKe zDG@pUC@>l>7NRFvEcBbe4)g|#w%@8vj*ZsmYtC9F&=i49yD*<*vBNZFQu3Il-5cN^ z=1RGe#p4B~YJEn9<1?{8*8Y9nYQV9(3bH?r4TwCgts(a5fmDjj<3AY!0r~rSC9MnM zuEcM2mt*kn_wGOYUj6I7Q#J(Lu(h_2*prNL*~Eu;l6>`c&-%H}TNEFC=L2i1wvSxs z|E>E%K;}_R@+hiI0D>wd>OT$^R4|}_ihD+aDN7PRYznVXB$oRNzDv41SBW=t&)eza6RR0E8YMxTw_8oY|cENH=r1d+=a-HN9uv?0Ti`3{k(R0z;MEFE(LSu{Xjh5; ztcQhqZ^z~JUkfwNF4F{~5xmhkL@gj)DU|drb}QK_`W2vr89<<^K+aD^?o4TSj&KP# zN@=jVmc}+&wd9=Y`J!xK_7z}}lHYS7%ZQ<`y>3olgQA5y6!dw4Q^7KJ^iLCi04piI zTle~*uka4(k5@OKmdP_ArveU;yD zZNr30d)nI}U!~PboJ;J&xAr}081)!GtlUhiXRUZ9NX>&;+())>}78QiH>mW5KQuC81&3~>x92!=`#Hu1y~fW zQjJ(V-aL@7HUHn~T^fVs&Az?qR&PcTi@=<$+zlQItn-OwF0ONWPUOx_|yM6a(D&Rzp=;W?ZXwp0(dsmjQ5d= z{I7Gex@^B3+g_d`r{$$O5fR-KaKqIRQs25I#f3_Uj)`KoL_$ zlboE8xLk=G6~D||9LFEe%b;5KohVVVn+m(7$eGn^&vT9HhQ82K=dWQ(V}y$_T+fhK z1HXlz@&35KzDE>Q2mWLDr4D|DfKsE&!4kl$?#E|HvU&$OCTE!7*smV}0UGtBI1st$ ztQ|q~jO|m=V!w;t z$eiB-psu4Ur|?$hB2J>x5Uy&AsGgKO@^LF4$+AxJOqxA|QkJZ#B6Fba zb`q@u$BeQb-;Nmx5Z&fsMFkwIfYrNSHG#VEt{ZM-HUU+COb|;@a2|=+HjOWC_P@=7 z_~JUr8T=ReB{&Z&jrm>Q;@GK7b@uN7-7`VefFrlr zbuXR<87g?W+2!|&4C*tx{-2TxK6OdZ2(!8Ssu{D` zS-rAljnTzY(|^H*l705bnqC`noZFOT`R)M53ay_vfw-?vD$k<2;EPQP0bPvzMx7Qw z&K%AXdR%FFvQ1PCse0qPKd^_Xw)JDBAc<1DARC@kL=En^4_+BRNYASV$+XP}e&}B6 zP)c>0XwfCb|7sz`etyzX?$BNKVnc1?=>_cl*8il)XGoQ~$PqMUo``1SMCO@e-QVWi_99;g`c*D)OnIf|j%ZoB=! zxwDm#7!z;U^#5cp2(5(j+%&E@ti#0z?JEb3@@1nvjD>idXB=u~yF`v;XMrH!y3|ab zjmE^z$YKjWcz@v>(8Z-SNlj>@IjCXpC0vH4vVB=Eus@a^G*R>7jK*1ga5hKD@MM=X z4`@I<9oe~C1e|S39y{DP&>$U?eBwx|l&lU^ZeJ(TTn8LeHGj_&$2hqWHAcNVzJX;# z82W1TcogDKB;#o7_}0kG$MeLQ{-LFfmD@dFc@D^a=6$(1gp`zPP;pMeqI>I0 zDv%Dxpofp;(Kyf4Nl>i?lN;z5ba}8yI})=MYnx3?%z5v}!PQ;-+k@98?bGglN2;;2Xo=f#Lm= z8^|*B@!n^+lj0z@xR_z)`%y2Ul4gR2?LN)N|6GN3db6lu zRORHro`|6(?OxcBMJ%vV2Cm-LIN#lkq4OS&na-r^oOJ zfZaV04qrb!y=Gu1UX z!=hwTzhp-(q^pd(Tx3`=>150uCnhLPsOjKA+Zu5?Xl%#U2I9z92yrZ^l38R?+ z>9Lu;x@M@~e;u>_oYi#`vo*o7_h;n5<3q4pqfPR@i|ftp70?DW@NOy*XmP8e&`P2F z2*X;FKqhU2lJ`O0lhh}zraMWDHEN2VTd_odXGOX)7nBUn#(bNH?P%Vzk4tcIWC%}o zE}LjkA{;uasDTy^Qv(N5b&NP9UJ7Jl^eL1y#SrNnlwKfD7|-PwmB8NjZ~b59*62>B zpUXSx4RbPH6OO{a45v;O0~q#3HxVM{%5YRnD0tgA<(cEcRXRV}Rth2K*^=?xUpTDoIshzuzlazR;yCq9{j$Vh*?ts(veZ{D zm7Y$Ir{vsSb_iW-T~Fl}y*c^Ur{{0KWbY^;4t-2*$k7hd6h8ea4)3D)MCG}2ulWDr zC!kB`Qu`Wh*VkP8{T&9s_ar)DP&)sSsVbn<{7r|ZtRdroT+EzCJ9PrB zGSJxfUIn_G7)7u?9VR(+XC1q2;5THFSPjax^=(}Iezz}-)v$H6J!%(UEBcKma}=uz zNWhY=RdaUJc)WFJD@FCzpU$ZAUEzjb<1v+p(WzpY(PCensSjf$*P)%;UiwUQIfdCo zUb}93N!QTNrSW33%M$uR)6a!Q@+_qp?KW&inV9pE zuM^%x&mYlg8ytG}qvGtdX&#Ldi^qrGN0z6zxa+sWX_K?=6Ev|= z$x7hkkc9!srSV^IJS8zWLHjuwDdO!n9FNT!`|km7gvY8MYqnIXmlikxv*Mp7=u%!` z&rkQ)4_D3L>J1yiaQkV=ToOecBC1KibCo+vlN7DLgn#Umg#W|S3p|&msNq{U)t9EC z3^8a>zq{N$cF9nySAZc7)MOFz5DeZ<9hWQF=G47$=|eiII6EVVMB1uY6=y>JdrY;w zhZPz0d6~SO;}M^60{7m(JtKD99j{IX=SSC?e>j#U_XcX?U9PZV84C{LHS?p6UtO33+XE*ovI+yzz=ivLq2&&w= zcXPuURFHf4zr;QjfB$!RuC}*Y7{HHdRS&$BsopsR4aGAyYC6bWsHu#L;)Tm2tC8LG z$_S^y8eW^C^HpkXNl#XKQ?GFgbgjBC(CbI=)XVbY?y{ElmawS*>&v26=i7L5^de z;>z}beQaem)1V~##R%Hs%0B3%WSB2#esPXa01CXeyfEA1a?YOn*v_@t`rrWwK#@;| zdWob{F@otoLidggzbi3XrZAqrHej?>8|FHhYEiwd48EbrK#$QI7w07X1R|_Nnhm>{ zK}w8l)aNyAi1z*{F{nBNhgjIs-5yoWP*!~2-vcR3Zk(p=`30lV2b4wxwOs?^eK&n~ zt2EkjA0#RnOk>S-TmcaxWVVjX@;pt)R9$ade+g6tt|Yh;9=hYZNFLoD-)cBGOaDIL zbhQ0=-L54`KA?}Bl(>8qZa;eLgMa)8rJVaEj<1dp zBGV%8Z#YfdZg+1WyMxf-@`v@q!AEen)z_~63Y|m>#`+g#vI`rt0o3GR^XPuOoOTWt zc6$*rGJDp9Nz1As9Zg;|{dd$rwxI%L)b&dN*FsA>5 zUh+sw6&#acBi9d2Y~6#|6RBw0R^0y{xAamrbA9AWc+uHpEkj}-|8QSZCRMjXcjPaz zX~o57{Mu*RRl0`1im28<@^wMF8C#Vg=$=hJ^enq|3xKnWA_eh?n3QDhsoDHkxr!8m z#Uevy8;bPxZ}a^^vdgN6u#yJW5hcC#lCLU1ZroFf!l*|vw+TzqdN=cE0=R@AlPY&& zH+Fx|L6EyZLd^<=>|J!rs;YwDj!HPHy27NE0 zAW2}j6vC!Ha1Uu~Urj?2#RPJV`F!GiBx58r&{{=TA>%579!4fWU|D6RuARTEvxk(!qh)rVDv#W=^D< z6NOECnbTznHqo8C!d>e>4*f`~PY;;#>f zV-cYH%hV~$=lP6ft(+QRU+`K$O9#v)0G8LSb^VaU7|H?9{W!lAQG|}Se7-&&T#fd) z$kSZ)?;x#Pc;*l6NFeun%BT8rQ(3$w<_x6jk_CU~zX=ys%vTVep3XSDWMcwdw_F`@ zkg!IOA}f4p_El}2yb_~u7hHvlb?3n#B~0}Py07!=f^%r+pCXnKcAFAY$`owL$xY{w0wB3s%|y(w^Jo`v~}gm1vr_XSzAZgikX|S2f#C$2u@_ zF=;`Z%~j+74}WDf_X924EFDM5ZJ~OLmAi`8@e6=rTg<7#RUjhkE(?iaH)&L9=a%yMo{^kgP0O}ZeV$$X0!GciQD12dZjG3SkMysPeb-D_Ft4(j z5>h2D6_(j!c_t~_k@5}UJdf{k5v>4O8WE+lL^0;@=EKlorc3vn^|b|xF2x;%lyeFT zXRwT!}N98+48v|@?e03!65va7T9rAeKnDDg*-7o7;&x9ZHt2H z*5}K+i6J=t>MUn=TYnlUo@z66zD;s7dXZ(%P?3+_t!fmeJpMwNG|^y>_*JTzgeNR3IatSV4$Qqe%zhE{s0kAql(>3Zq07H%Qb#G3$N4%e7 zQ$UjVrLCi4-?XOh?+KE$OOkBZZ7G$1(P>jnG6FrC6PU$}orr0bO?J1W6-#x|Zc}*t z!FAZQa_qiodMVrXcdzvQj%}+t>E{MA zXFYSzrw?nY2v(E*MnnB@v{;h zluOfb%8YFBmg>f>#meUe`q{M|KlynFqmq>~6g?z31$`_75l<^a*KaX|kzH^;-osSJ zs^X{3_u_h&o%SyH4*|cc8lS91&RklmgRF&uf$%%~>h6sCr*V&H96e843MOl{Jf}Hm zkzUvE$37{~_Sy2;V{D>m={?j4B^OO5qDCG2Y0-P2Oykxc=mgYC0{<%0kf@mB!QsuV z(P4DH|Bq)K{{YuhE!fjuQ^^fsH(1P%)Nz!oDPc(Ku6d~NQVdFPHU;vENwhb( zQk1X8sN4+ht6KP4xZC&kr!ju8j_@4l7pI%Qp+a$z8`k4>DtwZCf~-DlLk8yu4<8@; zq4S6TT{0xjGR4iYzEHsr(;BbN>TppqqpF+T_~!76<;5l74h_day*i+K&c*i>udpA^ z>lX#N1=~}o!mn2beX4r$=#T^vWj%E~TY|IyIotSlGUY8kfB8J?lJHH>^5qfDp`&`T zJ1aY|tL@>2`{fi=5@@3>cJgT^-PO9l!#>@K7rQu4q+~cCbJ6?ydy?BXhZrm&w9dPl zUmB3*6-*|a`h4xF^&kA78jWL^n$N1G6ubFFRC~qk`U@JX93s-+v-s8+y(YPTYy9JA zjMlRSsv^Qk|6Rcrz&hrbJ62J8iEfNmDepl&Ps*huf>6rm_P3Iil%rR^$4u|ud3rKT z_x^Mce{6&Q7$uM|(3M>k!TNC~j6EUvREjl_FD+=~SWVIq9&`;t*?r|Ni)g0G(AM7$ zmLd88XpmmsnN&Wk;ij~Y&VcdgVmF-BswzYl_j0Xjwv+pgb@YSA8^$~NH||z!=)N(n zTm9)(Jg}8>f26JwB;XW8x!rF`B*coOC7Gyf6=Lnxje!)*Gj^$9xjL9{`yMEUdu%53 zKwAPR=wI-&F%ainE?8)<1pyUdW6F%t)WQCo_EWBa9TtR4DtZ%8ZH;t3l{h#q2MkxD zVsdf`3vTonhlWMHB-|+M=H$#Q;V?jDv(Iy1Ci8wffM0H=x-@+6lENOn)tV0;;aB{S zyMEW49&b;d-uRz@Kw-e+%_Y2Fl6ZcFCF)kntyJ#u|J>KG-3x*Zd~NSa{-4v@r9g&* zTea=^7(CBE7%_D|1;`4VQ!kLYt+G8VG8ia5)PME*+uHalxqhUo!g^Yd@et_b>km8j zolp*MBrT^cEDG_!qnSA*?tXPEgLWY;7*)i^<&4jKl=$CMnmd^LoxvgwaPeJMPn1|3 zbX*jA2w0l3Si`qAX)7jamVuuroMA89_I|Kks_ww)4y~nM$25*p8sM((2QSLp*WCK+ z>t-Ju8jCetJk-PW5-`9fZ0HvmP04w;)60{QdQS8hYvm#ZW-E@%%WnVRZc)qb!`%}k z%rt}F{f8(4$iIR)Ya18Wm|=J!4BW6^(jGY?+~+3KV&S59~3XI5*X@z zH75XHf`6~MdCiyXN9!9z;C>7Xo-nHaSQaqAs~bBjGJ3_qSq`Ee?-V|j3sjrXLF3VC z)<5pUp!K5Ehg_Om(lj$9<<0rnfBf}l#ujHxu|9$lWTxk`;VIDlL@C)hY0)t|-{zMz z@efbSI@5qJAs@rz)gU(BG_}CSmo{+q|M*z`xv^F?i8O%?%L-&P`=&X#w4SV!3~i6d zqQ9>WX_u0Wu4RDK@pZd#`m5`+C0y7KzYi-v&~2l}+-1XVwPMTc!gh5L%l<`WwkTI8 zSBEQw)vv$(vm)LXn;>%N@c!`AYChBV-&YMSWsag*BKeJxkE1Q0FbZ^u1ZHHr*gLI# zmyO;Tq&`q)P=pLr=B2ju7tn5Tn^C@g`5AkBVACMBbE(Slc0;|Q2Q4BblrqufF(aM+ zYxBxv1xu$!xzhhd)H}9U8g0SaaXPl`q+{Fa*d5z;vf_@_LC3aj+t!M0+s?_}`+d*( z1MADPt~uwZQFYfUt1MbS*tnAo*Sx)mHocQXfVZha4&#{p_CVe{pUQMBkFwi4HrPAV z)TP9;uSsp}qIAEEKXoJVEVs9ubP5#K8L_Y|_+b5)Nca9)^G))dJ3$+GD`%zl`4%b! zHoUxKKI1jFobbQN<9$@mW0|FphZB-siK^h>81JP}IDQh}LWf{Hfx1()Eb!uW*s|lg;i%w{#{Dw;sOnfmLGsnH zNn%wAf+KgDjD50?TtD!zN4hzm5qz9)Ejrl(nDVBbck!#%^-@}WL)$l%7jvzabMARNr@7M&2Fa7*Qt73J8!kA ziXyDBU|sp~WVx28S*11cHPS77n@^JxR*=lBmk`hxZ%O^!1o4=i7Epcn3 zq2GtecRy&#kYn^z6Ku8a@?->?P6|m-`&14K-%a6!uz*uG!Z7WOLDhN#%e6;QVwz_m zNwWB^g>4#k@*?ON$Cw*$yFFAByTW|Ux*ZiA!|LDs?1q`a30qO9c5kscf$exxgS2Ft z`z3Q_S8Ony*ptD}4xClm1()*4D^jI1Y!}f|?ri$TJ04+TpF-Ii%8pL~QOT;cMm(R8 zkF3_@t^9F9c&M+D@oFjGp}^(p(QCZ6Of)9WAz2bfg3+L9t204x%)W~~EuMo~#45&A z#?WD&AibR8Qy(W;V}c^_$0N3=)`#R9??@nl$s)83t|w|_42ggkT|^|Wg{0uQ;eqZ3 z&g1p>DmLb4)sWU%YxL1ts3rFz2hT1{db3t7347RX-K>vo)=(&w5}SLXi@4XwgWyAa z%G8^mTzouv0lm&f-5Y59Bmxw)ZeZ zvYed6cpX$_LMidPamkWz-#d{7LDwQ`KANr6wKseJMKdwFg=#V`BTULl0sd_cY{U5n z*c@%cYsYol6NnZ)lninusw>IaSvZQeLF_Cx8b4`)fcL61!Ab{IO0gQg$4B4Y{ejh5 zGn9->N!m$biPsHIQcH?@L6U@}GOO%AoxB`+;Jyrp0ey`6A<<9F=HJ%gzwDVc`%Dgf z>?ZoD@|7|;tvd(w4jQB*4RN=MUbrgVMypiDDrMj~PMptpJHserI~C`k1&H2>#Javc zn2TNuh2T8szDyR>K_wr)lT(}JP7!+xP4U0!owQ+t#P5rF0YV~1u98*k)R=)Fi1Bx+ zBvNFbR^@$>u+8Y6daS z;0XS8?s=aB^&{I0@XhB!CQS9ODE&%2DjV9G%ziqrT&8g`?D~#@quGWQK)@S6QU^`j z(d{1HvqeBOqa_P@i$}od1-vzVY=SOk8T$zqwY{ph^kemS>jU?v!0^{?q(yW$^L!k1 z0!M&Nwn1#CE!d;Jlu|KjTIbHveLEQk-vP{*b@a!66G9Kd%54r+l`gUO-t#Jm&J{D$ zy*Hh8Z8w(-VSo*+q&SlMtM%`{zL~*a*K(G0yP41=b2nvKA-sd_Ldsdr?Pm!DO6_sX z54x#bvd%g1s>5nzCiLPr{6R-W^L;)m5j$xapS{>)1qsH+Um?U&bgXpS+vfFlOjHS* zO3g+aVi%&;(ojF4X^JHq76aFRx#5>rVMctbKbBd^qP1Zv*b=D;1s)sdI>>VnOAd|_ zD)#k^jiYte#Rs346Kzk#A7-pP{AHX7lb4H-xLfgZI_`!;vcza)hHgTUI2O5VO%@sg zBVwLs*+sw#KJ8d=jDoey~O)(D-tT6c~N-1^~&LnmS*1X9(P z+Hx!~@%fTL^H&vb|LC<3fgEv#sn%{hFG}#;1@X*ZzfY2fs`Re|EnPD!%#Q853e|Y% zt}f>SzOZAERt&BgD!)e&X+j}+!Yoo05<)g9$YHNGu&&^eLpXdO9i(^GLGU&dZDWnZ zm{_w}S%y!PfxULKndO6Ce}evnCAKq}11*&)!X2V(YXbqoTOe)f4_Z%g6`#gpizaKs zi<1HjdM;HM<@`LKsUIxpm8m+DO1re~%?-mg zBq%CPo9;mZn;I*oDeSx?j?_+5oWuPo1V>7>e=ZawFKm9^X9xr@M;Lj$ou1gL)xJ&` zx<8zyu!g>WAvQTdE>;T|F6$QZ90nO0h-aRy9^VBiS6|XDD;>e4F0?L23GlbvmA{R- ze#4|GyWK1-NltAN^)ggBRpdXlS})fAX=wW4+iu~{AvSxi`I`a&IqQXPnj9ku= z?ODL_HIbpG)y9yge2tDE&#uh!Y+T~C$sRv!J`0Sev7OKeiq~`+FHGLC30YAdMlLR3 zWF>LHqwxD4aR*2euL3<0OU+0BHfVDm9@%9S?^d1q$pI~;2^3QD^ejZ({eV}-mvaLs zdAXKoR^B*B-*}`rt|lv)P|Vr~U83DnmZo}(USu0bATE;y({7#R2V0ly+3=9@?sglK zW9ydFy+1E+pb|8OnGLH19*8T)V>s8}I`G}!K=3GP2kh|a((PZnLGWZYO*Vo1vh80@ z>eSumeEIIs#6HV9rx0;1zHir16B5L2J>=B~bJ|YoBPU_b6`1-{qSHv0KHAY?&TJsu zV|<665l63PV|)7?rE{}3Ec-^xhs+=!!EJH~j;n1>Yk%ExDp8;~=7lzeZUzLmV6Vlt z0Ka>-dUltn9vR<}(~EZ@@FL4N4J9Or^SLj()=_nSxTBR2Di!hAo~NEejk&rcTf+fB z->`&=5m^ZtWG?p=gHk<-Cuah%?`*VPrHkO_2FL_MFee{PxqgWL#hiVFy2)a;drUnM z$E9Kw^lOf3P|AhYa$hSiEQ)5Aby$NEJ@1~|UyJ>!6H)4B#u zOYKTWFTUUkk?85&ief(KfN3?t(GAr+hC_+p{zj!Av@{}nq281@vugW8E+dY|m};qN zxq3J&5orV_)0#^%UHkqZnfb}n*@X%2mG#N@l{Y^-n2IZrHp3oJWw9eOvk;OdlMPac zNa1~Mh?)0tqaJPYz5qcz>$#wV@0n8&ZF(e2x$_IAlHr6cIl*vVkt_?A%Vn*eOxjotbvFBboZyDZB&t~xj*Y|M}KsYPhTqy zm<6Pk1mu!nC7RH9^qS6Bg1OMJht~Q$3vB0SZ6rWuGG6Dag{p^N!o=W8;)%rgz5#wC zQHGT7C1d;$&%&9z52Zh~O|cc{UfjIua9quQVeRXr<$7Xi#xx?nj$;?s94h!Jno3Uh zVm5Am|87cLrvKH;Jh1Q&WR<-{O#()~D&q`KAjQ19JGtT<;fpmwEEv|B^qT*VlUa9s z>k{&H=8UInmm~hHR+lm6`0)bu&km3oMc<&7B%JLwP4m49w4PJL4gC2j8|3ZlU(RM2 zgxcyEoe)SD$E&VFn=Af#rQZv9XX8i4wU6u%+y-EowC{1h;xNgK68RC!Unl@H5=6X5 z(~-ebUF3Z=*XW%SHU4G#A>**r<4nl)d(+@q{E^?+ILr+LApBg+KLOv`wKc*pwr7aSmRcu76TFX(y3}ul&12+| zQAQagN`AL>Q7mydl+q=`M=H|OsJ^WC+Y=1o;3OwIU!Xtz=WXIRz1&_NeqmW1>E-rp z)cl0A?Sk$Zy-Y~k9M|Db1k+LrMeGIXsaV8s<=u8B@yVRWzMzYlJ? zK_QV;x87hoVcvw}Sg)!ih3=0@InB-e69cA+@zNGJ>tVa=ntf}gmKMCDYI7T$|2yZp zw)MZIQJe5#rLIfrE_ZeqIWfViPC)J!K` zA?g1MAY0nrNJE!ZgzfOl*WM+rzyV-|?v-;+Rvt>fl5r=)WG%pw4ir9x-W*86=5G5C z5~!k&-S+r|ozY-PWO@JkYP`U@1)suAGpA4 zFn&%+eXPYVRDh&s(kG ze%ljKx7t-!pbW${^X|wVH7>i8h|UmrH-@DX&nGl|3v}1$lQ*qY zZ^nc?nNctEvR{d`nS-+;5U1Lae(36!{CDZv0@7z!3avwp)d@_@+_Z*+;aA`ryU!uZ z;DOWJu?jSv{nmQECW-wZc!#}1wnKcOD~S8V#YV`CTPo-}>!CISn~vy|=~Pp9>NW#- zi^o`V1~PY28L7fnT7RZQ*TLIc9m}CA8dwYaaB~O$uH6(3n~=8l`^XL5Ac-%l30}7v z`HR6dNoD+Z@QNso+3~0}e^}JK|6%Vm-#8->eVZQ5Fh?L?t({FajNyhdD0Vm*H?Aay z&MX{g-B*Rhu>UrZjI-EiCJ+b0|2dZJN%w{W)&g-^KeNGmJfAPyqT!8PrUIoij2rjC z*iB3{-%s&PruH^rd6E(1oKEXch2WTNnMB2z7=x5%#aV96?#cz(6x$om{_rfuyvj{yo-)!2*f8f1py8g%n+Sq z`3u%dlIuh|JjW3-b{*y{|0NFcEv>Job;?C3WkulVxtr#a7CdC8ubL3~;V!+CQN5h| zGF}|h50noN(|W%CL(uCNFggJ?KH(-IyELj)PZfsF^x!4FKg(ZA*uo}7Qc z>Gn^0;7Qw~ptZr!V04^N)kTjMAwjv10={|oXFQue=n@+G1njNpPN1woc)0@)o?-{} zq~-PGM>(pFS*7wMdA0zu7Va_gu2(Q7TV!l5#)qgN0}fT1Mq6EVN8r$Ru+bPob|I9?uH`tBqjS~ zlS1@!nrL!Mhf4Go5U83pZW9CGTy(F_`7gI=AFv1dWTf#+t-x<^x(*#k`sTc9gXd8% z&j5#-YR)b3|LVW&yyCwR4?nJ`9q5nC26`bR`FDHGnHANz$3%d+c40HC$w-cYVM%*O z%9jm6BcXWD9Y5yuB3mMMfK)v85HRi3-isY)tR^)&Z*$DT-!cC?o%szcG!OG&^$<&H zbj@@uO~6V@GPsY67tkYc-I{sACn(X}vYmkmTBvQXEsqou8N@?2Va2CFi1H zP;$fJbR9NVA&AN+XEhq(OTDcQ!kMnA#;p-{%+dA{mfv|*-F-=1op$2w;ESIwgAq-f zKWaTAu)NwCe&6y$HtPX;3ZjB9VEqd682Ho2+Ncbx>>0PP!U?+^-8iR=Yq^4-bAJ#W z%(6n^#@U`|^aA6HI!2o#?J0E3=Px@b>rjnLjM2HoB`)56p2k-$n`O=iXZVVA6m} z1J{@egqBKigdY9`>4Et~3cI>q^I{U}o!4Dl5s$F| z6C$}YX9J7&M533f;+7cKJN(A)$y?k}H%=1kLiCnQ!Dhl1TKDx3+IDUQ+#~$WyuoKM zrjJQkwqy!fpj|G4baFC9dlWSI=r_lI%BXI3@K8k4@xjJx=?2HEoMrI_kMzssyH(UZ z8Xg6c!#LPRfoSw$&3F(q2vsvIwM39j#Tt~GPQRc3yM+61(XmB3I37bORMQz*JOp_( zKs%J_%J+Khl^RWXjzh=!pbvpfXC;m=98I03#cAv!=~Ubg#1(vsl|$=x{|JXRNMtbT z8C4RKUUI4s2wOKV`U{VNfN)42?eXt*RccRdij$#HF7!<^8_pyT@(P>an8$_=HrEHz zArs6Qh>j8h{+c?WRhc&Qhz$7e00vF++d*i&Djzo)LKh71ENqgAgy`~Bb)aJw$5T>_ zD(dxeaL*0jL3-ILh46-P4=a3IA@)F^1^`v4xj=Z!zyIm9wQ-LWJbSMku{RNj6v>of6Z1OCk-ZMXXK8$fy zueWvUOBXU3E)q|C|GS4cQ$pLHYxiC=LOJ#;A1m|cY3*>yj_HUO#%5F8Npvo(2&qH%T{&sfS7Z1ka(Q9NPtzBc^s=BuV zc?G{t3jwONk4yzm;{F_}%W%Ocx8K18Y@i%343X$>rObDteBLhG<;(tPnlp7OmLo4- z3=!I&`e!a;*dEWg?2=hDOPGfHrTYIIuNOl^gZUbOOwl2Tp`wFn^Dz~On={+1m`)ds zm?`$-w_Q9_vYmlX{4G_UsFkiKici=8GO^;s&@R`0Ua~fN;DxM{bvJ^Z7TQ zd2E0p>d6zkusMjHX%lnz#V!&ikY8pF;^2Otyv?(E{NG9W)xbj-+Nh@KH33+vlqv5o z`0h1Y^c6aa0s-Ht!L^VH*2*A$icP)!m$JZkjHb0moWj8+#NEM0_ORFj@8LliU7wo} z%KC-mIt#}I1U0Nxx=4ZHizFJ04#Uca+Mr5wi(hQ5(my(W}N&`FwK;%-ja_1{r%k% zV&vsd!7+hw&N_YeX+#a7kv&R(PU+H8$v4wa=fdEw#bv*R!6SmwFsewXCc#MK4LV*`Gy2h@uocq>A|>sry?W@P=jp)P zHOi6hdkm?t!lu>XvVduy(xkhk3T`XpJ32fZD3RNHv)K25b;_|i9QxPE%b+ZZqf%{1 z@=ag&(6cP}VJ@>cui`T9JK43WE9W-}|MH%yYew_1*BSHJIc2_w%?^5i;i?k&7}+*q zT(zrqwmE-)07QtfEeY5EyzDe+7NER9Ym8|QgOc^3IaOIvjbsbchVGzZF*v0novdT( z)!9SvCs0Q0lYqSng7a38q+0(bV5hmd)tnUV%g-(t3bjLxMb)L~GdF`m0nXlgQ2Yi?yNy5Irt;VQL#hxUiA*Rayp$4{ z=SLApi~EC$f>eFO-wk0RCaBZX{1(zwXgoHp(qaHZLnF11;aVu%9t=kNSGD!!oJILq_!!EAEL3CwKiAMk>oK%?<-F3+Xuj=pa$?^;l=*|C6<(nz3H=fe7>p=n2up4< z5$zD~*BFh9NfYVV>DSqbbFCv;W#5$qb;iKMN!Tv>%U&UzbwK8C)oj-cCM&gD#7A(X5(>`y^S#MAN7u5@NV=R*Q~LFPIwJ1!}xIi|}1b z@@lXCNnjG4O-kswrCX4rPT%HZCVoKPouv3jAWYzR^B=KJ$=O>fq~C=lHT|G|t$=#& z{ULnvf}XRvPe|n{A8_<*e|3y=+%0$w!pQpge3`d4Tr}Fdbl<3Ptu-wBpkqzQ2C-iQyt);OV?!7yz$!86TM}I zJs1m=<7e0(>vgZ1zIhUf6MQYgWx`waG;h|qNpXk4+p*)pPLaO!);wG<+ z6%P#OUFv@Jj@U0EH}6eI(^Et=hV6^ci6E4aGgmK>ly_msu1S2B^PD=o8HpE>j(HQys%cg^(9bKmIjY1nd8W8V`-PmR zcg-S2mIL-&hxt*`ScbS#pMsb#jNwCZs~J}Ha?0BPYz zYK=qT*QV_DfoSNO5%ntdT=(vO_|MA83+XHRzAv~-YH35_+|uTL->lToFX}$TA*jIW zQF6SY__lBN38!e)kM4>5cw0fYxpyK*s)$93qd6)X?p01Zu4}+35Jsee;#jdS-;Vi4 z`ln{3l)4o>Gxq!1WEGzL`aDse9Bft_ zs6%2SsqEVx?PS$@NYE&Nc;Ujj;@uAQHK9xNugJONyRHh`^x!*!Fyz_x!Q(pzdL+Fj zeTIb|Y;ctx+Kh-(U7?u7&LBp&vhk9@+-9L&KGfhia2`rw^NPrC(CpX}RUMr0d6zk7 zw^3hj#!hiT+(z-hUy(aj3UU9@#~Av(eB>Cn`FFB^TBpc^r(&gm5{I%YsqUCoA@4bH zaH>?2-_GrdP)#hWhdAZthXX$k#9op8phjk zE3MAug1VN^36bATk=mtSZqb6Cv)82B{Cdm*wU5;eS@qv<((^j)UT^9Ot#STe6Jsqr zqMwIaglvuZOMQB9Y7Mb&EK3qs@Dqv6>K%GFkClM=yBZGPoqkt73t#1Gug*(L7=DE? zDmB}8Ed}I|na?OaEH7QvS#fYX%avpL%2ueS)g|jK;f5G*>WHmQXCIpn)#^W;U_V3h z0wRnUuy?M}vbD~+1=!ZQzmcY2^Y;oab&;)O`_q4(JLf*(0S*#`g{W~$e0*r9Z8Q6M zdUu|aD$af}U%l{DVOtrOv^UU42TEn6A9`%wYr@rD&{VsQr-Ztpp;z5Myo(h&@1@=U zEUUm{rB$+1T)kau;uso`tWjJRd1QVQ)O8oG#Y0f4hx33ehhP^GOe4uh*Zw$$Be4?& zzdf+s%|f1<#D13u>`6BRMr8V_6-2h`_m&8FDUj+Sc6!t|+RTeAhBXm=FKA#lrb>nk zX0VaSyxRg9fng%hI4tXF79(Eh&|O?8B-)nu<3kCEu+W!zF?8iJ0nAk0yFK)a?_%GP zaPGAwkJR5!mh4;0G=%b5mljJl1|GTj%S}xE_kXhsx+(kZWtQiLF%HYl-jLO&Z|Uey zDfq%e(=42|@8E5$_L%4?fl_=Kx!>C(%V@h^(L*nv|NG)697!NW zH}%$(*yFlQ^PGeR@k+O9a2?a}p0}l$1d>?Ri$&Z9!hT4z%4Rueyv2O zrKp+HPduZ=!e5@%@x+q~tFmNrGVC{+P(}uB2!dtk_hq;<%iLFTy3%32i83Ax9VpfW z*_ey%)8e%A59uN2ef{5L&g_&Yxlm`yZeF9{ zci8IGG>xl^rYLV%DuW+ahr+aWhU1qyn1zSpFQLZQG9|EmcF?Xptd%P84SPSg&+quh zn~m~t-hzD~d{}6#0}M-@C=qT|eh`mqUH?OWe{3exE?_hUO?No@DVdqlPX0P?Yi9z+ z@%To0TknVba!`*u1{p7G!uLVc2Nk>0Z%=lKWYzZfaho>epRK5+n8XH78uV_s9_d^(q0mdN7T?TD#Ba| z3Ny(LcW61DfP%w>v{gUr2ubRvwAioCylfDo*v=!SF9Midti?AmeQN4kv~&C;H7J3^ z_{5V`UKm@YNx83!s0HQbA)BKUs_(*`-ymP-t@IZL;vu2Vx_Tcau2|A z&T<0=mkn!icsOSDUsC-996*7~ZeaSafR@>Pevh(lYJ;8cB>dk06cA-3I`0OFW67@a zRfARx-LaOw3R^Vw+aavVv5Q{n83C0yKoq?L*gnIx505upp>3)thp3-n&2qa~$CKn8 z=h7(Ch7ZrmqGW0f*xInYwbPDK?|53%Yn4=L3)G%zA8`XR0wsybX&HPnVT?#34V*?O zE*aQm5?wf+>AUawEVk)s+~tFtQpxv#sMn2p%$ivl(N&D;<#b6aq zs;Kt4VRaKt4wl~3={6V0@S`JMM|d5dbabq;-=L~*fpo*$HNB!@(r=EScq-m_6~l4q zqP0l5*MN0wkl(8{bEJxao)SQSu0rpzY$@x~cHMRKPsQ~H{YwU2%_F1UrfCC@rxx18 z+}>O1pHaTN)@k{Akp%KFwQmE3d#iPrPPff7{@sB}G24+4Qn-q|&xFUcT;Z%HPPh2y z?zgXjc^`^lLyoPSWEFT3(|D-IJV8H(G|*-{#*-9|%XjoL|81D)I$c=-;|(9q0T`PN zsB((kSIm!(mDdWRfrEFXHgKlvzWgmWi~sEXaTOeua_W|!l|rv2|2jW_=jCNZ_|95Y zNU7@{-Ao)RT(EAl+3vhCPwso!`&L4xWO#bA>_2TWLLUV}M1Z-X=Z7iChZA*HK07n9 z$$J&;J%ol<6buCr>^c)!qHW_t?aMG04dXm)cl(2H+D>P_dLtjkdC)Gv)>1!S$4(#e z<3_-T^M@S4uCelwX;||fo=yE|s2)j&^`ynkoSJrr;p#n&^}rr|$JR0ed~`EB?hpK3 z-S#Rt`hoMNl1ZyXnAuPDAL1#!&{3XcrOhW4~it<^H1X;PfvX1-7L-3ph4 zoREk3#(d64-uisl*=lF$$<#0#MTa<^gcsv-YmC&pSX5KkYLaQGZTI)vV$sA|Db)G95!6d*H~D zA!)-&a8SbWPn6YCQh410V~3FimyF`c!DT&xJ4x7=oI8Bm$XZ1Yy1T4>(G9fR4`)& zq_5IQ@Qdx^6z;q$qM6IckE3gtdZG)eW860w8IeG3heSrNsu;Z(RdfJOW^hw<`gWR_ z@P>H4nhOKcw8W+G87hR|oVeromP#>M->p#jxd?B0dBJ`wF`l+5>IGdZ%&0?28(sb1`Yx zAxO@_GE1X*x@2D6mNMAZ-qxDPTEEhYwZZX^)5W|e)h&dfNB_S8Fppm&L-RShVkRQi zFibaz_9mcPgA)>(rKvhs&a%>F$}T?dm$Rrud02Q4({gk>XN??}-rfh@TLGsbZ-9H* zvcKo1(zl}u_H~~X5nw;IISHpb#M7k1Q{l?EoFf&~;l0nuelt zJ?!?p^%p#2^yNwznjq;e`XoQJ>hmq^=?r&ZxWRjqy2OIeT< zE3V^xL99@ETW+A3oK}yTX5YpS8XJs{!&8`MutOvq`xii(0MF^sx-{61yS{ zcSQ$JZ;|(?7tD^$$Cusq;5b5t_*pgrh^kd;Vm3-@i*o z)arO5-C9&UoI7heiG-|P_v*3XjJ|qkz+TkU>}dT)Ybex{eVJy?14pOleHisTp59C7 zZA#k}JM1<|9Z%LE8{Rh3nb?knqod3R8M{+=w*$7F~CPd+&UKnx*# z@eZP?nI?TQY(qtYK`pVn#e!1DbN06a!6n=9!d^jXQvl}N^ZpehCekp`Gy6ZH+<=-s!+dF@JE`6DNqX5{x8tjzp(VU9aDv1U3|C4;(5kZPLKN&p5A}GX#D|u9k@Ycukrb!3~_)!RVL#ytRN%U zU;I{D)hiH~cTuKpdIIdy&S3$-R{pow0eb|mr05p${=9IU+ru{5>3|i2kkj~Q(?67# zwEPkwa|yzWLPx*)ManOT({~8?@ys6dE}&f-TxYaJ;akX7Lo)XGp*c55v2qB(?1tBJ zmXRv)p^`4jdB!M$WTFqBwD{f!Aolz*;lRzpBiX}lu!{ywcu>?2A?wU?VCxr}Raq+{ zZEVkblG$(;O~vt*8x%)KT-7AGr-?sU2(u17xY5xF%;e|>PzI$=%Z3o{gymQh{lpTv za&W&%NT&vy+&Ru)-TUPw`4OSb|AHqS7{BF@eg6VEsdVoM=xR`jXwO{$S=sy@H^8wP zqYhO9opGyCQgxRDgmGRx+DiTH9Kt$DZZOjEA09FImu!6zAW@E0_{8XBZ?JwurJ9Y- z2)4( z{UofCW2SXr*U|K867c5ezRVk`CncDiYP#!AXA`~ND~7rJAGA_0yT-E1>DcFmAL_gb zkqy0BguvMxkxB^d9a_K}hyZ4Re?=%Jt}Ag&-PTgR`@a4(tR+mOzpfxQBx!M3F%Zb{Dn@@$)RjaIYogu5;^(wmE^> zpzA0jV@MeRJJ=n~o<97u7Ulfr2 zdn8|gc65~ORB7=2{2UM#6_|oAIF<&z32yRs`qH+S59cZv(~S9Wc+m3G9x$vtow9eF z3UebtO&cUJH~ha&qz4=M_0NcNf|46FB$I33@+{urH6qj+*HSkR{lvIfTJ>}s&0J|k?I)f!th~CTpkLqReV#v++3-8^C`zc zWPn1+p2!Bgq%;oNEj56#Ebt+Zkj8z$9;-X?Rpj)Cy}zpsoaV0$w2?nIohX|jYi~7V z=M#}LL;73pwla>MgHV4M)4QMJqQgU>EaGkA)0Axxm!U4gVQR5f)m8<1f)K#h|KLzV zQS`4Bq~$&_^1c(XgB(x>3HTiU*EHBS(*)3gGUQ4Qgu+(%V>wl3U`22=(F?C=+nicH zGMd^nosixz+dvQHH1|ZH{m|3)gUk_p)c^bk5sauszs@`a$xQ{PBr0XTd?lqFDM4(K z-u7$Rq$?}axMOA_Uye=~9nqJx3)MjWtKsn3IfA+AphE4Elz^0F@+a3TaU%C?UU!rD z{bc`oFwRwNr?EW$9|s!L%&zi#hcjQ0<&(MfK+*UfrH$v>zfWLQ^9W5yl2arqnP^=& zs;8JMSLA9Z>FXe7*0e2i6jmT;jqDFpb{e7yWqQ~Uiu|%d+zQeE)ZZ1M6)=Vqr)Io4 z=|cia->uoxz5G0>*Htwg(YDM_^pWE8Fde>9>ukeZf}lcsGFlG89IDn(T&ffYG6C~L zGe6f1{fj3(DfJV*z^eUE7p4W};G#G1bI!OEWQz9$pOJj4$~{66Lv0f#^JCi5ijbD8 z{JnOnzaJR-P~fwtjfXUoI9^dYfaJ$oV8undH{JEU^)`YZt0=v}#k{g6SWSC|U^yh9xO(Ei~ild<5`A zYMROV#Y=&`4O1;E$O>O^@?-A;m0^;l__*kLRDB$r6?yMpa$`nJ&l7UqAEl#3|E|J~ zNaT%&`xb#V1Kg#Qr8HcU#8dtU&|RccoC^TzRi7gLBa68vgxyE5kONu5v>J$47v9+- zYi%xevZBZ|%7*+Ec#0BVv6D3Us&ec!9elpN!6O9z_682{SGsS)i$LZ(b;vih-MPdA zBI)nksfgk!56&%7##{4u)$WV2-T%u*EE_mXLj}59@^^eF-cl(LW{LQahS{#=V8$lm z8S2)vKZ9x4%5F3ngq6n!O7e^Rr+NN`c&s-wp;~|laFI40MSHN;{Ab@MxxCli|0J~k zSF~r%@vbL!Dbmq#7NK%-aVTw`l3Sv8XzIm7mXl_lOCoSMkrga{m^Pi=g_ zp1;V8*5Znrv#SY??KlxwLI$Jdz#*S?FG|udGHF|7OB3@)8xNK}GDTbANpVTM!AfBI z$dwCAa`{HQ<#%h=ZA7!E6^6&?4l}iq*RRcFZrn7MHtnpOauvkY4PlMqV^{=RVoRNr z+rPIDwZ4pvmCF5U^r}&?NObJG|3U+w$^cn`bdX$sCY~8PsqKJ2%Yi7SvpZTx9y3M@ z{Sncge%X5?qxOw^Bk?tKl)cu)&!;_=oZl4fPK%r{KHd4migS1f0FUbk$^4w*f}r_|=N; z>cD>M&GhqH`wnlGx+m8^Mc668yEG?K=3x-tN!rM}-eHght zcnnM5B1IlFWU$%8A~Du|uK)0PyNR^=Zqnhjy%6*}RxJ52<*|oEc3)Y4)$dMP!Xl6} zdb*%o^!!j~CQLqicmy)40~N&8+G&S}KCK1Wm(pH}4)VEFjdYD{!pEYo>(t7aW6Qn&%`)++71pFYy7Fx`&Scap zVW!o)jc4Nj$cVp6+=oB~^H%@`@H_Ir^q3>e;gi~C1_f{__8>o7h(<(lWCRt>cQ<^R zmMiI+QMl1@$q33RUtkCnmol6KIl+jKuV+U*aBF+0P!f``vB|h$U9QF#ik%LoDBTPV zWdGps8?}p`yt(!&Ca3w}14iWF4yKxk*Wi)g?A-iSmg~9lH(@@Ospf{+GHkQPW_s$P z{I87_s2xAulO!k?C$&uD?@Rh5PV$Nmt}M3)c&Qu@*i|!dlM8FZD;@gj(cIvbGTM_y zXRh;*;E+vYO1L^Fq(lz{I>@P!CX`f9&iOq~j+a9ML4J7t}fuvfC-5d7n z=`UsXh$GcrdR>Qp`%#k{xw-!sjplJH+fC?hHP%PC;TRC>PG3B)&>t?Tr!VjS8Hc_6 zKp|=p`r-JypI^+@B8o&o51#J*R?9iUakOWVv6`zGJx3Wlp_*7C?W4PirMJCWe})VzIqCp3<3NM&42zmZGTiaO~I6q<>fVXsH3*Ml`LPf z?A98F62;qTrj!zusyeNE%Mp1;xd)}{1dKA#9T^6>TUnTe%LPdPbko8YpK4B>@5nh; zRlpIWYLiIoSHi`I7i|grl->^snUm12fN?O=pGxl=n56zu03Ipy#3lU-SVCEa9%)k7 zC3-J@Uz$dMUE{o3_xwCUBFMTKciH@W)o@u3xK3fdJ6?Twjg;=11TESNywdND);rzY z9N*-t?k_x-?4J7gjq)9WLPXqyE}_T@DXjI^{4nflqu(r8Vo9ro6OIA&K!Emc?PS+80V9!Mc8_cuVtD&|wm*#4d=ZN%bbgVOIk zu=-cw$peZu-b9M?z$ySGh{jrp7##e`me932-x#@10$ZYWM?2K}^!ECJC7LNpHZ|{3 zvlkX*V_74!cN`fbdL}krj;qeOjTNAlO9mR(fo%LI<`ClVJG5xZp-M6D$WY~{d#J$B zWLzCjD_T#hc=7upyzZ^tkx9D;_tf9pRcFul4E(J-Di#0#L)AI9R{|~D zI?0M{+cs8g+v?b6r(@gcq+{E*ZFX$icKYV-v+sGH`w!-)s##-~~16a24fwWvyKCpgcGcs*Cnj?fpU`qtm2bGQ%B>B2{>-elZk>Y-6DTTG~9Wk!4!r zo^poQ@u^rdXMUOkK3=j5GRxdI;9k7|+E_KS^{iDXsIRS_WGDpW``L6I9WI&0co2C{ zlyEgt_I7vEPVKdEb|sUTgVN*5wt@CrT(J(CQ4^K~i?P^%`XgUfH?PS%E`-XIsFXp#}v7g0fz zgAx)pwh4sF8`uQ*)em}T5iZDC14+w5PK3G6ZIsE_2=&tQ9PCcC`uHWGP@g{FK1V-6 z3b%v^cyoJG9@@jG{ZxWoR+Em+R&w83!3XW*sN*WD?zHvt$PoR3(sT-Bm#Y&-3{eEU znG{3k7_TO{-fWedRdB`~{V;-qZsPD65lZGezlXn`Z`wle6f9AM4PV-Ea)Q`v0KEe- zjBpoQQXNnnR7)@;pxy3_!<6ihP~SwSa$>&2TuD9L2tX#jXf(k)s6ro9M)tUFe3K|Y zgT6O>vV$bwt*5rMK%`hK{8UbI@r}c_I<1Lux^M@Qt26CD z&prj>4TTx0j9fJPW7qUw+9@MV+|HG~KS$t+2ATH9k4J^hhN-(2k4MnPhK_+b$Y5ja z??3uX|2+OKfdv-L(v6oDLP1(a>udf{gmG*)MHO=OPgF*Q8pk7^m+0ww{55W2FMDS>W0XgB~?9s_?VPUf|a?hn+t#)L);?IJz|Yb3Sw? zOHvNooy~CU@b?DQsFcW?MU&WdQm}qH(D5_M9TbPwbL!UO_>&rFRn+ze>5@XHm=f;M zoth9%|B?&b=qia%f+69eLmqTs(Gg##a{ri@LA5?-ewpg=5S6S6jtc7hAk&X(U5^gLD?Kr?3# z^k!h5pGh;B4b1Hd`Wl+yy1}bYi{&i_ynGrY7nBN<*;& z)S9K9$JJ_tc{7ksQV=A8R*cfdmxQUB6u+7u#9n^4Hg=EW)u2ANVkJoyjQ$w|X_}== zRBX?H;(9yCN|b*S%U~X29{6p(4$UT2+hk!BY1+ikaJyIMc=bRwe43>npul$+?&Mjv zoR=ui<|t#6EUXrls7VMV!^$#UGF7=TG+iKGO|KT~#8`7Dxz@qdN!!+J$vrGRB+#G5 zp2s}gHmPkMn7sA;ba6fL`ZDmd?hTk_@TsL1!Zwj&lBpyYM_l)r7raG38Ysj@0VEVV zpbV`y*UhzqityQWj!sm&Pd~B#Mv^Hvt9Bg_otofJ<4xW5_9nghW7kuq15MZzMbNy6 zsv6`yO^xIsVzfVCehD8c8IKB5$~J)!FkTT4hv$mwjgl!> z6fsvr_#C=cBYhzgjOEpd`fAG4XBDa+r@&JZiW7^D#~TjX4-?BelMvlhQl#~y%i$4e z1F>5L`J^cHT^RjQV%<65Cfq5Rj^*eUrkT0V7OJOlJ~>Q zB3P3|6BC7s*<)F!u|(_>KAI4IwgwL3b1lKH1V(1K3I!$I6;Ke~$)uSx z{)e{}yEaK|e&or2;uA9)-BB_iBx=FCs?)oJ81_W_pT zd24<$41>!#VPJXH&WN{q^ppU8ZCH~gc7c&!)J*PICc+wM&HQ9-5B0k-O`6^ZoGq9LVc+*Br5k}9}$BqyO?74YfLU&$8eCW@i z1ev4dvq7Ed0u+af10U<>;D!% zkRD<7nB!Tc3MU81;|5y4Jju`hWrUKZY6O|cu8+55M-I1P3xz-JdzK@lKI@r^=0%}W)(q5?tn zd{hVOKuENj;c%#M{TCv$y|8^#LT{{sDMj{)CRfg%r$)gTbq(WaK{{Fw4|Nv)v&~x* zFBJpy7o0xI6?%Y=rbKdJEXkM{ab3n)RMg|ehj(4&fC~#AM_bO@$g77(S7mo}v*2S5 zHB7KQ0oADl>{V54B2;N@qS7yqn?#lFPnE7WTlO-{ic9hMEA8_Nwj!B}24d~(oiLnD zeo*}g`#<4drj)`KNyTlPXjk2Y+@%x`5RO*86DLOyCAkC_S7bkK^r?(?*w{rQs!I z^VO*tMa1#JWOfCUvgcM3MLvctBL$y}d8P*PtOqWX_@91?Sc^oURBv0dGyTKHXjnD= zp%%5MF+E}2?n!-H)nm!+-?3hPJ>%dLDM89B_|MDbNjE2Fxj;vd$vn~daj^bWbbE_F z%G?3v5Qh-TA6hn?%PVQTGvF5>6Wb=Kd;z;9z~73Y{a|_>B#L^u$1WJu;LRJJ;w97E zo3h0wsb#-&`zU4%wP-`E?k(;}p8(dDfY~qt)j|PaYD^~)!GzE&Rq~sPI5C4&!Ss}; zO(crFL%9I{4;rhrd6HAm^v`FRtKp+N!3<;0a!kf%YjT-2%YZZ8(ThXS2xo3FMpi&O zpNelGZ86(pO-|HfSb1yepMpDMmN%v8_G44CB03Bu&srp3gz7>eg=R`CS!f5YM6)9!hSJ@yf*>i%V?j z0=P_+hts7WS(OIb`k`KrC)XY|glyIQ>xxgobpqb&HBn=h>XS9&%AcWD^1uCF$OOOf zF|T#f_bxTlj8Us=2u#taRyvPQ?N&wheY%**XTsL+@6ZE4iwNRsGHI+7yoiL z6+Wj>H_1rlV%#(uPumRHnqSa6plrb93{oK``4v47b2-M7Ed_PB@HgPTJd6zi#VZm> zg*;4~OjwzFo>k_U+#f~ArbDjcL;%%&oZ)K#C=W0yFaUfNS>tO20kTXqDr>~#vT+kf zb`K;CSW@pozcmi!L-i=gJ~bL7Zn0uy#tK}X7};Tn@s!yHlXYiC#4DSGSM=bgm6K+L zu}+l%SDH`8PK$4FW^iTWhLER~v00p^%fw=)fJQ!hJ2|xH$&HtIi`<;v=+f<>MogQ# zo*;}~$@2xX&4R^QN$%yKg>q7Og)`Qs*-0ETUGk*N6dSapMTmpu{JC=@?fG?Va@4Bp zhxm-z`ad4Q9>!$Z$MZ8qMcYnlGhG}9drm$NyeCd?d^}1)sXSHCs#mY|$7Wf}jt3}F zS7%a~ezgqaLOJ=M4kvrK$w!~|G%_le_FVO&7`P--S%U?q8W<5rd;5RWx!q}FH z8C{@W0K!gtaiX9(ry_FXH`%ifm=)bS|KtlWED(eHtV5NI=fB~;GwIhpsus!X15>6* z{D(+cK%1sv5puQ!=7rQHhw?%eZPW+A6Lt~=a5DEtl%W(xeQF#H1^34K;U6H}UmGSY zBEXS5gK{IxdyUje2lW#BK|MDEMfj{0t{%{}hMzy6T_xb5=U6Zut-wmN94~WuX&hSy z@XG9EV!Ltb4_Ra7F;}*TmfQfI{9XdGl%VZtlC#U4a6r!zzb$}UWLS*+;62GjY*T^~ zrJ4B|MlK4RY4LO#aBxx3o$l^>)>Kgp3#0C7UcxHlC-lvK>z^J+RMseoRPUj?Nu%5 z+9_(BPm76xZ}+2`rIF}|a{X{<9nk^nQMD}=e9bR#QpUG{aZMPgI_Wy~oPSKa+aFmn zkDMlKF20&t$SB)1ml0GAQuHzBW`8_oSkx_N!p|Wvt~jZ*v$@{V=&C|pq4lv8AIU7x z@=rnZba_1TH09Y(cAe5SioAUf^9~u)t@_lE70f5tUlxH$5Z3f}mwin3jD9&=nl8oO ztjdMwitwHq!>fJ_eRr>b@L3Q~(R~T5qhGui_$}jmQ+D*t` z$+eH1xKU%+C*td<@7gV|U$G1@_=RBixN^a<=8$@2G;NtX{OY;GV`xXEjWqjBW*Rx= zU8mw%5^n*rura+Lqbj#&JA|A;<=Qy3`Ojt5;4ML$)=j15c=Tfm5q81+L+B5xJt z*|m1LV8tAoz9864a%ra6o8|qFt?_H|om0p|@xq$qt{w3c7t|zW0~e@5bA>y4^Nl8| zfch+5ThDkppH)bTqDWw3+mYpALw?aONNSf_E{k4zRb2vlzsR8NZc0(n=a_$0)n@YQ z;8xVQzglXvC!V|8g1+4TmVS93uq^i$>9;384HoG)S_@ahP@_~WQr5sW(ausuQ?Js) znAtxiPfOt7wr!Pzhj9Y;h~R%%lRYpsIjK>ce1gj`%jOe{udy*&1<86)$go!IhjBve z9GV8ovaHyUQ9`L6lUZXOwu(GyZAqbf!K0P!3=7iObVOqCmH6r}Kz`wPqr~OOcy1VO-A-49>vG zK2P)_Op;#^u_2;=n1L|#hl!(O zB7IvWG#-(5()rn}Jv~16;K_ZT+G|b}>Yj!EQ`@ng%DzBGZmb7%CbWtP(;YA+Xh){D9^XLIQ|PFa^qA#3Ly zIV3zLn(n-UhaddoD_ig+{Y2+^dyH(!xskvwDEVH7s9UFEi=wD&%E_SA?nqhXL1fGt5G4gAWnm};jizqb%^4QsB?8RoDN zNiGxHj^61mLcqV5kYBm#frWZb6~{`}r$qXeUq=gGyf|yQ_R1w9(VMGg?ohmCOuZ&x zF?`AsH(Q)p7KKO_IKCsWM3$YD=7yF0aCK!Xo?A`XZktDblK37JGa|G49&mzGt`Dc- z0Zy(u1N%tMkdV_JbNexF?jwTZWCvTtphmoc2KHpgY`&DEZ%PP0zz_V?xEXk61lG@2 zcf6Z|8C^$4QBn~*v<253OVX!v;ht<87r5w%7SnGfCC{1xy#P=MGtlq7Y`5Ib5*5J;Di%U zO)^C6Bey%QKz^*eK66iUlOXy{*7gl!9Z@FZ>3Xfgd@7TUNYh9s<8_hs#n53HWa-gk zvfcevh)vW-wR(a?C}|Ah7uY$#z2?hSMlzrBcTkyl(B`ey+mHY`G-m958wPItM$(KjdkWIppZitH^Lk;yrYcp}IPpQpQYP4$|Y# ztufpytos2ASmxd!xe7IJRqkUKQkamhByd*eJ!yc=1g9eVq_CT&gZ7HRD_MIzx%&~3 z!T%W#Y?z@7Pvl32smUoPgX{mBHC?jUm`amZDbaA+UjGAh1&V}xnj`JIg zWpBOaFNiU9ti(CeP*@xGB8rH#1tOC@C3NNNlYkge-2cZBHCols_V8RRX~92Wp90A+};=$4Zur=}nBNsK+noz5=-v%uW(;#hkx8 zDV%0?LXe@71%l&y`!p2nFPC!KnZ%&Y8TAc0f8do!$s21*Dq2r{V13V3Gz`q0*&`Zw z(La2P_Ic2sO!;AU7+>lrrpq^E7FwN`4_SSbe@QEj>Pe&K@^5;c_goDbydSQc0`867 z=uV#}j1{teQ_~F4Nat^MoRFH`$&tg%3Y4iFle4$?xz^;4VQo=!7i1X6?Q_1MAvKsGuJ>4f+>s1@iGSB)-8rU3p zzctoY*qF2PMiL8JPB4|PS+iVMDQjNXY+Kgecz_{VtKuss+f{s@T{>_YnyOfO@u5g# zuj@GW$bMZMaaNDT`ldB|t5i$m^y{j9z14ZM^{8!U#ZCCx7VpQMmusnCk6S+;UK(=} z_&Mc1S?8KqaZ4OTAgyiN3OC~rzuCgreUE@h4>VXKz2Q07iQtxGP2y{wNheb~59+U^@eArgU6#+W~tbs`ht znTNzKZ`{B!C*>^g9c>L2G11w0AK{{;#PI(YADr!(bfpjo+vdl~sbcQWvTc zDASq5&@vkkSda9R1oTDzK(?YU%?fwKX>}*O=YGZ2=U} zD2qPXd^aS4&a^s3)IGW?oa6q7Hv zL&VOR>4NSKKy&hJ-)P8)J+q4pp)Sm79WT<%*-}f0eU~jEFo>-MjuWF2~zxYZCT;#XjfG*nyTCPXq%b0^H$3cj8tujSQRk!S$Pb78i2`{T z8^J!V!iJTa4jQ@<3eVhTtVgLS=suePJzYUMj^nQC1j>{slTSVGY9_gL`48Ov!solF zCF^kPgvM_g!DhM*Cbyz_$-A?t=YN?P53T!Cj>M8Euq~N`bpc*mEtWC_+p${cOnfUwuG$u%5JxlD-riH`0%bqC#+s07o3`Pi0^q z4pH4K#dbzV?k(B1;AGsSxLz=?uLqLnqL8 zZGS&5G@~l#s4t%?+5v%Z?YSM7Fhl5I096_s(BQeJ-e1T5w^sr8nmSXK6rR5FR%cg% z^LuqPHkzTGe;o3s6{l(XxA%FbHBWO&4ZEm56S3sNIqliv!nbiF}qAKuNibw{G}nBTYY& z^;IY4Zf!@(EoG0lu+z(tra;z-HeVB(s~(uShizWB3?3#EPSZ_I7yZ+L;-?bDk2YDV zA*;AN=titzU^UjozGzuM)RQ-{Qz&)@?vBVf{HdY_k%n2`mlqES(g<}2~({X4@|a)k8H8KZik4)aQ$(aP1<0q@zFR)#c4FJ>vxS zd6}DR$=dtH9au$~+z!fB-4pb3vu=Tp#=AwVfcE))O8(+v7tH~^1cm)~DVZzR70BeR z(=0pcs2+6b#cEiTb0-{M=D=|^4vrwf@RCBfW$3gD*t+CL5PvkvC^rZ^%Pa_mVj zut9REWKDK#ZrCBJei3?(m!*>|^Jq3}`7>xR+i;iP_?(}>57_^_yN-lf1GCF-njk(Z zQ-)<<=T3i}IE6dAgg?PeivYE*8rxo8(sCH(mB}^ykeYvp}2!;X1K-?`X8#4n7Kt zCmUNYsUaKNSLGJSr#~Y5mMIDa{X=_juy%DVhN)37y_A92<=8`l zQvM9Mqcb3c`&QB~6RHms-NCdUYNvs|j)(+{R+JhqKO_S{`-UBYM#hRlys^EXdpJI% zfO;%tN_uhJU-NZieEdr`leZ78JKU(>;;w<7LkWUM>Op=b8|xc1avgO$GIV%2)hzYq zicck`1p@eqnF0x%BAFPP#l9(-hlOs1TJX05ARml5pqQ~P%60R=Wd1mIauyC+ zL^+VF`3t1!4b+m&aHf47Xj34RwsP$g85#Pa7$CA`Ar0tEaFB%+vn6sj5m1C@B4#ls zx>(uq0$e=mU6fdc#115ctXST3-H+!XbO@}-|8R6+>4xf;Ovl9U6n3bai!T{-x7jkb zeVGUG<`&MzTdj4Th3qLgqrZ>{Y+hY2U#X+j8O#H7h@Vi(nKhK#J~d*FSJ2*Zd-)XX zhTG9DuD#G1y?yRc84AnbqJ69JHfon2>}2B)@f+& z`mc+k3uTDF?+GdN$%%H(*-85E2tbFq_pBpgpCCb!Y;9@m>U0RQd-$$zsX9MnEaP%- zgtA(in*a}13Xr#0OE`FZ<05`7c=YXaaCh!zAA+TIaoegcqSZfx)`TKoXM?nWYk`sQ zE&|z^%@iHNKZIv{$pr)>JLix~0H&zz6}@0DFV97^`0};9O;ML_J14#F2H}4(bo3lS zB;P(DOZdL=tt{n^vxvfeTPy!oaHYMG{Mn@Ls49V60|ehvYZmn3FMPX)bnW5RqEYBE z8iNg${h+0E6M z9Ex1j&}iL@K;i=*T*mMyffvliO&=LsNh42|dYtbVTzy{;Bk6W!3yx-h4;?pn(+7_Y zVG#WIu|yQ9&TSQG@Smv!Nx1b*t9tx)@2x#kF=^Es*1_rZeB^HGL&fKp0OP;9v{=FF z3S;%MRyL-QMOPNTpO`dWs-xvC8W+B3TO!Ic`z9?>Pw;=>+9=0OtrD6EDc)RBDJ$YV z1e`kp$7sgiPq)q=p&1*1b!0(o%r>r7Vxe0TeRNEJnGxkZ+6ecModlpA&v7(3F`8XhhCE<4#;q<*D(0YRlJ8cL(5AS4fyr1YkQSVjG!MP1~JxF z4-Wz1fNO2PTK`QN_pGOG+C`5}#xn-JE^}n$KYHv3J5*XQ90sh>wK3qVSdzGM>0qM> zdNnCy6Z4sZt-AZPrEyh7Ee{QOYCuJO54M^!?L`hfYyUQTn9iZ9))#JU-1eD;yuKaq zJVnbB1Sl#&F|c%#YZQXJhCj?g0kunIbIU0qprpZFCpWkV3SqSyc?l%|YL5J&6=Uxc zm%yuw2ws$5C}&&-eobj~pv^XtJsEyhn6b@!-e<)PP$Ji)buB~XtyeECn|>miV|=%% zXPE8eQ4Q>Z=pCOm7AQVfCc(x3(&^Eg0!;j3raO4Ug+el{8`2#F9n;54@$gVMmwKrG z-8ZwID0i^gJxngHm$xiJF-_P#cF(0Xw9*ebr;?*R{(Mg7mTM^UvT2PP?v7kNv8Ph| zUyBp?){^aT-YofX#q@69MBAN;))=iMOjTE%o0D{NnPLqEO#gNOpGewy-%I~)@Yvc$Aiu5-UMK$6WM=bFT7yZkd37a+zgjmTL_cJ6|G(5 zsr$G4s0sEH@j)c6Q)--ptDhIVBi~`C`A0H{r5>b%h2eA_)GHz!P({o|0Xjyr1q`H( z7UP1i_!nzmR_{~b7e0kQ5gRtrKKcC!(*~>s8)r!3+PKUA)xqb3hUKn&3ao7tc-lv3 zKh&Nf(R;dG=j0Qtuf2wENtEPlk``>`8G3Z+{7|qk8&RG_L^2ngFS4Z562?EfYBmp8 ziJ_pRS+f-2C>>+Kvol|I3^QL^SMHtaJ|P#!JA!pY`9>G6Lbd`V`_b*ja*B--gJPWl z3M3d*Pn*~zmhp|oI3VoYf+?cFX-~wC z(tkEj@1urg_~ZTfr2kzjS&q_-N#H4nF>sVP+z)MYFP(iih9hs=Yq_T%b3`sLzEk}B zWJ_`lkN&`{z;htZ>np1JIhlen6vLQJT8K@$ff+s~`ZR0WiBDFT%rbztdG-|WGm@@D zF0T6GA^`|!^1;R$AhKqYSyre#;jTUrZNs|rPY)_*{H+DchPBE^cGircc&$ZVdW_(u z!{)=XtVO2jVU>%yfEMzZ!N`8CFZ8 zwIACGaE*P+5vRW&g|tTVvK7*uT8fVkXA$ZcdomOvBAKPE=b;-3eOY)1|6F#~zo(w? z40>!r-9A`07U-g1UhHu0Qp*l^SEG=`8w!fb)_=XNzNuUJ6~OpjJzsJj<&#pfV@Jk8 zmB0O%v-zUOv=)koUcfiN6jM=0H5k*4`lpXF1tQ=mU;w{qPYs@d%g}Nlaadur(|Mya z-`nx-u+P6P=Z(VBz;r8KkRzo8quX6xHlJ%{nJ?_a@}UU}g=B`D+!M+Nu8iNYwgeWn zD_KB2O{66%_f0&Q4=etJ;<1^V{>_kSuH&>yG}8+9U%S`v^p-IaWyw-Q7$hj&~R zjeU^{G{XL<1MAZ2rc@dHypVYsL4t@2*blqvx|0kD`vU&`)OiidtR;q{=OljGmwxsd zY{SQAVK3XS3lroOihx9)j^Pt$7NU)BFAUr_63d~=1qVwA|ItG20)psAQ*j&i|L3tF z1nHFW<@|+*6o>?Gn!ggT14Moi<a2QAx?j3lhL@AY7TI zCO|p=ncgc-4heFZQ0VIw0YG9tS$}7K(!-VlV;viQtGI-pjv6|pETF69>Y;cDJ)!f# z?ajkz4pL$SQL49;sJ#KmcP;#Z=(U%~ga0x5cjW3@5Ox9r*-rgwM!C_cK() zhs7C`NC=c5`Axo%^+V+F3Zz33bVnzcc!aEg3;Js%K7e!X;S!-nlBbjE;^CH*%dvCR zHYD_`HDMqWjj}m^!1p8G(y(r&jAdZYu`+K4TqFtGuuF7b0ZIfw?(YZ;JtTRlJq9OP zyNOd#=9LZ}Y^+8HNxZ9HnJk|x%>1)x^qwY=>~NHFc7E^l8aL(o;iQLAQ6B2h1ev{nz|=oabXn6g8DHpBpZqIZ60Sl){q1E z#>Xm>hW0aDmc1oZAVCt6!*STU_dtP#RVXXmwG2%XEPV4*ocdS3U8~kC{jU5QX%a~u zpEfPKq<@?V^#$}UJj}WYf}en4API~6cFKx`(itEi206%tc#xbjvYK}UKW)jIgZh6@Pj_hj1>{Ih2p#vZ>`LQ3&j4mqNAyo0w5AQFg(~ywxw2pPl($ za~YM5?hg1vwbsJuSa99T`ey}1omxOX?0Pso8T**FsE%D&zI#4M)Iq0C6ls*eKY)Ox zj!|thD|zOta10y1CuFHah88*$?PH4 zgo@P$Gov>XMions^is^da2~`^Cr@8C=qW8dKBiq(!VzC24?FlRAf)cV zx|2zQjGBuN&O91VFXp~&C$RJHW-Pv6n)sV6AIx-1HYSD?$`+5;D3$6|PT7z`PR1BQ z-?>D^c^)aRTsJ};00o$rzh}i){b|Wv%4s|8F=6F9l3nlkO|wemAGG5`q5@-1-O`oD z6+$A3p|i+N&v#yHu?%Brl47?*I9S~aqzejYPV$0Q8s+MYUP@Uz;HeZdbah-5?bm;T+`21H^$@Fjod6>?4 z)i^fqEL}Oaqla?@mq#iks>48LA3j%q3V{FAUs#5;zPgeeQmDB{xj4R8(tLS-68O-M zwUPY0q3%X@k?j2i4$I|G)*`_%LE75T&mQR0!>=@pmirf*E1G)V{5(}WXiIj8F%6Ol zzTaQ|B&ROAPl%A}#@CS1xwI{x+}ztHrlu1(~ta8z`kWUDGn*moZH+R2fCGl zj}OpS3~pxla|5v2Yu~8Gj)yX8+{Rg)APfZ(0%ytO=LpMG-oOh|T%Uoli!yUdXNJCE z->3!zZ5-j(e1jF(+|->;o-#DipI{HX z>vMmK1xGsZ=~|~vFz8)hJJ`;~59m?%Y0S^cmCi(I_TFPdD2tt)Q_*na%BNCtaQbof z_##?oJu~nq=y1aD*wf?Vs$k#kx%3gXaoj7;)da0oPx}t-&-JyAG3zS$7}r}3CmHTbT+T;cCBxBy8^bTM5_;S#zM+Z>~$aT(zedM zQ57Q+O>4z8=%?!2mzVE^*b=KaQhMse%)PM`+pp#&FlL`bw9*97+Lv~$?odDaZee8P zx{M5ZqefsMVCZLxx-ir}Afave3GlV+F&7VGh-y#HsVb=B;CZJjkqo?*wPV?GxI^bD zMw~GP%@a8|1BDsnanWjA=CCVREI-Lm`wP>g&K!nk93TC*PhFez=ArYMG?|&8THEHL%-Dn5ML0nzgw`7{KNhpwHQSE5xv?1HfWj(y` z9*sZhDkYXP${9avWzn9qAK5^H{4}evG8S7uM$G$q6tw&8I5#JIrVm^GzH4TF=_>j= zQDM0}=k@4TMKT?krVcvpY3~~fMQ<`ukAzsU?@tEh-VgO5Rr`nUu`kop+y6JzyQuQ1 zSzY!g-P}%%=AIaqg*#NGd>`4dJm-Jx*zY&|f_k6we#?>P*3np}KtXZ<@inLx_*234 za}qm67Nh!0WdV+&o86#|e%NfCBP%Io$Xp|a^02Z}rc3g+fgF82i>bHIUX2Z`@=*V0I zT6Bt~RzggHln*Q8UQ+oDh=*XoOCq_eyC5)R&SC8JErC`R9#NR_AoS*8v79(FMQ_*L z+62!IZ^M)We{+FfRZbL7)i^q5V|#DlK`W*)lU*bcd4IDtEwG}7qCd%h2XU4m$AGmU zn<)l3I}{?3P)Mle3$y)s8~TYCn{t4t(XVZbY&;A^cSOYS=@H8un7SZ+bxK2h zI^)s5m86Wjm^Xu(Y0{sq)D~v)y?caxs<}Ih>01Aej2m)W9i@a|IG=D~c$r)Cpg-xZ zh(HRWpt&Kbmy3p+4Buj=tMG}C`o_K*STV!Bnsi+4Ud3A!G~(7%UU=TxXUgz zuftEF@r^P0;HM7VXwM`juP4;L3W_8E%1W;7v-#v<@ml4023K`OzCK>vGynDCGv|3v z3&Z(;)8RG6%ZHZQHs_x;alUbC%&+y|th@xz>6iV>D#Z0`Mb3)+;jc$qmLBV#W$(l9 zz%D(!y?zT9ecOUW%*~b?s`(13TMNffK%iXk^I8}0>5jr^6NCjAd2grjG7oKH`gh*z zN`kev`n=S*mZU>MEUqNu=7k8d@noRBl5DM(FLHIC4(?z)tePp36N2P^g)*9W2 z3xVd+X)z}*7KtpKHpjtvB{PV|NiVCA$Z)aBtm&7mD7l2 zo^3rg6U{T6X@Duja>z8Ji-1Q^uBrfRqA>bGOpz?q%M*J7)P21i&fbkU8IBi`;LJdB z=-fI6a3ZWMjji@Tf4h+s?(+2%&~Q5Kg}WU6Rr8awwP3iOF=JUh3g0z<+PKVl7FQ&i za`Ihs>VmDS-gm8GpJ_~)NSpoX3GQe{w6cCf6%917a)ftB06G3D^swIx?fl=#go@lJ z(=>4ruO&1|zze(=ham_L#G^mLMG{idUl4lVJEn4r-GUVwiUZQ?;1i*(A1(5Bf~tDVdLFsx~Lck&dGq~$V~{NTiqqBRY< z;Z)hBVd5unT$p=H!KH0~fZHDgK1KL)(`}v{JlmWaG+60-_5W;ltu=QCHd#_j)b@tP znH3Iv2S>trr$i#KTY+Qc0&*YHm=+H8TCpX2wWiGH#kg+nES;QQ-fWLtKQ*pUu#S?E z^=u7nK#yj>SB@Jh{!(fmJlI^qoCPRV{MbYl2Qf?8NaUo5j+VQVbX z&hBxc687=B38@$nC*SUkHzad8Ip)!LJau@JJrGsiJ_qfwph57OJH&KpWsDMnHMCB7 z8w%P76oEe7Zyi(=PYt#49B-U>CSG3@VX%1PN|D>DB!n}DK_qZnIWNmBqj%@0g5^4Q zQr;}VGe>kF+!*6piiTq_jPrgyH}H(8qNj_r$Cp~TW0`}JMrG*|4(*BXSKw2tos0gU z(hh+miofPi!Lw0f7-A=t01)g$nqdo-h!9+#D)?7_2uO{JP|>vrYSdHTIYNMk;(7m5 zc$VH8WRk$JCuZs24%ZynK&~$F;tryQ_4)%JERzN}BCb%-keQr+JMx#phcg*(J6Y%C zv)dg3uv-C@R2;JO^39Y9z@vZ!a`hSZll8$@ASgwVC=a8r zVi#vijZkO6!z^xwh3?sY=cs&y?omPbrFCy&@`eGC3gZWxcTbZXTLYac5=IxEtPNWy zfI$`JwmgQoSKuIJ_wytV0QzjiDe5)D5H1SVt8X;{&z>7L9eRSK>)xSFAwJsQ?ACQ0 zfGT)dEF8+2r#omhoBzwnF_8yJ#M1q~)xWO943cL>?pxyW#yPQ51s%50c_F;zi%rn3 zmeiF(N_>m3z_;Y;{Eu?50B}fg!NvDe8aVEfPS}sJci--AbBI7>g?cKmaGx+pqpx?g zBfh}Lo|!^$gs}dQt}~fYc213ohf4S|ud{gad~fIjJ;6zhnUS9yMhYS9dhLsbw!beB zq&Z;D3&a;%D`b<5z?NLG6sFfp)lYyTWp5H)Jw^>94qe7^@evqi4xc+lVh#wJnS619 zOuZF`#&sYMT1Gqw2!;k9k(>x=M<0K;%sUQ>5h(6MkLT;f{yQQ${YTc$IThhIl(ym7 zQx!?A$??!JvurT?28$>po*s6v*15}Pp4Okl;t#dxkwecwSH8adj(Bg!~^*>9)SSbVp3xphwyWYJ-!BS#Vq(5svk)L}G@hiqn8 zFk}M}&tdDoKoY=`ve#oi7H#Xp?@&8MWZ7483L-;@=W&i-n4L zH?HV}!*%5hNTVyKlX{K31%_^>?4GmGKbn1%kYqv`(Xn?P1>WP4+WHwYt>SiJiAuwX zgllniUL50mG}8{xzb?U?YPDWpjw~3PFl`wM(U8fnxm^jg%3b z_wP^0gZbiK*IiM`0%&4hhak+V5E`(p8950Z;5?J`X2?8yrTlqxZu$L7M-Cr`FOGBM{C-<8lvJK-U3|&5(;?)jO>Q0-= zV9z`=?@*w^n(?rQdd*46y?Jm4ETi&TO{e zr-c~21LPKDwvVAE7kdy|gOvis+`HTRdjst@(?qU(=^gioI) z+VZ=zC{eU3*bMk#N<>e>?(^^%xKmrmbUC;xpW0cA5*&MGH(oa9iLqNlv}ewZSrlwH zY9Upt-9`Yc=Lm(zI#21^E@L^YwjTW}So63Wc_P($9`6&HE#$Em})V>80u52?Z( z>r>8s)?%?mv_gMm%UgngcB>(m1CQP9Lj89t+KNILE>H4**gB`+$ohuc$F}W>ZQI6V zVmp}_9osf0wrv{|+qP|Fk|uKK2{`l7q{{_nMZYb`%H;wZxbQtXkO;}0c6 zB3d#&j;w|w6IH0p6nL4li3f*6WkQYtk8_KR^i`~R0ULU}y_-dz+R`|qkjEo*7m(2` z4~^*uELN9PxSykuY-ewQVV|7g%@_5rl2&}m=P$&ob7uCQ14uhj-YB8RRtTK%L<^hn zcCrQ9(jO!ltb%Bz%eDUSwB@h?UJVD4#0NHG^nGEF8ak@y`Q%nm{I{ULjD5qAgnkB+ z5)F7ah1)p@Ckw6(yg`O-%W3Uxw%1}Zyx{q#AG)k2l7F!yVOM{_sol|udf7tFpX`ig5LKz3I@%9}po@3Ao7 zn{!JVenajEnZMaNH1YS_oqK`tPCh6mJ9EY_!ZIo42S@gn1$6~lZe~DF@^>&KU*ms8 z-f?LA#V_I+Wh~{smxUD^{$G~y=JU)1$=*c*;ry)zTJ-i9E1wn#Fdp|-gOx8E_X}Ga zDE^}XYcCN+EizufY%q<&t*l$u)OHeQUhz@=!W2+QiC-9$3CrwW9Om$I^)Vr-l5`gg zwK%sVtY|v)jcG=?`+v_>Sgf9d67-J8Wx2V6JVwnN8E(Q@^CPf| zlureNnQ$zxFp0oL(AlLk+3Dbu)Jhfw?B$|6N(*)m%Mvd`0F|q5glXuGWaYD@CFo+D zdXS^e5z*|Svl7i%vt^Lt>F4Ji-95eSa;*+c&Ve*Eh{u6~Y3l5mlCED}D_9$N@UNhw zN9j*`3^XBr?ap9M&CzS4LfNi3%dvZzA^m@Y{lNKj1+>Sx;eG>;f;EY684PlMbLK3- zhVV>+k1)&^^lfK2yFKBg2EOX#IR{}BImGwa)RWE$QilF#F2ytndDQE(=nfKw`t1qR zCM8+X(bMfHpdI{I((3|uyRyR7Vp~7OrL!<_ za(H08+VaQTg|cCG6Q!@1*JZy@KpW($acl}bp*yr?A=q9v&jJHX&cS}zHo+Vw^-sXK zfZTDKAVC>3&!~Qs_-K7-{hGk98`uFaa-xQxsn*Mm46d2dCTCojD<+nYh9RSzP$3h_ z(>ig*zzPZ%K4dUq`@B9ACT{gst4fhx9^b?{kVPQ+{VKvWDk95_ELlOJqFrHjbQEE7 zAriha85A{|`BP7PE&Ek1{#&V7l%h!9-_U#9uvGPAqBtg#0MC>vO{?Ii+F4^*@T!?9 z(5z^Z3AwM>Sy(Y)(n{H1xFCzVF)|bONBh8L44RIV`w-&F!7V!iLE}ik?#2Su zK)$g0MhTKB-+>UZV8u$@umV-;yK;yU7R|--qaoo6LgDyI_6eqZrDOz$@`^>Oi6bkui9LoyeGJg_hk!d<$6&#l97OtTiDn<6bJp1J#lHw_9?=Ye z@d}jC+CBv$DL5=^mXG)OM{}WpObw)3oh6Xnzpw2TtmdA}TscYMeE_27c;=#7ZLwjZ z=!@Xb%K11aOE6fcG2W~}lZJpBlbvhVOI)6y65-h!%@8foAmk@e+*eJ5v(8R%<$Hx= z6!AEx6}-LU3&xk@G{IfPBkH^LWivP4OJN!YZKZA?8nxb$^6v;Xz zI6NHD(UFk9;X$u9l1-Dx=gr*V3J+@nGC!fXVL{%3{fdP2NY)3$MzmB2aqkD=mF(*X zKFgWB2-KGak>dnB)`9MmA@Ks*1l(tZLun#Nrj%vnP7Rs|@LNg2RhP^@qc7kH0rr{} zZv|q9uyz>p{eE?&__VVwxUubZ!RJu$fzbSF<*W38R0y!U(=!%cw&LF}7J+5~JAbqp zA8Ek{9HWAU#e-q-;sRWVl-LDf>o<^Ui=j{ofkQ>1L<){53|#+33JO6B1jAfzAdxw| z8hYAqB-)laB3Kz7C%7N7u0EOTG2f(#;bVVBuHWj%wm(f1tP}bE72Uqkz$)b?0Ht{q z%-k+YB6F!Qb)5fht%69pw^ZDWG!9Q!B3OY(@z9_Jy$J1@yD6Sed)o(w~BGm=@H;3JLP%Uzb@%sv8*>Hu6GS-fIP;>xD2AC8)_Kg2ID>t`Jv@AY}c= zQRcuq9!<~QD*+?SE54<36@kj)d0ngv;p_e}ld=v$G7S;z$p3E7A&lQWBFcPzNm3kb z3KPF9C^=mT{0ITn53zjE)83nZr6T;*_u0KERj-rVs_P%shttCuqb%X; ze2oQCJ29-PxvGc9(Tf$y-T7A~`~4A0!;MagOkfPI6->PW0yCRrt5}~b%*0yJhh+Qaq=^oKy_S`Y8BL_Dc@%o>t zGt7^1F$m$TqF_6oHRg~(xFDn20D(XG6V^1D z=x&k{T5EJw$p*rNOEZ@)WDE8pcZM6{O)2RwEpbo9gHE?e5NLY!6z%2`?f*R69>W7) z=u0reIjc3M3j6VuinTAWbCQ0ZL)*$~`GQm<=XhCK;UT-Ji}TFTC1Y$05~jBU3a><0 zpsv!ZyI04PI-25fyg0sQk?1wOy=Z!>0#mEoM-HuPsjGNC(f{Y%+gLwCRmD&lLhwxM zGUXLHeXlpCTvpR9ezbuvngb%%s4>w@*fJ-J_&d%=X>$Mj{LANZM8#VpWgELT>>A+t zYEmt<*-UF>S_lU__36Z5wz9fw{_k_tOr2&__)Uv;b$0P-v}KWvmh#*Ghohq+uI}p4 z886ynsGiKTothfcDBaYGvNYM5n9nB)s-2~OCxoVfM0s&{$B^5%D!B*=pUoX|Y)3;iSYJCub%7zKL2@IN+K zx!%o~VTHHIU1s%*V;dU0f(4%7PAO)(p+LSV1dJn<^5qFMx;tXZ&LN6Sp#Ll)*y74sKhuxc%@B>-b?@x18st5>C(5ul%eHKFl)&cYkQk7C zq@0Pne?xr=A=4Oc)=(fUfyHGW3HR3?%T#IE?js zY}rF4{~A|X(FKaer+!~%aJoVl;Qo0Zjhvkr<7hQhix_6op^@LScEKwji$&f+rvQfP zF(J8K`L2$&mb9KV;@6?5xFeR0x6ATkPhb?AhNI?&!3b#I0y!j` zj}i=|bVf@z5@5;43&OBCQ_6b^eeURjG8V{yND!>`;3K_RRq^LS zr-lrieIzyZz5hfw&^KnD?LrCUeGt~VF~BRFMmaq3)Rc=zLm9VZO|L3ny7()RDK1<% z_x~`C9q1oFMxj^5)kvmtE75RB068EDIdXO;G_998Ls56SRTvAqhK{XcWA1A7V|mmR zw&e@B4~^eM^^m->iH;KermxOudwc>jJj(5MRyf zTmJ#F-St9TQj-h{a}PQH*3LK(8!%2A$UDiX_HT>X8k&csQMud{VNrD*QBU^vhPb^9 zm!wW$>_KFiS@pu8gZHg1>^gAM{8b5_@1dduPtiV!$l4Gnvdl)Y91)Y zg|WDw*2N`>0`PoXnm=eK_%i3=<(Z#U0w6sVu?r82_QU^0)zE(`s)FZfm4rl9$GS(B zfcsumM63;0-(%0FU}y~T{%bqmQdPG6!O9EkbZBsLuLNLFz^JAI465_KM8jxy9t~q+ z9?lr!RL#+;mTR?d36U2(JZi&1$y5(PK4+}-fC$&Qv29f=O3sRVaAw(vt+od8aQsvx z%-5!|gTvk?VVzhzm9N zZF3*}f<#D91ODSrvza6iHRy&Y1*KY6StA8$7Z^1Qjpx=$-DMza9QWwp@7GD~mTc(@ zn{`r6hlRuQ+JUykn_LjTaF3^7YeHFGpbBCNbP|PhR6?dC>dNU<9*~W#-*sKY^gaxg zL6{&}B03k%>5SAaVg}?YlqSo3oVRm1OEHC~s4Ek(s`Nvi@YKFZ8b{daCqBiVdd3ig zlMLyHO))vdC1VqF22%Xdjs1ZF{Vkr^Z#=%XS&Bri&2WLPX*X3o!c4-Uayzp)uFYln z{Co;lo(?B>hJfY*)B`gJzNR`eR<2E{$vdzUL4M5!cjn<`ysOVqK@uam&~u$oAoC}7 zXwqD*$Md$*Yp3x(LA_rdnV#7tHEO;N4SQwdKb9WU_(1mjDOjduCY(J=J4HlnIn7gk zV#|}Ty|M7+?e$r%<5_!!D<0VYk-u1Z@DBmK(Vy9dwr_E0xLdIVqI18mLblE-Vuli) z@asUpswKRG{|yq`hTBhDgNmul`wUWC`H!r0bv2DZ@7C6PCj4U+6*X+!u}1xVzSAYY zJ>zp4_VTz`w$P7CrIg2H6_x1xQVxgGB7|yo)Uze6;bpfjwMuvDyI0A&z34$tVe4!~ z_;GCa^v&@7d*i5QkOYNLHC`&(3D-R^n3pf*nO(zUA{Yz9b3l@Ow#NY(RWR0r!4tgl zU^4=b&=YBdK!x~G{h3H%qO=wi0&^TBd%PA7(QvKj$jSKox_l7u!sv(@DoU4(X|6-{8M=X{*Q_ z{UsOFI%6^hpLHoJe0e9g-=2*@H3P7zf-G93HIdXBQrK-TwI%_4NDU*hG@rH*g~cOp%T2%B{3SO zI6kCYG=wWGI%V-s&L|WW%PlNnH3c_5UQxuarqo0L9h-Y6ti5>DQakW{H2Y;R1f|e& zuuQdG6^FcV#$bUb&Vb=9_u@urZM}*}M(mGSFoPhEMjq&RpjHiW22yBuQO#x>_2TW$Rw>m{R4DfIn`Vx6$S{Q?by$9ZjV$wGupUX)`(;J zIrW%ItC#U<5z3nx7N%6LVw5R+Tw?cMd{@4kB>bU{Dt|nfNCbci5hjpkOegKv9$LEx zPdV?jGc|fY?gwfe*wn8T=$=6Ta-b*O17XQd zE`C9AU{af=nlHsgQ|>b2{d3C$EBNT>-+L$B{FK6x+UZyF;KNyMc+7oN0@PK4sR4V= zv(7b>`BBY3miI9q@~Q}2J*z)wCPVli?Wvh6eOTpcl%gfWju(#Kygw!fZYqT|%DR(1 z%{2PItxRkx?3C*MiF5Q|NUz`k7b7j>N|B&V73||hglu<|cA5^g^n=$mK@S!JK0aq1{F_YgwasODF?GGmd#JwKvZWGz{2q?EDD0@-5JaR#Ab}0FB zTNs*e`UV1-1JBaHJn+E+i2Wf~cYmmUGb6&<_;KY7j9k`F2Rr_opa95|x6Qs<8Swm^ z4PzniV9Jb8PZzZooLB+w(V7E&bNf`Z%46983`eW?-;^%ovSp}0Laet>6F@CzZ)Hbb z-;g_JNsw3R&13L;*bRCtxSOOYK%ORS0^8L4C52qqnNw!sqfgf=R`hvPqKQ6d*$KWo z(^rD~hgZ4f@^$PPR|Le`x*6smsW-|cvFGiSc_jAt43!trlm__b#8d9BJnpj!q^HaJ zS${PDH8%ukMGz7UYW_dWr9vm0{t?PR%H0#{5ioS(+_a%WD6W@jaPMKj7hXJr_ZO z9>+C+cN<9UO`)2P_>$8rvQw?nRV$a1^5&I?qivORO3}t6(th=gQD#WICHEtL*fn`+ zi-pe@4Z|qZ{UKXDWUioHAe8Z^)$`!gsFiv+;_S?UU&-QcvE4l7d`IdA$n{dpLHbMK zYwgQFlo9u5OI5h4YJXlIX=_{l#s!8PO{_jg#JngsHVzhrXDl9nL_#0ACrs+y-P6LM ze>X~6U;ErSSnwL4kTFO-m*hfZ(2tgyt;T|Gp?j>;%=~x{?$2I0nM{!B3R0l&I=v#f z?LQI9Vl|KZc>@cyqsqZT#%6Z7_<ozX>e}tODS!#|FkL)Lv@)llYL_!TxaJ?LiU_VxSzg7EK!x(i& zK=N2kOTs|zAW@V{aHK5zut5smAXjVguDK&LYK&&V#taRIEUkbB#`Nqf<=6 zF=@wz3y0}&bbKmSj7q6QQV;Dpbb1pcccy#$tnaoFR?vOM)yW67xl0aShS@KwqDd@+ zZ%Keo1kpktDc9m)bJ;zALsRl`iDsBBT}Vd5P}#ShY*{Wb)GCpe5^$aH%8p zLSb{^Q1AFm{G8~az=V&pO#>RdO4K<*>!dyV%6Sy_Wb!i93%aFna&wvTIVhvy3xCXYj^Hq_YTe3 z1wHH#=o$s7=TF)P1ufuJWP4u)zZFO-%;afiAt1bEU4}^i0Q{p1S3;DE{dncu>CMo* zVdHQz9gN1Z(X{8(7dmz;8R->zL8R+x@)z;(9ehEM%JC@|-TICkxN?^Enl25&Mb0sW zbe17G10NAHhhWNnm2Zw$`J3Ezb$7fR6btxpK38_j9&sRFZa=M;3Vw_sc(1K3+^Z-h zZFzkaxjDKXzg^lz^#zb#BUC(elSBHylH>u)OCyKP>ke-<4{{~O(v+-EQH>z?{iTuu zs*Cqq-E@5RWW&*!;K;u@nmSE+ufr4Vo}xHnyS-X`avA}%|OU6WLNFc!rFXK1UP^xz9c;-OeH&ZLag>;T$aE@sOz zu)oG2{0KX!sE^&C2Bk$ts)N@DIOVP^h*{?Hu zt+=JTS6~0-lHIKTpm!8MG~$g34tsyU6+5Rr@kCCC?$677 zpJq*Ty>Th#%Z7-P^I9@hu_DZqru`irg1hZb&X ziXr^r8&*bCTzzkYFf5%kE-0T4CMXz$ne8}RZn(QDIqL6@m%JLlJGmSOAjnp6_ky} z;~taNlT5)(I}RU`1)IeJKB0i0od=ZeTq-5JP?q}Z>_PyuIwGP`*r5aG3NOuDJ<3PD zg8bX7Q8ue+F28kn)$qFb4ck{m9`%M4nn3Q_tguSj38QcjV^aVnBaF3$A?vGF(O?*{+@rxA_>TJ8*WyMq7V z&A~ofyzea?JXl* zp2&}muZM2#D{qX7H-qYuW=I!AE-6WVj`#IH9Peezr_Ls=wRyrWrwhr2ck_9D3Ha z(VGHxZG4xdM#)=dNxxuLrQ1#6xh%-rOI!BYECu-A&%aQ+TX!9 z(Uo*ViC3kLq3p|f3bq^+809dq?R3e$f`Z6Ua5b=k3 zsh-|3wK*h80vLsraqVU0*3|8ZCI4!Py3WQW;+jdvhG#<8cven91noG=hRql#azcFs zYGQBBPp%~$XLHdcook9`k`TWS=vv^Mi#N{kAkiu=HRb;{1bYsLb%RP@p>l&8XJmu{Mhh@oOk?xGRZVX;I#V;E!Vbg^MoCxD z_+`CHg9m5M6#0@}gNZ91hwypvPM1Dfptwr`KaD=-&lSNC#)T^+mju?%;b4!TVHGRG zBR>u}6Fd?%lFa!yJ~l=J=!(|`B#us8A>8nZTI4i5&RQexO-J4;5n>Fs)xe*~%rNlU z`ph&-Rup%94ah71DPm?>kE=*p9^n6jD{xc$&WyuQl`>f7jOkIRkR67Fr6KDqfx*-| zSI)a$bG~7V3MtltiVa?SnF>^}bnY+F9v8sn@CrOMFDSyi*uC^zdrS!PvLGUVFtND7 zk>H>!SI!Wl==Km9V%hz~+r9e>_MghEetTY)8c`nb6mwLgsVo^|h(8S$?qx*^1P&|> zZl1H=+5G2b5bmp`pVDSyc3)bZq}PvT&%JEZ>;MdH-5Bc}HNrDny(VbY+lDnDbfW&? zpi1C){t)&aR!Npn4NKVM7;U;YePM_@+|!R7`9LK|9EUXES5b%=3R;nb&4<48NXpn( z{9oxnsxehx4emVHwe3MGgi5J~q*9OD8c&3$3^T)u8D`(9T@!JXDW`fg?4(8rsU>nd z7EoRs32NB)MgiAsUmo>a9J0yVupbR1LpVrNQ|Yjtr`0!W~mHEDig z5ZF$Z%QPyl{cQ5E((!N_kM#-_RX=pOI#P&6eP!mdVwpP?t?%pZdufKTLA^qg)Z}i+ zz4V%4D{Qx|%0-NiOPkuMns2%Ko(_`P|=_X86 zwh(@2<)nSr@9%l)3d8x%jejPqbz>Ixy1kqqx6}TYR)m>Ldc{Ar{x|Zghu&2G(EeS1 zUDtI`dA7DFW8!eo98(=a+9cd@U4c-h2)m?#Z%>@S!f5vAY$`3w*S#jC)S*N1GGJUt zD0n?#JLySQy2PzBpCXzPs#O}x9B+Rc!uaW@KYz})R}62G;@di3B~dlHB&ZG!Auqu( zSUvZ%c3%f~O-ef%ze1)2b{);MP^H}o6v@qJ=@cy3};@W1tH*J6Y0YPzX=IRz$3)d%x~&znCqLsFq^nj!EF` z^%S9Ku!uRn!fOc(PZ3|ZT&qC_jyrp{@9ud_%rlJ%5?#3nw}(LL&gyW>`p?Jm>J=65 zj4Udq$5*ckY+x)e|LSU~T zgovL5di;u(+jAhGmOW<>hV$^x>f6EwVpJft;WMQY8($8+qV}E{^4^uNNaqT`_ z9&|*^xkdu)6}mejc=967%AK;E!S`;k=}<Vf4o?XgcShV}=C8(bKY+}Ff zJSNXd)FPY(62lRn0||TN$%={uCY&pgRy zLAzGtY5UX2Ddbb&sF@<)ET5+p7-kv>9VqTHJV^w|)x{-P`w_bAof#%x*Z3>{R=Rwm z<&W<8C`1Uy_a*ghC>ASJyiG0q0SwA3P||=Dnnh=*9D$skr()jMt3aY5=BPG@BML5t zFz)ifUIF;#?UAN2a_qI4FQRv%^8z6xaoqRsv95s^Z{)EY)$kNC$=OPxjpw@IL-U~a z->Y>v*NiX+ zD6tqrB^~Q-edkZwAKcy91ahaN9%r@wK~?#E^XZ(=WCH~v_pBcnqu+S0okIfoQuFzo z-hKyS!nPI1*1XEDiM1I|%c&e!76)1xpvM&rvh{P0B~K>@(cXYXSNAr=)K1uj@a= z-=>C9SgWb?I}eQ9;ch9-bKLN7EeHrnEMFBvF;Y|+;f0NZ*36v%0Wi4T1;;n zzQ(!zZPVwmifoQJ3YmKJ5TL>4c{x*US)+CUzB;LbLy{Arj=zMI63q-^E%hop@Z$eR z@U65m%MIVYEuMVZrpDn1bC34lZ&jq0@P`E;YT*k{^`9z!Tc_d|ccyf@A+b)U?hPLH z3VE-8Wr7F7{Li9qc>G7=;J<06uNkO|P!7%D{qD&&lEG4Bf^M;26;cVPbTk;6&#FD?Yfd|&7U78oM+U*>#0vlW)z~XX^#grod$r^R%d)K(Cd4H(QX2rfr4;c#1T*6k z=b){AUcL;>V_Zjvng;=|3ZeFxDL4g9q-_<)SF3e|DK z*yZo}6q_=(z6-2Ia1cb^Vx3UjjPQa#Oz*@ihz zO?SDivyWC5S<~$kJ|UGOyuSAXZBTbK=1f-UqXBkN}VqdWYZectLd>4l= zxKCjB-Rx#_W0tRlm#>dE$N{_YAvq_Fnu1Y89*^-7nG@4RbaRLXH$0YSDRSsA8sBTQ zTys1%zqw<$-%P$I>^(d-pKc$=yB)bPv6Jb-B*~Q%s&{UuLEKO>ohtLMr1F9e9Z-rF z{P|g?geDXr_c;l?TaSSCyL9O2i|cRgw%0hEmQvd}xLX3ar+Sg{S;Y(buX397jI>KO zB|-ftI2zH%yi9TtB~SqL{CLiY66?C+5U$@3oS;?xb$U9>=wMDXmGN%iZkj^NA~A3V z6!Bs^zFJrpOUMowA#gYQ10iWBeR_}~)}ciWgB}Ies>mbCfcA*-2L`InN`~3xO^D=D+8+ zd>y7GGQj`@VR*ka>Mve<2{e^axxx_X6wD!g2FV^uC9+?8&p4Ua?F$qordIOdJQR_I z(DK{jLek{k90(1JUEx>t+M+`2MiA?LYW_ppl$j6qLx6Fl^kF^$_41PE$ND zZ;vb*Awy-8V=05{0*LGY+k5`F>5*cwz6iOhl+|$Ztg=b`PA&*T02hAo>z0V{Y{BK2 zF)cRwt5yF=StR%`*toC)6&U?BW<=zIOwui6-b{d_X3UMvmONL z!&HvV%=P_cg4tex?uYv>cCyp=bSvhXW})^Lb((zv^l}TPYH>i@_0$VN)`X)JP^*q9 zBZ^dpW!v#l+_Mt)U(5XHR?PZ3p@Z+3iHr0I)^%zd>wH&SEsa!IgXZR)l?~)LzDs~X~ZDhzCN4UkSRo2Bw z*I@gTSbzIBU#NZX=>2^-k2>oJH`-GC=UY>^H|^Fq!vf&wKS{TIZtsdRfJx))ZBwbB zP4*c`7PKs~9gKoacG~uDf28BJWr!lsQVIWfM9oS&7$uiBOMeFp(G2pqnSm~|{gEi7 zLWYJ^)SYjPj5DCOupzh^Dt;R;gmJ06`3zxX=AUTsB2VAMd6L}mY;omxJ?H}JFjLXf zU(U+D);Z`}qah6}rC1BZ>sTy0o)ON3J+M3mA7rHBpbU`l4%0|x8B4v&cD_A=u5Rn( zdI#3Z;xE1)a^Rr=`--*Pec)6+oc!|iCADGMwX9~<~9 z@=_5;OV(xt%hV7H+8PhD#H4x4Ko;}ab_3AztkX{-E!!9lSb6&)K{)gABZZdl&+PsGi5_Ds@S2+nzRrMjP21b)NomFEHUuKgXBSiw`L}b|1zIE|F$a zsq3D3+xk2qVwL1;3v*XBN}>EjxL%Uvrz53X=_&5qv`{?WL&6qkgo)$s*TDn)?slDF;`O(K|V^L-LF4d{|_p`>+5)4SZuxR^$<$>aVC<0!3- z>TG$!l&>x8C=X>hYq-D}o1Izl5@q%YdzrD}Q=8fky>c5utuwT)Ugp@^$63T`l^9&B zHHDh*_M@SJNfIu8s=9nPwRQ)cky1_E3Ei3#Xg^bg05`wKq;f|t|+Qpi>$2u?v^k*sYCNqE3D7{5~C|)K*+NV>b%A|aM&dc5J4A3IshR4%rA%@BW2jaXHCh-aq2ZX}i&`;XE%nG+kZnBliEnt)$zzVwsKb9gByIhIvz2l|bscfXyB66HF zIUSm9_2vEqE*7{sJCp}8*k7vRoT09FigOL!#B&ahLGmi_wYu5mEAa=_$>h6cqE4!z zlFZ|o5uRqHdNFDitL$5FjYeBJ&z&VrO#uis%fY+wC)#PV)%o1*@--nI8Qm6cu@@&u ztumQw%ILzp$XKgY5VY?o;c27Ca>37aTeGM%+*3xkDZzMk?^N%rJs>3RfF^u0LNW*d=Hk9g zf=3%t$Rwly9#ynim@QA73R??d*F3;aa@HKohTIdiu2$v$o}ykUNeH{R(#`Y~^Ej$) z)ZIyEF-o&yz`Sv9?1n!YD2$bEy&ji7wHdq~bq;liL#!kRmjCf&KNCZ-&Q~`>wQOx- zP*tfSvU!vvzj)`MEpYu`xcVX_#pjlA!Y;UZ>^YvI;TdI?Ryq@WDToxdE4g6?r5L%0 zVKlE}ug$&4YUme{luZHUaPvR+{9`#Jv)Q%`a^!4VI}EF2G4kZ|6??*2V)MD;LC(g8 znRL|tjE#^G&aJtZIizY*MEfcea_0nE&3scxe7zEP|C#hIbL?HGQI){VrSTi<3JpH< zh&}7SjT)Dr2)M2Uh2#(vB|v5|hn#ZPXcHN4j0AbcUBB$*;hkRRIOUso#Eg!nHtY$s z2~5Z@tN1^iMIc$Fmpi$ng{;^HG@MR0*uB-9=MYVYho4dBfz^W%+tcM5{z1a4X>&Fi+PI={!aQ9eZwB zMGyI{!5711xY4^>K8mKb@j$!I=VFlMuN-)Q9Mv#L6So%1LffzFQZPs}#t)i+=ThiN zGMbadkX9tT8`4V=dggBBN!?l)YX}(p7x&y$dGMJ<0`C@#O9V8x8!rOY9grvE?}X;( zoSUja8zzc>^R5n^&BN6I=cBc%dibV?>q0Czc##T_P=&lXs|^uf>Zf^e_aeS3d--2DDD z5vjdN}@t97wd9B&PwXS-3?~X!=L3sYg z^Y!5@;~N8-fiWE;eZkDLi)vcIw9CRw$Gg$banlHUCAweL&3c{yrm|lqT>mzB70x{0 z9Wn9>bW<+Q-I(iC7TuLE?I8}1f}_Oy$y6JC$W+7k^<;6vdMcGBa{bC+@&|LP)YvAY z;=w~@0^_ujl>TV23~Ap|I$p08+=j!6;6>uX;H)>sLM3|SW-KOw2C>+MsE8&32yG|{ z3w_6w>WZiMc0ONY%M{KXu0LFq14sPT$rhV3QeLx9R$lJq(s{#)cXxRsqUd{lUtS20ER;+pkCrSNTqY04UqNWboz@;J8p`gs;Uvho!+%r}?`kK$R@4Ewa z)nG?rZ|io~EwU9p*LAIANYD+K!)JttFt*+2!6K|Z$xjbw!07Q^=_x&qpt_(T3xc{w zkXJ|*YN9Uze|=|K4r^_n^yc1#oLWdn^I2nnOte#y?i_cZx#MO?7TOa}WMYmvgOrcp z+K^8fg?Lh?^GSh}=w};zIQr;K6Z5>uY$pgYlyDwu!6wQ_Df^#N2?BWE1k=jtw1<(| zykPttSn_!%Z{>Z$O<`tTj~yVAdj*dtb|$wFj5#u>U3`uDrL zbiyLQ7iW}c$rne#4^F#3((tsaGEwxabE1BmR6ArK$c9e^K=Ky%T^TwkZzK&q1SWqP z(>49I6h0YlZ24ZC9sB@WNw;BBJ3UVP-K8r&$EwPc$_P2!ie6bHiL;bO*t zr4k)Id&()ElZV{olu50p8oge~iRsYgn4@B;7z#w%;bN7UEjhP9b#>OKj7F5eds}Ma ze|)U?O~6r(WpgUN(&jxRepq?S_*+ZvUGB)gO6(}ISPBH1&eJE9=;`@s7I;mYMC&}Q zqXpC_;Ky5Oyf3O|Hh9aTSzCuIXkW3~C(^G^^-~8ngru+kLinuSMZ)IF z-2%(p&<21P=W(N|4%1(I^s;3lR_-lz<;9l{8o6mYyEN&BkB+o3>*?6NMZD!lN$w?a zz@QcM3-z@E1-7rFZYIQII#Pg=5Rje;JXJ#CF zd%$e;h5w{lUt!a{-a3*C?n$d4pH_ogMwYjzPfboOsVZ47@+<{+({+tw3FpmcOp z`@`%1AGY2yD313F+YG@8?he5T?(XjH7Tn$4-95OwTW|^P?(WXu5C+@HZ~yOZZPk96 znwk&ORoydB_c_nGuM3ukMQ%fB9GWF%M#g_e6TP7k?-Xzhd{_a2l4@YO*IsRuVlNpSZDDD-&w%`sv9^En3UA1J7`2`<0g-%^+sJjal9F z;x*mcJMwy`TAvs&X8C)dGx7KFIf|QxBA8cN=eVbUcx>5I(^z&tycJeK*_XX1n%*S? z50xE$;6pIso68A_^TumsuWJcmSM3WO2-EAuV!-hb0J0PNEdje7SYDT7>qCEMEO1J> zY79PvlXFp7kZJ`ceVfuXqS-j}VXvWP${Tmwa%oS#mFu|Sg@_I1)z&@dwW+5wZLsUz zBVSFa_bak9KDJP3PphT>ek^#_s8Qq8tfo7`xolDof99df+26-!YIYf6J1v;bJ;NHG ztFza$w*TY}t|LI)KD;|R_tDzO{v8-8-n#-VN!gFG{wTjdyI4~}FvYqmB&>5Z?r)l5 z#&Byve2W!0%gz%|mw4jnV6QKh)|RJoXlwG_O~b;NUv5FvBJP2ZY0Jr?vrbg!?NPDV z?j3jwNCLKR(u)`7_>j+1eZ@-MgncM`InLD0w+JVXTeSRA@J;??!Ag5F<)?bln#)$L zcUuCaGKP&_hxGHz=fjTgWw8l}DH^^LT&71<#6X80C-2~kT zu;zh=Ib}b8k7~380Jt_jgK~E#Mwm@*U7y`+#7I_m%oG5hw0*rRj9hav_RN6c<#zhc$7dsZBv$MtvT zn#GC-fPwc7Jyz7s@8j82jp3G8;IpATDi5nk>Lmq-0QfYVP1xda`O(%&`~CqPx}>tR;d%N0F+Df@XL|ORzBf)jJ|X;^-B{0xRX2U# znsZ{xitFY5DA0LtUlVoKnp{4rYI^F$75;SVUGiv9?XB$LP1tl(TDP(O+;;1}LS3i# zy+txLk!XMcFTOpxTHd&Fy!`z_zL96cNQ%@&MPxueWm(ycun4Vh-vHv3ytwXW*9Pcg|+^@zETsiM6g}Q-DSE>Kw5r$nv9n54ALt|i(2tVTMgUdxBs75a5qiWQhIAF&F67`+qbu%k&K73p=SL* zm~$!~!YLc8KXNpF4PbH|p;eB;YWA z4C2)iYOk(w^PE~O!gSnN&mGNRGBAk<4cOtjIny@I%CqO`AF6|NsnOi(C*Tmb*$ zC@SP*H&COfPOp4(e+ASBf}%lb`q-7Hnj;YCWjLb*@C)eGcy*y?YtG!f2ALN2#*ANR zQSup6mWBUK9b;aYnRVxsmChTF9y%4_()pnV7nlF#&E2l#JE#m&3&7$BHX-%rwNtY}KId zU{D6S$cVoGJ;5;Y2+VbYL2bWSLXY26-*T`#Cl0fRk{{p{wBj!-qq}SZXX@f(KuBKY zeLiPAzl+A^=}U`Ma?|~1SZXi_Fv(Ul?Zian;E$VEecSh~Q^Re}J%+Gl5~sGTscb`H z>FyM3m()TJ={S7V&NT47f7Hl&abdFW2Dsld6oGhrw%n^Ej34#dlUQ(5QFm`wsr z%;aPBsFgov%U+G0G|?Xqly^;Oj1J4F;?vp;-!kM>D&INpB8j8aAQd z70dfZjN&M)^+UzO6$?34Uj*n6^*kGC==rx%LdEIFUu~PRsVgd-D}ytmkyJ!U7Pgl* zq{c6mkcf;pGli4Qr=W&mLlPf3pd~Z;ZHFV@NA4FMgiy@qY20Ix8!NR(k?Nq1pRuW; zyN61l+vi`Qvv~+jnVj(YR0>UJC>^HV6nX-7rV7bUKSU?0YB|$6lVDjP+={=Ir+j9o zA9VCSfx6NRSgAm_x@i5}mrz9e4@pIFr>YeFf=Oz0@5ZFvw_{DRbv@%cm1$cVDF?)6 zByTgeD6I_mwlef~`hAzjFkUTYK{CmQNQkl;t_LlY>6jZWB_u7BcA0)HV*X#2Kad^a zLhiMUGK9U0<<+fq9k_2okM(_tAHP5Ga(iWZB;kP^-(gln)pU zDu*}{ZIwR7kTeKfJ&=l;&le*J1puOKWaiN0`6)zqn3 zn~_D$nWQCggI2MqGN|8Uk`A(`BovQDzbz|~$>l}n4+e-91EUFf#xl43^Z8y6UXaYb z2cKtKNqhWnkiEKx=fGgB_mPZ>dx~z`_xxJDYCoFkyV;MIpb%_v%X|gB&I$4;;Eb2A zLUY}8(o_s@pQ%vTgoZE{F+ce#urhkB)TJ;pGxT>AQ zrZ#2naeB7=XpN#}1*6d&O9hNNS}{Lr-xR9_SXUrFTve(m;;k6%H5M+Eag5%LuV_(U znK-~~8^oMEuveqIwBR;^;pHaN0tD-^$dqS^RSSuYua?XhrvLI54)8Eir<>-Vx3&>z z9X}9K8mqb*tt1r@@<%P`Hu*Vv=Mwr;seeiOqDIagb~D`%0m+zT#)R`T^G#pS%+Ifoz&?}jR1YXrT#`~3$G@q4UXO$k=BtrVq*BUjI{H}%xt#YS)7_Y z?qCAX)sb16f+S+Zl)MlCe<737Zxk0u_x1ddg&8HkMwDc+H^zGewx?6kJh9P-vtsQW zSi}(Xzh(`u&%l%~S`#Q@b?%KM>v#ffMT6t3;orG7Cu&C#Imog&sONCTvWU*UO@>Sn z#;@Zep;FT0Ev8^6Spg=(d`6y!!rHBD-ljYl5~h;y z3zc^7sySWYyLB~M$?Sh0i|AJB+CVHt^Uz zAS;imaf8daiqEV$u~)+JGZN1M)7VC(3gsBkMC~K=&23BQUKkGwD(L__W1tCA3_y$r z<&jYH59zm7WQh&506MXfbF3i8mB+Q|?a$)iaQ=ppSWVsH38Tk0F(Dpug_bp{in$G8 z4+Io9Guw4^TFHF3BYs@!eGNx*1d?g(n&}&;xJ&0ZdAkLkOqLz5Mb3$HN&NUe0Zs~K z_fu#wfqQp$ov{SNBQrN#JdK&V4C8P?P%8qpY~PC}=P5#zVZtVC3Hi<$OnSu1b^Icj z=5?|Wxh%*NYi|*bwFK2ed{3=Evc^&?0&UKOinz3#MtXO$kgWtgKUmT!1NMqk;($0R z+BH_YArtf73L2CuGw?K^4z2J%i$8ioh+f(OeaiOEN@u2Evrx6uq(zgR`AplBLgS|q zH$OX1izG6Y^v5?MN()?x?OnA8k$pS@;QQ(+X?0*JfA;1PkVYy7lj49o@p9s$6(jK5 zt^X>5B%6g;tdzkaMrU{LKyN{_s$=vFUC)1)**UK}(wO?xL}ssdFxLDTx9;56&Wb{K&KqCl9a--%oC`G;X} z3__0m8>rzj9urbIP-_j8h+k&GRATl@C;-G`*6~ao^JMZRtOM@#6zbf(!+1s33fie$ z1Z`_7``8q$OE}4?!5iox3=^hbGUBARCL>C2o zQ{~B5xx$#F{gk6nq|h`tiCq7dGCUFsK<1}Zsuy%Iw=p%~9k|e6Jw%E zT8edK)}nf-YjqL_-^5vrMbOPAC%Jn6DbdM!(JA*B$Tz`KpGgj-(S(om1BefQ6iz)L z{Rj4MQNfY$E83ASn=v)`j)+FE5MnUcv3m8yCNt>41zeNHgifCoZrU9uw>z>WSx~^?S9Q2iy!_$Go^3A6^thIO&RnQpB9&L zS^zOcjohjSzoYcjNF8zFm?Q_2oCMwOiQ@agMAFTEv8RZPq@VFZlnXB_hmel8bUlJ_ zC{=LTdyPAHi8zH5wJl%sZ4Eq#}TySW-`bl0|)5? zM{k$ENL`bwY*IOIH9YJ^v@?KDZl_BsgNtX*%hlsU(00$6)z3u%GgYA*$gim>aV%N@ z9mYnA&ft*@o;{+3vd-Xt(D9%N2!(*<)V_-@?uc}W9)~9Gja}cF5oGa2Yzc3CarmHP z>Ivr_8I|({=aE|n1+_g7k_ihDXG%)G=PoY;ok%pBDEp|#^OQ;nOh*x7WF4Ab9aDUr zmHo1@%~P7tRwlG!upbkgrI3O2QxzptMCHrS7DUm}z&`$}w8BNQ5)6`+9^g!E281HV zsIy-R=8{$N3Ivus1Sk1KC#1&lvU18Yh-whH)`CtM63IR6FjM>Itcd2`np&FFT3om} z9!()WL^pi}D{Dd>@7z9Y@8w0TAvaFq+!lmHzVJGY70?r@&?kxdx;F4`2@R4i{Kgy~ zw+aOL?tv~CuB8f`XH^kjh!X@VH*_1&p7ok7M z%{y4PrUE$TP@^(9qWX=P8eYjmkR|NeRvFF5WGG9G*b9kFA1ISPjY z!Y5sPojFBPwMxWp@O(=N`YG}^{LXO-R0Zj?onfU=?o|e>T&##n?Yuf0u^C8$g3Wr{9@3WC<^!0I;)Ez(P*CvVgmKNsJCS_^|F+Yka$0+R| zMkZH?#nLS|sn5Ss@@CwaHYdwImD2QIE1-MI9vS=%)KwnuPfi3d)o$;NO5YS;m!&+l zY|K)DTTP8#haI_o-UmkdIsYss94*Zc3Jy|3j`kUnSB(?$Umwj1i@9ogcp1YLkc+)0FTn8L%$7saHDyoi;DFj%xDT z8dZ&Lej1qLp}oJ(y12dBaWr~Gy089YxmHD~fwo4J#R|BoTzxmZDw=zW>&B0y!a6~B z-d9%EkZtm^Hasa&qzN&6WmGKXV)O@ck|d>4t+9g@Ff3MLaDq_os6!kVx@ALhZsA7< zpQKKGen?6ZpnGOs+xe_H71yOlBPZecG*y{u)Q4yao`dKrOrQq2x%i=TBu^nuLa7 zhSQIefTWkB7S6d837-=B@VY};$w1GUIohW*K@%6ZkL;a=EudLqR_np*l)E6T{dsS8 z*9e+zCb~#7vk4#P>e3Y%hLX2oax%Ifw@}78ix2wh9;X#YD{&9BP$XItY3V~s;#buv ziXDuKU~WF}`W8*c!_wu&-Fqlj7;>v^ICYq+Zx~-ze`#$&CT$qs#0yjZiX%6Z;eF)l zq!cG=`B2m0t!ApI26X0=e|e5e71KFON04$E@3W>!{C#Iu^_NqGP&lgrggQ8gIU4V$ zh@6(C@{J8~<8mFT`KU&>Dn>8&A^5k?0eX(=cB#_*FIZ&M^DkJW-Vpn~84!otEQpBk z)mJ=b;o+WaIL!{bFR*jBsF9U7M0+=BmBlVJ7_A_171;sNEf)suRn32c*8IrAt2;Xf z_iG#MVMQdQE%w(-6fjC~9YdH!tx93AT00I&#JI1XnVHa>I!kcQyE6%jrDg<#%puXL zOJBP9buSt0PyyQYT+V%U1#iRZXs1fW&(WN0iea-`rfy%xa8P#82+172KQ-PA(76P2qs1vWfT%R65c9(1i>?J!?Y$Ps5 zznfr$LE)>ya8cE%(*t&=2Vh(^J&~amp^n%lx_vjL>jdMEzzqew#Hy7W0tfVADi$NH zkvvf`@FWY3{Kvr`!ufSj`E?o<>$1yj!oSY^^6?N^jNoLGhEK_1Hh^APA;7{{G};|K zPK8k;F=9yB*DqHW_JwqEfgMmSQ8&A7Em^8TZk!G!>-HXJEQRC zoVoFt4R@wtOV*@T68F*zoQMgzQ_*bT?W*K%Ceo#5I9E!&JFd{s*FPfP!N?7#GBv1h zNcyE&>?SOOZL4T<2ls`WeYUbkLx;V^v<^x1CL-9qEhSS%AcCMk1w-FiiY=YJGj{hj zmUmS6)XKQ7N`gO+tI=HdjGh zLL8{G?Sr1!r}jFndHZY8`aDg_mhn!-7FZNynd_KS6Ku1hd4>(zhOD0Zip(B zedmn-dTJJfrd#nde!rucfJ_`3+Da|%%?;UHHN#g!GA53hDipDV=nI90^N!(t^KfW?D-m zsw`pw(eelNWYI0%@8uOu@$*rmzC5syAd+lFGOw`q!}@;7iQw)wSw$!xmZxx|i9XN~ z5sjc^Y+?2i>&J-XYeM;cnX*57OpaI$H|#f#ng~V-2>^eJIyx3dM%k068KcWpJ6fW1 z+K%ORdU3EQGh?E`@Vk*IApoDL28!g$!h(;fUMlz`K+T!U^_$D7TczPG0U)NceGi z9uX6$bH#$xP8NJsjwjB{gA*YliTDzmNw2Ux{DlyU=+NNxlldQTfsGT^zOs?(O4%X& zjn~P@RDpVyri2Tze%uvVo95dPrbDgkmuz!ilsC68-o@g64tU%NPxU$h5FQHjI{ihWtZq~_H z1EHr*=5mGq!*@`&dywmoqE{q5A)t6VQv8uwO#_k0H}UJv*AY=_UWzTmsMV$H2_N+x z{oMT zq-%YKtEiE+>L7b?-1U;+sXRL`f~bd+pvkE;*hIk3XGJY{Bv(p>qvu}WectDrYr4Sy z2*2a63a7xpJW$${X6X|V3FG8{SyK~0ZwlCdSyRIzJFL8|vuOkN`v$HS6eeBf@sMM! zO7%|ro|lfMb1e;zD)KKld11(1?=AM+aqoY)HL|WY#`C8Oz8#8XFJT>6Y5_ie0iR8M zl{NowZo>Ukwvyhh#m>|JU{nAf-4A0H0)JhNp-P}3Q(pQ3Fwmaj=+Q~3!rtF=gH`=^ zZ+Q3ouYzxjTVE17kCF;H2Xy`weBBJmrfp169RrmTeYYT_qNAhdS<2_+%@;{noc57P zAsOp`a+ht1Czwg-Hb?jIV7`MEF18TU-8(X$uA>CU!;q`%_8mM^DeZ*J*xi?LX zNl8C}2!53_h?=pf*BX&g^U+Dx?i(1H0`wHuoWB5_UZ@Q*-D| z)>qk|k_UUnFur8rS}?*E291rqo0{&5wd&DRK6e}8YFe_(@*$?bsF2A5-8>!sNm^G< zz)ITGUNZF39GdtO+W{a)$U+7hIbR!Oo_Gd;mFBeHKSN)k%IR+7p<~lh>PDk`?#V0X zC+_)6MqtRc{Bu#r~^jPWYq*LdiQD<^EXj@SkMyi55G(YS0|{#YicP zrupo$EGdB!7VJs2{#%1(H46N{p-@WjnxpygOzdcg%daH z3Y){#@v;Szw%ZHeU=ziqw$Tz_Z_dy@(D>x@BN|1W-J`kiS6_Kh%@j2uz&(EnNnw)6 zqcu^Udp9`?Fqpw%dWDX-ljF;cgCK2noTEjnlQ23omg)E$vZ<#A9f!bgDny06msJ#Q z_DbO0^aDj7BdM(I`UCi(WC-{C;?b>DhtHJWkMj#tLs{CW=|h@)1)BaD@vSGTz;BDc zM*F@T2;v&yV-JROY3Bd@1EM;gYh(t8^6HL$AqO`Rq9_4mv=|nBGG?XSpXc2hJs#<4 z#Z(PNZGPs*zK})tW7C4uYD8N(Hnj5!?5HkuG*{$))ao*r<(bvH+NE$w^z}q)Qu()qAIt&X<3c1xTQF^pEw9DW)wLGx z9H}J89pO3Rh3?^5HL_bUhBv1k2~qgtaKGm_r{GQpFgJnl^MYB*jiifsl(R7D`jr+) z%IyJE3vy6T9RYYR%b#)p=-J^yRJ+>lgj2D-`3w4W#%foNP~LvDy=a5R`u$xpMmSDkD_Oxo(&Zn(5;Vp8ztKV_Rjvw1#e z?_bxqWK5MAEX5FiM_+&hlir^oy&;}oWT9S{YM4-A=c=%j3u_O?>8U`A=op$-vqBlZ z4RL_zQzEZ~m|9IKR#v5M6ODBQ`=%GOzg;TAoS&BOleDYO1d`FR!P4i4saL}fb%TgU z^efj#G9@QIu?@X(;2&Rg?-J>2wK;kXm5s0tNFJ^W-%p^K!%}VN_#qiu z&E|>Jaaw6&1|2{Bw5l^#t~#qd_K|AG_G-+k>u9StL!D?X78z{yE#A=riYp=1Qg;*! zEZWp@NRiC9fp8;!2J>lEIN@gKv{A+-d~6*Jv?J%0rApe`F%|melak_cZ%2L7p-?tj)u8TMO@UH4HLap1%1`h#c}jiI_A~qX6jq9>PU#w(t+vpPS?6$ z#DwAhDBM@#(-L6{!BKP4|S$ znGe+%ZvxXye7?22D=oQ`g=O)+O0#z(J(>kusP@D;6Rg;jcD#hB!t;n{ZO>YXj(d1U zydGP=q-fg5nLqu@tW`g2C$Kr|lVulBh3N>^@M-e!>=$+faP1*8O?p1#_qLdx89 z&U_-(9KB{vkP~OhbRmLt3GMo;7aixqwaxYU31iFsH+fbR@vPRGG%th;rGZlwi{|93 zEzN7`;XI$B8s9pTcN!e~^|-jp;YWn$^(~A#b;_ihBJfG+sU%rv!^v8-3lBSKF7h`RvC4TD(B6)?T^gGXSi zn3uQQy^tRMAH5;rV`uAQD7W3YWo0{348H3VOuRC`!s>22(iQCZu1(7cSz?($%R%;J zGMo3uBq60vrGtGCnnU^;G~3hD?i)g z!^#oZfK9_U%zxYy!Q^iidbej4UhNB;%qNMuK`qb51IBX{igl7vp=fPHFgo47a$t>Y zu;^oo485LpDS2Z$Q}Q!613u`BQO-t8EzraMm}q>d`3L1B@j)7X$a)tEMZ($&dl_fw zB}5RjyAU&5eIhekW8%D3%oNHfCHc=%>*YK8)MbIx2%jn8S1#C|Py^+Cbzc_kTbGV8+s7<({o&L9ym;{ia?rie z1M(qbr)Xs&)BGox8Ppc*IUCYk*ZutwJD#z+5Sj>Jb}C&Ta*l-P1r}nvfI66rqp{#o z9gR{}72mM>{|KE!+s4*QqXi;NtuBABdy2Xij+4 zDfVnWVrFodJlX|Si)&ToFN<-;D(pJ9S70fBtR2ekaK=mRQ&(tm6?TZa5NG+WA0%Dl z`AuhT=D_Q``Q>__xdqRDhNp`Gvsk+4b6hTn2U;IXQ8OcM*2}hdZ0$*`Yfnhr0{))w zst&_=4_4))V3-h*%-o0#^P|2><&4yUvm&_!l8h;DO%&!0iS8luL-xPCfLwEqe)`qD zlOu`YC^3_9sEa?IWv0qdMnUOY>m953h9=p_3vIF zbZqnvj=X2aG^ zzcS%8c}=lTEVdOAu`g;h+yNQ@byfc)vcu^&{ly3;;`@6BQRs7PNb+UT=^uUWc(reR zEMh=3NTN>jM}{y@tHjh(nGzRG9q5b|+I|~yoWIS!x%q`G?ik*?KX#i~sI6PIx~NO$ z)Sx-pbLFA9ieeT1pm6`|rciMqF7Z@T_`UfT#*&LVp;B${&YQGK;nk@kQPgj+G6r8h zJi$J3433LattEQ{`3b4}(wiFv0|VURLYw=S)}+guvQLoD-rpx^rReJ(|AnPWR=%-+92(Mf+d=k4WBxP) zZMhFy*dN<`ODZP`tWqdj3-dklK=+fG9S)%RXo0&`_cit(vz}c2sfn>Q;DC{<1Mcsl zKxiT@w~srH`wr#?^*_4_tvxqo?lc{|qo{=gc)C2oDiR}cCw@6a0mqh)O$57BjG@RBsj(6FhR2UOOvM3;|t9|eD&6%hFtloX$7x+ne$>vK7LOlnK2HI|Bx zS5r!-a zE&|>>45URrPVHg%X!cT03+a@$gZ0j*^}SX6U6at$TU&(!qWb zn9~a))Fj(%*M**(@3-XMzZoZb(RsO*MfVBGCFjMDZ!|Z}dllTRSDXepK2Io5&TjqK zJRuF3ROFHbh@F>k_32H{GYQ_L*QXuP3ud<_LYZ#c2mx4guJ*4W42=70sCe8}j@!yj z?m7#K`;;jd`|27RM45l+{*G7ht6|ys_*VGGzkN3B8_=pCy`wCA~dfDWx zZsx?2oae=T`Wls^^=C*P-l=CuB#*}HZvgM8>u-cN-+c_~Unia+4Lmk09w9qJ{dcf7 zeY;a;$Le28+&zTLI++c0LOb4t{l&LDyYq!SQ;P7A<+7EEMDJs8UAb2uoyFCdWjoB^ zkY>vN9Tbe=!t)cEmv$cIGriysl#HGgaT_rulbJgH2R06 zwEoAQn_jG&$=^xyq8(4+?J2}y%hVt?ncuC&enL}!x-!Gy||GOz3G;%#e z)S2WXzVN4d2~GYz|3V0D9C0p>u~rl-ty&qng)a1AlQsP?$AE33_Mtxk*x#)(Ak)Ri z8LvAuM*653u3f&~sl5*59alX;^R8)JJ@XA|Tp|5M?y=f=KdO3S-~|kVwnhqj8P>0R z^rcSZepr9ssy?&{7}3Qt}7gG8lBAf#Tu zWUI{Tnfvo1c}n92A7wm}IszipAdD+4Tc~Bd%rEHkkTp-HcV9ya=5L6-cV{*RciR6s z_VS{ZniZL9+lQ_6%j>%6{!e?T`G=K?-}_8^lo^r#&c|WZtG$nJi>B_>`2GE@O@mS( zK!p``?d8S$ad`^3(PZDbHSAi7=k0QR$jt*o>%dwMnGH$X*AZs_=R}BbgaF4O{svWR z-7@;aEl)wu51_+P8`1+|v=KZzB&z>K{!XV;n!ge75)SaS)6-UA~)a^6dBY ztjd}%`74}+6Mnc&lZF#kC4QyQ&snQr(WjHJ%|ND_{#C__Yb0akvg7!5CQg+hR;ERU z;rTW>Ecu7*!dl|_e)4#cS+s!o(7E*cXCotpUIcOr%@!GVrHi52bexOE(UOIp&yOi- z%mcv;RND~_LYScgva)sc#cA;(g&_-eJ&mHuwvNwULnHLyZQ?66i1wrmLPvolQmbH``MRLyM>$T3kND4&=oW5r?>;SXC zeYXyXw@Y{;_lxNu51^sn=G7R-_01adW>d2d{!Whn2TEFedyb7YKN3p;%d&MdTb*TB zN5e(n(vzt0lFd-^^I|GLxdk;7R>i4m)Iv?tiE#1b*EibfuNh>9xD;tE?S6wZ%q?HkGSWK1tyj zAGk^fQR!?@{QBJ6fSR@AxBI}3Y?>hfflu_@yj~F3MJ?%xj)hwO`@C<~QE-fRbfsE^ z1Itcfwf-(#AW4$uaSr{DcJQMwLZ2no!$jJabvvn_Ybh5|Z}>zMZrz&H#5NLtOTmwV#cmuWk&ieSenim|{#D~Y(0Y~h>p|{fhlUhFdNYMo z2&}H}+f0AAhRU^5k1T2rUproubLgrRd8q~bUlC}USP)HD9xIT@@g<~+J6&IUEXsaV zDV2pUk=|D3c^XX9w;D4x7fzFB3J){S%AUEad2-Q>91$(JwqFS@?qI7OHeOW^#gFf~ z-nPzY<2W{bPeb`V+TnjT&q0(D!xNXvo8lO(e2ptBpBH6X&2o$6BFnlitspSDP?qa+ zj|eV;Yi$E`8wrfB&z5k_>_$Ag>}Z4lu7VSzZi#&IHhBswK7F1f1r|M8Dn|U z*=2>DKXvz^`}sk%y^Q2*`{ahP3J~&AZzRMma?+xXZn0r ztoa|JlrOcIf9aq*Df>CGs68ka-&oCRInJ)DK^`k{Z9ztH!1pzb$@m4YJ|p;@zeYY} zG8)2W$Bgb|E(1x-RKyRMc)n-Y?Kj36+}Go7M@34IQTx0>7Q5AtRNwE=uL8tLq}lBC zH&&+oSFQY9e}8@}`ag_OuZ1h5Nmatz#pi$BjO~q8{;GK0ouwT+4@mQe32^I(Kj-pQ z6m}w$a$V?Wi2yMV#b(V^wj7&qDrNJ-9puCPCzGXT)C`!ejEe}z({QZ@eLOf3%M&N~ z?HL1tDaK2=&G|WEgpVtjQcA2;OtIZ zEZ0uO`5wG#9_)2Ag^TO$b25YmxMN0*eE#K{Pe3_^I6!iaS3k3>uUKCKsTTS2cjbsf zfAx;aRZ7p(yvkHZn!Wsy%^{NT3|~J{$di9aGB-@lVFl$xeLI4L0^bP#e)h3v>Af=C zD-iHLvOry4CQfWuCRNfbLYODWaOSyY=`!;6d*wPem2x?H* z9eL^LrgnaQG?c^T(eu5-Oe~a$=2!>tkYr+6a;ERb_UV{2Rqru%YOitSH1;ip6%GiF zOI7cN*jaP4=n`(~{mCfBem?i0;moqU)Mm3Dva!PgoI>ko+>o2A8g43d<02g_tMdD? z{>ZY;rWkXOO)@CH?D$-CC}(wSiHEdP@{MU-ikc1_L4b>w@yANCy; zI3224bBf?JGPeZTjXLsp{)Yil0L2wQ!ejBemgn~-EdDKGwWv$a^yC)<@21PLjJ*Uyjn@FYypIJf|4PNU0_1pD)v$VV|d6Z=*~CC z{g|+5L85ko|JJTlKPmd8xMZwM$KJBoABAWMPqwOBwxL0oO|RNjs3ThFhTb)oT2=FM z8Zp&sXM(76NW2WV?UQ}cRGH41IcMzmXBx*NYh_l)qZn=-KWEZ!k-Rh?6Obl!Mv$zs z0A{`LGCo^4EKM)Xyo*b4%juVnt$kiU<%8{5UXYT~s=)_#SZ`^$d}<5OhE4(eMRpgi zPpAqAi5YRSlJmyFJ;hc^F?tYfQ%7NlrGqhPtf<^PvH9|fC&&NJ$7=!1xRG^W^SRE33pr zmfRtT06)3Mt>7Alnc%SHi*mhy#FOKIU@sDB1g_TGnXw+J?0W&y5)#)wV)wE=osImh zX(+w$ZKN^XI@MzXDcs$CV#S9{m@{n|O0-hbk1Dg{C+5PPe$#f+`xV{UUk>nL0y&gP zryJlbGQ%A!J1Z6fkY;lpSZv?Ie(NJ1#Nlggq%A$xfRQSf>gjhzOTMD_K^IneI+z6l%HoiUsY5a@4${m0Ou+57EseWhs#s7?_D-`b! zAx@mKUEgPIZ>N)C12A;B+nf_i9gLI?ylambtE})Y5M}Bsv!rluE>2q(VKe!1%J9^w z_GMw--^DBagJcqP57c^}4zhWQ{%w1P)$SXqx<%X-s2&!eRZo6SWuCsj|DTH>wzBrp z`}~=r@qqT*5jCblldgH-2cMlr(y6>j7UL6rmWLc}XZrT6 zO4p#k+Zx69Y8&MS*SqgREEa>CWdVs*z18-osBz*IWWq4}*!}41n)&up*0OYrm4P@wi&S3h;&XmY_M&qS1?s?v-d@ri)(1 zoucu9WQb)r|4g#8-8H>9Xv4z5UIJjzP2{ zjbQW4eD?1LoeFJ{4^L{6*`Mz2zHO@Dxq@YK&wDP7;epM8i{)Xm@G}luX*Jc%c=WYp z!6Xw=QM6+-H%Dk5uYM!`4p$MZwgJxVv#rGm_1VG+iZ#ANzt^VG(6ryKMS~58LsNyW z`p;$rsaOE-c;BC(IHnyBs;`ymrD|R$o=~MZ8EhM05uFKLyGf1`%~pOJRyZ*^Ct)xL zV~oqS;T!J%wU?xkO`Wdjjzw@}g~}2jiDJ1@??kDA8vS0{;L?OaWv$@zsCL{uiaof zd-1k*|p4r>4~%g-)7fNE(A!nMyj&HzWFO7q|N| zzKoNtBbNAjUsn5#Iv%msOqVT=$Jqu7W?8mpaaIcVe}nLI9onfwAW=jkj`0p~%05nd z!e?VS57Fm(B1leX+V-0~LlPvWj78MSp>`xNb2_dpS0cnLqoi=cX>la6u$|FHb$a~5 zNk6vIwkRx3I@{7w`&x-mnduZ_jgh5;`;|8ai4FgK+63>%k|%@$NMP>mrPARQ&C@+i zc;}^LZXDyGb78}MI(Wc%K(e#SQtqAUl{FAD%1W@ff~baGZ=w23#-VhA1Jee6vGXE2;k&*dc1Byu3&0q}jW`VfRftO8+n_e5}2CJN}Kj5lah;*86yVg3Lb4s0mFiO2#vqsnM%c_d;D8_ z=wL|PXL>oFF52PSQZ=-1RZ5IKgNYaVv?SqrhtE)3H__ghIadZksQ=$Jw1GgH{qa@% z15wu5--C`H>Z#I|$470M^vD12ltSl!nw*z~L_B z)*L1@3CZyHRD=f$9Jm}jmj@N*ocrYkB;$g_Ojjr_zX|s&`OSnnzO6B$Lqy-iT(y35 zKp%pqdZOUh0PNSPS!nFh_(S__F7eTWom0J?Y!>RzCTdr;=86BSsq_A4vwz>eE^Y4? zt=fCErBJTTJmwS25f@ zdU~iPgGR~|7py#{cr~~D2Pj6ce3bmIKbkTZyi~J?df;(l8Xz^X2NdUqm%5Z(UZ?9* z;z-3%(TwUBo#)Q&v0eo-xp+_+=I_9=Brca1L)LF{9jqYYBH7rg)4EJKjq`V=?YC*L zs9`_Eh}uW#jT8|be;9SsmPmSlO-Cm7ng40=MTi!9>*$sZV7?0gs8S&QN3F;8lZf2` zH7ByUHj_b@I)$hE5n)!~enokUwFzIdafgf<+n4X|5qK&YB&4O_c_Y^Zx@&H&gagr2 z!^7UnpA#*RRYix4&8wB&vx!&CvXPwGf0X2Zb*AIZi~Bmuf^3B4^uVI1@qRxmIr{e1 z^0k(bM7_ASI3R5-V<;6Sn_l^H+3qMUV^>mvh7LLO<#Eo5!?YC<&DORM1Cld+_pg^- z^c%^*+RJViG=#Cvy{lz>TK|e_e7ND;oW=WZuuj^@Olo2=Wcd*rklNZn(lL9sc(vET z0ZP~?SLI){nCT8OPZujup*D?&irs1nlWk9+SK~>U^S;Ypw2r|5o+r=0=S_ z3*@*A+9_dU@Zk;YIO=;R7@yAgB;v?_O?;H|$uA?gSZCJnMZJ;?>?oq=Sz$3`^Ja-@ zNYeniU|6r4_B5A^buRw0e|3YEkq#}OL$SWzgj8x-5oEkK1mQz}H=EBVTSWuR&DQD} zUYRXh8#h^UNu_M^X<=}Xu>szfV(2e% zn2;-}DoKIGwMRdwJ{lGDUed>Le7UBtWAN_EZPCAr_8wI|!Y%10Po((sD)<23-9X;g z%5^tetxm%>)s~pdiv4(xXbN!IK7KvMJ^w?!TsW@e&u6~dkt+jpFxs2(GHVZu2p&R8 zFRIz=C+@Xw;kRFE+s|H_ow#q{Y5+H0k< ziWFM)LjUhy5z_x?Fg$r9tE>6kU-THTE)FxinmZ&)Ct96pC5kpU64Pk*h$_@sYW4U4 z<%VJ4TSfC!2h_Aei`4+Cu(~eiM}7@hQ-LCWp{yBa3htEr{dv6HG#gAEZ;F-?23zU&&HmRNM7FM+(&lfK zQ9M?T{7&FCjALDa*`4aT$_hBd7_zg|GHPvx;<&1kQr+O&>8BsR47X~d?rW-Cdsra4 zz@eYKsSu;9Fx7Xwu8_;d$b?eRFI;>6A?3ps80IC#zEs1pdUKx*m0&4$%Q;+qq4>T_ zce%F&R|e+zIqrf8^mp?TPi~+T5U4N1E-?AU_kKO;aT<`I3*Pk2_WYXCm&#?P zcZ6k~bhUxe)Pw7BNf}De@a4&WJPj2?xEy)=iF0&y&s*G7lcmsezFf++4^=Yel4z2T ztnajo>G$tSP?wC{fk|0BO^wsU$TP7p)c;UtE4a<$?J&p{A7D~mZdFt;As6{PPb&7Q z7!1GNdW+Qq#~-w@;P%HIH?G@9axKL}B~Ozjx7y4jyN5QGqbn;V4E#i|qhmlUY$5_eSARUH z9_01lp?h>AVDmV4N%i~QD*;7EmiHbE?6)3F`?=Gx3P@y*!yPDne@?;6~`5c z!M{ILwX&65+M#QRZXb_H72Rgq<>vbMd2i3p2d4A6?V9Kz{VMGWT0P<-cy&1A^dPtI zsFiGzq9r9lbr04JYrL;+OEdR50UeNZcPn)^=^Wb35FY7&Z95xqUMFc6X_s1YM zDdBg&qJF_0jJ$pgW&-_brW0&90Sw*;Y_p5@FF9* z{nE{3uQhQk$nCd24#LkJx~$%bA!h2a`T045K6LBx3A_3yeLO|4s4reY|EXU} z0x3Fa*>|I4vN8WHATtv|6*6|V`bwiORh+ot?D9J!hf~x}y!pHE^Q;xsF|N1kf%Ch^ zZ!&9V$|8O5U;k)p9dLCY?)$*b`Aq#N%Jbu4j;NC=iTcm373U1b$yZ>7No0$t!MnvY z7Ys;p|InqFlHe}gk&-epSgqqw^ms!J2Uvm=p0U0EC9JfPbNhA8KwI8ZF2nNGXYTYW zyJm#~PA0l8^A^`9X91RGqT%tG{RaI_9ue!weljdak8Hibk1XSj}4>4KXl{>dC3 z)2nD-0T4hcE2})uq8(CKkU%{=RW#dqP!9S^#VFEFa3vO((%e5}cRP~1zu#W6>{xaG z`<&(8^SePMJOHkww8#byghWhCUVJR>i)xkOni84p!PmkM zE0-9a-m}H^{{oeW_ef1kmIk2_+$or>REB$d_ow*mo+tHy9=`F-E-(1?Ja9>IIoj|; zt3o%rB7jM-SPk~U;=b+;dP8k1-)v*;yC{|ESdpWd9lFTij_aQFLMXG`Rbt28EU|$* zhiG%vdTefv;52976+Oj)^}&WVhCLBo{0-lm7B@O_#uOC+HMQ=D3o|FskJ8-w?oYtfTMQTYt@@O$z-iUMV0KepX+s`x zwUCPi@y9=H3J*3%tDuEiqFn;n@-3gyj znyF=ZUvV0$u=6S8PbPOOqsuf~0J}<~PsOO7t7gBqRO^1}3%*p8-RGd2(BF~4mj}F` zp}agZ@vmPY@1C39)4!8@EghRV`r7u4YT~s~TTpx75~QQ3);DgnLDZ+NtB_IOE&kQR z(7_H0$l&cgyK9dP+6ec|M@~zlt@W)}{~iQ?1;;QQg6WeZqLxdXrQ!e%*6fo5Zrsob z!q|i8HW{-8aLqWDkrPbR%LSjXe`3G8BR7UyQ0Gy-X+nHWw^AtVws@^__0X#?FvCtQrg zUAUyUhlX?3BfHp_Iq$S_xMBBK!mUi+dkA6{owc|EJMO}{y*vvCWk;Kw1;qbw|3vrJXNxfyS50R0=X_WUOeSxQ*Pl5IXIyZE z;C(QFi~Y!d@Mm>bCdeUF7hL& za$zm2#43nM%KRUHFDE9Lv;8;Fj9<<7?S%Jqm?mh93<@I^)^FcBw(ygA!;0RWJsTgC zd)U7XH!1+()>Rkdt{NJF?&x>(s^4tHxi5)`xL(F_K+r38ZoRkec6ip zjW4giH~+=9@m;jCXeMoo*gQ1LbMc72u&}iFqA|bP@}eszPgk%wHCuibYk!hw{DhhH z#ZPx%aUKmd{(vYqQ{M4~_l!k`(^}f>VUBs%wl0r}{xt?XDq`e%(*5wH$t2}_!i_F- z;mwZ>n}i?5N#S8n+?!NIa^p8YB8FRAf=V zcTGB;N6g>R&fkAdckGD12gZ$ZlN?s=;(p@IJw47V86{XynI}P0xf>KAC228Gb;C{a z5JMW|l9MnBBK!(ztZ(INY49lkDF5Tgk!SwD(23y^*g642D!S<1nw5c!@sGJ4xGr%j${zBu#hBi7 zl=*~Ik_WHqu(p|jEaO(nVF2!5xr%2b7O$Qrm6zfVn#!-lOa`;>_&gZ#ihSd(dvb9L z)Bqu=` z6)}D_1Ti>tv{?sK>8(lKhg%fcR{zy~XMUiJKB~FrHz^0W{#M2ouc}Q)tOm+%I*PL=ILcSkb;!I` z&tPWrim0sQ#@($en6Zl$*5@ty@M3&!SLWOU8RV-W)7PPyYymU+zOv=d6gk8G5lD=@ zy1>DNFrat!q75B+;lci2z+3XDDnIsrR4be1(U&<8skST_UW*hWd}d~$jCNM8c#N|) zEt?+JK;!Y;v2bFDgb^1syv%U?Vy>FN<)xW~5a&CUj3^-iQ=Vi~%E@>#6atN+eoIx} z#8J$-i+U0+Ji78IH_!ptoi_e7^}3B>3XJnHG&E@{mUcc`7h@frtHVJ<5D zuJJrKzts}$D(@gQxuXQg7osU+j1aTI3gZX5QhcFoR_5X#hJRDl97ec%b|jf4h3ch+ za8cVX^Q7Cs@Voq9#r`%dXNyf)5IQQuqXP{B#tlX%oKf-Zwhc=n_GmuLHgqk^`gXs9nw~3j!cA-R z6)r-$UqCQ*9WExQ%|@d$;leN?;*vu-S@pfWLraw#QKl9eZCmi2aB1W*2S84mCv06A~i?k&p#e^5F{eJQNoO#Ko>$DI>GQ9qHZ3+B`bF|Zpj?L@>11fxR)^&!u@9)tyhhU=Z$t$He zEMIG8oGIcA&N1noIdw~k>%1osn?H6oQ$%V(0*VH(t;QNQkf3_Yfs(byiI8v3nWhLt zdAr+~l-f}GFbS=TARNpeccKa5%_QG81&rSLg3|bT6-4N&SXy^(JH;=&CbNQ08coT5 z`MB{!(tX0^skN9Up@~Ee=^(y6bV(-55pk0?oRBV?RHV|7?k}ysYM1lNUAW=^N12 zAfXEeT9VBxrx7M3<_&-|;9o!oIe-5!T(K6#Pi8qk-2TY@kZk;SFK8t{Ga$}KPp&57 zVtaA(xUlJoutZXUGbVqj!{!W27Q8)ge-3jaA@z_XstW>}Y#b!>Wq(M=?>ZrXnH_P_ z@u2LWCjhVo3!>ng2qsfp54&9n;w0xYYqC#xp=ZZY&b}V*))54JvKG;r)&m(b{rfLK>9kaC%Lb1l%sa65Q3y*)n25{XIrsPgA-;Pb;Lw zrecKRmg=1e=ZW^D@p%V1zTDw#O7&|nso&kVLZk~d3_SJUP&fcpO|RO&%?g7J86$k# zqkjy0G$mncghFuL6&YwBeRB`fQ|0oszy@5T`J30L%GFZZY}W>1p>5`tuUv|;Ll6qA z!QdqUVwiJOKQ7Q{HF7*-M*Ooj%SoL_Y&JEYIZt$Nh`~~Njs-pHDMKH3yf?Tnh=A(x zU`A?>fKMU<0lY_pk$5?YBAQ&Hb9 z0H~NOnLRR+ys^NA{JcZ@n6CK~2B=LlB^)9f=63SVXO0DN$5e!lPcht;v6IN{Gx+Wv zu&Qeq;whX)Bqe$_@Bt{J6$U8TFjt>W;heHM$^MkD%z)+$;8A3|2aLarQb}tjfBlNrz?U4}C&7+++K;}!8FiO*xGxGshMjx?!dM5+Wng%By zAREn_Y|e>OfzE+SK{;0Dh*CKPn0TIOMaLTh)TALRIi!uB?>o^r9Q2Y1 zY6YhM!J`|=GH`n?QM~9uBX>bC;G4E%r%2_J-X^!h(Xxeu0VNo=Fy;Ovvt}WzhD8*S~f+zCLj8|Y0!kI@?+ivP6=+j)SnY3Iy&OG$H1wCe)}bj`hht;!dK=~071FJ zi96^8vI8HplrhO^0ebwXS*q4TZb}q)29h*#Nwz0x#M+QEMo+Z|QfWF3DCM2-a~GwG zLlgw~74kkm2(@QfpV`~P$NX32)NfzY{xTvcY;c~!YV&%J z)gu3Ryq(J-OVJp%0teJ=>v#VRx#r{WIcwK z!vJtfKF87zjn!zn4dR+!e#T(M8aDq31(NglY1=MVCKE8`D-#J~pZO(ST}lCcGco-t z;PvTKicJZ#g-la!b7yaJG=bmXyc=HbvLG{g{b;{rtuQ@bp7~pqRroBE8GUhBKM)96 zpp@)Pzm(hrubC&DYf(10SJPOg17_C*e|%4@SxYua z1rB&sAQ1)o62TKH%IiNGedF|G4B@7g@KGm;TylQr`2p&b zTVpgI3J^dNC)b7%TZQe}Lz+UTtPt7CY?)50N4>V4r+)CR{PShM8>KdHK216rTZ))Y zQb9sa=aH0IU9%0_PKXIy*G=gc&c@4hV{6>sYxSFMQU^a*t85N97`kXE3oQ&{Ok_y8g9u=Kw`T`D%2~P@fVQ nUS&f%Xq-P4?mh2}opcPcn!^^2ErgmQ%f@Q&2b%%u81@CYEy literal 0 HcmV?d00001 From 76e02305f9a5934e1dfd682f48f02413fb2103a8 Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Thu, 5 Feb 2026 12:34:03 -0500 Subject: [PATCH 4/5] Manually update READMEs, quickstart, and top-level stuff --- CHANGELOG.md | 7 +++++++ cmake/GoogleCloudCppFeatures.cmake | 1 + google/cloud/gkerecommender/CMakeLists.txt | 7 ++----- google/cloud/gkerecommender/README.md | 17 +++++++---------- .../gkerecommender/quickstart/quickstart.cc | 17 +++++++---------- libraries.bzl | 1 + 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3211acc33aa39..dda8e6bf51a72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ breaking changes in the upcoming 3.x release. This release is scheduled for ## v2.47.0 - TBD +### New Libraries + +We are happy to announce the following GA libraries. Unless specifically noted, +the APIs in these libraries are stable, and are ready for production use. + +- [GKE Recommender](/google/cloud/gkerecommender/README.md) + ## v2.46.0 - 2026-01 ### [Spanner](/google/cloud/spanner/README.md) diff --git a/cmake/GoogleCloudCppFeatures.cmake b/cmake/GoogleCloudCppFeatures.cmake index c674626b65a70..d41639ae43d4c 100644 --- a/cmake/GoogleCloudCppFeatures.cmake +++ b/cmake/GoogleCloudCppFeatures.cmake @@ -110,6 +110,7 @@ set(GOOGLE_CLOUD_CPP_GA_LIBRARIES "gkeconnect" "gkehub" "gkemulticloud" + "gkerecommender" "iam" "iap" "ids" diff --git a/google/cloud/gkerecommender/CMakeLists.txt b/google/cloud/gkerecommender/CMakeLists.txt index 31d0b40fd3ca1..da20dbe7db21c 100644 --- a/google/cloud/gkerecommender/CMakeLists.txt +++ b/google/cloud/gkerecommender/CMakeLists.txt @@ -26,11 +26,8 @@ if (BUILD_TESTING AND GOOGLE_CLOUD_CPP_ENABLE_CXX_EXCEPTIONS) google_cloud_cpp_add_common_options(gkerecommender_quickstart) add_test( NAME gkerecommender_quickstart - COMMAND - cmake -P "${PROJECT_SOURCE_DIR}/cmake/quickstart-runner.cmake" - $ GOOGLE_CLOUD_PROJECT - GOOGLE_CLOUD_CPP_TEST_REGION # EDIT HERE - ) + COMMAND cmake -P "${PROJECT_SOURCE_DIR}/cmake/quickstart-runner.cmake" + $) set_tests_properties(gkerecommender_quickstart PROPERTIES LABELS "integration-test;quickstart") endif () diff --git a/google/cloud/gkerecommender/README.md b/google/cloud/gkerecommender/README.md index eaa43ebaf2e83..925a152843e5b 100644 --- a/google/cloud/gkerecommender/README.md +++ b/google/cloud/gkerecommender/README.md @@ -18,25 +18,22 @@ this library. ```cc -#include "google/cloud/gkerecommender/v1/ EDIT HERE _client.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h" #include "google/cloud/location.h" #include int main(int argc, char* argv[]) try { - if (argc != 3) { - std::cerr << "Usage: " << argv[0] << " project-id location-id\n"; + if (argc != 1) { + std::cerr << "Usage: " << argv[0] << "\n"; return 1; } - auto const location = google::cloud::Location(argv[1], argv[2]); - namespace gkerecommender = ::google::cloud::gkerecommender_v1; - auto client = gkerecommender::ServiceClient( - gkerecommender::MakeServiceConnection()); // EDIT HERE - - for (auto r : client.List /*EDIT HERE*/ (location.FullName())) { + auto client = gkerecommender::GkeInferenceQuickstartClient( + gkerecommender::MakeGkeInferenceQuickstartConnection()); + for (auto r : client.FetchModels({})) { if (!r) throw std::move(r).status(); - std::cout << r->DebugString() << "\n"; + std::cout << *r << "\n"; } return 0; diff --git a/google/cloud/gkerecommender/quickstart/quickstart.cc b/google/cloud/gkerecommender/quickstart/quickstart.cc index dea76facd2044..cda08ba872286 100644 --- a/google/cloud/gkerecommender/quickstart/quickstart.cc +++ b/google/cloud/gkerecommender/quickstart/quickstart.cc @@ -13,25 +13,22 @@ // limitations under the License. //! [all] -#include "google/cloud/gkerecommender/v1/ EDIT HERE _client.h" +#include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h" #include "google/cloud/location.h" #include int main(int argc, char* argv[]) try { - if (argc != 3) { - std::cerr << "Usage: " << argv[0] << " project-id location-id\n"; + if (argc != 1) { + std::cerr << "Usage: " << argv[0] << "\n"; return 1; } - auto const location = google::cloud::Location(argv[1], argv[2]); - namespace gkerecommender = ::google::cloud::gkerecommender_v1; - auto client = gkerecommender::ServiceClient( - gkerecommender::MakeServiceConnection()); // EDIT HERE - - for (auto r : client.List /*EDIT HERE*/ (location.FullName())) { + auto client = gkerecommender::GkeInferenceQuickstartClient( + gkerecommender::MakeGkeInferenceQuickstartConnection()); + for (auto r : client.FetchModels({})) { if (!r) throw std::move(r).status(); - std::cout << r->DebugString() << "\n"; + std::cout << *r << "\n"; } return 0; diff --git a/libraries.bzl b/libraries.bzl index 63c02c89234a6..af1cae994598c 100644 --- a/libraries.bzl +++ b/libraries.bzl @@ -170,6 +170,7 @@ GOOGLE_CLOUD_CPP_GA_LIBRARIES = [ "gkeconnect", "gkehub", "gkemulticloud", + "gkerecommender", "iam", "iap", "ids", From e72570a0d7be28dc31171cecbf6a42332c98d44e Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Thu, 5 Feb 2026 13:19:28 -0500 Subject: [PATCH 5/5] remove unused include --- google/cloud/gkerecommender/README.md | 1 - google/cloud/gkerecommender/quickstart/quickstart.cc | 1 - 2 files changed, 2 deletions(-) diff --git a/google/cloud/gkerecommender/README.md b/google/cloud/gkerecommender/README.md index 925a152843e5b..c562c63488632 100644 --- a/google/cloud/gkerecommender/README.md +++ b/google/cloud/gkerecommender/README.md @@ -19,7 +19,6 @@ this library. ```cc #include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h" -#include "google/cloud/location.h" #include int main(int argc, char* argv[]) try { diff --git a/google/cloud/gkerecommender/quickstart/quickstart.cc b/google/cloud/gkerecommender/quickstart/quickstart.cc index cda08ba872286..be2169ba36eba 100644 --- a/google/cloud/gkerecommender/quickstart/quickstart.cc +++ b/google/cloud/gkerecommender/quickstart/quickstart.cc @@ -14,7 +14,6 @@ //! [all] #include "google/cloud/gkerecommender/v1/gke_inference_quickstart_client.h" -#include "google/cloud/location.h" #include int main(int argc, char* argv[]) try {