// 
// Decompiled by Procyon v0.6.0
// 

package com.google.crypto.tink.proto;

import com.google.protobuf.AbstractMessageLite;
import com.google.protobuf.UnknownFieldSet;
import com.google.protobuf.SingleFieldBuilder;
import com.google.protobuf.UninitializedMessageException;
import com.google.protobuf.AbstractParser;
import com.google.protobuf.RuntimeVersion;
import com.google.protobuf.Message;
import com.google.protobuf.AbstractMessage;
import com.google.protobuf.CodedInputStream;
import java.io.InputStream;
import com.google.protobuf.ExtensionRegistryLite;
import com.google.protobuf.InvalidProtocolBufferException;
import java.nio.ByteBuffer;
import java.io.IOException;
import com.google.protobuf.MessageLite;
import com.google.protobuf.CodedOutputStream;
import com.google.protobuf.Descriptors;
import com.google.protobuf.Parser;
import com.google.protobuf.ByteString;
import com.google.protobuf.GeneratedMessage;

public final class JwtRsaSsaPssPrivateKey extends GeneratedMessage implements JwtRsaSsaPssPrivateKeyOrBuilder
{
    private static final long serialVersionUID = 0L;
    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    public static final int PUBLIC_KEY_FIELD_NUMBER = 2;
    private JwtRsaSsaPssPublicKey publicKey_;
    public static final int D_FIELD_NUMBER = 3;
    private ByteString d_;
    public static final int P_FIELD_NUMBER = 4;
    private ByteString p_;
    public static final int Q_FIELD_NUMBER = 5;
    private ByteString q_;
    public static final int DP_FIELD_NUMBER = 6;
    private ByteString dp_;
    public static final int DQ_FIELD_NUMBER = 7;
    private ByteString dq_;
    public static final int CRT_FIELD_NUMBER = 8;
    private ByteString crt_;
    private byte memoizedIsInitialized;
    private static final JwtRsaSsaPssPrivateKey DEFAULT_INSTANCE;
    private static final Parser<JwtRsaSsaPssPrivateKey> PARSER;
    
    private JwtRsaSsaPssPrivateKey(final GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.version_ = 0;
        this.d_ = ByteString.EMPTY;
        this.p_ = ByteString.EMPTY;
        this.q_ = ByteString.EMPTY;
        this.dp_ = ByteString.EMPTY;
        this.dq_ = ByteString.EMPTY;
        this.crt_ = ByteString.EMPTY;
        this.memoizedIsInitialized = -1;
    }
    
    private JwtRsaSsaPssPrivateKey() {
        this.version_ = 0;
        this.d_ = ByteString.EMPTY;
        this.p_ = ByteString.EMPTY;
        this.q_ = ByteString.EMPTY;
        this.dp_ = ByteString.EMPTY;
        this.dq_ = ByteString.EMPTY;
        this.crt_ = ByteString.EMPTY;
        this.memoizedIsInitialized = -1;
        this.d_ = ByteString.EMPTY;
        this.p_ = ByteString.EMPTY;
        this.q_ = ByteString.EMPTY;
        this.dp_ = ByteString.EMPTY;
        this.dq_ = ByteString.EMPTY;
        this.crt_ = ByteString.EMPTY;
    }
    
    public static final Descriptors.Descriptor getDescriptor() {
        return JwtRsaSsaPss.internal_static_google_crypto_tink_JwtRsaSsaPssPrivateKey_descriptor;
    }
    
    @Override
    protected FieldAccessorTable internalGetFieldAccessorTable() {
        return JwtRsaSsaPss.internal_static_google_crypto_tink_JwtRsaSsaPssPrivateKey_fieldAccessorTable.ensureFieldAccessorsInitialized(JwtRsaSsaPssPrivateKey.class, Builder.class);
    }
    
    @Override
    public int getVersion() {
        return this.version_;
    }
    
    @Override
    public boolean hasPublicKey() {
        return (this.bitField0_ & 0x1) != 0x0;
    }
    
    @Override
    public JwtRsaSsaPssPublicKey getPublicKey() {
        return (this.publicKey_ == null) ? JwtRsaSsaPssPublicKey.getDefaultInstance() : this.publicKey_;
    }
    
    @Override
    public JwtRsaSsaPssPublicKeyOrBuilder getPublicKeyOrBuilder() {
        return (this.publicKey_ == null) ? JwtRsaSsaPssPublicKey.getDefaultInstance() : this.publicKey_;
    }
    
    @Override
    public ByteString getD() {
        return this.d_;
    }
    
    @Override
    public ByteString getP() {
        return this.p_;
    }
    
    @Override
    public ByteString getQ() {
        return this.q_;
    }
    
    @Override
    public ByteString getDp() {
        return this.dp_;
    }
    
    @Override
    public ByteString getDq() {
        return this.dq_;
    }
    
    @Override
    public ByteString getCrt() {
        return this.crt_;
    }
    
    @Override
    public final boolean isInitialized() {
        final byte isInitialized = this.memoizedIsInitialized;
        if (isInitialized == 1) {
            return true;
        }
        if (isInitialized == 0) {
            return false;
        }
        this.memoizedIsInitialized = 1;
        return true;
    }
    
    @Override
    public void writeTo(final CodedOutputStream output) throws IOException {
        if (this.version_ != 0) {
            output.writeUInt32(1, this.version_);
        }
        if ((this.bitField0_ & 0x1) != 0x0) {
            output.writeMessage(2, this.getPublicKey());
        }
        if (!this.d_.isEmpty()) {
            output.writeBytes(3, this.d_);
        }
        if (!this.p_.isEmpty()) {
            output.writeBytes(4, this.p_);
        }
        if (!this.q_.isEmpty()) {
            output.writeBytes(5, this.q_);
        }
        if (!this.dp_.isEmpty()) {
            output.writeBytes(6, this.dp_);
        }
        if (!this.dq_.isEmpty()) {
            output.writeBytes(7, this.dq_);
        }
        if (!this.crt_.isEmpty()) {
            output.writeBytes(8, this.crt_);
        }
        this.getUnknownFields().writeTo(output);
    }
    
    @Override
    public int getSerializedSize() {
        int size = this.memoizedSize;
        if (size != -1) {
            return size;
        }
        size = 0;
        if (this.version_ != 0) {
            size += CodedOutputStream.computeUInt32Size(1, this.version_);
        }
        if ((this.bitField0_ & 0x1) != 0x0) {
            size += CodedOutputStream.computeMessageSize(2, this.getPublicKey());
        }
        if (!this.d_.isEmpty()) {
            size += CodedOutputStream.computeBytesSize(3, this.d_);
        }
        if (!this.p_.isEmpty()) {
            size += CodedOutputStream.computeBytesSize(4, this.p_);
        }
        if (!this.q_.isEmpty()) {
            size += CodedOutputStream.computeBytesSize(5, this.q_);
        }
        if (!this.dp_.isEmpty()) {
            size += CodedOutputStream.computeBytesSize(6, this.dp_);
        }
        if (!this.dq_.isEmpty()) {
            size += CodedOutputStream.computeBytesSize(7, this.dq_);
        }
        if (!this.crt_.isEmpty()) {
            size += CodedOutputStream.computeBytesSize(8, this.crt_);
        }
        size += this.getUnknownFields().getSerializedSize();
        return this.memoizedSize = size;
    }
    
