/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/video/livestream/v1/resources.proto

package com.google.cloud.video.livestream.v1;

/**
 *
 *
 * <pre>
 * Encryption settings.
 * </pre>
 *
 * Protobuf type {@code google.cloud.video.livestream.v1.Encryption}
 */
public final class Encryption extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption)
    EncryptionOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use Encryption.newBuilder() to construct.
  private Encryption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private Encryption() {
    id_ = "";
  }

  @java.lang.Override
  @SuppressWarnings({"unused"})
  protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
    return new Encryption();
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    return this.unknownFields;
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.cloud.video.livestream.v1.ResourcesProto
        .internal_static_google_cloud_video_livestream_v1_Encryption_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.cloud.video.livestream.v1.ResourcesProto
        .internal_static_google_cloud_video_livestream_v1_Encryption_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.cloud.video.livestream.v1.Encryption.class,
            com.google.cloud.video.livestream.v1.Encryption.Builder.class);
  }

  public interface SecretManagerSourceOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The name of the Secret Version containing the encryption key.
     * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
     * </pre>
     *
     * <code>
     * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The secretVersion.
     */
    java.lang.String getSecretVersion();
    /**
     *
     *
     * <pre>
     * Required. The name of the Secret Version containing the encryption key.
     * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
     * </pre>
     *
     * <code>
     * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for secretVersion.
     */
    com.google.protobuf.ByteString getSecretVersionBytes();
  }
  /**
   *
   *
   * <pre>
   * Configuration for secrets stored in Google Secret Manager.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.SecretManagerSource}
   */
  public static final class SecretManagerSource extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
      SecretManagerSourceOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SecretManagerSource.newBuilder() to construct.
    private SecretManagerSource(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private SecretManagerSource() {
      secretVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new SecretManagerSource();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_SecretManagerSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_SecretManagerSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.class,
              com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder.class);
    }

    public static final int SECRET_VERSION_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object secretVersion_ = "";
    /**
     *
     *
     * <pre>
     * Required. The name of the Secret Version containing the encryption key.
     * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
     * </pre>
     *
     * <code>
     * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The secretVersion.
     */
    @java.lang.Override
    public java.lang.String getSecretVersion() {
      java.lang.Object ref = secretVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        secretVersion_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The name of the Secret Version containing the encryption key.
     * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
     * </pre>
     *
     * <code>
     * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for secretVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSecretVersionBytes() {
      java.lang.Object ref = secretVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        secretVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(secretVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, secretVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(secretVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, secretVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource other =
          (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) obj;

      if (!getSecretVersion().equals(other.getSecretVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SECRET_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getSecretVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Configuration for secrets stored in Google Secret Manager.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.SecretManagerSource}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_SecretManagerSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_SecretManagerSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.class,
                com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder.class);
      }

      // Construct using
      // com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        secretVersion_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_SecretManagerSource_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
          getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource build() {
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource result =
            new com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.secretVersion_ = secretVersion_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) {
          return mergeFrom(
              (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource other) {
        if (other
            == com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
                .getDefaultInstance()) return this;
        if (!other.getSecretVersion().isEmpty()) {
          secretVersion_ = other.secretVersion_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  secretVersion_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object secretVersion_ = "";
      /**
       *
       *
       * <pre>
       * Required. The name of the Secret Version containing the encryption key.
       * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
       * </pre>
       *
       * <code>
       * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The secretVersion.
       */
      public java.lang.String getSecretVersion() {
        java.lang.Object ref = secretVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          secretVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the Secret Version containing the encryption key.
       * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
       * </pre>
       *
       * <code>
       * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The bytes for secretVersion.
       */
      public com.google.protobuf.ByteString getSecretVersionBytes() {
        java.lang.Object ref = secretVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          secretVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the Secret Version containing the encryption key.
       * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
       * </pre>
       *
       * <code>
       * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The secretVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSecretVersion(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        secretVersion_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the Secret Version containing the encryption key.
       * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
       * </pre>
       *
       * <code>
       * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearSecretVersion() {
        secretVersion_ = getDefaultInstance().getSecretVersion();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the Secret Version containing the encryption key.
       * `projects/{project}/secrets/{secret_id}/versions/{version_number}`
       * </pre>
       *
       * <code>
       * string secret_version = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The bytes for secretVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSecretVersionBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        secretVersion_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
    private static final com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretManagerSource> PARSER =
        new com.google.protobuf.AbstractParser<SecretManagerSource>() {
          @java.lang.Override
          public SecretManagerSource parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<SecretManagerSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretManagerSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface WidevineOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.Widevine)
      com.google.protobuf.MessageOrBuilder {}
  /**
   *
   *
   * <pre>
   * Widevine configuration.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Widevine}
   */
  public static final class Widevine extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.Widevine)
      WidevineOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Widevine.newBuilder() to construct.
    private Widevine(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Widevine() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Widevine();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Widevine_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Widevine_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.Widevine.class,
              com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder.class);
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.Widevine)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.Widevine other =
          (com.google.cloud.video.livestream.v1.Encryption.Widevine) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.Widevine prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Widevine}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.Widevine)
        com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Widevine_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Widevine_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.Widevine.class,
                com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder.class);
      }

      // Construct using com.google.cloud.video.livestream.v1.Encryption.Widevine.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Widevine_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Widevine getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.Widevine.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Widevine build() {
        com.google.cloud.video.livestream.v1.Encryption.Widevine result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Widevine buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.Widevine result =
            new com.google.cloud.video.livestream.v1.Encryption.Widevine(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.Widevine) {
          return mergeFrom((com.google.cloud.video.livestream.v1.Encryption.Widevine) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.video.livestream.v1.Encryption.Widevine other) {
        if (other == com.google.cloud.video.livestream.v1.Encryption.Widevine.getDefaultInstance())
          return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.Widevine)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.Widevine)
    private static final com.google.cloud.video.livestream.v1.Encryption.Widevine DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.Widevine();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Widevine getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Widevine> PARSER =
        new com.google.protobuf.AbstractParser<Widevine>() {
          @java.lang.Override
          public Widevine parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<Widevine> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Widevine> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Widevine getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface FairplayOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.Fairplay)
      com.google.protobuf.MessageOrBuilder {}
  /**
   *
   *
   * <pre>
   * Fairplay configuration.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Fairplay}
   */
  public static final class Fairplay extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.Fairplay)
      FairplayOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Fairplay.newBuilder() to construct.
    private Fairplay(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Fairplay() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Fairplay();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Fairplay_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Fairplay_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.Fairplay.class,
              com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder.class);
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.Fairplay)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.Fairplay other =
          (com.google.cloud.video.livestream.v1.Encryption.Fairplay) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.Fairplay prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Fairplay}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.Fairplay)
        com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Fairplay_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Fairplay_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.Fairplay.class,
                com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder.class);
      }

      // Construct using com.google.cloud.video.livestream.v1.Encryption.Fairplay.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Fairplay_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Fairplay getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.Fairplay.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Fairplay build() {
        com.google.cloud.video.livestream.v1.Encryption.Fairplay result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Fairplay buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.Fairplay result =
            new com.google.cloud.video.livestream.v1.Encryption.Fairplay(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.Fairplay) {
          return mergeFrom((com.google.cloud.video.livestream.v1.Encryption.Fairplay) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.video.livestream.v1.Encryption.Fairplay other) {
        if (other == com.google.cloud.video.livestream.v1.Encryption.Fairplay.getDefaultInstance())
          return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.Fairplay)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.Fairplay)
    private static final com.google.cloud.video.livestream.v1.Encryption.Fairplay DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.Fairplay();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Fairplay getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Fairplay> PARSER =
        new com.google.protobuf.AbstractParser<Fairplay>() {
          @java.lang.Override
          public Fairplay parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<Fairplay> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Fairplay> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Fairplay getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface PlayreadyOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.Playready)
      com.google.protobuf.MessageOrBuilder {}
  /**
   *
   *
   * <pre>
   * Playready configuration.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Playready}
   */
  public static final class Playready extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.Playready)
      PlayreadyOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Playready.newBuilder() to construct.
    private Playready(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Playready() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Playready();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Playready_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Playready_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.Playready.class,
              com.google.cloud.video.livestream.v1.Encryption.Playready.Builder.class);
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.Playready)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.Playready other =
          (com.google.cloud.video.livestream.v1.Encryption.Playready) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.Playready prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Playready}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.Playready)
        com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Playready_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Playready_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.Playready.class,
                com.google.cloud.video.livestream.v1.Encryption.Playready.Builder.class);
      }

      // Construct using com.google.cloud.video.livestream.v1.Encryption.Playready.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Playready_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Playready getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.Playready.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Playready build() {
        com.google.cloud.video.livestream.v1.Encryption.Playready result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Playready buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.Playready result =
            new com.google.cloud.video.livestream.v1.Encryption.Playready(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.Playready) {
          return mergeFrom((com.google.cloud.video.livestream.v1.Encryption.Playready) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.video.livestream.v1.Encryption.Playready other) {
        if (other == com.google.cloud.video.livestream.v1.Encryption.Playready.getDefaultInstance())
          return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.Playready)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.Playready)
    private static final com.google.cloud.video.livestream.v1.Encryption.Playready DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.Playready();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Playready getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Playready> PARSER =
        new com.google.protobuf.AbstractParser<Playready>() {
          @java.lang.Override
          public Playready parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<Playready> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Playready> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Playready getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ClearkeyOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.Clearkey)
      com.google.protobuf.MessageOrBuilder {}
  /**
   *
   *
   * <pre>
   * Clearkey configuration.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Clearkey}
   */
  public static final class Clearkey extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.Clearkey)
      ClearkeyOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Clearkey.newBuilder() to construct.
    private Clearkey(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Clearkey() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Clearkey();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Clearkey_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Clearkey_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.Clearkey.class,
              com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder.class);
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.Clearkey)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.Clearkey other =
          (com.google.cloud.video.livestream.v1.Encryption.Clearkey) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.Clearkey prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Clearkey}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.Clearkey)
        com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Clearkey_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Clearkey_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.Clearkey.class,
                com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder.class);
      }

      // Construct using com.google.cloud.video.livestream.v1.Encryption.Clearkey.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Clearkey_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Clearkey getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.Clearkey.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Clearkey build() {
        com.google.cloud.video.livestream.v1.Encryption.Clearkey result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Clearkey buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.Clearkey result =
            new com.google.cloud.video.livestream.v1.Encryption.Clearkey(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.Clearkey) {
          return mergeFrom((com.google.cloud.video.livestream.v1.Encryption.Clearkey) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.video.livestream.v1.Encryption.Clearkey other) {
        if (other == com.google.cloud.video.livestream.v1.Encryption.Clearkey.getDefaultInstance())
          return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.Clearkey)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.Clearkey)
    private static final com.google.cloud.video.livestream.v1.Encryption.Clearkey DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.Clearkey();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Clearkey getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Clearkey> PARSER =
        new com.google.protobuf.AbstractParser<Clearkey>() {
          @java.lang.Override
          public Clearkey parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<Clearkey> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Clearkey> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Clearkey getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface DrmSystemsOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.DrmSystems)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
     *
     * @return Whether the widevine field is set.
     */
    boolean hasWidevine();
    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
     *
     * @return The widevine.
     */
    com.google.cloud.video.livestream.v1.Encryption.Widevine getWidevine();
    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
     */
    com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder getWidevineOrBuilder();

    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
     *
     * @return Whether the fairplay field is set.
     */
    boolean hasFairplay();
    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
     *
     * @return The fairplay.
     */
    com.google.cloud.video.livestream.v1.Encryption.Fairplay getFairplay();
    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
     */
    com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder getFairplayOrBuilder();

    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
     *
     * @return Whether the playready field is set.
     */
    boolean hasPlayready();
    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
     *
     * @return The playready.
     */
    com.google.cloud.video.livestream.v1.Encryption.Playready getPlayready();
    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
     */
    com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder getPlayreadyOrBuilder();

    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
     *
     * @return Whether the clearkey field is set.
     */
    boolean hasClearkey();
    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
     *
     * @return The clearkey.
     */
    com.google.cloud.video.livestream.v1.Encryption.Clearkey getClearkey();
    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
     */
    com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder getClearkeyOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * Defines configuration for DRM systems in use. If a field is omitted,
   * that DRM system will be considered to be disabled.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.DrmSystems}
   */
  public static final class DrmSystems extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.DrmSystems)
      DrmSystemsOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use DrmSystems.newBuilder() to construct.
    private DrmSystems(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private DrmSystems() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new DrmSystems();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_DrmSystems_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_DrmSystems_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.DrmSystems.class,
              com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder.class);
    }

    public static final int WIDEVINE_FIELD_NUMBER = 1;
    private com.google.cloud.video.livestream.v1.Encryption.Widevine widevine_;
    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
     *
     * @return Whether the widevine field is set.
     */
    @java.lang.Override
    public boolean hasWidevine() {
      return widevine_ != null;
    }
    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
     *
     * @return The widevine.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Widevine getWidevine() {
      return widevine_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Widevine.getDefaultInstance()
          : widevine_;
    }
    /**
     *
     *
     * <pre>
     * Widevine configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder
        getWidevineOrBuilder() {
      return widevine_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Widevine.getDefaultInstance()
          : widevine_;
    }

    public static final int FAIRPLAY_FIELD_NUMBER = 2;
    private com.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay_;
    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
     *
     * @return Whether the fairplay field is set.
     */
    @java.lang.Override
    public boolean hasFairplay() {
      return fairplay_ != null;
    }
    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
     *
     * @return The fairplay.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Fairplay getFairplay() {
      return fairplay_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Fairplay.getDefaultInstance()
          : fairplay_;
    }
    /**
     *
     *
     * <pre>
     * Fairplay configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder
        getFairplayOrBuilder() {
      return fairplay_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Fairplay.getDefaultInstance()
          : fairplay_;
    }

    public static final int PLAYREADY_FIELD_NUMBER = 3;
    private com.google.cloud.video.livestream.v1.Encryption.Playready playready_;
    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
     *
     * @return Whether the playready field is set.
     */
    @java.lang.Override
    public boolean hasPlayready() {
      return playready_ != null;
    }
    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
     *
     * @return The playready.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Playready getPlayready() {
      return playready_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Playready.getDefaultInstance()
          : playready_;
    }
    /**
     *
     *
     * <pre>
     * Playready configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder
        getPlayreadyOrBuilder() {
      return playready_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Playready.getDefaultInstance()
          : playready_;
    }

    public static final int CLEARKEY_FIELD_NUMBER = 4;
    private com.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey_;
    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
     *
     * @return Whether the clearkey field is set.
     */
    @java.lang.Override
    public boolean hasClearkey() {
      return clearkey_ != null;
    }
    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
     *
     * @return The clearkey.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Clearkey getClearkey() {
      return clearkey_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Clearkey.getDefaultInstance()
          : clearkey_;
    }
    /**
     *
     *
     * <pre>
     * Clearkey configuration.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder
        getClearkeyOrBuilder() {
      return clearkey_ == null
          ? com.google.cloud.video.livestream.v1.Encryption.Clearkey.getDefaultInstance()
          : clearkey_;
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (widevine_ != null) {
        output.writeMessage(1, getWidevine());
      }
      if (fairplay_ != null) {
        output.writeMessage(2, getFairplay());
      }
      if (playready_ != null) {
        output.writeMessage(3, getPlayready());
      }
      if (clearkey_ != null) {
        output.writeMessage(4, getClearkey());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (widevine_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getWidevine());
      }
      if (fairplay_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getFairplay());
      }
      if (playready_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getPlayready());
      }
      if (clearkey_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getClearkey());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.DrmSystems)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.DrmSystems other =
          (com.google.cloud.video.livestream.v1.Encryption.DrmSystems) obj;

      if (hasWidevine() != other.hasWidevine()) return false;
      if (hasWidevine()) {
        if (!getWidevine().equals(other.getWidevine())) return false;
      }
      if (hasFairplay() != other.hasFairplay()) return false;
      if (hasFairplay()) {
        if (!getFairplay().equals(other.getFairplay())) return false;
      }
      if (hasPlayready() != other.hasPlayready()) return false;
      if (hasPlayready()) {
        if (!getPlayready().equals(other.getPlayready())) return false;
      }
      if (hasClearkey() != other.hasClearkey()) return false;
      if (hasClearkey()) {
        if (!getClearkey().equals(other.getClearkey())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasWidevine()) {
        hash = (37 * hash) + WIDEVINE_FIELD_NUMBER;
        hash = (53 * hash) + getWidevine().hashCode();
      }
      if (hasFairplay()) {
        hash = (37 * hash) + FAIRPLAY_FIELD_NUMBER;
        hash = (53 * hash) + getFairplay().hashCode();
      }
      if (hasPlayready()) {
        hash = (37 * hash) + PLAYREADY_FIELD_NUMBER;
        hash = (53 * hash) + getPlayready().hashCode();
      }
      if (hasClearkey()) {
        hash = (37 * hash) + CLEARKEY_FIELD_NUMBER;
        hash = (53 * hash) + getClearkey().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.DrmSystems prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Defines configuration for DRM systems in use. If a field is omitted,
     * that DRM system will be considered to be disabled.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.DrmSystems}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.DrmSystems)
        com.google.cloud.video.livestream.v1.Encryption.DrmSystemsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_DrmSystems_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_DrmSystems_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.DrmSystems.class,
                com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder.class);
      }

      // Construct using com.google.cloud.video.livestream.v1.Encryption.DrmSystems.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        widevine_ = null;
        if (widevineBuilder_ != null) {
          widevineBuilder_.dispose();
          widevineBuilder_ = null;
        }
        fairplay_ = null;
        if (fairplayBuilder_ != null) {
          fairplayBuilder_.dispose();
          fairplayBuilder_ = null;
        }
        playready_ = null;
        if (playreadyBuilder_ != null) {
          playreadyBuilder_.dispose();
          playreadyBuilder_ = null;
        }
        clearkey_ = null;
        if (clearkeyBuilder_ != null) {
          clearkeyBuilder_.dispose();
          clearkeyBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_DrmSystems_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.DrmSystems
          getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.DrmSystems.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.DrmSystems build() {
        com.google.cloud.video.livestream.v1.Encryption.DrmSystems result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.DrmSystems buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.DrmSystems result =
            new com.google.cloud.video.livestream.v1.Encryption.DrmSystems(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.video.livestream.v1.Encryption.DrmSystems result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.widevine_ = widevineBuilder_ == null ? widevine_ : widevineBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fairplay_ = fairplayBuilder_ == null ? fairplay_ : fairplayBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.playready_ = playreadyBuilder_ == null ? playready_ : playreadyBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.clearkey_ = clearkeyBuilder_ == null ? clearkey_ : clearkeyBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.DrmSystems) {
          return mergeFrom((com.google.cloud.video.livestream.v1.Encryption.DrmSystems) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.video.livestream.v1.Encryption.DrmSystems other) {
        if (other
            == com.google.cloud.video.livestream.v1.Encryption.DrmSystems.getDefaultInstance())
          return this;
        if (other.hasWidevine()) {
          mergeWidevine(other.getWidevine());
        }
        if (other.hasFairplay()) {
          mergeFairplay(other.getFairplay());
        }
        if (other.hasPlayready()) {
          mergePlayready(other.getPlayready());
        }
        if (other.hasClearkey()) {
          mergeClearkey(other.getClearkey());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  input.readMessage(getWidevineFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  input.readMessage(getFairplayFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  input.readMessage(getPlayreadyFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
              case 34:
                {
                  input.readMessage(getClearkeyFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private com.google.cloud.video.livestream.v1.Encryption.Widevine widevine_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Widevine,
              com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder,
              com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder>
          widevineBuilder_;
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       *
       * @return Whether the widevine field is set.
       */
      public boolean hasWidevine() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       *
       * @return The widevine.
       */
      public com.google.cloud.video.livestream.v1.Encryption.Widevine getWidevine() {
        if (widevineBuilder_ == null) {
          return widevine_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Widevine.getDefaultInstance()
              : widevine_;
        } else {
          return widevineBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      public Builder setWidevine(com.google.cloud.video.livestream.v1.Encryption.Widevine value) {
        if (widevineBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          widevine_ = value;
        } else {
          widevineBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      public Builder setWidevine(
          com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder builderForValue) {
        if (widevineBuilder_ == null) {
          widevine_ = builderForValue.build();
        } else {
          widevineBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      public Builder mergeWidevine(com.google.cloud.video.livestream.v1.Encryption.Widevine value) {
        if (widevineBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)
              && widevine_ != null
              && widevine_
                  != com.google.cloud.video.livestream.v1.Encryption.Widevine
                      .getDefaultInstance()) {
            getWidevineBuilder().mergeFrom(value);
          } else {
            widevine_ = value;
          }
        } else {
          widevineBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      public Builder clearWidevine() {
        bitField0_ = (bitField0_ & ~0x00000001);
        widevine_ = null;
        if (widevineBuilder_ != null) {
          widevineBuilder_.dispose();
          widevineBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder getWidevineBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getWidevineFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder
          getWidevineOrBuilder() {
        if (widevineBuilder_ != null) {
          return widevineBuilder_.getMessageOrBuilder();
        } else {
          return widevine_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Widevine.getDefaultInstance()
              : widevine_;
        }
      }
      /**
       *
       *
       * <pre>
       * Widevine configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Widevine widevine = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Widevine,
              com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder,
              com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder>
          getWidevineFieldBuilder() {
        if (widevineBuilder_ == null) {
          widevineBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.video.livestream.v1.Encryption.Widevine,
                  com.google.cloud.video.livestream.v1.Encryption.Widevine.Builder,
                  com.google.cloud.video.livestream.v1.Encryption.WidevineOrBuilder>(
                  getWidevine(), getParentForChildren(), isClean());
          widevine_ = null;
        }
        return widevineBuilder_;
      }

      private com.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Fairplay,
              com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder,
              com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder>
          fairplayBuilder_;
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       *
       * @return Whether the fairplay field is set.
       */
      public boolean hasFairplay() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       *
       * @return The fairplay.
       */
      public com.google.cloud.video.livestream.v1.Encryption.Fairplay getFairplay() {
        if (fairplayBuilder_ == null) {
          return fairplay_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Fairplay.getDefaultInstance()
              : fairplay_;
        } else {
          return fairplayBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      public Builder setFairplay(com.google.cloud.video.livestream.v1.Encryption.Fairplay value) {
        if (fairplayBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fairplay_ = value;
        } else {
          fairplayBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      public Builder setFairplay(
          com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder builderForValue) {
        if (fairplayBuilder_ == null) {
          fairplay_ = builderForValue.build();
        } else {
          fairplayBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      public Builder mergeFairplay(com.google.cloud.video.livestream.v1.Encryption.Fairplay value) {
        if (fairplayBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)
              && fairplay_ != null
              && fairplay_
                  != com.google.cloud.video.livestream.v1.Encryption.Fairplay
                      .getDefaultInstance()) {
            getFairplayBuilder().mergeFrom(value);
          } else {
            fairplay_ = value;
          }
        } else {
          fairplayBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      public Builder clearFairplay() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fairplay_ = null;
        if (fairplayBuilder_ != null) {
          fairplayBuilder_.dispose();
          fairplayBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder getFairplayBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getFairplayFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder
          getFairplayOrBuilder() {
        if (fairplayBuilder_ != null) {
          return fairplayBuilder_.getMessageOrBuilder();
        } else {
          return fairplay_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Fairplay.getDefaultInstance()
              : fairplay_;
        }
      }
      /**
       *
       *
       * <pre>
       * Fairplay configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Fairplay fairplay = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Fairplay,
              com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder,
              com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder>
          getFairplayFieldBuilder() {
        if (fairplayBuilder_ == null) {
          fairplayBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.video.livestream.v1.Encryption.Fairplay,
                  com.google.cloud.video.livestream.v1.Encryption.Fairplay.Builder,
                  com.google.cloud.video.livestream.v1.Encryption.FairplayOrBuilder>(
                  getFairplay(), getParentForChildren(), isClean());
          fairplay_ = null;
        }
        return fairplayBuilder_;
      }

      private com.google.cloud.video.livestream.v1.Encryption.Playready playready_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Playready,
              com.google.cloud.video.livestream.v1.Encryption.Playready.Builder,
              com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder>
          playreadyBuilder_;
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       *
       * @return Whether the playready field is set.
       */
      public boolean hasPlayready() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       *
       * @return The playready.
       */
      public com.google.cloud.video.livestream.v1.Encryption.Playready getPlayready() {
        if (playreadyBuilder_ == null) {
          return playready_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Playready.getDefaultInstance()
              : playready_;
        } else {
          return playreadyBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      public Builder setPlayready(com.google.cloud.video.livestream.v1.Encryption.Playready value) {
        if (playreadyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          playready_ = value;
        } else {
          playreadyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      public Builder setPlayready(
          com.google.cloud.video.livestream.v1.Encryption.Playready.Builder builderForValue) {
        if (playreadyBuilder_ == null) {
          playready_ = builderForValue.build();
        } else {
          playreadyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      public Builder mergePlayready(
          com.google.cloud.video.livestream.v1.Encryption.Playready value) {
        if (playreadyBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)
              && playready_ != null
              && playready_
                  != com.google.cloud.video.livestream.v1.Encryption.Playready
                      .getDefaultInstance()) {
            getPlayreadyBuilder().mergeFrom(value);
          } else {
            playready_ = value;
          }
        } else {
          playreadyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      public Builder clearPlayready() {
        bitField0_ = (bitField0_ & ~0x00000004);
        playready_ = null;
        if (playreadyBuilder_ != null) {
          playreadyBuilder_.dispose();
          playreadyBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.Playready.Builder
          getPlayreadyBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getPlayreadyFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder
          getPlayreadyOrBuilder() {
        if (playreadyBuilder_ != null) {
          return playreadyBuilder_.getMessageOrBuilder();
        } else {
          return playready_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Playready.getDefaultInstance()
              : playready_;
        }
      }
      /**
       *
       *
       * <pre>
       * Playready configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Playready playready = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Playready,
              com.google.cloud.video.livestream.v1.Encryption.Playready.Builder,
              com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder>
          getPlayreadyFieldBuilder() {
        if (playreadyBuilder_ == null) {
          playreadyBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.video.livestream.v1.Encryption.Playready,
                  com.google.cloud.video.livestream.v1.Encryption.Playready.Builder,
                  com.google.cloud.video.livestream.v1.Encryption.PlayreadyOrBuilder>(
                  getPlayready(), getParentForChildren(), isClean());
          playready_ = null;
        }
        return playreadyBuilder_;
      }

      private com.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Clearkey,
              com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder,
              com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder>
          clearkeyBuilder_;
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       *
       * @return Whether the clearkey field is set.
       */
      public boolean hasClearkey() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       *
       * @return The clearkey.
       */
      public com.google.cloud.video.livestream.v1.Encryption.Clearkey getClearkey() {
        if (clearkeyBuilder_ == null) {
          return clearkey_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Clearkey.getDefaultInstance()
              : clearkey_;
        } else {
          return clearkeyBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      public Builder setClearkey(com.google.cloud.video.livestream.v1.Encryption.Clearkey value) {
        if (clearkeyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clearkey_ = value;
        } else {
          clearkeyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      public Builder setClearkey(
          com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder builderForValue) {
        if (clearkeyBuilder_ == null) {
          clearkey_ = builderForValue.build();
        } else {
          clearkeyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      public Builder mergeClearkey(com.google.cloud.video.livestream.v1.Encryption.Clearkey value) {
        if (clearkeyBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)
              && clearkey_ != null
              && clearkey_
                  != com.google.cloud.video.livestream.v1.Encryption.Clearkey
                      .getDefaultInstance()) {
            getClearkeyBuilder().mergeFrom(value);
          } else {
            clearkey_ = value;
          }
        } else {
          clearkeyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      public Builder clearClearkey() {
        bitField0_ = (bitField0_ & ~0x00000008);
        clearkey_ = null;
        if (clearkeyBuilder_ != null) {
          clearkeyBuilder_.dispose();
          clearkeyBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder getClearkeyBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getClearkeyFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      public com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder
          getClearkeyOrBuilder() {
        if (clearkeyBuilder_ != null) {
          return clearkeyBuilder_.getMessageOrBuilder();
        } else {
          return clearkey_ == null
              ? com.google.cloud.video.livestream.v1.Encryption.Clearkey.getDefaultInstance()
              : clearkey_;
        }
      }
      /**
       *
       *
       * <pre>
       * Clearkey configuration.
       * </pre>
       *
       * <code>.google.cloud.video.livestream.v1.Encryption.Clearkey clearkey = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.video.livestream.v1.Encryption.Clearkey,
              com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder,
              com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder>
          getClearkeyFieldBuilder() {
        if (clearkeyBuilder_ == null) {
          clearkeyBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.video.livestream.v1.Encryption.Clearkey,
                  com.google.cloud.video.livestream.v1.Encryption.Clearkey.Builder,
                  com.google.cloud.video.livestream.v1.Encryption.ClearkeyOrBuilder>(
                  getClearkey(), getParentForChildren(), isClean());
          clearkey_ = null;
        }
        return clearkeyBuilder_;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.DrmSystems)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.DrmSystems)
    private static final com.google.cloud.video.livestream.v1.Encryption.DrmSystems
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.DrmSystems();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.DrmSystems getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DrmSystems> PARSER =
        new com.google.protobuf.AbstractParser<DrmSystems>() {
          @java.lang.Override
          public DrmSystems parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<DrmSystems> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DrmSystems> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.DrmSystems getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface Aes128EncryptionOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.Aes128Encryption)
      com.google.protobuf.MessageOrBuilder {}
  /**
   *
   *
   * <pre>
   * Configuration for HLS AES-128 encryption.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Aes128Encryption}
   */
  public static final class Aes128Encryption extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.Aes128Encryption)
      Aes128EncryptionOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Aes128Encryption.newBuilder() to construct.
    private Aes128Encryption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Aes128Encryption() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Aes128Encryption();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Aes128Encryption_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_Aes128Encryption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.class,
              com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder.class);
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption other =
          (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.Aes128Encryption}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.Aes128Encryption)
        com.google.cloud.video.livestream.v1.Encryption.Aes128EncryptionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Aes128Encryption_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Aes128Encryption_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.class,
                com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder.class);
      }

      // Construct using
      // com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_Aes128Encryption_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
          getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption build() {
        com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption result =
            new com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) {
          return mergeFrom(
              (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption other) {
        if (other
            == com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
                .getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.Aes128Encryption)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.Aes128Encryption)
    private static final com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Aes128Encryption> PARSER =
        new com.google.protobuf.AbstractParser<Aes128Encryption>() {
          @java.lang.Override
          public Aes128Encryption parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<Aes128Encryption> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Aes128Encryption> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface SampleAesEncryptionOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
      com.google.protobuf.MessageOrBuilder {}
  /**
   *
   *
   * <pre>
   * Configuration for HLS SAMPLE-AES encryption.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.SampleAesEncryption}
   */
  public static final class SampleAesEncryption extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
      SampleAesEncryptionOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SampleAesEncryption.newBuilder() to construct.
    private SampleAesEncryption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private SampleAesEncryption() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new SampleAesEncryption();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_SampleAesEncryption_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_SampleAesEncryption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.class,
              com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder.class);
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption other =
          (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.SampleAesEncryption}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryptionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_SampleAesEncryption_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_SampleAesEncryption_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.class,
                com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder.class);
      }

      // Construct using
      // com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_SampleAesEncryption_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
          getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption build() {
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption result =
            new com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption) {
          return mergeFrom(
              (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption other) {
        if (other
            == com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
                .getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
    private static final com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SampleAesEncryption> PARSER =
        new com.google.protobuf.AbstractParser<SampleAesEncryption>() {
          @java.lang.Override
          public SampleAesEncryption parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<SampleAesEncryption> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SampleAesEncryption> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface MpegCommonEncryptionOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. Specify the encryption scheme, supported schemes:
     * - `cenc` - AES-CTR subsample
     * - `cbcs`- AES-CBC subsample pattern
     * </pre>
     *
     * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The scheme.
     */
    java.lang.String getScheme();
    /**
     *
     *
     * <pre>
     * Required. Specify the encryption scheme, supported schemes:
     * - `cenc` - AES-CTR subsample
     * - `cbcs`- AES-CBC subsample pattern
     * </pre>
     *
     * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for scheme.
     */
    com.google.protobuf.ByteString getSchemeBytes();
  }
  /**
   *
   *
   * <pre>
   * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption}
   */
  public static final class MpegCommonEncryption extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
      MpegCommonEncryptionOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use MpegCommonEncryption.newBuilder() to construct.
    private MpegCommonEncryption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private MpegCommonEncryption() {
      scheme_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new MpegCommonEncryption();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_MpegCommonEncryption_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_MpegCommonEncryption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.class,
              com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder.class);
    }

    public static final int SCHEME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object scheme_ = "";
    /**
     *
     *
     * <pre>
     * Required. Specify the encryption scheme, supported schemes:
     * - `cenc` - AES-CTR subsample
     * - `cbcs`- AES-CBC subsample pattern
     * </pre>
     *
     * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The scheme.
     */
    @java.lang.Override
    public java.lang.String getScheme() {
      java.lang.Object ref = scheme_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        scheme_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Specify the encryption scheme, supported schemes:
     * - `cenc` - AES-CTR subsample
     * - `cbcs`- AES-CBC subsample pattern
     * </pre>
     *
     * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for scheme.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSchemeBytes() {
      java.lang.Object ref = scheme_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        scheme_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(scheme_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, scheme_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(scheme_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, scheme_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)) {
        return super.equals(obj);
      }
      com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption other =
          (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption) obj;

      if (!getScheme().equals(other.getScheme())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SCHEME_FIELD_NUMBER;
      hash = (53 * hash) + getScheme().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * Protobuf type {@code google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryptionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_MpegCommonEncryption_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_MpegCommonEncryption_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.class,
                com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder.class);
      }

      // Construct using
      // com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.newBuilder()
      private Builder() {}

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        scheme_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.video.livestream.v1.ResourcesProto
            .internal_static_google_cloud_video_livestream_v1_Encryption_MpegCommonEncryption_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
          getDefaultInstanceForType() {
        return com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption build() {
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption buildPartial() {
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption result =
            new com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.scheme_ = scheme_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption) {
          return mergeFrom(
              (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption other) {
        if (other
            == com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
                .getDefaultInstance()) return this;
        if (!other.getScheme().isEmpty()) {
          scheme_ = other.scheme_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  scheme_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object scheme_ = "";
      /**
       *
       *
       * <pre>
       * Required. Specify the encryption scheme, supported schemes:
       * - `cenc` - AES-CTR subsample
       * - `cbcs`- AES-CBC subsample pattern
       * </pre>
       *
       * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The scheme.
       */
      public java.lang.String getScheme() {
        java.lang.Object ref = scheme_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          scheme_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Specify the encryption scheme, supported schemes:
       * - `cenc` - AES-CTR subsample
       * - `cbcs`- AES-CBC subsample pattern
       * </pre>
       *
       * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for scheme.
       */
      public com.google.protobuf.ByteString getSchemeBytes() {
        java.lang.Object ref = scheme_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          scheme_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Specify the encryption scheme, supported schemes:
       * - `cenc` - AES-CTR subsample
       * - `cbcs`- AES-CBC subsample pattern
       * </pre>
       *
       * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The scheme to set.
       * @return This builder for chaining.
       */
      public Builder setScheme(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        scheme_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Specify the encryption scheme, supported schemes:
       * - `cenc` - AES-CTR subsample
       * - `cbcs`- AES-CBC subsample pattern
       * </pre>
       *
       * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearScheme() {
        scheme_ = getDefaultInstance().getScheme();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Specify the encryption scheme, supported schemes:
       * - `cenc` - AES-CTR subsample
       * - `cbcs`- AES-CBC subsample pattern
       * </pre>
       *
       * <code>string scheme = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for scheme to set.
       * @return This builder for chaining.
       */
      public Builder setSchemeBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        scheme_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }

      // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
    private static final com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption();
    }

    public static com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MpegCommonEncryption> PARSER =
        new com.google.protobuf.AbstractParser<MpegCommonEncryption>() {
          @java.lang.Override
          public MpegCommonEncryption parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

    public static com.google.protobuf.Parser<MpegCommonEncryption> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MpegCommonEncryption> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  private int secretSourceCase_ = 0;
  private java.lang.Object secretSource_;

  public enum SecretSourceCase
      implements
          com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    SECRET_MANAGER_KEY_SOURCE(7),
    SECRETSOURCE_NOT_SET(0);
    private final int value;

    private SecretSourceCase(int value) {
      this.value = value;
    }
    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SecretSourceCase valueOf(int value) {
      return forNumber(value);
    }

    public static SecretSourceCase forNumber(int value) {
      switch (value) {
        case 7:
          return SECRET_MANAGER_KEY_SOURCE;
        case 0:
          return SECRETSOURCE_NOT_SET;
        default:
          return null;
      }
    }

    public int getNumber() {
      return this.value;
    }
  };

  public SecretSourceCase getSecretSourceCase() {
    return SecretSourceCase.forNumber(secretSourceCase_);
  }

  private int encryptionModeCase_ = 0;
  private java.lang.Object encryptionMode_;

  public enum EncryptionModeCase
      implements
          com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    AES128(4),
    SAMPLE_AES(5),
    MPEG_CENC(6),
    ENCRYPTIONMODE_NOT_SET(0);
    private final int value;

    private EncryptionModeCase(int value) {
      this.value = value;
    }
    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static EncryptionModeCase valueOf(int value) {
      return forNumber(value);
    }

    public static EncryptionModeCase forNumber(int value) {
      switch (value) {
        case 4:
          return AES128;
        case 5:
          return SAMPLE_AES;
        case 6:
          return MPEG_CENC;
        case 0:
          return ENCRYPTIONMODE_NOT_SET;
        default:
          return null;
      }
    }

    public int getNumber() {
      return this.value;
    }
  };

  public EncryptionModeCase getEncryptionModeCase() {
    return EncryptionModeCase.forNumber(encryptionModeCase_);
  }

  public static final int ID_FIELD_NUMBER = 1;

  @SuppressWarnings("serial")
  private volatile java.lang.Object id_ = "";
  /**
   *
   *
   * <pre>
   * Required. Identifier for this set of encryption options.
   * </pre>
   *
   * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The id.
   */
  @java.lang.Override
  public java.lang.String getId() {
    java.lang.Object ref = id_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      id_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Required. Identifier for this set of encryption options.
   * </pre>
   *
   * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The bytes for id.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getIdBytes() {
    java.lang.Object ref = id_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      id_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int SECRET_MANAGER_KEY_SOURCE_FIELD_NUMBER = 7;
  /**
   *
   *
   * <pre>
   * For keys stored in Google Secret Manager.
   * </pre>
   *
   * <code>
   * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
   * </code>
   *
   * @return Whether the secretManagerKeySource field is set.
   */
  @java.lang.Override
  public boolean hasSecretManagerKeySource() {
    return secretSourceCase_ == 7;
  }
  /**
   *
   *
   * <pre>
   * For keys stored in Google Secret Manager.
   * </pre>
   *
   * <code>
   * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
   * </code>
   *
   * @return The secretManagerKeySource.
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
      getSecretManagerKeySource() {
    if (secretSourceCase_ == 7) {
      return (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) secretSource_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.getDefaultInstance();
  }
  /**
   *
   *
   * <pre>
   * For keys stored in Google Secret Manager.
   * </pre>
   *
   * <code>
   * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
   * </code>
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSourceOrBuilder
      getSecretManagerKeySourceOrBuilder() {
    if (secretSourceCase_ == 7) {
      return (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) secretSource_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.getDefaultInstance();
  }

  public static final int DRM_SYSTEMS_FIELD_NUMBER = 3;
  private com.google.cloud.video.livestream.v1.Encryption.DrmSystems drmSystems_;
  /**
   *
   *
   * <pre>
   * Required. Configuration for DRM systems.
   * </pre>
   *
   * <code>
   * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return Whether the drmSystems field is set.
   */
  @java.lang.Override
  public boolean hasDrmSystems() {
    return drmSystems_ != null;
  }
  /**
   *
   *
   * <pre>
   * Required. Configuration for DRM systems.
   * </pre>
   *
   * <code>
   * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return The drmSystems.
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.DrmSystems getDrmSystems() {
    return drmSystems_ == null
        ? com.google.cloud.video.livestream.v1.Encryption.DrmSystems.getDefaultInstance()
        : drmSystems_;
  }
  /**
   *
   *
   * <pre>
   * Required. Configuration for DRM systems.
   * </pre>
   *
   * <code>
   * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.DrmSystemsOrBuilder
      getDrmSystemsOrBuilder() {
    return drmSystems_ == null
        ? com.google.cloud.video.livestream.v1.Encryption.DrmSystems.getDefaultInstance()
        : drmSystems_;
  }

  public static final int AES128_FIELD_NUMBER = 4;
  /**
   *
   *
   * <pre>
   * Configuration for HLS AES-128 encryption.
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
   *
   * @return Whether the aes128 field is set.
   */
  @java.lang.Override
  public boolean hasAes128() {
    return encryptionModeCase_ == 4;
  }
  /**
   *
   *
   * <pre>
   * Configuration for HLS AES-128 encryption.
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
   *
   * @return The aes128.
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption getAes128() {
    if (encryptionModeCase_ == 4) {
      return (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.getDefaultInstance();
  }
  /**
   *
   *
   * <pre>
   * Configuration for HLS AES-128 encryption.
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.Aes128EncryptionOrBuilder
      getAes128OrBuilder() {
    if (encryptionModeCase_ == 4) {
      return (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.getDefaultInstance();
  }

  public static final int SAMPLE_AES_FIELD_NUMBER = 5;
  /**
   *
   *
   * <pre>
   * Configuration for HLS SAMPLE-AES encryption.
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
   *
   * @return Whether the sampleAes field is set.
   */
  @java.lang.Override
  public boolean hasSampleAes() {
    return encryptionModeCase_ == 5;
  }
  /**
   *
   *
   * <pre>
   * Configuration for HLS SAMPLE-AES encryption.
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
   *
   * @return The sampleAes.
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption getSampleAes() {
    if (encryptionModeCase_ == 5) {
      return (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption) encryptionMode_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.getDefaultInstance();
  }
  /**
   *
   *
   * <pre>
   * Configuration for HLS SAMPLE-AES encryption.
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryptionOrBuilder
      getSampleAesOrBuilder() {
    if (encryptionModeCase_ == 5) {
      return (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption) encryptionMode_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.getDefaultInstance();
  }

  public static final int MPEG_CENC_FIELD_NUMBER = 6;
  /**
   *
   *
   * <pre>
   * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
   *
   * @return Whether the mpegCenc field is set.
   */
  @java.lang.Override
  public boolean hasMpegCenc() {
    return encryptionModeCase_ == 6;
  }
  /**
   *
   *
   * <pre>
   * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
   *
   * @return The mpegCenc.
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption getMpegCenc() {
    if (encryptionModeCase_ == 6) {
      return (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption) encryptionMode_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        .getDefaultInstance();
  }
  /**
   *
   *
   * <pre>
   * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
   * </pre>
   *
   * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
   */
  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryptionOrBuilder
      getMpegCencOrBuilder() {
    if (encryptionModeCase_ == 6) {
      return (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption) encryptionMode_;
    }
    return com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
        .getDefaultInstance();
  }

  private byte memoizedIsInitialized = -1;

  @java.lang.Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
    }
    if (drmSystems_ != null) {
      output.writeMessage(3, getDrmSystems());
    }
    if (encryptionModeCase_ == 4) {
      output.writeMessage(
          4, (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_);
    }
    if (encryptionModeCase_ == 5) {
      output.writeMessage(
          5, (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption) encryptionMode_);
    }
    if (encryptionModeCase_ == 6) {
      output.writeMessage(
          6,
          (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption) encryptionMode_);
    }
    if (secretSourceCase_ == 7) {
      output.writeMessage(
          7, (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) secretSource_);
    }
    getUnknownFields().writeTo(output);
  }

  @java.lang.Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
    }
    if (drmSystems_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDrmSystems());
    }
    if (encryptionModeCase_ == 4) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              4,
              (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_);
    }
    if (encryptionModeCase_ == 5) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              5,
              (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
                  encryptionMode_);
    }
    if (encryptionModeCase_ == 6) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              6,
              (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
                  encryptionMode_);
    }
    if (secretSourceCase_ == 7) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              7,
              (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) secretSource_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.video.livestream.v1.Encryption)) {
      return super.equals(obj);
    }
    com.google.cloud.video.livestream.v1.Encryption other =
        (com.google.cloud.video.livestream.v1.Encryption) obj;

    if (!getId().equals(other.getId())) return false;
    if (hasDrmSystems() != other.hasDrmSystems()) return false;
    if (hasDrmSystems()) {
      if (!getDrmSystems().equals(other.getDrmSystems())) return false;
    }
    if (!getSecretSourceCase().equals(other.getSecretSourceCase())) return false;
    switch (secretSourceCase_) {
      case 7:
        if (!getSecretManagerKeySource().equals(other.getSecretManagerKeySource())) return false;
        break;
      case 0:
      default:
    }
    if (!getEncryptionModeCase().equals(other.getEncryptionModeCase())) return false;
    switch (encryptionModeCase_) {
      case 4:
        if (!getAes128().equals(other.getAes128())) return false;
        break;
      case 5:
        if (!getSampleAes().equals(other.getSampleAes())) return false;
        break;
      case 6:
        if (!getMpegCenc().equals(other.getMpegCenc())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + ID_FIELD_NUMBER;
    hash = (53 * hash) + getId().hashCode();
    if (hasDrmSystems()) {
      hash = (37 * hash) + DRM_SYSTEMS_FIELD_NUMBER;
      hash = (53 * hash) + getDrmSystems().hashCode();
    }
    switch (secretSourceCase_) {
      case 7:
        hash = (37 * hash) + SECRET_MANAGER_KEY_SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSecretManagerKeySource().hashCode();
        break;
      case 0:
      default:
    }
    switch (encryptionModeCase_) {
      case 4:
        hash = (37 * hash) + AES128_FIELD_NUMBER;
        hash = (53 * hash) + getAes128().hashCode();
        break;
      case 5:
        hash = (37 * hash) + SAMPLE_AES_FIELD_NUMBER;
        hash = (53 * hash) + getSampleAes().hashCode();
        break;
      case 6:
        hash = (37 * hash) + MPEG_CENC_FIELD_NUMBER;
        hash = (53 * hash) + getMpegCenc().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseDelimitedFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.video.livestream.v1.Encryption parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() {
    return newBuilder();
  }

  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }

  public static Builder newBuilder(com.google.cloud.video.livestream.v1.Encryption prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   *
   *
   * <pre>
   * Encryption settings.
   * </pre>
   *
   * Protobuf type {@code google.cloud.video.livestream.v1.Encryption}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.cloud.video.livestream.v1.Encryption)
      com.google.cloud.video.livestream.v1.EncryptionOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.video.livestream.v1.Encryption.class,
              com.google.cloud.video.livestream.v1.Encryption.Builder.class);
    }

    // Construct using com.google.cloud.video.livestream.v1.Encryption.newBuilder()
    private Builder() {}

    private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
    }

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      id_ = "";
      if (secretManagerKeySourceBuilder_ != null) {
        secretManagerKeySourceBuilder_.clear();
      }
      drmSystems_ = null;
      if (drmSystemsBuilder_ != null) {
        drmSystemsBuilder_.dispose();
        drmSystemsBuilder_ = null;
      }
      if (aes128Builder_ != null) {
        aes128Builder_.clear();
      }
      if (sampleAesBuilder_ != null) {
        sampleAesBuilder_.clear();
      }
      if (mpegCencBuilder_ != null) {
        mpegCencBuilder_.clear();
      }
      secretSourceCase_ = 0;
      secretSource_ = null;
      encryptionModeCase_ = 0;
      encryptionMode_ = null;
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.cloud.video.livestream.v1.ResourcesProto
          .internal_static_google_cloud_video_livestream_v1_Encryption_descriptor;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption getDefaultInstanceForType() {
      return com.google.cloud.video.livestream.v1.Encryption.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption build() {
      com.google.cloud.video.livestream.v1.Encryption result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption buildPartial() {
      com.google.cloud.video.livestream.v1.Encryption result =
          new com.google.cloud.video.livestream.v1.Encryption(this);
      if (bitField0_ != 0) {
        buildPartial0(result);
      }
      buildPartialOneofs(result);
      onBuilt();
      return result;
    }

    private void buildPartial0(com.google.cloud.video.livestream.v1.Encryption result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.id_ = id_;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.drmSystems_ = drmSystemsBuilder_ == null ? drmSystems_ : drmSystemsBuilder_.build();
      }
    }

    private void buildPartialOneofs(com.google.cloud.video.livestream.v1.Encryption result) {
      result.secretSourceCase_ = secretSourceCase_;
      result.secretSource_ = this.secretSource_;
      if (secretSourceCase_ == 7 && secretManagerKeySourceBuilder_ != null) {
        result.secretSource_ = secretManagerKeySourceBuilder_.build();
      }
      result.encryptionModeCase_ = encryptionModeCase_;
      result.encryptionMode_ = this.encryptionMode_;
      if (encryptionModeCase_ == 4 && aes128Builder_ != null) {
        result.encryptionMode_ = aes128Builder_.build();
      }
      if (encryptionModeCase_ == 5 && sampleAesBuilder_ != null) {
        result.encryptionMode_ = sampleAesBuilder_.build();
      }
      if (encryptionModeCase_ == 6 && mpegCencBuilder_ != null) {
        result.encryptionMode_ = mpegCencBuilder_.build();
      }
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }

    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return super.setField(field, value);
    }

    @java.lang.Override
    public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }

    @java.lang.Override
    public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }

    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }

    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }

    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.cloud.video.livestream.v1.Encryption) {
        return mergeFrom((com.google.cloud.video.livestream.v1.Encryption) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.cloud.video.livestream.v1.Encryption other) {
      if (other == com.google.cloud.video.livestream.v1.Encryption.getDefaultInstance())
        return this;
      if (!other.getId().isEmpty()) {
        id_ = other.id_;
        bitField0_ |= 0x00000001;
        onChanged();
      }
      if (other.hasDrmSystems()) {
        mergeDrmSystems(other.getDrmSystems());
      }
      switch (other.getSecretSourceCase()) {
        case SECRET_MANAGER_KEY_SOURCE:
          {
            mergeSecretManagerKeySource(other.getSecretManagerKeySource());
            break;
          }
        case SECRETSOURCE_NOT_SET:
          {
            break;
          }
      }
      switch (other.getEncryptionModeCase()) {
        case AES128:
          {
            mergeAes128(other.getAes128());
            break;
          }
        case SAMPLE_AES:
          {
            mergeSampleAes(other.getSampleAes());
            break;
          }
        case MPEG_CENC:
          {
            mergeMpegCenc(other.getMpegCenc());
            break;
          }
        case ENCRYPTIONMODE_NOT_SET:
          {
            break;
          }
      }
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }

    @java.lang.Override
    public final boolean isInitialized() {
      return true;
    }

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                id_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
            case 26:
              {
                input.readMessage(getDrmSystemsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
            case 34:
              {
                input.readMessage(getAes128FieldBuilder().getBuilder(), extensionRegistry);
                encryptionModeCase_ = 4;
                break;
              } // case 34
            case 42:
              {
                input.readMessage(getSampleAesFieldBuilder().getBuilder(), extensionRegistry);
                encryptionModeCase_ = 5;
                break;
              } // case 42
            case 50:
              {
                input.readMessage(getMpegCencFieldBuilder().getBuilder(), extensionRegistry);
                encryptionModeCase_ = 6;
                break;
              } // case 50
            case 58:
              {
                input.readMessage(
                    getSecretManagerKeySourceFieldBuilder().getBuilder(), extensionRegistry);
                secretSourceCase_ = 7;
                break;
              } // case 58
            default:
              {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }

    private int secretSourceCase_ = 0;
    private java.lang.Object secretSource_;

    public SecretSourceCase getSecretSourceCase() {
      return SecretSourceCase.forNumber(secretSourceCase_);
    }

    public Builder clearSecretSource() {
      secretSourceCase_ = 0;
      secretSource_ = null;
      onChanged();
      return this;
    }

    private int encryptionModeCase_ = 0;
    private java.lang.Object encryptionMode_;

    public EncryptionModeCase getEncryptionModeCase() {
      return EncryptionModeCase.forNumber(encryptionModeCase_);
    }

    public Builder clearEncryptionMode() {
      encryptionModeCase_ = 0;
      encryptionMode_ = null;
      onChanged();
      return this;
    }

    private int bitField0_;

    private java.lang.Object id_ = "";
    /**
     *
     *
     * <pre>
     * Required. Identifier for this set of encryption options.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The id.
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Identifier for this set of encryption options.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for id.
     */
    public com.google.protobuf.ByteString getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Identifier for this set of encryption options.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @param value The id to set.
     * @return This builder for chaining.
     */
    public Builder setId(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      id_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Identifier for this set of encryption options.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearId() {
      id_ = getDefaultInstance().getId();
      bitField0_ = (bitField0_ & ~0x00000001);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Identifier for this set of encryption options.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @param value The bytes for id to set.
     * @return This builder for chaining.
     */
    public Builder setIdBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      id_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource,
            com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder,
            com.google.cloud.video.livestream.v1.Encryption.SecretManagerSourceOrBuilder>
        secretManagerKeySourceBuilder_;
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     *
     * @return Whether the secretManagerKeySource field is set.
     */
    @java.lang.Override
    public boolean hasSecretManagerKeySource() {
      return secretSourceCase_ == 7;
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     *
     * @return The secretManagerKeySource.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
        getSecretManagerKeySource() {
      if (secretManagerKeySourceBuilder_ == null) {
        if (secretSourceCase_ == 7) {
          return (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
              secretSource_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
            .getDefaultInstance();
      } else {
        if (secretSourceCase_ == 7) {
          return secretManagerKeySourceBuilder_.getMessage();
        }
        return com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    public Builder setSecretManagerKeySource(
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource value) {
      if (secretManagerKeySourceBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        secretSource_ = value;
        onChanged();
      } else {
        secretManagerKeySourceBuilder_.setMessage(value);
      }
      secretSourceCase_ = 7;
      return this;
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    public Builder setSecretManagerKeySource(
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder
            builderForValue) {
      if (secretManagerKeySourceBuilder_ == null) {
        secretSource_ = builderForValue.build();
        onChanged();
      } else {
        secretManagerKeySourceBuilder_.setMessage(builderForValue.build());
      }
      secretSourceCase_ = 7;
      return this;
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    public Builder mergeSecretManagerKeySource(
        com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource value) {
      if (secretManagerKeySourceBuilder_ == null) {
        if (secretSourceCase_ == 7
            && secretSource_
                != com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
                    .getDefaultInstance()) {
          secretSource_ =
              com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.newBuilder(
                      (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
                          secretSource_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          secretSource_ = value;
        }
        onChanged();
      } else {
        if (secretSourceCase_ == 7) {
          secretManagerKeySourceBuilder_.mergeFrom(value);
        } else {
          secretManagerKeySourceBuilder_.setMessage(value);
        }
      }
      secretSourceCase_ = 7;
      return this;
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    public Builder clearSecretManagerKeySource() {
      if (secretManagerKeySourceBuilder_ == null) {
        if (secretSourceCase_ == 7) {
          secretSourceCase_ = 0;
          secretSource_ = null;
          onChanged();
        }
      } else {
        if (secretSourceCase_ == 7) {
          secretSourceCase_ = 0;
          secretSource_ = null;
        }
        secretManagerKeySourceBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder
        getSecretManagerKeySourceBuilder() {
      return getSecretManagerKeySourceFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.SecretManagerSourceOrBuilder
        getSecretManagerKeySourceOrBuilder() {
      if ((secretSourceCase_ == 7) && (secretManagerKeySourceBuilder_ != null)) {
        return secretManagerKeySourceBuilder_.getMessageOrBuilder();
      } else {
        if (secretSourceCase_ == 7) {
          return (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource)
              secretSource_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * For keys stored in Google Secret Manager.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.SecretManagerSource secret_manager_key_source = 7;
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource,
            com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder,
            com.google.cloud.video.livestream.v1.Encryption.SecretManagerSourceOrBuilder>
        getSecretManagerKeySourceFieldBuilder() {
      if (secretManagerKeySourceBuilder_ == null) {
        if (!(secretSourceCase_ == 7)) {
          secretSource_ =
              com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource
                  .getDefaultInstance();
        }
        secretManagerKeySourceBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource,
                com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource.Builder,
                com.google.cloud.video.livestream.v1.Encryption.SecretManagerSourceOrBuilder>(
                (com.google.cloud.video.livestream.v1.Encryption.SecretManagerSource) secretSource_,
                getParentForChildren(),
                isClean());
        secretSource_ = null;
      }
      secretSourceCase_ = 7;
      onChanged();
      return secretManagerKeySourceBuilder_;
    }

    private com.google.cloud.video.livestream.v1.Encryption.DrmSystems drmSystems_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.DrmSystems,
            com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder,
            com.google.cloud.video.livestream.v1.Encryption.DrmSystemsOrBuilder>
        drmSystemsBuilder_;
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the drmSystems field is set.
     */
    public boolean hasDrmSystems() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The drmSystems.
     */
    public com.google.cloud.video.livestream.v1.Encryption.DrmSystems getDrmSystems() {
      if (drmSystemsBuilder_ == null) {
        return drmSystems_ == null
            ? com.google.cloud.video.livestream.v1.Encryption.DrmSystems.getDefaultInstance()
            : drmSystems_;
      } else {
        return drmSystemsBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    public Builder setDrmSystems(com.google.cloud.video.livestream.v1.Encryption.DrmSystems value) {
      if (drmSystemsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        drmSystems_ = value;
      } else {
        drmSystemsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    public Builder setDrmSystems(
        com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder builderForValue) {
      if (drmSystemsBuilder_ == null) {
        drmSystems_ = builderForValue.build();
      } else {
        drmSystemsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    public Builder mergeDrmSystems(
        com.google.cloud.video.livestream.v1.Encryption.DrmSystems value) {
      if (drmSystemsBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)
            && drmSystems_ != null
            && drmSystems_
                != com.google.cloud.video.livestream.v1.Encryption.DrmSystems
                    .getDefaultInstance()) {
          getDrmSystemsBuilder().mergeFrom(value);
        } else {
          drmSystems_ = value;
        }
      } else {
        drmSystemsBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    public Builder clearDrmSystems() {
      bitField0_ = (bitField0_ & ~0x00000004);
      drmSystems_ = null;
      if (drmSystemsBuilder_ != null) {
        drmSystemsBuilder_.dispose();
        drmSystemsBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    public com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder
        getDrmSystemsBuilder() {
      bitField0_ |= 0x00000004;
      onChanged();
      return getDrmSystemsFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    public com.google.cloud.video.livestream.v1.Encryption.DrmSystemsOrBuilder
        getDrmSystemsOrBuilder() {
      if (drmSystemsBuilder_ != null) {
        return drmSystemsBuilder_.getMessageOrBuilder();
      } else {
        return drmSystems_ == null
            ? com.google.cloud.video.livestream.v1.Encryption.DrmSystems.getDefaultInstance()
            : drmSystems_;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Configuration for DRM systems.
     * </pre>
     *
     * <code>
     * .google.cloud.video.livestream.v1.Encryption.DrmSystems drm_systems = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.DrmSystems,
            com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder,
            com.google.cloud.video.livestream.v1.Encryption.DrmSystemsOrBuilder>
        getDrmSystemsFieldBuilder() {
      if (drmSystemsBuilder_ == null) {
        drmSystemsBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.video.livestream.v1.Encryption.DrmSystems,
                com.google.cloud.video.livestream.v1.Encryption.DrmSystems.Builder,
                com.google.cloud.video.livestream.v1.Encryption.DrmSystemsOrBuilder>(
                getDrmSystems(), getParentForChildren(), isClean());
        drmSystems_ = null;
      }
      return drmSystemsBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption,
            com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder,
            com.google.cloud.video.livestream.v1.Encryption.Aes128EncryptionOrBuilder>
        aes128Builder_;
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     *
     * @return Whether the aes128 field is set.
     */
    @java.lang.Override
    public boolean hasAes128() {
      return encryptionModeCase_ == 4;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     *
     * @return The aes128.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption getAes128() {
      if (aes128Builder_ == null) {
        if (encryptionModeCase_ == 4) {
          return (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
            .getDefaultInstance();
      } else {
        if (encryptionModeCase_ == 4) {
          return aes128Builder_.getMessage();
        }
        return com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    public Builder setAes128(
        com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption value) {
      if (aes128Builder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        encryptionMode_ = value;
        onChanged();
      } else {
        aes128Builder_.setMessage(value);
      }
      encryptionModeCase_ = 4;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    public Builder setAes128(
        com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder builderForValue) {
      if (aes128Builder_ == null) {
        encryptionMode_ = builderForValue.build();
        onChanged();
      } else {
        aes128Builder_.setMessage(builderForValue.build());
      }
      encryptionModeCase_ = 4;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    public Builder mergeAes128(
        com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption value) {
      if (aes128Builder_ == null) {
        if (encryptionModeCase_ == 4
            && encryptionMode_
                != com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
                    .getDefaultInstance()) {
          encryptionMode_ =
              com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.newBuilder(
                      (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption)
                          encryptionMode_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          encryptionMode_ = value;
        }
        onChanged();
      } else {
        if (encryptionModeCase_ == 4) {
          aes128Builder_.mergeFrom(value);
        } else {
          aes128Builder_.setMessage(value);
        }
      }
      encryptionModeCase_ = 4;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    public Builder clearAes128() {
      if (aes128Builder_ == null) {
        if (encryptionModeCase_ == 4) {
          encryptionModeCase_ = 0;
          encryptionMode_ = null;
          onChanged();
        }
      } else {
        if (encryptionModeCase_ == 4) {
          encryptionModeCase_ = 0;
          encryptionMode_ = null;
        }
        aes128Builder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    public com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder
        getAes128Builder() {
      return getAes128FieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.Aes128EncryptionOrBuilder
        getAes128OrBuilder() {
      if ((encryptionModeCase_ == 4) && (aes128Builder_ != null)) {
        return aes128Builder_.getMessageOrBuilder();
      } else {
        if (encryptionModeCase_ == 4) {
          return (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS AES-128 encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.Aes128Encryption aes128 = 4;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption,
            com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder,
            com.google.cloud.video.livestream.v1.Encryption.Aes128EncryptionOrBuilder>
        getAes128FieldBuilder() {
      if (aes128Builder_ == null) {
        if (!(encryptionModeCase_ == 4)) {
          encryptionMode_ =
              com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.getDefaultInstance();
        }
        aes128Builder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption,
                com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption.Builder,
                com.google.cloud.video.livestream.v1.Encryption.Aes128EncryptionOrBuilder>(
                (com.google.cloud.video.livestream.v1.Encryption.Aes128Encryption) encryptionMode_,
                getParentForChildren(),
                isClean());
        encryptionMode_ = null;
      }
      encryptionModeCase_ = 4;
      onChanged();
      return aes128Builder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption,
            com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder,
            com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryptionOrBuilder>
        sampleAesBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     *
     * @return Whether the sampleAes field is set.
     */
    @java.lang.Override
    public boolean hasSampleAes() {
      return encryptionModeCase_ == 5;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     *
     * @return The sampleAes.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption getSampleAes() {
      if (sampleAesBuilder_ == null) {
        if (encryptionModeCase_ == 5) {
          return (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
              encryptionMode_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
            .getDefaultInstance();
      } else {
        if (encryptionModeCase_ == 5) {
          return sampleAesBuilder_.getMessage();
        }
        return com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    public Builder setSampleAes(
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption value) {
      if (sampleAesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        encryptionMode_ = value;
        onChanged();
      } else {
        sampleAesBuilder_.setMessage(value);
      }
      encryptionModeCase_ = 5;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    public Builder setSampleAes(
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder
            builderForValue) {
      if (sampleAesBuilder_ == null) {
        encryptionMode_ = builderForValue.build();
        onChanged();
      } else {
        sampleAesBuilder_.setMessage(builderForValue.build());
      }
      encryptionModeCase_ = 5;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    public Builder mergeSampleAes(
        com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption value) {
      if (sampleAesBuilder_ == null) {
        if (encryptionModeCase_ == 5
            && encryptionMode_
                != com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
                    .getDefaultInstance()) {
          encryptionMode_ =
              com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.newBuilder(
                      (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
                          encryptionMode_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          encryptionMode_ = value;
        }
        onChanged();
      } else {
        if (encryptionModeCase_ == 5) {
          sampleAesBuilder_.mergeFrom(value);
        } else {
          sampleAesBuilder_.setMessage(value);
        }
      }
      encryptionModeCase_ = 5;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    public Builder clearSampleAes() {
      if (sampleAesBuilder_ == null) {
        if (encryptionModeCase_ == 5) {
          encryptionModeCase_ = 0;
          encryptionMode_ = null;
          onChanged();
        }
      } else {
        if (encryptionModeCase_ == 5) {
          encryptionModeCase_ = 0;
          encryptionMode_ = null;
        }
        sampleAesBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder
        getSampleAesBuilder() {
      return getSampleAesFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryptionOrBuilder
        getSampleAesOrBuilder() {
      if ((encryptionModeCase_ == 5) && (sampleAesBuilder_ != null)) {
        return sampleAesBuilder_.getMessageOrBuilder();
      } else {
        if (encryptionModeCase_ == 5) {
          return (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
              encryptionMode_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for HLS SAMPLE-AES encryption.
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption sample_aes = 5;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption,
            com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder,
            com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryptionOrBuilder>
        getSampleAesFieldBuilder() {
      if (sampleAesBuilder_ == null) {
        if (!(encryptionModeCase_ == 5)) {
          encryptionMode_ =
              com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption
                  .getDefaultInstance();
        }
        sampleAesBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption,
                com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption.Builder,
                com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryptionOrBuilder>(
                (com.google.cloud.video.livestream.v1.Encryption.SampleAesEncryption)
                    encryptionMode_,
                getParentForChildren(),
                isClean());
        encryptionMode_ = null;
      }
      encryptionModeCase_ = 5;
      onChanged();
      return sampleAesBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption,
            com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder,
            com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryptionOrBuilder>
        mpegCencBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     *
     * @return Whether the mpegCenc field is set.
     */
    @java.lang.Override
    public boolean hasMpegCenc() {
      return encryptionModeCase_ == 6;
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     *
     * @return The mpegCenc.
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption getMpegCenc() {
      if (mpegCencBuilder_ == null) {
        if (encryptionModeCase_ == 6) {
          return (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
              encryptionMode_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
            .getDefaultInstance();
      } else {
        if (encryptionModeCase_ == 6) {
          return mpegCencBuilder_.getMessage();
        }
        return com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    public Builder setMpegCenc(
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption value) {
      if (mpegCencBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        encryptionMode_ = value;
        onChanged();
      } else {
        mpegCencBuilder_.setMessage(value);
      }
      encryptionModeCase_ = 6;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    public Builder setMpegCenc(
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder
            builderForValue) {
      if (mpegCencBuilder_ == null) {
        encryptionMode_ = builderForValue.build();
        onChanged();
      } else {
        mpegCencBuilder_.setMessage(builderForValue.build());
      }
      encryptionModeCase_ = 6;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    public Builder mergeMpegCenc(
        com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption value) {
      if (mpegCencBuilder_ == null) {
        if (encryptionModeCase_ == 6
            && encryptionMode_
                != com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
                    .getDefaultInstance()) {
          encryptionMode_ =
              com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.newBuilder(
                      (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
                          encryptionMode_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          encryptionMode_ = value;
        }
        onChanged();
      } else {
        if (encryptionModeCase_ == 6) {
          mpegCencBuilder_.mergeFrom(value);
        } else {
          mpegCencBuilder_.setMessage(value);
        }
      }
      encryptionModeCase_ = 6;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    public Builder clearMpegCenc() {
      if (mpegCencBuilder_ == null) {
        if (encryptionModeCase_ == 6) {
          encryptionModeCase_ = 0;
          encryptionMode_ = null;
          onChanged();
        }
      } else {
        if (encryptionModeCase_ == 6) {
          encryptionModeCase_ = 0;
          encryptionMode_ = null;
        }
        mpegCencBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder
        getMpegCencBuilder() {
      return getMpegCencFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    @java.lang.Override
    public com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryptionOrBuilder
        getMpegCencOrBuilder() {
      if ((encryptionModeCase_ == 6) && (mpegCencBuilder_ != null)) {
        return mpegCencBuilder_.getMessageOrBuilder();
      } else {
        if (encryptionModeCase_ == 6) {
          return (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
              encryptionMode_;
        }
        return com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for MPEG-Dash Common Encryption (MPEG-CENC).
     * </pre>
     *
     * <code>.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption mpeg_cenc = 6;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption,
            com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder,
            com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryptionOrBuilder>
        getMpegCencFieldBuilder() {
      if (mpegCencBuilder_ == null) {
        if (!(encryptionModeCase_ == 6)) {
          encryptionMode_ =
              com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption
                  .getDefaultInstance();
        }
        mpegCencBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption,
                com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption.Builder,
                com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryptionOrBuilder>(
                (com.google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption)
                    encryptionMode_,
                getParentForChildren(),
                isClean());
        encryptionMode_ = null;
      }
      encryptionModeCase_ = 6;
      onChanged();
      return mpegCencBuilder_;
    }

    @java.lang.Override
    public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @java.lang.Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }

    // @@protoc_insertion_point(builder_scope:google.cloud.video.livestream.v1.Encryption)
  }

  // @@protoc_insertion_point(class_scope:google.cloud.video.livestream.v1.Encryption)
  private static final com.google.cloud.video.livestream.v1.Encryption DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.cloud.video.livestream.v1.Encryption();
  }

  public static com.google.cloud.video.livestream.v1.Encryption getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<Encryption> PARSER =
      new com.google.protobuf.AbstractParser<Encryption>() {
        @java.lang.Override
        public Encryption parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

  public static com.google.protobuf.Parser<Encryption> parser() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.protobuf.Parser<Encryption> getParserForType() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.cloud.video.livestream.v1.Encryption getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
