All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.ads.googleads.v17.resources.FeedPlaceholderView Maven / Gradle / Ivy

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/ads/googleads/v17/resources/feed_placeholder_view.proto

// Protobuf Java Version: 3.25.3
package com.google.ads.googleads.v17.resources;

/**
 * 
 * A feed placeholder view.
 * 
* * Protobuf type {@code google.ads.googleads.v17.resources.FeedPlaceholderView} */ public final class FeedPlaceholderView extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:google.ads.googleads.v17.resources.FeedPlaceholderView) FeedPlaceholderViewOrBuilder { private static final long serialVersionUID = 0L; // Use FeedPlaceholderView.newBuilder() to construct. private FeedPlaceholderView(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } private FeedPlaceholderView() { resourceName_ = ""; placeholderType_ = 0; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { return new FeedPlaceholderView(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.ads.googleads.v17.resources.FeedPlaceholderViewProto.internal_static_google_ads_googleads_v17_resources_FeedPlaceholderView_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.ads.googleads.v17.resources.FeedPlaceholderViewProto.internal_static_google_ads_googleads_v17_resources_FeedPlaceholderView_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.ads.googleads.v17.resources.FeedPlaceholderView.class, com.google.ads.googleads.v17.resources.FeedPlaceholderView.Builder.class); } public static final int RESOURCE_NAME_FIELD_NUMBER = 1; @SuppressWarnings("serial") private volatile java.lang.Object resourceName_ = ""; /** *
   * Output only. The resource name of the feed placeholder view.
   * Feed placeholder view resource names have the form:
   *
   * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
   * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @return The resourceName. */ @java.lang.Override public java.lang.String getResourceName() { java.lang.Object ref = resourceName_; 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(); resourceName_ = s; return s; } } /** *
   * Output only. The resource name of the feed placeholder view.
   * Feed placeholder view resource names have the form:
   *
   * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
   * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @return The bytes for resourceName. */ @java.lang.Override public com.google.protobuf.ByteString getResourceNameBytes() { java.lang.Object ref = resourceName_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); resourceName_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int PLACEHOLDER_TYPE_FIELD_NUMBER = 2; private int placeholderType_ = 0; /** *
   * Output only. The placeholder type of the feed placeholder view.
   * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return The enum numeric value on the wire for placeholderType. */ @java.lang.Override public int getPlaceholderTypeValue() { return placeholderType_; } /** *
   * Output only. The placeholder type of the feed placeholder view.
   * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return The placeholderType. */ @java.lang.Override public com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType getPlaceholderType() { com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType result = com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType.forNumber(placeholderType_); return result == null ? com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType.UNRECOGNIZED : result; } 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(resourceName_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceName_); } if (placeholderType_ != com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType.UNSPECIFIED.getNumber()) { output.writeEnum(2, placeholderType_); } 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(resourceName_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceName_); } if (placeholderType_ != com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType.UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(2, placeholderType_); } 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.ads.googleads.v17.resources.FeedPlaceholderView)) { return super.equals(obj); } com.google.ads.googleads.v17.resources.FeedPlaceholderView other = (com.google.ads.googleads.v17.resources.FeedPlaceholderView) obj; if (!getResourceName() .equals(other.getResourceName())) return false; if (placeholderType_ != other.placeholderType_) 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) + RESOURCE_NAME_FIELD_NUMBER; hash = (53 * hash) + getResourceName().hashCode(); hash = (37 * hash) + PLACEHOLDER_TYPE_FIELD_NUMBER; hash = (53 * hash) + placeholderType_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView 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.ads.googleads.v17.resources.FeedPlaceholderView parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView 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.ads.googleads.v17.resources.FeedPlaceholderView parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView 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.ads.googleads.v17.resources.FeedPlaceholderView parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView 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.ads.googleads.v17.resources.FeedPlaceholderView 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; } /** *
   * A feed placeholder view.
   * 
* * Protobuf type {@code google.ads.googleads.v17.resources.FeedPlaceholderView} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:google.ads.googleads.v17.resources.FeedPlaceholderView) com.google.ads.googleads.v17.resources.FeedPlaceholderViewOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.ads.googleads.v17.resources.FeedPlaceholderViewProto.internal_static_google_ads_googleads_v17_resources_FeedPlaceholderView_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.ads.googleads.v17.resources.FeedPlaceholderViewProto.internal_static_google_ads_googleads_v17_resources_FeedPlaceholderView_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.ads.googleads.v17.resources.FeedPlaceholderView.class, com.google.ads.googleads.v17.resources.FeedPlaceholderView.Builder.class); } // Construct using com.google.ads.googleads.v17.resources.FeedPlaceholderView.newBuilder() private Builder() { } private Builder( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); } @java.lang.Override public Builder clear() { super.clear(); bitField0_ = 0; resourceName_ = ""; placeholderType_ = 0; return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return com.google.ads.googleads.v17.resources.FeedPlaceholderViewProto.internal_static_google_ads_googleads_v17_resources_FeedPlaceholderView_descriptor; } @java.lang.Override public com.google.ads.googleads.v17.resources.FeedPlaceholderView getDefaultInstanceForType() { return com.google.ads.googleads.v17.resources.FeedPlaceholderView.getDefaultInstance(); } @java.lang.Override public com.google.ads.googleads.v17.resources.FeedPlaceholderView build() { com.google.ads.googleads.v17.resources.FeedPlaceholderView result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } @java.lang.Override public com.google.ads.googleads.v17.resources.FeedPlaceholderView buildPartial() { com.google.ads.googleads.v17.resources.FeedPlaceholderView result = new com.google.ads.googleads.v17.resources.FeedPlaceholderView(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } private void buildPartial0(com.google.ads.googleads.v17.resources.FeedPlaceholderView result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { result.resourceName_ = resourceName_; } if (((from_bitField0_ & 0x00000002) != 0)) { result.placeholderType_ = placeholderType_; } } @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.ads.googleads.v17.resources.FeedPlaceholderView) { return mergeFrom((com.google.ads.googleads.v17.resources.FeedPlaceholderView)other); } else { super.mergeFrom(other); return this; } } public Builder mergeFrom(com.google.ads.googleads.v17.resources.FeedPlaceholderView other) { if (other == com.google.ads.googleads.v17.resources.FeedPlaceholderView.getDefaultInstance()) return this; if (!other.getResourceName().isEmpty()) { resourceName_ = other.resourceName_; bitField0_ |= 0x00000001; onChanged(); } if (other.placeholderType_ != 0) { setPlaceholderTypeValue(other.getPlaceholderTypeValue()); } 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: { resourceName_ = input.readStringRequireUtf8(); bitField0_ |= 0x00000001; break; } // case 10 case 16: { placeholderType_ = input.readEnum(); bitField0_ |= 0x00000002; break; } // case 16 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 resourceName_ = ""; /** *
     * Output only. The resource name of the feed placeholder view.
     * Feed placeholder view resource names have the form:
     *
     * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
     * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @return The resourceName. */ public java.lang.String getResourceName() { java.lang.Object ref = resourceName_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); resourceName_ = s; return s; } else { return (java.lang.String) ref; } } /** *
     * Output only. The resource name of the feed placeholder view.
     * Feed placeholder view resource names have the form:
     *
     * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
     * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @return The bytes for resourceName. */ public com.google.protobuf.ByteString getResourceNameBytes() { java.lang.Object ref = resourceName_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); resourceName_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** *
     * Output only. The resource name of the feed placeholder view.
     * Feed placeholder view resource names have the form:
     *
     * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
     * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @param value The resourceName to set. * @return This builder for chaining. */ public Builder setResourceName( java.lang.String value) { if (value == null) { throw new NullPointerException(); } resourceName_ = value; bitField0_ |= 0x00000001; onChanged(); return this; } /** *
     * Output only. The resource name of the feed placeholder view.
     * Feed placeholder view resource names have the form:
     *
     * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
     * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @return This builder for chaining. */ public Builder clearResourceName() { resourceName_ = getDefaultInstance().getResourceName(); bitField0_ = (bitField0_ & ~0x00000001); onChanged(); return this; } /** *
     * Output only. The resource name of the feed placeholder view.
     * Feed placeholder view resource names have the form:
     *
     * `customers/{customer_id}/feedPlaceholderViews/{placeholder_type}`
     * 
* * string resource_name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } * @param value The bytes for resourceName to set. * @return This builder for chaining. */ public Builder setResourceNameBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); resourceName_ = value; bitField0_ |= 0x00000001; onChanged(); return this; } private int placeholderType_ = 0; /** *
     * Output only. The placeholder type of the feed placeholder view.
     * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return The enum numeric value on the wire for placeholderType. */ @java.lang.Override public int getPlaceholderTypeValue() { return placeholderType_; } /** *
     * Output only. The placeholder type of the feed placeholder view.
     * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @param value The enum numeric value on the wire for placeholderType to set. * @return This builder for chaining. */ public Builder setPlaceholderTypeValue(int value) { placeholderType_ = value; bitField0_ |= 0x00000002; onChanged(); return this; } /** *
     * Output only. The placeholder type of the feed placeholder view.
     * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return The placeholderType. */ @java.lang.Override public com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType getPlaceholderType() { com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType result = com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType.forNumber(placeholderType_); return result == null ? com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType.UNRECOGNIZED : result; } /** *
     * Output only. The placeholder type of the feed placeholder view.
     * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @param value The placeholderType to set. * @return This builder for chaining. */ public Builder setPlaceholderType(com.google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType value) { if (value == null) { throw new NullPointerException(); } bitField0_ |= 0x00000002; placeholderType_ = value.getNumber(); onChanged(); return this; } /** *
     * Output only. The placeholder type of the feed placeholder view.
     * 
* * .google.ads.googleads.v17.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return This builder for chaining. */ public Builder clearPlaceholderType() { bitField0_ = (bitField0_ & ~0x00000002); placeholderType_ = 0; 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.ads.googleads.v17.resources.FeedPlaceholderView) } // @@protoc_insertion_point(class_scope:google.ads.googleads.v17.resources.FeedPlaceholderView) private static final com.google.ads.googleads.v17.resources.FeedPlaceholderView DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = new com.google.ads.googleads.v17.resources.FeedPlaceholderView(); } public static com.google.ads.googleads.v17.resources.FeedPlaceholderView getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override public FeedPlaceholderView 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 parser() { return PARSER; } @java.lang.Override public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override public com.google.ads.googleads.v17.resources.FeedPlaceholderView getDefaultInstanceForType() { return DEFAULT_INSTANCE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy