// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: nn_service.proto

package com.intel.analytics.bigdl.ppml.fl.generated;

public final class NNServiceProto {
  private NNServiceProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface TrainRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.TrainRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 clientuuid = 1;</code>
     * @return The clientuuid.
     */
    int getClientuuid();

    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData();
    /**
     * <code>.TensorMap data = 2;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder();

    /**
     * <code>string algorithm = 3;</code>
     * @return The algorithm.
     */
    java.lang.String getAlgorithm();
    /**
     * <code>string algorithm = 3;</code>
     * @return The bytes for algorithm.
     */
    com.google.protobuf.ByteString
        getAlgorithmBytes();
  }
  /**
   * Protobuf type {@code nn.TrainRequest}
   */
  public static final class TrainRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.TrainRequest)
      TrainRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TrainRequest.newBuilder() to construct.
    private TrainRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TrainRequest() {
      algorithm_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TrainRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              clientuuid_ = input.readInt32();
              break;
            }
            case 18: {
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              algorithm_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private int clientuuid_;
    /**
     * <code>int32 clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @java.lang.Override
    public int getClientuuid() {
      return clientuuid_;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
      return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int ALGORITHM_FIELD_NUMBER = 3;
    private volatile java.lang.Object algorithm_;
    /**
     * <code>string algorithm = 3;</code>
     * @return The algorithm.
     */
    @java.lang.Override
    public java.lang.String getAlgorithm() {
      java.lang.Object ref = algorithm_;
      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();
        algorithm_ = s;
        return s;
      }
    }
    /**
     * <code>string algorithm = 3;</code>
     * @return The bytes for algorithm.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAlgorithmBytes() {
      java.lang.Object ref = algorithm_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        algorithm_ = 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 (clientuuid_ != 0) {
        output.writeInt32(1, clientuuid_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (!getAlgorithmBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, algorithm_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clientuuid_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, clientuuid_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (!getAlgorithmBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, algorithm_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest) obj;

      if (getClientuuid()
          != other.getClientuuid()) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getAlgorithm()
          .equals(other.getAlgorithm())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLIENTUUID_FIELD_NUMBER;
      hash = (53 * hash) + getClientuuid();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + ALGORITHM_FIELD_NUMBER;
      hash = (53 * hash) + getAlgorithm().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest 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;
    }
    /**
     * Protobuf type {@code nn.TrainRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.TrainRequest)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        clientuuid_ = 0;

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        algorithm_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainRequest_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest(this);
        result.clientuuid_ = clientuuid_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.algorithm_ = algorithm_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest.getDefaultInstance()) return this;
        if (other.getClientuuid() != 0) {
          setClientuuid(other.getClientuuid());
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (!other.getAlgorithm().isEmpty()) {
          algorithm_ = other.algorithm_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int clientuuid_ ;
      /**
       * <code>int32 clientuuid = 1;</code>
       * @return The clientuuid.
       */
      @java.lang.Override
      public int getClientuuid() {
        return clientuuid_;
      }
      /**
       * <code>int32 clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(int value) {
        
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = 0;
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> dataBuilder_;
      /**
       * <code>.TensorMap data = 2;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       * @return The data.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder mergeData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private java.lang.Object algorithm_ = "";
      /**
       * <code>string algorithm = 3;</code>
       * @return The algorithm.
       */
      public java.lang.String getAlgorithm() {
        java.lang.Object ref = algorithm_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          algorithm_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string algorithm = 3;</code>
       * @return The bytes for algorithm.
       */
      public com.google.protobuf.ByteString
          getAlgorithmBytes() {
        java.lang.Object ref = algorithm_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          algorithm_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string algorithm = 3;</code>
       * @param value The algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithm(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        algorithm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string algorithm = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlgorithm() {
        
        algorithm_ = getDefaultInstance().getAlgorithm();
        onChanged();
        return this;
      }
      /**
       * <code>string algorithm = 3;</code>
       * @param value The bytes for algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithmBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        algorithm_ = value;
        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:nn.TrainRequest)
    }

    // @@protoc_insertion_point(class_scope:nn.TrainRequest)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TrainRequest>
        PARSER = new com.google.protobuf.AbstractParser<TrainRequest>() {
      @java.lang.Override
      public TrainRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TrainRequest(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TrainResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.TrainResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string response = 1;</code>
     * @return The response.
     */
    java.lang.String getResponse();
    /**
     * <code>string response = 1;</code>
     * @return The bytes for response.
     */
    com.google.protobuf.ByteString
        getResponseBytes();

    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData();
    /**
     * <code>.TensorMap data = 2;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder();

    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    int getCode();
  }
  /**
   * Protobuf type {@code nn.TrainResponse}
   */
  public static final class TrainResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.TrainResponse)
      TrainResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TrainResponse.newBuilder() to construct.
    private TrainResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TrainResponse() {
      response_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TrainResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              response_ = s;
              break;
            }
            case 18: {
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              code_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.Builder.class);
    }

    public static final int RESPONSE_FIELD_NUMBER = 1;
    private volatile java.lang.Object response_;
    /**
     * <code>string response = 1;</code>
     * @return The response.
     */
    @java.lang.Override
    public java.lang.String getResponse() {
      java.lang.Object ref = response_;
      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();
        response_ = s;
        return s;
      }
    }
    /**
     * <code>string response = 1;</code>
     * @return The bytes for response.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResponseBytes() {
      java.lang.Object ref = response_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        response_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
      return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int CODE_FIELD_NUMBER = 3;
    private int code_;
    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    @java.lang.Override
    public int getCode() {
      return code_;
    }

    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 (!getResponseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, response_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (code_ != 0) {
        output.writeInt32(3, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getResponseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, response_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, code_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse) obj;

      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + getResponse().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse 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;
    }
    /**
     * Protobuf type {@code nn.TrainResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.TrainResponse)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        response_ = "";

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        code_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_TrainResponse_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse(this);
        result.response_ = response_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.code_ = code_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse.getDefaultInstance()) return this;
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object response_ = "";
      /**
       * <code>string response = 1;</code>
       * @return The response.
       */
      public java.lang.String getResponse() {
        java.lang.Object ref = response_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        java.lang.Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          response_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @param value The response to set.
       * @return This builder for chaining.
       */
      public Builder setResponse(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string response = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponse() {
        
        response_ = getDefaultInstance().getResponse();
        onChanged();
        return this;
      }
      /**
       * <code>string response = 1;</code>
       * @param value The bytes for response to set.
       * @return This builder for chaining.
       */
      public Builder setResponseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        response_ = value;
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> dataBuilder_;
      /**
       * <code>.TensorMap data = 2;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       * @return The data.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder mergeData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private int code_ ;
      /**
       * <code>int32 code = 3;</code>
       * @return The code.
       */
      @java.lang.Override
      public int getCode() {
        return code_;
      }
      /**
       * <code>int32 code = 3;</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(int value) {
        
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 code = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        
        code_ = 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:nn.TrainResponse)
    }

    // @@protoc_insertion_point(class_scope:nn.TrainResponse)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TrainResponse>
        PARSER = new com.google.protobuf.AbstractParser<TrainResponse>() {
      @java.lang.Override
      public TrainResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TrainResponse(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.TrainResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EvaluateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.EvaluateRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 clientuuid = 1;</code>
     * @return The clientuuid.
     */
    int getClientuuid();

    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData();
    /**
     * <code>.TensorMap data = 2;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder();

    /**
     * <code>string algorithm = 3;</code>
     * @return The algorithm.
     */
    java.lang.String getAlgorithm();
    /**
     * <code>string algorithm = 3;</code>
     * @return The bytes for algorithm.
     */
    com.google.protobuf.ByteString
        getAlgorithmBytes();

    /**
     * <code>bool return = 4;</code>
     * @return The return.
     */
    boolean getReturn();
  }
  /**
   * Protobuf type {@code nn.EvaluateRequest}
   */
  public static final class EvaluateRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.EvaluateRequest)
      EvaluateRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EvaluateRequest.newBuilder() to construct.
    private EvaluateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EvaluateRequest() {
      algorithm_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EvaluateRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              clientuuid_ = input.readInt32();
              break;
            }
            case 18: {
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              algorithm_ = s;
              break;
            }
            case 32: {

              return_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private int clientuuid_;
    /**
     * <code>int32 clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @java.lang.Override
    public int getClientuuid() {
      return clientuuid_;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
      return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int ALGORITHM_FIELD_NUMBER = 3;
    private volatile java.lang.Object algorithm_;
    /**
     * <code>string algorithm = 3;</code>
     * @return The algorithm.
     */
    @java.lang.Override
    public java.lang.String getAlgorithm() {
      java.lang.Object ref = algorithm_;
      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();
        algorithm_ = s;
        return s;
      }
    }
    /**
     * <code>string algorithm = 3;</code>
     * @return The bytes for algorithm.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAlgorithmBytes() {
      java.lang.Object ref = algorithm_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        algorithm_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RETURN_FIELD_NUMBER = 4;
    private boolean return_;
    /**
     * <code>bool return = 4;</code>
     * @return The return.
     */
    @java.lang.Override
    public boolean getReturn() {
      return return_;
    }

    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 (clientuuid_ != 0) {
        output.writeInt32(1, clientuuid_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (!getAlgorithmBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, algorithm_);
      }
      if (return_ != false) {
        output.writeBool(4, return_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clientuuid_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, clientuuid_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (!getAlgorithmBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, algorithm_);
      }
      if (return_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, return_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest) obj;

      if (getClientuuid()
          != other.getClientuuid()) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getAlgorithm()
          .equals(other.getAlgorithm())) return false;
      if (getReturn()
          != other.getReturn()) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLIENTUUID_FIELD_NUMBER;
      hash = (53 * hash) + getClientuuid();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + ALGORITHM_FIELD_NUMBER;
      hash = (53 * hash) + getAlgorithm().hashCode();
      hash = (37 * hash) + RETURN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReturn());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest 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;
    }
    /**
     * Protobuf type {@code nn.EvaluateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.EvaluateRequest)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        clientuuid_ = 0;

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        algorithm_ = "";

        return_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateRequest_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest(this);
        result.clientuuid_ = clientuuid_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.algorithm_ = algorithm_;
        result.return_ = return_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest.getDefaultInstance()) return this;
        if (other.getClientuuid() != 0) {
          setClientuuid(other.getClientuuid());
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (!other.getAlgorithm().isEmpty()) {
          algorithm_ = other.algorithm_;
          onChanged();
        }
        if (other.getReturn() != false) {
          setReturn(other.getReturn());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int clientuuid_ ;
      /**
       * <code>int32 clientuuid = 1;</code>
       * @return The clientuuid.
       */
      @java.lang.Override
      public int getClientuuid() {
        return clientuuid_;
      }
      /**
       * <code>int32 clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(int value) {
        
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = 0;
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> dataBuilder_;
      /**
       * <code>.TensorMap data = 2;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       * @return The data.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder mergeData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private java.lang.Object algorithm_ = "";
      /**
       * <code>string algorithm = 3;</code>
       * @return The algorithm.
       */
      public java.lang.String getAlgorithm() {
        java.lang.Object ref = algorithm_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          algorithm_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string algorithm = 3;</code>
       * @return The bytes for algorithm.
       */
      public com.google.protobuf.ByteString
          getAlgorithmBytes() {
        java.lang.Object ref = algorithm_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          algorithm_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string algorithm = 3;</code>
       * @param value The algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithm(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        algorithm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string algorithm = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlgorithm() {
        
        algorithm_ = getDefaultInstance().getAlgorithm();
        onChanged();
        return this;
      }
      /**
       * <code>string algorithm = 3;</code>
       * @param value The bytes for algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithmBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        algorithm_ = value;
        onChanged();
        return this;
      }

      private boolean return_ ;
      /**
       * <code>bool return = 4;</code>
       * @return The return.
       */
      @java.lang.Override
      public boolean getReturn() {
        return return_;
      }
      /**
       * <code>bool return = 4;</code>
       * @param value The return to set.
       * @return This builder for chaining.
       */
      public Builder setReturn(boolean value) {
        
        return_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool return = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReturn() {
        
        return_ = false;
        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:nn.EvaluateRequest)
    }

    // @@protoc_insertion_point(class_scope:nn.EvaluateRequest)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EvaluateRequest>
        PARSER = new com.google.protobuf.AbstractParser<EvaluateRequest>() {
      @java.lang.Override
      public EvaluateRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EvaluateRequest(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EvaluateResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.EvaluateResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string response = 1;</code>
     * @return The response.
     */
    java.lang.String getResponse();
    /**
     * <code>string response = 1;</code>
     * @return The bytes for response.
     */
    com.google.protobuf.ByteString
        getResponseBytes();

    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData();
    /**
     * <code>.TensorMap data = 2;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder();

    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    int getCode();

    /**
     * <code>string message = 4;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <code>string message = 4;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * Protobuf type {@code nn.EvaluateResponse}
   */
  public static final class EvaluateResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.EvaluateResponse)
      EvaluateResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EvaluateResponse.newBuilder() to construct.
    private EvaluateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EvaluateResponse() {
      response_ = "";
      message_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EvaluateResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              response_ = s;
              break;
            }
            case 18: {
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              code_ = input.readInt32();
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              message_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.Builder.class);
    }

    public static final int RESPONSE_FIELD_NUMBER = 1;
    private volatile java.lang.Object response_;
    /**
     * <code>string response = 1;</code>
     * @return The response.
     */
    @java.lang.Override
    public java.lang.String getResponse() {
      java.lang.Object ref = response_;
      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();
        response_ = s;
        return s;
      }
    }
    /**
     * <code>string response = 1;</code>
     * @return The bytes for response.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResponseBytes() {
      java.lang.Object ref = response_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        response_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
      return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int CODE_FIELD_NUMBER = 3;
    private int code_;
    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    @java.lang.Override
    public int getCode() {
      return code_;
    }

    public static final int MESSAGE_FIELD_NUMBER = 4;
    private volatile java.lang.Object message_;
    /**
     * <code>string message = 4;</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      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();
        message_ = s;
        return s;
      }
    }
    /**
     * <code>string message = 4;</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = 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 (!getResponseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, response_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (code_ != 0) {
        output.writeInt32(3, code_);
      }
      if (!getMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, message_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getResponseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, response_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, code_);
      }
      if (!getMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, message_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse) obj;

      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (getCode()
          != other.getCode()) return false;
      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + getResponse().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse 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;
    }
    /**
     * Protobuf type {@code nn.EvaluateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.EvaluateResponse)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        response_ = "";

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        code_ = 0;

        message_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_EvaluateResponse_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse(this);
        result.response_ = response_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.code_ = code_;
        result.message_ = message_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse.getDefaultInstance()) return this;
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object response_ = "";
      /**
       * <code>string response = 1;</code>
       * @return The response.
       */
      public java.lang.String getResponse() {
        java.lang.Object ref = response_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        java.lang.Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          response_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @param value The response to set.
       * @return This builder for chaining.
       */
      public Builder setResponse(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string response = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponse() {
        
        response_ = getDefaultInstance().getResponse();
        onChanged();
        return this;
      }
      /**
       * <code>string response = 1;</code>
       * @param value The bytes for response to set.
       * @return This builder for chaining.
       */
      public Builder setResponseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        response_ = value;
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> dataBuilder_;
      /**
       * <code>.TensorMap data = 2;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       * @return The data.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder mergeData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private int code_ ;
      /**
       * <code>int32 code = 3;</code>
       * @return The code.
       */
      @java.lang.Override
      public int getCode() {
        return code_;
      }
      /**
       * <code>int32 code = 3;</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(int value) {
        
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 code = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        
        code_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <code>string message = 4;</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string message = 4;</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string message = 4;</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string message = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * <code>string message = 4;</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        message_ = value;
        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:nn.EvaluateResponse)
    }

    // @@protoc_insertion_point(class_scope:nn.EvaluateResponse)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EvaluateResponse>
        PARSER = new com.google.protobuf.AbstractParser<EvaluateResponse>() {
      @java.lang.Override
      public EvaluateResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EvaluateResponse(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.EvaluateResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PredictRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.PredictRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 clientuuid = 1;</code>
     * @return The clientuuid.
     */
    int getClientuuid();

    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData();
    /**
     * <code>.TensorMap data = 2;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder();

    /**
     * <code>string algorithm = 3;</code>
     * @return The algorithm.
     */
    java.lang.String getAlgorithm();
    /**
     * <code>string algorithm = 3;</code>
     * @return The bytes for algorithm.
     */
    com.google.protobuf.ByteString
        getAlgorithmBytes();
  }
  /**
   * Protobuf type {@code nn.PredictRequest}
   */
  public static final class PredictRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.PredictRequest)
      PredictRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PredictRequest.newBuilder() to construct.
    private PredictRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PredictRequest() {
      algorithm_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PredictRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              clientuuid_ = input.readInt32();
              break;
            }
            case 18: {
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              algorithm_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private int clientuuid_;
    /**
     * <code>int32 clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @java.lang.Override
    public int getClientuuid() {
      return clientuuid_;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
      return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int ALGORITHM_FIELD_NUMBER = 3;
    private volatile java.lang.Object algorithm_;
    /**
     * <code>string algorithm = 3;</code>
     * @return The algorithm.
     */
    @java.lang.Override
    public java.lang.String getAlgorithm() {
      java.lang.Object ref = algorithm_;
      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();
        algorithm_ = s;
        return s;
      }
    }
    /**
     * <code>string algorithm = 3;</code>
     * @return The bytes for algorithm.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAlgorithmBytes() {
      java.lang.Object ref = algorithm_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        algorithm_ = 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 (clientuuid_ != 0) {
        output.writeInt32(1, clientuuid_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (!getAlgorithmBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, algorithm_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clientuuid_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, clientuuid_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (!getAlgorithmBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, algorithm_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest) obj;

      if (getClientuuid()
          != other.getClientuuid()) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getAlgorithm()
          .equals(other.getAlgorithm())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLIENTUUID_FIELD_NUMBER;
      hash = (53 * hash) + getClientuuid();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + ALGORITHM_FIELD_NUMBER;
      hash = (53 * hash) + getAlgorithm().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest 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;
    }
    /**
     * Protobuf type {@code nn.PredictRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.PredictRequest)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        clientuuid_ = 0;

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        algorithm_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictRequest_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest(this);
        result.clientuuid_ = clientuuid_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.algorithm_ = algorithm_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest.getDefaultInstance()) return this;
        if (other.getClientuuid() != 0) {
          setClientuuid(other.getClientuuid());
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (!other.getAlgorithm().isEmpty()) {
          algorithm_ = other.algorithm_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int clientuuid_ ;
      /**
       * <code>int32 clientuuid = 1;</code>
       * @return The clientuuid.
       */
      @java.lang.Override
      public int getClientuuid() {
        return clientuuid_;
      }
      /**
       * <code>int32 clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(int value) {
        
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = 0;
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> dataBuilder_;
      /**
       * <code>.TensorMap data = 2;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       * @return The data.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder mergeData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private java.lang.Object algorithm_ = "";
      /**
       * <code>string algorithm = 3;</code>
       * @return The algorithm.
       */
      public java.lang.String getAlgorithm() {
        java.lang.Object ref = algorithm_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          algorithm_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string algorithm = 3;</code>
       * @return The bytes for algorithm.
       */
      public com.google.protobuf.ByteString
          getAlgorithmBytes() {
        java.lang.Object ref = algorithm_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          algorithm_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string algorithm = 3;</code>
       * @param value The algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithm(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        algorithm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string algorithm = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlgorithm() {
        
        algorithm_ = getDefaultInstance().getAlgorithm();
        onChanged();
        return this;
      }
      /**
       * <code>string algorithm = 3;</code>
       * @param value The bytes for algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithmBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        algorithm_ = value;
        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:nn.PredictRequest)
    }

    // @@protoc_insertion_point(class_scope:nn.PredictRequest)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PredictRequest>
        PARSER = new com.google.protobuf.AbstractParser<PredictRequest>() {
      @java.lang.Override
      public PredictRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PredictRequest(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PredictResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.PredictResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string response = 1;</code>
     * @return The response.
     */
    java.lang.String getResponse();
    /**
     * <code>string response = 1;</code>
     * @return The bytes for response.
     */
    com.google.protobuf.ByteString
        getResponseBytes();

    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData();
    /**
     * <code>.TensorMap data = 2;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder();

    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    int getCode();
  }
  /**
   * Protobuf type {@code nn.PredictResponse}
   */
  public static final class PredictResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.PredictResponse)
      PredictResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PredictResponse.newBuilder() to construct.
    private PredictResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PredictResponse() {
      response_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PredictResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              response_ = s;
              break;
            }
            case 18: {
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              code_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.Builder.class);
    }

    public static final int RESPONSE_FIELD_NUMBER = 1;
    private volatile java.lang.Object response_;
    /**
     * <code>string response = 1;</code>
     * @return The response.
     */
    @java.lang.Override
    public java.lang.String getResponse() {
      java.lang.Object ref = response_;
      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();
        response_ = s;
        return s;
      }
    }
    /**
     * <code>string response = 1;</code>
     * @return The bytes for response.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResponseBytes() {
      java.lang.Object ref = response_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        response_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
    /**
     * <code>.TensorMap data = 2;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
      return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
    }
    /**
     * <code>.TensorMap data = 2;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int CODE_FIELD_NUMBER = 3;
    private int code_;
    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    @java.lang.Override
    public int getCode() {
      return code_;
    }

    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 (!getResponseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, response_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (code_ != 0) {
        output.writeInt32(3, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getResponseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, response_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, code_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse) obj;

      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + getResponse().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse 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;
    }
    /**
     * Protobuf type {@code nn.PredictResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.PredictResponse)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        response_ = "";

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        code_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_PredictResponse_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse(this);
        result.response_ = response_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.code_ = code_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse.getDefaultInstance()) return this;
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object response_ = "";
      /**
       * <code>string response = 1;</code>
       * @return The response.
       */
      public java.lang.String getResponse() {
        java.lang.Object ref = response_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        java.lang.Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          response_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @param value The response to set.
       * @return This builder for chaining.
       */
      public Builder setResponse(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string response = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponse() {
        
        response_ = getDefaultInstance().getResponse();
        onChanged();
        return this;
      }
      /**
       * <code>string response = 1;</code>
       * @param value The bytes for response to set.
       * @return This builder for chaining.
       */
      public Builder setResponseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        response_ = value;
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> dataBuilder_;
      /**
       * <code>.TensorMap data = 2;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       * @return The data.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder setData(
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder mergeData(com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.TensorMap data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMap.Builder, com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.TensorMapOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private int code_ ;
      /**
       * <code>int32 code = 3;</code>
       * @return The code.
       */
      @java.lang.Override
      public int getCode() {
        return code_;
      }
      /**
       * <code>int32 code = 3;</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(int value) {
        
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 code = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        
        code_ = 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:nn.PredictResponse)
    }

    // @@protoc_insertion_point(class_scope:nn.PredictResponse)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PredictResponse>
        PARSER = new com.google.protobuf.AbstractParser<PredictResponse>() {
      @java.lang.Override
      public PredictResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PredictResponse(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.PredictResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadMetaRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.UploadMetaRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 client_uuid = 1;</code>
     * @return The clientUuid.
     */
    int getClientUuid();

    /**
     * <code>bytes loss_fn = 2;</code>
     * @return The lossFn.
     */
    com.google.protobuf.ByteString getLossFn();

    /**
     * <code>.nn.ClassAndArgs optimizer = 3;</code>
     * @return Whether the optimizer field is set.
     */
    boolean hasOptimizer();
    /**
     * <code>.nn.ClassAndArgs optimizer = 3;</code>
     * @return The optimizer.
     */
    com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs getOptimizer();
    /**
     * <code>.nn.ClassAndArgs optimizer = 3;</code>
     */
    com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder getOptimizerOrBuilder();

    /**
     * <code>string aggregator = 4;</code>
     * @return The aggregator.
     */
    java.lang.String getAggregator();
    /**
     * <code>string aggregator = 4;</code>
     * @return The bytes for aggregator.
     */
    com.google.protobuf.ByteString
        getAggregatorBytes();
  }
  /**
   * Protobuf type {@code nn.UploadMetaRequest}
   */
  public static final class UploadMetaRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.UploadMetaRequest)
      UploadMetaRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadMetaRequest.newBuilder() to construct.
    private UploadMetaRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadMetaRequest() {
      lossFn_ = com.google.protobuf.ByteString.EMPTY;
      aggregator_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadMetaRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              clientUuid_ = input.readInt32();
              break;
            }
            case 18: {

              lossFn_ = input.readBytes();
              break;
            }
            case 26: {
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder subBuilder = null;
              if (optimizer_ != null) {
                subBuilder = optimizer_.toBuilder();
              }
              optimizer_ = input.readMessage(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(optimizer_);
                optimizer_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              aggregator_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.Builder.class);
    }

    public static final int CLIENT_UUID_FIELD_NUMBER = 1;
    private int clientUuid_;
    /**
     * <code>int32 client_uuid = 1;</code>
     * @return The clientUuid.
     */
    @java.lang.Override
    public int getClientUuid() {
      return clientUuid_;
    }

    public static final int LOSS_FN_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString lossFn_;
    /**
     * <code>bytes loss_fn = 2;</code>
     * @return The lossFn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getLossFn() {
      return lossFn_;
    }

    public static final int OPTIMIZER_FIELD_NUMBER = 3;
    private com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs optimizer_;
    /**
     * <code>.nn.ClassAndArgs optimizer = 3;</code>
     * @return Whether the optimizer field is set.
     */
    @java.lang.Override
    public boolean hasOptimizer() {
      return optimizer_ != null;
    }
    /**
     * <code>.nn.ClassAndArgs optimizer = 3;</code>
     * @return The optimizer.
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs getOptimizer() {
      return optimizer_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.getDefaultInstance() : optimizer_;
    }
    /**
     * <code>.nn.ClassAndArgs optimizer = 3;</code>
     */
    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder getOptimizerOrBuilder() {
      return getOptimizer();
    }

    public static final int AGGREGATOR_FIELD_NUMBER = 4;
    private volatile java.lang.Object aggregator_;
    /**
     * <code>string aggregator = 4;</code>
     * @return The aggregator.
     */
    @java.lang.Override
    public java.lang.String getAggregator() {
      java.lang.Object ref = aggregator_;
      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();
        aggregator_ = s;
        return s;
      }
    }
    /**
     * <code>string aggregator = 4;</code>
     * @return The bytes for aggregator.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAggregatorBytes() {
      java.lang.Object ref = aggregator_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        aggregator_ = 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 (clientUuid_ != 0) {
        output.writeInt32(1, clientUuid_);
      }
      if (!lossFn_.isEmpty()) {
        output.writeBytes(2, lossFn_);
      }
      if (optimizer_ != null) {
        output.writeMessage(3, getOptimizer());
      }
      if (!getAggregatorBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, aggregator_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clientUuid_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, clientUuid_);
      }
      if (!lossFn_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, lossFn_);
      }
      if (optimizer_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptimizer());
      }
      if (!getAggregatorBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, aggregator_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest) obj;

      if (getClientUuid()
          != other.getClientUuid()) return false;
      if (!getLossFn()
          .equals(other.getLossFn())) return false;
      if (hasOptimizer() != other.hasOptimizer()) return false;
      if (hasOptimizer()) {
        if (!getOptimizer()
            .equals(other.getOptimizer())) return false;
      }
      if (!getAggregator()
          .equals(other.getAggregator())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLIENT_UUID_FIELD_NUMBER;
      hash = (53 * hash) + getClientUuid();
      hash = (37 * hash) + LOSS_FN_FIELD_NUMBER;
      hash = (53 * hash) + getLossFn().hashCode();
      if (hasOptimizer()) {
        hash = (37 * hash) + OPTIMIZER_FIELD_NUMBER;
        hash = (53 * hash) + getOptimizer().hashCode();
      }
      hash = (37 * hash) + AGGREGATOR_FIELD_NUMBER;
      hash = (53 * hash) + getAggregator().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest 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;
    }
    /**
     * Protobuf type {@code nn.UploadMetaRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.UploadMetaRequest)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        clientUuid_ = 0;

        lossFn_ = com.google.protobuf.ByteString.EMPTY;

        if (optimizerBuilder_ == null) {
          optimizer_ = null;
        } else {
          optimizer_ = null;
          optimizerBuilder_ = null;
        }
        aggregator_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaRequest_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest(this);
        result.clientUuid_ = clientUuid_;
        result.lossFn_ = lossFn_;
        if (optimizerBuilder_ == null) {
          result.optimizer_ = optimizer_;
        } else {
          result.optimizer_ = optimizerBuilder_.build();
        }
        result.aggregator_ = aggregator_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest.getDefaultInstance()) return this;
        if (other.getClientUuid() != 0) {
          setClientUuid(other.getClientUuid());
        }
        if (other.getLossFn() != com.google.protobuf.ByteString.EMPTY) {
          setLossFn(other.getLossFn());
        }
        if (other.hasOptimizer()) {
          mergeOptimizer(other.getOptimizer());
        }
        if (!other.getAggregator().isEmpty()) {
          aggregator_ = other.aggregator_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int clientUuid_ ;
      /**
       * <code>int32 client_uuid = 1;</code>
       * @return The clientUuid.
       */
      @java.lang.Override
      public int getClientUuid() {
        return clientUuid_;
      }
      /**
       * <code>int32 client_uuid = 1;</code>
       * @param value The clientUuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientUuid(int value) {
        
        clientUuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 client_uuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientUuid() {
        
        clientUuid_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString lossFn_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes loss_fn = 2;</code>
       * @return The lossFn.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getLossFn() {
        return lossFn_;
      }
      /**
       * <code>bytes loss_fn = 2;</code>
       * @param value The lossFn to set.
       * @return This builder for chaining.
       */
      public Builder setLossFn(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lossFn_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes loss_fn = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLossFn() {
        
        lossFn_ = getDefaultInstance().getLossFn();
        onChanged();
        return this;
      }

      private com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs optimizer_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder> optimizerBuilder_;
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       * @return Whether the optimizer field is set.
       */
      public boolean hasOptimizer() {
        return optimizerBuilder_ != null || optimizer_ != null;
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       * @return The optimizer.
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs getOptimizer() {
        if (optimizerBuilder_ == null) {
          return optimizer_ == null ? com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.getDefaultInstance() : optimizer_;
        } else {
          return optimizerBuilder_.getMessage();
        }
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      public Builder setOptimizer(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs value) {
        if (optimizerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          optimizer_ = value;
          onChanged();
        } else {
          optimizerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      public Builder setOptimizer(
          com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder builderForValue) {
        if (optimizerBuilder_ == null) {
          optimizer_ = builderForValue.build();
          onChanged();
        } else {
          optimizerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      public Builder mergeOptimizer(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs value) {
        if (optimizerBuilder_ == null) {
          if (optimizer_ != null) {
            optimizer_ =
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.newBuilder(optimizer_).mergeFrom(value).buildPartial();
          } else {
            optimizer_ = value;
          }
          onChanged();
        } else {
          optimizerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      public Builder clearOptimizer() {
        if (optimizerBuilder_ == null) {
          optimizer_ = null;
          onChanged();
        } else {
          optimizer_ = null;
          optimizerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder getOptimizerBuilder() {
        
        onChanged();
        return getOptimizerFieldBuilder().getBuilder();
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder getOptimizerOrBuilder() {
        if (optimizerBuilder_ != null) {
          return optimizerBuilder_.getMessageOrBuilder();
        } else {
          return optimizer_ == null ?
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.getDefaultInstance() : optimizer_;
        }
      }
      /**
       * <code>.nn.ClassAndArgs optimizer = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder> 
          getOptimizerFieldBuilder() {
        if (optimizerBuilder_ == null) {
          optimizerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder>(
                  getOptimizer(),
                  getParentForChildren(),
                  isClean());
          optimizer_ = null;
        }
        return optimizerBuilder_;
      }

      private java.lang.Object aggregator_ = "";
      /**
       * <code>string aggregator = 4;</code>
       * @return The aggregator.
       */
      public java.lang.String getAggregator() {
        java.lang.Object ref = aggregator_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          aggregator_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string aggregator = 4;</code>
       * @return The bytes for aggregator.
       */
      public com.google.protobuf.ByteString
          getAggregatorBytes() {
        java.lang.Object ref = aggregator_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          aggregator_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string aggregator = 4;</code>
       * @param value The aggregator to set.
       * @return This builder for chaining.
       */
      public Builder setAggregator(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        aggregator_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string aggregator = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAggregator() {
        
        aggregator_ = getDefaultInstance().getAggregator();
        onChanged();
        return this;
      }
      /**
       * <code>string aggregator = 4;</code>
       * @param value The bytes for aggregator to set.
       * @return This builder for chaining.
       */
      public Builder setAggregatorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        aggregator_ = value;
        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:nn.UploadMetaRequest)
    }

    // @@protoc_insertion_point(class_scope:nn.UploadMetaRequest)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UploadMetaRequest>
        PARSER = new com.google.protobuf.AbstractParser<UploadMetaRequest>() {
      @java.lang.Override
      public UploadMetaRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UploadMetaRequest(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ByteChunkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.ByteChunk)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bytes buffer = 1;</code>
     * @return The buffer.
     */
    com.google.protobuf.ByteString getBuffer();
  }
  /**
   * Protobuf type {@code nn.ByteChunk}
   */
  public static final class ByteChunk extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.ByteChunk)
      ByteChunkOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ByteChunk.newBuilder() to construct.
    private ByteChunk(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ByteChunk() {
      buffer_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ByteChunk(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {

              buffer_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ByteChunk_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ByteChunk_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.Builder.class);
    }

    public static final int BUFFER_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString buffer_;
    /**
     * <code>bytes buffer = 1;</code>
     * @return The buffer.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBuffer() {
      return buffer_;
    }

    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 (!buffer_.isEmpty()) {
        output.writeBytes(1, buffer_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!buffer_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, buffer_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk) obj;

      if (!getBuffer()
          .equals(other.getBuffer())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + BUFFER_FIELD_NUMBER;
      hash = (53 * hash) + getBuffer().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk 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;
    }
    /**
     * Protobuf type {@code nn.ByteChunk}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.ByteChunk)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunkOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ByteChunk_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ByteChunk_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        buffer_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ByteChunk_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk(this);
        result.buffer_ = buffer_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk.getDefaultInstance()) return this;
        if (other.getBuffer() != com.google.protobuf.ByteString.EMPTY) {
          setBuffer(other.getBuffer());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.protobuf.ByteString buffer_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes buffer = 1;</code>
       * @return The buffer.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getBuffer() {
        return buffer_;
      }
      /**
       * <code>bytes buffer = 1;</code>
       * @param value The buffer to set.
       * @return This builder for chaining.
       */
      public Builder setBuffer(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        buffer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes buffer = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBuffer() {
        
        buffer_ = getDefaultInstance().getBuffer();
        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:nn.ByteChunk)
    }

    // @@protoc_insertion_point(class_scope:nn.ByteChunk)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ByteChunk>
        PARSER = new com.google.protobuf.AbstractParser<ByteChunk>() {
      @java.lang.Override
      public ByteChunk parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ByteChunk(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ByteChunk getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClassAndArgsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.ClassAndArgs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bytes cls = 1;</code>
     * @return The cls.
     */
    com.google.protobuf.ByteString getCls();

    /**
     * <code>bytes args = 2;</code>
     * @return The args.
     */
    com.google.protobuf.ByteString getArgs();
  }
  /**
   * Protobuf type {@code nn.ClassAndArgs}
   */
  public static final class ClassAndArgs extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.ClassAndArgs)
      ClassAndArgsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClassAndArgs.newBuilder() to construct.
    private ClassAndArgs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClassAndArgs() {
      cls_ = com.google.protobuf.ByteString.EMPTY;
      args_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClassAndArgs(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {

              cls_ = input.readBytes();
              break;
            }
            case 18: {

              args_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ClassAndArgs_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ClassAndArgs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder.class);
    }

    public static final int CLS_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString cls_;
    /**
     * <code>bytes cls = 1;</code>
     * @return The cls.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getCls() {
      return cls_;
    }

    public static final int ARGS_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString args_;
    /**
     * <code>bytes args = 2;</code>
     * @return The args.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getArgs() {
      return args_;
    }

    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 (!cls_.isEmpty()) {
        output.writeBytes(1, cls_);
      }
      if (!args_.isEmpty()) {
        output.writeBytes(2, args_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!cls_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, cls_);
      }
      if (!args_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, args_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs) obj;

      if (!getCls()
          .equals(other.getCls())) return false;
      if (!getArgs()
          .equals(other.getArgs())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLS_FIELD_NUMBER;
      hash = (53 * hash) + getCls().hashCode();
      hash = (37 * hash) + ARGS_FIELD_NUMBER;
      hash = (53 * hash) + getArgs().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs 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;
    }
    /**
     * Protobuf type {@code nn.ClassAndArgs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.ClassAndArgs)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ClassAndArgs_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ClassAndArgs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        cls_ = com.google.protobuf.ByteString.EMPTY;

        args_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_ClassAndArgs_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs(this);
        result.cls_ = cls_;
        result.args_ = args_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs.getDefaultInstance()) return this;
        if (other.getCls() != com.google.protobuf.ByteString.EMPTY) {
          setCls(other.getCls());
        }
        if (other.getArgs() != com.google.protobuf.ByteString.EMPTY) {
          setArgs(other.getArgs());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.protobuf.ByteString cls_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes cls = 1;</code>
       * @return The cls.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getCls() {
        return cls_;
      }
      /**
       * <code>bytes cls = 1;</code>
       * @param value The cls to set.
       * @return This builder for chaining.
       */
      public Builder setCls(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cls_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes cls = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCls() {
        
        cls_ = getDefaultInstance().getCls();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString args_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes args = 2;</code>
       * @return The args.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getArgs() {
        return args_;
      }
      /**
       * <code>bytes args = 2;</code>
       * @param value The args to set.
       * @return This builder for chaining.
       */
      public Builder setArgs(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        args_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes args = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgs() {
        
        args_ = getDefaultInstance().getArgs();
        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:nn.ClassAndArgs)
    }

    // @@protoc_insertion_point(class_scope:nn.ClassAndArgs)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ClassAndArgs>
        PARSER = new com.google.protobuf.AbstractParser<ClassAndArgs>() {
      @java.lang.Override
      public ClassAndArgs parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ClassAndArgs(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.ClassAndArgs getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadMetaResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.UploadMetaResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string message = 1;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <code>string message = 1;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <code>int32 code = 2;</code>
     * @return The code.
     */
    int getCode();
  }
  /**
   * Protobuf type {@code nn.UploadMetaResponse}
   */
  public static final class UploadMetaResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.UploadMetaResponse)
      UploadMetaResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadMetaResponse.newBuilder() to construct.
    private UploadMetaResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadMetaResponse() {
      message_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadMetaResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              message_ = s;
              break;
            }
            case 16: {

              code_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.Builder.class);
    }

    public static final int MESSAGE_FIELD_NUMBER = 1;
    private volatile java.lang.Object message_;
    /**
     * <code>string message = 1;</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      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();
        message_ = s;
        return s;
      }
    }
    /**
     * <code>string message = 1;</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CODE_FIELD_NUMBER = 2;
    private int code_;
    /**
     * <code>int32 code = 2;</code>
     * @return The code.
     */
    @java.lang.Override
    public int getCode() {
      return code_;
    }

    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 (!getMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
      }
      if (code_ != 0) {
        output.writeInt32(2, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, code_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse) obj;

      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse 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;
    }
    /**
     * Protobuf type {@code nn.UploadMetaResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.UploadMetaResponse)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        message_ = "";

        code_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_UploadMetaResponse_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse(this);
        result.message_ = message_;
        result.code_ = code_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse.getDefaultInstance()) return this;
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <code>string message = 1;</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string message = 1;</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string message = 1;</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string message = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * <code>string message = 1;</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        message_ = value;
        onChanged();
        return this;
      }

      private int code_ ;
      /**
       * <code>int32 code = 2;</code>
       * @return The code.
       */
      @java.lang.Override
      public int getCode() {
        return code_;
      }
      /**
       * <code>int32 code = 2;</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(int value) {
        
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 code = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        
        code_ = 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:nn.UploadMetaResponse)
    }

    // @@protoc_insertion_point(class_scope:nn.UploadMetaResponse)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UploadMetaResponse>
        PARSER = new com.google.protobuf.AbstractParser<UploadMetaResponse>() {
      @java.lang.Override
      public UploadMetaResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UploadMetaResponse(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.UploadMetaResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadModelRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.LoadModelRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 client_id = 1;</code>
     * @return The clientId.
     */
    int getClientId();

    /**
     * <code>string backend = 2;</code>
     * @return The backend.
     */
    java.lang.String getBackend();
    /**
     * <code>string backend = 2;</code>
     * @return The bytes for backend.
     */
    com.google.protobuf.ByteString
        getBackendBytes();

    /**
     * <code>string model_path = 3;</code>
     * @return The modelPath.
     */
    java.lang.String getModelPath();
    /**
     * <code>string model_path = 3;</code>
     * @return The bytes for modelPath.
     */
    com.google.protobuf.ByteString
        getModelPathBytes();
  }
  /**
   * Protobuf type {@code nn.LoadModelRequest}
   */
  public static final class LoadModelRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.LoadModelRequest)
      LoadModelRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LoadModelRequest.newBuilder() to construct.
    private LoadModelRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadModelRequest() {
      backend_ = "";
      modelPath_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LoadModelRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              clientId_ = input.readInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              backend_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              modelPath_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.Builder.class);
    }

    public static final int CLIENT_ID_FIELD_NUMBER = 1;
    private int clientId_;
    /**
     * <code>int32 client_id = 1;</code>
     * @return The clientId.
     */
    @java.lang.Override
    public int getClientId() {
      return clientId_;
    }

    public static final int BACKEND_FIELD_NUMBER = 2;
    private volatile java.lang.Object backend_;
    /**
     * <code>string backend = 2;</code>
     * @return The backend.
     */
    @java.lang.Override
    public java.lang.String getBackend() {
      java.lang.Object ref = backend_;
      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();
        backend_ = s;
        return s;
      }
    }
    /**
     * <code>string backend = 2;</code>
     * @return The bytes for backend.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBackendBytes() {
      java.lang.Object ref = backend_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        backend_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_PATH_FIELD_NUMBER = 3;
    private volatile java.lang.Object modelPath_;
    /**
     * <code>string model_path = 3;</code>
     * @return The modelPath.
     */
    @java.lang.Override
    public java.lang.String getModelPath() {
      java.lang.Object ref = modelPath_;
      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();
        modelPath_ = s;
        return s;
      }
    }
    /**
     * <code>string model_path = 3;</code>
     * @return The bytes for modelPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getModelPathBytes() {
      java.lang.Object ref = modelPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelPath_ = 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 (clientId_ != 0) {
        output.writeInt32(1, clientId_);
      }
      if (!getBackendBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, backend_);
      }
      if (!getModelPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, modelPath_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clientId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, clientId_);
      }
      if (!getBackendBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, backend_);
      }
      if (!getModelPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, modelPath_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest) obj;

      if (getClientId()
          != other.getClientId()) return false;
      if (!getBackend()
          .equals(other.getBackend())) return false;
      if (!getModelPath()
          .equals(other.getModelPath())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLIENT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getClientId();
      hash = (37 * hash) + BACKEND_FIELD_NUMBER;
      hash = (53 * hash) + getBackend().hashCode();
      hash = (37 * hash) + MODEL_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getModelPath().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest 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;
    }
    /**
     * Protobuf type {@code nn.LoadModelRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.LoadModelRequest)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        clientId_ = 0;

        backend_ = "";

        modelPath_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelRequest_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest(this);
        result.clientId_ = clientId_;
        result.backend_ = backend_;
        result.modelPath_ = modelPath_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest.getDefaultInstance()) return this;
        if (other.getClientId() != 0) {
          setClientId(other.getClientId());
        }
        if (!other.getBackend().isEmpty()) {
          backend_ = other.backend_;
          onChanged();
        }
        if (!other.getModelPath().isEmpty()) {
          modelPath_ = other.modelPath_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int clientId_ ;
      /**
       * <code>int32 client_id = 1;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public int getClientId() {
        return clientId_;
      }
      /**
       * <code>int32 client_id = 1;</code>
       * @param value The clientId to set.
       * @return This builder for chaining.
       */
      public Builder setClientId(int value) {
        
        clientId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 client_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientId() {
        
        clientId_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object backend_ = "";
      /**
       * <code>string backend = 2;</code>
       * @return The backend.
       */
      public java.lang.String getBackend() {
        java.lang.Object ref = backend_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          backend_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string backend = 2;</code>
       * @return The bytes for backend.
       */
      public com.google.protobuf.ByteString
          getBackendBytes() {
        java.lang.Object ref = backend_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          backend_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string backend = 2;</code>
       * @param value The backend to set.
       * @return This builder for chaining.
       */
      public Builder setBackend(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        backend_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string backend = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBackend() {
        
        backend_ = getDefaultInstance().getBackend();
        onChanged();
        return this;
      }
      /**
       * <code>string backend = 2;</code>
       * @param value The bytes for backend to set.
       * @return This builder for chaining.
       */
      public Builder setBackendBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        backend_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object modelPath_ = "";
      /**
       * <code>string model_path = 3;</code>
       * @return The modelPath.
       */
      public java.lang.String getModelPath() {
        java.lang.Object ref = modelPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string model_path = 3;</code>
       * @return The bytes for modelPath.
       */
      public com.google.protobuf.ByteString
          getModelPathBytes() {
        java.lang.Object ref = modelPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string model_path = 3;</code>
       * @param value The modelPath to set.
       * @return This builder for chaining.
       */
      public Builder setModelPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string model_path = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearModelPath() {
        
        modelPath_ = getDefaultInstance().getModelPath();
        onChanged();
        return this;
      }
      /**
       * <code>string model_path = 3;</code>
       * @param value The bytes for modelPath to set.
       * @return This builder for chaining.
       */
      public Builder setModelPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelPath_ = value;
        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:nn.LoadModelRequest)
    }

    // @@protoc_insertion_point(class_scope:nn.LoadModelRequest)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LoadModelRequest>
        PARSER = new com.google.protobuf.AbstractParser<LoadModelRequest>() {
      @java.lang.Override
      public LoadModelRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LoadModelRequest(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadModelResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.LoadModelResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string message = 1;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <code>string message = 1;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <code>int32 code = 2;</code>
     * @return The code.
     */
    int getCode();
  }
  /**
   * Protobuf type {@code nn.LoadModelResponse}
   */
  public static final class LoadModelResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.LoadModelResponse)
      LoadModelResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LoadModelResponse.newBuilder() to construct.
    private LoadModelResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadModelResponse() {
      message_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LoadModelResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              message_ = s;
              break;
            }
            case 16: {

              code_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.Builder.class);
    }

    public static final int MESSAGE_FIELD_NUMBER = 1;
    private volatile java.lang.Object message_;
    /**
     * <code>string message = 1;</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      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();
        message_ = s;
        return s;
      }
    }
    /**
     * <code>string message = 1;</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CODE_FIELD_NUMBER = 2;
    private int code_;
    /**
     * <code>int32 code = 2;</code>
     * @return The code.
     */
    @java.lang.Override
    public int getCode() {
      return code_;
    }

    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 (!getMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
      }
      if (code_ != 0) {
        output.writeInt32(2, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, code_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse) obj;

      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse 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;
    }
    /**
     * Protobuf type {@code nn.LoadModelResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.LoadModelResponse)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        message_ = "";

        code_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_LoadModelResponse_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse(this);
        result.message_ = message_;
        result.code_ = code_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse.getDefaultInstance()) return this;
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <code>string message = 1;</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string message = 1;</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string message = 1;</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string message = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * <code>string message = 1;</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        message_ = value;
        onChanged();
        return this;
      }

      private int code_ ;
      /**
       * <code>int32 code = 2;</code>
       * @return The code.
       */
      @java.lang.Override
      public int getCode() {
        return code_;
      }
      /**
       * <code>int32 code = 2;</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(int value) {
        
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 code = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        
        code_ = 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:nn.LoadModelResponse)
    }

    // @@protoc_insertion_point(class_scope:nn.LoadModelResponse)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LoadModelResponse>
        PARSER = new com.google.protobuf.AbstractParser<LoadModelResponse>() {
      @java.lang.Override
      public LoadModelResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LoadModelResponse(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.LoadModelResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaveModelRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.SaveModelRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 client_id = 1;</code>
     * @return The clientId.
     */
    int getClientId();

    /**
     * <code>string backend = 2;</code>
     * @return The backend.
     */
    java.lang.String getBackend();
    /**
     * <code>string backend = 2;</code>
     * @return The bytes for backend.
     */
    com.google.protobuf.ByteString
        getBackendBytes();

    /**
     * <code>string model_path = 3;</code>
     * @return The modelPath.
     */
    java.lang.String getModelPath();
    /**
     * <code>string model_path = 3;</code>
     * @return The bytes for modelPath.
     */
    com.google.protobuf.ByteString
        getModelPathBytes();
  }
  /**
   * Protobuf type {@code nn.SaveModelRequest}
   */
  public static final class SaveModelRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.SaveModelRequest)
      SaveModelRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaveModelRequest.newBuilder() to construct.
    private SaveModelRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaveModelRequest() {
      backend_ = "";
      modelPath_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SaveModelRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              clientId_ = input.readInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              backend_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              modelPath_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.Builder.class);
    }

    public static final int CLIENT_ID_FIELD_NUMBER = 1;
    private int clientId_;
    /**
     * <code>int32 client_id = 1;</code>
     * @return The clientId.
     */
    @java.lang.Override
    public int getClientId() {
      return clientId_;
    }

    public static final int BACKEND_FIELD_NUMBER = 2;
    private volatile java.lang.Object backend_;
    /**
     * <code>string backend = 2;</code>
     * @return The backend.
     */
    @java.lang.Override
    public java.lang.String getBackend() {
      java.lang.Object ref = backend_;
      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();
        backend_ = s;
        return s;
      }
    }
    /**
     * <code>string backend = 2;</code>
     * @return The bytes for backend.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBackendBytes() {
      java.lang.Object ref = backend_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        backend_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_PATH_FIELD_NUMBER = 3;
    private volatile java.lang.Object modelPath_;
    /**
     * <code>string model_path = 3;</code>
     * @return The modelPath.
     */
    @java.lang.Override
    public java.lang.String getModelPath() {
      java.lang.Object ref = modelPath_;
      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();
        modelPath_ = s;
        return s;
      }
    }
    /**
     * <code>string model_path = 3;</code>
     * @return The bytes for modelPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getModelPathBytes() {
      java.lang.Object ref = modelPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelPath_ = 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 (clientId_ != 0) {
        output.writeInt32(1, clientId_);
      }
      if (!getBackendBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, backend_);
      }
      if (!getModelPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, modelPath_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clientId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, clientId_);
      }
      if (!getBackendBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, backend_);
      }
      if (!getModelPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, modelPath_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest) obj;

      if (getClientId()
          != other.getClientId()) return false;
      if (!getBackend()
          .equals(other.getBackend())) return false;
      if (!getModelPath()
          .equals(other.getModelPath())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + CLIENT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getClientId();
      hash = (37 * hash) + BACKEND_FIELD_NUMBER;
      hash = (53 * hash) + getBackend().hashCode();
      hash = (37 * hash) + MODEL_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getModelPath().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest 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;
    }
    /**
     * Protobuf type {@code nn.SaveModelRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.SaveModelRequest)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        clientId_ = 0;

        backend_ = "";

        modelPath_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelRequest_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest(this);
        result.clientId_ = clientId_;
        result.backend_ = backend_;
        result.modelPath_ = modelPath_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest.getDefaultInstance()) return this;
        if (other.getClientId() != 0) {
          setClientId(other.getClientId());
        }
        if (!other.getBackend().isEmpty()) {
          backend_ = other.backend_;
          onChanged();
        }
        if (!other.getModelPath().isEmpty()) {
          modelPath_ = other.modelPath_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int clientId_ ;
      /**
       * <code>int32 client_id = 1;</code>
       * @return The clientId.
       */
      @java.lang.Override
      public int getClientId() {
        return clientId_;
      }
      /**
       * <code>int32 client_id = 1;</code>
       * @param value The clientId to set.
       * @return This builder for chaining.
       */
      public Builder setClientId(int value) {
        
        clientId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 client_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientId() {
        
        clientId_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object backend_ = "";
      /**
       * <code>string backend = 2;</code>
       * @return The backend.
       */
      public java.lang.String getBackend() {
        java.lang.Object ref = backend_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          backend_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string backend = 2;</code>
       * @return The bytes for backend.
       */
      public com.google.protobuf.ByteString
          getBackendBytes() {
        java.lang.Object ref = backend_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          backend_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string backend = 2;</code>
       * @param value The backend to set.
       * @return This builder for chaining.
       */
      public Builder setBackend(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        backend_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string backend = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBackend() {
        
        backend_ = getDefaultInstance().getBackend();
        onChanged();
        return this;
      }
      /**
       * <code>string backend = 2;</code>
       * @param value The bytes for backend to set.
       * @return This builder for chaining.
       */
      public Builder setBackendBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        backend_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object modelPath_ = "";
      /**
       * <code>string model_path = 3;</code>
       * @return The modelPath.
       */
      public java.lang.String getModelPath() {
        java.lang.Object ref = modelPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string model_path = 3;</code>
       * @return The bytes for modelPath.
       */
      public com.google.protobuf.ByteString
          getModelPathBytes() {
        java.lang.Object ref = modelPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string model_path = 3;</code>
       * @param value The modelPath to set.
       * @return This builder for chaining.
       */
      public Builder setModelPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string model_path = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearModelPath() {
        
        modelPath_ = getDefaultInstance().getModelPath();
        onChanged();
        return this;
      }
      /**
       * <code>string model_path = 3;</code>
       * @param value The bytes for modelPath to set.
       * @return This builder for chaining.
       */
      public Builder setModelPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelPath_ = value;
        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:nn.SaveModelRequest)
    }

    // @@protoc_insertion_point(class_scope:nn.SaveModelRequest)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaveModelRequest>
        PARSER = new com.google.protobuf.AbstractParser<SaveModelRequest>() {
      @java.lang.Override
      public SaveModelRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SaveModelRequest(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaveModelResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:nn.SaveModelResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string message = 1;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <code>string message = 1;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * Protobuf type {@code nn.SaveModelResponse}
   */
  public static final class SaveModelResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:nn.SaveModelResponse)
      SaveModelResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaveModelResponse.newBuilder() to construct.
    private SaveModelResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaveModelResponse() {
      message_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SaveModelResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              message_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.Builder.class);
    }

    public static final int MESSAGE_FIELD_NUMBER = 1;
    private volatile java.lang.Object message_;
    /**
     * <code>string message = 1;</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      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();
        message_ = s;
        return s;
      }
    }
    /**
     * <code>string message = 1;</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = 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 (!getMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
      }
      size += unknownFields.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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse)) {
        return super.equals(obj);
      }
      com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse other = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse) obj;

      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse 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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse 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;
    }
    /**
     * Protobuf type {@code nn.SaveModelResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:nn.SaveModelResponse)
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.class, com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.Builder.class);
      }

      // Construct using com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        message_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.internal_static_nn_SaveModelResponse_descriptor;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse getDefaultInstanceForType() {
        return com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse build() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse buildPartial() {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse result = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse(this);
        result.message_ = message_;
        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.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse) {
          return mergeFrom((com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse other) {
        if (other == com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse.getDefaultInstance()) return this;
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <code>string message = 1;</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string message = 1;</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string message = 1;</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string message = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * <code>string message = 1;</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        message_ = value;
        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:nn.SaveModelResponse)
    }

    // @@protoc_insertion_point(class_scope:nn.SaveModelResponse)
    private static final com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse();
    }

    public static com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaveModelResponse>
        PARSER = new com.google.protobuf.AbstractParser<SaveModelResponse>() {
      @java.lang.Override
      public SaveModelResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SaveModelResponse(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.intel.analytics.bigdl.ppml.fl.generated.NNServiceProto.SaveModelResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_TrainRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_TrainRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_TrainResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_TrainResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_EvaluateRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_EvaluateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_EvaluateResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_EvaluateResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_PredictRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_PredictRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_PredictResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_PredictResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_UploadMetaRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_UploadMetaRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_ByteChunk_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_ByteChunk_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_ClassAndArgs_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_ClassAndArgs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_UploadMetaResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_UploadMetaResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_LoadModelRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_LoadModelRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_LoadModelResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_LoadModelResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_SaveModelRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_SaveModelRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_nn_SaveModelResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_nn_SaveModelResponse_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\020nn_service.proto\022\002nn\032\rfl_base.proto\"O\n" +
      "\014TrainRequest\022\022\n\nclientuuid\030\001 \001(\005\022\030\n\004dat" +
      "a\030\002 \001(\0132\n.TensorMap\022\021\n\talgorithm\030\003 \001(\t\"I" +
      "\n\rTrainResponse\022\020\n\010response\030\001 \001(\t\022\030\n\004dat" +
      "a\030\002 \001(\0132\n.TensorMap\022\014\n\004code\030\003 \001(\005\"b\n\017Eva" +
      "luateRequest\022\022\n\nclientuuid\030\001 \001(\005\022\030\n\004data" +
      "\030\002 \001(\0132\n.TensorMap\022\021\n\talgorithm\030\003 \001(\t\022\016\n" +
      "\006return\030\004 \001(\010\"]\n\020EvaluateResponse\022\020\n\010res" +
      "ponse\030\001 \001(\t\022\030\n\004data\030\002 \001(\0132\n.TensorMap\022\014\n" +
      "\004code\030\003 \001(\005\022\017\n\007message\030\004 \001(\t\"Q\n\016PredictR" +
      "equest\022\022\n\nclientuuid\030\001 \001(\005\022\030\n\004data\030\002 \001(\013" +
      "2\n.TensorMap\022\021\n\talgorithm\030\003 \001(\t\"K\n\017Predi" +
      "ctResponse\022\020\n\010response\030\001 \001(\t\022\030\n\004data\030\002 \001" +
      "(\0132\n.TensorMap\022\014\n\004code\030\003 \001(\005\"r\n\021UploadMe" +
      "taRequest\022\023\n\013client_uuid\030\001 \001(\005\022\017\n\007loss_f" +
      "n\030\002 \001(\014\022#\n\toptimizer\030\003 \001(\0132\020.nn.ClassAnd" +
      "Args\022\022\n\naggregator\030\004 \001(\t\"\033\n\tByteChunk\022\016\n" +
      "\006buffer\030\001 \001(\014\")\n\014ClassAndArgs\022\013\n\003cls\030\001 \001" +
      "(\014\022\014\n\004args\030\002 \001(\014\"3\n\022UploadMetaResponse\022\017" +
      "\n\007message\030\001 \001(\t\022\014\n\004code\030\002 \001(\005\"J\n\020LoadMod" +
      "elRequest\022\021\n\tclient_id\030\001 \001(\005\022\017\n\007backend\030" +
      "\002 \001(\t\022\022\n\nmodel_path\030\003 \001(\t\"2\n\021LoadModelRe" +
      "sponse\022\017\n\007message\030\001 \001(\t\022\014\n\004code\030\002 \001(\005\"J\n" +
      "\020SaveModelRequest\022\021\n\tclient_id\030\001 \001(\005\022\017\n\007" +
      "backend\030\002 \001(\t\022\022\n\nmodel_path\030\003 \001(\t\"$\n\021Sav" +
      "eModelResponse\022\017\n\007message\030\001 \001(\t2\254\003\n\tNNSe" +
      "rvice\022.\n\005train\022\020.nn.TrainRequest\032\021.nn.Tr" +
      "ainResponse\"\000\0227\n\010evaluate\022\023.nn.EvaluateR" +
      "equest\032\024.nn.EvaluateResponse\"\000\0224\n\007predic" +
      "t\022\022.nn.PredictRequest\032\023.nn.PredictRespon" +
      "se\"\000\022>\n\013upload_meta\022\025.nn.UploadMetaReque" +
      "st\032\026.nn.UploadMetaResponse\"\000\0228\n\013upload_f" +
      "ile\022\r.nn.ByteChunk\032\026.nn.UploadMetaRespon" +
      "se\"\000(\001\022B\n\021save_server_model\022\024.nn.SaveMod" +
      "elRequest\032\025.nn.SaveModelResponse\"\000\022B\n\021lo" +
      "ad_server_model\022\024.nn.LoadModelRequest\032\025." +
      "nn.LoadModelResponse\"\000B=\n+com.intel.anal" +
      "ytics.bigdl.ppml.fl.generatedB\016NNService" +
      "Protob\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.getDescriptor(),
        });
    internal_static_nn_TrainRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_nn_TrainRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_TrainRequest_descriptor,
        new java.lang.String[] { "Clientuuid", "Data", "Algorithm", });
    internal_static_nn_TrainResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_nn_TrainResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_TrainResponse_descriptor,
        new java.lang.String[] { "Response", "Data", "Code", });
    internal_static_nn_EvaluateRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_nn_EvaluateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_EvaluateRequest_descriptor,
        new java.lang.String[] { "Clientuuid", "Data", "Algorithm", "Return", });
    internal_static_nn_EvaluateResponse_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_nn_EvaluateResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_EvaluateResponse_descriptor,
        new java.lang.String[] { "Response", "Data", "Code", "Message", });
    internal_static_nn_PredictRequest_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_nn_PredictRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_PredictRequest_descriptor,
        new java.lang.String[] { "Clientuuid", "Data", "Algorithm", });
    internal_static_nn_PredictResponse_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_nn_PredictResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_PredictResponse_descriptor,
        new java.lang.String[] { "Response", "Data", "Code", });
    internal_static_nn_UploadMetaRequest_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_nn_UploadMetaRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_UploadMetaRequest_descriptor,
        new java.lang.String[] { "ClientUuid", "LossFn", "Optimizer", "Aggregator", });
    internal_static_nn_ByteChunk_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_nn_ByteChunk_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_ByteChunk_descriptor,
        new java.lang.String[] { "Buffer", });
    internal_static_nn_ClassAndArgs_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_nn_ClassAndArgs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_ClassAndArgs_descriptor,
        new java.lang.String[] { "Cls", "Args", });
    internal_static_nn_UploadMetaResponse_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_nn_UploadMetaResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_UploadMetaResponse_descriptor,
        new java.lang.String[] { "Message", "Code", });
    internal_static_nn_LoadModelRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_nn_LoadModelRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_LoadModelRequest_descriptor,
        new java.lang.String[] { "ClientId", "Backend", "ModelPath", });
    internal_static_nn_LoadModelResponse_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_nn_LoadModelResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_LoadModelResponse_descriptor,
        new java.lang.String[] { "Message", "Code", });
    internal_static_nn_SaveModelRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_nn_SaveModelRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_SaveModelRequest_descriptor,
        new java.lang.String[] { "ClientId", "Backend", "ModelPath", });
    internal_static_nn_SaveModelResponse_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_nn_SaveModelResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_nn_SaveModelResponse_descriptor,
        new java.lang.String[] { "Message", });
    com.intel.analytics.bigdl.ppml.fl.generated.FlBaseProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
