diff --git a/ChangeLog b/ChangeLog index a4c358a9d..f613cca0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2.5.0 +===== +- Added support for Google Ads API v2.2. See release notes: + https://developers.google.com/google-ads/api/docs/release-notes#220_beta_2019-09-25 +- Fix the namespace for OAuth2Flow enum. +- Fix the CachedChannelFactory so that various grpc settings work as intended. +- Add a fix to check for null values of LoginCustomerId. +- Minor code refactor to improve how the GoogleAdsServiceClientFactory class handles LoginCustomerId + setting. +- Fix a bug in ExampleRunner around running code examples multiple times. +- Fix a broken web.config for the AuthenticateInWebApplication example. +- Bump all the external library dependencies to their latest versions. Grpc.Core is still on 1.22.1 + since its 2.x version is breaking in nature. See + https://github.com/grpc/proposal/blob/master/L57-csharp-new-major-version.md for additional context. +- Added a few internal properties and methods for better testing of the client library. + + 2.4.0 ===== - Added support for Google Ads API v2.1. See release notes: diff --git a/examples/Authentication/AuthenticateInWebApplication/AuthenticateInWebApplication.csproj b/examples/Authentication/AuthenticateInWebApplication/AuthenticateInWebApplication.csproj index 650f43c6b..bef8be17c 100644 --- a/examples/Authentication/AuthenticateInWebApplication/AuthenticateInWebApplication.csproj +++ b/examples/Authentication/AuthenticateInWebApplication/AuthenticateInWebApplication.csproj @@ -1,5 +1,5 @@  - + @@ -46,47 +46,50 @@ - - - ..\..\..\packages\Google.Ads.GoogleAds.2.2.0\lib\net452\Google.Ads.GoogleAds.dll + + {C691BD4D-683D-425B-8BC7-52F161475C7C} + Google.Ads.GoogleAds + + + ..\..\..\packages\Google.Ads.GoogleAds.2.5.0\lib\net452\Google.Ads.GoogleAds.dll - - ..\..\..\packages\Google.Api.CommonProtos.1.6.0\lib\net45\Google.Api.CommonProtos.dll + + ..\..\..\packages\Google.Api.CommonProtos.1.7.0\lib\net45\Google.Api.CommonProtos.dll - - ..\..\..\packages\Google.Api.Gax.2.7.0\lib\net45\Google.Api.Gax.dll + + ..\..\..\packages\Google.Api.Gax.2.9.0\lib\net45\Google.Api.Gax.dll - - ..\..\..\packages\Google.Api.Gax.Grpc.2.7.0\lib\net45\Google.Api.Gax.Grpc.dll + + ..\..\..\packages\Google.Api.Gax.Grpc.2.9.0\lib\net45\Google.Api.Gax.Grpc.dll - - ..\..\..\packages\Google.Apis.1.39.0\lib\net45\Google.Apis.dll + + ..\..\..\packages\Google.Apis.1.41.1\lib\net45\Google.Apis.dll - - ..\..\..\packages\Google.Apis.Auth.1.39.0\lib\net45\Google.Apis.Auth.dll + + ..\..\..\packages\Google.Apis.Auth.1.41.1\lib\net45\Google.Apis.Auth.dll - - ..\..\..\packages\Google.Apis.Auth.1.39.0\lib\net45\Google.Apis.Auth.PlatformServices.dll + + ..\..\..\packages\Google.Apis.Auth.1.41.1\lib\net45\Google.Apis.Auth.PlatformServices.dll - - ..\..\..\packages\Google.Apis.Core.1.39.0\lib\net45\Google.Apis.Core.dll + + ..\..\..\packages\Google.Apis.Core.1.41.1\lib\net45\Google.Apis.Core.dll - - ..\..\..\packages\Google.Apis.1.39.0\lib\net45\Google.Apis.PlatformServices.dll + + ..\..\..\packages\Google.Apis.1.41.1\lib\net45\Google.Apis.PlatformServices.dll - - ..\..\..\packages\Google.Protobuf.3.7.0\lib\net45\Google.Protobuf.dll + + ..\..\..\packages\Google.Protobuf.3.9.1\lib\net45\Google.Protobuf.dll - - ..\..\..\packages\Grpc.Auth.1.20.1\lib\net45\Grpc.Auth.dll + + ..\..\..\packages\Grpc.Auth.2.23.0\lib\net45\Grpc.Auth.dll - ..\..\..\packages\Grpc.Core.1.20.1\lib\net45\Grpc.Core.dll + ..\..\..\packages\Grpc.Core.1.22.1\lib\net45\Grpc.Core.dll - - ..\..\..\packages\Grpc.Core.Api.1.20.1\lib\net45\Grpc.Core.Api.dll + + ..\..\..\packages\Grpc.Core.Api.2.23.0\lib\net45\Grpc.Core.Api.dll ..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll @@ -104,11 +107,17 @@ ..\..\..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll + + ..\..\..\packages\System.Buffers.4.5.0\lib\netstandard1.1\System.Buffers.dll + ..\..\..\packages\System.Interactive.Async.3.2.0\lib\net45\System.Interactive.Async.dll + + ..\..\..\packages\System.Memory.4.5.3\lib\netstandard1.1\System.Memory.dll + @@ -192,11 +201,11 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + - - - + - - + + - + - - + + - - - - + + + + - + - - + + - - - + + + - - + + - - + + - - + + @@ -58,11 +99,11 @@ - + - + @@ -70,7 +111,7 @@ - + @@ -78,7 +119,7 @@ - + @@ -102,7 +143,19 @@ - + + + + + + + + + + + + + diff --git a/examples/Authentication/AuthenticateInWebApplication/packages.config b/examples/Authentication/AuthenticateInWebApplication/packages.config index a5b5cb978..dfbbaf641 100644 --- a/examples/Authentication/AuthenticateInWebApplication/packages.config +++ b/examples/Authentication/AuthenticateInWebApplication/packages.config @@ -1,24 +1,25 @@  - - - - - - - - - - - + + + + + + + + + + + - - + + + @@ -30,8 +31,9 @@ + - + @@ -45,7 +47,7 @@ - + diff --git a/examples/Google.Ads.GoogleAds.Examples.csproj b/examples/Google.Ads.GoogleAds.Examples.csproj index 637b8b711..475374c59 100644 --- a/examples/Google.Ads.GoogleAds.Examples.csproj +++ b/examples/Google.Ads.GoogleAds.Examples.csproj @@ -21,7 +21,7 @@ - + diff --git a/src/AssemblySettings.cs b/src/AssemblySettings.cs index 623eb9690..76dd027f9 100644 --- a/src/AssemblySettings.cs +++ b/src/AssemblySettings.cs @@ -15,3 +15,5 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Google.Ads.GoogleAds.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100d7868e7a8774639a82ed60eb9d2a34ae6394813170bd3c11f2bb3dcc929e30b99792a3a3de193c42dee2b753dde1516f519d3141eab6e64f05c4fd74bf3139e3349e722ffe26fae45ca822ad0e4a86167e0417e0fbe5594eb69dcc35f49da965b3456a86283fde4f5c7ea273df3b57a1f267131393644c677a1b7d1f7ddfdaaa")] +[assembly: InternalsVisibleTo("Google.Ads.GoogleAds.Benchmarks, PublicKey=0024000004800000940000000602000000240000525341310004000001000100d7868e7a8774639a82ed60eb9d2a34ae6394813170bd3c11f2bb3dcc929e30b99792a3a3de193c42dee2b753dde1516f519d3141eab6e64f05c4fd74bf3139e3349e722ffe26fae45ca822ad0e4a86167e0417e0fbe5594eb69dcc35f49da965b3456a86283fde4f5c7ea273df3b57a1f267131393644c677a1b7d1f7ddfdaaa")] + diff --git a/src/Config/AuthorizationMethod.cs b/src/Config/AuthorizationMethod.cs new file mode 100644 index 000000000..fea6fa277 --- /dev/null +++ b/src/Config/AuthorizationMethod.cs @@ -0,0 +1,32 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace Google.Ads.GoogleAds.Config +{ + /// + /// The type of authentication to use. + /// + public enum AuthorizationMethod + { + /// + /// Insecure credentials. + /// + Insecure, + + /// + /// OAuth2 credentials. + /// + OAuth + } +} diff --git a/src/Config/GoogleAdsConfig.cs b/src/Config/GoogleAdsConfig.cs index 2d0a9bbfd..af3233a4e 100644 --- a/src/Config/GoogleAdsConfig.cs +++ b/src/Config/GoogleAdsConfig.cs @@ -63,6 +63,16 @@ public class GoogleAdsConfig : ConfigBase /// public const string DEVELOPER_TOKEN_KEYNAME = "developer-token"; + /// + /// The login customer ID keyname in request metadata. + /// + public const string LOGIN_CUSTOMER_ID_KEYNAME = "login-customer-id"; + + /// + /// The library identifier keyname in request metadata. + /// + internal const string LIBRARY_IDENTIFIER_KEYNAME = "x-goog-api-client"; + /// /// The configuration section name in App.config file. /// @@ -136,6 +146,16 @@ public class GoogleAdsConfig : ConfigBase private ConfigSetting oAuth2Mode = new ConfigSetting("OAuth2Mode", OAuth2Flow.APPLICATION); + /// + /// Authorization method. + /// + /// + /// This setting is only for testing purposes. + /// + private ConfigSetting authorizationMethod = + new ConfigSetting("AuthorizationMethod", + AuthorizationMethod.OAuth); + /// /// Web proxy to be used with the services. /// @@ -166,6 +186,13 @@ public class GoogleAdsConfig : ConfigBase private readonly ConfigSetting loginCustomerId = new ConfigSetting( "LoginCustomerId", ""); + /// + /// The library identifier override. + /// + private readonly ConfigSetting libraryIdentifierOverride = + new ConfigSetting( + "LibraryIdentifierOverride", ""); + /// /// Gets or sets the timeout for individual API calls. /// @@ -175,6 +202,19 @@ public int Timeout set => SetPropertyAndNotify(timeout, value); } + /// + /// Gets or sets the library identifier override. + /// + /// + /// The library identifier override. + /// + /// This setting is only for testing purposes. + internal string LibraryIdentifierOverride + { + get => libraryIdentifierOverride.Value; + set => SetPropertyAndNotify(libraryIdentifierOverride, value); + } + /// /// Gets or sets the web proxy to be used with the services. /// @@ -285,6 +325,16 @@ public OAuth2Flow OAuth2Mode set => SetPropertyAndNotify(oAuth2Mode, value); } + /// + /// Gets or sets the authorization method. + /// + /// This setting is only for testing purposes. + internal AuthorizationMethod AuthorizationMethod + { + get => authorizationMethod.Value; + set => SetPropertyAndNotify(authorizationMethod, value); + } + /// /// Gets or sets the OAuth2 prn email. /// diff --git a/src/Config/OAuth2Flow.cs b/src/Config/OAuth2Flow.cs index 6b1124589..768067128 100644 --- a/src/Config/OAuth2Flow.cs +++ b/src/Config/OAuth2Flow.cs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -namespace Google.Ads.GoogleAds.Util +namespace Google.Ads.GoogleAds.Config { /// /// The type of OAuth2 flow. diff --git a/src/Google.Ads.GoogleAds.csproj b/src/Google.Ads.GoogleAds.csproj index 978148c72..d57326266 100644 --- a/src/Google.Ads.GoogleAds.csproj +++ b/src/Google.Ads.GoogleAds.csproj @@ -3,7 +3,7 @@ Google Ads API Dotnet Client Library Google.Ads.GoogleAds - 2.4.0 + 2.5.0 This library provides you with functionality to access the Google Ads API. https://github.com/googleads/google-ads-dotnet/blob/master/ChangeLog GoogleAds Google @@ -31,8 +31,8 @@ true true true - 2.4.0.0 - 2.4.0.0 + 2.5.0.0 + 2.5.0.0 latest @@ -41,8 +41,8 @@ - - + + diff --git a/src/Lib/CachedChannelFactory.cs b/src/Lib/CachedChannelFactory.cs index bac360ab9..7c9207d0f 100644 --- a/src/Lib/CachedChannelFactory.cs +++ b/src/Lib/CachedChannelFactory.cs @@ -39,7 +39,7 @@ internal class CachedChannelFactory /// /// The maximum message length in bytes that the client library can receive (64 MB). /// - private const long MAX_RECEIVE_MESSAGE_LENGTH_IN_BYTES = 64 * 1024 * 1024; + private const int MAX_RECEIVE_MESSAGE_LENGTH_IN_BYTES = 64 * 1024 * 1024; /// /// The gRPC setting name for maximum metadata size in bytes that can be handled. @@ -50,7 +50,7 @@ internal class CachedChannelFactory /// /// The maximum metadata size in bytes that the client library can receive (16 MB). /// - private const long MAX_METADATA_SIZE_IN_BYTES = 16 * 1024 * 1024; + private const int MAX_METADATA_SIZE_IN_BYTES = 16 * 1024 * 1024; /// /// Gets the channel for the specified configuration. @@ -109,16 +109,25 @@ internal static Channel GetChannel(GoogleAdsConfig config) /// The channel. private static Channel CreateChannel(GoogleAdsConfig config) { - ChannelCredentials channelCredentials = - GoogleGrpcCredentials.ToChannelCredentials(config.Credentials); + ChannelCredentials channelCredentials = null; + + if (config.AuthorizationMethod == AuthorizationMethod.Insecure) + { + channelCredentials = ChannelCredentials.Insecure; + } + else // if config.AuthenticationMode == AuthenticationMode.OAUTH) + { + channelCredentials = + GoogleGrpcCredentials.ToChannelCredentials(config.Credentials); + } Uri uri = new Uri(config.ServerUrl); return new Channel(uri.Host, uri.Port, channelCredentials, new List() { new ChannelOption(GRPC_MAX_RECEIVE_MESSAGE_LENGTH_IN_BYTES_SETTING_NAME, - MAX_RECEIVE_MESSAGE_LENGTH_IN_BYTES.ToString()), + MAX_RECEIVE_MESSAGE_LENGTH_IN_BYTES), new ChannelOption(GRPC_MAX_METADATA_SIZE_IN_BYTES_SETTING_NAME, - MAX_METADATA_SIZE_IN_BYTES.ToString()), + MAX_METADATA_SIZE_IN_BYTES), } ); } diff --git a/src/Lib/GoogleAdsServiceClientFactory.cs b/src/Lib/GoogleAdsServiceClientFactory.cs index a118228fd..73f63fdce 100644 --- a/src/Lib/GoogleAdsServiceClientFactory.cs +++ b/src/Lib/GoogleAdsServiceClientFactory.cs @@ -173,7 +173,14 @@ private CallSettings UpdateCallSettingsWithConfigParameters(CallSettings callSet if (!string.IsNullOrEmpty(config.LoginCustomerId)) { - callSettings = callSettings.WithHeader("login-customer-id", config.LoginCustomerId); + callSettings = callSettings.WithHeader(GoogleAdsConfig.LOGIN_CUSTOMER_ID_KEYNAME, + config.LoginCustomerId); + } + + if (!string.IsNullOrEmpty(config.LibraryIdentifierOverride)) + { + callSettings = callSettings.WithHeader(GoogleAdsConfig.LIBRARY_IDENTIFIER_KEYNAME, + config.LibraryIdentifierOverride); } callSettings = callSettings.WithCallTiming(CallTiming.FromTimeout( diff --git a/src/Logging/LoggingInterceptor.cs b/src/Logging/LoggingInterceptor.cs index 1024781a3..307247418 100644 --- a/src/Logging/LoggingInterceptor.cs +++ b/src/Logging/LoggingInterceptor.cs @@ -17,7 +17,6 @@ using Grpc.Core; using Grpc.Core.Interceptors; using System; -using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; @@ -124,7 +123,7 @@ public override AsyncUnaryCall AsyncUnaryCall( Exception = GetGoogleAdsException(oldTask.Exception), IsFailure = oldTask.IsFaulted, CustomerId = GetCustomerId(request), - PartialFailures = (oldTask.IsFaulted)? "" : + PartialFailures = (oldTask.IsFaulted) ? "" : GetPartialFailures(oldTask.Result) }; OnLogEventAvailable?.Invoke(this, logEntry); @@ -202,6 +201,8 @@ private static Metadata GetResponseHeader(AsyncUnaryCall c /// private static RpcException GetGoogleAdsException(AggregateException e) { + Assembly myAssembly = MethodBase.GetCurrentMethod().DeclaringType.Assembly; + RpcException rpcException = e?.InnerExceptions?.FirstOrDefault( delegate (Exception innerException) { @@ -216,14 +217,16 @@ private static RpcException GetGoogleAdsException(AggregateException e) foreach (Metadata.Entry entry in rpcException.Trailers) { - switch (entry.Key) + if (entry.Key.EndsWith(".googleadsfailure-bin")) { - case V1.Errors.GoogleAdsException.FAILURE_KEY: - return V1.Errors.GoogleAdsException.Create(rpcException); - case V2.Errors.GoogleAdsException.FAILURE_KEY: - return V2.Errors.GoogleAdsException.Create(rpcException); - } + string version = entry.Key.Replace("google.ads.googleads.", "") + .Replace(".errors.googleadsfailure-bin", "").ToUpper(); + return (RpcException) myAssembly.GetType( + $"Google.Ads.GoogleAds.{version}.Errors.GoogleAdsException") + .GetMethod("Create", BindingFlags.Public | BindingFlags.Static) + .Invoke(null, new object[] { rpcException }); + } } return rpcException; } diff --git a/src/Util/Examples/ExampleRunner.cs b/src/Util/Examples/ExampleRunner.cs index 294dccf9d..ba6de2523 100644 --- a/src/Util/Examples/ExampleRunner.cs +++ b/src/Util/Examples/ExampleRunner.cs @@ -39,16 +39,16 @@ public class ExampleRunner /// The assembly. public void LoadCodeExamples(Assembly assembly) { - SystemType[] types = assembly.GetTypes(); - - ExampleBase codeExample = null; - foreach (SystemType type in types) + lock (codeExampleMap) { - if (type.IsSubclassOf(typeof(ExampleBase))) + codeExampleMap.Clear(); + SystemType[] types = assembly.GetTypes(); + + foreach (SystemType type in types) { - ExampleBase example = (ExampleBase) Activator.CreateInstance(type); - if (!codeExampleMap.TryGetValue(example.Name, out codeExample)) + if (type.IsSubclassOf(typeof(ExampleBase))) { + ExampleBase example = (ExampleBase) Activator.CreateInstance(type); codeExampleMap.Add(example.Name, example); } } diff --git a/src/V2/ServiceExtensions.cs b/src/V2/ServiceExtensions.cs index a0c2ac594..0e5cd56e4 100644 --- a/src/V2/ServiceExtensions.cs +++ b/src/V2/ServiceExtensions.cs @@ -87,6 +87,7 @@ public abstract partial class GoogleAdsServiceClient : GoogleAdsServiceClientBas public abstract partial class GroupPlacementViewServiceClient : GoogleAdsServiceClientBase {} public abstract partial class HotelGroupViewServiceClient : GoogleAdsServiceClientBase {} public abstract partial class HotelPerformanceViewServiceClient : GoogleAdsServiceClientBase {} + public abstract partial class InvoiceServiceClient : GoogleAdsServiceClientBase {} public abstract partial class KeywordPlanAdGroupServiceClient : GoogleAdsServiceClientBase {} public abstract partial class KeywordPlanCampaignServiceClient : GoogleAdsServiceClientBase {} public abstract partial class KeywordPlanIdeaServiceClient : GoogleAdsServiceClientBase {} diff --git a/src/V2/Services.V2.cs b/src/V2/Services.V2.cs index 028d9942d..ac917c69f 100644 --- a/src/V2/Services.V2.cs +++ b/src/V2/Services.V2.cs @@ -511,6 +511,13 @@ public class V2 public static readonly ServiceTemplate HotelPerformanceViewService; + /// + /// See https://developers.google.com/google-ads/api/reference/rpc/google.ads.googleads.v2.services#google.ads.googleads.v2.services.InvoiceService + /// for details. + /// + public static readonly ServiceTemplate InvoiceService; + + /// /// See https://developers.google.com/google-ads/api/reference/rpc/google.ads.googleads.v2.services#google.ads.googleads.v2.services.KeywordPlanAdGroupService /// for details. diff --git a/src/V2/Stubs/Ad.cs b/src/V2/Stubs/Ad.cs index 58d4731fa..8796e937f 100644 --- a/src/V2/Stubs/Ad.cs +++ b/src/V2/Stubs/Ad.cs @@ -35,68 +35,70 @@ static AdReflection() { "Mi9lbnVtcy9kZXZpY2UucHJvdG8aQGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3Yy", "L2VudW1zL3N5c3RlbV9tYW5hZ2VkX2VudGl0eV9zb3VyY2UucHJvdG8aHmdv", "b2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxocZ29vZ2xlL2FwaS9hbm5v", - "dGF0aW9ucy5wcm90byKiEgoCQWQSFQoNcmVzb3VyY2VfbmFtZRglIAEoCRIn", + "dGF0aW9ucy5wcm90byLaEgoCQWQSFQoNcmVzb3VyY2VfbmFtZRglIAEoCRIn", "CgJpZBgBIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjAKCmZp", "bmFsX3VybHMYAiADKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUS", "QwoOZmluYWxfYXBwX3VybHMYIyADKAsyKy5nb29nbGUuYWRzLmdvb2dsZWFk", "cy52Mi5jb21tb24uRmluYWxBcHBVcmwSNwoRZmluYWxfbW9iaWxlX3VybHMY", "ECADKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSOwoVdHJhY2tp", "bmdfdXJsX3RlbXBsYXRlGAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmlu", - "Z1ZhbHVlEk4KFXVybF9jdXN0b21fcGFyYW1ldGVycxgKIAMoCzIvLmdvb2ds", - "ZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5DdXN0b21QYXJhbWV0ZXISMQoL", - "ZGlzcGxheV91cmwYBCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFs", - "dWUSPgoEdHlwZRgFIAEoDjIwLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVu", - "dW1zLkFkVHlwZUVudW0uQWRUeXBlEjcKE2FkZGVkX2J5X2dvb2dsZV9hZHMY", - "EyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEksKEWRldmljZV9w", - "cmVmZXJlbmNlGBQgASgOMjAuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51", - "bXMuRGV2aWNlRW51bS5EZXZpY2USRgoPdXJsX2NvbGxlY3Rpb25zGBogAygL", - "Mi0uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlVybENvbGxlY3Rp", - "b24SKgoEbmFtZRgXIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1", - "ZRKCAQoec3lzdGVtX21hbmFnZWRfcmVzb3VyY2Vfc291cmNlGBsgASgOMlou", - "Z29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuU3lzdGVtTWFuYWdlZFJl", - "c291cmNlU291cmNlRW51bS5TeXN0ZW1NYW5hZ2VkUmVzb3VyY2VTb3VyY2US", - "PQoHdGV4dF9hZBgGIAEoCzIqLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNv", - "bW1vbi5UZXh0QWRJbmZvSAASTgoQZXhwYW5kZWRfdGV4dF9hZBgHIAEoCzIy", - "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5FeHBhbmRlZFRleHRB", - "ZEluZm9IABJGCgxjYWxsX29ubHlfYWQYDSABKAsyLi5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5jb21tb24uQ2FsbE9ubHlBZEluZm9IABJhChpleHBhbmRl", - "ZF9keW5hbWljX3NlYXJjaF9hZBgOIAEoCzI7Lmdvb2dsZS5hZHMuZ29vZ2xl", - "YWRzLnYyLmNvbW1vbi5FeHBhbmRlZER5bmFtaWNTZWFyY2hBZEluZm9IABI/", - "Cghob3RlbF9hZBgPIAEoCzIrLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNv", - "bW1vbi5Ib3RlbEFkSW5mb0gAElAKEXNob3BwaW5nX3NtYXJ0X2FkGBEgASgL", - "MjMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlNob3BwaW5nU21h", - "cnRBZEluZm9IABJUChNzaG9wcGluZ19wcm9kdWN0X2FkGBIgASgLMjUuZ29v", - "Z2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlNob3BwaW5nUHJvZHVjdEFk", - "SW5mb0gAEj8KCGdtYWlsX2FkGBUgASgLMisuZ29vZ2xlLmFkcy5nb29nbGVh", - "ZHMudjIuY29tbW9uLkdtYWlsQWRJbmZvSAASPwoIaW1hZ2VfYWQYFiABKAsy", - "Ky5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uSW1hZ2VBZEluZm9I", - "ABI/Cgh2aWRlb19hZBgYIAEoCzIrLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", - "LmNvbW1vbi5WaWRlb0FkSW5mb0gAElYKFHJlc3BvbnNpdmVfc2VhcmNoX2Fk", - "GBkgASgLMjYuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlJlc3Bv", - "bnNpdmVTZWFyY2hBZEluZm9IABJlChxsZWdhY3lfcmVzcG9uc2l2ZV9kaXNw", - "bGF5X2FkGBwgASgLMj0uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9u", - "LkxlZ2FjeVJlc3BvbnNpdmVEaXNwbGF5QWRJbmZvSAASOwoGYXBwX2FkGB0g", - "ASgLMikuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkFwcEFkSW5m", - "b0gAElcKFWxlZ2FjeV9hcHBfaW5zdGFsbF9hZBgeIAEoCzI2Lmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5MZWdhY3lBcHBJbnN0YWxsQWRJbmZv", - "SAASWAoVcmVzcG9uc2l2ZV9kaXNwbGF5X2FkGB8gASgLMjcuZ29vZ2xlLmFk", - "cy5nb29nbGVhZHMudjIuY29tbW9uLlJlc3BvbnNpdmVEaXNwbGF5QWRJbmZv", - "SAASUAoRZGlzcGxheV91cGxvYWRfYWQYISABKAsyMy5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5jb21tb24uRGlzcGxheVVwbG9hZEFkSW5mb0gAElAKEWFw", - "cF9lbmdhZ2VtZW50X2FkGCIgASgLMjMuZ29vZ2xlLmFkcy5nb29nbGVhZHMu", - "djIuY29tbW9uLkFwcEVuZ2FnZW1lbnRBZEluZm9IABJpCh5zaG9wcGluZ19j", - "b21wYXJpc29uX2xpc3RpbmdfYWQYJCABKAsyPy5nb29nbGUuYWRzLmdvb2ds", - "ZWFkcy52Mi5jb21tb24uU2hvcHBpbmdDb21wYXJpc29uTGlzdGluZ0FkSW5m", - "b0gAQgkKB2FkX2RhdGFC9AEKJWNvbS5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5yZXNvdXJjZXNCB0FkUHJvdG9QAVpKZ29vZ2xlLmdvbGFuZy5vcmcvZ2Vu", - "cHJvdG8vZ29vZ2xlYXBpcy9hZHMvZ29vZ2xlYWRzL3YyL3Jlc291cmNlczty", - "ZXNvdXJjZXOiAgNHQUGqAiFHb29nbGUuQWRzLkdvb2dsZUFkcy5WMi5SZXNv", - "dXJjZXPKAiFHb29nbGVcQWRzXEdvb2dsZUFkc1xWMlxSZXNvdXJjZXPqAiVH", - "b29nbGU6OkFkczo6R29vZ2xlQWRzOjpWMjo6UmVzb3VyY2VzYgZwcm90bzM=")); + "Z1ZhbHVlEjYKEGZpbmFsX3VybF9zdWZmaXgYJiABKAsyHC5nb29nbGUucHJv", + "dG9idWYuU3RyaW5nVmFsdWUSTgoVdXJsX2N1c3RvbV9wYXJhbWV0ZXJzGAog", + "AygLMi8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkN1c3RvbVBh", + "cmFtZXRlchIxCgtkaXNwbGF5X3VybBgEIAEoCzIcLmdvb2dsZS5wcm90b2J1", + "Zi5TdHJpbmdWYWx1ZRI+CgR0eXBlGAUgASgOMjAuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuZW51bXMuQWRUeXBlRW51bS5BZFR5cGUSNwoTYWRkZWRfYnlf", + "Z29vZ2xlX2FkcxgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUS", + "SwoRZGV2aWNlX3ByZWZlcmVuY2UYFCABKA4yMC5nb29nbGUuYWRzLmdvb2ds", + "ZWFkcy52Mi5lbnVtcy5EZXZpY2VFbnVtLkRldmljZRJGCg91cmxfY29sbGVj", + "dGlvbnMYGiADKAsyLS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24u", + "VXJsQ29sbGVjdGlvbhIqCgRuYW1lGBcgASgLMhwuZ29vZ2xlLnByb3RvYnVm", + "LlN0cmluZ1ZhbHVlEoIBCh5zeXN0ZW1fbWFuYWdlZF9yZXNvdXJjZV9zb3Vy", + "Y2UYGyABKA4yWi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5TeXN0", + "ZW1NYW5hZ2VkUmVzb3VyY2VTb3VyY2VFbnVtLlN5c3RlbU1hbmFnZWRSZXNv", + "dXJjZVNvdXJjZRI9Cgd0ZXh0X2FkGAYgASgLMiouZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuY29tbW9uLlRleHRBZEluZm9IABJOChBleHBhbmRlZF90ZXh0", + "X2FkGAcgASgLMjIuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkV4", + "cGFuZGVkVGV4dEFkSW5mb0gAEkYKDGNhbGxfb25seV9hZBgNIAEoCzIuLmdv", + "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5DYWxsT25seUFkSW5mb0gA", + "EmEKGmV4cGFuZGVkX2R5bmFtaWNfc2VhcmNoX2FkGA4gASgLMjsuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkV4cGFuZGVkRHluYW1pY1NlYXJj", + "aEFkSW5mb0gAEj8KCGhvdGVsX2FkGA8gASgLMisuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuY29tbW9uLkhvdGVsQWRJbmZvSAASUAoRc2hvcHBpbmdfc21h", + "cnRfYWQYESABKAsyMy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24u", + "U2hvcHBpbmdTbWFydEFkSW5mb0gAElQKE3Nob3BwaW5nX3Byb2R1Y3RfYWQY", + "EiABKAsyNS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uU2hvcHBp", + "bmdQcm9kdWN0QWRJbmZvSAASPwoIZ21haWxfYWQYFSABKAsyKy5nb29nbGUu", + "YWRzLmdvb2dsZWFkcy52Mi5jb21tb24uR21haWxBZEluZm9IABI/CghpbWFn", + "ZV9hZBgWIAEoCzIrLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5J", + "bWFnZUFkSW5mb0gAEj8KCHZpZGVvX2FkGBggASgLMisuZ29vZ2xlLmFkcy5n", + "b29nbGVhZHMudjIuY29tbW9uLlZpZGVvQWRJbmZvSAASVgoUcmVzcG9uc2l2", + "ZV9zZWFyY2hfYWQYGSABKAsyNi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5j", + "b21tb24uUmVzcG9uc2l2ZVNlYXJjaEFkSW5mb0gAEmUKHGxlZ2FjeV9yZXNw", + "b25zaXZlX2Rpc3BsYXlfYWQYHCABKAsyPS5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5jb21tb24uTGVnYWN5UmVzcG9uc2l2ZURpc3BsYXlBZEluZm9IABI7", + "CgZhcHBfYWQYHSABKAsyKS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21t", + "b24uQXBwQWRJbmZvSAASVwoVbGVnYWN5X2FwcF9pbnN0YWxsX2FkGB4gASgL", + "MjYuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkxlZ2FjeUFwcElu", + "c3RhbGxBZEluZm9IABJYChVyZXNwb25zaXZlX2Rpc3BsYXlfYWQYHyABKAsy", + "Ny5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uUmVzcG9uc2l2ZURp", + "c3BsYXlBZEluZm9IABJQChFkaXNwbGF5X3VwbG9hZF9hZBghIAEoCzIzLmdv", + "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5EaXNwbGF5VXBsb2FkQWRJ", + "bmZvSAASUAoRYXBwX2VuZ2FnZW1lbnRfYWQYIiABKAsyMy5nb29nbGUuYWRz", + "Lmdvb2dsZWFkcy52Mi5jb21tb24uQXBwRW5nYWdlbWVudEFkSW5mb0gAEmkK", + "HnNob3BwaW5nX2NvbXBhcmlzb25fbGlzdGluZ19hZBgkIAEoCzI/Lmdvb2ds", + "ZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5TaG9wcGluZ0NvbXBhcmlzb25M", + "aXN0aW5nQWRJbmZvSABCCQoHYWRfZGF0YUL0AQolY29tLmdvb2dsZS5hZHMu", + "Z29vZ2xlYWRzLnYyLnJlc291cmNlc0IHQWRQcm90b1ABWkpnb29nbGUuZ29s", + "YW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2Fkcy9nb29nbGVhZHMvdjIv", + "cmVzb3VyY2VzO3Jlc291cmNlc6ICA0dBQaoCIUdvb2dsZS5BZHMuR29vZ2xl", + "QWRzLlYyLlJlc291cmNlc8oCIUdvb2dsZVxBZHNcR29vZ2xlQWRzXFYyXFJl", + "c291cmNlc+oCJUdvb2dsZTo6QWRzOjpHb29nbGVBZHM6OlYyOjpSZXNvdXJj", + "ZXNiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.AdTypeInfosReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.CustomParameterReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.FinalAppUrlReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.UrlCollectionReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.AdTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.DeviceReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SystemManagedEntitySourceReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Ad), global::Google.Ads.GoogleAds.V2.Resources.Ad.Parser, new[]{ "ResourceName", "Id", "FinalUrls", "FinalAppUrls", "FinalMobileUrls", "TrackingUrlTemplate", "UrlCustomParameters", "DisplayUrl", "Type", "AddedByGoogleAds", "DevicePreference", "UrlCollections", "Name", "SystemManagedResourceSource", "TextAd", "ExpandedTextAd", "CallOnlyAd", "ExpandedDynamicSearchAd", "HotelAd", "ShoppingSmartAd", "ShoppingProductAd", "GmailAd", "ImageAd", "VideoAd", "ResponsiveSearchAd", "LegacyResponsiveDisplayAd", "AppAd", "LegacyAppInstallAd", "ResponsiveDisplayAd", "DisplayUploadAd", "AppEngagementAd", "ShoppingComparisonListingAd" }, new[]{ "AdData" }, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Ad), global::Google.Ads.GoogleAds.V2.Resources.Ad.Parser, new[]{ "ResourceName", "Id", "FinalUrls", "FinalAppUrls", "FinalMobileUrls", "TrackingUrlTemplate", "FinalUrlSuffix", "UrlCustomParameters", "DisplayUrl", "Type", "AddedByGoogleAds", "DevicePreference", "UrlCollections", "Name", "SystemManagedResourceSource", "TextAd", "ExpandedTextAd", "CallOnlyAd", "ExpandedDynamicSearchAd", "HotelAd", "ShoppingSmartAd", "ShoppingProductAd", "GmailAd", "ImageAd", "VideoAd", "ResponsiveSearchAd", "LegacyResponsiveDisplayAd", "AppAd", "LegacyAppInstallAd", "ResponsiveDisplayAd", "DisplayUploadAd", "AppEngagementAd", "ShoppingComparisonListingAd" }, new[]{ "AdData" }, null, null) })); } #endregion @@ -137,6 +139,7 @@ public Ad(Ad other) : this() { finalAppUrls_ = other.finalAppUrls_.Clone(); finalMobileUrls_ = other.finalMobileUrls_.Clone(); TrackingUrlTemplate = other.TrackingUrlTemplate; + FinalUrlSuffix = other.FinalUrlSuffix; urlCustomParameters_ = other.urlCustomParameters_.Clone(); DisplayUrl = other.DisplayUrl; type_ = other.type_; @@ -301,6 +304,22 @@ public string TrackingUrlTemplate { } + /// Field number for the "final_url_suffix" field. + public const int FinalUrlSuffixFieldNumber = 38; + private static readonly pb::FieldCodec _single_finalUrlSuffix_codec = pb::FieldCodec.ForClassWrapper(306); + private string finalUrlSuffix_; + /// + /// The suffix to use when constructing a final URL. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string FinalUrlSuffix { + get { return finalUrlSuffix_; } + set { + finalUrlSuffix_ = value; + } + } + + /// Field number for the "url_custom_parameters" field. public const int UrlCustomParametersFieldNumber = 10; private static readonly pb::FieldCodec _repeated_urlCustomParameters_codec @@ -739,6 +758,7 @@ public bool Equals(Ad other) { if(!finalAppUrls_.Equals(other.finalAppUrls_)) return false; if(!finalMobileUrls_.Equals(other.finalMobileUrls_)) return false; if (TrackingUrlTemplate != other.TrackingUrlTemplate) return false; + if (FinalUrlSuffix != other.FinalUrlSuffix) return false; if(!urlCustomParameters_.Equals(other.urlCustomParameters_)) return false; if (DisplayUrl != other.DisplayUrl) return false; if (Type != other.Type) return false; @@ -778,6 +798,7 @@ public override int GetHashCode() { hash ^= finalAppUrls_.GetHashCode(); hash ^= finalMobileUrls_.GetHashCode(); if (trackingUrlTemplate_ != null) hash ^= TrackingUrlTemplate.GetHashCode(); + if (finalUrlSuffix_ != null) hash ^= FinalUrlSuffix.GetHashCode(); hash ^= urlCustomParameters_.GetHashCode(); if (displayUrl_ != null) hash ^= DisplayUrl.GetHashCode(); if (Type != 0) hash ^= Type.GetHashCode(); @@ -926,6 +947,9 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(170, 2); output.WriteString(ResourceName); } + if (finalUrlSuffix_ != null) { + _single_finalUrlSuffix_codec.WriteTagAndValue(output, FinalUrlSuffix); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -946,6 +970,9 @@ public int CalculateSize() { if (trackingUrlTemplate_ != null) { size += _single_trackingUrlTemplate_codec.CalculateSizeWithTag(TrackingUrlTemplate); } + if (finalUrlSuffix_ != null) { + size += _single_finalUrlSuffix_codec.CalculateSizeWithTag(FinalUrlSuffix); + } size += urlCustomParameters_.CalculateSize(_repeated_urlCustomParameters_codec); if (displayUrl_ != null) { size += _single_displayUrl_codec.CalculateSizeWithTag(DisplayUrl); @@ -1047,6 +1074,11 @@ public void MergeFrom(Ad other) { TrackingUrlTemplate = other.TrackingUrlTemplate; } } + if (other.finalUrlSuffix_ != null) { + if (finalUrlSuffix_ == null || other.FinalUrlSuffix != "") { + FinalUrlSuffix = other.FinalUrlSuffix; + } + } urlCustomParameters_.Add(other.urlCustomParameters_); if (other.displayUrl_ != null) { if (displayUrl_ == null || other.DisplayUrl != "") { @@ -1428,6 +1460,13 @@ public void MergeFrom(pb::CodedInputStream input) { ResourceName = input.ReadString(); break; } + case 306: { + string value = _single_finalUrlSuffix_codec.Read(input); + if (finalUrlSuffix_ == null || value != "") { + FinalUrlSuffix = value; + } + break; + } } } } diff --git a/src/V2/Stubs/Campaign.cs b/src/V2/Stubs/Campaign.cs index 684470674..93481984f 100644 --- a/src/V2/Stubs/Campaign.cs +++ b/src/V2/Stubs/Campaign.cs @@ -145,33 +145,33 @@ static CampaignReflection() { "dWFnZV9jb2RlGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", "EjoKFnVzZV9zdXBwbGllZF91cmxzX29ubHkYAyABKAsyGi5nb29nbGUucHJv", "dG9idWYuQm9vbFZhbHVlEisKBWZlZWRzGAUgAygLMhwuZ29vZ2xlLnByb3Rv", - "YnVmLlN0cmluZ1ZhbHVlGuIBCg9TaG9wcGluZ1NldHRpbmcSMAoLbWVyY2hh", - "bnRfaWQYASABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRIzCg1z", - "YWxlc19jb3VudHJ5GAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1Zh", - "bHVlEjYKEWNhbXBhaWduX3ByaW9yaXR5GAMgASgLMhsuZ29vZ2xlLnByb3Rv", - "YnVmLkludDMyVmFsdWUSMAoMZW5hYmxlX2xvY2FsGAQgASgLMhouZ29vZ2xl", - "LnByb3RvYnVmLkJvb2xWYWx1ZRpFCg9UcmFja2luZ1NldHRpbmcSMgoMdHJh", - "Y2tpbmdfdXJsGAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", - "GvMBCgxWYW5pdHlQaGFybWESgAEKHnZhbml0eV9waGFybWFfZGlzcGxheV91", - "cmxfbW9kZRgBIAEoDjJYLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1z", - "LlZhbml0eVBoYXJtYURpc3BsYXlVcmxNb2RlRW51bS5WYW5pdHlQaGFybWFE", - "aXNwbGF5VXJsTW9kZRJgChJ2YW5pdHlfcGhhcm1hX3RleHQYAiABKA4yRC5n", - "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5WYW5pdHlQaGFybWFUZXh0", - "RW51bS5WYW5pdHlQaGFybWFUZXh0GvoBChRHZW9UYXJnZXRUeXBlU2V0dGlu", - "ZxJwChhwb3NpdGl2ZV9nZW9fdGFyZ2V0X3R5cGUYASABKA4yTi5nb29nbGUu", - "YWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5Qb3NpdGl2ZUdlb1RhcmdldFR5cGVF", - "bnVtLlBvc2l0aXZlR2VvVGFyZ2V0VHlwZRJwChhuZWdhdGl2ZV9nZW9fdGFy", - "Z2V0X3R5cGUYAiABKA4yTi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVt", - "cy5OZWdhdGl2ZUdlb1RhcmdldFR5cGVFbnVtLk5lZ2F0aXZlR2VvVGFyZ2V0", - "VHlwZRpRChVTZWxlY3RpdmVPcHRpbWl6YXRpb24SOAoSY29udmVyc2lvbl9h", - "Y3Rpb25zGAEgAygLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlGrAC", - "ChJBcHBDYW1wYWlnblNldHRpbmcSjAEKGmJpZGRpbmdfc3RyYXRlZ3lfZ29h", - "bF90eXBlGAEgASgOMmguZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMu", - "QXBwQ2FtcGFpZ25CaWRkaW5nU3RyYXRlZ3lHb2FsVHlwZUVudW0uQXBwQ2Ft", - "cGFpZ25CaWRkaW5nU3RyYXRlZ3lHb2FsVHlwZRIsCgZhcHBfaWQYAiABKAsy", - "HC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSXQoJYXBwX3N0b3JlGAMg", - "ASgOMkouZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuQXBwQ2FtcGFp", - "Z25BcHBTdG9yZUVudW0uQXBwQ2FtcGFpZ25BcHBTdG9yZUIbChljYW1wYWln", + "YnVmLlN0cmluZ1ZhbHVlGlEKFVNlbGVjdGl2ZU9wdGltaXphdGlvbhI4ChJj", + "b252ZXJzaW9uX2FjdGlvbnMYASADKAsyHC5nb29nbGUucHJvdG9idWYuU3Ry", + "aW5nVmFsdWUa4gEKD1Nob3BwaW5nU2V0dGluZxIwCgttZXJjaGFudF9pZBgB", + "IAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjMKDXNhbGVzX2Nv", + "dW50cnkYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNgoR", + "Y2FtcGFpZ25fcHJpb3JpdHkYAyABKAsyGy5nb29nbGUucHJvdG9idWYuSW50", + "MzJWYWx1ZRIwCgxlbmFibGVfbG9jYWwYBCABKAsyGi5nb29nbGUucHJvdG9i", + "dWYuQm9vbFZhbHVlGkUKD1RyYWNraW5nU2V0dGluZxIyCgx0cmFja2luZ191", + "cmwYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUasAIKEkFw", + "cENhbXBhaWduU2V0dGluZxKMAQoaYmlkZGluZ19zdHJhdGVneV9nb2FsX3R5", + "cGUYASABKA4yaC5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5BcHBD", + "YW1wYWlnbkJpZGRpbmdTdHJhdGVneUdvYWxUeXBlRW51bS5BcHBDYW1wYWln", + "bkJpZGRpbmdTdHJhdGVneUdvYWxUeXBlEiwKBmFwcF9pZBgCIAEoCzIcLmdv", + "b2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJdCglhcHBfc3RvcmUYAyABKA4y", + "Si5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5BcHBDYW1wYWlnbkFw", + "cFN0b3JlRW51bS5BcHBDYW1wYWlnbkFwcFN0b3JlGvoBChRHZW9UYXJnZXRU", + "eXBlU2V0dGluZxJwChhwb3NpdGl2ZV9nZW9fdGFyZ2V0X3R5cGUYASABKA4y", + "Ti5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5Qb3NpdGl2ZUdlb1Rh", + "cmdldFR5cGVFbnVtLlBvc2l0aXZlR2VvVGFyZ2V0VHlwZRJwChhuZWdhdGl2", + "ZV9nZW9fdGFyZ2V0X3R5cGUYAiABKA4yTi5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lbnVtcy5OZWdhdGl2ZUdlb1RhcmdldFR5cGVFbnVtLk5lZ2F0aXZl", + "R2VvVGFyZ2V0VHlwZRrzAQoMVmFuaXR5UGhhcm1hEoABCh52YW5pdHlfcGhh", + "cm1hX2Rpc3BsYXlfdXJsX21vZGUYASABKA4yWC5nb29nbGUuYWRzLmdvb2ds", + "ZWFkcy52Mi5lbnVtcy5WYW5pdHlQaGFybWFEaXNwbGF5VXJsTW9kZUVudW0u", + "VmFuaXR5UGhhcm1hRGlzcGxheVVybE1vZGUSYAoSdmFuaXR5X3BoYXJtYV90", + "ZXh0GAIgASgOMkQuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuVmFu", + "aXR5UGhhcm1hVGV4dEVudW0uVmFuaXR5UGhhcm1hVGV4dEIbChljYW1wYWln", "bl9iaWRkaW5nX3N0cmF0ZWd5QvoBCiVjb20uZ29vZ2xlLmFkcy5nb29nbGVh", "ZHMudjIucmVzb3VyY2VzQg1DYW1wYWlnblByb3RvUAFaSmdvb2dsZS5nb2xh", "bmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYWRzL2dvb2dsZWFkcy92Mi9y", @@ -185,12 +185,12 @@ static CampaignReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Parser, new[]{ "ResourceName", "Id", "Name", "Status", "ServingStatus", "AdServingOptimizationStatus", "AdvertisingChannelType", "AdvertisingChannelSubType", "TrackingUrlTemplate", "UrlCustomParameters", "RealTimeBiddingSetting", "NetworkSettings", "HotelSetting", "DynamicSearchAdsSetting", "ShoppingSetting", "TargetingSetting", "GeoTargetTypeSetting", "AppCampaignSetting", "Labels", "ExperimentType", "BaseCampaign", "CampaignBudget", "BiddingStrategyType", "StartDate", "EndDate", "FinalUrlSuffix", "FrequencyCaps", "VideoBrandSafetySuitability", "VanityPharma", "SelectiveOptimization", "TrackingSetting", "PaymentMode", "BiddingStrategy", "Commission", "ManualCpc", "ManualCpm", "ManualCpv", "MaximizeConversions", "MaximizeConversionValue", "TargetCpa", "TargetImpressionShare", "TargetRoas", "TargetSpend", "PercentCpc", "TargetCpm" }, new[]{ "CampaignBiddingStrategy" }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.NetworkSettings), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.NetworkSettings.Parser, new[]{ "TargetGoogleSearch", "TargetSearchNetwork", "TargetContentNetwork", "TargetPartnerSearchNetwork" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.HotelSettingInfo), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.HotelSettingInfo.Parser, new[]{ "HotelCenterId" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.DynamicSearchAdsSetting), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.DynamicSearchAdsSetting.Parser, new[]{ "DomainName", "LanguageCode", "UseSuppliedUrlsOnly", "Feeds" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.SelectiveOptimization), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.SelectiveOptimization.Parser, new[]{ "ConversionActions" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.ShoppingSetting), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.ShoppingSetting.Parser, new[]{ "MerchantId", "SalesCountry", "CampaignPriority", "EnableLocal" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.TrackingSetting), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.TrackingSetting.Parser, new[]{ "TrackingUrl" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.VanityPharma), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.VanityPharma.Parser, new[]{ "VanityPharmaDisplayUrlMode", "VanityPharmaText" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.AppCampaignSetting), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.AppCampaignSetting.Parser, new[]{ "BiddingStrategyGoalType", "AppId", "AppStore" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.GeoTargetTypeSetting), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.GeoTargetTypeSetting.Parser, new[]{ "PositiveGeoTargetType", "NegativeGeoTargetType" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.SelectiveOptimization), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.SelectiveOptimization.Parser, new[]{ "ConversionActions" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.AppCampaignSetting), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.AppCampaignSetting.Parser, new[]{ "BiddingStrategyGoalType", "AppId", "AppStore" }, null, null, null)}) + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.VanityPharma), global::Google.Ads.GoogleAds.V2.Resources.Campaign.Types.VanityPharma.Parser, new[]{ "VanityPharmaDisplayUrlMode", "VanityPharmaText" }, null, null, null)}) })); } #endregion @@ -2635,6 +2635,134 @@ public void MergeFrom(pb::CodedInputStream input) { } + /// + /// Selective optimization setting for this campaign, which includes a set of + /// conversion actions to optimize this campaign towards. + /// + public sealed partial class SelectiveOptimization : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SelectiveOptimization()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SelectiveOptimization() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SelectiveOptimization(SelectiveOptimization other) : this() { + conversionActions_ = other.conversionActions_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SelectiveOptimization Clone() { + return new SelectiveOptimization(this); + } + + /// Field number for the "conversion_actions" field. + public const int ConversionActionsFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_conversionActions_codec + = pb::FieldCodec.ForClassWrapper(10); + private readonly pbc::RepeatedField conversionActions_ = new pbc::RepeatedField(); + /// + /// The selected set of conversion actions for optimizing this campaign. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField ConversionActions { + get { return conversionActions_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as SelectiveOptimization); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(SelectiveOptimization other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!conversionActions_.Equals(other.conversionActions_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + hash ^= conversionActions_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + conversionActions_.WriteTo(output, _repeated_conversionActions_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + size += conversionActions_.CalculateSize(_repeated_conversionActions_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(SelectiveOptimization other) { + if (other == null) { + return; + } + conversionActions_.Add(other.conversionActions_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + conversionActions_.AddEntriesFrom(input, _repeated_conversionActions_codec); + break; + } + } + } + } + + } + /// /// The setting for Shopping campaigns. Defines the universe of products that /// can be advertised by the campaign, and how this campaign interacts with @@ -2648,7 +2776,7 @@ public sealed partial class ShoppingSetting : pb::IMessage { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[3]; } + get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2910,7 +3038,7 @@ public sealed partial class TrackingSetting : pb::IMessage { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[4]; } + get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3041,17 +3169,17 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// Describes how unbranded pharma ads will be displayed. + /// Campaign level settings for App Campaigns. /// - public sealed partial class VanityPharma : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new VanityPharma()); + public sealed partial class AppCampaignSetting : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppCampaignSetting()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[5]; } + get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3060,76 +3188,95 @@ public sealed partial class VanityPharma : pb::IMessage { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public VanityPharma() { + public AppCampaignSetting() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public VanityPharma(VanityPharma other) : this() { - vanityPharmaDisplayUrlMode_ = other.vanityPharmaDisplayUrlMode_; - vanityPharmaText_ = other.vanityPharmaText_; + public AppCampaignSetting(AppCampaignSetting other) : this() { + biddingStrategyGoalType_ = other.biddingStrategyGoalType_; + AppId = other.AppId; + appStore_ = other.appStore_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public VanityPharma Clone() { - return new VanityPharma(this); + public AppCampaignSetting Clone() { + return new AppCampaignSetting(this); } - /// Field number for the "vanity_pharma_display_url_mode" field. - public const int VanityPharmaDisplayUrlModeFieldNumber = 1; - private global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaDisplayUrlModeEnum.Types.VanityPharmaDisplayUrlMode vanityPharmaDisplayUrlMode_ = 0; + /// Field number for the "bidding_strategy_goal_type" field. + public const int BiddingStrategyGoalTypeFieldNumber = 1; + private global::Google.Ads.GoogleAds.V2.Enums.AppCampaignBiddingStrategyGoalTypeEnum.Types.AppCampaignBiddingStrategyGoalType biddingStrategyGoalType_ = 0; /// - /// The display mode for vanity pharma URLs. + /// Represents the goal which the bidding strategy of this app campaign + /// should optimize towards. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaDisplayUrlModeEnum.Types.VanityPharmaDisplayUrlMode VanityPharmaDisplayUrlMode { - get { return vanityPharmaDisplayUrlMode_; } + public global::Google.Ads.GoogleAds.V2.Enums.AppCampaignBiddingStrategyGoalTypeEnum.Types.AppCampaignBiddingStrategyGoalType BiddingStrategyGoalType { + get { return biddingStrategyGoalType_; } set { - vanityPharmaDisplayUrlMode_ = value; + biddingStrategyGoalType_ = value; } } - /// Field number for the "vanity_pharma_text" field. - public const int VanityPharmaTextFieldNumber = 2; - private global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaTextEnum.Types.VanityPharmaText vanityPharmaText_ = 0; + /// Field number for the "app_id" field. + public const int AppIdFieldNumber = 2; + private static readonly pb::FieldCodec _single_appId_codec = pb::FieldCodec.ForClassWrapper(18); + private string appId_; /// - /// The text that will be displayed in display URL of the text ad when - /// website description is the selected display mode for vanity pharma URLs. + /// A string that uniquely identifies a mobile application. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaTextEnum.Types.VanityPharmaText VanityPharmaText { - get { return vanityPharmaText_; } + public string AppId { + get { return appId_; } set { - vanityPharmaText_ = value; + appId_ = value; + } + } + + + /// Field number for the "app_store" field. + public const int AppStoreFieldNumber = 3; + private global::Google.Ads.GoogleAds.V2.Enums.AppCampaignAppStoreEnum.Types.AppCampaignAppStore appStore_ = 0; + /// + /// The application store that distributes this specific app. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Enums.AppCampaignAppStoreEnum.Types.AppCampaignAppStore AppStore { + get { return appStore_; } + set { + appStore_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as VanityPharma); + return Equals(other as AppCampaignSetting); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(VanityPharma other) { + public bool Equals(AppCampaignSetting other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (VanityPharmaDisplayUrlMode != other.VanityPharmaDisplayUrlMode) return false; - if (VanityPharmaText != other.VanityPharmaText) return false; + if (BiddingStrategyGoalType != other.BiddingStrategyGoalType) return false; + if (AppId != other.AppId) return false; + if (AppStore != other.AppStore) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; - if (VanityPharmaDisplayUrlMode != 0) hash ^= VanityPharmaDisplayUrlMode.GetHashCode(); - if (VanityPharmaText != 0) hash ^= VanityPharmaText.GetHashCode(); + if (BiddingStrategyGoalType != 0) hash ^= BiddingStrategyGoalType.GetHashCode(); + if (appId_ != null) hash ^= AppId.GetHashCode(); + if (AppStore != 0) hash ^= AppStore.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3143,13 +3290,16 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { - if (VanityPharmaDisplayUrlMode != 0) { + if (BiddingStrategyGoalType != 0) { output.WriteRawTag(8); - output.WriteEnum((int) VanityPharmaDisplayUrlMode); + output.WriteEnum((int) BiddingStrategyGoalType); } - if (VanityPharmaText != 0) { - output.WriteRawTag(16); - output.WriteEnum((int) VanityPharmaText); + if (appId_ != null) { + _single_appId_codec.WriteTagAndValue(output, AppId); + } + if (AppStore != 0) { + output.WriteRawTag(24); + output.WriteEnum((int) AppStore); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -3159,11 +3309,14 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; - if (VanityPharmaDisplayUrlMode != 0) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) VanityPharmaDisplayUrlMode); + if (BiddingStrategyGoalType != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) BiddingStrategyGoalType); } - if (VanityPharmaText != 0) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) VanityPharmaText); + if (appId_ != null) { + size += _single_appId_codec.CalculateSizeWithTag(AppId); + } + if (AppStore != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AppStore); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -3172,15 +3325,20 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(VanityPharma other) { + public void MergeFrom(AppCampaignSetting other) { if (other == null) { return; } - if (other.VanityPharmaDisplayUrlMode != 0) { - VanityPharmaDisplayUrlMode = other.VanityPharmaDisplayUrlMode; + if (other.BiddingStrategyGoalType != 0) { + BiddingStrategyGoalType = other.BiddingStrategyGoalType; } - if (other.VanityPharmaText != 0) { - VanityPharmaText = other.VanityPharmaText; + if (other.appId_ != null) { + if (appId_ == null || other.AppId != "") { + AppId = other.AppId; + } + } + if (other.AppStore != 0) { + AppStore = other.AppStore; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3194,11 +3352,18 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { - VanityPharmaDisplayUrlMode = (global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaDisplayUrlModeEnum.Types.VanityPharmaDisplayUrlMode) input.ReadEnum(); + BiddingStrategyGoalType = (global::Google.Ads.GoogleAds.V2.Enums.AppCampaignBiddingStrategyGoalTypeEnum.Types.AppCampaignBiddingStrategyGoalType) input.ReadEnum(); break; } - case 16: { - VanityPharmaText = (global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaTextEnum.Types.VanityPharmaText) input.ReadEnum(); + case 18: { + string value = _single_appId_codec.Read(input); + if (appId_ == null || value != "") { + AppId = value; + } + break; + } + case 24: { + AppStore = (global::Google.Ads.GoogleAds.V2.Enums.AppCampaignAppStoreEnum.Types.AppCampaignAppStore) input.ReadEnum(); break; } } @@ -3218,7 +3383,7 @@ public sealed partial class GeoTargetTypeSetting : pb::IMessage - /// Selective optimization setting for this campaign, which includes a set of - /// conversion actions to optimize this campaign towards. - /// - public sealed partial class SelectiveOptimization : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SelectiveOptimization()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Campaign.Descriptor.NestedTypes[7]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SelectiveOptimization() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SelectiveOptimization(SelectiveOptimization other) : this() { - conversionActions_ = other.conversionActions_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SelectiveOptimization Clone() { - return new SelectiveOptimization(this); - } - - /// Field number for the "conversion_actions" field. - public const int ConversionActionsFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_conversionActions_codec - = pb::FieldCodec.ForClassWrapper(10); - private readonly pbc::RepeatedField conversionActions_ = new pbc::RepeatedField(); - /// - /// The selected set of conversion actions for optimizing this campaign. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ConversionActions { - get { return conversionActions_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SelectiveOptimization); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SelectiveOptimization other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!conversionActions_.Equals(other.conversionActions_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= conversionActions_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - conversionActions_.WriteTo(output, _repeated_conversionActions_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += conversionActions_.CalculateSize(_repeated_conversionActions_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SelectiveOptimization other) { - if (other == null) { - return; - } - conversionActions_.Add(other.conversionActions_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - conversionActions_.AddEntriesFrom(input, _repeated_conversionActions_codec); - break; - } - } - } - } - - } - - /// - /// Campaign level settings for App Campaigns. + /// Describes how unbranded pharma ads will be displayed. /// - public sealed partial class AppCampaignSetting : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppCampaignSetting()); + public sealed partial class VanityPharma : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new VanityPharma()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { @@ -3521,95 +3558,76 @@ public sealed partial class AppCampaignSetting : pb::IMessageField number for the "bidding_strategy_goal_type" field. - public const int BiddingStrategyGoalTypeFieldNumber = 1; - private global::Google.Ads.GoogleAds.V2.Enums.AppCampaignBiddingStrategyGoalTypeEnum.Types.AppCampaignBiddingStrategyGoalType biddingStrategyGoalType_ = 0; - /// - /// Represents the goal which the bidding strategy of this app campaign - /// should optimize towards. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Enums.AppCampaignBiddingStrategyGoalTypeEnum.Types.AppCampaignBiddingStrategyGoalType BiddingStrategyGoalType { - get { return biddingStrategyGoalType_; } - set { - biddingStrategyGoalType_ = value; - } + public VanityPharma Clone() { + return new VanityPharma(this); } - /// Field number for the "app_id" field. - public const int AppIdFieldNumber = 2; - private static readonly pb::FieldCodec _single_appId_codec = pb::FieldCodec.ForClassWrapper(18); - private string appId_; + /// Field number for the "vanity_pharma_display_url_mode" field. + public const int VanityPharmaDisplayUrlModeFieldNumber = 1; + private global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaDisplayUrlModeEnum.Types.VanityPharmaDisplayUrlMode vanityPharmaDisplayUrlMode_ = 0; /// - /// A string that uniquely identifies a mobile application. + /// The display mode for vanity pharma URLs. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string AppId { - get { return appId_; } + public global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaDisplayUrlModeEnum.Types.VanityPharmaDisplayUrlMode VanityPharmaDisplayUrlMode { + get { return vanityPharmaDisplayUrlMode_; } set { - appId_ = value; + vanityPharmaDisplayUrlMode_ = value; } } - - /// Field number for the "app_store" field. - public const int AppStoreFieldNumber = 3; - private global::Google.Ads.GoogleAds.V2.Enums.AppCampaignAppStoreEnum.Types.AppCampaignAppStore appStore_ = 0; + /// Field number for the "vanity_pharma_text" field. + public const int VanityPharmaTextFieldNumber = 2; + private global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaTextEnum.Types.VanityPharmaText vanityPharmaText_ = 0; /// - /// The application store that distributes this specific app. + /// The text that will be displayed in display URL of the text ad when + /// website description is the selected display mode for vanity pharma URLs. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Enums.AppCampaignAppStoreEnum.Types.AppCampaignAppStore AppStore { - get { return appStore_; } + public global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaTextEnum.Types.VanityPharmaText VanityPharmaText { + get { return vanityPharmaText_; } set { - appStore_ = value; + vanityPharmaText_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as AppCampaignSetting); + return Equals(other as VanityPharma); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(AppCampaignSetting other) { + public bool Equals(VanityPharma other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (BiddingStrategyGoalType != other.BiddingStrategyGoalType) return false; - if (AppId != other.AppId) return false; - if (AppStore != other.AppStore) return false; + if (VanityPharmaDisplayUrlMode != other.VanityPharmaDisplayUrlMode) return false; + if (VanityPharmaText != other.VanityPharmaText) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; - if (BiddingStrategyGoalType != 0) hash ^= BiddingStrategyGoalType.GetHashCode(); - if (appId_ != null) hash ^= AppId.GetHashCode(); - if (AppStore != 0) hash ^= AppStore.GetHashCode(); + if (VanityPharmaDisplayUrlMode != 0) hash ^= VanityPharmaDisplayUrlMode.GetHashCode(); + if (VanityPharmaText != 0) hash ^= VanityPharmaText.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3623,16 +3641,13 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { - if (BiddingStrategyGoalType != 0) { + if (VanityPharmaDisplayUrlMode != 0) { output.WriteRawTag(8); - output.WriteEnum((int) BiddingStrategyGoalType); - } - if (appId_ != null) { - _single_appId_codec.WriteTagAndValue(output, AppId); + output.WriteEnum((int) VanityPharmaDisplayUrlMode); } - if (AppStore != 0) { - output.WriteRawTag(24); - output.WriteEnum((int) AppStore); + if (VanityPharmaText != 0) { + output.WriteRawTag(16); + output.WriteEnum((int) VanityPharmaText); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -3642,14 +3657,11 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; - if (BiddingStrategyGoalType != 0) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) BiddingStrategyGoalType); - } - if (appId_ != null) { - size += _single_appId_codec.CalculateSizeWithTag(AppId); + if (VanityPharmaDisplayUrlMode != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) VanityPharmaDisplayUrlMode); } - if (AppStore != 0) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AppStore); + if (VanityPharmaText != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) VanityPharmaText); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -3658,20 +3670,15 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(AppCampaignSetting other) { + public void MergeFrom(VanityPharma other) { if (other == null) { return; } - if (other.BiddingStrategyGoalType != 0) { - BiddingStrategyGoalType = other.BiddingStrategyGoalType; - } - if (other.appId_ != null) { - if (appId_ == null || other.AppId != "") { - AppId = other.AppId; - } + if (other.VanityPharmaDisplayUrlMode != 0) { + VanityPharmaDisplayUrlMode = other.VanityPharmaDisplayUrlMode; } - if (other.AppStore != 0) { - AppStore = other.AppStore; + if (other.VanityPharmaText != 0) { + VanityPharmaText = other.VanityPharmaText; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3685,18 +3692,11 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { - BiddingStrategyGoalType = (global::Google.Ads.GoogleAds.V2.Enums.AppCampaignBiddingStrategyGoalTypeEnum.Types.AppCampaignBiddingStrategyGoalType) input.ReadEnum(); - break; - } - case 18: { - string value = _single_appId_codec.Read(input); - if (appId_ == null || value != "") { - AppId = value; - } + VanityPharmaDisplayUrlMode = (global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaDisplayUrlModeEnum.Types.VanityPharmaDisplayUrlMode) input.ReadEnum(); break; } - case 24: { - AppStore = (global::Google.Ads.GoogleAds.V2.Enums.AppCampaignAppStoreEnum.Types.AppCampaignAppStore) input.ReadEnum(); + case 16: { + VanityPharmaText = (global::Google.Ads.GoogleAds.V2.Enums.VanityPharmaTextEnum.Types.VanityPharmaText) input.ReadEnum(); break; } } diff --git a/src/V2/Stubs/Errors.cs b/src/V2/Stubs/Errors.cs index 1097e5e4c..f791a7af7 100644 --- a/src/V2/Stubs/Errors.cs +++ b/src/V2/Stubs/Errors.cs @@ -106,345 +106,348 @@ static ErrorsReflection() { "Z2xlYWRzL3YyL2Vycm9ycy9pZF9lcnJvci5wcm90bxowZ29vZ2xlL2Fkcy9n", "b29nbGVhZHMvdjIvZXJyb3JzL2ltYWdlX2Vycm9yLnByb3RvGjNnb29nbGUv", "YWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvaW50ZXJuYWxfZXJyb3IucHJvdG8a", - "QGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9rZXl3b3JkX3BsYW5f", - "YWRfZ3JvdXBfZXJyb3IucHJvdG8aQGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3Yy", - "L2Vycm9ycy9rZXl3b3JkX3BsYW5fY2FtcGFpZ25fZXJyb3IucHJvdG8aN2dv", - "b2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9rZXl3b3JkX3BsYW5fZXJy", - "b3IucHJvdG8aPGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9rZXl3", - "b3JkX3BsYW5faWRlYV9lcnJvci5wcm90bxo/Z29vZ2xlL2Fkcy9nb29nbGVh", - "ZHMvdjIvZXJyb3JzL2tleXdvcmRfcGxhbl9rZXl3b3JkX2Vycm9yLnByb3Rv", - "Gkhnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMva2V5d29yZF9wbGFu", - "X25lZ2F0aXZlX2tleXdvcmRfZXJyb3IucHJvdG8aMGdvb2dsZS9hZHMvZ29v", - "Z2xlYWRzL3YyL2Vycm9ycy9sYWJlbF9lcnJvci5wcm90bxo4Z29vZ2xlL2Fk", - "cy9nb29nbGVhZHMvdjIvZXJyb3JzL2xhbmd1YWdlX2NvZGVfZXJyb3IucHJv", - "dG8aOWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9saXN0X29wZXJh", - "dGlvbl9lcnJvci5wcm90bxo3Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJy", - "b3JzL21hbmFnZXJfbGlua19lcnJvci5wcm90bxo3Z29vZ2xlL2Fkcy9nb29n", - "bGVhZHMvdjIvZXJyb3JzL21lZGlhX2J1bmRsZV9lcnJvci5wcm90bxo1Z29v", - "Z2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL21lZGlhX2ZpbGVfZXJyb3Iu", - "cHJvdG8aN2dvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9tZWRpYV91", - "cGxvYWRfZXJyb3IucHJvdG8aNWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vy", - "cm9ycy9tdWx0aXBsaWVyX2Vycm9yLnByb3RvGjFnb29nbGUvYWRzL2dvb2ds", - "ZWFkcy92Mi9lcnJvcnMvbXV0YXRlX2Vycm9yLnByb3RvGjVnb29nbGUvYWRz", - "L2dvb2dsZWFkcy92Mi9lcnJvcnMvbXV0YXRlX2pvYl9lcnJvci5wcm90bxpA", - "Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL25ld19yZXNvdXJjZV9j", - "cmVhdGlvbl9lcnJvci5wcm90bxo0Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIv", - "ZXJyb3JzL25vdF9lbXB0eV9lcnJvci5wcm90bxo6Z29vZ2xlL2Fkcy9nb29n", - "bGVhZHMvdjIvZXJyb3JzL25vdF93aGl0ZWxpc3RlZF9lcnJvci5wcm90bxov", - "Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL251bGxfZXJyb3IucHJv", - "dG8aQmdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9vcGVyYXRpb25f", - "YWNjZXNzX2RlbmllZF9lcnJvci5wcm90bxozZ29vZ2xlL2Fkcy9nb29nbGVh", - "ZHMvdjIvZXJyb3JzL29wZXJhdG9yX2Vycm9yLnByb3RvGjpnb29nbGUvYWRz", - "L2dvb2dsZWFkcy92Mi9lcnJvcnMvcGFydGlhbF9mYWlsdXJlX2Vycm9yLnBy", - "b3RvGjlnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvcG9saWN5X2Zp", - "bmRpbmdfZXJyb3IucHJvdG8aRmdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vy", - "cm9ycy9wb2xpY3lfdmFsaWRhdGlvbl9wYXJhbWV0ZXJfZXJyb3IucHJvdG8a", - "O2dvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9wb2xpY3lfdmlvbGF0", - "aW9uX2Vycm9yLnByb3RvGjBnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJv", - "cnMvcXVlcnlfZXJyb3IucHJvdG8aMGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3Yy", - "L2Vycm9ycy9xdW90YV9lcnJvci5wcm90bxowZ29vZ2xlL2Fkcy9nb29nbGVh", - "ZHMvdjIvZXJyb3JzL3JhbmdlX2Vycm9yLnByb3RvGjVnb29nbGUvYWRzL2dv", - "b2dsZWFkcy92Mi9lcnJvcnMvcmVhY2hfcGxhbl9lcnJvci5wcm90bxo5Z29v", - "Z2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3JlY29tbWVuZGF0aW9uX2Vy", - "cm9yLnByb3RvGjZnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvcmVn", - "aW9uX2NvZGVfZXJyb3IucHJvdG8aMmdvb2dsZS9hZHMvZ29vZ2xlYWRzL3Yy", - "L2Vycm9ycy9yZXF1ZXN0X2Vycm9yLnByb3RvGkFnb29nbGUvYWRzL2dvb2ds", - "ZWFkcy92Mi9lcnJvcnMvcmVzb3VyY2VfYWNjZXNzX2RlbmllZF9lcnJvci5w", - "cm90bxpIZ29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3Jlc291cmNl", - "X2NvdW50X2xpbWl0X2V4Y2VlZGVkX2Vycm9yLnByb3RvGjJnb29nbGUvYWRz", - "L2dvb2dsZWFkcy92Mi9lcnJvcnMvc2V0dGluZ19lcnJvci5wcm90bxo7Z29v", - "Z2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3NoYXJlZF9jcml0ZXJpb25f", - "ZXJyb3IucHJvdG8aNWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9z", - "aGFyZWRfc2V0X2Vycm9yLnByb3RvGjVnb29nbGUvYWRzL2dvb2dsZWFkcy92", - "Mi9lcnJvcnMvc2l6ZV9saW1pdF9lcnJvci5wcm90bxo4Z29vZ2xlL2Fkcy9n", - "b29nbGVhZHMvdjIvZXJyb3JzL3N0cmluZ19mb3JtYXRfZXJyb3IucHJvdG8a", - "OGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9zdHJpbmdfbGVuZ3Ro", - "X2Vycm9yLnByb3RvGjRnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMv", - "dXJsX2ZpZWxkX2Vycm9yLnByb3RvGjRnb29nbGUvYWRzL2dvb2dsZWFkcy92", - "Mi9lcnJvcnMvdXNlcl9saXN0X2Vycm9yLnByb3RvGkVnb29nbGUvYWRzL2dv", - "b2dsZWFkcy92Mi9lcnJvcnMveW91dHViZV92aWRlb19yZWdpc3RyYXRpb25f", - "ZXJyb3IucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoc", - "Z29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90byJSChBHb29nbGVBZHNGYWls", - "dXJlEj4KBmVycm9ycxgBIAMoCzIuLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", - "LmVycm9ycy5Hb29nbGVBZHNFcnJvciKYAgoOR29vZ2xlQWRzRXJyb3ISPQoK", - "ZXJyb3JfY29kZRgBIAEoCzIpLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVy", - "cm9ycy5FcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCRI2Cgd0cmlnZ2VyGAMg", - "ASgLMiUuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlZhbHVlEj8K", - "CGxvY2F0aW9uGAQgASgLMi0uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJy", - "b3JzLkVycm9yTG9jYXRpb24SPQoHZGV0YWlscxgFIAEoCzIsLmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5FcnJvckRldGFpbHMi7FUKCUVycm9y", - "Q29kZRJWCg1yZXF1ZXN0X2Vycm9yGAEgASgOMj0uZ29vZ2xlLmFkcy5nb29n", - "bGVhZHMudjIuZXJyb3JzLlJlcXVlc3RFcnJvckVudW0uUmVxdWVzdEVycm9y", - "SAASbwoWYmlkZGluZ19zdHJhdGVneV9lcnJvchgCIAEoDjJNLmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5CaWRkaW5nU3RyYXRlZ3lFcnJvckVu", - "dW0uQmlkZGluZ1N0cmF0ZWd5RXJyb3JIABJaCg91cmxfZmllbGRfZXJyb3IY", - "AyABKA4yPy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuVXJsRmll", - "bGRFcnJvckVudW0uVXJsRmllbGRFcnJvckgAEmkKFGxpc3Rfb3BlcmF0aW9u", - "X2Vycm9yGAQgASgOMkkuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", - "Lkxpc3RPcGVyYXRpb25FcnJvckVudW0uTGlzdE9wZXJhdGlvbkVycm9ySAAS", - "UAoLcXVlcnlfZXJyb3IYBSABKA4yOS5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5lcnJvcnMuUXVlcnlFcnJvckVudW0uUXVlcnlFcnJvckgAElMKDG11dGF0", - "ZV9lcnJvchgHIAEoDjI7Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9y", - "cy5NdXRhdGVFcnJvckVudW0uTXV0YXRlRXJyb3JIABJdChBmaWVsZF9tYXNr", - "X2Vycm9yGAggASgOMkEuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", - "LkZpZWxkTWFza0Vycm9yRW51bS5GaWVsZE1hc2tFcnJvckgAEmgKE2F1dGhv", - "cml6YXRpb25fZXJyb3IYCSABKA4ySS5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5lcnJvcnMuQXV0aG9yaXphdGlvbkVycm9yRW51bS5BdXRob3JpemF0aW9u", - "RXJyb3JIABJZCg5pbnRlcm5hbF9lcnJvchgKIAEoDjI/Lmdvb2dsZS5hZHMu", - "Z29vZ2xlYWRzLnYyLmVycm9ycy5JbnRlcm5hbEVycm9yRW51bS5JbnRlcm5h", - "bEVycm9ySAASUAoLcXVvdGFfZXJyb3IYCyABKA4yOS5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5lcnJvcnMuUXVvdGFFcnJvckVudW0uUXVvdGFFcnJvckgA", - "EkcKCGFkX2Vycm9yGAwgASgOMjMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIu", - "ZXJyb3JzLkFkRXJyb3JFbnVtLkFkRXJyb3JIABJXCg5hZF9ncm91cF9lcnJv", - "chgNIAEoDjI9Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5BZEdy", - "b3VwRXJyb3JFbnVtLkFkR3JvdXBFcnJvckgAEmwKFWNhbXBhaWduX2J1ZGdl", - "dF9lcnJvchgOIAEoDjJLLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9y", - "cy5DYW1wYWlnbkJ1ZGdldEVycm9yRW51bS5DYW1wYWlnbkJ1ZGdldEVycm9y", - "SAASWQoOY2FtcGFpZ25fZXJyb3IYDyABKA4yPy5nb29nbGUuYWRzLmdvb2ds", - "ZWFkcy52Mi5lcnJvcnMuQ2FtcGFpZ25FcnJvckVudW0uQ2FtcGFpZ25FcnJv", - "ckgAEmsKFGF1dGhlbnRpY2F0aW9uX2Vycm9yGBEgASgOMksuZ29vZ2xlLmFk", - "cy5nb29nbGVhZHMudjIuZXJyb3JzLkF1dGhlbnRpY2F0aW9uRXJyb3JFbnVt", - "LkF1dGhlbnRpY2F0aW9uRXJyb3JIABJzChhhZF9ncm91cF9jcml0ZXJpb25f", - "ZXJyb3IYEiABKA4yTy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMu", - "QWRHcm91cENyaXRlcmlvbkVycm9yRW51bS5BZEdyb3VwQ3JpdGVyaW9uRXJy", - "b3JIABJmChNhZF9jdXN0b21pemVyX2Vycm9yGBMgASgOMkcuZ29vZ2xlLmFk", - "cy5nb29nbGVhZHMudjIuZXJyb3JzLkFkQ3VzdG9taXplckVycm9yRW51bS5B", - "ZEN1c3RvbWl6ZXJFcnJvckgAEl4KEWFkX2dyb3VwX2FkX2Vycm9yGBUgASgO", - "MkEuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkFkR3JvdXBBZEVy", - "cm9yRW51bS5BZEdyb3VwQWRFcnJvckgAEl0KEGFkX3NoYXJpbmdfZXJyb3IY", - "GCABKA4yQS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQWRTaGFy", - "aW5nRXJyb3JFbnVtLkFkU2hhcmluZ0Vycm9ySAASSgoJYWR4X2Vycm9yGBkg", - "ASgOMjUuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkFkeEVycm9y", - "RW51bS5BZHhFcnJvckgAElAKC2Fzc2V0X2Vycm9yGGsgASgOMjkuZ29vZ2xl", - "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkFzc2V0RXJyb3JFbnVtLkFzc2V0", - "RXJyb3JIABJWCg1iaWRkaW5nX2Vycm9yGBogASgOMj0uZ29vZ2xlLmFkcy5n", - "b29nbGVhZHMudjIuZXJyb3JzLkJpZGRpbmdFcnJvckVudW0uQmlkZGluZ0Vy", - "cm9ySAASdQoYY2FtcGFpZ25fY3JpdGVyaW9uX2Vycm9yGB0gASgOMlEuZ29v", - "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkNhbXBhaWduQ3JpdGVyaW9u", - "RXJyb3JFbnVtLkNhbXBhaWduQ3JpdGVyaW9uRXJyb3JIABJsChVjb2xsZWN0", - "aW9uX3NpemVfZXJyb3IYHyABKA4ySy5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5lcnJvcnMuQ29sbGVjdGlvblNpemVFcnJvckVudW0uQ29sbGVjdGlvblNp", - "emVFcnJvckgAEmMKEmNvdW50cnlfY29kZV9lcnJvchhtIAEoDjJFLmdvb2ds", - "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Db3VudHJ5Q29kZUVycm9yRW51", - "bS5Db3VudHJ5Q29kZUVycm9ySAASXAoPY3JpdGVyaW9uX2Vycm9yGCAgASgO", - "MkEuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkNyaXRlcmlvbkVy", - "cm9yRW51bS5Dcml0ZXJpb25FcnJvckgAElkKDmN1c3RvbWVyX2Vycm9yGFog", - "ASgOMj8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkN1c3RvbWVy", - "RXJyb3JFbnVtLkN1c3RvbWVyRXJyb3JIABJNCgpkYXRlX2Vycm9yGCEgASgO", - "MjcuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkRhdGVFcnJvckVu", - "dW0uRGF0ZUVycm9ySAASXQoQZGF0ZV9yYW5nZV9lcnJvchgiIAEoDjJBLmdv", - "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5EYXRlUmFuZ2VFcnJvckVu", - "dW0uRGF0ZVJhbmdlRXJyb3JIABJZCg5kaXN0aW5jdF9lcnJvchgjIAEoDjI/", - "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5EaXN0aW5jdEVycm9y", - "RW51bS5EaXN0aW5jdEVycm9ySAAShQEKHmZlZWRfYXR0cmlidXRlX3JlZmVy", - "ZW5jZV9lcnJvchgkIAEoDjJbLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVy", - "cm9ycy5GZWVkQXR0cmlidXRlUmVmZXJlbmNlRXJyb3JFbnVtLkZlZWRBdHRy", - "aWJ1dGVSZWZlcmVuY2VFcnJvckgAElkKDmZ1bmN0aW9uX2Vycm9yGCUgASgO", - "Mj8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkZ1bmN0aW9uRXJy", - "b3JFbnVtLkZ1bmN0aW9uRXJyb3JIABJvChZmdW5jdGlvbl9wYXJzaW5nX2Vy", - "cm9yGCYgASgOMk0uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkZ1", - "bmN0aW9uUGFyc2luZ0Vycm9yRW51bS5GdW5jdGlvblBhcnNpbmdFcnJvckgA", - "EkcKCGlkX2Vycm9yGCcgASgOMjMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIu", - "ZXJyb3JzLklkRXJyb3JFbnVtLklkRXJyb3JIABJQCgtpbWFnZV9lcnJvchgo", - "IAEoDjI5Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5JbWFnZUVy", - "cm9yRW51bS5JbWFnZUVycm9ySAASZgoTbGFuZ3VhZ2VfY29kZV9lcnJvchhu", - "IAEoDjJHLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5MYW5ndWFn", - "ZUNvZGVFcnJvckVudW0uTGFuZ3VhZ2VDb2RlRXJyb3JIABJjChJtZWRpYV9i", - "dW5kbGVfZXJyb3IYKiABKA4yRS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", - "cnJvcnMuTWVkaWFCdW5kbGVFcnJvckVudW0uTWVkaWFCdW5kbGVFcnJvckgA", - "EmMKEm1lZGlhX3VwbG9hZF9lcnJvchh0IAEoDjJFLmdvb2dsZS5hZHMuZ29v", - "Z2xlYWRzLnYyLmVycm9ycy5NZWRpYVVwbG9hZEVycm9yRW51bS5NZWRpYVVw", - "bG9hZEVycm9ySAASXQoQbWVkaWFfZmlsZV9lcnJvchhWIAEoDjJBLmdvb2ds", - "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5NZWRpYUZpbGVFcnJvckVudW0u", - "TWVkaWFGaWxlRXJyb3JIABJfChBtdWx0aXBsaWVyX2Vycm9yGCwgASgOMkMu", - "Z29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLk11bHRpcGxpZXJFcnJv", - "ckVudW0uTXVsdGlwbGllckVycm9ySAASfAobbmV3X3Jlc291cmNlX2NyZWF0", - "aW9uX2Vycm9yGC0gASgOMlUuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJy", - "b3JzLk5ld1Jlc291cmNlQ3JlYXRpb25FcnJvckVudW0uTmV3UmVzb3VyY2VD", - "cmVhdGlvbkVycm9ySAASWgoPbm90X2VtcHR5X2Vycm9yGC4gASgOMj8uZ29v", - "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLk5vdEVtcHR5RXJyb3JFbnVt", - "Lk5vdEVtcHR5RXJyb3JIABJNCgpudWxsX2Vycm9yGC8gASgOMjcuZ29vZ2xl", - "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLk51bGxFcnJvckVudW0uTnVsbEVy", - "cm9ySAASWQoOb3BlcmF0b3JfZXJyb3IYMCABKA4yPy5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5lcnJvcnMuT3BlcmF0b3JFcnJvckVudW0uT3BlcmF0b3JF", - "cnJvckgAElAKC3JhbmdlX2Vycm9yGDEgASgOMjkuZ29vZ2xlLmFkcy5nb29n", - "bGVhZHMudjIuZXJyb3JzLlJhbmdlRXJyb3JFbnVtLlJhbmdlRXJyb3JIABJr", - "ChRyZWNvbW1lbmRhdGlvbl9lcnJvchg6IAEoDjJLLmdvb2dsZS5hZHMuZ29v", - "Z2xlYWRzLnYyLmVycm9ycy5SZWNvbW1lbmRhdGlvbkVycm9yRW51bS5SZWNv", - "bW1lbmRhdGlvbkVycm9ySAASYAoRcmVnaW9uX2NvZGVfZXJyb3IYMyABKA4y", - "Qy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuUmVnaW9uQ29kZUVy", - "cm9yRW51bS5SZWdpb25Db2RlRXJyb3JIABJWCg1zZXR0aW5nX2Vycm9yGDQg", - "ASgOMj0uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlNldHRpbmdF", - "cnJvckVudW0uU2V0dGluZ0Vycm9ySAASZgoTc3RyaW5nX2Zvcm1hdF9lcnJv", - "chg1IAEoDjJHLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5TdHJp", - "bmdGb3JtYXRFcnJvckVudW0uU3RyaW5nRm9ybWF0RXJyb3JIABJmChNzdHJp", - "bmdfbGVuZ3RoX2Vycm9yGDYgASgOMkcuZ29vZ2xlLmFkcy5nb29nbGVhZHMu", - "djIuZXJyb3JzLlN0cmluZ0xlbmd0aEVycm9yRW51bS5TdHJpbmdMZW5ndGhF", - "cnJvckgAEoIBCh1vcGVyYXRpb25fYWNjZXNzX2RlbmllZF9lcnJvchg3IAEo", - "DjJZLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5PcGVyYXRpb25B", - "Y2Nlc3NEZW5pZWRFcnJvckVudW0uT3BlcmF0aW9uQWNjZXNzRGVuaWVkRXJy", - "b3JIABJ/ChxyZXNvdXJjZV9hY2Nlc3NfZGVuaWVkX2Vycm9yGDggASgOMlcu", - "Z29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlJlc291cmNlQWNjZXNz", - "RGVuaWVkRXJyb3JFbnVtLlJlc291cmNlQWNjZXNzRGVuaWVkRXJyb3JIABKS", - "AQojcmVzb3VyY2VfY291bnRfbGltaXRfZXhjZWVkZWRfZXJyb3IYOSABKA4y", - "Yy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuUmVzb3VyY2VDb3Vu", - "dExpbWl0RXhjZWVkZWRFcnJvckVudW0uUmVzb3VyY2VDb3VudExpbWl0RXhj", - "ZWVkZWRFcnJvckgAEosBCiB5b3V0dWJlX3ZpZGVvX3JlZ2lzdHJhdGlvbl9l", - "cnJvchh1IAEoDjJfLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Z", - "b3V0dWJlVmlkZW9SZWdpc3RyYXRpb25FcnJvckVudW0uWW91dHViZVZpZGVv", - "UmVnaXN0cmF0aW9uRXJyb3JIABJ6ChthZF9ncm91cF9iaWRfbW9kaWZpZXJf", - "ZXJyb3IYOyABKA4yUy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMu", - "QWRHcm91cEJpZE1vZGlmaWVyRXJyb3JFbnVtLkFkR3JvdXBCaWRNb2RpZmll", - "ckVycm9ySAASVgoNY29udGV4dF9lcnJvchg8IAEoDjI9Lmdvb2dsZS5hZHMu", - "Z29vZ2xlYWRzLnYyLmVycm9ycy5Db250ZXh0RXJyb3JFbnVtLkNvbnRleHRF", - "cnJvckgAElAKC2ZpZWxkX2Vycm9yGD0gASgOMjkuZ29vZ2xlLmFkcy5nb29n", - "bGVhZHMudjIuZXJyb3JzLkZpZWxkRXJyb3JFbnVtLkZpZWxkRXJyb3JIABJd", - "ChBzaGFyZWRfc2V0X2Vycm9yGD4gASgOMkEuZ29vZ2xlLmFkcy5nb29nbGVh", - "ZHMudjIuZXJyb3JzLlNoYXJlZFNldEVycm9yRW51bS5TaGFyZWRTZXRFcnJv", - "ckgAEm8KFnNoYXJlZF9jcml0ZXJpb25fZXJyb3IYPyABKA4yTS5nb29nbGUu", - "YWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuU2hhcmVkQ3JpdGVyaW9uRXJyb3JF", - "bnVtLlNoYXJlZENyaXRlcmlvbkVycm9ySAASdgoZY2FtcGFpZ25fc2hhcmVk", - "X3NldF9lcnJvchhAIAEoDjJRLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVy", - "cm9ycy5DYW1wYWlnblNoYXJlZFNldEVycm9yRW51bS5DYW1wYWlnblNoYXJl", - "ZFNldEVycm9ySAAScgoXY29udmVyc2lvbl9hY3Rpb25fZXJyb3IYQSABKA4y", - "Ty5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ29udmVyc2lvbkFj", - "dGlvbkVycm9yRW51bS5Db252ZXJzaW9uQWN0aW9uRXJyb3JIABKRAQoiY29u", - "dmVyc2lvbl9hZGp1c3RtZW50X3VwbG9hZF9lcnJvchhzIAEoDjJjLmdvb2ds", - "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Db252ZXJzaW9uQWRqdXN0bWVu", - "dFVwbG9hZEVycm9yRW51bS5Db252ZXJzaW9uQWRqdXN0bWVudFVwbG9hZEVy", - "cm9ySAAScgoXY29udmVyc2lvbl91cGxvYWRfZXJyb3IYbyABKA4yTy5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ29udmVyc2lvblVwbG9hZEVy", - "cm9yRW51bS5Db252ZXJzaW9uVXBsb2FkRXJyb3JIABJTCgxoZWFkZXJfZXJy", - "b3IYQiABKA4yOy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuSGVh", - "ZGVyRXJyb3JFbnVtLkhlYWRlckVycm9ySAASWQoOZGF0YWJhc2VfZXJyb3IY", - "QyABKA4yPy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuRGF0YWJh", - "c2VFcnJvckVudW0uRGF0YWJhc2VFcnJvckgAEmkKFHBvbGljeV9maW5kaW5n", - "X2Vycm9yGEQgASgOMkkuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", - "LlBvbGljeUZpbmRpbmdFcnJvckVudW0uUG9saWN5RmluZGluZ0Vycm9ySAAS", - "TQoKZW51bV9lcnJvchhGIAEoDjI3Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", - "LmVycm9ycy5FbnVtRXJyb3JFbnVtLkVudW1FcnJvckgAEmMKEmtleXdvcmRf", - "cGxhbl9lcnJvchhHIAEoDjJFLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVy", - "cm9ycy5LZXl3b3JkUGxhbkVycm9yRW51bS5LZXl3b3JkUGxhbkVycm9ySAAS", - "fAoba2V5d29yZF9wbGFuX2NhbXBhaWduX2Vycm9yGEggASgOMlUuZ29vZ2xl", - "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLktleXdvcmRQbGFuQ2FtcGFpZ25F", - "cnJvckVudW0uS2V5d29yZFBsYW5DYW1wYWlnbkVycm9ySAASkgEKI2tleXdv", - "cmRfcGxhbl9uZWdhdGl2ZV9rZXl3b3JkX2Vycm9yGEkgASgOMmMuZ29vZ2xl", - "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLktleXdvcmRQbGFuTmVnYXRpdmVL", - "ZXl3b3JkRXJyb3JFbnVtLktleXdvcmRQbGFuTmVnYXRpdmVLZXl3b3JkRXJy", - "b3JIABJ6ChtrZXl3b3JkX3BsYW5fYWRfZ3JvdXBfZXJyb3IYSiABKA4yUy5n", - "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuS2V5d29yZFBsYW5BZEdy", - "b3VwRXJyb3JFbnVtLktleXdvcmRQbGFuQWRHcm91cEVycm9ySAASeQoaa2V5", - "d29yZF9wbGFuX2tleXdvcmRfZXJyb3IYSyABKA4yUy5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5lcnJvcnMuS2V5d29yZFBsYW5LZXl3b3JkRXJyb3JFbnVt", - "LktleXdvcmRQbGFuS2V5d29yZEVycm9ySAAScAoXa2V5d29yZF9wbGFuX2lk", - "ZWFfZXJyb3IYTCABKA4yTS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJv", - "cnMuS2V5d29yZFBsYW5JZGVhRXJyb3JFbnVtLktleXdvcmRQbGFuSWRlYUVy", - "cm9ySAASggEKHWFjY291bnRfYnVkZ2V0X3Byb3Bvc2FsX2Vycm9yGE0gASgO", - "MlkuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkFjY291bnRCdWRn", - "ZXRQcm9wb3NhbEVycm9yRW51bS5BY2NvdW50QnVkZ2V0UHJvcG9zYWxFcnJv", - "ckgAEloKD3VzZXJfbGlzdF9lcnJvchhOIAEoDjI/Lmdvb2dsZS5hZHMuZ29v", - "Z2xlYWRzLnYyLmVycm9ycy5Vc2VyTGlzdEVycm9yRW51bS5Vc2VyTGlzdEVy", - "cm9ySAASZgoTY2hhbmdlX3N0YXR1c19lcnJvchhPIAEoDjJHLmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5DaGFuZ2VTdGF0dXNFcnJvckVudW0u", - "Q2hhbmdlU3RhdHVzRXJyb3JIABJNCgpmZWVkX2Vycm9yGFAgASgOMjcuZ29v", - "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkZlZWRFcnJvckVudW0uRmVl", - "ZEVycm9ySAASlQEKJGdlb190YXJnZXRfY29uc3RhbnRfc3VnZ2VzdGlvbl9l", - "cnJvchhRIAEoDjJlLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5H", - "ZW9UYXJnZXRDb25zdGFudFN1Z2dlc3Rpb25FcnJvckVudW0uR2VvVGFyZ2V0", - "Q29uc3RhbnRTdWdnZXN0aW9uRXJyb3JIABJpChRjYW1wYWlnbl9kcmFmdF9l", - "cnJvchhSIAEoDjJJLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5D", - "YW1wYWlnbkRyYWZ0RXJyb3JFbnVtLkNhbXBhaWduRHJhZnRFcnJvckgAEloK", - "D2ZlZWRfaXRlbV9lcnJvchhTIAEoDjI/Lmdvb2dsZS5hZHMuZ29vZ2xlYWRz", - "LnYyLmVycm9ycy5GZWVkSXRlbUVycm9yRW51bS5GZWVkSXRlbUVycm9ySAAS", - "UAoLbGFiZWxfZXJyb3IYVCABKA4yOS5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5lcnJvcnMuTGFiZWxFcnJvckVudW0uTGFiZWxFcnJvckgAEmYKE2JpbGxp", - "bmdfc2V0dXBfZXJyb3IYVyABKA4yRy5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5lcnJvcnMuQmlsbGluZ1NldHVwRXJyb3JFbnVtLkJpbGxpbmdTZXR1cEVy", - "cm9ySAASeQoaY3VzdG9tZXJfY2xpZW50X2xpbmtfZXJyb3IYWCABKA4yUy5n", - "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ3VzdG9tZXJDbGllbnRM", - "aW5rRXJyb3JFbnVtLkN1c3RvbWVyQ2xpZW50TGlua0Vycm9ySAASfAobY3Vz", - "dG9tZXJfbWFuYWdlcl9saW5rX2Vycm9yGFsgASgOMlUuZ29vZ2xlLmFkcy5n", - "b29nbGVhZHMudjIuZXJyb3JzLkN1c3RvbWVyTWFuYWdlckxpbmtFcnJvckVu", - "dW0uQ3VzdG9tZXJNYW5hZ2VyTGlua0Vycm9ySAASYwoSZmVlZF9tYXBwaW5n", - "X2Vycm9yGFwgASgOMkUuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", - "LkZlZWRNYXBwaW5nRXJyb3JFbnVtLkZlZWRNYXBwaW5nRXJyb3JIABJmChNj", - "dXN0b21lcl9mZWVkX2Vycm9yGF0gASgOMkcuZ29vZ2xlLmFkcy5nb29nbGVh", - "ZHMudjIuZXJyb3JzLkN1c3RvbWVyRmVlZEVycm9yRW51bS5DdXN0b21lckZl", - "ZWRFcnJvckgAEmQKE2FkX2dyb3VwX2ZlZWRfZXJyb3IYXiABKA4yRS5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQWRHcm91cEZlZWRFcnJvckVu", - "dW0uQWRHcm91cEZlZWRFcnJvckgAEmYKE2NhbXBhaWduX2ZlZWRfZXJyb3IY", - "YCABKA4yRy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ2FtcGFp", - "Z25GZWVkRXJyb3JFbnVtLkNhbXBhaWduRmVlZEVycm9ySAASbAoVY3VzdG9t", - "X2ludGVyZXN0X2Vycm9yGGEgASgOMksuZ29vZ2xlLmFkcy5nb29nbGVhZHMu", - "djIuZXJyb3JzLkN1c3RvbUludGVyZXN0RXJyb3JFbnVtLkN1c3RvbUludGVy", - "ZXN0RXJyb3JIABJ4ChljYW1wYWlnbl9leHBlcmltZW50X2Vycm9yGGIgASgO", - "MlMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkNhbXBhaWduRXhw", - "ZXJpbWVudEVycm9yRW51bS5DYW1wYWlnbkV4cGVyaW1lbnRFcnJvckgAEnYK", - "GWV4dGVuc2lvbl9mZWVkX2l0ZW1fZXJyb3IYZCABKA4yUS5nb29nbGUuYWRz", - "Lmdvb2dsZWFkcy52Mi5lcnJvcnMuRXh0ZW5zaW9uRmVlZEl0ZW1FcnJvckVu", - "dW0uRXh0ZW5zaW9uRmVlZEl0ZW1FcnJvckgAEmMKEmFkX3BhcmFtZXRlcl9l", - "cnJvchhlIAEoDjJFLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5B", - "ZFBhcmFtZXRlckVycm9yRW51bS5BZFBhcmFtZXRlckVycm9ySAASeQoaZmVl", - "ZF9pdGVtX3ZhbGlkYXRpb25fZXJyb3IYZiABKA4yUy5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5lcnJvcnMuRmVlZEl0ZW1WYWxpZGF0aW9uRXJyb3JFbnVt", - "LkZlZWRJdGVtVmFsaWRhdGlvbkVycm9ySAAScgoXZXh0ZW5zaW9uX3NldHRp", - "bmdfZXJyb3IYZyABKA4yTy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJv", - "cnMuRXh0ZW5zaW9uU2V0dGluZ0Vycm9yRW51bS5FeHRlbnNpb25TZXR0aW5n", - "RXJyb3JIABJtChZmZWVkX2l0ZW1fdGFyZ2V0X2Vycm9yGGggASgOMksuZ29v", - "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkZlZWRJdGVtVGFyZ2V0RXJy", - "b3JFbnVtLkZlZWRJdGVtVGFyZ2V0RXJyb3JIABJvChZwb2xpY3lfdmlvbGF0", - "aW9uX2Vycm9yGGkgASgOMk0uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJy", - "b3JzLlBvbGljeVZpb2xhdGlvbkVycm9yRW51bS5Qb2xpY3lWaW9sYXRpb25F", - "cnJvckgAEl0KEG11dGF0ZV9qb2JfZXJyb3IYbCABKA4yQS5nb29nbGUuYWRz", - "Lmdvb2dsZWFkcy52Mi5lcnJvcnMuTXV0YXRlSm9iRXJyb3JFbnVtLk11dGF0", - "ZUpvYkVycm9ySAASbAoVcGFydGlhbF9mYWlsdXJlX2Vycm9yGHAgASgOMksu", - "Z29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlBhcnRpYWxGYWlsdXJl", - "RXJyb3JFbnVtLlBhcnRpYWxGYWlsdXJlRXJyb3JIABKOAQohcG9saWN5X3Zh", - "bGlkYXRpb25fcGFyYW1ldGVyX2Vycm9yGHIgASgOMmEuZ29vZ2xlLmFkcy5n", - "b29nbGVhZHMudjIuZXJyb3JzLlBvbGljeVZhbGlkYXRpb25QYXJhbWV0ZXJF", - "cnJvckVudW0uUG9saWN5VmFsaWRhdGlvblBhcmFtZXRlckVycm9ySAASXQoQ", - "c2l6ZV9saW1pdF9lcnJvchh2IAEoDjJBLmdvb2dsZS5hZHMuZ29vZ2xlYWRz", - "LnYyLmVycm9ycy5TaXplTGltaXRFcnJvckVudW0uU2l6ZUxpbWl0RXJyb3JI", - "ABJsChVub3Rfd2hpdGVsaXN0ZWRfZXJyb3IYeCABKA4ySy5nb29nbGUuYWRz", - "Lmdvb2dsZWFkcy52Mi5lcnJvcnMuTm90V2hpdGVsaXN0ZWRFcnJvckVudW0u", - "Tm90V2hpdGVsaXN0ZWRFcnJvckgAEmMKEm1hbmFnZXJfbGlua19lcnJvchh5", - "IAEoDjJFLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5NYW5hZ2Vy", - "TGlua0Vycm9yRW51bS5NYW5hZ2VyTGlua0Vycm9ySAASZgoTY3VycmVuY3lf", - "Y29kZV9lcnJvchh6IAEoDjJHLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVy", - "cm9ycy5DdXJyZW5jeUNvZGVFcnJvckVudW0uQ3VycmVuY3lDb2RlRXJyb3JI", - "ABJyChdhY2Nlc3NfaW52aXRhdGlvbl9lcnJvchh8IAEoDjJPLmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5BY2Nlc3NJbnZpdGF0aW9uRXJyb3JF", - "bnVtLkFjY2Vzc0ludml0YXRpb25FcnJvckgAEl0KEHJlYWNoX3BsYW5fZXJy", - "b3IYfSABKA4yQS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuUmVh", - "Y2hQbGFuRXJyb3JFbnVtLlJlYWNoUGxhbkVycm9ySABCDAoKZXJyb3JfY29k", - "ZSLAAQoNRXJyb3JMb2NhdGlvbhJbChNmaWVsZF9wYXRoX2VsZW1lbnRzGAIg", - "AygLMj4uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkVycm9yTG9j", - "YXRpb24uRmllbGRQYXRoRWxlbWVudBpSChBGaWVsZFBhdGhFbGVtZW50EhIK", - "CmZpZWxkX25hbWUYASABKAkSKgoFaW5kZXgYAiABKAsyGy5nb29nbGUucHJv", - "dG9idWYuSW50NjRWYWx1ZSLeAQoMRXJyb3JEZXRhaWxzEh4KFnVucHVibGlz", - "aGVkX2Vycm9yX2NvZGUYASABKAkSWAoYcG9saWN5X3Zpb2xhdGlvbl9kZXRh", - "aWxzGAIgASgLMjYuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlBv", - "bGljeVZpb2xhdGlvbkRldGFpbHMSVAoWcG9saWN5X2ZpbmRpbmdfZGV0YWls", - "cxgDIAEoCzI0Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Qb2xp", - "Y3lGaW5kaW5nRGV0YWlscyKzAQoWUG9saWN5VmlvbGF0aW9uRGV0YWlscxIj", - "ChtleHRlcm5hbF9wb2xpY3lfZGVzY3JpcHRpb24YAiABKAkSPwoDa2V5GAQg", - "ASgLMjIuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlBvbGljeVZp", - "b2xhdGlvbktleRIcChRleHRlcm5hbF9wb2xpY3lfbmFtZRgFIAEoCRIVCg1p", - "c19leGVtcHRpYmxlGAYgASgIImYKFFBvbGljeUZpbmRpbmdEZXRhaWxzEk4K", - "FHBvbGljeV90b3BpY19lbnRyaWVzGAEgAygLMjAuZ29vZ2xlLmFkcy5nb29n", - "bGVhZHMudjIuY29tbW9uLlBvbGljeVRvcGljRW50cnlC5gEKImNvbS5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnNCC0Vycm9yc1Byb3RvUAFaRGdv", - "b2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYWRzL2dvb2ds", - "ZWFkcy92Mi9lcnJvcnM7ZXJyb3JzogIDR0FBqgIeR29vZ2xlLkFkcy5Hb29n", - "bGVBZHMuVjIuRXJyb3JzygIeR29vZ2xlXEFkc1xHb29nbGVBZHNcVjJcRXJy", - "b3Jz6gIiR29vZ2xlOjpBZHM6Okdvb2dsZUFkczo6VjI6OkVycm9yc2IGcHJv", - "dG8z")); + "Mmdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9pbnZvaWNlX2Vycm9y", + "LnByb3RvGkBnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMva2V5d29y", + "ZF9wbGFuX2FkX2dyb3VwX2Vycm9yLnByb3RvGkBnb29nbGUvYWRzL2dvb2ds", + "ZWFkcy92Mi9lcnJvcnMva2V5d29yZF9wbGFuX2NhbXBhaWduX2Vycm9yLnBy", + "b3RvGjdnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMva2V5d29yZF9w", + "bGFuX2Vycm9yLnByb3RvGjxnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJv", + "cnMva2V5d29yZF9wbGFuX2lkZWFfZXJyb3IucHJvdG8aP2dvb2dsZS9hZHMv", + "Z29vZ2xlYWRzL3YyL2Vycm9ycy9rZXl3b3JkX3BsYW5fa2V5d29yZF9lcnJv", + "ci5wcm90bxpIZ29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL2tleXdv", + "cmRfcGxhbl9uZWdhdGl2ZV9rZXl3b3JkX2Vycm9yLnByb3RvGjBnb29nbGUv", + "YWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvbGFiZWxfZXJyb3IucHJvdG8aOGdv", + "b2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9sYW5ndWFnZV9jb2RlX2Vy", + "cm9yLnByb3RvGjlnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvbGlz", + "dF9vcGVyYXRpb25fZXJyb3IucHJvdG8aN2dvb2dsZS9hZHMvZ29vZ2xlYWRz", + "L3YyL2Vycm9ycy9tYW5hZ2VyX2xpbmtfZXJyb3IucHJvdG8aN2dvb2dsZS9h", + "ZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9tZWRpYV9idW5kbGVfZXJyb3IucHJv", + "dG8aNWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9tZWRpYV9maWxl", + "X2Vycm9yLnByb3RvGjdnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMv", + "bWVkaWFfdXBsb2FkX2Vycm9yLnByb3RvGjVnb29nbGUvYWRzL2dvb2dsZWFk", + "cy92Mi9lcnJvcnMvbXVsdGlwbGllcl9lcnJvci5wcm90bxoxZ29vZ2xlL2Fk", + "cy9nb29nbGVhZHMvdjIvZXJyb3JzL211dGF0ZV9lcnJvci5wcm90bxo1Z29v", + "Z2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL211dGF0ZV9qb2JfZXJyb3Iu", + "cHJvdG8aQGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9uZXdfcmVz", + "b3VyY2VfY3JlYXRpb25fZXJyb3IucHJvdG8aNGdvb2dsZS9hZHMvZ29vZ2xl", + "YWRzL3YyL2Vycm9ycy9ub3RfZW1wdHlfZXJyb3IucHJvdG8aOmdvb2dsZS9h", + "ZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9ub3Rfd2hpdGVsaXN0ZWRfZXJyb3Iu", + "cHJvdG8aL2dvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9udWxsX2Vy", + "cm9yLnByb3RvGkJnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvb3Bl", + "cmF0aW9uX2FjY2Vzc19kZW5pZWRfZXJyb3IucHJvdG8aM2dvb2dsZS9hZHMv", + "Z29vZ2xlYWRzL3YyL2Vycm9ycy9vcGVyYXRvcl9lcnJvci5wcm90bxo6Z29v", + "Z2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3BhcnRpYWxfZmFpbHVyZV9l", + "cnJvci5wcm90bxo5Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3Bv", + "bGljeV9maW5kaW5nX2Vycm9yLnByb3RvGkZnb29nbGUvYWRzL2dvb2dsZWFk", + "cy92Mi9lcnJvcnMvcG9saWN5X3ZhbGlkYXRpb25fcGFyYW1ldGVyX2Vycm9y", + "LnByb3RvGjtnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvcG9saWN5", + "X3Zpb2xhdGlvbl9lcnJvci5wcm90bxowZ29vZ2xlL2Fkcy9nb29nbGVhZHMv", + "djIvZXJyb3JzL3F1ZXJ5X2Vycm9yLnByb3RvGjBnb29nbGUvYWRzL2dvb2ds", + "ZWFkcy92Mi9lcnJvcnMvcXVvdGFfZXJyb3IucHJvdG8aMGdvb2dsZS9hZHMv", + "Z29vZ2xlYWRzL3YyL2Vycm9ycy9yYW5nZV9lcnJvci5wcm90bxo1Z29vZ2xl", + "L2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3JlYWNoX3BsYW5fZXJyb3IucHJv", + "dG8aOWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9yZWNvbW1lbmRh", + "dGlvbl9lcnJvci5wcm90bxo2Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJy", + "b3JzL3JlZ2lvbl9jb2RlX2Vycm9yLnByb3RvGjJnb29nbGUvYWRzL2dvb2ds", + "ZWFkcy92Mi9lcnJvcnMvcmVxdWVzdF9lcnJvci5wcm90bxpBZ29vZ2xlL2Fk", + "cy9nb29nbGVhZHMvdjIvZXJyb3JzL3Jlc291cmNlX2FjY2Vzc19kZW5pZWRf", + "ZXJyb3IucHJvdG8aSGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9y", + "ZXNvdXJjZV9jb3VudF9saW1pdF9leGNlZWRlZF9lcnJvci5wcm90bxoyZ29v", + "Z2xlL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3NldHRpbmdfZXJyb3IucHJv", + "dG8aO2dvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9zaGFyZWRfY3Jp", + "dGVyaW9uX2Vycm9yLnByb3RvGjVnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9l", + "cnJvcnMvc2hhcmVkX3NldF9lcnJvci5wcm90bxo1Z29vZ2xlL2Fkcy9nb29n", + "bGVhZHMvdjIvZXJyb3JzL3NpemVfbGltaXRfZXJyb3IucHJvdG8aOGdvb2ds", + "ZS9hZHMvZ29vZ2xlYWRzL3YyL2Vycm9ycy9zdHJpbmdfZm9ybWF0X2Vycm9y", + "LnByb3RvGjhnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvc3RyaW5n", + "X2xlbmd0aF9lcnJvci5wcm90bxo0Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIv", + "ZXJyb3JzL3VybF9maWVsZF9lcnJvci5wcm90bxo0Z29vZ2xlL2Fkcy9nb29n", + "bGVhZHMvdjIvZXJyb3JzL3VzZXJfbGlzdF9lcnJvci5wcm90bxpFZ29vZ2xl", + "L2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzL3lvdXR1YmVfdmlkZW9fcmVnaXN0", + "cmF0aW9uX2Vycm9yLnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMu", + "cHJvdG8aHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8iUgoQR29vZ2xl", + "QWRzRmFpbHVyZRI+CgZlcnJvcnMYASADKAsyLi5nb29nbGUuYWRzLmdvb2ds", + "ZWFkcy52Mi5lcnJvcnMuR29vZ2xlQWRzRXJyb3IimAIKDkdvb2dsZUFkc0Vy", + "cm9yEj0KCmVycm9yX2NvZGUYASABKAsyKS5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lcnJvcnMuRXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSNgoHdHJp", + "Z2dlchgDIAEoCzIlLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5W", + "YWx1ZRI/Cghsb2NhdGlvbhgEIAEoCzItLmdvb2dsZS5hZHMuZ29vZ2xlYWRz", + "LnYyLmVycm9ycy5FcnJvckxvY2F0aW9uEj0KB2RldGFpbHMYBSABKAsyLC5n", + "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuRXJyb3JEZXRhaWxzIsRW", + "CglFcnJvckNvZGUSVgoNcmVxdWVzdF9lcnJvchgBIAEoDjI9Lmdvb2dsZS5h", + "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5SZXF1ZXN0RXJyb3JFbnVtLlJlcXVl", + "c3RFcnJvckgAEm8KFmJpZGRpbmdfc3RyYXRlZ3lfZXJyb3IYAiABKA4yTS5n", + "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQmlkZGluZ1N0cmF0ZWd5", + "RXJyb3JFbnVtLkJpZGRpbmdTdHJhdGVneUVycm9ySAASWgoPdXJsX2ZpZWxk", + "X2Vycm9yGAMgASgOMj8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", + "LlVybEZpZWxkRXJyb3JFbnVtLlVybEZpZWxkRXJyb3JIABJpChRsaXN0X29w", + "ZXJhdGlvbl9lcnJvchgEIAEoDjJJLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", + "LmVycm9ycy5MaXN0T3BlcmF0aW9uRXJyb3JFbnVtLkxpc3RPcGVyYXRpb25F", + "cnJvckgAElAKC3F1ZXJ5X2Vycm9yGAUgASgOMjkuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuZXJyb3JzLlF1ZXJ5RXJyb3JFbnVtLlF1ZXJ5RXJyb3JIABJT", + "CgxtdXRhdGVfZXJyb3IYByABKA4yOy5nb29nbGUuYWRzLmdvb2dsZWFkcy52", + "Mi5lcnJvcnMuTXV0YXRlRXJyb3JFbnVtLk11dGF0ZUVycm9ySAASXQoQZmll", + "bGRfbWFza19lcnJvchgIIAEoDjJBLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", + "LmVycm9ycy5GaWVsZE1hc2tFcnJvckVudW0uRmllbGRNYXNrRXJyb3JIABJo", + "ChNhdXRob3JpemF0aW9uX2Vycm9yGAkgASgOMkkuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuZXJyb3JzLkF1dGhvcml6YXRpb25FcnJvckVudW0uQXV0aG9y", + "aXphdGlvbkVycm9ySAASWQoOaW50ZXJuYWxfZXJyb3IYCiABKA4yPy5nb29n", + "bGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuSW50ZXJuYWxFcnJvckVudW0u", + "SW50ZXJuYWxFcnJvckgAElAKC3F1b3RhX2Vycm9yGAsgASgOMjkuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlF1b3RhRXJyb3JFbnVtLlF1b3Rh", + "RXJyb3JIABJHCghhZF9lcnJvchgMIAEoDjIzLmdvb2dsZS5hZHMuZ29vZ2xl", + "YWRzLnYyLmVycm9ycy5BZEVycm9yRW51bS5BZEVycm9ySAASVwoOYWRfZ3Jv", + "dXBfZXJyb3IYDSABKA4yPS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJv", + "cnMuQWRHcm91cEVycm9yRW51bS5BZEdyb3VwRXJyb3JIABJsChVjYW1wYWln", + "bl9idWRnZXRfZXJyb3IYDiABKA4ySy5nb29nbGUuYWRzLmdvb2dsZWFkcy52", + "Mi5lcnJvcnMuQ2FtcGFpZ25CdWRnZXRFcnJvckVudW0uQ2FtcGFpZ25CdWRn", + "ZXRFcnJvckgAElkKDmNhbXBhaWduX2Vycm9yGA8gASgOMj8uZ29vZ2xlLmFk", + "cy5nb29nbGVhZHMudjIuZXJyb3JzLkNhbXBhaWduRXJyb3JFbnVtLkNhbXBh", + "aWduRXJyb3JIABJrChRhdXRoZW50aWNhdGlvbl9lcnJvchgRIAEoDjJLLmdv", + "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5BdXRoZW50aWNhdGlvbkVy", + "cm9yRW51bS5BdXRoZW50aWNhdGlvbkVycm9ySAAScwoYYWRfZ3JvdXBfY3Jp", + "dGVyaW9uX2Vycm9yGBIgASgOMk8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIu", + "ZXJyb3JzLkFkR3JvdXBDcml0ZXJpb25FcnJvckVudW0uQWRHcm91cENyaXRl", + "cmlvbkVycm9ySAASZgoTYWRfY3VzdG9taXplcl9lcnJvchgTIAEoDjJHLmdv", + "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5BZEN1c3RvbWl6ZXJFcnJv", + "ckVudW0uQWRDdXN0b21pemVyRXJyb3JIABJeChFhZF9ncm91cF9hZF9lcnJv", + "chgVIAEoDjJBLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5BZEdy", + "b3VwQWRFcnJvckVudW0uQWRHcm91cEFkRXJyb3JIABJdChBhZF9zaGFyaW5n", + "X2Vycm9yGBggASgOMkEuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", + "LkFkU2hhcmluZ0Vycm9yRW51bS5BZFNoYXJpbmdFcnJvckgAEkoKCWFkeF9l", + "cnJvchgZIAEoDjI1Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5B", + "ZHhFcnJvckVudW0uQWR4RXJyb3JIABJQCgthc3NldF9lcnJvchhrIAEoDjI5", + "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Bc3NldEVycm9yRW51", + "bS5Bc3NldEVycm9ySAASVgoNYmlkZGluZ19lcnJvchgaIAEoDjI9Lmdvb2ds", + "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5CaWRkaW5nRXJyb3JFbnVtLkJp", + "ZGRpbmdFcnJvckgAEnUKGGNhbXBhaWduX2NyaXRlcmlvbl9lcnJvchgdIAEo", + "DjJRLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5DYW1wYWlnbkNy", + "aXRlcmlvbkVycm9yRW51bS5DYW1wYWlnbkNyaXRlcmlvbkVycm9ySAASbAoV", + "Y29sbGVjdGlvbl9zaXplX2Vycm9yGB8gASgOMksuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuZXJyb3JzLkNvbGxlY3Rpb25TaXplRXJyb3JFbnVtLkNvbGxl", + "Y3Rpb25TaXplRXJyb3JIABJjChJjb3VudHJ5X2NvZGVfZXJyb3IYbSABKA4y", + "RS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ291bnRyeUNvZGVF", + "cnJvckVudW0uQ291bnRyeUNvZGVFcnJvckgAElwKD2NyaXRlcmlvbl9lcnJv", + "chggIAEoDjJBLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Dcml0", + "ZXJpb25FcnJvckVudW0uQ3JpdGVyaW9uRXJyb3JIABJZCg5jdXN0b21lcl9l", + "cnJvchhaIAEoDjI/Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5D", + "dXN0b21lckVycm9yRW51bS5DdXN0b21lckVycm9ySAASTQoKZGF0ZV9lcnJv", + "chghIAEoDjI3Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5EYXRl", + "RXJyb3JFbnVtLkRhdGVFcnJvckgAEl0KEGRhdGVfcmFuZ2VfZXJyb3IYIiAB", + "KA4yQS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuRGF0ZVJhbmdl", + "RXJyb3JFbnVtLkRhdGVSYW5nZUVycm9ySAASWQoOZGlzdGluY3RfZXJyb3IY", + "IyABKA4yPy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuRGlzdGlu", + "Y3RFcnJvckVudW0uRGlzdGluY3RFcnJvckgAEoUBCh5mZWVkX2F0dHJpYnV0", + "ZV9yZWZlcmVuY2VfZXJyb3IYJCABKA4yWy5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lcnJvcnMuRmVlZEF0dHJpYnV0ZVJlZmVyZW5jZUVycm9yRW51bS5G", + "ZWVkQXR0cmlidXRlUmVmZXJlbmNlRXJyb3JIABJZCg5mdW5jdGlvbl9lcnJv", + "chglIAEoDjI/Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5GdW5j", + "dGlvbkVycm9yRW51bS5GdW5jdGlvbkVycm9ySAASbwoWZnVuY3Rpb25fcGFy", + "c2luZ19lcnJvchgmIAEoDjJNLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVy", + "cm9ycy5GdW5jdGlvblBhcnNpbmdFcnJvckVudW0uRnVuY3Rpb25QYXJzaW5n", + "RXJyb3JIABJHCghpZF9lcnJvchgnIAEoDjIzLmdvb2dsZS5hZHMuZ29vZ2xl", + "YWRzLnYyLmVycm9ycy5JZEVycm9yRW51bS5JZEVycm9ySAASUAoLaW1hZ2Vf", + "ZXJyb3IYKCABKA4yOS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMu", + "SW1hZ2VFcnJvckVudW0uSW1hZ2VFcnJvckgAEmYKE2xhbmd1YWdlX2NvZGVf", + "ZXJyb3IYbiABKA4yRy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMu", + "TGFuZ3VhZ2VDb2RlRXJyb3JFbnVtLkxhbmd1YWdlQ29kZUVycm9ySAASYwoS", + "bWVkaWFfYnVuZGxlX2Vycm9yGCogASgOMkUuZ29vZ2xlLmFkcy5nb29nbGVh", + "ZHMudjIuZXJyb3JzLk1lZGlhQnVuZGxlRXJyb3JFbnVtLk1lZGlhQnVuZGxl", + "RXJyb3JIABJjChJtZWRpYV91cGxvYWRfZXJyb3IYdCABKA4yRS5nb29nbGUu", + "YWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuTWVkaWFVcGxvYWRFcnJvckVudW0u", + "TWVkaWFVcGxvYWRFcnJvckgAEl0KEG1lZGlhX2ZpbGVfZXJyb3IYViABKA4y", + "QS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuTWVkaWFGaWxlRXJy", + "b3JFbnVtLk1lZGlhRmlsZUVycm9ySAASXwoQbXVsdGlwbGllcl9lcnJvchgs", + "IAEoDjJDLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5NdWx0aXBs", + "aWVyRXJyb3JFbnVtLk11bHRpcGxpZXJFcnJvckgAEnwKG25ld19yZXNvdXJj", + "ZV9jcmVhdGlvbl9lcnJvchgtIAEoDjJVLmdvb2dsZS5hZHMuZ29vZ2xlYWRz", + "LnYyLmVycm9ycy5OZXdSZXNvdXJjZUNyZWF0aW9uRXJyb3JFbnVtLk5ld1Jl", + "c291cmNlQ3JlYXRpb25FcnJvckgAEloKD25vdF9lbXB0eV9lcnJvchguIAEo", + "DjI/Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Ob3RFbXB0eUVy", + "cm9yRW51bS5Ob3RFbXB0eUVycm9ySAASTQoKbnVsbF9lcnJvchgvIAEoDjI3", + "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5OdWxsRXJyb3JFbnVt", + "Lk51bGxFcnJvckgAElkKDm9wZXJhdG9yX2Vycm9yGDAgASgOMj8uZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLk9wZXJhdG9yRXJyb3JFbnVtLk9w", + "ZXJhdG9yRXJyb3JIABJQCgtyYW5nZV9lcnJvchgxIAEoDjI5Lmdvb2dsZS5h", + "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5SYW5nZUVycm9yRW51bS5SYW5nZUVy", + "cm9ySAASawoUcmVjb21tZW5kYXRpb25fZXJyb3IYOiABKA4ySy5nb29nbGUu", + "YWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuUmVjb21tZW5kYXRpb25FcnJvckVu", + "dW0uUmVjb21tZW5kYXRpb25FcnJvckgAEmAKEXJlZ2lvbl9jb2RlX2Vycm9y", + "GDMgASgOMkMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlJlZ2lv", + "bkNvZGVFcnJvckVudW0uUmVnaW9uQ29kZUVycm9ySAASVgoNc2V0dGluZ19l", + "cnJvchg0IAEoDjI9Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5T", + "ZXR0aW5nRXJyb3JFbnVtLlNldHRpbmdFcnJvckgAEmYKE3N0cmluZ19mb3Jt", + "YXRfZXJyb3IYNSABKA4yRy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJv", + "cnMuU3RyaW5nRm9ybWF0RXJyb3JFbnVtLlN0cmluZ0Zvcm1hdEVycm9ySAAS", + "ZgoTc3RyaW5nX2xlbmd0aF9lcnJvchg2IAEoDjJHLmdvb2dsZS5hZHMuZ29v", + "Z2xlYWRzLnYyLmVycm9ycy5TdHJpbmdMZW5ndGhFcnJvckVudW0uU3RyaW5n", + "TGVuZ3RoRXJyb3JIABKCAQodb3BlcmF0aW9uX2FjY2Vzc19kZW5pZWRfZXJy", + "b3IYNyABKA4yWS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuT3Bl", + "cmF0aW9uQWNjZXNzRGVuaWVkRXJyb3JFbnVtLk9wZXJhdGlvbkFjY2Vzc0Rl", + "bmllZEVycm9ySAASfwoccmVzb3VyY2VfYWNjZXNzX2RlbmllZF9lcnJvchg4", + "IAEoDjJXLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5SZXNvdXJj", + "ZUFjY2Vzc0RlbmllZEVycm9yRW51bS5SZXNvdXJjZUFjY2Vzc0RlbmllZEVy", + "cm9ySAASkgEKI3Jlc291cmNlX2NvdW50X2xpbWl0X2V4Y2VlZGVkX2Vycm9y", + "GDkgASgOMmMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlJlc291", + "cmNlQ291bnRMaW1pdEV4Y2VlZGVkRXJyb3JFbnVtLlJlc291cmNlQ291bnRM", + "aW1pdEV4Y2VlZGVkRXJyb3JIABKLAQogeW91dHViZV92aWRlb19yZWdpc3Ry", + "YXRpb25fZXJyb3IYdSABKA4yXy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", + "cnJvcnMuWW91dHViZVZpZGVvUmVnaXN0cmF0aW9uRXJyb3JFbnVtLllvdXR1", + "YmVWaWRlb1JlZ2lzdHJhdGlvbkVycm9ySAASegobYWRfZ3JvdXBfYmlkX21v", + "ZGlmaWVyX2Vycm9yGDsgASgOMlMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIu", + "ZXJyb3JzLkFkR3JvdXBCaWRNb2RpZmllckVycm9yRW51bS5BZEdyb3VwQmlk", + "TW9kaWZpZXJFcnJvckgAElYKDWNvbnRleHRfZXJyb3IYPCABKA4yPS5nb29n", + "bGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ29udGV4dEVycm9yRW51bS5D", + "b250ZXh0RXJyb3JIABJQCgtmaWVsZF9lcnJvchg9IAEoDjI5Lmdvb2dsZS5h", + "ZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5GaWVsZEVycm9yRW51bS5GaWVsZEVy", + "cm9ySAASXQoQc2hhcmVkX3NldF9lcnJvchg+IAEoDjJBLmdvb2dsZS5hZHMu", + "Z29vZ2xlYWRzLnYyLmVycm9ycy5TaGFyZWRTZXRFcnJvckVudW0uU2hhcmVk", + "U2V0RXJyb3JIABJvChZzaGFyZWRfY3JpdGVyaW9uX2Vycm9yGD8gASgOMk0u", + "Z29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLlNoYXJlZENyaXRlcmlv", + "bkVycm9yRW51bS5TaGFyZWRDcml0ZXJpb25FcnJvckgAEnYKGWNhbXBhaWdu", + "X3NoYXJlZF9zZXRfZXJyb3IYQCABKA4yUS5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lcnJvcnMuQ2FtcGFpZ25TaGFyZWRTZXRFcnJvckVudW0uQ2FtcGFp", + "Z25TaGFyZWRTZXRFcnJvckgAEnIKF2NvbnZlcnNpb25fYWN0aW9uX2Vycm9y", + "GEEgASgOMk8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkNvbnZl", + "cnNpb25BY3Rpb25FcnJvckVudW0uQ29udmVyc2lvbkFjdGlvbkVycm9ySAAS", + "kQEKImNvbnZlcnNpb25fYWRqdXN0bWVudF91cGxvYWRfZXJyb3IYcyABKA4y", + "Yy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ29udmVyc2lvbkFk", + "anVzdG1lbnRVcGxvYWRFcnJvckVudW0uQ29udmVyc2lvbkFkanVzdG1lbnRV", + "cGxvYWRFcnJvckgAEnIKF2NvbnZlcnNpb25fdXBsb2FkX2Vycm9yGG8gASgO", + "Mk8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkNvbnZlcnNpb25V", + "cGxvYWRFcnJvckVudW0uQ29udmVyc2lvblVwbG9hZEVycm9ySAASUwoMaGVh", + "ZGVyX2Vycm9yGEIgASgOMjsuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJy", + "b3JzLkhlYWRlckVycm9yRW51bS5IZWFkZXJFcnJvckgAElkKDmRhdGFiYXNl", + "X2Vycm9yGEMgASgOMj8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", + "LkRhdGFiYXNlRXJyb3JFbnVtLkRhdGFiYXNlRXJyb3JIABJpChRwb2xpY3lf", + "ZmluZGluZ19lcnJvchhEIAEoDjJJLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", + "LmVycm9ycy5Qb2xpY3lGaW5kaW5nRXJyb3JFbnVtLlBvbGljeUZpbmRpbmdF", + "cnJvckgAEk0KCmVudW1fZXJyb3IYRiABKA4yNy5nb29nbGUuYWRzLmdvb2ds", + "ZWFkcy52Mi5lcnJvcnMuRW51bUVycm9yRW51bS5FbnVtRXJyb3JIABJjChJr", + "ZXl3b3JkX3BsYW5fZXJyb3IYRyABKA4yRS5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lcnJvcnMuS2V5d29yZFBsYW5FcnJvckVudW0uS2V5d29yZFBsYW5F", + "cnJvckgAEnwKG2tleXdvcmRfcGxhbl9jYW1wYWlnbl9lcnJvchhIIAEoDjJV", + "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5LZXl3b3JkUGxhbkNh", + "bXBhaWduRXJyb3JFbnVtLktleXdvcmRQbGFuQ2FtcGFpZ25FcnJvckgAEpIB", + "CiNrZXl3b3JkX3BsYW5fbmVnYXRpdmVfa2V5d29yZF9lcnJvchhJIAEoDjJj", + "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5LZXl3b3JkUGxhbk5l", + "Z2F0aXZlS2V5d29yZEVycm9yRW51bS5LZXl3b3JkUGxhbk5lZ2F0aXZlS2V5", + "d29yZEVycm9ySAASegoba2V5d29yZF9wbGFuX2FkX2dyb3VwX2Vycm9yGEog", + "ASgOMlMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLktleXdvcmRQ", + "bGFuQWRHcm91cEVycm9yRW51bS5LZXl3b3JkUGxhbkFkR3JvdXBFcnJvckgA", + "EnkKGmtleXdvcmRfcGxhbl9rZXl3b3JkX2Vycm9yGEsgASgOMlMuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLktleXdvcmRQbGFuS2V5d29yZEVy", + "cm9yRW51bS5LZXl3b3JkUGxhbktleXdvcmRFcnJvckgAEnAKF2tleXdvcmRf", + "cGxhbl9pZGVhX2Vycm9yGEwgASgOMk0uZ29vZ2xlLmFkcy5nb29nbGVhZHMu", + "djIuZXJyb3JzLktleXdvcmRQbGFuSWRlYUVycm9yRW51bS5LZXl3b3JkUGxh", + "bklkZWFFcnJvckgAEoIBCh1hY2NvdW50X2J1ZGdldF9wcm9wb3NhbF9lcnJv", + "chhNIAEoDjJZLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5BY2Nv", + "dW50QnVkZ2V0UHJvcG9zYWxFcnJvckVudW0uQWNjb3VudEJ1ZGdldFByb3Bv", + "c2FsRXJyb3JIABJaCg91c2VyX2xpc3RfZXJyb3IYTiABKA4yPy5nb29nbGUu", + "YWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuVXNlckxpc3RFcnJvckVudW0uVXNl", + "ckxpc3RFcnJvckgAEmYKE2NoYW5nZV9zdGF0dXNfZXJyb3IYTyABKA4yRy5n", + "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQ2hhbmdlU3RhdHVzRXJy", + "b3JFbnVtLkNoYW5nZVN0YXR1c0Vycm9ySAASTQoKZmVlZF9lcnJvchhQIAEo", + "DjI3Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5GZWVkRXJyb3JF", + "bnVtLkZlZWRFcnJvckgAEpUBCiRnZW9fdGFyZ2V0X2NvbnN0YW50X3N1Z2dl", + "c3Rpb25fZXJyb3IYUSABKA4yZS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", + "cnJvcnMuR2VvVGFyZ2V0Q29uc3RhbnRTdWdnZXN0aW9uRXJyb3JFbnVtLkdl", + "b1RhcmdldENvbnN0YW50U3VnZ2VzdGlvbkVycm9ySAASaQoUY2FtcGFpZ25f", + "ZHJhZnRfZXJyb3IYUiABKA4ySS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", + "cnJvcnMuQ2FtcGFpZ25EcmFmdEVycm9yRW51bS5DYW1wYWlnbkRyYWZ0RXJy", + "b3JIABJaCg9mZWVkX2l0ZW1fZXJyb3IYUyABKA4yPy5nb29nbGUuYWRzLmdv", + "b2dsZWFkcy52Mi5lcnJvcnMuRmVlZEl0ZW1FcnJvckVudW0uRmVlZEl0ZW1F", + "cnJvckgAElAKC2xhYmVsX2Vycm9yGFQgASgOMjkuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuZXJyb3JzLkxhYmVsRXJyb3JFbnVtLkxhYmVsRXJyb3JIABJm", + "ChNiaWxsaW5nX3NldHVwX2Vycm9yGFcgASgOMkcuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuZXJyb3JzLkJpbGxpbmdTZXR1cEVycm9yRW51bS5CaWxsaW5n", + "U2V0dXBFcnJvckgAEnkKGmN1c3RvbWVyX2NsaWVudF9saW5rX2Vycm9yGFgg", + "ASgOMlMuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkN1c3RvbWVy", + "Q2xpZW50TGlua0Vycm9yRW51bS5DdXN0b21lckNsaWVudExpbmtFcnJvckgA", + "EnwKG2N1c3RvbWVyX21hbmFnZXJfbGlua19lcnJvchhbIAEoDjJVLmdvb2ds", + "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5DdXN0b21lck1hbmFnZXJMaW5r", + "RXJyb3JFbnVtLkN1c3RvbWVyTWFuYWdlckxpbmtFcnJvckgAEmMKEmZlZWRf", + "bWFwcGluZ19lcnJvchhcIAEoDjJFLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", + "LmVycm9ycy5GZWVkTWFwcGluZ0Vycm9yRW51bS5GZWVkTWFwcGluZ0Vycm9y", + "SAASZgoTY3VzdG9tZXJfZmVlZF9lcnJvchhdIAEoDjJHLmdvb2dsZS5hZHMu", + "Z29vZ2xlYWRzLnYyLmVycm9ycy5DdXN0b21lckZlZWRFcnJvckVudW0uQ3Vz", + "dG9tZXJGZWVkRXJyb3JIABJkChNhZF9ncm91cF9mZWVkX2Vycm9yGF4gASgO", + "MkUuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkFkR3JvdXBGZWVk", + "RXJyb3JFbnVtLkFkR3JvdXBGZWVkRXJyb3JIABJmChNjYW1wYWlnbl9mZWVk", + "X2Vycm9yGGAgASgOMkcuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", + "LkNhbXBhaWduRmVlZEVycm9yRW51bS5DYW1wYWlnbkZlZWRFcnJvckgAEmwK", + "FWN1c3RvbV9pbnRlcmVzdF9lcnJvchhhIAEoDjJLLmdvb2dsZS5hZHMuZ29v", + "Z2xlYWRzLnYyLmVycm9ycy5DdXN0b21JbnRlcmVzdEVycm9yRW51bS5DdXN0", + "b21JbnRlcmVzdEVycm9ySAASeAoZY2FtcGFpZ25fZXhwZXJpbWVudF9lcnJv", + "chhiIAEoDjJTLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5DYW1w", + "YWlnbkV4cGVyaW1lbnRFcnJvckVudW0uQ2FtcGFpZ25FeHBlcmltZW50RXJy", + "b3JIABJ2ChlleHRlbnNpb25fZmVlZF9pdGVtX2Vycm9yGGQgASgOMlEuZ29v", + "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkV4dGVuc2lvbkZlZWRJdGVt", + "RXJyb3JFbnVtLkV4dGVuc2lvbkZlZWRJdGVtRXJyb3JIABJjChJhZF9wYXJh", + "bWV0ZXJfZXJyb3IYZSABKA4yRS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", + "cnJvcnMuQWRQYXJhbWV0ZXJFcnJvckVudW0uQWRQYXJhbWV0ZXJFcnJvckgA", + "EnkKGmZlZWRfaXRlbV92YWxpZGF0aW9uX2Vycm9yGGYgASgOMlMuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLkZlZWRJdGVtVmFsaWRhdGlvbkVy", + "cm9yRW51bS5GZWVkSXRlbVZhbGlkYXRpb25FcnJvckgAEnIKF2V4dGVuc2lv", + "bl9zZXR0aW5nX2Vycm9yGGcgASgOMk8uZ29vZ2xlLmFkcy5nb29nbGVhZHMu", + "djIuZXJyb3JzLkV4dGVuc2lvblNldHRpbmdFcnJvckVudW0uRXh0ZW5zaW9u", + "U2V0dGluZ0Vycm9ySAASbQoWZmVlZF9pdGVtX3RhcmdldF9lcnJvchhoIAEo", + "DjJLLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5GZWVkSXRlbVRh", + "cmdldEVycm9yRW51bS5GZWVkSXRlbVRhcmdldEVycm9ySAASbwoWcG9saWN5", + "X3Zpb2xhdGlvbl9lcnJvchhpIAEoDjJNLmdvb2dsZS5hZHMuZ29vZ2xlYWRz", + "LnYyLmVycm9ycy5Qb2xpY3lWaW9sYXRpb25FcnJvckVudW0uUG9saWN5Vmlv", + "bGF0aW9uRXJyb3JIABJdChBtdXRhdGVfam9iX2Vycm9yGGwgASgOMkEuZ29v", + "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLk11dGF0ZUpvYkVycm9yRW51", + "bS5NdXRhdGVKb2JFcnJvckgAEmwKFXBhcnRpYWxfZmFpbHVyZV9lcnJvchhw", + "IAEoDjJLLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5QYXJ0aWFs", + "RmFpbHVyZUVycm9yRW51bS5QYXJ0aWFsRmFpbHVyZUVycm9ySAASjgEKIXBv", + "bGljeV92YWxpZGF0aW9uX3BhcmFtZXRlcl9lcnJvchhyIAEoDjJhLmdvb2ds", + "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9ycy5Qb2xpY3lWYWxpZGF0aW9uUGFy", + "YW1ldGVyRXJyb3JFbnVtLlBvbGljeVZhbGlkYXRpb25QYXJhbWV0ZXJFcnJv", + "ckgAEl0KEHNpemVfbGltaXRfZXJyb3IYdiABKA4yQS5nb29nbGUuYWRzLmdv", + "b2dsZWFkcy52Mi5lcnJvcnMuU2l6ZUxpbWl0RXJyb3JFbnVtLlNpemVMaW1p", + "dEVycm9ySAASbAoVbm90X3doaXRlbGlzdGVkX2Vycm9yGHggASgOMksuZ29v", + "Z2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzLk5vdFdoaXRlbGlzdGVkRXJy", + "b3JFbnVtLk5vdFdoaXRlbGlzdGVkRXJyb3JIABJjChJtYW5hZ2VyX2xpbmtf", + "ZXJyb3IYeSABKA4yRS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMu", + "TWFuYWdlckxpbmtFcnJvckVudW0uTWFuYWdlckxpbmtFcnJvckgAEmYKE2N1", + "cnJlbmN5X2NvZGVfZXJyb3IYeiABKA4yRy5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lcnJvcnMuQ3VycmVuY3lDb2RlRXJyb3JFbnVtLkN1cnJlbmN5Q29k", + "ZUVycm9ySAAScgoXYWNjZXNzX2ludml0YXRpb25fZXJyb3IYfCABKA4yTy5n", + "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuQWNjZXNzSW52aXRhdGlv", + "bkVycm9yRW51bS5BY2Nlc3NJbnZpdGF0aW9uRXJyb3JIABJdChByZWFjaF9w", + "bGFuX2Vycm9yGH0gASgOMkEuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJy", + "b3JzLlJlYWNoUGxhbkVycm9yRW51bS5SZWFjaFBsYW5FcnJvckgAElYKDWlu", + "dm9pY2VfZXJyb3IYfiABKA4yPS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", + "cnJvcnMuSW52b2ljZUVycm9yRW51bS5JbnZvaWNlRXJyb3JIAEIMCgplcnJv", + "cl9jb2RlIsABCg1FcnJvckxvY2F0aW9uElsKE2ZpZWxkX3BhdGhfZWxlbWVu", + "dHMYAiADKAsyPi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJvcnMuRXJy", + "b3JMb2NhdGlvbi5GaWVsZFBhdGhFbGVtZW50GlIKEEZpZWxkUGF0aEVsZW1l", + "bnQSEgoKZmllbGRfbmFtZRgBIAEoCRIqCgVpbmRleBgCIAEoCzIbLmdvb2ds", + "ZS5wcm90b2J1Zi5JbnQ2NFZhbHVlIt4BCgxFcnJvckRldGFpbHMSHgoWdW5w", + "dWJsaXNoZWRfZXJyb3JfY29kZRgBIAEoCRJYChhwb2xpY3lfdmlvbGF0aW9u", + "X2RldGFpbHMYAiABKAsyNi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lcnJv", + "cnMuUG9saWN5VmlvbGF0aW9uRGV0YWlscxJUChZwb2xpY3lfZmluZGluZ19k", + "ZXRhaWxzGAMgASgLMjQuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", + "LlBvbGljeUZpbmRpbmdEZXRhaWxzIrMBChZQb2xpY3lWaW9sYXRpb25EZXRh", + "aWxzEiMKG2V4dGVybmFsX3BvbGljeV9kZXNjcmlwdGlvbhgCIAEoCRI/CgNr", + "ZXkYBCABKAsyMi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uUG9s", + "aWN5VmlvbGF0aW9uS2V5EhwKFGV4dGVybmFsX3BvbGljeV9uYW1lGAUgASgJ", + "EhUKDWlzX2V4ZW1wdGlibGUYBiABKAgiZgoUUG9saWN5RmluZGluZ0RldGFp", + "bHMSTgoUcG9saWN5X3RvcGljX2VudHJpZXMYASADKAsyMC5nb29nbGUuYWRz", + "Lmdvb2dsZWFkcy52Mi5jb21tb24uUG9saWN5VG9waWNFbnRyeULmAQoiY29t", + "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVycm9yc0ILRXJyb3JzUHJvdG9Q", + "AVpEZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hZHMv", + "Z29vZ2xlYWRzL3YyL2Vycm9ycztlcnJvcnOiAgNHQUGqAh5Hb29nbGUuQWRz", + "Lkdvb2dsZUFkcy5WMi5FcnJvcnPKAh5Hb29nbGVcQWRzXEdvb2dsZUFkc1xW", + "MlxFcnJvcnPqAiJHb29nbGU6OkFkczo6R29vZ2xlQWRzOjpWMjo6RXJyb3Jz", + "YgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.PolicyReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.ValueReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AccessInvitationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AccountBudgetProposalErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdCustomizerErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupAdErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupBidModifierErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupCriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupFeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdParameterErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdSharingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdxErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AssetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AuthenticationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AuthorizationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.BiddingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.BiddingStrategyErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.BillingSetupErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignBudgetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignCriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignDraftErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignExperimentErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignFeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignSharedSetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ChangeStatusErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CollectionSizeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ContextErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ConversionActionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ConversionAdjustmentUploadErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ConversionUploadErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CountryCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CurrencyCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomInterestErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerClientLinkErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerFeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerManagerLinkErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DatabaseErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DateErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DateRangeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DistinctErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.EnumErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ExtensionFeedItemErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ExtensionSettingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedAttributeReferenceErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedItemErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedItemTargetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedItemValidationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedMappingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FieldErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FieldMaskErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FunctionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FunctionParsingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.GeoTargetConstantSuggestionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.HeaderErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.IdErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ImageErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.InternalErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanAdGroupErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanCampaignErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanIdeaErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanKeywordErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanNegativeKeywordErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.LabelErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.LanguageCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ListOperationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ManagerLinkErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MediaBundleErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MediaFileErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MediaUploadErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MultiplierErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MutateErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MutateJobErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NewResourceCreationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NotEmptyErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NotWhitelistedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NullErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.OperationAccessDeniedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.OperatorErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PartialFailureErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PolicyFindingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PolicyValidationParameterErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PolicyViolationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.QueryErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.QuotaErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RangeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ReachPlanErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RecommendationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RegionCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RequestErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ResourceAccessDeniedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ResourceCountLimitExceededErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SettingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SharedCriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SharedSetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SizeLimitErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.StringFormatErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.StringLengthErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.UrlFieldErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.UserListErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.YoutubeVideoRegistrationErrorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.PolicyReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.ValueReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AccessInvitationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AccountBudgetProposalErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdCustomizerErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupAdErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupBidModifierErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupCriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdGroupFeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdParameterErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdSharingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AdxErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AssetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AuthenticationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.AuthorizationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.BiddingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.BiddingStrategyErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.BillingSetupErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignBudgetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignCriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignDraftErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignExperimentErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignFeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CampaignSharedSetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ChangeStatusErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CollectionSizeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ContextErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ConversionActionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ConversionAdjustmentUploadErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ConversionUploadErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CountryCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CurrencyCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomInterestErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerClientLinkErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerFeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.CustomerManagerLinkErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DatabaseErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DateErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DateRangeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.DistinctErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.EnumErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ExtensionFeedItemErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ExtensionSettingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedAttributeReferenceErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedItemErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedItemTargetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedItemValidationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FeedMappingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FieldErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FieldMaskErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FunctionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.FunctionParsingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.GeoTargetConstantSuggestionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.HeaderErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.IdErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ImageErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.InternalErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanAdGroupErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanCampaignErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanIdeaErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanKeywordErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.KeywordPlanNegativeKeywordErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.LabelErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.LanguageCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ListOperationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ManagerLinkErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MediaBundleErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MediaFileErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MediaUploadErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MultiplierErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MutateErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.MutateJobErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NewResourceCreationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NotEmptyErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NotWhitelistedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.NullErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.OperationAccessDeniedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.OperatorErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PartialFailureErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PolicyFindingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PolicyValidationParameterErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.PolicyViolationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.QueryErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.QuotaErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RangeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ReachPlanErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RecommendationErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RegionCodeErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.RequestErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ResourceAccessDeniedErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.ResourceCountLimitExceededErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SettingErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SharedCriterionErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SharedSetErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.SizeLimitErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.StringFormatErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.StringLengthErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.UrlFieldErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.UserListErrorReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Errors.YoutubeVideoRegistrationErrorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.GoogleAdsFailure), global::Google.Ads.GoogleAds.V2.Errors.GoogleAdsFailure.Parser, new[]{ "Errors" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.GoogleAdsError), global::Google.Ads.GoogleAds.V2.Errors.GoogleAdsError.Parser, new[]{ "ErrorCode", "Message", "Trigger", "Location", "Details" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.ErrorCode), global::Google.Ads.GoogleAds.V2.Errors.ErrorCode.Parser, new[]{ "RequestError", "BiddingStrategyError", "UrlFieldError", "ListOperationError", "QueryError", "MutateError", "FieldMaskError", "AuthorizationError", "InternalError", "QuotaError", "AdError", "AdGroupError", "CampaignBudgetError", "CampaignError", "AuthenticationError", "AdGroupCriterionError", "AdCustomizerError", "AdGroupAdError", "AdSharingError", "AdxError", "AssetError", "BiddingError", "CampaignCriterionError", "CollectionSizeError", "CountryCodeError", "CriterionError", "CustomerError", "DateError", "DateRangeError", "DistinctError", "FeedAttributeReferenceError", "FunctionError", "FunctionParsingError", "IdError", "ImageError", "LanguageCodeError", "MediaBundleError", "MediaUploadError", "MediaFileError", "MultiplierError", "NewResourceCreationError", "NotEmptyError", "NullError", "OperatorError", "RangeError", "RecommendationError", "RegionCodeError", "SettingError", "StringFormatError", "StringLengthError", "OperationAccessDeniedError", "ResourceAccessDeniedError", "ResourceCountLimitExceededError", "YoutubeVideoRegistrationError", "AdGroupBidModifierError", "ContextError", "FieldError", "SharedSetError", "SharedCriterionError", "CampaignSharedSetError", "ConversionActionError", "ConversionAdjustmentUploadError", "ConversionUploadError", "HeaderError", "DatabaseError", "PolicyFindingError", "EnumError", "KeywordPlanError", "KeywordPlanCampaignError", "KeywordPlanNegativeKeywordError", "KeywordPlanAdGroupError", "KeywordPlanKeywordError", "KeywordPlanIdeaError", "AccountBudgetProposalError", "UserListError", "ChangeStatusError", "FeedError", "GeoTargetConstantSuggestionError", "CampaignDraftError", "FeedItemError", "LabelError", "BillingSetupError", "CustomerClientLinkError", "CustomerManagerLinkError", "FeedMappingError", "CustomerFeedError", "AdGroupFeedError", "CampaignFeedError", "CustomInterestError", "CampaignExperimentError", "ExtensionFeedItemError", "AdParameterError", "FeedItemValidationError", "ExtensionSettingError", "FeedItemTargetError", "PolicyViolationError", "MutateJobError", "PartialFailureError", "PolicyValidationParameterError", "SizeLimitError", "NotWhitelistedError", "ManagerLinkError", "CurrencyCodeError", "AccessInvitationError", "ReachPlanError" }, new[]{ "ErrorCode" }, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.ErrorCode), global::Google.Ads.GoogleAds.V2.Errors.ErrorCode.Parser, new[]{ "RequestError", "BiddingStrategyError", "UrlFieldError", "ListOperationError", "QueryError", "MutateError", "FieldMaskError", "AuthorizationError", "InternalError", "QuotaError", "AdError", "AdGroupError", "CampaignBudgetError", "CampaignError", "AuthenticationError", "AdGroupCriterionError", "AdCustomizerError", "AdGroupAdError", "AdSharingError", "AdxError", "AssetError", "BiddingError", "CampaignCriterionError", "CollectionSizeError", "CountryCodeError", "CriterionError", "CustomerError", "DateError", "DateRangeError", "DistinctError", "FeedAttributeReferenceError", "FunctionError", "FunctionParsingError", "IdError", "ImageError", "LanguageCodeError", "MediaBundleError", "MediaUploadError", "MediaFileError", "MultiplierError", "NewResourceCreationError", "NotEmptyError", "NullError", "OperatorError", "RangeError", "RecommendationError", "RegionCodeError", "SettingError", "StringFormatError", "StringLengthError", "OperationAccessDeniedError", "ResourceAccessDeniedError", "ResourceCountLimitExceededError", "YoutubeVideoRegistrationError", "AdGroupBidModifierError", "ContextError", "FieldError", "SharedSetError", "SharedCriterionError", "CampaignSharedSetError", "ConversionActionError", "ConversionAdjustmentUploadError", "ConversionUploadError", "HeaderError", "DatabaseError", "PolicyFindingError", "EnumError", "KeywordPlanError", "KeywordPlanCampaignError", "KeywordPlanNegativeKeywordError", "KeywordPlanAdGroupError", "KeywordPlanKeywordError", "KeywordPlanIdeaError", "AccountBudgetProposalError", "UserListError", "ChangeStatusError", "FeedError", "GeoTargetConstantSuggestionError", "CampaignDraftError", "FeedItemError", "LabelError", "BillingSetupError", "CustomerClientLinkError", "CustomerManagerLinkError", "FeedMappingError", "CustomerFeedError", "AdGroupFeedError", "CampaignFeedError", "CustomInterestError", "CampaignExperimentError", "ExtensionFeedItemError", "AdParameterError", "FeedItemValidationError", "ExtensionSettingError", "FeedItemTargetError", "PolicyViolationError", "MutateJobError", "PartialFailureError", "PolicyValidationParameterError", "SizeLimitError", "NotWhitelistedError", "ManagerLinkError", "CurrencyCodeError", "AccessInvitationError", "ReachPlanError", "InvoiceError" }, new[]{ "ErrorCode" }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.ErrorLocation), global::Google.Ads.GoogleAds.V2.Errors.ErrorLocation.Parser, new[]{ "FieldPathElements" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.ErrorLocation.Types.FieldPathElement), global::Google.Ads.GoogleAds.V2.Errors.ErrorLocation.Types.FieldPathElement.Parser, new[]{ "FieldName", "Index" }, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.ErrorDetails), global::Google.Ads.GoogleAds.V2.Errors.ErrorDetails.Parser, new[]{ "UnpublishedErrorCode", "PolicyViolationDetails", "PolicyFindingDetails" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.PolicyViolationDetails), global::Google.Ads.GoogleAds.V2.Errors.PolicyViolationDetails.Parser, new[]{ "ExternalPolicyDescription", "Key", "ExternalPolicyName", "IsExemptible" }, null, null, null), @@ -1211,6 +1214,9 @@ public ErrorCode(ErrorCode other) : this() { case ErrorCodeOneofCase.ReachPlanError: ReachPlanError = other.ReachPlanError; break; + case ErrorCodeOneofCase.InvoiceError: + InvoiceError = other.InvoiceError; + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -2691,6 +2697,20 @@ public ErrorCode Clone() { } } + /// Field number for the "invoice_error" field. + public const int InvoiceErrorFieldNumber = 126; + /// + /// The reasons for the invoice error + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorEnum.Types.InvoiceError InvoiceError { + get { return errorCodeCase_ == ErrorCodeOneofCase.InvoiceError ? (global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorEnum.Types.InvoiceError) errorCode_ : 0; } + set { + errorCode_ = value; + errorCodeCase_ = ErrorCodeOneofCase.InvoiceError; + } + } + private object errorCode_; /// Enum of possible cases for the "error_code" oneof. public enum ErrorCodeOneofCase { @@ -2800,6 +2820,7 @@ public enum ErrorCodeOneofCase { CurrencyCodeError = 122, AccessInvitationError = 124, ReachPlanError = 125, + InvoiceError = 126, } private ErrorCodeOneofCase errorCodeCase_ = ErrorCodeOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2931,6 +2952,7 @@ public bool Equals(ErrorCode other) { if (CurrencyCodeError != other.CurrencyCodeError) return false; if (AccessInvitationError != other.AccessInvitationError) return false; if (ReachPlanError != other.ReachPlanError) return false; + if (InvoiceError != other.InvoiceError) return false; if (ErrorCodeCase != other.ErrorCodeCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -3043,6 +3065,7 @@ public override int GetHashCode() { if (errorCodeCase_ == ErrorCodeOneofCase.CurrencyCodeError) hash ^= CurrencyCodeError.GetHashCode(); if (errorCodeCase_ == ErrorCodeOneofCase.AccessInvitationError) hash ^= AccessInvitationError.GetHashCode(); if (errorCodeCase_ == ErrorCodeOneofCase.ReachPlanError) hash ^= ReachPlanError.GetHashCode(); + if (errorCodeCase_ == ErrorCodeOneofCase.InvoiceError) hash ^= InvoiceError.GetHashCode(); hash ^= (int) errorCodeCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -3477,6 +3500,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(232, 7); output.WriteEnum((int) ReachPlanError); } + if (errorCodeCase_ == ErrorCodeOneofCase.InvoiceError) { + output.WriteRawTag(240, 7); + output.WriteEnum((int) InvoiceError); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3800,6 +3827,9 @@ public int CalculateSize() { if (errorCodeCase_ == ErrorCodeOneofCase.ReachPlanError) { size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) ReachPlanError); } + if (errorCodeCase_ == ErrorCodeOneofCase.InvoiceError) { + size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) InvoiceError); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -4127,6 +4157,9 @@ public void MergeFrom(ErrorCode other) { case ErrorCodeOneofCase.ReachPlanError: ReachPlanError = other.ReachPlanError; break; + case ErrorCodeOneofCase.InvoiceError: + InvoiceError = other.InvoiceError; + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -4665,6 +4698,11 @@ public void MergeFrom(pb::CodedInputStream input) { errorCodeCase_ = ErrorCodeOneofCase.ReachPlanError; break; } + case 1008: { + errorCode_ = input.ReadEnum(); + errorCodeCase_ = ErrorCodeOneofCase.InvoiceError; + break; + } } } } diff --git a/src/V2/Stubs/ExtensionFeedItem.cs b/src/V2/Stubs/ExtensionFeedItem.cs index 5d00133a4..ae5b4bf18 100644 --- a/src/V2/Stubs/ExtensionFeedItem.cs +++ b/src/V2/Stubs/ExtensionFeedItem.cs @@ -33,53 +33,55 @@ static ExtensionFeedItemReflection() { "ZW51bXMvZmVlZF9pdGVtX3N0YXR1cy5wcm90bxo7Z29vZ2xlL2Fkcy9nb29n", "bGVhZHMvdjIvZW51bXMvZmVlZF9pdGVtX3RhcmdldF9kZXZpY2UucHJvdG8a", "Hmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxocZ29vZ2xlL2FwaS9h", - "bm5vdGF0aW9ucy5wcm90byLFDAoRRXh0ZW5zaW9uRmVlZEl0ZW0SFQoNcmVz", - "b3VyY2VfbmFtZRgBIAEoCRJWCg5leHRlbnNpb25fdHlwZRgNIAEoDjI+Lmdv", - "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLkV4dGVuc2lvblR5cGVFbnVt", - "LkV4dGVuc2lvblR5cGUSNQoPc3RhcnRfZGF0ZV90aW1lGAUgASgLMhwuZ29v", - "Z2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjMKDWVuZF9kYXRlX3RpbWUYBiAB", - "KAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRAoMYWRfc2NoZWR1", - "bGVzGBAgAygLMi4uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkFk", - "U2NoZWR1bGVJbmZvElwKBmRldmljZRgRIAEoDjJMLmdvb2dsZS5hZHMuZ29v", - "Z2xlYWRzLnYyLmVudW1zLkZlZWRJdGVtVGFyZ2V0RGV2aWNlRW51bS5GZWVk", - "SXRlbVRhcmdldERldmljZRJCChx0YXJnZXRlZF9nZW9fdGFyZ2V0X2NvbnN0", - "YW50GBQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkUKEHRh", - "cmdldGVkX2tleXdvcmQYFiABKAsyKy5nb29nbGUuYWRzLmdvb2dsZWFkcy52", - "Mi5jb21tb24uS2V5d29yZEluZm8SUAoGc3RhdHVzGAQgASgOMkAuZ29vZ2xl", - "LmFkcy5nb29nbGVhZHMudjIuZW51bXMuRmVlZEl0ZW1TdGF0dXNFbnVtLkZl", - "ZWRJdGVtU3RhdHVzEk4KEnNpdGVsaW5rX2ZlZWRfaXRlbRgCIAEoCzIwLmdv", - "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5TaXRlbGlua0ZlZWRJdGVt", - "SAASYQocc3RydWN0dXJlZF9zbmlwcGV0X2ZlZWRfaXRlbRgDIAEoCzI5Lmdv", - "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5TdHJ1Y3R1cmVkU25pcHBl", - "dEZlZWRJdGVtSAASRAoNYXBwX2ZlZWRfaXRlbRgHIAEoCzIrLmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5BcHBGZWVkSXRlbUgAEkYKDmNhbGxf", - "ZmVlZF9pdGVtGAggASgLMiwuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29t", - "bW9uLkNhbGxGZWVkSXRlbUgAEkwKEWNhbGxvdXRfZmVlZF9pdGVtGAkgASgL", - "Mi8uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkNhbGxvdXRGZWVk", - "SXRlbUgAElUKFnRleHRfbWVzc2FnZV9mZWVkX2l0ZW0YCiABKAsyMy5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uVGV4dE1lc3NhZ2VGZWVkSXRl", - "bUgAEkgKD3ByaWNlX2ZlZWRfaXRlbRgLIAEoCzItLmdvb2dsZS5hZHMuZ29v", - "Z2xlYWRzLnYyLmNvbW1vbi5QcmljZUZlZWRJdGVtSAASUAoTcHJvbW90aW9u", - "X2ZlZWRfaXRlbRgMIAEoCzIxLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNv", - "bW1vbi5Qcm9tb3Rpb25GZWVkSXRlbUgAEk4KEmxvY2F0aW9uX2ZlZWRfaXRl", - "bRgOIAEoCzIwLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5Mb2Nh", - "dGlvbkZlZWRJdGVtSAASYQocYWZmaWxpYXRlX2xvY2F0aW9uX2ZlZWRfaXRl", - "bRgPIAEoCzI5Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5BZmZp", - "bGlhdGVMb2NhdGlvbkZlZWRJdGVtSAASOQoRdGFyZ2V0ZWRfY2FtcGFpZ24Y", - "EiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVIARI5ChF0YXJn", - "ZXRlZF9hZF9ncm91cBgTIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdW", - "YWx1ZUgBQgsKCWV4dGVuc2lvbkIcChpzZXJ2aW5nX3Jlc291cmNlX3Rhcmdl", - "dGluZ0KDAgolY29tLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnJlc291cmNl", - "c0IWRXh0ZW5zaW9uRmVlZEl0ZW1Qcm90b1ABWkpnb29nbGUuZ29sYW5nLm9y", - "Zy9nZW5wcm90by9nb29nbGVhcGlzL2Fkcy9nb29nbGVhZHMvdjIvcmVzb3Vy", - "Y2VzO3Jlc291cmNlc6ICA0dBQaoCIUdvb2dsZS5BZHMuR29vZ2xlQWRzLlYy", - "LlJlc291cmNlc8oCIUdvb2dsZVxBZHNcR29vZ2xlQWRzXFYyXFJlc291cmNl", - "c+oCJUdvb2dsZTo6QWRzOjpHb29nbGVBZHM6OlYyOjpSZXNvdXJjZXNiBnBy", - "b3RvMw==")); + "bm5vdGF0aW9ucy5wcm90byLHDQoRRXh0ZW5zaW9uRmVlZEl0ZW0SFQoNcmVz", + "b3VyY2VfbmFtZRgBIAEoCRInCgJpZBgYIAEoCzIbLmdvb2dsZS5wcm90b2J1", + "Zi5JbnQ2NFZhbHVlElYKDmV4dGVuc2lvbl90eXBlGA0gASgOMj4uZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuZW51bXMuRXh0ZW5zaW9uVHlwZUVudW0uRXh0", + "ZW5zaW9uVHlwZRI1Cg9zdGFydF9kYXRlX3RpbWUYBSABKAsyHC5nb29nbGUu", + "cHJvdG9idWYuU3RyaW5nVmFsdWUSMwoNZW5kX2RhdGVfdGltZRgGIAEoCzIc", + "Lmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJECgxhZF9zY2hlZHVsZXMY", + "ECADKAsyLi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uQWRTY2hl", + "ZHVsZUluZm8SXAoGZGV2aWNlGBEgASgOMkwuZ29vZ2xlLmFkcy5nb29nbGVh", + "ZHMudjIuZW51bXMuRmVlZEl0ZW1UYXJnZXREZXZpY2VFbnVtLkZlZWRJdGVt", + "VGFyZ2V0RGV2aWNlEkIKHHRhcmdldGVkX2dlb190YXJnZXRfY29uc3RhbnQY", + "FCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQoQdGFyZ2V0", + "ZWRfa2V5d29yZBgWIAEoCzIrLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNv", + "bW1vbi5LZXl3b3JkSW5mbxJQCgZzdGF0dXMYBCABKA4yQC5nb29nbGUuYWRz", + "Lmdvb2dsZWFkcy52Mi5lbnVtcy5GZWVkSXRlbVN0YXR1c0VudW0uRmVlZEl0", + "ZW1TdGF0dXMSTgoSc2l0ZWxpbmtfZmVlZF9pdGVtGAIgASgLMjAuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlNpdGVsaW5rRmVlZEl0ZW1IABJh", + "ChxzdHJ1Y3R1cmVkX3NuaXBwZXRfZmVlZF9pdGVtGAMgASgLMjkuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuY29tbW9uLlN0cnVjdHVyZWRTbmlwcGV0RmVl", + "ZEl0ZW1IABJECg1hcHBfZmVlZF9pdGVtGAcgASgLMisuZ29vZ2xlLmFkcy5n", + "b29nbGVhZHMudjIuY29tbW9uLkFwcEZlZWRJdGVtSAASRgoOY2FsbF9mZWVk", + "X2l0ZW0YCCABKAsyLC5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24u", + "Q2FsbEZlZWRJdGVtSAASTAoRY2FsbG91dF9mZWVkX2l0ZW0YCSABKAsyLy5n", + "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uQ2FsbG91dEZlZWRJdGVt", + "SAASVQoWdGV4dF9tZXNzYWdlX2ZlZWRfaXRlbRgKIAEoCzIzLmdvb2dsZS5h", + "ZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5UZXh0TWVzc2FnZUZlZWRJdGVtSAAS", + "SAoPcHJpY2VfZmVlZF9pdGVtGAsgASgLMi0uZ29vZ2xlLmFkcy5nb29nbGVh", + "ZHMudjIuY29tbW9uLlByaWNlRmVlZEl0ZW1IABJQChNwcm9tb3Rpb25fZmVl", + "ZF9pdGVtGAwgASgLMjEuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9u", + "LlByb21vdGlvbkZlZWRJdGVtSAASTgoSbG9jYXRpb25fZmVlZF9pdGVtGA4g", + "ASgLMjAuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkxvY2F0aW9u", + "RmVlZEl0ZW1IABJhChxhZmZpbGlhdGVfbG9jYXRpb25fZmVlZF9pdGVtGA8g", + "ASgLMjkuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9uLkFmZmlsaWF0", + "ZUxvY2F0aW9uRmVlZEl0ZW1IABJXChdob3RlbF9jYWxsb3V0X2ZlZWRfaXRl", + "bRgXIAEoCzI0Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5Ib3Rl", + "bENhbGxvdXRGZWVkSXRlbUgAEjkKEXRhcmdldGVkX2NhbXBhaWduGBIgASgL", + "MhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlSAESOQoRdGFyZ2V0ZWRf", + "YWRfZ3JvdXAYEyABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVI", + "AUILCglleHRlbnNpb25CHAoac2VydmluZ19yZXNvdXJjZV90YXJnZXRpbmdC", + "gwIKJWNvbS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5yZXNvdXJjZXNCFkV4", + "dGVuc2lvbkZlZWRJdGVtUHJvdG9QAVpKZ29vZ2xlLmdvbGFuZy5vcmcvZ2Vu", + "cHJvdG8vZ29vZ2xlYXBpcy9hZHMvZ29vZ2xlYWRzL3YyL3Jlc291cmNlczty", + "ZXNvdXJjZXOiAgNHQUGqAiFHb29nbGUuQWRzLkdvb2dsZUFkcy5WMi5SZXNv", + "dXJjZXPKAiFHb29nbGVcQWRzXEdvb2dsZUFkc1xWMlxSZXNvdXJjZXPqAiVH", + "b29nbGU6OkFkczo6R29vZ2xlQWRzOjpWMjo6UmVzb3VyY2VzYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.CriteriaReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.ExtensionsReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ExtensionTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.FeedItemStatusReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.FeedItemTargetDeviceReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.ExtensionFeedItem), global::Google.Ads.GoogleAds.V2.Resources.ExtensionFeedItem.Parser, new[]{ "ResourceName", "ExtensionType", "StartDateTime", "EndDateTime", "AdSchedules", "Device", "TargetedGeoTargetConstant", "TargetedKeyword", "Status", "SitelinkFeedItem", "StructuredSnippetFeedItem", "AppFeedItem", "CallFeedItem", "CalloutFeedItem", "TextMessageFeedItem", "PriceFeedItem", "PromotionFeedItem", "LocationFeedItem", "AffiliateLocationFeedItem", "TargetedCampaign", "TargetedAdGroup" }, new[]{ "Extension", "ServingResourceTargeting" }, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.ExtensionFeedItem), global::Google.Ads.GoogleAds.V2.Resources.ExtensionFeedItem.Parser, new[]{ "ResourceName", "Id", "ExtensionType", "StartDateTime", "EndDateTime", "AdSchedules", "Device", "TargetedGeoTargetConstant", "TargetedKeyword", "Status", "SitelinkFeedItem", "StructuredSnippetFeedItem", "AppFeedItem", "CallFeedItem", "CalloutFeedItem", "TextMessageFeedItem", "PriceFeedItem", "PromotionFeedItem", "LocationFeedItem", "AffiliateLocationFeedItem", "HotelCalloutFeedItem", "TargetedCampaign", "TargetedAdGroup" }, new[]{ "Extension", "ServingResourceTargeting" }, null, null) })); } #endregion @@ -115,6 +117,7 @@ public ExtensionFeedItem() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public ExtensionFeedItem(ExtensionFeedItem other) : this() { resourceName_ = other.resourceName_; + Id = other.Id; extensionType_ = other.extensionType_; StartDateTime = other.StartDateTime; EndDateTime = other.EndDateTime; @@ -154,6 +157,9 @@ public ExtensionFeedItem(ExtensionFeedItem other) : this() { case ExtensionOneofCase.AffiliateLocationFeedItem: AffiliateLocationFeedItem = other.AffiliateLocationFeedItem.Clone(); break; + case ExtensionOneofCase.HotelCalloutFeedItem: + HotelCalloutFeedItem = other.HotelCalloutFeedItem.Clone(); + break; } switch (other.ServingResourceTargetingCase) { @@ -190,6 +196,22 @@ public string ResourceName { } } + /// Field number for the "id" field. + public const int IdFieldNumber = 24; + private static readonly pb::FieldCodec _single_id_codec = pb::FieldCodec.ForStructWrapper(194); + private long? id_; + /// + /// The ID of this feed item. Read-only. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? Id { + get { return id_; } + set { + id_ = value; + } + } + + /// Field number for the "extension_type" field. public const int ExtensionTypeFieldNumber = 13; private global::Google.Ads.GoogleAds.V2.Enums.ExtensionTypeEnum.Types.ExtensionType extensionType_ = 0; @@ -460,6 +482,20 @@ public string TargetedGeoTargetConstant { } } + /// Field number for the "hotel_callout_feed_item" field. + public const int HotelCalloutFeedItemFieldNumber = 23; + /// + /// Hotel Callout extension. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem HotelCalloutFeedItem { + get { return extensionCase_ == ExtensionOneofCase.HotelCalloutFeedItem ? (global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem) extension_ : null; } + set { + extension_ = value; + extensionCase_ = value == null ? ExtensionOneofCase.None : ExtensionOneofCase.HotelCalloutFeedItem; + } + } + /// Field number for the "targeted_campaign" field. public const int TargetedCampaignFieldNumber = 18; private static readonly pb::FieldCodec _oneof_targetedCampaign_codec = pb::FieldCodec.ForClassWrapper(146); @@ -504,6 +540,7 @@ public enum ExtensionOneofCase { PromotionFeedItem = 12, LocationFeedItem = 14, AffiliateLocationFeedItem = 15, + HotelCalloutFeedItem = 23, } private ExtensionOneofCase extensionCase_ = ExtensionOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -550,6 +587,7 @@ public bool Equals(ExtensionFeedItem other) { return true; } if (ResourceName != other.ResourceName) return false; + if (Id != other.Id) return false; if (ExtensionType != other.ExtensionType) return false; if (StartDateTime != other.StartDateTime) return false; if (EndDateTime != other.EndDateTime) return false; @@ -568,6 +606,7 @@ public bool Equals(ExtensionFeedItem other) { if (!object.Equals(PromotionFeedItem, other.PromotionFeedItem)) return false; if (!object.Equals(LocationFeedItem, other.LocationFeedItem)) return false; if (!object.Equals(AffiliateLocationFeedItem, other.AffiliateLocationFeedItem)) return false; + if (!object.Equals(HotelCalloutFeedItem, other.HotelCalloutFeedItem)) return false; if (TargetedCampaign != other.TargetedCampaign) return false; if (TargetedAdGroup != other.TargetedAdGroup) return false; if (ExtensionCase != other.ExtensionCase) return false; @@ -579,6 +618,7 @@ public bool Equals(ExtensionFeedItem other) { public override int GetHashCode() { int hash = 1; if (ResourceName.Length != 0) hash ^= ResourceName.GetHashCode(); + if (id_ != null) hash ^= Id.GetHashCode(); if (ExtensionType != 0) hash ^= ExtensionType.GetHashCode(); if (startDateTime_ != null) hash ^= StartDateTime.GetHashCode(); if (endDateTime_ != null) hash ^= EndDateTime.GetHashCode(); @@ -597,6 +637,7 @@ public override int GetHashCode() { if (extensionCase_ == ExtensionOneofCase.PromotionFeedItem) hash ^= PromotionFeedItem.GetHashCode(); if (extensionCase_ == ExtensionOneofCase.LocationFeedItem) hash ^= LocationFeedItem.GetHashCode(); if (extensionCase_ == ExtensionOneofCase.AffiliateLocationFeedItem) hash ^= AffiliateLocationFeedItem.GetHashCode(); + if (extensionCase_ == ExtensionOneofCase.HotelCalloutFeedItem) hash ^= HotelCalloutFeedItem.GetHashCode(); if (servingResourceTargetingCase_ == ServingResourceTargetingOneofCase.TargetedCampaign) hash ^= TargetedCampaign.GetHashCode(); if (servingResourceTargetingCase_ == ServingResourceTargetingOneofCase.TargetedAdGroup) hash ^= TargetedAdGroup.GetHashCode(); hash ^= (int) extensionCase_; @@ -690,6 +731,13 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(178, 1); output.WriteMessage(TargetedKeyword); } + if (extensionCase_ == ExtensionOneofCase.HotelCalloutFeedItem) { + output.WriteRawTag(186, 1); + output.WriteMessage(HotelCalloutFeedItem); + } + if (id_ != null) { + _single_id_codec.WriteTagAndValue(output, Id); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -701,6 +749,9 @@ public int CalculateSize() { if (ResourceName.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ResourceName); } + if (id_ != null) { + size += _single_id_codec.CalculateSizeWithTag(Id); + } if (ExtensionType != 0) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ExtensionType); } @@ -753,6 +804,9 @@ public int CalculateSize() { if (extensionCase_ == ExtensionOneofCase.AffiliateLocationFeedItem) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AffiliateLocationFeedItem); } + if (extensionCase_ == ExtensionOneofCase.HotelCalloutFeedItem) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(HotelCalloutFeedItem); + } if (servingResourceTargetingCase_ == ServingResourceTargetingOneofCase.TargetedCampaign) { size += _oneof_targetedCampaign_codec.CalculateSizeWithTag(TargetedCampaign); } @@ -773,6 +827,11 @@ public void MergeFrom(ExtensionFeedItem other) { if (other.ResourceName.Length != 0) { ResourceName = other.ResourceName; } + if (other.id_ != null) { + if (id_ == null || other.Id != 0L) { + Id = other.Id; + } + } if (other.ExtensionType != 0) { ExtensionType = other.ExtensionType; } @@ -865,6 +924,12 @@ public void MergeFrom(ExtensionFeedItem other) { } AffiliateLocationFeedItem.MergeFrom(other.AffiliateLocationFeedItem); break; + case ExtensionOneofCase.HotelCalloutFeedItem: + if (HotelCalloutFeedItem == null) { + HotelCalloutFeedItem = new global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem(); + } + HotelCalloutFeedItem.MergeFrom(other.HotelCalloutFeedItem); + break; } switch (other.ServingResourceTargetingCase) { @@ -1033,6 +1098,22 @@ public void MergeFrom(pb::CodedInputStream input) { input.ReadMessage(TargetedKeyword); break; } + case 186: { + global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem subBuilder = new global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem(); + if (extensionCase_ == ExtensionOneofCase.HotelCalloutFeedItem) { + subBuilder.MergeFrom(HotelCalloutFeedItem); + } + input.ReadMessage(subBuilder); + HotelCalloutFeedItem = subBuilder; + break; + } + case 194: { + long? value = _single_id_codec.Read(input); + if (id_ == null || value != 0L) { + Id = value; + } + break; + } } } } diff --git a/src/V2/Stubs/ExtensionType.cs b/src/V2/Stubs/ExtensionType.cs index 404969d99..1b90345e1 100644 --- a/src/V2/Stubs/ExtensionType.cs +++ b/src/V2/Stubs/ExtensionType.cs @@ -26,17 +26,18 @@ static ExtensionTypeReflection() { string.Concat( "CjJnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9leHRlbnNpb25fdHlw", "ZS5wcm90bxIdZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMaHGdvb2ds", - "ZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8i4AEKEUV4dGVuc2lvblR5cGVFbnVt", - "IsoBCg1FeHRlbnNpb25UeXBlEg8KC1VOU1BFQ0lGSUVEEAASCwoHVU5LTk9X", + "ZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8i8wEKEUV4dGVuc2lvblR5cGVFbnVt", + "It0BCg1FeHRlbnNpb25UeXBlEg8KC1VOU1BFQ0lGSUVEEAASCwoHVU5LTk9X", "ThABEggKBE5PTkUQAhIHCgNBUFAQAxIICgRDQUxMEAQSCwoHQ0FMTE9VVBAF", "EgsKB01FU1NBR0UQBhIJCgVQUklDRRAHEg0KCVBST01PVElPThAIEgwKCFNJ", "VEVMSU5LEAoSFgoSU1RSVUNUVVJFRF9TTklQUEVUEAsSDAoITE9DQVRJT04Q", - "DBIWChJBRkZJTElBVEVfTE9DQVRJT04QDULnAQohY29tLmdvb2dsZS5hZHMu", - "Z29vZ2xlYWRzLnYyLmVudW1zQhJFeHRlbnNpb25UeXBlUHJvdG9QAVpCZ29v", - "Z2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hZHMvZ29vZ2xl", - "YWRzL3YyL2VudW1zO2VudW1zogIDR0FBqgIdR29vZ2xlLkFkcy5Hb29nbGVB", - "ZHMuVjIuRW51bXPKAh1Hb29nbGVcQWRzXEdvb2dsZUFkc1xWMlxFbnVtc+oC", - "IUdvb2dsZTo6QWRzOjpHb29nbGVBZHM6OlYyOjpFbnVtc2IGcHJvdG8z")); + "DBIWChJBRkZJTElBVEVfTE9DQVRJT04QDRIRCg1IT1RFTF9DQUxMT1VUEA9C", + "5wEKIWNvbS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtc0ISRXh0ZW5z", + "aW9uVHlwZVByb3RvUAFaQmdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dv", + "b2dsZWFwaXMvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcztlbnVtc6ICA0dBQaoC", + "HUdvb2dsZS5BZHMuR29vZ2xlQWRzLlYyLkVudW1zygIdR29vZ2xlXEFkc1xH", + "b29nbGVBZHNcVjJcRW51bXPqAiFHb29nbGU6OkFkczo6R29vZ2xlQWRzOjpW", + "Mjo6RW51bXNiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { @@ -210,6 +211,10 @@ public enum ExtensionType { /// Affiliate location. /// [pbr::OriginalName("AFFILIATE_LOCATION")] AffiliateLocation = 13, + /// + /// Hotel callout + /// + [pbr::OriginalName("HOTEL_CALLOUT")] HotelCallout = 15, } } diff --git a/src/V2/Stubs/Extensions.cs b/src/V2/Stubs/Extensions.cs index 1cd783047..07ecc7d49 100644 --- a/src/V2/Stubs/Extensions.cs +++ b/src/V2/Stubs/Extensions.cs @@ -144,13 +144,16 @@ static ExtensionsReflection() { "ZW1wbGF0ZRgGIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJO", "ChV1cmxfY3VzdG9tX3BhcmFtZXRlcnMYByADKAsyLy5nb29nbGUuYWRzLmdv", "b2dsZWFkcy52Mi5jb21tb24uQ3VzdG9tUGFyYW1ldGVyEjYKEGZpbmFsX3Vy", - "bF9zdWZmaXgYCCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVC", - "6gEKImNvbS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb25CD0V4dGVu", - "c2lvbnNQcm90b1ABWkRnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29n", - "bGVhcGlzL2Fkcy9nb29nbGVhZHMvdjIvY29tbW9uO2NvbW1vbqICA0dBQaoC", - "Hkdvb2dsZS5BZHMuR29vZ2xlQWRzLlYyLkNvbW1vbsoCHkdvb2dsZVxBZHNc", - "R29vZ2xlQWRzXFYyXENvbW1vbuoCIkdvb2dsZTo6QWRzOjpHb29nbGVBZHM6", - "OlYyOjpDb21tb25iBnByb3RvMw==")); + "bF9zdWZmaXgYCCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUi", + "dwoUSG90ZWxDYWxsb3V0RmVlZEl0ZW0SKgoEdGV4dBgBIAEoCzIcLmdvb2ds", + "ZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIzCg1sYW5ndWFnZV9jb2RlGAIgASgL", + "MhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlQuoBCiJjb20uZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuY29tbW9uQg9FeHRlbnNpb25zUHJvdG9QAVpE", + "Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hZHMvZ29v", + "Z2xlYWRzL3YyL2NvbW1vbjtjb21tb26iAgNHQUGqAh5Hb29nbGUuQWRzLkdv", + "b2dsZUFkcy5WMi5Db21tb27KAh5Hb29nbGVcQWRzXEdvb2dsZUFkc1xWMlxD", + "b21tb27qAiJHb29nbGU6OkFkczo6R29vZ2xlQWRzOjpWMjo6Q29tbW9uYgZw", + "cm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.CustomParameterReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Common.FeedCommonReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.AppStoreReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.CallConversionReportingStateReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PriceExtensionPriceQualifierReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PriceExtensionPriceUnitReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PriceExtensionTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PromotionExtensionDiscountModifierReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PromotionExtensionOccasionReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { @@ -164,7 +167,8 @@ static ExtensionsReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.PriceOffer), global::Google.Ads.GoogleAds.V2.Common.PriceOffer.Parser, new[]{ "Header", "Description", "Price", "Unit", "FinalUrls", "FinalMobileUrls" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.PromotionFeedItem), global::Google.Ads.GoogleAds.V2.Common.PromotionFeedItem.Parser, new[]{ "PromotionTarget", "DiscountModifier", "PromotionStartDate", "PromotionEndDate", "Occasion", "FinalUrls", "FinalMobileUrls", "TrackingUrlTemplate", "UrlCustomParameters", "FinalUrlSuffix", "LanguageCode", "PercentOff", "MoneyAmountOff", "PromotionCode", "OrdersOverAmount" }, new[]{ "DiscountType", "PromotionTrigger" }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.StructuredSnippetFeedItem), global::Google.Ads.GoogleAds.V2.Common.StructuredSnippetFeedItem.Parser, new[]{ "Header", "Values" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.SitelinkFeedItem), global::Google.Ads.GoogleAds.V2.Common.SitelinkFeedItem.Parser, new[]{ "LinkText", "Line1", "Line2", "FinalUrls", "FinalMobileUrls", "TrackingUrlTemplate", "UrlCustomParameters", "FinalUrlSuffix" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.SitelinkFeedItem), global::Google.Ads.GoogleAds.V2.Common.SitelinkFeedItem.Parser, new[]{ "LinkText", "Line1", "Line2", "FinalUrls", "FinalMobileUrls", "TrackingUrlTemplate", "UrlCustomParameters", "FinalUrlSuffix" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem), global::Google.Ads.GoogleAds.V2.Common.HotelCalloutFeedItem.Parser, new[]{ "Text", "LanguageCode" }, null, null, null) })); } #endregion @@ -3961,6 +3965,186 @@ public void MergeFrom(pb::CodedInputStream input) { } + /// + /// Represents a hotel callout extension. + /// + public sealed partial class HotelCalloutFeedItem : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new HotelCalloutFeedItem()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Common.ExtensionsReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public HotelCalloutFeedItem() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public HotelCalloutFeedItem(HotelCalloutFeedItem other) : this() { + Text = other.Text; + LanguageCode = other.LanguageCode; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public HotelCalloutFeedItem Clone() { + return new HotelCalloutFeedItem(this); + } + + /// Field number for the "text" field. + public const int TextFieldNumber = 1; + private static readonly pb::FieldCodec _single_text_codec = pb::FieldCodec.ForClassWrapper(10); + private string text_; + /// + /// The callout text. + /// The length of this string should be between 1 and 25, inclusive. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Text { + get { return text_; } + set { + text_ = value; + } + } + + + /// Field number for the "language_code" field. + public const int LanguageCodeFieldNumber = 2; + private static readonly pb::FieldCodec _single_languageCode_codec = pb::FieldCodec.ForClassWrapper(18); + private string languageCode_; + /// + /// The language of the hotel callout text. + /// IETF BCP 47 compliant language code. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string LanguageCode { + get { return languageCode_; } + set { + languageCode_ = value; + } + } + + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as HotelCalloutFeedItem); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(HotelCalloutFeedItem other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Text != other.Text) return false; + if (LanguageCode != other.LanguageCode) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (text_ != null) hash ^= Text.GetHashCode(); + if (languageCode_ != null) hash ^= LanguageCode.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (text_ != null) { + _single_text_codec.WriteTagAndValue(output, Text); + } + if (languageCode_ != null) { + _single_languageCode_codec.WriteTagAndValue(output, LanguageCode); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (text_ != null) { + size += _single_text_codec.CalculateSizeWithTag(Text); + } + if (languageCode_ != null) { + size += _single_languageCode_codec.CalculateSizeWithTag(LanguageCode); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(HotelCalloutFeedItem other) { + if (other == null) { + return; + } + if (other.text_ != null) { + if (text_ == null || other.Text != "") { + Text = other.Text; + } + } + if (other.languageCode_ != null) { + if (languageCode_ == null || other.LanguageCode != "") { + LanguageCode = other.LanguageCode; + } + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + string value = _single_text_codec.Read(input); + if (text_ == null || value != "") { + Text = value; + } + break; + } + case 18: { + string value = _single_languageCode_codec.Read(input); + if (languageCode_ == null || value != "") { + LanguageCode = value; + } + break; + } + } + } + } + + } + #endregion } diff --git a/src/V2/Stubs/HotelPriceBucket.cs b/src/V2/Stubs/HotelPriceBucket.cs new file mode 100644 index 000000000..509467e19 --- /dev/null +++ b/src/V2/Stubs/HotelPriceBucket.cs @@ -0,0 +1,187 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/ads/googleads/v2/enums/hotel_price_bucket.proto +// +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Google.Ads.GoogleAds.V2.Enums { + + /// Holder for reflection information generated from google/ads/googleads/v2/enums/hotel_price_bucket.proto + public static partial class HotelPriceBucketReflection { + + #region Descriptor + /// File descriptor for google/ads/googleads/v2/enums/hotel_price_bucket.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static HotelPriceBucketReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CjZnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9ob3RlbF9wcmljZV9i", + "dWNrZXQucHJvdG8SHWdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zGhxn", + "b29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvImkKFEhvdGVsUHJpY2VCdWNr", + "ZXRFbnVtIlEKEEhvdGVsUHJpY2VCdWNrZXQSDwoLVU5TUEVDSUZJRUQQABIL", + "CgdVTktOT1dOEAESDwoLTE9XRVNUX1RJRUQQAxIOCgpOT1RfTE9XRVNUEARC", + "6gEKIWNvbS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtc0IVSG90ZWxQ", + "cmljZUJ1Y2tldFByb3RvUAFaQmdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3Rv", + "L2dvb2dsZWFwaXMvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcztlbnVtc6ICA0dB", + "QaoCHUdvb2dsZS5BZHMuR29vZ2xlQWRzLlYyLkVudW1zygIdR29vZ2xlXEFk", + "c1xHb29nbGVBZHNcVjJcRW51bXPqAiFHb29nbGU6OkFkczo6R29vZ2xlQWRz", + "OjpWMjo6RW51bXNiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketEnum), global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketEnum.Parser, null, null, new[]{ typeof(global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketEnum.Types.HotelPriceBucket) }, null) + })); + } + #endregion + + } + #region Messages + /// + /// Container for enum describing hotel price bucket for a hotel itinerary. + /// + public sealed partial class HotelPriceBucketEnum : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new HotelPriceBucketEnum()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public HotelPriceBucketEnum() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public HotelPriceBucketEnum(HotelPriceBucketEnum other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public HotelPriceBucketEnum Clone() { + return new HotelPriceBucketEnum(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as HotelPriceBucketEnum); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(HotelPriceBucketEnum other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(HotelPriceBucketEnum other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + } + + #region Nested types + /// Container for nested types declared in the HotelPriceBucketEnum message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static partial class Types { + /// + /// Enum describing possible hotel price buckets. + /// + public enum HotelPriceBucket { + /// + /// Not specified. + /// + [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0, + /// + /// The value is unknown in this version. + /// + [pbr::OriginalName("UNKNOWN")] Unknown = 1, + /// + /// Tied for lowest price. Partner is within a small variance of the lowest + /// price. + /// + [pbr::OriginalName("LOWEST_TIED")] LowestTied = 3, + /// + /// Not lowest price. Partner is not within a small variance of the lowest + /// price. + /// + [pbr::OriginalName("NOT_LOWEST")] NotLowest = 4, + } + + } + #endregion + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/V2/Stubs/Invoice.cs b/src/V2/Stubs/Invoice.cs new file mode 100644 index 000000000..de1f38189 --- /dev/null +++ b/src/V2/Stubs/Invoice.cs @@ -0,0 +1,1315 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/ads/googleads/v2/resources/invoice.proto +// +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Google.Ads.GoogleAds.V2.Resources { + + /// Holder for reflection information generated from google/ads/googleads/v2/resources/invoice.proto + public static partial class InvoiceReflection { + + #region Descriptor + /// File descriptor for google/ads/googleads/v2/resources/invoice.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static InvoiceReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Ci9nb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9yZXNvdXJjZXMvaW52b2ljZS5w", + "cm90bxIhZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIucmVzb3VyY2VzGipnb29n", + "bGUvYWRzL2dvb2dsZWFkcy92Mi9jb21tb24vZGF0ZXMucHJvdG8aMGdvb2ds", + "ZS9hZHMvZ29vZ2xlYWRzL3YyL2VudW1zL2ludm9pY2VfdHlwZS5wcm90bxoe", + "Z29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fu", + "bm90YXRpb25zLnByb3RvIs8MCgdJbnZvaWNlEhUKDXJlc291cmNlX25hbWUY", + "ASABKAkSKAoCaWQYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFs", + "dWUSSAoEdHlwZRgDIAEoDjI6Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVu", + "dW1zLkludm9pY2VUeXBlRW51bS5JbnZvaWNlVHlwZRIzCg1iaWxsaW5nX3Nl", + "dHVwGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjkKE3Bh", + "eW1lbnRzX2FjY291bnRfaWQYBSABKAsyHC5nb29nbGUucHJvdG9idWYuU3Ry", + "aW5nVmFsdWUSOQoTcGF5bWVudHNfcHJvZmlsZV9pZBgGIAEoCzIcLmdvb2ds", + "ZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIwCgppc3N1ZV9kYXRlGAcgASgLMhwu", + "Z29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEi4KCGR1ZV9kYXRlGAggASgL", + "MhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkUKEnNlcnZpY2VfZGF0", + "ZV9yYW5nZRgJIAEoCzIpLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1v", + "bi5EYXRlUmFuZ2USMwoNY3VycmVuY3lfY29kZRgKIAEoCzIcLmdvb2dsZS5w", + "cm90b2J1Zi5TdHJpbmdWYWx1ZRJFCiBpbnZvaWNlX2xldmVsX2FkanVzdG1l", + "bnRzX21pY3JvcxgLIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVl", + "EjsKFnN1YnRvdGFsX2Ftb3VudF9taWNyb3MYDCABKAsyGy5nb29nbGUucHJv", + "dG9idWYuSW50NjRWYWx1ZRI2ChF0YXhfYW1vdW50X21pY3JvcxgNIAEoCzIb", + "Lmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjgKE3RvdGFsX2Ftb3VudF9t", + "aWNyb3MYDiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI3ChFj", + "b3JyZWN0ZWRfaW52b2ljZRgPIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJp", + "bmdWYWx1ZRI3ChFyZXBsYWNlZF9pbnZvaWNlcxgQIAMoCzIcLmdvb2dsZS5w", + "cm90b2J1Zi5TdHJpbmdWYWx1ZRItCgdwZGZfdXJsGBEgASgLMhwuZ29vZ2xl", + "LnByb3RvYnVmLlN0cmluZ1ZhbHVlEmEKGGFjY291bnRfYnVkZ2V0X3N1bW1h", + "cmllcxgSIAMoCzI/Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnJlc291cmNl", + "cy5JbnZvaWNlLkFjY291bnRCdWRnZXRTdW1tYXJ5GrUEChRBY2NvdW50QnVk", + "Z2V0U3VtbWFyeRIuCghjdXN0b21lchgBIAEoCzIcLmdvb2dsZS5wcm90b2J1", + "Zi5TdHJpbmdWYWx1ZRI/ChljdXN0b21lcl9kZXNjcmlwdGl2ZV9uYW1lGAIg", + "ASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjQKDmFjY291bnRf", + "YnVkZ2V0GAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjkK", + "E2FjY291bnRfYnVkZ2V0X25hbWUYBCABKAsyHC5nb29nbGUucHJvdG9idWYu", + "U3RyaW5nVmFsdWUSOwoVcHVyY2hhc2Vfb3JkZXJfbnVtYmVyGAUgASgLMhwu", + "Z29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjsKFnN1YnRvdGFsX2Ftb3Vu", + "dF9taWNyb3MYBiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI2", + "ChF0YXhfYW1vdW50X21pY3JvcxgHIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5J", + "bnQ2NFZhbHVlEjgKE3RvdGFsX2Ftb3VudF9taWNyb3MYCCABKAsyGy5nb29n", + "bGUucHJvdG9idWYuSW50NjRWYWx1ZRJPChxiaWxsYWJsZV9hY3Rpdml0eV9k", + "YXRlX3JhbmdlGAkgASgLMikuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29t", + "bW9uLkRhdGVSYW5nZUL5AQolY29tLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", + "LnJlc291cmNlc0IMSW52b2ljZVByb3RvUAFaSmdvb2dsZS5nb2xhbmcub3Jn", + "L2dlbnByb3RvL2dvb2dsZWFwaXMvYWRzL2dvb2dsZWFkcy92Mi9yZXNvdXJj", + "ZXM7cmVzb3VyY2VzogIDR0FBqgIhR29vZ2xlLkFkcy5Hb29nbGVBZHMuVjIu", + "UmVzb3VyY2VzygIhR29vZ2xlXEFkc1xHb29nbGVBZHNcVjJcUmVzb3VyY2Vz", + "6gIlR29vZ2xlOjpBZHM6Okdvb2dsZUFkczo6VjI6OlJlc291cmNlc2IGcHJv", + "dG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.DatesReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Invoice), global::Google.Ads.GoogleAds.V2.Resources.Invoice.Parser, new[]{ "ResourceName", "Id", "Type", "BillingSetup", "PaymentsAccountId", "PaymentsProfileId", "IssueDate", "DueDate", "ServiceDateRange", "CurrencyCode", "InvoiceLevelAdjustmentsMicros", "SubtotalAmountMicros", "TaxAmountMicros", "TotalAmountMicros", "CorrectedInvoice", "ReplacedInvoices", "PdfUrl", "AccountBudgetSummaries" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Invoice.Types.AccountBudgetSummary), global::Google.Ads.GoogleAds.V2.Resources.Invoice.Types.AccountBudgetSummary.Parser, new[]{ "Customer", "CustomerDescriptiveName", "AccountBudget", "AccountBudgetName", "PurchaseOrderNumber", "SubtotalAmountMicros", "TaxAmountMicros", "TotalAmountMicros", "BillableActivityDateRange" }, null, null, null)}) + })); + } + #endregion + + } + #region Messages + /// + /// An invoice. All invoice information is snapshotted to match the PDF invoice. + /// For invoices older than the launch of InvoiceService, the snapshotted + /// information may not match the PDF invoice. + /// + public sealed partial class Invoice : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Invoice()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Resources.InvoiceReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Invoice() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Invoice(Invoice other) : this() { + resourceName_ = other.resourceName_; + Id = other.Id; + type_ = other.type_; + BillingSetup = other.BillingSetup; + PaymentsAccountId = other.PaymentsAccountId; + PaymentsProfileId = other.PaymentsProfileId; + IssueDate = other.IssueDate; + DueDate = other.DueDate; + serviceDateRange_ = other.serviceDateRange_ != null ? other.serviceDateRange_.Clone() : null; + CurrencyCode = other.CurrencyCode; + InvoiceLevelAdjustmentsMicros = other.InvoiceLevelAdjustmentsMicros; + SubtotalAmountMicros = other.SubtotalAmountMicros; + TaxAmountMicros = other.TaxAmountMicros; + TotalAmountMicros = other.TotalAmountMicros; + CorrectedInvoice = other.CorrectedInvoice; + replacedInvoices_ = other.replacedInvoices_.Clone(); + PdfUrl = other.PdfUrl; + accountBudgetSummaries_ = other.accountBudgetSummaries_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Invoice Clone() { + return new Invoice(this); + } + + /// Field number for the "resource_name" field. + public const int ResourceNameFieldNumber = 1; + private string resourceName_ = ""; + /// + /// The resource name of the invoice. Multiple customers can share a given + /// invoice, so multiple resource names may point to the same invoice. + /// Invoice resource names have the form: + /// + /// `customers/{customer_id}/invoices/{invoice_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string ResourceName { + get { return resourceName_; } + set { + resourceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "id" field. + public const int IdFieldNumber = 2; + private static readonly pb::FieldCodec _single_id_codec = pb::FieldCodec.ForClassWrapper(18); + private string id_; + /// + /// The ID of the invoice. It appears on the invoice PDF as "Invoice number". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Id { + get { return id_; } + set { + id_ = value; + } + } + + + /// Field number for the "type" field. + public const int TypeFieldNumber = 3; + private global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeEnum.Types.InvoiceType type_ = 0; + /// + /// The type of invoice. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeEnum.Types.InvoiceType Type { + get { return type_; } + set { + type_ = value; + } + } + + /// Field number for the "billing_setup" field. + public const int BillingSetupFieldNumber = 4; + private static readonly pb::FieldCodec _single_billingSetup_codec = pb::FieldCodec.ForClassWrapper(34); + private string billingSetup_; + /// + /// The resource name of this invoice’s billing setup. + /// + /// `customers/{customer_id}/billingSetups/{billing_setup_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string BillingSetup { + get { return billingSetup_; } + set { + billingSetup_ = value; + } + } + + + /// Field number for the "payments_account_id" field. + public const int PaymentsAccountIdFieldNumber = 5; + private static readonly pb::FieldCodec _single_paymentsAccountId_codec = pb::FieldCodec.ForClassWrapper(42); + private string paymentsAccountId_; + /// + /// A 16 digit ID used to identify the payments account associated with the + /// billing setup, e.g. "1234-5678-9012-3456". It appears on the invoice PDF as + /// "Billing Account Number". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string PaymentsAccountId { + get { return paymentsAccountId_; } + set { + paymentsAccountId_ = value; + } + } + + + /// Field number for the "payments_profile_id" field. + public const int PaymentsProfileIdFieldNumber = 6; + private static readonly pb::FieldCodec _single_paymentsProfileId_codec = pb::FieldCodec.ForClassWrapper(50); + private string paymentsProfileId_; + /// + /// A 12 digit ID used to identify the payments profile associated with the + /// billing setup, e.g. "1234-5678-9012". It appears on the invoice PDF as + /// "Billing ID". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string PaymentsProfileId { + get { return paymentsProfileId_; } + set { + paymentsProfileId_ = value; + } + } + + + /// Field number for the "issue_date" field. + public const int IssueDateFieldNumber = 7; + private static readonly pb::FieldCodec _single_issueDate_codec = pb::FieldCodec.ForClassWrapper(58); + private string issueDate_; + /// + /// The issue date in yyyy-mm-dd format. It appears on the invoice PDF as + /// either "Issue date" or "Invoice date". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string IssueDate { + get { return issueDate_; } + set { + issueDate_ = value; + } + } + + + /// Field number for the "due_date" field. + public const int DueDateFieldNumber = 8; + private static readonly pb::FieldCodec _single_dueDate_codec = pb::FieldCodec.ForClassWrapper(66); + private string dueDate_; + /// + /// The due date in yyyy-mm-dd format. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string DueDate { + get { return dueDate_; } + set { + dueDate_ = value; + } + } + + + /// Field number for the "service_date_range" field. + public const int ServiceDateRangeFieldNumber = 9; + private global::Google.Ads.GoogleAds.V2.Common.DateRange serviceDateRange_; + /// + /// The service period date range of this invoice. The end date is inclusive. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Common.DateRange ServiceDateRange { + get { return serviceDateRange_; } + set { + serviceDateRange_ = value; + } + } + + /// Field number for the "currency_code" field. + public const int CurrencyCodeFieldNumber = 10; + private static readonly pb::FieldCodec _single_currencyCode_codec = pb::FieldCodec.ForClassWrapper(82); + private string currencyCode_; + /// + /// The currency code. All costs are returned in this currency. A subset of the + /// currency codes derived from the ISO 4217 standard is supported. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string CurrencyCode { + get { return currencyCode_; } + set { + currencyCode_ = value; + } + } + + + /// Field number for the "invoice_level_adjustments_micros" field. + public const int InvoiceLevelAdjustmentsMicrosFieldNumber = 11; + private static readonly pb::FieldCodec _single_invoiceLevelAdjustmentsMicros_codec = pb::FieldCodec.ForStructWrapper(90); + private long? invoiceLevelAdjustmentsMicros_; + /// + /// The total amount of invoice level adjustments. These adjustments are made + /// on the invoice, not on a specific account budget. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? InvoiceLevelAdjustmentsMicros { + get { return invoiceLevelAdjustmentsMicros_; } + set { + invoiceLevelAdjustmentsMicros_ = value; + } + } + + + /// Field number for the "subtotal_amount_micros" field. + public const int SubtotalAmountMicrosFieldNumber = 12; + private static readonly pb::FieldCodec _single_subtotalAmountMicros_codec = pb::FieldCodec.ForStructWrapper(98); + private long? subtotalAmountMicros_; + /// + /// The pretax subtotal amount, in micros. This equals the sum of the + /// AccountBudgetSummary subtotal amounts, plus the invoice level adjustments. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? SubtotalAmountMicros { + get { return subtotalAmountMicros_; } + set { + subtotalAmountMicros_ = value; + } + } + + + /// Field number for the "tax_amount_micros" field. + public const int TaxAmountMicrosFieldNumber = 13; + private static readonly pb::FieldCodec _single_taxAmountMicros_codec = pb::FieldCodec.ForStructWrapper(106); + private long? taxAmountMicros_; + /// + /// The sum of all taxes on the invoice, in micros. This equals the sum of the + /// AccountBudgetSummary tax amounts, plus taxes not associated with a specific + /// account budget. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? TaxAmountMicros { + get { return taxAmountMicros_; } + set { + taxAmountMicros_ = value; + } + } + + + /// Field number for the "total_amount_micros" field. + public const int TotalAmountMicrosFieldNumber = 14; + private static readonly pb::FieldCodec _single_totalAmountMicros_codec = pb::FieldCodec.ForStructWrapper(114); + private long? totalAmountMicros_; + /// + /// The total amount, in micros. This equals the sum of the invoice subtotal + /// amount and the invoice tax amount. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? TotalAmountMicros { + get { return totalAmountMicros_; } + set { + totalAmountMicros_ = value; + } + } + + + /// Field number for the "corrected_invoice" field. + public const int CorrectedInvoiceFieldNumber = 15; + private static readonly pb::FieldCodec _single_correctedInvoice_codec = pb::FieldCodec.ForClassWrapper(122); + private string correctedInvoice_; + /// + /// The resource name of the original invoice corrected, wrote off, or canceled + /// by this invoice, if applicable. If `corrected_invoice` is set, + /// `replaced_invoices` will not be set. + /// + /// Invoice resource names have the form: + /// + /// `customers/{customer_id}/invoices/{invoice_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string CorrectedInvoice { + get { return correctedInvoice_; } + set { + correctedInvoice_ = value; + } + } + + + /// Field number for the "replaced_invoices" field. + public const int ReplacedInvoicesFieldNumber = 16; + private static readonly pb::FieldCodec _repeated_replacedInvoices_codec + = pb::FieldCodec.ForClassWrapper(130); + private readonly pbc::RepeatedField replacedInvoices_ = new pbc::RepeatedField(); + /// + /// The resource name of the original invoice(s) being rebilled or replaced by + /// this invoice, if applicable. There might be multiple replaced invoices due + /// to invoice consolidation. The replaced invoices may not belong to the same + /// payments account. If `replaced_invoices` is set, `corrected_invoice` will + /// not be set. + /// Invoice resource names have the form: + /// + /// `customers/{customer_id}/invoices/{invoice_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField ReplacedInvoices { + get { return replacedInvoices_; } + } + + /// Field number for the "pdf_url" field. + public const int PdfUrlFieldNumber = 17; + private static readonly pb::FieldCodec _single_pdfUrl_codec = pb::FieldCodec.ForClassWrapper(138); + private string pdfUrl_; + /// + /// The URL to a PDF copy of the invoice. Users need to pass in their OAuth + /// token to request the PDF with this URL. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string PdfUrl { + get { return pdfUrl_; } + set { + pdfUrl_ = value; + } + } + + + /// Field number for the "account_budget_summaries" field. + public const int AccountBudgetSummariesFieldNumber = 18; + private static readonly pb::FieldCodec _repeated_accountBudgetSummaries_codec + = pb::FieldCodec.ForMessage(146, global::Google.Ads.GoogleAds.V2.Resources.Invoice.Types.AccountBudgetSummary.Parser); + private readonly pbc::RepeatedField accountBudgetSummaries_ = new pbc::RepeatedField(); + /// + /// The list of summarized account budget information associated with this + /// invoice. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField AccountBudgetSummaries { + get { return accountBudgetSummaries_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Invoice); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Invoice other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ResourceName != other.ResourceName) return false; + if (Id != other.Id) return false; + if (Type != other.Type) return false; + if (BillingSetup != other.BillingSetup) return false; + if (PaymentsAccountId != other.PaymentsAccountId) return false; + if (PaymentsProfileId != other.PaymentsProfileId) return false; + if (IssueDate != other.IssueDate) return false; + if (DueDate != other.DueDate) return false; + if (!object.Equals(ServiceDateRange, other.ServiceDateRange)) return false; + if (CurrencyCode != other.CurrencyCode) return false; + if (InvoiceLevelAdjustmentsMicros != other.InvoiceLevelAdjustmentsMicros) return false; + if (SubtotalAmountMicros != other.SubtotalAmountMicros) return false; + if (TaxAmountMicros != other.TaxAmountMicros) return false; + if (TotalAmountMicros != other.TotalAmountMicros) return false; + if (CorrectedInvoice != other.CorrectedInvoice) return false; + if(!replacedInvoices_.Equals(other.replacedInvoices_)) return false; + if (PdfUrl != other.PdfUrl) return false; + if(!accountBudgetSummaries_.Equals(other.accountBudgetSummaries_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ResourceName.Length != 0) hash ^= ResourceName.GetHashCode(); + if (id_ != null) hash ^= Id.GetHashCode(); + if (Type != 0) hash ^= Type.GetHashCode(); + if (billingSetup_ != null) hash ^= BillingSetup.GetHashCode(); + if (paymentsAccountId_ != null) hash ^= PaymentsAccountId.GetHashCode(); + if (paymentsProfileId_ != null) hash ^= PaymentsProfileId.GetHashCode(); + if (issueDate_ != null) hash ^= IssueDate.GetHashCode(); + if (dueDate_ != null) hash ^= DueDate.GetHashCode(); + if (serviceDateRange_ != null) hash ^= ServiceDateRange.GetHashCode(); + if (currencyCode_ != null) hash ^= CurrencyCode.GetHashCode(); + if (invoiceLevelAdjustmentsMicros_ != null) hash ^= InvoiceLevelAdjustmentsMicros.GetHashCode(); + if (subtotalAmountMicros_ != null) hash ^= SubtotalAmountMicros.GetHashCode(); + if (taxAmountMicros_ != null) hash ^= TaxAmountMicros.GetHashCode(); + if (totalAmountMicros_ != null) hash ^= TotalAmountMicros.GetHashCode(); + if (correctedInvoice_ != null) hash ^= CorrectedInvoice.GetHashCode(); + hash ^= replacedInvoices_.GetHashCode(); + if (pdfUrl_ != null) hash ^= PdfUrl.GetHashCode(); + hash ^= accountBudgetSummaries_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (ResourceName.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ResourceName); + } + if (id_ != null) { + _single_id_codec.WriteTagAndValue(output, Id); + } + if (Type != 0) { + output.WriteRawTag(24); + output.WriteEnum((int) Type); + } + if (billingSetup_ != null) { + _single_billingSetup_codec.WriteTagAndValue(output, BillingSetup); + } + if (paymentsAccountId_ != null) { + _single_paymentsAccountId_codec.WriteTagAndValue(output, PaymentsAccountId); + } + if (paymentsProfileId_ != null) { + _single_paymentsProfileId_codec.WriteTagAndValue(output, PaymentsProfileId); + } + if (issueDate_ != null) { + _single_issueDate_codec.WriteTagAndValue(output, IssueDate); + } + if (dueDate_ != null) { + _single_dueDate_codec.WriteTagAndValue(output, DueDate); + } + if (serviceDateRange_ != null) { + output.WriteRawTag(74); + output.WriteMessage(ServiceDateRange); + } + if (currencyCode_ != null) { + _single_currencyCode_codec.WriteTagAndValue(output, CurrencyCode); + } + if (invoiceLevelAdjustmentsMicros_ != null) { + _single_invoiceLevelAdjustmentsMicros_codec.WriteTagAndValue(output, InvoiceLevelAdjustmentsMicros); + } + if (subtotalAmountMicros_ != null) { + _single_subtotalAmountMicros_codec.WriteTagAndValue(output, SubtotalAmountMicros); + } + if (taxAmountMicros_ != null) { + _single_taxAmountMicros_codec.WriteTagAndValue(output, TaxAmountMicros); + } + if (totalAmountMicros_ != null) { + _single_totalAmountMicros_codec.WriteTagAndValue(output, TotalAmountMicros); + } + if (correctedInvoice_ != null) { + _single_correctedInvoice_codec.WriteTagAndValue(output, CorrectedInvoice); + } + replacedInvoices_.WriteTo(output, _repeated_replacedInvoices_codec); + if (pdfUrl_ != null) { + _single_pdfUrl_codec.WriteTagAndValue(output, PdfUrl); + } + accountBudgetSummaries_.WriteTo(output, _repeated_accountBudgetSummaries_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ResourceName.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ResourceName); + } + if (id_ != null) { + size += _single_id_codec.CalculateSizeWithTag(Id); + } + if (Type != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type); + } + if (billingSetup_ != null) { + size += _single_billingSetup_codec.CalculateSizeWithTag(BillingSetup); + } + if (paymentsAccountId_ != null) { + size += _single_paymentsAccountId_codec.CalculateSizeWithTag(PaymentsAccountId); + } + if (paymentsProfileId_ != null) { + size += _single_paymentsProfileId_codec.CalculateSizeWithTag(PaymentsProfileId); + } + if (issueDate_ != null) { + size += _single_issueDate_codec.CalculateSizeWithTag(IssueDate); + } + if (dueDate_ != null) { + size += _single_dueDate_codec.CalculateSizeWithTag(DueDate); + } + if (serviceDateRange_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(ServiceDateRange); + } + if (currencyCode_ != null) { + size += _single_currencyCode_codec.CalculateSizeWithTag(CurrencyCode); + } + if (invoiceLevelAdjustmentsMicros_ != null) { + size += _single_invoiceLevelAdjustmentsMicros_codec.CalculateSizeWithTag(InvoiceLevelAdjustmentsMicros); + } + if (subtotalAmountMicros_ != null) { + size += _single_subtotalAmountMicros_codec.CalculateSizeWithTag(SubtotalAmountMicros); + } + if (taxAmountMicros_ != null) { + size += _single_taxAmountMicros_codec.CalculateSizeWithTag(TaxAmountMicros); + } + if (totalAmountMicros_ != null) { + size += _single_totalAmountMicros_codec.CalculateSizeWithTag(TotalAmountMicros); + } + if (correctedInvoice_ != null) { + size += _single_correctedInvoice_codec.CalculateSizeWithTag(CorrectedInvoice); + } + size += replacedInvoices_.CalculateSize(_repeated_replacedInvoices_codec); + if (pdfUrl_ != null) { + size += _single_pdfUrl_codec.CalculateSizeWithTag(PdfUrl); + } + size += accountBudgetSummaries_.CalculateSize(_repeated_accountBudgetSummaries_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Invoice other) { + if (other == null) { + return; + } + if (other.ResourceName.Length != 0) { + ResourceName = other.ResourceName; + } + if (other.id_ != null) { + if (id_ == null || other.Id != "") { + Id = other.Id; + } + } + if (other.Type != 0) { + Type = other.Type; + } + if (other.billingSetup_ != null) { + if (billingSetup_ == null || other.BillingSetup != "") { + BillingSetup = other.BillingSetup; + } + } + if (other.paymentsAccountId_ != null) { + if (paymentsAccountId_ == null || other.PaymentsAccountId != "") { + PaymentsAccountId = other.PaymentsAccountId; + } + } + if (other.paymentsProfileId_ != null) { + if (paymentsProfileId_ == null || other.PaymentsProfileId != "") { + PaymentsProfileId = other.PaymentsProfileId; + } + } + if (other.issueDate_ != null) { + if (issueDate_ == null || other.IssueDate != "") { + IssueDate = other.IssueDate; + } + } + if (other.dueDate_ != null) { + if (dueDate_ == null || other.DueDate != "") { + DueDate = other.DueDate; + } + } + if (other.serviceDateRange_ != null) { + if (serviceDateRange_ == null) { + ServiceDateRange = new global::Google.Ads.GoogleAds.V2.Common.DateRange(); + } + ServiceDateRange.MergeFrom(other.ServiceDateRange); + } + if (other.currencyCode_ != null) { + if (currencyCode_ == null || other.CurrencyCode != "") { + CurrencyCode = other.CurrencyCode; + } + } + if (other.invoiceLevelAdjustmentsMicros_ != null) { + if (invoiceLevelAdjustmentsMicros_ == null || other.InvoiceLevelAdjustmentsMicros != 0L) { + InvoiceLevelAdjustmentsMicros = other.InvoiceLevelAdjustmentsMicros; + } + } + if (other.subtotalAmountMicros_ != null) { + if (subtotalAmountMicros_ == null || other.SubtotalAmountMicros != 0L) { + SubtotalAmountMicros = other.SubtotalAmountMicros; + } + } + if (other.taxAmountMicros_ != null) { + if (taxAmountMicros_ == null || other.TaxAmountMicros != 0L) { + TaxAmountMicros = other.TaxAmountMicros; + } + } + if (other.totalAmountMicros_ != null) { + if (totalAmountMicros_ == null || other.TotalAmountMicros != 0L) { + TotalAmountMicros = other.TotalAmountMicros; + } + } + if (other.correctedInvoice_ != null) { + if (correctedInvoice_ == null || other.CorrectedInvoice != "") { + CorrectedInvoice = other.CorrectedInvoice; + } + } + replacedInvoices_.Add(other.replacedInvoices_); + if (other.pdfUrl_ != null) { + if (pdfUrl_ == null || other.PdfUrl != "") { + PdfUrl = other.PdfUrl; + } + } + accountBudgetSummaries_.Add(other.accountBudgetSummaries_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + ResourceName = input.ReadString(); + break; + } + case 18: { + string value = _single_id_codec.Read(input); + if (id_ == null || value != "") { + Id = value; + } + break; + } + case 24: { + Type = (global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeEnum.Types.InvoiceType) input.ReadEnum(); + break; + } + case 34: { + string value = _single_billingSetup_codec.Read(input); + if (billingSetup_ == null || value != "") { + BillingSetup = value; + } + break; + } + case 42: { + string value = _single_paymentsAccountId_codec.Read(input); + if (paymentsAccountId_ == null || value != "") { + PaymentsAccountId = value; + } + break; + } + case 50: { + string value = _single_paymentsProfileId_codec.Read(input); + if (paymentsProfileId_ == null || value != "") { + PaymentsProfileId = value; + } + break; + } + case 58: { + string value = _single_issueDate_codec.Read(input); + if (issueDate_ == null || value != "") { + IssueDate = value; + } + break; + } + case 66: { + string value = _single_dueDate_codec.Read(input); + if (dueDate_ == null || value != "") { + DueDate = value; + } + break; + } + case 74: { + if (serviceDateRange_ == null) { + ServiceDateRange = new global::Google.Ads.GoogleAds.V2.Common.DateRange(); + } + input.ReadMessage(ServiceDateRange); + break; + } + case 82: { + string value = _single_currencyCode_codec.Read(input); + if (currencyCode_ == null || value != "") { + CurrencyCode = value; + } + break; + } + case 90: { + long? value = _single_invoiceLevelAdjustmentsMicros_codec.Read(input); + if (invoiceLevelAdjustmentsMicros_ == null || value != 0L) { + InvoiceLevelAdjustmentsMicros = value; + } + break; + } + case 98: { + long? value = _single_subtotalAmountMicros_codec.Read(input); + if (subtotalAmountMicros_ == null || value != 0L) { + SubtotalAmountMicros = value; + } + break; + } + case 106: { + long? value = _single_taxAmountMicros_codec.Read(input); + if (taxAmountMicros_ == null || value != 0L) { + TaxAmountMicros = value; + } + break; + } + case 114: { + long? value = _single_totalAmountMicros_codec.Read(input); + if (totalAmountMicros_ == null || value != 0L) { + TotalAmountMicros = value; + } + break; + } + case 122: { + string value = _single_correctedInvoice_codec.Read(input); + if (correctedInvoice_ == null || value != "") { + CorrectedInvoice = value; + } + break; + } + case 130: { + replacedInvoices_.AddEntriesFrom(input, _repeated_replacedInvoices_codec); + break; + } + case 138: { + string value = _single_pdfUrl_codec.Read(input); + if (pdfUrl_ == null || value != "") { + PdfUrl = value; + } + break; + } + case 146: { + accountBudgetSummaries_.AddEntriesFrom(input, _repeated_accountBudgetSummaries_codec); + break; + } + } + } + } + + #region Nested types + /// Container for nested types declared in the Invoice message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static partial class Types { + /// + /// Represents a summarized account budget billable cost. + /// + public sealed partial class AccountBudgetSummary : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AccountBudgetSummary()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Resources.Invoice.Descriptor.NestedTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AccountBudgetSummary() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AccountBudgetSummary(AccountBudgetSummary other) : this() { + Customer = other.Customer; + CustomerDescriptiveName = other.CustomerDescriptiveName; + AccountBudget = other.AccountBudget; + AccountBudgetName = other.AccountBudgetName; + PurchaseOrderNumber = other.PurchaseOrderNumber; + SubtotalAmountMicros = other.SubtotalAmountMicros; + TaxAmountMicros = other.TaxAmountMicros; + TotalAmountMicros = other.TotalAmountMicros; + billableActivityDateRange_ = other.billableActivityDateRange_ != null ? other.billableActivityDateRange_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AccountBudgetSummary Clone() { + return new AccountBudgetSummary(this); + } + + /// Field number for the "customer" field. + public const int CustomerFieldNumber = 1; + private static readonly pb::FieldCodec _single_customer_codec = pb::FieldCodec.ForClassWrapper(10); + private string customer_; + /// + /// The resource name of the customer associated with this account budget. + /// This contains the customer ID, which appears on the invoice PDF as + /// "Account ID". + /// Customer resource names have the form: + /// + /// `customers/{customer_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Customer { + get { return customer_; } + set { + customer_ = value; + } + } + + + /// Field number for the "customer_descriptive_name" field. + public const int CustomerDescriptiveNameFieldNumber = 2; + private static readonly pb::FieldCodec _single_customerDescriptiveName_codec = pb::FieldCodec.ForClassWrapper(18); + private string customerDescriptiveName_; + /// + /// The descriptive name of the account budget’s customer. It appears on the + /// invoice PDF as "Account". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string CustomerDescriptiveName { + get { return customerDescriptiveName_; } + set { + customerDescriptiveName_ = value; + } + } + + + /// Field number for the "account_budget" field. + public const int AccountBudgetFieldNumber = 3; + private static readonly pb::FieldCodec _single_accountBudget_codec = pb::FieldCodec.ForClassWrapper(26); + private string accountBudget_; + /// + /// The resource name of the account budget associated with this summarized + /// billable cost. + /// AccountBudget resource names have the form: + /// + /// `customers/{customer_id}/accountBudgets/{account_budget_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string AccountBudget { + get { return accountBudget_; } + set { + accountBudget_ = value; + } + } + + + /// Field number for the "account_budget_name" field. + public const int AccountBudgetNameFieldNumber = 4; + private static readonly pb::FieldCodec _single_accountBudgetName_codec = pb::FieldCodec.ForClassWrapper(34); + private string accountBudgetName_; + /// + /// The name of the account budget. It appears on the invoice PDF as "Account + /// budget". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string AccountBudgetName { + get { return accountBudgetName_; } + set { + accountBudgetName_ = value; + } + } + + + /// Field number for the "purchase_order_number" field. + public const int PurchaseOrderNumberFieldNumber = 5; + private static readonly pb::FieldCodec _single_purchaseOrderNumber_codec = pb::FieldCodec.ForClassWrapper(42); + private string purchaseOrderNumber_; + /// + /// The purchase order number of the account budget. It appears on the + /// invoice PDF as "Purchase order". + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string PurchaseOrderNumber { + get { return purchaseOrderNumber_; } + set { + purchaseOrderNumber_ = value; + } + } + + + /// Field number for the "subtotal_amount_micros" field. + public const int SubtotalAmountMicrosFieldNumber = 6; + private static readonly pb::FieldCodec _single_subtotalAmountMicros_codec = pb::FieldCodec.ForStructWrapper(50); + private long? subtotalAmountMicros_; + /// + /// The pretax subtotal amount attributable to this budget during the service + /// period, in micros. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? SubtotalAmountMicros { + get { return subtotalAmountMicros_; } + set { + subtotalAmountMicros_ = value; + } + } + + + /// Field number for the "tax_amount_micros" field. + public const int TaxAmountMicrosFieldNumber = 7; + private static readonly pb::FieldCodec _single_taxAmountMicros_codec = pb::FieldCodec.ForStructWrapper(58); + private long? taxAmountMicros_; + /// + /// The tax amount attributable to this budget during the service period, in + /// micros. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? TaxAmountMicros { + get { return taxAmountMicros_; } + set { + taxAmountMicros_ = value; + } + } + + + /// Field number for the "total_amount_micros" field. + public const int TotalAmountMicrosFieldNumber = 8; + private static readonly pb::FieldCodec _single_totalAmountMicros_codec = pb::FieldCodec.ForStructWrapper(66); + private long? totalAmountMicros_; + /// + /// The total amount attributable to this budget during the service period, + /// in micros. This equals the sum of the account budget subtotal amount and + /// the account budget tax amount. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long? TotalAmountMicros { + get { return totalAmountMicros_; } + set { + totalAmountMicros_ = value; + } + } + + + /// Field number for the "billable_activity_date_range" field. + public const int BillableActivityDateRangeFieldNumber = 9; + private global::Google.Ads.GoogleAds.V2.Common.DateRange billableActivityDateRange_; + /// + /// The billable activity date range of the account budget, within the + /// service date range of this invoice. The end date is inclusive. This can + /// be different from the account budget's start and end time. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Common.DateRange BillableActivityDateRange { + get { return billableActivityDateRange_; } + set { + billableActivityDateRange_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as AccountBudgetSummary); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(AccountBudgetSummary other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Customer != other.Customer) return false; + if (CustomerDescriptiveName != other.CustomerDescriptiveName) return false; + if (AccountBudget != other.AccountBudget) return false; + if (AccountBudgetName != other.AccountBudgetName) return false; + if (PurchaseOrderNumber != other.PurchaseOrderNumber) return false; + if (SubtotalAmountMicros != other.SubtotalAmountMicros) return false; + if (TaxAmountMicros != other.TaxAmountMicros) return false; + if (TotalAmountMicros != other.TotalAmountMicros) return false; + if (!object.Equals(BillableActivityDateRange, other.BillableActivityDateRange)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (customer_ != null) hash ^= Customer.GetHashCode(); + if (customerDescriptiveName_ != null) hash ^= CustomerDescriptiveName.GetHashCode(); + if (accountBudget_ != null) hash ^= AccountBudget.GetHashCode(); + if (accountBudgetName_ != null) hash ^= AccountBudgetName.GetHashCode(); + if (purchaseOrderNumber_ != null) hash ^= PurchaseOrderNumber.GetHashCode(); + if (subtotalAmountMicros_ != null) hash ^= SubtotalAmountMicros.GetHashCode(); + if (taxAmountMicros_ != null) hash ^= TaxAmountMicros.GetHashCode(); + if (totalAmountMicros_ != null) hash ^= TotalAmountMicros.GetHashCode(); + if (billableActivityDateRange_ != null) hash ^= BillableActivityDateRange.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (customer_ != null) { + _single_customer_codec.WriteTagAndValue(output, Customer); + } + if (customerDescriptiveName_ != null) { + _single_customerDescriptiveName_codec.WriteTagAndValue(output, CustomerDescriptiveName); + } + if (accountBudget_ != null) { + _single_accountBudget_codec.WriteTagAndValue(output, AccountBudget); + } + if (accountBudgetName_ != null) { + _single_accountBudgetName_codec.WriteTagAndValue(output, AccountBudgetName); + } + if (purchaseOrderNumber_ != null) { + _single_purchaseOrderNumber_codec.WriteTagAndValue(output, PurchaseOrderNumber); + } + if (subtotalAmountMicros_ != null) { + _single_subtotalAmountMicros_codec.WriteTagAndValue(output, SubtotalAmountMicros); + } + if (taxAmountMicros_ != null) { + _single_taxAmountMicros_codec.WriteTagAndValue(output, TaxAmountMicros); + } + if (totalAmountMicros_ != null) { + _single_totalAmountMicros_codec.WriteTagAndValue(output, TotalAmountMicros); + } + if (billableActivityDateRange_ != null) { + output.WriteRawTag(74); + output.WriteMessage(BillableActivityDateRange); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (customer_ != null) { + size += _single_customer_codec.CalculateSizeWithTag(Customer); + } + if (customerDescriptiveName_ != null) { + size += _single_customerDescriptiveName_codec.CalculateSizeWithTag(CustomerDescriptiveName); + } + if (accountBudget_ != null) { + size += _single_accountBudget_codec.CalculateSizeWithTag(AccountBudget); + } + if (accountBudgetName_ != null) { + size += _single_accountBudgetName_codec.CalculateSizeWithTag(AccountBudgetName); + } + if (purchaseOrderNumber_ != null) { + size += _single_purchaseOrderNumber_codec.CalculateSizeWithTag(PurchaseOrderNumber); + } + if (subtotalAmountMicros_ != null) { + size += _single_subtotalAmountMicros_codec.CalculateSizeWithTag(SubtotalAmountMicros); + } + if (taxAmountMicros_ != null) { + size += _single_taxAmountMicros_codec.CalculateSizeWithTag(TaxAmountMicros); + } + if (totalAmountMicros_ != null) { + size += _single_totalAmountMicros_codec.CalculateSizeWithTag(TotalAmountMicros); + } + if (billableActivityDateRange_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(BillableActivityDateRange); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(AccountBudgetSummary other) { + if (other == null) { + return; + } + if (other.customer_ != null) { + if (customer_ == null || other.Customer != "") { + Customer = other.Customer; + } + } + if (other.customerDescriptiveName_ != null) { + if (customerDescriptiveName_ == null || other.CustomerDescriptiveName != "") { + CustomerDescriptiveName = other.CustomerDescriptiveName; + } + } + if (other.accountBudget_ != null) { + if (accountBudget_ == null || other.AccountBudget != "") { + AccountBudget = other.AccountBudget; + } + } + if (other.accountBudgetName_ != null) { + if (accountBudgetName_ == null || other.AccountBudgetName != "") { + AccountBudgetName = other.AccountBudgetName; + } + } + if (other.purchaseOrderNumber_ != null) { + if (purchaseOrderNumber_ == null || other.PurchaseOrderNumber != "") { + PurchaseOrderNumber = other.PurchaseOrderNumber; + } + } + if (other.subtotalAmountMicros_ != null) { + if (subtotalAmountMicros_ == null || other.SubtotalAmountMicros != 0L) { + SubtotalAmountMicros = other.SubtotalAmountMicros; + } + } + if (other.taxAmountMicros_ != null) { + if (taxAmountMicros_ == null || other.TaxAmountMicros != 0L) { + TaxAmountMicros = other.TaxAmountMicros; + } + } + if (other.totalAmountMicros_ != null) { + if (totalAmountMicros_ == null || other.TotalAmountMicros != 0L) { + TotalAmountMicros = other.TotalAmountMicros; + } + } + if (other.billableActivityDateRange_ != null) { + if (billableActivityDateRange_ == null) { + BillableActivityDateRange = new global::Google.Ads.GoogleAds.V2.Common.DateRange(); + } + BillableActivityDateRange.MergeFrom(other.BillableActivityDateRange); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + string value = _single_customer_codec.Read(input); + if (customer_ == null || value != "") { + Customer = value; + } + break; + } + case 18: { + string value = _single_customerDescriptiveName_codec.Read(input); + if (customerDescriptiveName_ == null || value != "") { + CustomerDescriptiveName = value; + } + break; + } + case 26: { + string value = _single_accountBudget_codec.Read(input); + if (accountBudget_ == null || value != "") { + AccountBudget = value; + } + break; + } + case 34: { + string value = _single_accountBudgetName_codec.Read(input); + if (accountBudgetName_ == null || value != "") { + AccountBudgetName = value; + } + break; + } + case 42: { + string value = _single_purchaseOrderNumber_codec.Read(input); + if (purchaseOrderNumber_ == null || value != "") { + PurchaseOrderNumber = value; + } + break; + } + case 50: { + long? value = _single_subtotalAmountMicros_codec.Read(input); + if (subtotalAmountMicros_ == null || value != 0L) { + SubtotalAmountMicros = value; + } + break; + } + case 58: { + long? value = _single_taxAmountMicros_codec.Read(input); + if (taxAmountMicros_ == null || value != 0L) { + TaxAmountMicros = value; + } + break; + } + case 66: { + long? value = _single_totalAmountMicros_codec.Read(input); + if (totalAmountMicros_ == null || value != 0L) { + TotalAmountMicros = value; + } + break; + } + case 74: { + if (billableActivityDateRange_ == null) { + BillableActivityDateRange = new global::Google.Ads.GoogleAds.V2.Common.DateRange(); + } + input.ReadMessage(BillableActivityDateRange); + break; + } + } + } + } + + } + + } + #endregion + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/V2/Stubs/InvoiceError.cs b/src/V2/Stubs/InvoiceError.cs new file mode 100644 index 000000000..789cb6d10 --- /dev/null +++ b/src/V2/Stubs/InvoiceError.cs @@ -0,0 +1,185 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/ads/googleads/v2/errors/invoice_error.proto +// +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Google.Ads.GoogleAds.V2.Errors { + + /// Holder for reflection information generated from google/ads/googleads/v2/errors/invoice_error.proto + public static partial class InvoiceErrorReflection { + + #region Descriptor + /// File descriptor for google/ads/googleads/v2/errors/invoice_error.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static InvoiceErrorReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CjJnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lcnJvcnMvaW52b2ljZV9lcnJv", + "ci5wcm90bxIeZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3JzGhxnb29n", + "bGUvYXBpL2Fubm90YXRpb25zLnByb3RvInMKEEludm9pY2VFcnJvckVudW0i", + "XwoMSW52b2ljZUVycm9yEg8KC1VOU1BFQ0lGSUVEEAASCwoHVU5LTk9XThAB", + "EhYKEllFQVJfTU9OVEhfVE9PX09MRBACEhkKFU5PVF9JTlZPSUNFRF9DVVNU", + "T01FUhADQuwBCiJjb20uZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZXJyb3Jz", + "QhFJbnZvaWNlRXJyb3JQcm90b1ABWkRnb29nbGUuZ29sYW5nLm9yZy9nZW5w", + "cm90by9nb29nbGVhcGlzL2Fkcy9nb29nbGVhZHMvdjIvZXJyb3JzO2Vycm9y", + "c6ICA0dBQaoCHkdvb2dsZS5BZHMuR29vZ2xlQWRzLlYyLkVycm9yc8oCHkdv", + "b2dsZVxBZHNcR29vZ2xlQWRzXFYyXEVycm9yc+oCIkdvb2dsZTo6QWRzOjpH", + "b29nbGVBZHM6OlYyOjpFcnJvcnNiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorEnum), global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorEnum.Parser, null, null, new[]{ typeof(global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorEnum.Types.InvoiceError) }, null) + })); + } + #endregion + + } + #region Messages + /// + /// Container for enum describing possible invoice errors. + /// + public sealed partial class InvoiceErrorEnum : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvoiceErrorEnum()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Errors.InvoiceErrorReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public InvoiceErrorEnum() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public InvoiceErrorEnum(InvoiceErrorEnum other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public InvoiceErrorEnum Clone() { + return new InvoiceErrorEnum(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as InvoiceErrorEnum); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(InvoiceErrorEnum other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(InvoiceErrorEnum other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + } + + #region Nested types + /// Container for nested types declared in the InvoiceErrorEnum message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static partial class Types { + /// + /// Enum describing possible invoice errors. + /// + public enum InvoiceError { + /// + /// Enum unspecified. + /// + [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0, + /// + /// The received error code is not known in this version. + /// + [pbr::OriginalName("UNKNOWN")] Unknown = 1, + /// + /// Cannot request invoices issued before 2019-01-01. + /// + [pbr::OriginalName("YEAR_MONTH_TOO_OLD")] YearMonthTooOld = 2, + /// + /// Cannot request invoices for customer who doesn't receive invoices. + /// + [pbr::OriginalName("NOT_INVOICED_CUSTOMER")] NotInvoicedCustomer = 3, + } + + } + #endregion + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/V2/Stubs/InvoiceService.cs b/src/V2/Stubs/InvoiceService.cs new file mode 100644 index 000000000..a86e80d5e --- /dev/null +++ b/src/V2/Stubs/InvoiceService.cs @@ -0,0 +1,423 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/ads/googleads/v2/services/invoice_service.proto +// +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Google.Ads.GoogleAds.V2.Services { + + /// Holder for reflection information generated from google/ads/googleads/v2/services/invoice_service.proto + public static partial class InvoiceServiceReflection { + + #region Descriptor + /// File descriptor for google/ads/googleads/v2/services/invoice_service.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static InvoiceServiceReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CjZnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9zZXJ2aWNlcy9pbnZvaWNlX3Nl", + "cnZpY2UucHJvdG8SIGdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnNlcnZpY2Vz", + "GjFnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9tb250aF9vZl95ZWFy", + "LnByb3RvGi9nb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9yZXNvdXJjZXMvaW52", + "b2ljZS5wcm90bxocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxoXZ29v", + "Z2xlL2FwaS9jbGllbnQucHJvdG8ipgEKE0xpc3RJbnZvaWNlc1JlcXVlc3QS", + "EwoLY3VzdG9tZXJfaWQYASABKAkSFQoNYmlsbGluZ19zZXR1cBgCIAEoCRIS", + "Cgppc3N1ZV95ZWFyGAMgASgJEk8KC2lzc3VlX21vbnRoGAQgASgOMjouZ29v", + "Z2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuTW9udGhPZlllYXJFbnVtLk1v", + "bnRoT2ZZZWFyIlQKFExpc3RJbnZvaWNlc1Jlc3BvbnNlEjwKCGludm9pY2Vz", + "GAEgAygLMiouZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIucmVzb3VyY2VzLklu", + "dm9pY2Uy3QEKDkludm9pY2VTZXJ2aWNlEq0BCgxMaXN0SW52b2ljZXMSNS5n", + "b29nbGUuYWRzLmdvb2dsZWFkcy52Mi5zZXJ2aWNlcy5MaXN0SW52b2ljZXNS", + "ZXF1ZXN0GjYuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuc2VydmljZXMuTGlz", + "dEludm9pY2VzUmVzcG9uc2UiLoLT5JMCKBImL3YyL2N1c3RvbWVycy97Y3Vz", + "dG9tZXJfaWQ9Kn0vaW52b2ljZXMaG8pBGGdvb2dsZWFkcy5nb29nbGVhcGlz", + "LmNvbUL6AQokY29tLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnNlcnZpY2Vz", + "QhNJbnZvaWNlU2VydmljZVByb3RvUAFaSGdvb2dsZS5nb2xhbmcub3JnL2dl", + "bnByb3RvL2dvb2dsZWFwaXMvYWRzL2dvb2dsZWFkcy92Mi9zZXJ2aWNlcztz", + "ZXJ2aWNlc6ICA0dBQaoCIEdvb2dsZS5BZHMuR29vZ2xlQWRzLlYyLlNlcnZp", + "Y2VzygIgR29vZ2xlXEFkc1xHb29nbGVBZHNcVjJcU2VydmljZXPqAiRHb29n", + "bGU6OkFkczo6R29vZ2xlQWRzOjpWMjo6U2VydmljZXNiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Enums.MonthOfYearReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Resources.InvoiceReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, global::Google.Api.ClientReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest), global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest.Parser, new[]{ "CustomerId", "BillingSetup", "IssueYear", "IssueMonth" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesResponse), global::Google.Ads.GoogleAds.V2.Services.ListInvoicesResponse.Parser, new[]{ "Invoices" }, null, null, null) + })); + } + #endregion + + } + #region Messages + /// + /// Request message for fetching the invoices of a given billing setup that were + /// issued during a given month. + /// + public sealed partial class ListInvoicesRequest : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ListInvoicesRequest()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Services.InvoiceServiceReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ListInvoicesRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ListInvoicesRequest(ListInvoicesRequest other) : this() { + customerId_ = other.customerId_; + billingSetup_ = other.billingSetup_; + issueYear_ = other.issueYear_; + issueMonth_ = other.issueMonth_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ListInvoicesRequest Clone() { + return new ListInvoicesRequest(this); + } + + /// Field number for the "customer_id" field. + public const int CustomerIdFieldNumber = 1; + private string customerId_ = ""; + /// + /// The ID of the customer to fetch invoices for. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string CustomerId { + get { return customerId_; } + set { + customerId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "billing_setup" field. + public const int BillingSetupFieldNumber = 2; + private string billingSetup_ = ""; + /// + /// Required. The billing setup resource name of the requested invoices. + /// + /// `customers/{customer_id}/billingSetups/{billing_setup_id}` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string BillingSetup { + get { return billingSetup_; } + set { + billingSetup_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "issue_year" field. + public const int IssueYearFieldNumber = 3; + private string issueYear_ = ""; + /// + /// Required. The issue year to retrieve invoices, in yyyy format. Only + /// invoices issued in 2019 or later can be retrieved. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string IssueYear { + get { return issueYear_; } + set { + issueYear_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "issue_month" field. + public const int IssueMonthFieldNumber = 4; + private global::Google.Ads.GoogleAds.V2.Enums.MonthOfYearEnum.Types.MonthOfYear issueMonth_ = 0; + /// + /// Required. The issue month to retrieve invoices. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Enums.MonthOfYearEnum.Types.MonthOfYear IssueMonth { + get { return issueMonth_; } + set { + issueMonth_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as ListInvoicesRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(ListInvoicesRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (CustomerId != other.CustomerId) return false; + if (BillingSetup != other.BillingSetup) return false; + if (IssueYear != other.IssueYear) return false; + if (IssueMonth != other.IssueMonth) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (CustomerId.Length != 0) hash ^= CustomerId.GetHashCode(); + if (BillingSetup.Length != 0) hash ^= BillingSetup.GetHashCode(); + if (IssueYear.Length != 0) hash ^= IssueYear.GetHashCode(); + if (IssueMonth != 0) hash ^= IssueMonth.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (CustomerId.Length != 0) { + output.WriteRawTag(10); + output.WriteString(CustomerId); + } + if (BillingSetup.Length != 0) { + output.WriteRawTag(18); + output.WriteString(BillingSetup); + } + if (IssueYear.Length != 0) { + output.WriteRawTag(26); + output.WriteString(IssueYear); + } + if (IssueMonth != 0) { + output.WriteRawTag(32); + output.WriteEnum((int) IssueMonth); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (CustomerId.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(CustomerId); + } + if (BillingSetup.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(BillingSetup); + } + if (IssueYear.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(IssueYear); + } + if (IssueMonth != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) IssueMonth); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(ListInvoicesRequest other) { + if (other == null) { + return; + } + if (other.CustomerId.Length != 0) { + CustomerId = other.CustomerId; + } + if (other.BillingSetup.Length != 0) { + BillingSetup = other.BillingSetup; + } + if (other.IssueYear.Length != 0) { + IssueYear = other.IssueYear; + } + if (other.IssueMonth != 0) { + IssueMonth = other.IssueMonth; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + CustomerId = input.ReadString(); + break; + } + case 18: { + BillingSetup = input.ReadString(); + break; + } + case 26: { + IssueYear = input.ReadString(); + break; + } + case 32: { + IssueMonth = (global::Google.Ads.GoogleAds.V2.Enums.MonthOfYearEnum.Types.MonthOfYear) input.ReadEnum(); + break; + } + } + } + } + + } + + /// + /// Response message for [InvoiceService.ListInvoices][google.ads.googleads.v2.services.InvoiceService.ListInvoices]. + /// + public sealed partial class ListInvoicesResponse : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ListInvoicesResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Services.InvoiceServiceReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ListInvoicesResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ListInvoicesResponse(ListInvoicesResponse other) : this() { + invoices_ = other.invoices_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ListInvoicesResponse Clone() { + return new ListInvoicesResponse(this); + } + + /// Field number for the "invoices" field. + public const int InvoicesFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_invoices_codec + = pb::FieldCodec.ForMessage(10, global::Google.Ads.GoogleAds.V2.Resources.Invoice.Parser); + private readonly pbc::RepeatedField invoices_ = new pbc::RepeatedField(); + /// + /// The list of invoices that match the billing setup and time period. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField Invoices { + get { return invoices_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as ListInvoicesResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(ListInvoicesResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!invoices_.Equals(other.invoices_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + hash ^= invoices_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + invoices_.WriteTo(output, _repeated_invoices_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + size += invoices_.CalculateSize(_repeated_invoices_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(ListInvoicesResponse other) { + if (other == null) { + return; + } + invoices_.Add(other.invoices_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + invoices_.AddEntriesFrom(input, _repeated_invoices_codec); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/V2/Stubs/InvoiceServiceClient.cs b/src/V2/Stubs/InvoiceServiceClient.cs new file mode 100644 index 000000000..2308b9701 --- /dev/null +++ b/src/V2/Stubs/InvoiceServiceClient.cs @@ -0,0 +1,615 @@ +// Copyright 2019 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 code. DO NOT EDIT! + +using gagve = Google.Ads.GoogleAds.V2.Enums; +using gax = Google.Api.Gax; +using gaxgrpc = Google.Api.Gax.Grpc; +using pb = Google.Protobuf; +using pbwkt = Google.Protobuf.WellKnownTypes; +using grpccore = Grpc.Core; +using sys = System; +using sc = System.Collections; +using scg = System.Collections.Generic; +using sco = System.Collections.ObjectModel; +using st = System.Threading; +using stt = System.Threading.Tasks; + +namespace Google.Ads.GoogleAds.V2.Services +{ + /// + /// Settings for a . + /// + public sealed partial class InvoiceServiceSettings : gaxgrpc::ServiceSettingsBase + { + /// + /// Get a new instance of the default . + /// + /// + /// A new instance of the default . + /// + public static InvoiceServiceSettings GetDefault() => new InvoiceServiceSettings(); + + /// + /// Constructs a new object with default settings. + /// + public InvoiceServiceSettings() { } + + private InvoiceServiceSettings(InvoiceServiceSettings existing) : base(existing) + { + gax::GaxPreconditions.CheckNotNull(existing, nameof(existing)); + ListInvoicesSettings = existing.ListInvoicesSettings; + OnCopy(existing); + } + + partial void OnCopy(InvoiceServiceSettings existing); + + /// + /// The filter specifying which RPC s are eligible for retry + /// for "Idempotent" RPC methods. + /// + /// + /// The eligible RPC s for retry for "Idempotent" RPC methods are: + /// + /// + /// + /// + /// + public static sys::Predicate IdempotentRetryFilter { get; } = + gaxgrpc::RetrySettings.FilterForStatusCodes(grpccore::StatusCode.DeadlineExceeded, grpccore::StatusCode.Unavailable); + + /// + /// The filter specifying which RPC s are eligible for retry + /// for "NonIdempotent" RPC methods. + /// + /// + /// There are no RPC s eligible for retry for "NonIdempotent" RPC methods. + /// + public static sys::Predicate NonIdempotentRetryFilter { get; } = + gaxgrpc::RetrySettings.FilterForStatusCodes(); + + /// + /// "Default" retry backoff for RPC methods. + /// + /// + /// The "Default" retry backoff for RPC methods. + /// + /// + /// The "Default" retry backoff for RPC methods is defined as: + /// + /// Initial delay: 5000 milliseconds + /// Maximum delay: 60000 milliseconds + /// Delay multiplier: 1.3 + /// + /// + public static gaxgrpc::BackoffSettings GetDefaultRetryBackoff() => new gaxgrpc::BackoffSettings( + delay: sys::TimeSpan.FromMilliseconds(5000), + maxDelay: sys::TimeSpan.FromMilliseconds(60000), + delayMultiplier: 1.3 + ); + + /// + /// "Default" timeout backoff for RPC methods. + /// + /// + /// The "Default" timeout backoff for RPC methods. + /// + /// + /// The "Default" timeout backoff for RPC methods is defined as: + /// + /// Initial timeout: 3600000 milliseconds + /// Timeout multiplier: 1.0 + /// Maximum timeout: 3600000 milliseconds + /// + /// + public static gaxgrpc::BackoffSettings GetDefaultTimeoutBackoff() => new gaxgrpc::BackoffSettings( + delay: sys::TimeSpan.FromMilliseconds(3600000), + maxDelay: sys::TimeSpan.FromMilliseconds(3600000), + delayMultiplier: 1.0 + ); + + /// + /// for synchronous and asynchronous calls to + /// InvoiceServiceClient.ListInvoices and InvoiceServiceClient.ListInvoicesAsync. + /// + /// + /// The default InvoiceServiceClient.ListInvoices and + /// InvoiceServiceClient.ListInvoicesAsync are: + /// + /// Initial retry delay: 5000 milliseconds + /// Retry delay multiplier: 1.3 + /// Retry maximum delay: 60000 milliseconds + /// Initial timeout: 3600000 milliseconds + /// Timeout multiplier: 1.0 + /// Timeout maximum delay: 3600000 milliseconds + /// + /// Retry will be attempted on the following response status codes: + /// + /// + /// + /// + /// Default RPC expiration is 3600000 milliseconds. + /// + public gaxgrpc::CallSettings ListInvoicesSettings { get; set; } = gaxgrpc::CallSettings.FromCallTiming( + gaxgrpc::CallTiming.FromRetry(new gaxgrpc::RetrySettings( + retryBackoff: GetDefaultRetryBackoff(), + timeoutBackoff: GetDefaultTimeoutBackoff(), + totalExpiration: gax::Expiration.FromTimeout(sys::TimeSpan.FromMilliseconds(3600000)), + retryFilter: IdempotentRetryFilter + ))); + + /// + /// Creates a deep clone of this object, with all the same property values. + /// + /// A deep clone of this object. + public InvoiceServiceSettings Clone() => new InvoiceServiceSettings(this); + } + + /// + /// Builder class for to provide simple configuration of credentials, endpoint etc. + /// + public sealed partial class InvoiceServiceClientBuilder : gaxgrpc::ClientBuilderBase + { + /// + /// The settings to use for RPCs, or null for the default settings. + /// + public InvoiceServiceSettings Settings { get; set; } + + /// + public override InvoiceServiceClient Build() + { + Validate(); + grpccore::CallInvoker callInvoker = CreateCallInvoker(); + return InvoiceServiceClient.Create(callInvoker, Settings); + } + + /// + public override async stt::Task BuildAsync(st::CancellationToken cancellationToken = default) + { + Validate(); + grpccore::CallInvoker callInvoker = await CreateCallInvokerAsync(cancellationToken).ConfigureAwait(false); + return InvoiceServiceClient.Create(callInvoker, Settings); + } + + /// + protected override gaxgrpc::ServiceEndpoint GetDefaultEndpoint() => InvoiceServiceClient.DefaultEndpoint; + + /// + protected override scg::IReadOnlyList GetDefaultScopes() => InvoiceServiceClient.DefaultScopes; + + /// + protected override gaxgrpc::ChannelPool GetChannelPool() => InvoiceServiceClient.ChannelPool; + } + + /// + /// InvoiceService client wrapper, for convenient use. + /// + public abstract partial class InvoiceServiceClient + { + /// + /// The default endpoint for the InvoiceService service, which is a host of "googleads.googleapis.com" and a port of 443. + /// + public static gaxgrpc::ServiceEndpoint DefaultEndpoint { get; } = new gaxgrpc::ServiceEndpoint("googleads.googleapis.com", 443); + + /// + /// The default InvoiceService scopes. + /// + /// + /// The default InvoiceService scopes are: + /// + /// + /// + public static scg::IReadOnlyList DefaultScopes { get; } = new sco::ReadOnlyCollection(new string[] { + }); + + private static readonly gaxgrpc::ChannelPool s_channelPool = new gaxgrpc::ChannelPool(DefaultScopes); + + internal static gaxgrpc::ChannelPool ChannelPool => s_channelPool; + + /// + /// Asynchronously creates a , applying defaults for all unspecified settings, + /// and creating a channel connecting to the given endpoint with application default credentials where + /// necessary. See the example for how to use custom credentials. + /// + /// + /// This sample shows how to create a client using default credentials: + /// + /// using Google.Ads.GoogleAds.V2.Services; + /// ... + /// // When running on Google Cloud Platform this will use the project Compute Credential. + /// // Or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of a JSON + /// // credential file to use that credential. + /// InvoiceServiceClient client = await InvoiceServiceClient.CreateAsync(); + /// + /// This sample shows how to create a client using credentials loaded from a JSON file: + /// + /// using Google.Ads.GoogleAds.V2.Services; + /// using Google.Apis.Auth.OAuth2; + /// using Grpc.Auth; + /// using Grpc.Core; + /// ... + /// GoogleCredential cred = GoogleCredential.FromFile("/path/to/credentials.json"); + /// Channel channel = new Channel( + /// InvoiceServiceClient.DefaultEndpoint.Host, InvoiceServiceClient.DefaultEndpoint.Port, cred.ToChannelCredentials()); + /// InvoiceServiceClient client = InvoiceServiceClient.Create(channel); + /// ... + /// // Shutdown the channel when it is no longer required. + /// await channel.ShutdownAsync(); + /// + /// + /// Optional . + /// Optional . + /// The task representing the created . + public static async stt::Task CreateAsync(gaxgrpc::ServiceEndpoint endpoint = null, InvoiceServiceSettings settings = null) + { + grpccore::Channel channel = await s_channelPool.GetChannelAsync(endpoint ?? DefaultEndpoint).ConfigureAwait(false); + return Create(channel, settings); + } + + /// + /// Synchronously creates a , applying defaults for all unspecified settings, + /// and creating a channel connecting to the given endpoint with application default credentials where + /// necessary. See the example for how to use custom credentials. + /// + /// + /// This sample shows how to create a client using default credentials: + /// + /// using Google.Ads.GoogleAds.V2.Services; + /// ... + /// // When running on Google Cloud Platform this will use the project Compute Credential. + /// // Or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of a JSON + /// // credential file to use that credential. + /// InvoiceServiceClient client = InvoiceServiceClient.Create(); + /// + /// This sample shows how to create a client using credentials loaded from a JSON file: + /// + /// using Google.Ads.GoogleAds.V2.Services; + /// using Google.Apis.Auth.OAuth2; + /// using Grpc.Auth; + /// using Grpc.Core; + /// ... + /// GoogleCredential cred = GoogleCredential.FromFile("/path/to/credentials.json"); + /// Channel channel = new Channel( + /// InvoiceServiceClient.DefaultEndpoint.Host, InvoiceServiceClient.DefaultEndpoint.Port, cred.ToChannelCredentials()); + /// InvoiceServiceClient client = InvoiceServiceClient.Create(channel); + /// ... + /// // Shutdown the channel when it is no longer required. + /// channel.ShutdownAsync().Wait(); + /// + /// + /// Optional . + /// Optional . + /// The created . + public static InvoiceServiceClient Create(gaxgrpc::ServiceEndpoint endpoint = null, InvoiceServiceSettings settings = null) + { + grpccore::Channel channel = s_channelPool.GetChannel(endpoint ?? DefaultEndpoint); + return Create(channel, settings); + } + + /// + /// Creates a which uses the specified channel for remote operations. + /// + /// The for remote operations. Must not be null. + /// Optional . + /// The created . + public static InvoiceServiceClient Create(grpccore::Channel channel, InvoiceServiceSettings settings = null) + { + gax::GaxPreconditions.CheckNotNull(channel, nameof(channel)); + return Create(new grpccore::DefaultCallInvoker(channel), settings); + } + + /// + /// Creates a which uses the specified call invoker for remote operations. + /// + /// The for remote operations. Must not be null. + /// Optional . + /// The created . + public static InvoiceServiceClient Create(grpccore::CallInvoker callInvoker, InvoiceServiceSettings settings = null) + { + gax::GaxPreconditions.CheckNotNull(callInvoker, nameof(callInvoker)); + grpccore::Interceptors.Interceptor interceptor = settings?.Interceptor; + if (interceptor != null) + { + callInvoker = grpccore::Interceptors.CallInvokerExtensions.Intercept(callInvoker, interceptor); + } + InvoiceService.InvoiceServiceClient grpcClient = new InvoiceService.InvoiceServiceClient(callInvoker); + return new InvoiceServiceClientImpl(grpcClient, settings); + } + + /// + /// Shuts down any channels automatically created by + /// and . Channels which weren't automatically + /// created are not affected. + /// + /// After calling this method, further calls to + /// and will create new channels, which could + /// in turn be shut down by another call to this method. + /// A task representing the asynchronous shutdown operation. + public static stt::Task ShutdownDefaultChannelsAsync() => s_channelPool.ShutdownChannelsAsync(); + + /// + /// The underlying gRPC InvoiceService client. + /// + public virtual InvoiceService.InvoiceServiceClient GrpcClient + { + get { throw new sys::NotImplementedException(); } + } + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The ID of the customer to fetch invoices for. + /// + /// + /// Required. The billing setup resource name of the requested invoices. + /// + /// `customers/{customer_id}/billingSetups/{billing_setup_id}` + /// + /// + /// Required. The issue year to retrieve invoices, in yyyy format. Only + /// invoices issued in 2019 or later can be retrieved. + /// + /// + /// Required. The issue month to retrieve invoices. + /// + /// + /// If not null, applies overrides to this RPC call. + /// + /// + /// A Task containing the RPC response. + /// + public virtual stt::Task ListInvoicesAsync( + string customerId, + string billingSetup, + string issueYear, + gagve::MonthOfYearEnum.Types.MonthOfYear issueMonth, + gaxgrpc::CallSettings callSettings = null) => ListInvoicesAsync( + new ListInvoicesRequest + { + CustomerId = gax::GaxPreconditions.CheckNotNullOrEmpty(customerId, nameof(customerId)), + BillingSetup = gax::GaxPreconditions.CheckNotNullOrEmpty(billingSetup, nameof(billingSetup)), + IssueYear = gax::GaxPreconditions.CheckNotNullOrEmpty(issueYear, nameof(issueYear)), + IssueMonth = issueMonth, + }, + callSettings); + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The ID of the customer to fetch invoices for. + /// + /// + /// Required. The billing setup resource name of the requested invoices. + /// + /// `customers/{customer_id}/billingSetups/{billing_setup_id}` + /// + /// + /// Required. The issue year to retrieve invoices, in yyyy format. Only + /// invoices issued in 2019 or later can be retrieved. + /// + /// + /// Required. The issue month to retrieve invoices. + /// + /// + /// A to use for this RPC. + /// + /// + /// A Task containing the RPC response. + /// + public virtual stt::Task ListInvoicesAsync( + string customerId, + string billingSetup, + string issueYear, + gagve::MonthOfYearEnum.Types.MonthOfYear issueMonth, + st::CancellationToken cancellationToken) => ListInvoicesAsync( + customerId, + billingSetup, + issueYear, + issueMonth, + gaxgrpc::CallSettings.FromCancellationToken(cancellationToken)); + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The ID of the customer to fetch invoices for. + /// + /// + /// Required. The billing setup resource name of the requested invoices. + /// + /// `customers/{customer_id}/billingSetups/{billing_setup_id}` + /// + /// + /// Required. The issue year to retrieve invoices, in yyyy format. Only + /// invoices issued in 2019 or later can be retrieved. + /// + /// + /// Required. The issue month to retrieve invoices. + /// + /// + /// If not null, applies overrides to this RPC call. + /// + /// + /// The RPC response. + /// + public virtual ListInvoicesResponse ListInvoices( + string customerId, + string billingSetup, + string issueYear, + gagve::MonthOfYearEnum.Types.MonthOfYear issueMonth, + gaxgrpc::CallSettings callSettings = null) => ListInvoices( + new ListInvoicesRequest + { + CustomerId = gax::GaxPreconditions.CheckNotNullOrEmpty(customerId, nameof(customerId)), + BillingSetup = gax::GaxPreconditions.CheckNotNullOrEmpty(billingSetup, nameof(billingSetup)), + IssueYear = gax::GaxPreconditions.CheckNotNullOrEmpty(issueYear, nameof(issueYear)), + IssueMonth = issueMonth, + }, + callSettings); + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The request object containing all of the parameters for the API call. + /// + /// + /// If not null, applies overrides to this RPC call. + /// + /// + /// A Task containing the RPC response. + /// + public virtual stt::Task ListInvoicesAsync( + ListInvoicesRequest request, + gaxgrpc::CallSettings callSettings = null) + { + throw new sys::NotImplementedException(); + } + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The request object containing all of the parameters for the API call. + /// + /// + /// A to use for this RPC. + /// + /// + /// A Task containing the RPC response. + /// + public virtual stt::Task ListInvoicesAsync( + ListInvoicesRequest request, + st::CancellationToken cancellationToken) => ListInvoicesAsync( + request, + gaxgrpc::CallSettings.FromCancellationToken(cancellationToken)); + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The request object containing all of the parameters for the API call. + /// + /// + /// If not null, applies overrides to this RPC call. + /// + /// + /// The RPC response. + /// + public virtual ListInvoicesResponse ListInvoices( + ListInvoicesRequest request, + gaxgrpc::CallSettings callSettings = null) + { + throw new sys::NotImplementedException(); + } + + } + + /// + /// InvoiceService client wrapper implementation, for convenient use. + /// + public sealed partial class InvoiceServiceClientImpl : InvoiceServiceClient + { + private readonly gaxgrpc::ApiCall _callListInvoices; + + /// + /// Constructs a client wrapper for the InvoiceService service, with the specified gRPC client and settings. + /// + /// The underlying gRPC client. + /// The base used within this client + public InvoiceServiceClientImpl(InvoiceService.InvoiceServiceClient grpcClient, InvoiceServiceSettings settings) + { + GrpcClient = grpcClient; + InvoiceServiceSettings effectiveSettings = settings ?? InvoiceServiceSettings.GetDefault(); + gaxgrpc::ClientHelper clientHelper = new gaxgrpc::ClientHelper(effectiveSettings); + _callListInvoices = clientHelper.BuildApiCall( + GrpcClient.ListInvoicesAsync, GrpcClient.ListInvoices, effectiveSettings.ListInvoicesSettings) + .WithCallSettingsOverlay(request => gaxgrpc::CallSettings.FromHeader("x-goog-request-params", $"customer_id={request.CustomerId}")); + Modify_ApiCall(ref _callListInvoices); + Modify_ListInvoicesApiCall(ref _callListInvoices); + OnConstruction(grpcClient, effectiveSettings, clientHelper); + } + + // Partial methods are named to (mostly) ensure there cannot be conflicts with RPC method names. + + // Partial methods called for every ApiCall on construction. + // Allows modification of all the underlying ApiCall objects. + partial void Modify_ApiCall(ref gaxgrpc::ApiCall call) + where TRequest : class, pb::IMessage + where TResponse : class, pb::IMessage; + + // Partial methods called for each ApiCall on construction. + // Allows per-RPC-method modification of the underlying ApiCall object. + partial void Modify_ListInvoicesApiCall(ref gaxgrpc::ApiCall call); + partial void OnConstruction(InvoiceService.InvoiceServiceClient grpcClient, InvoiceServiceSettings effectiveSettings, gaxgrpc::ClientHelper clientHelper); + + /// + /// The underlying gRPC InvoiceService client. + /// + public override InvoiceService.InvoiceServiceClient GrpcClient { get; } + + // Partial methods called on each request. + // Allows per-RPC-call modification to the request and CallSettings objects, + // before the underlying RPC is performed. + partial void Modify_ListInvoicesRequest(ref ListInvoicesRequest request, ref gaxgrpc::CallSettings settings); + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The request object containing all of the parameters for the API call. + /// + /// + /// If not null, applies overrides to this RPC call. + /// + /// + /// A Task containing the RPC response. + /// + public override stt::Task ListInvoicesAsync( + ListInvoicesRequest request, + gaxgrpc::CallSettings callSettings = null) + { + Modify_ListInvoicesRequest(ref request, ref callSettings); + return _callListInvoices.Async(request, callSettings); + } + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// + /// The request object containing all of the parameters for the API call. + /// + /// + /// If not null, applies overrides to this RPC call. + /// + /// + /// The RPC response. + /// + public override ListInvoicesResponse ListInvoices( + ListInvoicesRequest request, + gaxgrpc::CallSettings callSettings = null) + { + Modify_ListInvoicesRequest(ref request, ref callSettings); + return _callListInvoices.Sync(request, callSettings); + } + + } + + // Partial classes to enable page-streaming + + +} diff --git a/src/V2/Stubs/InvoiceServiceClientExceptionCustomization.cs b/src/V2/Stubs/InvoiceServiceClientExceptionCustomization.cs new file mode 100644 index 000000000..ddfa299eb --- /dev/null +++ b/src/V2/Stubs/InvoiceServiceClientExceptionCustomization.cs @@ -0,0 +1,28 @@ +// Copyright 2019 Google LLC. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Generated code - do not edit +using Google.Api.Gax.Grpc; +using Google.Protobuf; +using Google.Ads.GoogleAds.V2.Errors; +namespace Google.Ads.GoogleAds.V2.Services +{ + public partial class InvoiceServiceClientImpl + { + // Modify every API call on construction to use GoogleAdsException + partial void Modify_ApiCall(ref ApiCall call) + where TRequest : class, IMessage + where TResponse : class, IMessage => + call = call.WithExceptionCustomizer(GoogleAdsException.Create); + } +} diff --git a/src/V2/Stubs/InvoiceServiceGrpc.cs b/src/V2/Stubs/InvoiceServiceGrpc.cs new file mode 100644 index 000000000..023eefa32 --- /dev/null +++ b/src/V2/Stubs/InvoiceServiceGrpc.cs @@ -0,0 +1,159 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/ads/googleads/v2/services/invoice_service.proto +// +// Original file comments: +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +#pragma warning disable 0414, 1591 +#region Designer generated code + +using grpc = global::Grpc.Core; + +namespace Google.Ads.GoogleAds.V2.Services { + /// + /// A service to fetch invoices issued for a billing setup during a given month. + /// + public static partial class InvoiceService + { + static readonly string __ServiceName = "google.ads.googleads.v2.services.InvoiceService"; + + static readonly grpc::Marshaller __Marshaller_google_ads_googleads_v2_services_ListInvoicesRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest.Parser.ParseFrom); + static readonly grpc::Marshaller __Marshaller_google_ads_googleads_v2_services_ListInvoicesResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Google.Ads.GoogleAds.V2.Services.ListInvoicesResponse.Parser.ParseFrom); + + static readonly grpc::Method __Method_ListInvoices = new grpc::Method( + grpc::MethodType.Unary, + __ServiceName, + "ListInvoices", + __Marshaller_google_ads_googleads_v2_services_ListInvoicesRequest, + __Marshaller_google_ads_googleads_v2_services_ListInvoicesResponse); + + /// Service descriptor + public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor + { + get { return global::Google.Ads.GoogleAds.V2.Services.InvoiceServiceReflection.Descriptor.Services[0]; } + } + + /// Base class for server-side implementations of InvoiceService + public abstract partial class InvoiceServiceBase + { + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// The request received from the client. + /// The context of the server-side call handler being invoked. + /// The response to send back to the client (wrapped by a task). + public virtual global::System.Threading.Tasks.Task ListInvoices(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest request, grpc::ServerCallContext context) + { + throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); + } + + } + + /// Client for InvoiceService + public partial class InvoiceServiceClient : grpc::ClientBase + { + /// Creates a new client for InvoiceService + /// The channel to use to make remote calls. + public InvoiceServiceClient(grpc::Channel channel) : base(channel) + { + } + /// Creates a new client for InvoiceService that uses a custom CallInvoker. + /// The callInvoker to use to make remote calls. + public InvoiceServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker) + { + } + /// Protected parameterless constructor to allow creation of test doubles. + protected InvoiceServiceClient() : base() + { + } + /// Protected constructor to allow creation of configured clients. + /// The client configuration. + protected InvoiceServiceClient(ClientBaseConfiguration configuration) : base(configuration) + { + } + + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// The request to send to the server. + /// The initial metadata to send with the call. This parameter is optional. + /// An optional deadline for the call. The call will be cancelled if deadline is hit. + /// An optional token for canceling the call. + /// The response received from the server. + public virtual global::Google.Ads.GoogleAds.V2.Services.ListInvoicesResponse ListInvoices(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return ListInvoices(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// The request to send to the server. + /// The options for the call. + /// The response received from the server. + public virtual global::Google.Ads.GoogleAds.V2.Services.ListInvoicesResponse ListInvoices(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest request, grpc::CallOptions options) + { + return CallInvoker.BlockingUnaryCall(__Method_ListInvoices, null, options, request); + } + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// The request to send to the server. + /// The initial metadata to send with the call. This parameter is optional. + /// An optional deadline for the call. The call will be cancelled if deadline is hit. + /// An optional token for canceling the call. + /// The call object. + public virtual grpc::AsyncUnaryCall ListInvoicesAsync(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return ListInvoicesAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + /// + /// Returns all invoices associated with a billing setup, for a given month. + /// + /// The request to send to the server. + /// The options for the call. + /// The call object. + public virtual grpc::AsyncUnaryCall ListInvoicesAsync(global::Google.Ads.GoogleAds.V2.Services.ListInvoicesRequest request, grpc::CallOptions options) + { + return CallInvoker.AsyncUnaryCall(__Method_ListInvoices, null, options, request); + } + /// Creates a new instance of client from given ClientBaseConfiguration. + protected override InvoiceServiceClient NewInstance(ClientBaseConfiguration configuration) + { + return new InvoiceServiceClient(configuration); + } + } + + /// Creates service definition that can be registered with a server + /// An object implementing the server-side handling logic. + public static grpc::ServerServiceDefinition BindService(InvoiceServiceBase serviceImpl) + { + return grpc::ServerServiceDefinition.CreateBuilder() + .AddMethod(__Method_ListInvoices, serviceImpl.ListInvoices).Build(); + } + + /// Register service method implementations with a service binder. Useful when customizing the service binding logic. + /// Note: this method is part of an experimental API that can change or be removed without any prior notice. + /// Service methods will be bound by calling AddMethod on this object. + /// An object implementing the server-side handling logic. + public static void BindService(grpc::ServiceBinderBase serviceBinder, InvoiceServiceBase serviceImpl) + { + serviceBinder.AddMethod(__Method_ListInvoices, serviceImpl.ListInvoices); + } + + } +} +#endregion diff --git a/src/V2/Stubs/InvoiceType.cs b/src/V2/Stubs/InvoiceType.cs new file mode 100644 index 000000000..88393c0cc --- /dev/null +++ b/src/V2/Stubs/InvoiceType.cs @@ -0,0 +1,184 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/ads/googleads/v2/enums/invoice_type.proto +// +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Google.Ads.GoogleAds.V2.Enums { + + /// Holder for reflection information generated from google/ads/googleads/v2/enums/invoice_type.proto + public static partial class InvoiceTypeReflection { + + #region Descriptor + /// File descriptor for google/ads/googleads/v2/enums/invoice_type.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static InvoiceTypeReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CjBnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9pbnZvaWNlX3R5cGUu", + "cHJvdG8SHWdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zGhxnb29nbGUv", + "YXBpL2Fubm90YXRpb25zLnByb3RvIlwKD0ludm9pY2VUeXBlRW51bSJJCgtJ", + "bnZvaWNlVHlwZRIPCgtVTlNQRUNJRklFRBAAEgsKB1VOS05PV04QARIPCgtD", + "UkVESVRfTUVNTxACEgsKB0lOVk9JQ0UQA0LlAQohY29tLmdvb2dsZS5hZHMu", + "Z29vZ2xlYWRzLnYyLmVudW1zQhBJbnZvaWNlVHlwZVByb3RvUAFaQmdvb2ds", + "ZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYWRzL2dvb2dsZWFk", + "cy92Mi9lbnVtcztlbnVtc6ICA0dBQaoCHUdvb2dsZS5BZHMuR29vZ2xlQWRz", + "LlYyLkVudW1zygIdR29vZ2xlXEFkc1xHb29nbGVBZHNcVjJcRW51bXPqAiFH", + "b29nbGU6OkFkczo6R29vZ2xlQWRzOjpWMjo6RW51bXNiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeEnum), global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeEnum.Parser, null, null, new[]{ typeof(global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeEnum.Types.InvoiceType) }, null) + })); + } + #endregion + + } + #region Messages + /// + /// Container for enum describing the type of invoices. + /// + public sealed partial class InvoiceTypeEnum : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvoiceTypeEnum()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Enums.InvoiceTypeReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public InvoiceTypeEnum() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public InvoiceTypeEnum(InvoiceTypeEnum other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public InvoiceTypeEnum Clone() { + return new InvoiceTypeEnum(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as InvoiceTypeEnum); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(InvoiceTypeEnum other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(InvoiceTypeEnum other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + } + + #region Nested types + /// Container for nested types declared in the InvoiceTypeEnum message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static partial class Types { + /// + /// The possible type of invoices. + /// + public enum InvoiceType { + /// + /// Not specified. + /// + [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0, + /// + /// Used for return value only. Represents value unknown in this version. + /// + [pbr::OriginalName("UNKNOWN")] Unknown = 1, + /// + /// An invoice with a negative amount. The account receives a credit. + /// + [pbr::OriginalName("CREDIT_MEMO")] CreditMemo = 2, + /// + /// An invoice with a positive amount. The account owes a balance. + /// + [pbr::OriginalName("INVOICE")] Invoice = 3, + } + + } + #endregion + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/V2/Stubs/MerchantCenterLinkServiceClient.cs b/src/V2/Stubs/MerchantCenterLinkServiceClient.cs index 2d4439f2a..d4153fb1f 100644 --- a/src/V2/Stubs/MerchantCenterLinkServiceClient.cs +++ b/src/V2/Stubs/MerchantCenterLinkServiceClient.cs @@ -409,7 +409,7 @@ public virtual MerchantCenterLinkService.MerchantCenterLinkServiceClient GrpcCli } /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The ID of the customer onto which to apply the Merchant Center link list @@ -431,7 +431,7 @@ public virtual MerchantCenterLinkService.MerchantCenterLinkServiceClient GrpcCli callSettings); /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The ID of the customer onto which to apply the Merchant Center link list @@ -450,7 +450,7 @@ public virtual MerchantCenterLinkService.MerchantCenterLinkServiceClient GrpcCli gaxgrpc::CallSettings.FromCancellationToken(cancellationToken)); /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The ID of the customer onto which to apply the Merchant Center link list @@ -472,7 +472,7 @@ public virtual ListMerchantCenterLinksResponse ListMerchantCenterLinks( callSettings); /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The request object containing all of the parameters for the API call. @@ -491,7 +491,7 @@ public virtual ListMerchantCenterLinksResponse ListMerchantCenterLinks( } /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The request object containing all of the parameters for the API call. @@ -509,7 +509,7 @@ public virtual ListMerchantCenterLinksResponse ListMerchantCenterLinks( gaxgrpc::CallSettings.FromCancellationToken(cancellationToken)); /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The request object containing all of the parameters for the API call. @@ -841,7 +841,7 @@ partial void Modify_ApiCall(ref gaxgrpc::ApiCall - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The request object containing all of the parameters for the API call. @@ -861,7 +861,7 @@ partial void Modify_ApiCall(ref gaxgrpc::ApiCall - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// /// The request object containing all of the parameters for the API call. diff --git a/src/V2/Stubs/MerchantCenterLinkServiceGrpc.cs b/src/V2/Stubs/MerchantCenterLinkServiceGrpc.cs index afab9a24e..599d671f8 100644 --- a/src/V2/Stubs/MerchantCenterLinkServiceGrpc.cs +++ b/src/V2/Stubs/MerchantCenterLinkServiceGrpc.cs @@ -70,7 +70,7 @@ public static partial class MerchantCenterLinkService public abstract partial class MerchantCenterLinkServiceBase { /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// The request received from the client. /// The context of the server-side call handler being invoked. @@ -128,7 +128,7 @@ protected MerchantCenterLinkServiceClient(ClientBaseConfiguration configuration) } /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// The request to send to the server. /// The initial metadata to send with the call. This parameter is optional. @@ -140,7 +140,7 @@ protected MerchantCenterLinkServiceClient(ClientBaseConfiguration configuration) return ListMerchantCenterLinks(request, new grpc::CallOptions(headers, deadline, cancellationToken)); } /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// The request to send to the server. /// The options for the call. @@ -150,7 +150,7 @@ protected MerchantCenterLinkServiceClient(ClientBaseConfiguration configuration) return CallInvoker.BlockingUnaryCall(__Method_ListMerchantCenterLinks, null, options, request); } /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// The request to send to the server. /// The initial metadata to send with the call. This parameter is optional. @@ -162,7 +162,7 @@ protected MerchantCenterLinkServiceClient(ClientBaseConfiguration configuration) return ListMerchantCenterLinksAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); } /// - /// Returns Merchant Center links available tor this customer. + /// Returns Merchant Center links available for this customer. /// /// The request to send to the server. /// The options for the call. diff --git a/src/V2/Stubs/ReachPlanServiceClient.cs b/src/V2/Stubs/ReachPlanServiceClient.cs index 2468acf33..5b6b46a06 100644 --- a/src/V2/Stubs/ReachPlanServiceClient.cs +++ b/src/V2/Stubs/ReachPlanServiceClient.cs @@ -436,7 +436,7 @@ public virtual ReachPlanService.ReachPlanServiceClient GrpcClient } /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// /// The request object containing all of the parameters for the API call. @@ -455,7 +455,7 @@ public virtual ReachPlanService.ReachPlanServiceClient GrpcClient } /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// /// The request object containing all of the parameters for the API call. @@ -473,7 +473,7 @@ public virtual ReachPlanService.ReachPlanServiceClient GrpcClient gaxgrpc::CallSettings.FromCancellationToken(cancellationToken)); /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// /// The request object containing all of the parameters for the API call. @@ -807,7 +807,7 @@ partial void Modify_ApiCall(ref gaxgrpc::ApiCall - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// /// The request object containing all of the parameters for the API call. @@ -827,7 +827,7 @@ partial void Modify_ApiCall(ref gaxgrpc::ApiCall - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// /// The request object containing all of the parameters for the API call. diff --git a/src/V2/Stubs/ReachPlanServiceGrpc.cs b/src/V2/Stubs/ReachPlanServiceGrpc.cs index 56a2fbd07..4e7e61033 100644 --- a/src/V2/Stubs/ReachPlanServiceGrpc.cs +++ b/src/V2/Stubs/ReachPlanServiceGrpc.cs @@ -82,7 +82,7 @@ public static partial class ReachPlanService public abstract partial class ReachPlanServiceBase { /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// The request received from the client. /// The context of the server-side call handler being invoked. @@ -154,7 +154,7 @@ protected ReachPlanServiceClient(ClientBaseConfiguration configuration) : base(c } /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// The request to send to the server. /// The initial metadata to send with the call. This parameter is optional. @@ -166,7 +166,7 @@ protected ReachPlanServiceClient(ClientBaseConfiguration configuration) : base(c return ListPlannableLocations(request, new grpc::CallOptions(headers, deadline, cancellationToken)); } /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// The request to send to the server. /// The options for the call. @@ -176,7 +176,7 @@ protected ReachPlanServiceClient(ClientBaseConfiguration configuration) : base(c return CallInvoker.BlockingUnaryCall(__Method_ListPlannableLocations, null, options, request); } /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// The request to send to the server. /// The initial metadata to send with the call. This parameter is optional. @@ -188,7 +188,7 @@ protected ReachPlanServiceClient(ClientBaseConfiguration configuration) : base(c return ListPlannableLocationsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); } /// - /// Returns the list of plannable locations (e.g. countries, DMAs). + /// Returns the list of plannable locations (for example, countries & DMAs). /// /// The request to send to the server. /// The options for the call. diff --git a/src/V2/Stubs/Recommendation.cs b/src/V2/Stubs/Recommendation.cs index a963af467..976f69c1a 100644 --- a/src/V2/Stubs/Recommendation.cs +++ b/src/V2/Stubs/Recommendation.cs @@ -108,15 +108,16 @@ static RecommendationReflection() { "SW1wYWN0GpYBChVLZXl3b3JkUmVjb21tZW5kYXRpb24SPAoHa2V5d29yZBgB", "IAEoCzIrLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5LZXl3b3Jk", "SW5mbxI/ChpyZWNvbW1lbmRlZF9jcGNfYmlkX21pY3JvcxgCIAEoCzIbLmdv", - "b2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlGnMKH1NpdGVsaW5rRXh0ZW5zaW9u", - "UmVjb21tZW5kYXRpb24SUAoWcmVjb21tZW5kZWRfZXh0ZW5zaW9ucxgBIAMo", - "CzIwLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5TaXRlbGlua0Zl", - "ZWRJdGVtGrUBChRUZXh0QWRSZWNvbW1lbmRhdGlvbhIxCgJhZBgBIAEoCzIl", - "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnJlc291cmNlcy5BZBIzCg1jcmVh", - "dGlvbl9kYXRlGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", - "EjUKD2F1dG9fYXBwbHlfZGF0ZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5T", - "dHJpbmdWYWx1ZRojCiFTZWFyY2hQYXJ0bmVyc09wdEluUmVjb21tZW5kYXRp", - "b24a3wQKHFRhcmdldENwYU9wdEluUmVjb21tZW5kYXRpb24SggEKB29wdGlv", + "b2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlGrUBChRUZXh0QWRSZWNvbW1lbmRh", + "dGlvbhIxCgJhZBgBIAEoCzIlLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnJl", + "c291cmNlcy5BZBIzCg1jcmVhdGlvbl9kYXRlGAIgASgLMhwuZ29vZ2xlLnBy", + "b3RvYnVmLlN0cmluZ1ZhbHVlEjUKD2F1dG9fYXBwbHlfZGF0ZRgDIAEoCzIc", + "Lmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRrEAQoeS2V5d29yZE1hdGNo", + "VHlwZVJlY29tbWVuZGF0aW9uEjwKB2tleXdvcmQYASABKAsyKy5nb29nbGUu", + "YWRzLmdvb2dsZWFkcy52Mi5jb21tb24uS2V5d29yZEluZm8SZAoWcmVjb21t", + "ZW5kZWRfbWF0Y2hfdHlwZRgCIAEoDjJELmdvb2dsZS5hZHMuZ29vZ2xlYWRz", + "LnYyLmVudW1zLktleXdvcmRNYXRjaFR5cGVFbnVtLktleXdvcmRNYXRjaFR5", + "cGUa3wQKHFRhcmdldENwYU9wdEluUmVjb21tZW5kYXRpb24SggEKB29wdGlv", "bnMYASADKAsycS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5yZXNvdXJjZXMu", "UmVjb21tZW5kYXRpb24uVGFyZ2V0Q3BhT3B0SW5SZWNvbW1lbmRhdGlvbi5U", "YXJnZXRDcGFPcHRJblJlY29tbWVuZGF0aW9uT3B0aW9uEkIKHXJlY29tbWVu", @@ -132,25 +133,24 @@ static RecommendationReflection() { "ZGF0aW9uLlJlY29tbWVuZGF0aW9uSW1wYWN0Gm8KJk1heGltaXplQ29udmVy", "c2lvbnNPcHRJblJlY29tbWVuZGF0aW9uEkUKIHJlY29tbWVuZGVkX2J1ZGdl", "dF9hbW91bnRfbWljcm9zGAEgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0", - "VmFsdWUazQEKHk1vdmVVbnVzZWRCdWRnZXRSZWNvbW1lbmRhdGlvbhI8ChZl", - "eGNlc3NfY2FtcGFpZ25fYnVkZ2V0GAEgASgLMhwuZ29vZ2xlLnByb3RvYnVm", - "LlN0cmluZ1ZhbHVlEm0KFWJ1ZGdldF9yZWNvbW1lbmRhdGlvbhgCIAEoCzJO", - "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnJlc291cmNlcy5SZWNvbW1lbmRh", - "dGlvbi5DYW1wYWlnbkJ1ZGdldFJlY29tbWVuZGF0aW9uGiIKIE9wdGltaXpl", - "QWRSb3RhdGlvblJlY29tbWVuZGF0aW9uGiAKHkVuaGFuY2VkQ3BjT3B0SW5S", - "ZWNvbW1lbmRhdGlvbhpqCiFNYXhpbWl6ZUNsaWNrc09wdEluUmVjb21tZW5k", - "YXRpb24SRQogcmVjb21tZW5kZWRfYnVkZ2V0X2Ftb3VudF9taWNyb3MYASAB", - "KAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRpxCh5DYWxsb3V0RXh0", - "ZW5zaW9uUmVjb21tZW5kYXRpb24STwoWcmVjb21tZW5kZWRfZXh0ZW5zaW9u", - "cxgBIAMoCzIvLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5DYWxs", - "b3V0RmVlZEl0ZW0aawobQ2FsbEV4dGVuc2lvblJlY29tbWVuZGF0aW9uEkwK", - "FnJlY29tbWVuZGVkX2V4dGVuc2lvbnMYASADKAsyLC5nb29nbGUuYWRzLmdv", - "b2dsZWFkcy52Mi5jb21tb24uQ2FsbEZlZWRJdGVtGsQBCh5LZXl3b3JkTWF0", - "Y2hUeXBlUmVjb21tZW5kYXRpb24SPAoHa2V5d29yZBgBIAEoCzIrLmdvb2ds", - "ZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5LZXl3b3JkSW5mbxJkChZyZWNv", - "bW1lbmRlZF9tYXRjaF90eXBlGAIgASgOMkQuZ29vZ2xlLmFkcy5nb29nbGVh", - "ZHMudjIuZW51bXMuS2V5d29yZE1hdGNoVHlwZUVudW0uS2V5d29yZE1hdGNo", - "VHlwZUIQCg5yZWNvbW1lbmRhdGlvbkKAAgolY29tLmdvb2dsZS5hZHMuZ29v", + "VmFsdWUacwofU2l0ZWxpbmtFeHRlbnNpb25SZWNvbW1lbmRhdGlvbhJQChZy", + "ZWNvbW1lbmRlZF9leHRlbnNpb25zGAEgAygLMjAuZ29vZ2xlLmFkcy5nb29n", + "bGVhZHMudjIuY29tbW9uLlNpdGVsaW5rRmVlZEl0ZW0aIAoeRW5oYW5jZWRD", + "cGNPcHRJblJlY29tbWVuZGF0aW9uGiMKIVNlYXJjaFBhcnRuZXJzT3B0SW5S", + "ZWNvbW1lbmRhdGlvbhpxCh5DYWxsb3V0RXh0ZW5zaW9uUmVjb21tZW5kYXRp", + "b24STwoWcmVjb21tZW5kZWRfZXh0ZW5zaW9ucxgBIAMoCzIvLmdvb2dsZS5h", + "ZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5DYWxsb3V0RmVlZEl0ZW0aagohTWF4", + "aW1pemVDbGlja3NPcHRJblJlY29tbWVuZGF0aW9uEkUKIHJlY29tbWVuZGVk", + "X2J1ZGdldF9hbW91bnRfbWljcm9zGAEgASgLMhsuZ29vZ2xlLnByb3RvYnVm", + "LkludDY0VmFsdWUazQEKHk1vdmVVbnVzZWRCdWRnZXRSZWNvbW1lbmRhdGlv", + "bhI8ChZleGNlc3NfY2FtcGFpZ25fYnVkZ2V0GAEgASgLMhwuZ29vZ2xlLnBy", + "b3RvYnVmLlN0cmluZ1ZhbHVlEm0KFWJ1ZGdldF9yZWNvbW1lbmRhdGlvbhgC", + "IAEoCzJOLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLnJlc291cmNlcy5SZWNv", + "bW1lbmRhdGlvbi5DYW1wYWlnbkJ1ZGdldFJlY29tbWVuZGF0aW9uGmsKG0Nh", + "bGxFeHRlbnNpb25SZWNvbW1lbmRhdGlvbhJMChZyZWNvbW1lbmRlZF9leHRl", + "bnNpb25zGAEgAygLMiwuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuY29tbW9u", + "LkNhbGxGZWVkSXRlbRoiCiBPcHRpbWl6ZUFkUm90YXRpb25SZWNvbW1lbmRh", + "dGlvbkIQCg5yZWNvbW1lbmRhdGlvbkKAAgolY29tLmdvb2dsZS5hZHMuZ29v", "Z2xlYWRzLnYyLnJlc291cmNlc0ITUmVjb21tZW5kYXRpb25Qcm90b1ABWkpn", "b29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2Fkcy9nb29n", "bGVhZHMvdjIvcmVzb3VyY2VzO3Jlc291cmNlc6ICA0dBQaoCIUdvb2dsZS5B", @@ -164,18 +164,18 @@ static RecommendationReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.RecommendationMetrics), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.RecommendationMetrics.Parser, new[]{ "Impressions", "Clicks", "CostMicros", "Conversions", "VideoViews" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation.Parser, new[]{ "CurrentBudgetAmountMicros", "RecommendedBudgetAmountMicros", "BudgetOptions" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation.Types.CampaignBudgetRecommendationOption), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation.Types.CampaignBudgetRecommendationOption.Parser, new[]{ "BudgetAmountMicros", "Impact" }, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.KeywordRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.KeywordRecommendation.Parser, new[]{ "Keyword", "RecommendedCpcBidMicros" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SitelinkExtensionRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SitelinkExtensionRecommendation.Parser, new[]{ "RecommendedExtensions" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.TextAdRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.TextAdRecommendation.Parser, new[]{ "Ad", "CreationDate", "AutoApplyDate" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SearchPartnersOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SearchPartnersOptInRecommendation.Parser, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.KeywordMatchTypeRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.KeywordMatchTypeRecommendation.Parser, new[]{ "Keyword", "RecommendedMatchType" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.TargetCpaOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.TargetCpaOptInRecommendation.Parser, new[]{ "Options", "RecommendedTargetCpaMicros" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.TargetCpaOptInRecommendation.Types.TargetCpaOptInRecommendationOption), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.TargetCpaOptInRecommendation.Types.TargetCpaOptInRecommendationOption.Parser, new[]{ "Goal", "TargetCpaMicros", "RequiredCampaignBudgetAmountMicros", "Impact" }, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MaximizeConversionsOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MaximizeConversionsOptInRecommendation.Parser, new[]{ "RecommendedBudgetAmountMicros" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MoveUnusedBudgetRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MoveUnusedBudgetRecommendation.Parser, new[]{ "ExcessCampaignBudget", "BudgetRecommendation" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.OptimizeAdRotationRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.OptimizeAdRotationRecommendation.Parser, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SitelinkExtensionRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SitelinkExtensionRecommendation.Parser, new[]{ "RecommendedExtensions" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.EnhancedCpcOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.EnhancedCpcOptInRecommendation.Parser, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MaximizeClicksOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MaximizeClicksOptInRecommendation.Parser, new[]{ "RecommendedBudgetAmountMicros" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SearchPartnersOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.SearchPartnersOptInRecommendation.Parser, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CalloutExtensionRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CalloutExtensionRecommendation.Parser, new[]{ "RecommendedExtensions" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MaximizeClicksOptInRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MaximizeClicksOptInRecommendation.Parser, new[]{ "RecommendedBudgetAmountMicros" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MoveUnusedBudgetRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.MoveUnusedBudgetRecommendation.Parser, new[]{ "ExcessCampaignBudget", "BudgetRecommendation" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CallExtensionRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CallExtensionRecommendation.Parser, new[]{ "RecommendedExtensions" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.KeywordMatchTypeRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.KeywordMatchTypeRecommendation.Parser, new[]{ "Keyword", "RecommendedMatchType" }, null, null, null)}) + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.OptimizeAdRotationRecommendation), global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.OptimizeAdRotationRecommendation.Parser, null, null, null, null)}) })); } #endregion @@ -2201,133 +2201,6 @@ public void MergeFrom(pb::CodedInputStream input) { } - /// - /// The Sitelink extension recommendation. - /// - public sealed partial class SitelinkExtensionRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SitelinkExtensionRecommendation()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Descriptor.NestedTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SitelinkExtensionRecommendation() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SitelinkExtensionRecommendation(SitelinkExtensionRecommendation other) : this() { - recommendedExtensions_ = other.recommendedExtensions_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SitelinkExtensionRecommendation Clone() { - return new SitelinkExtensionRecommendation(this); - } - - /// Field number for the "recommended_extensions" field. - public const int RecommendedExtensionsFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_recommendedExtensions_codec - = pb::FieldCodec.ForMessage(10, global::Google.Ads.GoogleAds.V2.Common.SitelinkFeedItem.Parser); - private readonly pbc::RepeatedField recommendedExtensions_ = new pbc::RepeatedField(); - /// - /// Sitelink extensions recommended to be added. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RecommendedExtensions { - get { return recommendedExtensions_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SitelinkExtensionRecommendation); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SitelinkExtensionRecommendation other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!recommendedExtensions_.Equals(other.recommendedExtensions_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= recommendedExtensions_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - recommendedExtensions_.WriteTo(output, _repeated_recommendedExtensions_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += recommendedExtensions_.CalculateSize(_repeated_recommendedExtensions_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SitelinkExtensionRecommendation other) { - if (other == null) { - return; - } - recommendedExtensions_.Add(other.recommendedExtensions_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - recommendedExtensions_.AddEntriesFrom(input, _repeated_recommendedExtensions_codec); - break; - } - } - } - } - - } - /// /// The text ad recommendation. /// @@ -2339,7 +2212,7 @@ public sealed partial class TextAdRecommendation : pb::IMessage - /// The Search Partners Opt-In recommendation. + /// The keyword match type recommendation. /// - public sealed partial class SearchPartnersOptInRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SearchPartnersOptInRecommendation()); + public sealed partial class KeywordMatchTypeRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new KeywordMatchTypeRecommendation()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Descriptor.NestedTypes[6]; } + get { return global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Descriptor.NestedTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2566,41 +2439,75 @@ public sealed partial class SearchPartnersOptInRecommendation : pb::IMessageField number for the "keyword" field. + public const int KeywordFieldNumber = 1; + private global::Google.Ads.GoogleAds.V2.Common.KeywordInfo keyword_; + /// + /// The existing keyword where the match type should be more broad. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Common.KeywordInfo Keyword { + get { return keyword_; } + set { + keyword_ = value; + } + } + + /// Field number for the "recommended_match_type" field. + public const int RecommendedMatchTypeFieldNumber = 2; + private global::Google.Ads.GoogleAds.V2.Enums.KeywordMatchTypeEnum.Types.KeywordMatchType recommendedMatchType_ = 0; + /// + /// The recommended new match type. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Enums.KeywordMatchTypeEnum.Types.KeywordMatchType RecommendedMatchType { + get { return recommendedMatchType_; } + set { + recommendedMatchType_ = value; + } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as SearchPartnersOptInRecommendation); + return Equals(other as KeywordMatchTypeRecommendation); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SearchPartnersOptInRecommendation other) { + public bool Equals(KeywordMatchTypeRecommendation other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } + if (!object.Equals(Keyword, other.Keyword)) return false; + if (RecommendedMatchType != other.RecommendedMatchType) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; + if (keyword_ != null) hash ^= Keyword.GetHashCode(); + if (RecommendedMatchType != 0) hash ^= RecommendedMatchType.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -2614,6 +2521,14 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { + if (keyword_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Keyword); + } + if (RecommendedMatchType != 0) { + output.WriteRawTag(16); + output.WriteEnum((int) RecommendedMatchType); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2622,6 +2537,12 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; + if (keyword_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Keyword); + } + if (RecommendedMatchType != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RecommendedMatchType); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2629,10 +2550,19 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SearchPartnersOptInRecommendation other) { + public void MergeFrom(KeywordMatchTypeRecommendation other) { if (other == null) { return; } + if (other.keyword_ != null) { + if (keyword_ == null) { + Keyword = new global::Google.Ads.GoogleAds.V2.Common.KeywordInfo(); + } + Keyword.MergeFrom(other.Keyword); + } + if (other.RecommendedMatchType != 0) { + RecommendedMatchType = other.RecommendedMatchType; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2644,6 +2574,17 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; + case 10: { + if (keyword_ == null) { + Keyword = new global::Google.Ads.GoogleAds.V2.Common.KeywordInfo(); + } + input.ReadMessage(Keyword); + break; + } + case 16: { + RecommendedMatchType = (global::Google.Ads.GoogleAds.V2.Enums.KeywordMatchTypeEnum.Types.KeywordMatchType) input.ReadEnum(); + break; + } } } } @@ -2661,7 +2602,7 @@ public sealed partial class TargetCpaOptInRecommendation : pb::IMessage - /// The move unused budget recommendation. + /// The Sitelink extension recommendation. /// - public sealed partial class MoveUnusedBudgetRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MoveUnusedBudgetRecommendation()); + public sealed partial class SitelinkExtensionRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SitelinkExtensionRecommendation()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Descriptor.NestedTypes[9]; } + get { return global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Descriptor.NestedTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3232,77 +3173,168 @@ public sealed partial class MoveUnusedBudgetRecommendation : pb::IMessageField number for the "excess_campaign_budget" field. - public const int ExcessCampaignBudgetFieldNumber = 1; - private static readonly pb::FieldCodec _single_excessCampaignBudget_codec = pb::FieldCodec.ForClassWrapper(10); - private string excessCampaignBudget_; + /// Field number for the "recommended_extensions" field. + public const int RecommendedExtensionsFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_recommendedExtensions_codec + = pb::FieldCodec.ForMessage(10, global::Google.Ads.GoogleAds.V2.Common.SitelinkFeedItem.Parser); + private readonly pbc::RepeatedField recommendedExtensions_ = new pbc::RepeatedField(); /// - /// The excess budget's resource_name. + /// Sitelink extensions recommended to be added. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string ExcessCampaignBudget { - get { return excessCampaignBudget_; } - set { - excessCampaignBudget_ = value; + public pbc::RepeatedField RecommendedExtensions { + get { return recommendedExtensions_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as SitelinkExtensionRecommendation); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(SitelinkExtensionRecommendation other) { + if (ReferenceEquals(other, null)) { + return false; } + if (ReferenceEquals(other, this)) { + return true; + } + if(!recommendedExtensions_.Equals(other.recommendedExtensions_)) return false; + return Equals(_unknownFields, other._unknownFields); } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + hash ^= recommendedExtensions_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } - /// Field number for the "budget_recommendation" field. - public const int BudgetRecommendationFieldNumber = 2; - private global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation budgetRecommendation_; - /// - /// The recommendation for the constrained budget to increase. - /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation BudgetRecommendation { - get { return budgetRecommendation_; } - set { - budgetRecommendation_ = value; + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + recommendedExtensions_.WriteTo(output, _repeated_recommendedExtensions_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + size += recommendedExtensions_.CalculateSize(_repeated_recommendedExtensions_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(SitelinkExtensionRecommendation other) { + if (other == null) { + return; } + recommendedExtensions_.Add(other.recommendedExtensions_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + recommendedExtensions_.AddEntriesFrom(input, _repeated_recommendedExtensions_codec); + break; + } + } + } + } + + } + + /// + /// The Enhanced Cost-Per-Click Opt-In recommendation. + /// + public sealed partial class EnhancedCpcOptInRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnhancedCpcOptInRecommendation()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Descriptor.NestedTypes[9]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public EnhancedCpcOptInRecommendation() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public EnhancedCpcOptInRecommendation(EnhancedCpcOptInRecommendation other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public EnhancedCpcOptInRecommendation Clone() { + return new EnhancedCpcOptInRecommendation(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as MoveUnusedBudgetRecommendation); + return Equals(other as EnhancedCpcOptInRecommendation); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MoveUnusedBudgetRecommendation other) { + public bool Equals(EnhancedCpcOptInRecommendation other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (ExcessCampaignBudget != other.ExcessCampaignBudget) return false; - if (!object.Equals(BudgetRecommendation, other.BudgetRecommendation)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; - if (excessCampaignBudget_ != null) hash ^= ExcessCampaignBudget.GetHashCode(); - if (budgetRecommendation_ != null) hash ^= BudgetRecommendation.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3316,13 +3348,6 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { - if (excessCampaignBudget_ != null) { - _single_excessCampaignBudget_codec.WriteTagAndValue(output, ExcessCampaignBudget); - } - if (budgetRecommendation_ != null) { - output.WriteRawTag(18); - output.WriteMessage(BudgetRecommendation); - } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3331,12 +3356,6 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; - if (excessCampaignBudget_ != null) { - size += _single_excessCampaignBudget_codec.CalculateSizeWithTag(ExcessCampaignBudget); - } - if (budgetRecommendation_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(BudgetRecommendation); - } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3344,21 +3363,10 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MoveUnusedBudgetRecommendation other) { + public void MergeFrom(EnhancedCpcOptInRecommendation other) { if (other == null) { return; } - if (other.excessCampaignBudget_ != null) { - if (excessCampaignBudget_ == null || other.ExcessCampaignBudget != "") { - ExcessCampaignBudget = other.ExcessCampaignBudget; - } - } - if (other.budgetRecommendation_ != null) { - if (budgetRecommendation_ == null) { - BudgetRecommendation = new global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation(); - } - BudgetRecommendation.MergeFrom(other.BudgetRecommendation); - } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3370,20 +3378,6 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; - case 10: { - string value = _single_excessCampaignBudget_codec.Read(input); - if (excessCampaignBudget_ == null || value != "") { - ExcessCampaignBudget = value; - } - break; - } - case 18: { - if (budgetRecommendation_ == null) { - BudgetRecommendation = new global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation(); - } - input.ReadMessage(BudgetRecommendation); - break; - } } } } @@ -3391,13 +3385,13 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// The Optimize Ad Rotation recommendation. + /// The Search Partners Opt-In recommendation. /// - public sealed partial class OptimizeAdRotationRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OptimizeAdRotationRecommendation()); + public sealed partial class SearchPartnersOptInRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SearchPartnersOptInRecommendation()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { @@ -3410,29 +3404,29 @@ public sealed partial class OptimizeAdRotationRecommendation : pb::IMessage - /// The Enhanced Cost-Per-Click Opt-In recommendation. + /// The Callout extension recommendation. /// - public sealed partial class EnhancedCpcOptInRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnhancedCpcOptInRecommendation()); + public sealed partial class CalloutExtensionRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CalloutExtensionRecommendation()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { @@ -3514,41 +3508,57 @@ public sealed partial class EnhancedCpcOptInRecommendation : pb::IMessageField number for the "recommended_extensions" field. + public const int RecommendedExtensionsFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_recommendedExtensions_codec + = pb::FieldCodec.ForMessage(10, global::Google.Ads.GoogleAds.V2.Common.CalloutFeedItem.Parser); + private readonly pbc::RepeatedField recommendedExtensions_ = new pbc::RepeatedField(); + /// + /// Callout extensions recommended to be added. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField RecommendedExtensions { + get { return recommendedExtensions_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as EnhancedCpcOptInRecommendation); + return Equals(other as CalloutExtensionRecommendation); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(EnhancedCpcOptInRecommendation other) { + public bool Equals(CalloutExtensionRecommendation other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } + if(!recommendedExtensions_.Equals(other.recommendedExtensions_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; + hash ^= recommendedExtensions_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3562,6 +3572,7 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { + recommendedExtensions_.WriteTo(output, _repeated_recommendedExtensions_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3570,6 +3581,7 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; + size += recommendedExtensions_.CalculateSize(_repeated_recommendedExtensions_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3577,10 +3589,11 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(EnhancedCpcOptInRecommendation other) { + public void MergeFrom(CalloutExtensionRecommendation other) { if (other == null) { return; } + recommendedExtensions_.Add(other.recommendedExtensions_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3592,6 +3605,10 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; + case 10: { + recommendedExtensions_.AddEntriesFrom(input, _repeated_recommendedExtensions_codec); + break; + } } } } @@ -3741,13 +3758,13 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// The Callout extension recommendation. + /// The move unused budget recommendation. /// - public sealed partial class CalloutExtensionRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CalloutExtensionRecommendation()); + public sealed partial class MoveUnusedBudgetRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MoveUnusedBudgetRecommendation()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { @@ -3760,57 +3777,77 @@ public sealed partial class CalloutExtensionRecommendation : pb::IMessageField number for the "recommended_extensions" field. - public const int RecommendedExtensionsFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_recommendedExtensions_codec - = pb::FieldCodec.ForMessage(10, global::Google.Ads.GoogleAds.V2.Common.CalloutFeedItem.Parser); - private readonly pbc::RepeatedField recommendedExtensions_ = new pbc::RepeatedField(); + /// Field number for the "excess_campaign_budget" field. + public const int ExcessCampaignBudgetFieldNumber = 1; + private static readonly pb::FieldCodec _single_excessCampaignBudget_codec = pb::FieldCodec.ForClassWrapper(10); + private string excessCampaignBudget_; /// - /// Callout extensions recommended to be added. + /// The excess budget's resource_name. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RecommendedExtensions { - get { return recommendedExtensions_; } + public string ExcessCampaignBudget { + get { return excessCampaignBudget_; } + set { + excessCampaignBudget_ = value; + } + } + + + /// Field number for the "budget_recommendation" field. + public const int BudgetRecommendationFieldNumber = 2; + private global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation budgetRecommendation_; + /// + /// The recommendation for the constrained budget to increase. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation BudgetRecommendation { + get { return budgetRecommendation_; } + set { + budgetRecommendation_ = value; + } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as CalloutExtensionRecommendation); + return Equals(other as MoveUnusedBudgetRecommendation); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CalloutExtensionRecommendation other) { + public bool Equals(MoveUnusedBudgetRecommendation other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if(!recommendedExtensions_.Equals(other.recommendedExtensions_)) return false; + if (ExcessCampaignBudget != other.ExcessCampaignBudget) return false; + if (!object.Equals(BudgetRecommendation, other.BudgetRecommendation)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; - hash ^= recommendedExtensions_.GetHashCode(); + if (excessCampaignBudget_ != null) hash ^= ExcessCampaignBudget.GetHashCode(); + if (budgetRecommendation_ != null) hash ^= BudgetRecommendation.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3824,7 +3861,13 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { - recommendedExtensions_.WriteTo(output, _repeated_recommendedExtensions_codec); + if (excessCampaignBudget_ != null) { + _single_excessCampaignBudget_codec.WriteTagAndValue(output, ExcessCampaignBudget); + } + if (budgetRecommendation_ != null) { + output.WriteRawTag(18); + output.WriteMessage(BudgetRecommendation); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3833,7 +3876,12 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; - size += recommendedExtensions_.CalculateSize(_repeated_recommendedExtensions_codec); + if (excessCampaignBudget_ != null) { + size += _single_excessCampaignBudget_codec.CalculateSizeWithTag(ExcessCampaignBudget); + } + if (budgetRecommendation_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(BudgetRecommendation); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3841,11 +3889,21 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CalloutExtensionRecommendation other) { + public void MergeFrom(MoveUnusedBudgetRecommendation other) { if (other == null) { return; } - recommendedExtensions_.Add(other.recommendedExtensions_); + if (other.excessCampaignBudget_ != null) { + if (excessCampaignBudget_ == null || other.ExcessCampaignBudget != "") { + ExcessCampaignBudget = other.ExcessCampaignBudget; + } + } + if (other.budgetRecommendation_ != null) { + if (budgetRecommendation_ == null) { + BudgetRecommendation = new global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation(); + } + BudgetRecommendation.MergeFrom(other.BudgetRecommendation); + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3858,7 +3916,17 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - recommendedExtensions_.AddEntriesFrom(input, _repeated_recommendedExtensions_codec); + string value = _single_excessCampaignBudget_codec.Read(input); + if (excessCampaignBudget_ == null || value != "") { + ExcessCampaignBudget = value; + } + break; + } + case 18: { + if (budgetRecommendation_ == null) { + BudgetRecommendation = new global::Google.Ads.GoogleAds.V2.Resources.Recommendation.Types.CampaignBudgetRecommendation(); + } + input.ReadMessage(BudgetRecommendation); break; } } @@ -3995,13 +4063,13 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// The keyword match type recommendation. + /// The Optimize Ad Rotation recommendation. /// - public sealed partial class KeywordMatchTypeRecommendation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new KeywordMatchTypeRecommendation()); + public sealed partial class OptimizeAdRotationRecommendation : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OptimizeAdRotationRecommendation()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { @@ -4014,75 +4082,41 @@ public sealed partial class KeywordMatchTypeRecommendation : pb::IMessageField number for the "keyword" field. - public const int KeywordFieldNumber = 1; - private global::Google.Ads.GoogleAds.V2.Common.KeywordInfo keyword_; - /// - /// The existing keyword where the match type should be more broad. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Common.KeywordInfo Keyword { - get { return keyword_; } - set { - keyword_ = value; - } - } - - /// Field number for the "recommended_match_type" field. - public const int RecommendedMatchTypeFieldNumber = 2; - private global::Google.Ads.GoogleAds.V2.Enums.KeywordMatchTypeEnum.Types.KeywordMatchType recommendedMatchType_ = 0; - /// - /// The recommended new match type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Ads.GoogleAds.V2.Enums.KeywordMatchTypeEnum.Types.KeywordMatchType RecommendedMatchType { - get { return recommendedMatchType_; } - set { - recommendedMatchType_ = value; - } + public OptimizeAdRotationRecommendation Clone() { + return new OptimizeAdRotationRecommendation(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { - return Equals(other as KeywordMatchTypeRecommendation); + return Equals(other as OptimizeAdRotationRecommendation); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(KeywordMatchTypeRecommendation other) { + public bool Equals(OptimizeAdRotationRecommendation other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (!object.Equals(Keyword, other.Keyword)) return false; - if (RecommendedMatchType != other.RecommendedMatchType) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; - if (keyword_ != null) hash ^= Keyword.GetHashCode(); - if (RecommendedMatchType != 0) hash ^= RecommendedMatchType.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -4096,14 +4130,6 @@ public override string ToString() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { - if (keyword_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Keyword); - } - if (RecommendedMatchType != 0) { - output.WriteRawTag(16); - output.WriteEnum((int) RecommendedMatchType); - } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -4112,12 +4138,6 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; - if (keyword_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Keyword); - } - if (RecommendedMatchType != 0) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RecommendedMatchType); - } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -4125,19 +4145,10 @@ public int CalculateSize() { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(KeywordMatchTypeRecommendation other) { + public void MergeFrom(OptimizeAdRotationRecommendation other) { if (other == null) { return; } - if (other.keyword_ != null) { - if (keyword_ == null) { - Keyword = new global::Google.Ads.GoogleAds.V2.Common.KeywordInfo(); - } - Keyword.MergeFrom(other.Keyword); - } - if (other.RecommendedMatchType != 0) { - RecommendedMatchType = other.RecommendedMatchType; - } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -4149,17 +4160,6 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; - case 10: { - if (keyword_ == null) { - Keyword = new global::Google.Ads.GoogleAds.V2.Common.KeywordInfo(); - } - input.ReadMessage(Keyword); - break; - } - case 16: { - RecommendedMatchType = (global::Google.Ads.GoogleAds.V2.Enums.KeywordMatchTypeEnum.Types.KeywordMatchType) input.ReadEnum(); - break; - } } } } diff --git a/src/V2/Stubs/Segments.cs b/src/V2/Stubs/Segments.cs index 70561e5ff..65e8b3345 100644 --- a/src/V2/Stubs/Segments.cs +++ b/src/V2/Stubs/Segments.cs @@ -39,151 +39,154 @@ static SegmentsReflection() { "b3RvGipnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9kZXZpY2UucHJv", "dG8aPmdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2VudW1zL2V4dGVybmFsX2Nv", "bnZlcnNpb25fc291cmNlLnByb3RvGj1nb29nbGUvYWRzL2dvb2dsZWFkcy92", - "Mi9lbnVtcy9ob3RlbF9kYXRlX3NlbGVjdGlvbl90eXBlLnByb3RvGjNnb29n", - "bGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9ob3RlbF9yYXRlX3R5cGUucHJv", - "dG8aMWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2VudW1zL21vbnRoX29mX3ll", - "YXIucHJvdG8aNGdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2VudW1zL3BsYWNl", - "aG9sZGVyX3R5cGUucHJvdG8aM2dvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2Vu", - "dW1zL3Byb2R1Y3RfY2hhbm5lbC5wcm90bxo/Z29vZ2xlL2Fkcy9nb29nbGVh", - "ZHMvdjIvZW51bXMvcHJvZHVjdF9jaGFubmVsX2V4Y2x1c2l2aXR5LnByb3Rv", - "GjVnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9wcm9kdWN0X2NvbmRp", - "dGlvbi5wcm90bxpDZ29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZW51bXMvc2Vh", - "cmNoX2VuZ2luZV9yZXN1bHRzX3BhZ2VfdHlwZS5wcm90bxo6Z29vZ2xlL2Fk", - "cy9nb29nbGVhZHMvdjIvZW51bXMvc2VhcmNoX3Rlcm1fbWF0Y2hfdHlwZS5w", - "cm90bxooZ29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZW51bXMvc2xvdC5wcm90", - "bxoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBp", - "L2Fubm90YXRpb25zLnByb3RvIs8pCghTZWdtZW50cxJXCg9hZF9uZXR3b3Jr", - "X3R5cGUYAyABKA4yPi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5B", - "ZE5ldHdvcmtUeXBlRW51bS5BZE5ldHdvcmtUeXBlEkoKCmNsaWNrX3R5cGUY", - "GiABKA4yNi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5DbGlja1R5", - "cGVFbnVtLkNsaWNrVHlwZRI3ChFjb252ZXJzaW9uX2FjdGlvbhg0IAEoCzIc", - "Lmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJ4Chpjb252ZXJzaW9uX2Fj", - "dGlvbl9jYXRlZ29yeRg1IAEoDjJULmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYy", - "LmVudW1zLkNvbnZlcnNpb25BY3Rpb25DYXRlZ29yeUVudW0uQ29udmVyc2lv", - "bkFjdGlvbkNhdGVnb3J5EjwKFmNvbnZlcnNpb25fYWN0aW9uX25hbWUYNiAB", - "KAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSOQoVY29udmVyc2lv", - "bl9hZGp1c3RtZW50GBsgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1", - "ZRKLAQohY29udmVyc2lvbl9hdHRyaWJ1dGlvbl9ldmVudF90eXBlGAIgASgO", - "MmAuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuQ29udmVyc2lvbkF0", - "dHJpYnV0aW9uRXZlbnRUeXBlRW51bS5Db252ZXJzaW9uQXR0cmlidXRpb25F", - "dmVudFR5cGUSaQoVY29udmVyc2lvbl9sYWdfYnVja2V0GDIgASgOMkouZ29v", - "Z2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuQ29udmVyc2lvbkxhZ0J1Y2tl", - "dEVudW0uQ29udmVyc2lvbkxhZ0J1Y2tldBKPAQojY29udmVyc2lvbl9vcl9h", - "ZGp1c3RtZW50X2xhZ19idWNrZXQYMyABKA4yYi5nb29nbGUuYWRzLmdvb2ds", - "ZWFkcy52Mi5lbnVtcy5Db252ZXJzaW9uT3JBZGp1c3RtZW50TGFnQnVja2V0", - "RW51bS5Db252ZXJzaW9uT3JBZGp1c3RtZW50TGFnQnVja2V0EioKBGRhdGUY", - "BCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSSwoLZGF5X29m", - "X3dlZWsYBSABKA4yNi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5E", - "YXlPZldlZWtFbnVtLkRheU9mV2VlaxJACgZkZXZpY2UYASABKA4yMC5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5EZXZpY2VFbnVtLkRldmljZRJ4", - "ChpleHRlcm5hbF9jb252ZXJzaW9uX3NvdXJjZRg3IAEoDjJULmdvb2dsZS5h", - "ZHMuZ29vZ2xlYWRzLnYyLmVudW1zLkV4dGVybmFsQ29udmVyc2lvblNvdXJj", - "ZUVudW0uRXh0ZXJuYWxDb252ZXJzaW9uU291cmNlEjgKEmdlb190YXJnZXRf", - "YWlycG9ydBhBIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3", - "ChFnZW9fdGFyZ2V0X2NhbnRvbhhMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5T", - "dHJpbmdWYWx1ZRI1Cg9nZW9fdGFyZ2V0X2NpdHkYPiABKAsyHC5nb29nbGUu", - "cHJvdG9idWYuU3RyaW5nVmFsdWUSOAoSZ2VvX3RhcmdldF9jb3VudHJ5GE0g", - "ASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEWdlb190YXJn", - "ZXRfY291bnR5GEQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", - "EjkKE2dlb190YXJnZXRfZGlzdHJpY3QYRSABKAsyHC5nb29nbGUucHJvdG9i", - "dWYuU3RyaW5nVmFsdWUSNgoQZ2VvX3RhcmdldF9tZXRybxg/IAEoCzIcLmdv", - "b2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJHCiFnZW9fdGFyZ2V0X21vc3Rf", - "c3BlY2lmaWNfbG9jYXRpb24YSCABKAsyHC5nb29nbGUucHJvdG9idWYuU3Ry", - "aW5nVmFsdWUSPAoWZ2VvX3RhcmdldF9wb3N0YWxfY29kZRhHIAEoCzIcLmdv", - "b2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI5ChNnZW9fdGFyZ2V0X3Byb3Zp", - "bmNlGEsgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEWdl", - "b190YXJnZXRfcmVnaW9uGEAgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmlu", - "Z1ZhbHVlEjYKEGdlb190YXJnZXRfc3RhdGUYQyABKAsyHC5nb29nbGUucHJv", - "dG9idWYuU3RyaW5nVmFsdWUSPgoZaG90ZWxfYm9va2luZ193aW5kb3dfZGF5", - "cxgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjQKD2hvdGVs", - "X2NlbnRlcl9pZBgHIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVl", - "EjkKE2hvdGVsX2NoZWNrX2luX2RhdGUYCCABKAsyHC5nb29nbGUucHJvdG9i", - "dWYuU3RyaW5nVmFsdWUSWgoaaG90ZWxfY2hlY2tfaW5fZGF5X29mX3dlZWsY", - "CSABKA4yNi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5EYXlPZldl", - "ZWtFbnVtLkRheU9mV2VlaxIwCgpob3RlbF9jaXR5GAogASgLMhwuZ29vZ2xl", - "LnByb3RvYnVmLlN0cmluZ1ZhbHVlEjAKC2hvdGVsX2NsYXNzGAsgASgLMhsu", - "Z29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSMwoNaG90ZWxfY291bnRyeRgM", - "IAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJzChlob3RlbF9k", - "YXRlX3NlbGVjdGlvbl90eXBlGA0gASgOMlAuZ29vZ2xlLmFkcy5nb29nbGVh", - "ZHMudjIuZW51bXMuSG90ZWxEYXRlU2VsZWN0aW9uVHlwZUVudW0uSG90ZWxE", - "YXRlU2VsZWN0aW9uVHlwZRI5ChRob3RlbF9sZW5ndGhfb2Zfc3RheRgOIAEo", - "CzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjgKEmhvdGVsX3JhdGVf", - "cnVsZV9pZBhJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJX", - "Cg9ob3RlbF9yYXRlX3R5cGUYSiABKA4yPi5nb29nbGUuYWRzLmdvb2dsZWFk", - "cy52Mi5lbnVtcy5Ib3RlbFJhdGVUeXBlRW51bS5Ib3RlbFJhdGVUeXBlEjEK", - "C2hvdGVsX3N0YXRlGA8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1Zh", - "bHVlEikKBGhvdXIYECABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1", - "ZRJBCh1pbnRlcmFjdGlvbl9vbl90aGlzX2V4dGVuc2lvbhgxIAEoCzIaLmdv", - "b2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSOAoHa2V5d29yZBg9IAEoCzInLmdv", - "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbi5LZXl3b3JkEisKBW1vbnRo", - "GBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlElEKDW1vbnRo", - "X29mX3llYXIYEiABKA4yOi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVt", - "cy5Nb250aE9mWWVhckVudW0uTW9udGhPZlllYXISNgoQcGFydG5lcl9ob3Rl", - "bF9pZBgTIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJcChBw", - "bGFjZWhvbGRlcl90eXBlGBQgASgOMkIuZ29vZ2xlLmFkcy5nb29nbGVhZHMu", - "djIuZW51bXMuUGxhY2Vob2xkZXJUeXBlRW51bS5QbGFjZWhvbGRlclR5cGUS", - "OwoVcHJvZHVjdF9hZ2dyZWdhdG9yX2lkGBwgASgLMhwuZ29vZ2xlLnByb3Rv", - "YnVmLlVJbnQ2NFZhbHVlEkUKH3Byb2R1Y3RfYmlkZGluZ19jYXRlZ29yeV9s", - "ZXZlbDEYOCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQof", - "cHJvZHVjdF9iaWRkaW5nX2NhdGVnb3J5X2xldmVsMhg5IAEoCzIcLmdvb2ds", + "Mi9lbnVtcy9ob3RlbF9kYXRlX3NlbGVjdGlvbl90eXBlLnByb3RvGjZnb29n", + "bGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9ob3RlbF9wcmljZV9idWNrZXQu", + "cHJvdG8aM2dvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2VudW1zL2hvdGVsX3Jh", + "dGVfdHlwZS5wcm90bxoxZ29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIvZW51bXMv", + "bW9udGhfb2ZfeWVhci5wcm90bxo0Z29vZ2xlL2Fkcy9nb29nbGVhZHMvdjIv", + "ZW51bXMvcGxhY2Vob2xkZXJfdHlwZS5wcm90bxozZ29vZ2xlL2Fkcy9nb29n", + "bGVhZHMvdjIvZW51bXMvcHJvZHVjdF9jaGFubmVsLnByb3RvGj9nb29nbGUv", + "YWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9wcm9kdWN0X2NoYW5uZWxfZXhjbHVz", + "aXZpdHkucHJvdG8aNWdvb2dsZS9hZHMvZ29vZ2xlYWRzL3YyL2VudW1zL3By", + "b2R1Y3RfY29uZGl0aW9uLnByb3RvGkNnb29nbGUvYWRzL2dvb2dsZWFkcy92", + "Mi9lbnVtcy9zZWFyY2hfZW5naW5lX3Jlc3VsdHNfcGFnZV90eXBlLnByb3Rv", + "Gjpnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVtcy9zZWFyY2hfdGVybV9t", + "YXRjaF90eXBlLnByb3RvGihnb29nbGUvYWRzL2dvb2dsZWFkcy92Mi9lbnVt", + "cy9zbG90LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8a", + "HGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8isSoKCFNlZ21lbnRzElcK", + "D2FkX25ldHdvcmtfdHlwZRgDIAEoDjI+Lmdvb2dsZS5hZHMuZ29vZ2xlYWRz", + "LnYyLmVudW1zLkFkTmV0d29ya1R5cGVFbnVtLkFkTmV0d29ya1R5cGUSSgoK", + "Y2xpY2tfdHlwZRgaIAEoDjI2Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVu", + "dW1zLkNsaWNrVHlwZUVudW0uQ2xpY2tUeXBlEjcKEWNvbnZlcnNpb25fYWN0", + "aW9uGDQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEngKGmNv", + "bnZlcnNpb25fYWN0aW9uX2NhdGVnb3J5GDUgASgOMlQuZ29vZ2xlLmFkcy5n", + "b29nbGVhZHMudjIuZW51bXMuQ29udmVyc2lvbkFjdGlvbkNhdGVnb3J5RW51", + "bS5Db252ZXJzaW9uQWN0aW9uQ2F0ZWdvcnkSPAoWY29udmVyc2lvbl9hY3Rp", + "b25fbmFtZRg2IAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI5", + "ChVjb252ZXJzaW9uX2FkanVzdG1lbnQYGyABKAsyGi5nb29nbGUucHJvdG9i", + "dWYuQm9vbFZhbHVlEosBCiFjb252ZXJzaW9uX2F0dHJpYnV0aW9uX2V2ZW50", + "X3R5cGUYAiABKA4yYC5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5D", + "b252ZXJzaW9uQXR0cmlidXRpb25FdmVudFR5cGVFbnVtLkNvbnZlcnNpb25B", + "dHRyaWJ1dGlvbkV2ZW50VHlwZRJpChVjb252ZXJzaW9uX2xhZ19idWNrZXQY", + "MiABKA4ySi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5Db252ZXJz", + "aW9uTGFnQnVja2V0RW51bS5Db252ZXJzaW9uTGFnQnVja2V0Eo8BCiNjb252", + "ZXJzaW9uX29yX2FkanVzdG1lbnRfbGFnX2J1Y2tldBgzIAEoDjJiLmdvb2ds", + "ZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLkNvbnZlcnNpb25PckFkanVzdG1l", + "bnRMYWdCdWNrZXRFbnVtLkNvbnZlcnNpb25PckFkanVzdG1lbnRMYWdCdWNr", + "ZXQSKgoEZGF0ZRgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1", + "ZRJLCgtkYXlfb2Zfd2VlaxgFIAEoDjI2Lmdvb2dsZS5hZHMuZ29vZ2xlYWRz", + "LnYyLmVudW1zLkRheU9mV2Vla0VudW0uRGF5T2ZXZWVrEkAKBmRldmljZRgB", + "IAEoDjIwLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLkRldmljZUVu", + "dW0uRGV2aWNlEngKGmV4dGVybmFsX2NvbnZlcnNpb25fc291cmNlGDcgASgO", + "MlQuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMuRXh0ZXJuYWxDb252", + "ZXJzaW9uU291cmNlRW51bS5FeHRlcm5hbENvbnZlcnNpb25Tb3VyY2USOAoS", + "Z2VvX3RhcmdldF9haXJwb3J0GEEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0", + "cmluZ1ZhbHVlEjcKEWdlb190YXJnZXRfY2FudG9uGEwgASgLMhwuZ29vZ2xl", + "LnByb3RvYnVmLlN0cmluZ1ZhbHVlEjUKD2dlb190YXJnZXRfY2l0eRg+IAEo", + "CzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI4ChJnZW9fdGFyZ2V0", + "X2NvdW50cnkYTSABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUS", + "NwoRZ2VvX3RhcmdldF9jb3VudHkYRCABKAsyHC5nb29nbGUucHJvdG9idWYu", + "U3RyaW5nVmFsdWUSOQoTZ2VvX3RhcmdldF9kaXN0cmljdBhFIAEoCzIcLmdv", + "b2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI2ChBnZW9fdGFyZ2V0X21ldHJv", + "GD8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkcKIWdlb190", + "YXJnZXRfbW9zdF9zcGVjaWZpY19sb2NhdGlvbhhIIAEoCzIcLmdvb2dsZS5w", + "cm90b2J1Zi5TdHJpbmdWYWx1ZRI8ChZnZW9fdGFyZ2V0X3Bvc3RhbF9jb2Rl", + "GEcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjkKE2dlb190", + "YXJnZXRfcHJvdmluY2UYSyABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5n", + "VmFsdWUSNwoRZ2VvX3RhcmdldF9yZWdpb24YQCABKAsyHC5nb29nbGUucHJv", + "dG9idWYuU3RyaW5nVmFsdWUSNgoQZ2VvX3RhcmdldF9zdGF0ZRhDIAEoCzIc", + "Lmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI+Chlob3RlbF9ib29raW5n", + "X3dpbmRvd19kYXlzGAYgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFs", + "dWUSNAoPaG90ZWxfY2VudGVyX2lkGAcgASgLMhsuZ29vZ2xlLnByb3RvYnVm", + "LkludDY0VmFsdWUSOQoTaG90ZWxfY2hlY2tfaW5fZGF0ZRgIIAEoCzIcLmdv", + "b2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJaChpob3RlbF9jaGVja19pbl9k", + "YXlfb2Zfd2VlaxgJIAEoDjI2Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVu", + "dW1zLkRheU9mV2Vla0VudW0uRGF5T2ZXZWVrEjAKCmhvdGVsX2NpdHkYCiAB", + "KAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSMAoLaG90ZWxfY2xh", + "c3MYCyABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRIzCg1ob3Rl", + "bF9jb3VudHJ5GAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", + "EnMKGWhvdGVsX2RhdGVfc2VsZWN0aW9uX3R5cGUYDSABKA4yUC5nb29nbGUu", + "YWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5Ib3RlbERhdGVTZWxlY3Rpb25UeXBl", + "RW51bS5Ib3RlbERhdGVTZWxlY3Rpb25UeXBlEjkKFGhvdGVsX2xlbmd0aF9v", + "Zl9zdGF5GA4gASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSOAoS", + "aG90ZWxfcmF0ZV9ydWxlX2lkGEkgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0", + "cmluZ1ZhbHVlElcKD2hvdGVsX3JhdGVfdHlwZRhKIAEoDjI+Lmdvb2dsZS5h", + "ZHMuZ29vZ2xlYWRzLnYyLmVudW1zLkhvdGVsUmF0ZVR5cGVFbnVtLkhvdGVs", + "UmF0ZVR5cGUSYAoSaG90ZWxfcHJpY2VfYnVja2V0GE4gASgOMkQuZ29vZ2xl", + "LmFkcy5nb29nbGVhZHMudjIuZW51bXMuSG90ZWxQcmljZUJ1Y2tldEVudW0u", + "SG90ZWxQcmljZUJ1Y2tldBIxCgtob3RlbF9zdGF0ZRgPIAEoCzIcLmdvb2ds", + "ZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIpCgRob3VyGBAgASgLMhsuZ29vZ2xl", + "LnByb3RvYnVmLkludDMyVmFsdWUSQQodaW50ZXJhY3Rpb25fb25fdGhpc19l", + "eHRlbnNpb24YMSABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjgK", + "B2tleXdvcmQYPSABKAsyJy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21t", + "b24uS2V5d29yZBIrCgVtb250aBgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5T", + "dHJpbmdWYWx1ZRJRCg1tb250aF9vZl95ZWFyGBIgASgOMjouZ29vZ2xlLmFk", + "cy5nb29nbGVhZHMudjIuZW51bXMuTW9udGhPZlllYXJFbnVtLk1vbnRoT2ZZ", + "ZWFyEjYKEHBhcnRuZXJfaG90ZWxfaWQYEyABKAsyHC5nb29nbGUucHJvdG9i", + "dWYuU3RyaW5nVmFsdWUSXAoQcGxhY2Vob2xkZXJfdHlwZRgUIAEoDjJCLmdv", + "b2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLlBsYWNlaG9sZGVyVHlwZUVu", + "dW0uUGxhY2Vob2xkZXJUeXBlEjsKFXByb2R1Y3RfYWdncmVnYXRvcl9pZBgc", + "IAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50NjRWYWx1ZRJFCh9wcm9kdWN0", + "X2JpZGRpbmdfY2F0ZWdvcnlfbGV2ZWwxGDggASgLMhwuZ29vZ2xlLnByb3Rv", + "YnVmLlN0cmluZ1ZhbHVlEkUKH3Byb2R1Y3RfYmlkZGluZ19jYXRlZ29yeV9s", + "ZXZlbDIYOSABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQof", + "cHJvZHVjdF9iaWRkaW5nX2NhdGVnb3J5X2xldmVsMxg6IAEoCzIcLmdvb2ds", "ZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJFCh9wcm9kdWN0X2JpZGRpbmdfY2F0", - "ZWdvcnlfbGV2ZWwzGDogASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1Zh", - "bHVlEkUKH3Byb2R1Y3RfYmlkZGluZ19jYXRlZ29yeV9sZXZlbDQYOyABKAsy", - "HC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQofcHJvZHVjdF9iaWRk", - "aW5nX2NhdGVnb3J5X2xldmVsNRg8IAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5T", - "dHJpbmdWYWx1ZRIzCg1wcm9kdWN0X2JyYW5kGB0gASgLMhwuZ29vZ2xlLnBy", - "b3RvYnVmLlN0cmluZ1ZhbHVlElkKD3Byb2R1Y3RfY2hhbm5lbBgeIAEoDjJA", - "Lmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLlByb2R1Y3RDaGFubmVs", - "RW51bS5Qcm9kdWN0Q2hhbm5lbBJ7Chtwcm9kdWN0X2NoYW5uZWxfZXhjbHVz", - "aXZpdHkYHyABKA4yVi5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5Q", - "cm9kdWN0Q2hhbm5lbEV4Y2x1c2l2aXR5RW51bS5Qcm9kdWN0Q2hhbm5lbEV4", - "Y2x1c2l2aXR5El8KEXByb2R1Y3RfY29uZGl0aW9uGCAgASgOMkQuZ29vZ2xl", - "LmFkcy5nb29nbGVhZHMudjIuZW51bXMuUHJvZHVjdENvbmRpdGlvbkVudW0u", - "UHJvZHVjdENvbmRpdGlvbhI1Cg9wcm9kdWN0X2NvdW50cnkYISABKAsyHC5n", - "b29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSPwoZcHJvZHVjdF9jdXN0b21f", - "YXR0cmlidXRlMBgiIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1", - "ZRI/Chlwcm9kdWN0X2N1c3RvbV9hdHRyaWJ1dGUxGCMgASgLMhwuZ29vZ2xl", - "LnByb3RvYnVmLlN0cmluZ1ZhbHVlEj8KGXByb2R1Y3RfY3VzdG9tX2F0dHJp", - "YnV0ZTIYJCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSPwoZ", - "cHJvZHVjdF9jdXN0b21fYXR0cmlidXRlMxglIAEoCzIcLmdvb2dsZS5wcm90", - "b2J1Zi5TdHJpbmdWYWx1ZRI/Chlwcm9kdWN0X2N1c3RvbV9hdHRyaWJ1dGU0", - "GCYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjUKD3Byb2R1", - "Y3RfaXRlbV9pZBgnIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1", - "ZRI2ChBwcm9kdWN0X2xhbmd1YWdlGCggASgLMhwuZ29vZ2xlLnByb3RvYnVm", - "LlN0cmluZ1ZhbHVlEjkKE3Byb2R1Y3RfbWVyY2hhbnRfaWQYKSABKAsyHC5n", - "b29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSNgoQcHJvZHVjdF9zdG9yZV9p", - "ZBgqIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIzCg1wcm9k", - "dWN0X3RpdGxlGCsgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", - "EjUKD3Byb2R1Y3RfdHlwZV9sMRgsIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5T", - "dHJpbmdWYWx1ZRI1Cg9wcm9kdWN0X3R5cGVfbDIYLSABKAsyHC5nb29nbGUu", - "cHJvdG9idWYuU3RyaW5nVmFsdWUSNQoPcHJvZHVjdF90eXBlX2wzGC4gASgL", - "MhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjUKD3Byb2R1Y3RfdHlw", - "ZV9sNBgvIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI1Cg9w", - "cm9kdWN0X3R5cGVfbDUYMCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5n", - "VmFsdWUSLQoHcXVhcnRlchgVIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJp", - "bmdWYWx1ZRKDAQofc2VhcmNoX2VuZ2luZV9yZXN1bHRzX3BhZ2VfdHlwZRhG", - "IAEoDjJaLmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLlNlYXJjaEVu", - "Z2luZVJlc3VsdHNQYWdlVHlwZUVudW0uU2VhcmNoRW5naW5lUmVzdWx0c1Bh", - "Z2VUeXBlEmoKFnNlYXJjaF90ZXJtX21hdGNoX3R5cGUYFiABKA4ySi5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5TZWFyY2hUZXJtTWF0Y2hUeXBl", - "RW51bS5TZWFyY2hUZXJtTWF0Y2hUeXBlEjoKBHNsb3QYFyABKA4yLC5nb29n", - "bGUuYWRzLmdvb2dsZWFkcy52Mi5lbnVtcy5TbG90RW51bS5TbG90Ei0KB3dl", - "YnBhZ2UYQiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSKgoE", - "d2VlaxgYIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIpCgR5", - "ZWFyGBkgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUifgoHS2V5", - "d29yZBI4ChJhZF9ncm91cF9jcml0ZXJpb24YASABKAsyHC5nb29nbGUucHJv", - "dG9idWYuU3RyaW5nVmFsdWUSOQoEaW5mbxgCIAEoCzIrLmdvb2dsZS5hZHMu", - "Z29vZ2xlYWRzLnYyLmNvbW1vbi5LZXl3b3JkSW5mb0LoAQoiY29tLmdvb2ds", - "ZS5hZHMuZ29vZ2xlYWRzLnYyLmNvbW1vbkINU2VnbWVudHNQcm90b1ABWkRn", - "b29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2Fkcy9nb29n", - "bGVhZHMvdjIvY29tbW9uO2NvbW1vbqICA0dBQaoCHkdvb2dsZS5BZHMuR29v", - "Z2xlQWRzLlYyLkNvbW1vbsoCHkdvb2dsZVxBZHNcR29vZ2xlQWRzXFYyXENv", - "bW1vbuoCIkdvb2dsZTo6QWRzOjpHb29nbGVBZHM6OlYyOjpDb21tb25iBnBy", - "b3RvMw==")); + "ZWdvcnlfbGV2ZWw0GDsgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1Zh", + "bHVlEkUKH3Byb2R1Y3RfYmlkZGluZ19jYXRlZ29yeV9sZXZlbDUYPCABKAsy", + "HC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSMwoNcHJvZHVjdF9icmFu", + "ZBgdIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJZCg9wcm9k", + "dWN0X2NoYW5uZWwYHiABKA4yQC5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5l", + "bnVtcy5Qcm9kdWN0Q2hhbm5lbEVudW0uUHJvZHVjdENoYW5uZWwSewobcHJv", + "ZHVjdF9jaGFubmVsX2V4Y2x1c2l2aXR5GB8gASgOMlYuZ29vZ2xlLmFkcy5n", + "b29nbGVhZHMudjIuZW51bXMuUHJvZHVjdENoYW5uZWxFeGNsdXNpdml0eUVu", + "dW0uUHJvZHVjdENoYW5uZWxFeGNsdXNpdml0eRJfChFwcm9kdWN0X2NvbmRp", + "dGlvbhggIAEoDjJELmdvb2dsZS5hZHMuZ29vZ2xlYWRzLnYyLmVudW1zLlBy", + "b2R1Y3RDb25kaXRpb25FbnVtLlByb2R1Y3RDb25kaXRpb24SNQoPcHJvZHVj", + "dF9jb3VudHJ5GCEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVl", + "Ej8KGXByb2R1Y3RfY3VzdG9tX2F0dHJpYnV0ZTAYIiABKAsyHC5nb29nbGUu", + "cHJvdG9idWYuU3RyaW5nVmFsdWUSPwoZcHJvZHVjdF9jdXN0b21fYXR0cmli", + "dXRlMRgjIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI/Chlw", + "cm9kdWN0X2N1c3RvbV9hdHRyaWJ1dGUyGCQgASgLMhwuZ29vZ2xlLnByb3Rv", + "YnVmLlN0cmluZ1ZhbHVlEj8KGXByb2R1Y3RfY3VzdG9tX2F0dHJpYnV0ZTMY", + "JSABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSPwoZcHJvZHVj", + "dF9jdXN0b21fYXR0cmlidXRlNBgmIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5T", + "dHJpbmdWYWx1ZRI1Cg9wcm9kdWN0X2l0ZW1faWQYJyABKAsyHC5nb29nbGUu", + "cHJvdG9idWYuU3RyaW5nVmFsdWUSNgoQcHJvZHVjdF9sYW5ndWFnZRgoIAEo", + "CzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI5ChNwcm9kdWN0X21l", + "cmNoYW50X2lkGCkgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVl", + "EjYKEHByb2R1Y3Rfc3RvcmVfaWQYKiABKAsyHC5nb29nbGUucHJvdG9idWYu", + "U3RyaW5nVmFsdWUSMwoNcHJvZHVjdF90aXRsZRgrIAEoCzIcLmdvb2dsZS5w", + "cm90b2J1Zi5TdHJpbmdWYWx1ZRI1Cg9wcm9kdWN0X3R5cGVfbDEYLCABKAsy", + "HC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNQoPcHJvZHVjdF90eXBl", + "X2wyGC0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjUKD3By", + "b2R1Y3RfdHlwZV9sMxguIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdW", + "YWx1ZRI1Cg9wcm9kdWN0X3R5cGVfbDQYLyABKAsyHC5nb29nbGUucHJvdG9i", + "dWYuU3RyaW5nVmFsdWUSNQoPcHJvZHVjdF90eXBlX2w1GDAgASgLMhwuZ29v", + "Z2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEi0KB3F1YXJ0ZXIYFSABKAsyHC5n", + "b29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSgwEKH3NlYXJjaF9lbmdpbmVf", + "cmVzdWx0c19wYWdlX3R5cGUYRiABKA4yWi5nb29nbGUuYWRzLmdvb2dsZWFk", + "cy52Mi5lbnVtcy5TZWFyY2hFbmdpbmVSZXN1bHRzUGFnZVR5cGVFbnVtLlNl", + "YXJjaEVuZ2luZVJlc3VsdHNQYWdlVHlwZRJqChZzZWFyY2hfdGVybV9tYXRj", + "aF90eXBlGBYgASgOMkouZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMu", + "U2VhcmNoVGVybU1hdGNoVHlwZUVudW0uU2VhcmNoVGVybU1hdGNoVHlwZRI6", + "CgRzbG90GBcgASgOMiwuZ29vZ2xlLmFkcy5nb29nbGVhZHMudjIuZW51bXMu", + "U2xvdEVudW0uU2xvdBItCgd3ZWJwYWdlGEIgASgLMhwuZ29vZ2xlLnByb3Rv", + "YnVmLlN0cmluZ1ZhbHVlEioKBHdlZWsYGCABKAsyHC5nb29nbGUucHJvdG9i", + "dWYuU3RyaW5nVmFsdWUSKQoEeWVhchgZIAEoCzIbLmdvb2dsZS5wcm90b2J1", + "Zi5JbnQzMlZhbHVlIn4KB0tleXdvcmQSOAoSYWRfZ3JvdXBfY3JpdGVyaW9u", + "GAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjkKBGluZm8Y", + "AiABKAsyKy5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb24uS2V5d29y", + "ZEluZm9C6AEKImNvbS5nb29nbGUuYWRzLmdvb2dsZWFkcy52Mi5jb21tb25C", + "DVNlZ21lbnRzUHJvdG9QAVpEZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8v", + "Z29vZ2xlYXBpcy9hZHMvZ29vZ2xlYWRzL3YyL2NvbW1vbjtjb21tb26iAgNH", + "QUGqAh5Hb29nbGUuQWRzLkdvb2dsZUFkcy5WMi5Db21tb27KAh5Hb29nbGVc", + "QWRzXEdvb2dsZUFkc1xWMlxDb21tb27qAiJHb29nbGU6OkFkczo6R29vZ2xl", + "QWRzOjpWMjo6Q29tbW9uYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.CriteriaReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.AdNetworkTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ClickTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionActionCategoryReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionAttributionEventTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionLagBucketReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionOrAdjustmentLagBucketReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.DayOfWeekReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.DeviceReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ExternalConversionSourceReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.HotelDateSelectionTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.HotelRateTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.MonthOfYearReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PlaceholderTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ProductChannelReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ProductChannelExclusivityReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ProductConditionReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SearchEngineResultsPageTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SearchTermMatchTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SlotReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Google.Ads.GoogleAds.V2.Common.CriteriaReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.AdNetworkTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ClickTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionActionCategoryReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionAttributionEventTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionLagBucketReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ConversionOrAdjustmentLagBucketReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.DayOfWeekReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.DeviceReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ExternalConversionSourceReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.HotelDateSelectionTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.HotelRateTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.MonthOfYearReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.PlaceholderTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ProductChannelReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ProductChannelExclusivityReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.ProductConditionReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SearchEngineResultsPageTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SearchTermMatchTypeReflection.Descriptor, global::Google.Ads.GoogleAds.V2.Enums.SlotReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Api.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.Segments), global::Google.Ads.GoogleAds.V2.Common.Segments.Parser, new[]{ "AdNetworkType", "ClickType", "ConversionAction", "ConversionActionCategory", "ConversionActionName", "ConversionAdjustment", "ConversionAttributionEventType", "ConversionLagBucket", "ConversionOrAdjustmentLagBucket", "Date", "DayOfWeek", "Device", "ExternalConversionSource", "GeoTargetAirport", "GeoTargetCanton", "GeoTargetCity", "GeoTargetCountry", "GeoTargetCounty", "GeoTargetDistrict", "GeoTargetMetro", "GeoTargetMostSpecificLocation", "GeoTargetPostalCode", "GeoTargetProvince", "GeoTargetRegion", "GeoTargetState", "HotelBookingWindowDays", "HotelCenterId", "HotelCheckInDate", "HotelCheckInDayOfWeek", "HotelCity", "HotelClass", "HotelCountry", "HotelDateSelectionType", "HotelLengthOfStay", "HotelRateRuleId", "HotelRateType", "HotelState", "Hour", "InteractionOnThisExtension", "Keyword", "Month", "MonthOfYear", "PartnerHotelId", "PlaceholderType", "ProductAggregatorId", "ProductBiddingCategoryLevel1", "ProductBiddingCategoryLevel2", "ProductBiddingCategoryLevel3", "ProductBiddingCategoryLevel4", "ProductBiddingCategoryLevel5", "ProductBrand", "ProductChannel", "ProductChannelExclusivity", "ProductCondition", "ProductCountry", "ProductCustomAttribute0", "ProductCustomAttribute1", "ProductCustomAttribute2", "ProductCustomAttribute3", "ProductCustomAttribute4", "ProductItemId", "ProductLanguage", "ProductMerchantId", "ProductStoreId", "ProductTitle", "ProductTypeL1", "ProductTypeL2", "ProductTypeL3", "ProductTypeL4", "ProductTypeL5", "Quarter", "SearchEngineResultsPageType", "SearchTermMatchType", "Slot", "Webpage", "Week", "Year" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.Segments), global::Google.Ads.GoogleAds.V2.Common.Segments.Parser, new[]{ "AdNetworkType", "ClickType", "ConversionAction", "ConversionActionCategory", "ConversionActionName", "ConversionAdjustment", "ConversionAttributionEventType", "ConversionLagBucket", "ConversionOrAdjustmentLagBucket", "Date", "DayOfWeek", "Device", "ExternalConversionSource", "GeoTargetAirport", "GeoTargetCanton", "GeoTargetCity", "GeoTargetCountry", "GeoTargetCounty", "GeoTargetDistrict", "GeoTargetMetro", "GeoTargetMostSpecificLocation", "GeoTargetPostalCode", "GeoTargetProvince", "GeoTargetRegion", "GeoTargetState", "HotelBookingWindowDays", "HotelCenterId", "HotelCheckInDate", "HotelCheckInDayOfWeek", "HotelCity", "HotelClass", "HotelCountry", "HotelDateSelectionType", "HotelLengthOfStay", "HotelRateRuleId", "HotelRateType", "HotelPriceBucket", "HotelState", "Hour", "InteractionOnThisExtension", "Keyword", "Month", "MonthOfYear", "PartnerHotelId", "PlaceholderType", "ProductAggregatorId", "ProductBiddingCategoryLevel1", "ProductBiddingCategoryLevel2", "ProductBiddingCategoryLevel3", "ProductBiddingCategoryLevel4", "ProductBiddingCategoryLevel5", "ProductBrand", "ProductChannel", "ProductChannelExclusivity", "ProductCondition", "ProductCountry", "ProductCustomAttribute0", "ProductCustomAttribute1", "ProductCustomAttribute2", "ProductCustomAttribute3", "ProductCustomAttribute4", "ProductItemId", "ProductLanguage", "ProductMerchantId", "ProductStoreId", "ProductTitle", "ProductTypeL1", "ProductTypeL2", "ProductTypeL3", "ProductTypeL4", "ProductTypeL5", "Quarter", "SearchEngineResultsPageType", "SearchTermMatchType", "Slot", "Webpage", "Week", "Year" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Google.Ads.GoogleAds.V2.Common.Keyword), global::Google.Ads.GoogleAds.V2.Common.Keyword.Parser, new[]{ "AdGroupCriterion", "Info" }, null, null, null) })); } @@ -255,6 +258,7 @@ public Segments(Segments other) : this() { HotelLengthOfStay = other.HotelLengthOfStay; HotelRateRuleId = other.HotelRateRuleId; hotelRateType_ = other.hotelRateType_; + hotelPriceBucket_ = other.hotelPriceBucket_; HotelState = other.HotelState; Hour = other.Hour; InteractionOnThisExtension = other.InteractionOnThisExtension; @@ -864,6 +868,20 @@ public string HotelRateRuleId { } } + /// Field number for the "hotel_price_bucket" field. + public const int HotelPriceBucketFieldNumber = 78; + private global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketEnum.Types.HotelPriceBucket hotelPriceBucket_ = 0; + /// + /// Hotel price bucket. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketEnum.Types.HotelPriceBucket HotelPriceBucket { + get { return hotelPriceBucket_; } + set { + hotelPriceBucket_ = value; + } + } + /// Field number for the "hotel_state" field. public const int HotelStateFieldNumber = 15; private static readonly pb::FieldCodec _single_hotelState_codec = pb::FieldCodec.ForClassWrapper(122); @@ -1558,6 +1576,7 @@ public bool Equals(Segments other) { if (HotelLengthOfStay != other.HotelLengthOfStay) return false; if (HotelRateRuleId != other.HotelRateRuleId) return false; if (HotelRateType != other.HotelRateType) return false; + if (HotelPriceBucket != other.HotelPriceBucket) return false; if (HotelState != other.HotelState) return false; if (Hour != other.Hour) return false; if (InteractionOnThisExtension != other.InteractionOnThisExtension) return false; @@ -1641,6 +1660,7 @@ public override int GetHashCode() { if (hotelLengthOfStay_ != null) hash ^= HotelLengthOfStay.GetHashCode(); if (hotelRateRuleId_ != null) hash ^= HotelRateRuleId.GetHashCode(); if (HotelRateType != 0) hash ^= HotelRateType.GetHashCode(); + if (HotelPriceBucket != 0) hash ^= HotelPriceBucket.GetHashCode(); if (hotelState_ != null) hash ^= HotelState.GetHashCode(); if (hour_ != null) hash ^= Hour.GetHashCode(); if (interactionOnThisExtension_ != null) hash ^= InteractionOnThisExtension.GetHashCode(); @@ -1947,6 +1967,10 @@ public void WriteTo(pb::CodedOutputStream output) { if (geoTargetCountry_ != null) { _single_geoTargetCountry_codec.WriteTagAndValue(output, GeoTargetCountry); } + if (HotelPriceBucket != 0) { + output.WriteRawTag(240, 4); + output.WriteEnum((int) HotelPriceBucket); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2063,6 +2087,9 @@ public int CalculateSize() { if (HotelRateType != 0) { size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) HotelRateType); } + if (HotelPriceBucket != 0) { + size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) HotelPriceBucket); + } if (hotelState_ != null) { size += _single_hotelState_codec.CalculateSizeWithTag(HotelState); } @@ -2353,6 +2380,9 @@ public void MergeFrom(Segments other) { if (other.HotelRateType != 0) { HotelRateType = other.HotelRateType; } + if (other.HotelPriceBucket != 0) { + HotelPriceBucket = other.HotelPriceBucket; + } if (other.hotelState_ != null) { if (hotelState_ == null || other.HotelState != "") { HotelState = other.HotelState; @@ -3033,6 +3063,10 @@ public void MergeFrom(pb::CodedInputStream input) { } break; } + case 624: { + HotelPriceBucket = (global::Google.Ads.GoogleAds.V2.Enums.HotelPriceBucketEnum.Types.HotelPriceBucket) input.ReadEnum(); + break; + } } } } diff --git a/tests/Google.Ads.GoogleAds.Tests.csproj b/tests/Google.Ads.GoogleAds.Tests.csproj index b0b83625b..e3ac7c1b3 100644 --- a/tests/Google.Ads.GoogleAds.Tests.csproj +++ b/tests/Google.Ads.GoogleAds.Tests.csproj @@ -14,12 +14,12 @@ ..\src\GoogleAds.snk - - - - - - + + + + + + diff --git a/tests/V2/Services/InvoiceServiceClientTest.g.cs b/tests/V2/Services/InvoiceServiceClientTest.g.cs new file mode 100644 index 000000000..e1d173d66 --- /dev/null +++ b/tests/V2/Services/InvoiceServiceClientTest.g.cs @@ -0,0 +1,126 @@ +// Copyright 2019 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 code. DO NOT EDIT! + +namespace Google.Ads.GoogleAds.V2.Services.Tests +{ + using Google.Ads.GoogleAds.V2.Enums; + using apis = Google.Ads.GoogleAds.V2.Services; + using Google.Api.Gax; + using Google.Api.Gax.Grpc; + using Google.Protobuf.WellKnownTypes; + using Grpc.Core; + using Moq; + using System; + using System.Collections; + using System.Collections.Generic; + using System.Collections.ObjectModel; + using System.Threading; + using System.Threading.Tasks; + using NUnit.Framework; + + /// Generated unit tests + public class GeneratedInvoiceServiceClientTest + { + [Test] + public void ListInvoices() + { + Mock mockGrpcClient = new Mock(MockBehavior.Strict); + ListInvoicesRequest expectedRequest = new ListInvoicesRequest + { + CustomerId = "customerId-1772061412", + BillingSetup = "billingSetup-1181632583", + IssueYear = "issueYear1443510243", + IssueMonth = MonthOfYearEnum.Types.MonthOfYear.Unspecified, + }; + ListInvoicesResponse expectedResponse = new ListInvoicesResponse(); + mockGrpcClient.Setup(x => x.ListInvoices(expectedRequest, It.IsAny())) + .Returns(expectedResponse); + InvoiceServiceClient client = new InvoiceServiceClientImpl(mockGrpcClient.Object, null); + string customerId = "customerId-1772061412"; + string billingSetup = "billingSetup-1181632583"; + string issueYear = "issueYear1443510243"; + MonthOfYearEnum.Types.MonthOfYear issueMonth = MonthOfYearEnum.Types.MonthOfYear.Unspecified; + ListInvoicesResponse response = client.ListInvoices(customerId, billingSetup, issueYear, issueMonth); + Assert.AreEqual(expectedResponse, response); + mockGrpcClient.VerifyAll(); + } + + [Test] + public async Task ListInvoicesAsync() + { + Mock mockGrpcClient = new Mock(MockBehavior.Strict); + ListInvoicesRequest expectedRequest = new ListInvoicesRequest + { + CustomerId = "customerId-1772061412", + BillingSetup = "billingSetup-1181632583", + IssueYear = "issueYear1443510243", + IssueMonth = MonthOfYearEnum.Types.MonthOfYear.Unspecified, + }; + ListInvoicesResponse expectedResponse = new ListInvoicesResponse(); + mockGrpcClient.Setup(x => x.ListInvoicesAsync(expectedRequest, It.IsAny())) + .Returns(new Grpc.Core.AsyncUnaryCall(Task.FromResult(expectedResponse), null, null, null, null)); + InvoiceServiceClient client = new InvoiceServiceClientImpl(mockGrpcClient.Object, null); + string customerId = "customerId-1772061412"; + string billingSetup = "billingSetup-1181632583"; + string issueYear = "issueYear1443510243"; + MonthOfYearEnum.Types.MonthOfYear issueMonth = MonthOfYearEnum.Types.MonthOfYear.Unspecified; + ListInvoicesResponse response = await client.ListInvoicesAsync(customerId, billingSetup, issueYear, issueMonth); + Assert.AreEqual(expectedResponse, response); + mockGrpcClient.VerifyAll(); + } + + [Test] + public void ListInvoices2() + { + Mock mockGrpcClient = new Mock(MockBehavior.Strict); + ListInvoicesRequest request = new ListInvoicesRequest + { + CustomerId = "customerId-1772061412", + BillingSetup = "billingSetup-1181632583", + IssueYear = "issueYear1443510243", + IssueMonth = MonthOfYearEnum.Types.MonthOfYear.Unspecified, + }; + ListInvoicesResponse expectedResponse = new ListInvoicesResponse(); + mockGrpcClient.Setup(x => x.ListInvoices(request, It.IsAny())) + .Returns(expectedResponse); + InvoiceServiceClient client = new InvoiceServiceClientImpl(mockGrpcClient.Object, null); + ListInvoicesResponse response = client.ListInvoices(request); + Assert.AreEqual(expectedResponse, response); + mockGrpcClient.VerifyAll(); + } + + [Test] + public async Task ListInvoicesAsync2() + { + Mock mockGrpcClient = new Mock(MockBehavior.Strict); + ListInvoicesRequest request = new ListInvoicesRequest + { + CustomerId = "customerId-1772061412", + BillingSetup = "billingSetup-1181632583", + IssueYear = "issueYear1443510243", + IssueMonth = MonthOfYearEnum.Types.MonthOfYear.Unspecified, + }; + ListInvoicesResponse expectedResponse = new ListInvoicesResponse(); + mockGrpcClient.Setup(x => x.ListInvoicesAsync(request, It.IsAny())) + .Returns(new Grpc.Core.AsyncUnaryCall(Task.FromResult(expectedResponse), null, null, null, null)); + InvoiceServiceClient client = new InvoiceServiceClientImpl(mockGrpcClient.Object, null); + ListInvoicesResponse response = await client.ListInvoicesAsync(request); + Assert.AreEqual(expectedResponse, response); + mockGrpcClient.VerifyAll(); + } + + } +}