    @Override
    public boolean equals(final Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof JwtRsaSsaPssPrivateKey)) {
            return super.equals(obj);
        }
        final JwtRsaSsaPssPrivateKey other = (JwtRsaSsaPssPrivateKey)obj;
        return this.getVersion() == other.getVersion() && this.hasPublicKey() == other.hasPublicKey() && (!this.hasPublicKey() || this.getPublicKey().equals(other.getPublicKey())) && this.getD().equals(other.getD()) && this.getP().equals(other.getP()) && this.getQ().equals(other.getQ()) && this.getDp().equals(other.getDp()) && this.getDq().equals(other.getDq()) && this.getCrt().equals(other.getCrt()) && this.getUnknownFields().equals(other.getUnknownFields());
    }
    
    @Override
    public int hashCode() {
        if (this.memoizedHashCode != 0) {
            return this.memoizedHashCode;
        }
        int hash = 41;
        hash = 19 * hash + getDescriptor().hashCode();
        hash = 37 * hash + 1;
        hash = 53 * hash + this.getVersion();
        if (this.hasPublicKey()) {
            hash = 37 * hash + 2;
            hash = 53 * hash + this.getPublicKey().hashCode();
        }
        hash = 37 * hash + 3;
        hash = 53 * hash + this.getD().hashCode();
        hash = 37 * hash + 4;
        hash = 53 * hash + this.getP().hashCode();
        hash = 37 * hash + 5;
        hash = 53 * hash + this.getQ().hashCode();
        hash = 37 * hash + 6;
        hash = 53 * hash + this.getDp().hashCode();
        hash = 37 * hash + 7;
        hash = 53 * hash + this.getDq().hashCode();
        hash = 37 * hash + 8;
        hash = 53 * hash + this.getCrt().hashCode();
        hash = 29 * hash + this.getUnknownFields().hashCode();
        return this.memoizedHashCode = hash;
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final ByteBuffer data) throws InvalidProtocolBufferException {
        return JwtRsaSsaPssPrivateKey.PARSER.parseFrom(data);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final ByteBuffer data, final ExtensionRegistryLite extensionRegistry) throws InvalidProtocolBufferException {
        return JwtRsaSsaPssPrivateKey.PARSER.parseFrom(data, extensionRegistry);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final ByteString data) throws InvalidProtocolBufferException {
        return JwtRsaSsaPssPrivateKey.PARSER.parseFrom(data);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final ByteString data, final ExtensionRegistryLite extensionRegistry) throws InvalidProtocolBufferException {
        return JwtRsaSsaPssPrivateKey.PARSER.parseFrom(data, extensionRegistry);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final byte[] data) throws InvalidProtocolBufferException {
        return JwtRsaSsaPssPrivateKey.PARSER.parseFrom(data);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final byte[] data, final ExtensionRegistryLite extensionRegistry) throws InvalidProtocolBufferException {
        return JwtRsaSsaPssPrivateKey.PARSER.parseFrom(data, extensionRegistry);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final InputStream input) throws IOException {
        return GeneratedMessage.parseWithIOException(JwtRsaSsaPssPrivateKey.PARSER, input);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final InputStream input, final ExtensionRegistryLite extensionRegistry) throws IOException {
        return GeneratedMessage.parseWithIOException(JwtRsaSsaPssPrivateKey.PARSER, input, extensionRegistry);
    }
    
    public static JwtRsaSsaPssPrivateKey parseDelimitedFrom(final InputStream input) throws IOException {
        return GeneratedMessage.parseDelimitedWithIOException(JwtRsaSsaPssPrivateKey.PARSER, input);
    }
    
    public static JwtRsaSsaPssPrivateKey parseDelimitedFrom(final InputStream input, final ExtensionRegistryLite extensionRegistry) throws IOException {
        return GeneratedMessage.parseDelimitedWithIOException(JwtRsaSsaPssPrivateKey.PARSER, input, extensionRegistry);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final CodedInputStream input) throws IOException {
        return GeneratedMessage.parseWithIOException(JwtRsaSsaPssPrivateKey.PARSER, input);
    }
    
    public static JwtRsaSsaPssPrivateKey parseFrom(final CodedInputStream input, final ExtensionRegistryLite extensionRegistry) throws IOException {
        return GeneratedMessage.parseWithIOException(JwtRsaSsaPssPrivateKey.PARSER, input, extensionRegistry);
    }
    
    @Override
    public Builder newBuilderForType() {
        return newBuilder();
    }
    
    public static Builder newBuilder() {
        return JwtRsaSsaPssPrivateKey.DEFAULT_INSTANCE.toBuilder();
    }
    
    public static Builder newBuilder(final JwtRsaSsaPssPrivateKey prototype) {
        return JwtRsaSsaPssPrivateKey.DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    
    @Override
    public Builder toBuilder() {
        return (this == JwtRsaSsaPssPrivateKey.DEFAULT_INSTANCE) ? new Builder() : new Builder().mergeFrom(this);
    }
    
    @Override
    protected Builder newBuilderForType(final BuilderParent parent) {
        final Builder builder = new Builder(parent);
        return builder;
    }
    
    public static JwtRsaSsaPssPrivateKey getDefaultInstance() {
        return JwtRsaSsaPssPrivateKey.DEFAULT_INSTANCE;
    }
    
    public static Parser<JwtRsaSsaPssPrivateKey> parser() {
        return JwtRsaSsaPssPrivateKey.PARSER;
    }
    
    @Override
    public Parser<JwtRsaSsaPssPrivateKey> getParserForType() {
        return JwtRsaSsaPssPrivateKey.PARSER;
    }
    
    @Override
    public JwtRsaSsaPssPrivateKey getDefaultInstanceForType() {
        return JwtRsaSsaPssPrivateKey.DEFAULT_INSTANCE;
    }
    
    static {
        RuntimeVersion.validateProtobufGencodeVersion(RuntimeVersion.RuntimeDomain.PUBLIC, 4, 32, 1, "", JwtRsaSsaPssPrivateKey.class.getName());
        DEFAULT_INSTANCE = new JwtRsaSsaPssPrivateKey();
        PARSER = new AbstractParser<JwtRsaSsaPssPrivateKey>() {
            @Override
            public JwtRsaSsaPssPrivateKey parsePartialFrom(final CodedInputStream input, final ExtensionRegistryLite extensionRegistry) throws InvalidProtocolBufferException {
                final Builder builder = JwtRsaSsaPssPrivateKey.newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                }
                catch (final InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                }
                catch (final UninitializedMessageException e2) {
                    throw e2.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                }
                catch (final IOException e3) {
                    throw new InvalidProtocolBufferException(e3).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };
    }
    
    public static final class Builder extends GeneratedMessage.Builder<Builder> implements JwtRsaSsaPssPrivateKeyOrBuilder
    {
        private int bitField0_;
        private int version_;
        private JwtRsaSsaPssPublicKey publicKey_;
        private SingleFieldBuilder<JwtRsaSsaPssPublicKey, JwtRsaSsaPssPublicKey.Builder, JwtRsaSsaPssPublicKeyOrBuilder> publicKeyBuilder_;
        private ByteString d_;
        private ByteString p_;
        private ByteString q_;
        private ByteString dp_;
        private ByteString dq_;
        private ByteString crt_;
        
        public static final Descriptors.Descriptor getDescriptor() {
            return JwtRsaSsaPss.internal_static_google_crypto_tink_JwtRsaSsaPssPrivateKey_descriptor;
        }
        
        @Override
        protected FieldAccessorTable internalGetFieldAccessorTable() {
            return JwtRsaSsaPss.internal_static_google_crypto_tink_JwtRsaSsaPssPrivateKey_fieldAccessorTable.ensureFieldAccessorsInitialized(JwtRsaSsaPssPrivateKey.class, Builder.class);
        }
        
        private Builder() {
            this.d_ = ByteString.EMPTY;
            this.p_ = ByteString.EMPTY;
            this.q_ = ByteString.EMPTY;
            this.dp_ = ByteString.EMPTY;
            this.dq_ = ByteString.EMPTY;
            this.crt_ = ByteString.EMPTY;
            this.maybeForceBuilderInitialization();
        }
        
        private Builder(final BuilderParent parent) {
            super(parent);
            this.d_ = ByteString.EMPTY;
            this.p_ = ByteString.EMPTY;
            this.q_ = ByteString.EMPTY;
            this.dp_ = ByteString.EMPTY;
            this.dq_ = ByteString.EMPTY;
            this.crt_ = ByteString.EMPTY;
            this.maybeForceBuilderInitialization();
        }
        
        private void maybeForceBuilderInitialization() {
            if (JwtRsaSsaPssPrivateKey.alwaysUseFieldBuilders) {
                this.internalGetPublicKeyFieldBuilder();
            }
        }
        
        @Override
        public Builder clear() {
            super.clear();
            this.bitField0_ = 0;
            this.version_ = 0;
            this.publicKey_ = null;
            if (this.publicKeyBuilder_ != null) {
                this.publicKeyBuilder_.dispose();
                this.publicKeyBuilder_ = null;
            }
            this.d_ = ByteString.EMPTY;
            this.p_ = ByteString.EMPTY;
            this.q_ = ByteString.EMPTY;
            this.dp_ = ByteString.EMPTY;
            this.dq_ = ByteString.EMPTY;
            this.crt_ = ByteString.EMPTY;
            return this;
        }
        
        @Override
        public Descriptors.Descriptor getDescriptorForType() {
            return JwtRsaSsaPss.internal_static_google_crypto_tink_JwtRsaSsaPssPrivateKey_descriptor;
        }
        
        @Override
        public JwtRsaSsaPssPrivateKey getDefaultInstanceForType() {
            return JwtRsaSsaPssPrivateKey.getDefaultInstance();
        }
        
        @Override
        public JwtRsaSsaPssPrivateKey build() {
            final JwtRsaSsaPssPrivateKey result = this.buildPartial();
            if (!result.isInitialized()) {
                throw AbstractMessage.Builder.newUninitializedMessageException(result);
            }
            return result;
        }
        
        @Override
        public JwtRsaSsaPssPrivateKey buildPartial() {
            final JwtRsaSsaPssPrivateKey result = new JwtRsaSsaPssPrivateKey(this, null);
            if (this.bitField0_ != 0) {
                this.buildPartial0(result);
            }
            this.onBuilt();
            return result;
        }
        
        private void buildPartial0(final JwtRsaSsaPssPrivateKey result) {
            final int from_bitField0_ = this.bitField0_;
            if ((from_bitField0_ & 0x1) != 0x0) {
                result.version_ = this.version_;
            }
            int to_bitField0_ = 0;
            if ((from_bitField0_ & 0x2) != 0x0) {
                result.publicKey_ = ((this.publicKeyBuilder_ == null) ? this.publicKey_ : this.publicKeyBuilder_.build());
                to_bitField0_ |= 0x1;
            }
            if ((from_bitField0_ & 0x4) != 0x0) {
                result.d_ = this.d_;
            }
            if ((from_bitField0_ & 0x8) != 0x0) {
                result.p_ = this.p_;
            }
            if ((from_bitField0_ & 0x10) != 0x0) {
                result.q_ = this.q_;
            }
            if ((from_bitField0_ & 0x20) != 0x0) {
                result.dp_ = this.dp_;
            }
            if ((from_bitField0_ & 0x40) != 0x0) {
                result.dq_ = this.dq_;
            }
            if ((from_bitField0_ & 0x80) != 0x0) {
                result.crt_ = this.crt_;
            }
            result.bitField0_ |= to_bitField0_;
        }
        
        @Override
        public Builder mergeFrom(final Message other) {
            if (other instanceof JwtRsaSsaPssPrivateKey) {
                return this.mergeFrom((JwtRsaSsaPssPrivateKey)other);
            }
            super.mergeFrom(other);
            return this;
        }
        
        public Builder mergeFrom(final JwtRsaSsaPssPrivateKey other) {
            if (other == JwtRsaSsaPssPrivateKey.getDefaultInstance()) {
                return this;
            }
            if (other.getVersion() != 0) {
                this.setVersion(other.getVersion());
            }
            if (other.hasPublicKey()) {
                this.mergePublicKey(other.getPublicKey());
            }
            if (!other.getD().isEmpty()) {
                this.setD(other.getD());
            }
            if (!other.getP().isEmpty()) {
                this.setP(other.getP());
            }
            if (!other.getQ().isEmpty()) {
                this.setQ(other.getQ());
            }
            if (!other.getDp().isEmpty()) {
                this.setDp(other.getDp());
            }
            if (!other.getDq().isEmpty()) {
                this.setDq(other.getDq());
            }
            if (!other.getCrt().isEmpty()) {
                this.setCrt(other.getCrt());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            this.onChanged();
            return this;
        }
        
        @Override
        public final boolean isInitialized() {
            return true;
        }
        
        @Override
        public Builder mergeFrom(final CodedInputStream input, final ExtensionRegistryLite extensionRegistry) throws IOException {
            if (extensionRegistry == null) {
                throw new NullPointerException();
            }
            try {
                boolean done = false;
                while (!done) {
                    final int tag = input.readTag();
                    switch (tag) {
                        case 0: {
                            done = true;
                            continue;
                        }
                        case 8: {
                            this.version_ = input.readUInt32();
                            this.bitField0_ |= 0x1;
                            continue;
                        }
                        case 18: {
                            input.readMessage(this.internalGetPublicKeyFieldBuilder().getBuilder(), extensionRegistry);
                            this.bitField0_ |= 0x2;
                            continue;
                        }
                        case 26: {
                            this.d_ = input.readBytes();
                            this.bitField0_ |= 0x4;
                            continue;
                        }
                        case 34: {
                            this.p_ = input.readBytes();
                            this.bitField0_ |= 0x8;
                            continue;
                        }
                        case 42: {
                            this.q_ = input.readBytes();
                            this.bitField0_ |= 0x10;
                            continue;
                        }
                        case 50: {
                            this.dp_ = input.readBytes();
                            this.bitField0_ |= 0x20;
                            continue;
                        }
                        case 58: {
                            this.dq_ = input.readBytes();
                            this.bitField0_ |= 0x40;
                            continue;
                        }
                        case 66: {
                            this.crt_ = input.readBytes();
                            this.bitField0_ |= 0x80;
                            continue;
                        }
                        default: {
                            if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                done = true;
                                continue;
                            }
                            continue;
                        }
                    }
                }
            }
            catch (final InvalidProtocolBufferException e) {
                throw e.unwrapIOException();
            }
            finally {
                this.onChanged();
            }
            return this;
        }
        
        @Override
        public int getVersion() {
            return this.version_;
        }
        
        public Builder setVersion(final int value) {
            this.version_ = value;
            this.bitField0_ |= 0x1;
            this.onChanged();
            return this;
        }
        
        public Builder clearVersion() {
            this.bitField0_ &= 0xFFFFFFFE;
            this.version_ = 0;
            this.onChanged();
            return this;
        }
        
        @Override
        public boolean hasPublicKey() {
            return (this.bitField0_ & 0x2) != 0x0;
        }
        
        @Override
        public JwtRsaSsaPssPublicKey getPublicKey() {
            if (this.publicKeyBuilder_ == null) {
                return (this.publicKey_ == null) ? JwtRsaSsaPssPublicKey.getDefaultInstance() : this.publicKey_;
            }
            return this.publicKeyBuilder_.getMessage();
        }
        
        public Builder setPublicKey(final JwtRsaSsaPssPublicKey value) {
            if (this.publicKeyBuilder_ == null) {
                if (value == null) {
                    throw new NullPointerException();
                }
                this.publicKey_ = value;
            }
            else {
                this.publicKeyBuilder_.setMessage(value);
            }
            this.bitField0_ |= 0x2;
            this.onChanged();
            return this;
        }
        
        public Builder setPublicKey(final JwtRsaSsaPssPublicKey.Builder builderForValue) {
            if (this.publicKeyBuilder_ == null) {
                this.publicKey_ = builderForValue.build();
            }
            else {
                this.publicKeyBuilder_.setMessage(builderForValue.build());
            }
            this.bitField0_ |= 0x2;
            this.onChanged();
            return this;
        }
        
        public Builder mergePublicKey(final JwtRsaSsaPssPublicKey value) {
            if (this.publicKeyBuilder_ == null) {
                if ((this.bitField0_ & 0x2) != 0x0 && this.publicKey_ != null && this.publicKey_ != JwtRsaSsaPssPublicKey.getDefaultInstance()) {
                    this.getPublicKeyBuilder().mergeFrom(value);
                }
                else {
                    this.publicKey_ = value;
                }
            }
            else {
                this.publicKeyBuilder_.mergeFrom(value);
            }
            if (this.publicKey_ != null) {
                this.bitField0_ |= 0x2;
                this.onChanged();
            }
            return this;
        }
        
        public Builder clearPublicKey() {
            this.bitField0_ &= 0xFFFFFFFD;
            this.publicKey_ = null;
            if (this.publicKeyBuilder_ != null) {
                this.publicKeyBuilder_.dispose();
                this.publicKeyBuilder_ = null;
            }
            this.onChanged();
            return this;
        }
        
        public JwtRsaSsaPssPublicKey.Builder getPublicKeyBuilder() {
            this.bitField0_ |= 0x2;
            this.onChanged();
            return this.internalGetPublicKeyFieldBuilder().getBuilder();
        }
        
        @Override
        public JwtRsaSsaPssPublicKeyOrBuilder getPublicKeyOrBuilder() {
            if (this.publicKeyBuilder_ != null) {
                return this.publicKeyBuilder_.getMessageOrBuilder();
            }
            return (this.publicKey_ == null) ? JwtRsaSsaPssPublicKey.getDefaultInstance() : this.publicKey_;
        }
        
        private SingleFieldBuilder<JwtRsaSsaPssPublicKey, JwtRsaSsaPssPublicKey.Builder, JwtRsaSsaPssPublicKeyOrBuilder> internalGetPublicKeyFieldBuilder() {
            if (this.publicKeyBuilder_ == null) {
                this.publicKeyBuilder_ = new SingleFieldBuilder<JwtRsaSsaPssPublicKey, JwtRsaSsaPssPublicKey.Builder, JwtRsaSsaPssPublicKeyOrBuilder>(this.getPublicKey(), this.getParentForChildren(), this.isClean());
                this.publicKey_ = null;
            }
            return this.publicKeyBuilder_;
        }
        
        @Override
        public ByteString getD() {
            return this.d_;
        }
        
        public Builder setD(final ByteString value) {
            if (value == null) {
                throw new NullPointerException();
            }
            this.d_ = value;
            this.bitField0_ |= 0x4;
            this.onChanged();
            return this;
        }
        
        public Builder clearD() {
            this.bitField0_ &= 0xFFFFFFFB;
            this.d_ = JwtRsaSsaPssPrivateKey.getDefaultInstance().getD();
            this.onChanged();
            return this;
        }
        
        @Override
        public ByteString getP() {
            return this.p_;
        }
        
        public Builder setP(final ByteString value) {
            if (value == null) {
                throw new NullPointerException();
            }
            this.p_ = value;
            this.bitField0_ |= 0x8;
            this.onChanged();
            return this;
        }
        
        public Builder clearP() {
            this.bitField0_ &= 0xFFFFFFF7;
            this.p_ = JwtRsaSsaPssPrivateKey.getDefaultInstance().getP();
            this.onChanged();
            return this;
        }
        
        @Override
        public ByteString getQ() {
            return this.q_;
        }
        
        public Builder setQ(final ByteString value) {
            if (value == null) {
                throw new NullPointerException();
            }
            this.q_ = value;
            this.bitField0_ |= 0x10;
            this.onChanged();
            return this;
        }
        
        public Builder clearQ() {
            this.bitField0_ &= 0xFFFFFFEF;
            this.q_ = JwtRsaSsaPssPrivateKey.getDefaultInstance().getQ();
            this.onChanged();
            return this;
        }
        
        @Override
        public ByteString getDp() {
            return this.dp_;
        }
        
        public Builder setDp(final ByteString value) {
            if (value == null) {
                throw new NullPointerException();
            }
            this.dp_ = value;
            this.bitField0_ |= 0x20;
            this.onChanged();
            return this;
        }
        
        public Builder clearDp() {
            this.bitField0_ &= 0xFFFFFFDF;
            this.dp_ = JwtRsaSsaPssPrivateKey.getDefaultInstance().getDp();
            this.onChanged();
            return this;
        }
        
        @Override
        public ByteString getDq() {
            return this.dq_;
        }
        
        public Builder setDq(final ByteString value) {
            if (value == null) {
                throw new NullPointerException();
            }
            this.dq_ = value;
            this.bitField0_ |= 0x40;
            this.onChanged();
            return this;
        }
        
        public Builder clearDq() {
            this.bitField0_ &= 0xFFFFFFBF;
            this.dq_ = JwtRsaSsaPssPrivateKey.getDefaultInstance().getDq();
            this.onChanged();
            return this;
        }
        
        @Override
        public ByteString getCrt() {
            return this.crt_;
        }
        
        public Builder setCrt(final ByteString value) {
            if (value == null) {
                throw new NullPointerException();
            }
            this.crt_ = value;
            this.bitField0_ |= 0x80;
            this.onChanged();
            return this;
        }
        
        public Builder clearCrt() {
            this.bitField0_ &= 0xFFFFFF7F;
            this.crt_ = JwtRsaSsaPssPrivateKey.getDefaultInstance().getCrt();
            this.onChanged();
            return this;
        }
    }
}
