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

package com.intel.analytics.zoo.ppml.generated;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code SIGNAL}
   */
  public enum SIGNAL
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SUCCESS = 0;</code>
     */
    SUCCESS(0),
    /**
     * <code>WAIT = 1;</code>
     */
    WAIT(1),
    /**
     * <code>TIMEOUT = 2;</code>
     */
    TIMEOUT(2),
    /**
     * <code>EMPTY_INPUT = 3;</code>
     */
    EMPTY_INPUT(3),
    /**
     * <code>ERROR = 4;</code>
     */
    ERROR(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SUCCESS = 0;</code>
     */
    public static final int SUCCESS_VALUE = 0;
    /**
     * <code>WAIT = 1;</code>
     */
    public static final int WAIT_VALUE = 1;
    /**
     * <code>TIMEOUT = 2;</code>
     */
    public static final int TIMEOUT_VALUE = 2;
    /**
     * <code>EMPTY_INPUT = 3;</code>
     */
    public static final int EMPTY_INPUT_VALUE = 3;
    /**
     * <code>ERROR = 4;</code>
     */
    public static final int ERROR_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static SIGNAL valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SIGNAL forNumber(int value) {
      switch (value) {
        case 0: return SUCCESS;
        case 1: return WAIT;
        case 2: return TIMEOUT;
        case 3: return EMPTY_INPUT;
        case 4: return ERROR;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SIGNAL>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SIGNAL> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SIGNAL>() {
            public SIGNAL findValueByNumber(int number) {
              return SIGNAL.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return FLProto.getDescriptor().getEnumTypes().get(0);
    }

    private static final SIGNAL[] VALUES = values();

    public static SIGNAL valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SIGNAL(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:SIGNAL)
  }

  public interface SaltRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SaltRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    String getTaskId();
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>int32 client_num = 2;</code>
     * @return The clientNum.
     */
    int getClientNum();

    /**
     * <code>string secure_code = 3;</code>
     * @return The secureCode.
     */
    String getSecureCode();
    /**
     * <code>string secure_code = 3;</code>
     * @return The bytes for secureCode.
     */
    com.google.protobuf.ByteString
        getSecureCodeBytes();
  }
  /**
   * Protobuf type {@code SaltRequest}
   */
  public static final class SaltRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:SaltRequest)
      SaltRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaltRequest.newBuilder() to construct.
    private SaltRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaltRequest() {
      taskId_ = "";
      secureCode_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new SaltRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SaltRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              taskId_ = s;
              break;
            }
            case 16: {

              clientNum_ = input.readInt32();
              break;
            }
            case 26: {
              String s = input.readStringRequireUtf8();

              secureCode_ = 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 FLProto.internal_static_SaltRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_SaltRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              SaltRequest.class, Builder.class);
    }

    public static final int TASK_ID_FIELD_NUMBER = 1;
    private volatile Object taskId_;
    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    @Override
    public String getTaskId() {
      Object ref = taskId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        taskId_ = s;
        return s;
      }
    }
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    @Override
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      Object ref = taskId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        taskId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLIENT_NUM_FIELD_NUMBER = 2;
    private int clientNum_;
    /**
     * <code>int32 client_num = 2;</code>
     * @return The clientNum.
     */
    @Override
    public int getClientNum() {
      return clientNum_;
    }

    public static final int SECURE_CODE_FIELD_NUMBER = 3;
    private volatile Object secureCode_;
    /**
     * <code>string secure_code = 3;</code>
     * @return The secureCode.
     */
    @Override
    public String getSecureCode() {
      Object ref = secureCode_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        secureCode_ = s;
        return s;
      }
    }
    /**
     * <code>string secure_code = 3;</code>
     * @return The bytes for secureCode.
     */
    @Override
    public com.google.protobuf.ByteString
        getSecureCodeBytes() {
      Object ref = secureCode_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        secureCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTaskIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskId_);
      }
      if (clientNum_ != 0) {
        output.writeInt32(2, clientNum_);
      }
      if (!getSecureCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, secureCode_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTaskIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskId_);
      }
      if (clientNum_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, clientNum_);
      }
      if (!getSecureCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, secureCode_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof SaltRequest)) {
        return super.equals(obj);
      }
      SaltRequest other = (SaltRequest) obj;

      if (!getTaskId()
          .equals(other.getTaskId())) return false;
      if (getClientNum()
          != other.getClientNum()) return false;
      if (!getSecureCode()
          .equals(other.getSecureCode())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TASK_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTaskId().hashCode();
      hash = (37 * hash) + CLIENT_NUM_FIELD_NUMBER;
      hash = (53 * hash) + getClientNum();
      hash = (37 * hash) + SECURE_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getSecureCode().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static SaltRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SaltRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SaltRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SaltRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SaltRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SaltRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SaltRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static SaltRequest 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 SaltRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static SaltRequest 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 SaltRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static SaltRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(SaltRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SaltRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:SaltRequest)
        SaltRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_SaltRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_SaltRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SaltRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.SaltRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        clientNum_ = 0;

        secureCode_ = "";

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_SaltRequest_descriptor;
      }

      @Override
      public SaltRequest getDefaultInstanceForType() {
        return SaltRequest.getDefaultInstance();
      }

      @Override
      public SaltRequest build() {
        SaltRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public SaltRequest buildPartial() {
        SaltRequest result = new SaltRequest(this);
        result.taskId_ = taskId_;
        result.clientNum_ = clientNum_;
        result.secureCode_ = secureCode_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof SaltRequest) {
          return mergeFrom((SaltRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(SaltRequest other) {
        if (other == SaltRequest.getDefaultInstance()) return this;
        if (!other.getTaskId().isEmpty()) {
          taskId_ = other.taskId_;
          onChanged();
        }
        if (other.getClientNum() != 0) {
          setClientNum(other.getClientNum());
        }
        if (!other.getSecureCode().isEmpty()) {
          secureCode_ = other.secureCode_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        SaltRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (SaltRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object taskId_ = "";
      /**
       * <code>string task_id = 1;</code>
       * @return The taskId.
       */
      public String getTaskId() {
        Object ref = taskId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          taskId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @return The bytes for taskId.
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        Object ref = taskId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          taskId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        taskId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaskId() {
        
        taskId_ = getDefaultInstance().getTaskId();
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The bytes for taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        taskId_ = value;
        onChanged();
        return this;
      }

      private int clientNum_ ;
      /**
       * <code>int32 client_num = 2;</code>
       * @return The clientNum.
       */
      @Override
      public int getClientNum() {
        return clientNum_;
      }
      /**
       * <code>int32 client_num = 2;</code>
       * @param value The clientNum to set.
       * @return This builder for chaining.
       */
      public Builder setClientNum(int value) {
        
        clientNum_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 client_num = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientNum() {
        
        clientNum_ = 0;
        onChanged();
        return this;
      }

      private Object secureCode_ = "";
      /**
       * <code>string secure_code = 3;</code>
       * @return The secureCode.
       */
      public String getSecureCode() {
        Object ref = secureCode_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          secureCode_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string secure_code = 3;</code>
       * @return The bytes for secureCode.
       */
      public com.google.protobuf.ByteString
          getSecureCodeBytes() {
        Object ref = secureCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          secureCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string secure_code = 3;</code>
       * @param value The secureCode to set.
       * @return This builder for chaining.
       */
      public Builder setSecureCode(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        secureCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string secure_code = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecureCode() {
        
        secureCode_ = getDefaultInstance().getSecureCode();
        onChanged();
        return this;
      }
      /**
       * <code>string secure_code = 3;</code>
       * @param value The bytes for secureCode to set.
       * @return This builder for chaining.
       */
      public Builder setSecureCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        secureCode_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:SaltRequest)
    }

    // @@protoc_insertion_point(class_scope:SaltRequest)
    private static final SaltRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new SaltRequest();
    }

    public static SaltRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public SaltRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaltReplyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SaltReply)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string salt_reply = 1;</code>
     * @return The saltReply.
     */
    String getSaltReply();
    /**
     * <code>string salt_reply = 1;</code>
     * @return The bytes for saltReply.
     */
    com.google.protobuf.ByteString
        getSaltReplyBytes();
  }
  /**
   * Protobuf type {@code SaltReply}
   */
  public static final class SaltReply extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:SaltReply)
      SaltReplyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaltReply.newBuilder() to construct.
    private SaltReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaltReply() {
      saltReply_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new SaltReply();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SaltReply(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              saltReply_ = 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 FLProto.internal_static_SaltReply_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_SaltReply_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              SaltReply.class, Builder.class);
    }

    public static final int SALT_REPLY_FIELD_NUMBER = 1;
    private volatile Object saltReply_;
    /**
     * <code>string salt_reply = 1;</code>
     * @return The saltReply.
     */
    @Override
    public String getSaltReply() {
      Object ref = saltReply_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        saltReply_ = s;
        return s;
      }
    }
    /**
     * <code>string salt_reply = 1;</code>
     * @return The bytes for saltReply.
     */
    @Override
    public com.google.protobuf.ByteString
        getSaltReplyBytes() {
      Object ref = saltReply_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        saltReply_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getSaltReplyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, saltReply_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getSaltReplyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, saltReply_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof SaltReply)) {
        return super.equals(obj);
      }
      SaltReply other = (SaltReply) obj;

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

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SALT_REPLY_FIELD_NUMBER;
      hash = (53 * hash) + getSaltReply().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static SaltReply parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SaltReply parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SaltReply parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SaltReply parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SaltReply parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SaltReply parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SaltReply parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static SaltReply 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 SaltReply parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static SaltReply 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 SaltReply parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static SaltReply parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(SaltReply prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SaltReply}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:SaltReply)
        SaltReplyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_SaltReply_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_SaltReply_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SaltReply.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.SaltReply.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_SaltReply_descriptor;
      }

      @Override
      public SaltReply getDefaultInstanceForType() {
        return SaltReply.getDefaultInstance();
      }

      @Override
      public SaltReply build() {
        SaltReply result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public SaltReply buildPartial() {
        SaltReply result = new SaltReply(this);
        result.saltReply_ = saltReply_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof SaltReply) {
          return mergeFrom((SaltReply)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(SaltReply other) {
        if (other == SaltReply.getDefaultInstance()) return this;
        if (!other.getSaltReply().isEmpty()) {
          saltReply_ = other.saltReply_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        SaltReply parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (SaltReply) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object saltReply_ = "";
      /**
       * <code>string salt_reply = 1;</code>
       * @return The saltReply.
       */
      public String getSaltReply() {
        Object ref = saltReply_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          saltReply_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string salt_reply = 1;</code>
       * @return The bytes for saltReply.
       */
      public com.google.protobuf.ByteString
          getSaltReplyBytes() {
        Object ref = saltReply_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          saltReply_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string salt_reply = 1;</code>
       * @param value The saltReply to set.
       * @return This builder for chaining.
       */
      public Builder setSaltReply(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        saltReply_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string salt_reply = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSaltReply() {
        
        saltReply_ = getDefaultInstance().getSaltReply();
        onChanged();
        return this;
      }
      /**
       * <code>string salt_reply = 1;</code>
       * @param value The bytes for saltReply to set.
       * @return This builder for chaining.
       */
      public Builder setSaltReplyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        saltReply_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:SaltReply)
    }

    // @@protoc_insertion_point(class_scope:SaltReply)
    private static final SaltReply DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new SaltReply();
    }

    public static SaltReply getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public SaltReply getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadSetRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadSetRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    String getTaskId();
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>string client_id = 2;</code>
     * @return The clientId.
     */
    String getClientId();
    /**
     * <code>string client_id = 2;</code>
     * @return The bytes for clientId.
     */
    com.google.protobuf.ByteString
        getClientIdBytes();

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

    /**
     * <code>int32 num_split = 4;</code>
     * @return The numSplit.
     */
    int getNumSplit();

    /**
     * <code>int32 split_length = 5;</code>
     * @return The splitLength.
     */
    int getSplitLength();

    /**
     * <code>int32 total_length = 6;</code>
     * @return The totalLength.
     */
    int getTotalLength();

    /**
     * <code>repeated string hashedID = 7;</code>
     * @return A list containing the hashedID.
     */
    java.util.List<String>
        getHashedIDList();
    /**
     * <code>repeated string hashedID = 7;</code>
     * @return The count of hashedID.
     */
    int getHashedIDCount();
    /**
     * <code>repeated string hashedID = 7;</code>
     * @param index The index of the element to return.
     * @return The hashedID at the given index.
     */
    String getHashedID(int index);
    /**
     * <code>repeated string hashedID = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the hashedID at the given index.
     */
    com.google.protobuf.ByteString
        getHashedIDBytes(int index);
  }
  /**
   * Protobuf type {@code UploadSetRequest}
   */
  public static final class UploadSetRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:UploadSetRequest)
      UploadSetRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadSetRequest.newBuilder() to construct.
    private UploadSetRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadSetRequest() {
      taskId_ = "";
      clientId_ = "";
      hashedID_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadSetRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadSetRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              taskId_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              clientId_ = s;
              break;
            }
            case 24: {

              split_ = input.readInt32();
              break;
            }
            case 32: {

              numSplit_ = input.readInt32();
              break;
            }
            case 40: {

              splitLength_ = input.readInt32();
              break;
            }
            case 48: {

              totalLength_ = input.readInt32();
              break;
            }
            case 58: {
              String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                hashedID_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              hashedID_.add(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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          hashedID_ = hashedID_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_UploadSetRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadSetRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadSetRequest.class, Builder.class);
    }

    public static final int TASK_ID_FIELD_NUMBER = 1;
    private volatile Object taskId_;
    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    @Override
    public String getTaskId() {
      Object ref = taskId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        taskId_ = s;
        return s;
      }
    }
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    @Override
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      Object ref = taskId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        taskId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLIENT_ID_FIELD_NUMBER = 2;
    private volatile Object clientId_;
    /**
     * <code>string client_id = 2;</code>
     * @return The clientId.
     */
    @Override
    public String getClientId() {
      Object ref = clientId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientId_ = s;
        return s;
      }
    }
    /**
     * <code>string client_id = 2;</code>
     * @return The bytes for clientId.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientIdBytes() {
      Object ref = clientId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPLIT_FIELD_NUMBER = 3;
    private int split_;
    /**
     * <code>int32 split = 3;</code>
     * @return The split.
     */
    @Override
    public int getSplit() {
      return split_;
    }

    public static final int NUM_SPLIT_FIELD_NUMBER = 4;
    private int numSplit_;
    /**
     * <code>int32 num_split = 4;</code>
     * @return The numSplit.
     */
    @Override
    public int getNumSplit() {
      return numSplit_;
    }

    public static final int SPLIT_LENGTH_FIELD_NUMBER = 5;
    private int splitLength_;
    /**
     * <code>int32 split_length = 5;</code>
     * @return The splitLength.
     */
    @Override
    public int getSplitLength() {
      return splitLength_;
    }

    public static final int TOTAL_LENGTH_FIELD_NUMBER = 6;
    private int totalLength_;
    /**
     * <code>int32 total_length = 6;</code>
     * @return The totalLength.
     */
    @Override
    public int getTotalLength() {
      return totalLength_;
    }

    public static final int HASHEDID_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList hashedID_;
    /**
     * <code>repeated string hashedID = 7;</code>
     * @return A list containing the hashedID.
     */
    public com.google.protobuf.ProtocolStringList
        getHashedIDList() {
      return hashedID_;
    }
    /**
     * <code>repeated string hashedID = 7;</code>
     * @return The count of hashedID.
     */
    public int getHashedIDCount() {
      return hashedID_.size();
    }
    /**
     * <code>repeated string hashedID = 7;</code>
     * @param index The index of the element to return.
     * @return The hashedID at the given index.
     */
    public String getHashedID(int index) {
      return hashedID_.get(index);
    }
    /**
     * <code>repeated string hashedID = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the hashedID at the given index.
     */
    public com.google.protobuf.ByteString
        getHashedIDBytes(int index) {
      return hashedID_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTaskIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskId_);
      }
      if (!getClientIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, clientId_);
      }
      if (split_ != 0) {
        output.writeInt32(3, split_);
      }
      if (numSplit_ != 0) {
        output.writeInt32(4, numSplit_);
      }
      if (splitLength_ != 0) {
        output.writeInt32(5, splitLength_);
      }
      if (totalLength_ != 0) {
        output.writeInt32(6, totalLength_);
      }
      for (int i = 0; i < hashedID_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, hashedID_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTaskIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskId_);
      }
      if (!getClientIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, clientId_);
      }
      if (split_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, split_);
      }
      if (numSplit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, numSplit_);
      }
      if (splitLength_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, splitLength_);
      }
      if (totalLength_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, totalLength_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < hashedID_.size(); i++) {
          dataSize += computeStringSizeNoTag(hashedID_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getHashedIDList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadSetRequest)) {
        return super.equals(obj);
      }
      UploadSetRequest other = (UploadSetRequest) obj;

      if (!getTaskId()
          .equals(other.getTaskId())) return false;
      if (!getClientId()
          .equals(other.getClientId())) return false;
      if (getSplit()
          != other.getSplit()) return false;
      if (getNumSplit()
          != other.getNumSplit()) return false;
      if (getSplitLength()
          != other.getSplitLength()) return false;
      if (getTotalLength()
          != other.getTotalLength()) return false;
      if (!getHashedIDList()
          .equals(other.getHashedIDList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TASK_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTaskId().hashCode();
      hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getClientId().hashCode();
      hash = (37 * hash) + SPLIT_FIELD_NUMBER;
      hash = (53 * hash) + getSplit();
      hash = (37 * hash) + NUM_SPLIT_FIELD_NUMBER;
      hash = (53 * hash) + getNumSplit();
      hash = (37 * hash) + SPLIT_LENGTH_FIELD_NUMBER;
      hash = (53 * hash) + getSplitLength();
      hash = (37 * hash) + TOTAL_LENGTH_FIELD_NUMBER;
      hash = (53 * hash) + getTotalLength();
      if (getHashedIDCount() > 0) {
        hash = (37 * hash) + HASHEDID_FIELD_NUMBER;
        hash = (53 * hash) + getHashedIDList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadSetRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSetRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSetRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSetRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSetRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSetRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSetRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadSetRequest 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 UploadSetRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadSetRequest 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 UploadSetRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadSetRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadSetRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadSetRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadSetRequest)
        UploadSetRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadSetRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadSetRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadSetRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadSetRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        clientId_ = "";

        split_ = 0;

        numSplit_ = 0;

        splitLength_ = 0;

        totalLength_ = 0;

        hashedID_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadSetRequest_descriptor;
      }

      @Override
      public UploadSetRequest getDefaultInstanceForType() {
        return UploadSetRequest.getDefaultInstance();
      }

      @Override
      public UploadSetRequest build() {
        UploadSetRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadSetRequest buildPartial() {
        UploadSetRequest result = new UploadSetRequest(this);
        int from_bitField0_ = bitField0_;
        result.taskId_ = taskId_;
        result.clientId_ = clientId_;
        result.split_ = split_;
        result.numSplit_ = numSplit_;
        result.splitLength_ = splitLength_;
        result.totalLength_ = totalLength_;
        if (((bitField0_ & 0x00000001) != 0)) {
          hashedID_ = hashedID_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.hashedID_ = hashedID_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadSetRequest) {
          return mergeFrom((UploadSetRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadSetRequest other) {
        if (other == UploadSetRequest.getDefaultInstance()) return this;
        if (!other.getTaskId().isEmpty()) {
          taskId_ = other.taskId_;
          onChanged();
        }
        if (!other.getClientId().isEmpty()) {
          clientId_ = other.clientId_;
          onChanged();
        }
        if (other.getSplit() != 0) {
          setSplit(other.getSplit());
        }
        if (other.getNumSplit() != 0) {
          setNumSplit(other.getNumSplit());
        }
        if (other.getSplitLength() != 0) {
          setSplitLength(other.getSplitLength());
        }
        if (other.getTotalLength() != 0) {
          setTotalLength(other.getTotalLength());
        }
        if (!other.hashedID_.isEmpty()) {
          if (hashedID_.isEmpty()) {
            hashedID_ = other.hashedID_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureHashedIDIsMutable();
            hashedID_.addAll(other.hashedID_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadSetRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadSetRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object taskId_ = "";
      /**
       * <code>string task_id = 1;</code>
       * @return The taskId.
       */
      public String getTaskId() {
        Object ref = taskId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          taskId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @return The bytes for taskId.
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        Object ref = taskId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          taskId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        taskId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaskId() {
        
        taskId_ = getDefaultInstance().getTaskId();
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The bytes for taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        taskId_ = value;
        onChanged();
        return this;
      }

      private Object clientId_ = "";
      /**
       * <code>string client_id = 2;</code>
       * @return The clientId.
       */
      public String getClientId() {
        Object ref = clientId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string client_id = 2;</code>
       * @return The bytes for clientId.
       */
      public com.google.protobuf.ByteString
          getClientIdBytes() {
        Object ref = clientId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string client_id = 2;</code>
       * @param value The clientId to set.
       * @return This builder for chaining.
       */
      public Builder setClientId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string client_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientId() {
        
        clientId_ = getDefaultInstance().getClientId();
        onChanged();
        return this;
      }
      /**
       * <code>string client_id = 2;</code>
       * @param value The bytes for clientId to set.
       * @return This builder for chaining.
       */
      public Builder setClientIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientId_ = value;
        onChanged();
        return this;
      }

      private int split_ ;
      /**
       * <code>int32 split = 3;</code>
       * @return The split.
       */
      @Override
      public int getSplit() {
        return split_;
      }
      /**
       * <code>int32 split = 3;</code>
       * @param value The split to set.
       * @return This builder for chaining.
       */
      public Builder setSplit(int value) {
        
        split_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 split = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSplit() {
        
        split_ = 0;
        onChanged();
        return this;
      }

      private int numSplit_ ;
      /**
       * <code>int32 num_split = 4;</code>
       * @return The numSplit.
       */
      @Override
      public int getNumSplit() {
        return numSplit_;
      }
      /**
       * <code>int32 num_split = 4;</code>
       * @param value The numSplit to set.
       * @return This builder for chaining.
       */
      public Builder setNumSplit(int value) {
        
        numSplit_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 num_split = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumSplit() {
        
        numSplit_ = 0;
        onChanged();
        return this;
      }

      private int splitLength_ ;
      /**
       * <code>int32 split_length = 5;</code>
       * @return The splitLength.
       */
      @Override
      public int getSplitLength() {
        return splitLength_;
      }
      /**
       * <code>int32 split_length = 5;</code>
       * @param value The splitLength to set.
       * @return This builder for chaining.
       */
      public Builder setSplitLength(int value) {
        
        splitLength_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 split_length = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSplitLength() {
        
        splitLength_ = 0;
        onChanged();
        return this;
      }

      private int totalLength_ ;
      /**
       * <code>int32 total_length = 6;</code>
       * @return The totalLength.
       */
      @Override
      public int getTotalLength() {
        return totalLength_;
      }
      /**
       * <code>int32 total_length = 6;</code>
       * @param value The totalLength to set.
       * @return This builder for chaining.
       */
      public Builder setTotalLength(int value) {
        
        totalLength_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 total_length = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalLength() {
        
        totalLength_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList hashedID_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureHashedIDIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          hashedID_ = new com.google.protobuf.LazyStringArrayList(hashedID_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @return A list containing the hashedID.
       */
      public com.google.protobuf.ProtocolStringList
          getHashedIDList() {
        return hashedID_.getUnmodifiableView();
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @return The count of hashedID.
       */
      public int getHashedIDCount() {
        return hashedID_.size();
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @param index The index of the element to return.
       * @return The hashedID at the given index.
       */
      public String getHashedID(int index) {
        return hashedID_.get(index);
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the hashedID at the given index.
       */
      public com.google.protobuf.ByteString
          getHashedIDBytes(int index) {
        return hashedID_.getByteString(index);
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @param index The index to set the value at.
       * @param value The hashedID to set.
       * @return This builder for chaining.
       */
      public Builder setHashedID(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureHashedIDIsMutable();
        hashedID_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @param value The hashedID to add.
       * @return This builder for chaining.
       */
      public Builder addHashedID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureHashedIDIsMutable();
        hashedID_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @param values The hashedID to add.
       * @return This builder for chaining.
       */
      public Builder addAllHashedID(
          Iterable<String> values) {
        ensureHashedIDIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, hashedID_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearHashedID() {
        hashedID_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string hashedID = 7;</code>
       * @param value The bytes of the hashedID to add.
       * @return This builder for chaining.
       */
      public Builder addHashedIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureHashedIDIsMutable();
        hashedID_.add(value);
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadSetRequest)
    }

    // @@protoc_insertion_point(class_scope:UploadSetRequest)
    private static final UploadSetRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadSetRequest();
    }

    public static UploadSetRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadSetRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadSetResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadSetResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    String getTaskId();
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The status.
     */
    SIGNAL getStatus();
  }
  /**
   * Protobuf type {@code UploadSetResponse}
   */
  public static final class UploadSetResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:UploadSetResponse)
      UploadSetResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadSetResponse.newBuilder() to construct.
    private UploadSetResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadSetResponse() {
      taskId_ = "";
      status_ = 0;
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadSetResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadSetResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              taskId_ = s;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              status_ = rawValue;
              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 FLProto.internal_static_UploadSetResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadSetResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadSetResponse.class, Builder.class);
    }

    public static final int TASK_ID_FIELD_NUMBER = 1;
    private volatile Object taskId_;
    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    @Override
    public String getTaskId() {
      Object ref = taskId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        taskId_ = s;
        return s;
      }
    }
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    @Override
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      Object ref = taskId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        taskId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    @Override public int getStatusValue() {
      return status_;
    }
    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The status.
     */
    @Override public SIGNAL getStatus() {
      @SuppressWarnings("deprecation")
      SIGNAL result = SIGNAL.valueOf(status_);
      return result == null ? SIGNAL.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTaskIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskId_);
      }
      if (status_ != SIGNAL.SUCCESS.getNumber()) {
        output.writeEnum(2, status_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTaskIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskId_);
      }
      if (status_ != SIGNAL.SUCCESS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, status_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadSetResponse)) {
        return super.equals(obj);
      }
      UploadSetResponse other = (UploadSetResponse) obj;

      if (!getTaskId()
          .equals(other.getTaskId())) return false;
      if (status_ != other.status_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TASK_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTaskId().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadSetResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSetResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSetResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSetResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSetResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSetResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSetResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadSetResponse 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 UploadSetResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadSetResponse 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 UploadSetResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadSetResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadSetResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadSetResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadSetResponse)
        UploadSetResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadSetResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadSetResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadSetResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadSetResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        status_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadSetResponse_descriptor;
      }

      @Override
      public UploadSetResponse getDefaultInstanceForType() {
        return UploadSetResponse.getDefaultInstance();
      }

      @Override
      public UploadSetResponse build() {
        UploadSetResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadSetResponse buildPartial() {
        UploadSetResponse result = new UploadSetResponse(this);
        result.taskId_ = taskId_;
        result.status_ = status_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadSetResponse) {
          return mergeFrom((UploadSetResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadSetResponse other) {
        if (other == UploadSetResponse.getDefaultInstance()) return this;
        if (!other.getTaskId().isEmpty()) {
          taskId_ = other.taskId_;
          onChanged();
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadSetResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadSetResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object taskId_ = "";
      /**
       * <code>string task_id = 1;</code>
       * @return The taskId.
       */
      public String getTaskId() {
        Object ref = taskId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          taskId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @return The bytes for taskId.
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        Object ref = taskId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          taskId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        taskId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaskId() {
        
        taskId_ = getDefaultInstance().getTaskId();
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The bytes for taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        taskId_ = value;
        onChanged();
        return this;
      }

      private int status_ = 0;
      /**
       * <code>.SIGNAL status = 2;</code>
       * @return The enum numeric value on the wire for status.
       */
      @Override public int getStatusValue() {
        return status_;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @return The status.
       */
      @Override
      public SIGNAL getStatus() {
        @SuppressWarnings("deprecation")
        SIGNAL result = SIGNAL.valueOf(status_);
        return result == null ? SIGNAL.UNRECOGNIZED : result;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(SIGNAL value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadSetResponse)
    }

    // @@protoc_insertion_point(class_scope:UploadSetResponse)
    private static final UploadSetResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadSetResponse();
    }

    public static UploadSetResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadSetResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadIntersectionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DownloadIntersectionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    String getTaskId();
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

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

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DownloadIntersectionRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DownloadIntersectionRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              taskId_ = s;
              break;
            }
            case 16: {

              split_ = 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 FLProto.internal_static_DownloadIntersectionRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DownloadIntersectionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DownloadIntersectionRequest.class, Builder.class);
    }

    public static final int TASK_ID_FIELD_NUMBER = 1;
    private volatile Object taskId_;
    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    @Override
    public String getTaskId() {
      Object ref = taskId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        taskId_ = s;
        return s;
      }
    }
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    @Override
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      Object ref = taskId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        taskId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPLIT_FIELD_NUMBER = 2;
    private int split_;
    /**
     * <code>int32 split = 2;</code>
     * @return The split.
     */
    @Override
    public int getSplit() {
      return split_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTaskIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskId_);
      }
      if (split_ != 0) {
        output.writeInt32(2, split_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTaskIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskId_);
      }
      if (split_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, split_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DownloadIntersectionRequest)) {
        return super.equals(obj);
      }
      DownloadIntersectionRequest other = (DownloadIntersectionRequest) obj;

      if (!getTaskId()
          .equals(other.getTaskId())) return false;
      if (getSplit()
          != other.getSplit()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TASK_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTaskId().hashCode();
      hash = (37 * hash) + SPLIT_FIELD_NUMBER;
      hash = (53 * hash) + getSplit();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DownloadIntersectionRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadIntersectionRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadIntersectionRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadIntersectionRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadIntersectionRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadIntersectionRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadIntersectionRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadIntersectionRequest 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 DownloadIntersectionRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DownloadIntersectionRequest 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 DownloadIntersectionRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadIntersectionRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DownloadIntersectionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DownloadIntersectionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DownloadIntersectionRequest)
        DownloadIntersectionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DownloadIntersectionRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DownloadIntersectionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DownloadIntersectionRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DownloadIntersectionRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        split_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DownloadIntersectionRequest_descriptor;
      }

      @Override
      public DownloadIntersectionRequest getDefaultInstanceForType() {
        return DownloadIntersectionRequest.getDefaultInstance();
      }

      @Override
      public DownloadIntersectionRequest build() {
        DownloadIntersectionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DownloadIntersectionRequest buildPartial() {
        DownloadIntersectionRequest result = new DownloadIntersectionRequest(this);
        result.taskId_ = taskId_;
        result.split_ = split_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DownloadIntersectionRequest) {
          return mergeFrom((DownloadIntersectionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DownloadIntersectionRequest other) {
        if (other == DownloadIntersectionRequest.getDefaultInstance()) return this;
        if (!other.getTaskId().isEmpty()) {
          taskId_ = other.taskId_;
          onChanged();
        }
        if (other.getSplit() != 0) {
          setSplit(other.getSplit());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DownloadIntersectionRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DownloadIntersectionRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object taskId_ = "";
      /**
       * <code>string task_id = 1;</code>
       * @return The taskId.
       */
      public String getTaskId() {
        Object ref = taskId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          taskId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @return The bytes for taskId.
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        Object ref = taskId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          taskId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        taskId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaskId() {
        
        taskId_ = getDefaultInstance().getTaskId();
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The bytes for taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        taskId_ = value;
        onChanged();
        return this;
      }

      private int split_ ;
      /**
       * <code>int32 split = 2;</code>
       * @return The split.
       */
      @Override
      public int getSplit() {
        return split_;
      }
      /**
       * <code>int32 split = 2;</code>
       * @param value The split to set.
       * @return This builder for chaining.
       */
      public Builder setSplit(int value) {
        
        split_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 split = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSplit() {
        
        split_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DownloadIntersectionRequest)
    }

    // @@protoc_insertion_point(class_scope:DownloadIntersectionRequest)
    private static final DownloadIntersectionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DownloadIntersectionRequest();
    }

    public static DownloadIntersectionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DownloadIntersectionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadIntersectionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DownloadIntersectionResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    String getTaskId();
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The status.
     */
    SIGNAL getStatus();

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

    /**
     * <code>int32 num_split = 4;</code>
     * @return The numSplit.
     */
    int getNumSplit();

    /**
     * <code>int32 split_length = 5;</code>
     * @return The splitLength.
     */
    int getSplitLength();

    /**
     * <code>int32 total_length = 6;</code>
     * @return The totalLength.
     */
    int getTotalLength();

    /**
     * <code>repeated string intersection = 7;</code>
     * @return A list containing the intersection.
     */
    java.util.List<String>
        getIntersectionList();
    /**
     * <code>repeated string intersection = 7;</code>
     * @return The count of intersection.
     */
    int getIntersectionCount();
    /**
     * <code>repeated string intersection = 7;</code>
     * @param index The index of the element to return.
     * @return The intersection at the given index.
     */
    String getIntersection(int index);
    /**
     * <code>repeated string intersection = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the intersection at the given index.
     */
    com.google.protobuf.ByteString
        getIntersectionBytes(int index);
  }
  /**
   * Protobuf type {@code DownloadIntersectionResponse}
   */
  public static final class DownloadIntersectionResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:DownloadIntersectionResponse)
      DownloadIntersectionResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DownloadIntersectionResponse.newBuilder() to construct.
    private DownloadIntersectionResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DownloadIntersectionResponse() {
      taskId_ = "";
      status_ = 0;
      intersection_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DownloadIntersectionResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DownloadIntersectionResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              taskId_ = s;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              status_ = rawValue;
              break;
            }
            case 24: {

              split_ = input.readInt32();
              break;
            }
            case 32: {

              numSplit_ = input.readInt32();
              break;
            }
            case 40: {

              splitLength_ = input.readInt32();
              break;
            }
            case 48: {

              totalLength_ = input.readInt32();
              break;
            }
            case 58: {
              String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                intersection_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              intersection_.add(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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          intersection_ = intersection_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_DownloadIntersectionResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DownloadIntersectionResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DownloadIntersectionResponse.class, Builder.class);
    }

    public static final int TASK_ID_FIELD_NUMBER = 1;
    private volatile Object taskId_;
    /**
     * <code>string task_id = 1;</code>
     * @return The taskId.
     */
    @Override
    public String getTaskId() {
      Object ref = taskId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        taskId_ = s;
        return s;
      }
    }
    /**
     * <code>string task_id = 1;</code>
     * @return The bytes for taskId.
     */
    @Override
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      Object ref = taskId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        taskId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    @Override public int getStatusValue() {
      return status_;
    }
    /**
     * <code>.SIGNAL status = 2;</code>
     * @return The status.
     */
    @Override public SIGNAL getStatus() {
      @SuppressWarnings("deprecation")
      SIGNAL result = SIGNAL.valueOf(status_);
      return result == null ? SIGNAL.UNRECOGNIZED : result;
    }

    public static final int SPLIT_FIELD_NUMBER = 3;
    private int split_;
    /**
     * <code>int32 split = 3;</code>
     * @return The split.
     */
    @Override
    public int getSplit() {
      return split_;
    }

    public static final int NUM_SPLIT_FIELD_NUMBER = 4;
    private int numSplit_;
    /**
     * <code>int32 num_split = 4;</code>
     * @return The numSplit.
     */
    @Override
    public int getNumSplit() {
      return numSplit_;
    }

    public static final int SPLIT_LENGTH_FIELD_NUMBER = 5;
    private int splitLength_;
    /**
     * <code>int32 split_length = 5;</code>
     * @return The splitLength.
     */
    @Override
    public int getSplitLength() {
      return splitLength_;
    }

    public static final int TOTAL_LENGTH_FIELD_NUMBER = 6;
    private int totalLength_;
    /**
     * <code>int32 total_length = 6;</code>
     * @return The totalLength.
     */
    @Override
    public int getTotalLength() {
      return totalLength_;
    }

    public static final int INTERSECTION_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList intersection_;
    /**
     * <code>repeated string intersection = 7;</code>
     * @return A list containing the intersection.
     */
    public com.google.protobuf.ProtocolStringList
        getIntersectionList() {
      return intersection_;
    }
    /**
     * <code>repeated string intersection = 7;</code>
     * @return The count of intersection.
     */
    public int getIntersectionCount() {
      return intersection_.size();
    }
    /**
     * <code>repeated string intersection = 7;</code>
     * @param index The index of the element to return.
     * @return The intersection at the given index.
     */
    public String getIntersection(int index) {
      return intersection_.get(index);
    }
    /**
     * <code>repeated string intersection = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the intersection at the given index.
     */
    public com.google.protobuf.ByteString
        getIntersectionBytes(int index) {
      return intersection_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTaskIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskId_);
      }
      if (status_ != SIGNAL.SUCCESS.getNumber()) {
        output.writeEnum(2, status_);
      }
      if (split_ != 0) {
        output.writeInt32(3, split_);
      }
      if (numSplit_ != 0) {
        output.writeInt32(4, numSplit_);
      }
      if (splitLength_ != 0) {
        output.writeInt32(5, splitLength_);
      }
      if (totalLength_ != 0) {
        output.writeInt32(6, totalLength_);
      }
      for (int i = 0; i < intersection_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, intersection_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTaskIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskId_);
      }
      if (status_ != SIGNAL.SUCCESS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, status_);
      }
      if (split_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, split_);
      }
      if (numSplit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, numSplit_);
      }
      if (splitLength_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, splitLength_);
      }
      if (totalLength_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, totalLength_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intersection_.size(); i++) {
          dataSize += computeStringSizeNoTag(intersection_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getIntersectionList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DownloadIntersectionResponse)) {
        return super.equals(obj);
      }
      DownloadIntersectionResponse other = (DownloadIntersectionResponse) obj;

      if (!getTaskId()
          .equals(other.getTaskId())) return false;
      if (status_ != other.status_) return false;
      if (getSplit()
          != other.getSplit()) return false;
      if (getNumSplit()
          != other.getNumSplit()) return false;
      if (getSplitLength()
          != other.getSplitLength()) return false;
      if (getTotalLength()
          != other.getTotalLength()) return false;
      if (!getIntersectionList()
          .equals(other.getIntersectionList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TASK_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTaskId().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (37 * hash) + SPLIT_FIELD_NUMBER;
      hash = (53 * hash) + getSplit();
      hash = (37 * hash) + NUM_SPLIT_FIELD_NUMBER;
      hash = (53 * hash) + getNumSplit();
      hash = (37 * hash) + SPLIT_LENGTH_FIELD_NUMBER;
      hash = (53 * hash) + getSplitLength();
      hash = (37 * hash) + TOTAL_LENGTH_FIELD_NUMBER;
      hash = (53 * hash) + getTotalLength();
      if (getIntersectionCount() > 0) {
        hash = (37 * hash) + INTERSECTION_FIELD_NUMBER;
        hash = (53 * hash) + getIntersectionList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DownloadIntersectionResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadIntersectionResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadIntersectionResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadIntersectionResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadIntersectionResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadIntersectionResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadIntersectionResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadIntersectionResponse 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 DownloadIntersectionResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DownloadIntersectionResponse 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 DownloadIntersectionResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadIntersectionResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DownloadIntersectionResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DownloadIntersectionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DownloadIntersectionResponse)
        DownloadIntersectionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DownloadIntersectionResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DownloadIntersectionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DownloadIntersectionResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DownloadIntersectionResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        status_ = 0;

        split_ = 0;

        numSplit_ = 0;

        splitLength_ = 0;

        totalLength_ = 0;

        intersection_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DownloadIntersectionResponse_descriptor;
      }

      @Override
      public DownloadIntersectionResponse getDefaultInstanceForType() {
        return DownloadIntersectionResponse.getDefaultInstance();
      }

      @Override
      public DownloadIntersectionResponse build() {
        DownloadIntersectionResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DownloadIntersectionResponse buildPartial() {
        DownloadIntersectionResponse result = new DownloadIntersectionResponse(this);
        int from_bitField0_ = bitField0_;
        result.taskId_ = taskId_;
        result.status_ = status_;
        result.split_ = split_;
        result.numSplit_ = numSplit_;
        result.splitLength_ = splitLength_;
        result.totalLength_ = totalLength_;
        if (((bitField0_ & 0x00000001) != 0)) {
          intersection_ = intersection_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.intersection_ = intersection_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DownloadIntersectionResponse) {
          return mergeFrom((DownloadIntersectionResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DownloadIntersectionResponse other) {
        if (other == DownloadIntersectionResponse.getDefaultInstance()) return this;
        if (!other.getTaskId().isEmpty()) {
          taskId_ = other.taskId_;
          onChanged();
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (other.getSplit() != 0) {
          setSplit(other.getSplit());
        }
        if (other.getNumSplit() != 0) {
          setNumSplit(other.getNumSplit());
        }
        if (other.getSplitLength() != 0) {
          setSplitLength(other.getSplitLength());
        }
        if (other.getTotalLength() != 0) {
          setTotalLength(other.getTotalLength());
        }
        if (!other.intersection_.isEmpty()) {
          if (intersection_.isEmpty()) {
            intersection_ = other.intersection_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIntersectionIsMutable();
            intersection_.addAll(other.intersection_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DownloadIntersectionResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DownloadIntersectionResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object taskId_ = "";
      /**
       * <code>string task_id = 1;</code>
       * @return The taskId.
       */
      public String getTaskId() {
        Object ref = taskId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          taskId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @return The bytes for taskId.
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        Object ref = taskId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          taskId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        taskId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaskId() {
        
        taskId_ = getDefaultInstance().getTaskId();
        onChanged();
        return this;
      }
      /**
       * <code>string task_id = 1;</code>
       * @param value The bytes for taskId to set.
       * @return This builder for chaining.
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        taskId_ = value;
        onChanged();
        return this;
      }

      private int status_ = 0;
      /**
       * <code>.SIGNAL status = 2;</code>
       * @return The enum numeric value on the wire for status.
       */
      @Override public int getStatusValue() {
        return status_;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @return The status.
       */
      @Override
      public SIGNAL getStatus() {
        @SuppressWarnings("deprecation")
        SIGNAL result = SIGNAL.valueOf(status_);
        return result == null ? SIGNAL.UNRECOGNIZED : result;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(SIGNAL value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.SIGNAL status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private int split_ ;
      /**
       * <code>int32 split = 3;</code>
       * @return The split.
       */
      @Override
      public int getSplit() {
        return split_;
      }
      /**
       * <code>int32 split = 3;</code>
       * @param value The split to set.
       * @return This builder for chaining.
       */
      public Builder setSplit(int value) {
        
        split_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 split = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSplit() {
        
        split_ = 0;
        onChanged();
        return this;
      }

      private int numSplit_ ;
      /**
       * <code>int32 num_split = 4;</code>
       * @return The numSplit.
       */
      @Override
      public int getNumSplit() {
        return numSplit_;
      }
      /**
       * <code>int32 num_split = 4;</code>
       * @param value The numSplit to set.
       * @return This builder for chaining.
       */
      public Builder setNumSplit(int value) {
        
        numSplit_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 num_split = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumSplit() {
        
        numSplit_ = 0;
        onChanged();
        return this;
      }

      private int splitLength_ ;
      /**
       * <code>int32 split_length = 5;</code>
       * @return The splitLength.
       */
      @Override
      public int getSplitLength() {
        return splitLength_;
      }
      /**
       * <code>int32 split_length = 5;</code>
       * @param value The splitLength to set.
       * @return This builder for chaining.
       */
      public Builder setSplitLength(int value) {
        
        splitLength_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 split_length = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSplitLength() {
        
        splitLength_ = 0;
        onChanged();
        return this;
      }

      private int totalLength_ ;
      /**
       * <code>int32 total_length = 6;</code>
       * @return The totalLength.
       */
      @Override
      public int getTotalLength() {
        return totalLength_;
      }
      /**
       * <code>int32 total_length = 6;</code>
       * @param value The totalLength to set.
       * @return This builder for chaining.
       */
      public Builder setTotalLength(int value) {
        
        totalLength_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 total_length = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalLength() {
        
        totalLength_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList intersection_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIntersectionIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          intersection_ = new com.google.protobuf.LazyStringArrayList(intersection_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @return A list containing the intersection.
       */
      public com.google.protobuf.ProtocolStringList
          getIntersectionList() {
        return intersection_.getUnmodifiableView();
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @return The count of intersection.
       */
      public int getIntersectionCount() {
        return intersection_.size();
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @param index The index of the element to return.
       * @return The intersection at the given index.
       */
      public String getIntersection(int index) {
        return intersection_.get(index);
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the intersection at the given index.
       */
      public com.google.protobuf.ByteString
          getIntersectionBytes(int index) {
        return intersection_.getByteString(index);
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @param index The index to set the value at.
       * @param value The intersection to set.
       * @return This builder for chaining.
       */
      public Builder setIntersection(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIntersectionIsMutable();
        intersection_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @param value The intersection to add.
       * @return This builder for chaining.
       */
      public Builder addIntersection(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIntersectionIsMutable();
        intersection_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @param values The intersection to add.
       * @return This builder for chaining.
       */
      public Builder addAllIntersection(
          Iterable<String> values) {
        ensureIntersectionIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intersection_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearIntersection() {
        intersection_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string intersection = 7;</code>
       * @param value The bytes of the intersection to add.
       * @return This builder for chaining.
       */
      public Builder addIntersectionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureIntersectionIsMutable();
        intersection_.add(value);
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DownloadIntersectionResponse)
    }

    // @@protoc_insertion_point(class_scope:DownloadIntersectionResponse)
    private static final DownloadIntersectionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DownloadIntersectionResponse();
    }

    public static DownloadIntersectionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DownloadIntersectionResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FloatTensorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FloatTensor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 shape = 1;</code>
     * @return A list containing the shape.
     */
    java.util.List<Integer> getShapeList();
    /**
     * <code>repeated int32 shape = 1;</code>
     * @return The count of shape.
     */
    int getShapeCount();
    /**
     * <code>repeated int32 shape = 1;</code>
     * @param index The index of the element to return.
     * @return The shape at the given index.
     */
    int getShape(int index);

    /**
     * <code>repeated float tensor = 2;</code>
     * @return A list containing the tensor.
     */
    java.util.List<Float> getTensorList();
    /**
     * <code>repeated float tensor = 2;</code>
     * @return The count of tensor.
     */
    int getTensorCount();
    /**
     * <code>repeated float tensor = 2;</code>
     * @param index The index of the element to return.
     * @return The tensor at the given index.
     */
    float getTensor(int index);
  }
  /**
   * <pre>
   * </pre>
   *
   * Protobuf type {@code FloatTensor}
   */
  public static final class FloatTensor extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:FloatTensor)
      FloatTensorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FloatTensor.newBuilder() to construct.
    private FloatTensor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FloatTensor() {
      shape_ = emptyIntList();
      tensor_ = emptyFloatList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new FloatTensor();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FloatTensor(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                shape_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              shape_.addInt(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                shape_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                shape_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 21: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                tensor_ = newFloatList();
                mutable_bitField0_ |= 0x00000002;
              }
              tensor_.addFloat(input.readFloat());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                tensor_ = newFloatList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                tensor_.addFloat(input.readFloat());
              }
              input.popLimit(limit);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          shape_.makeImmutable(); // C
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          tensor_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_FloatTensor_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_FloatTensor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              FloatTensor.class, Builder.class);
    }

    public static final int SHAPE_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList shape_;
    /**
     * <code>repeated int32 shape = 1;</code>
     * @return A list containing the shape.
     */
    @Override
    public java.util.List<Integer>
        getShapeList() {
      return shape_;
    }
    /**
     * <code>repeated int32 shape = 1;</code>
     * @return The count of shape.
     */
    public int getShapeCount() {
      return shape_.size();
    }
    /**
     * <code>repeated int32 shape = 1;</code>
     * @param index The index of the element to return.
     * @return The shape at the given index.
     */
    public int getShape(int index) {
      return shape_.getInt(index);
    }
    private int shapeMemoizedSerializedSize = -1;

    public static final int TENSOR_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.FloatList tensor_;
    /**
     * <code>repeated float tensor = 2;</code>
     * @return A list containing the tensor.
     */
    @Override
    public java.util.List<Float>
        getTensorList() {
      return tensor_;
    }
    /**
     * <code>repeated float tensor = 2;</code>
     * @return The count of tensor.
     */
    public int getTensorCount() {
      return tensor_.size();
    }
    /**
     * <code>repeated float tensor = 2;</code>
     * @param index The index of the element to return.
     * @return The tensor at the given index.
     */
    public float getTensor(int index) {
      return tensor_.getFloat(index);
    }
    private int tensorMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getShapeList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(shapeMemoizedSerializedSize);
      }
      for (int i = 0; i < shape_.size(); i++) {
        output.writeInt32NoTag(shape_.getInt(i));
      }
      if (getTensorList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(tensorMemoizedSerializedSize);
      }
      for (int i = 0; i < tensor_.size(); i++) {
        output.writeFloatNoTag(tensor_.getFloat(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < shape_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(shape_.getInt(i));
        }
        size += dataSize;
        if (!getShapeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        shapeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTensorList().size();
        size += dataSize;
        if (!getTensorList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        tensorMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof FloatTensor)) {
        return super.equals(obj);
      }
      FloatTensor other = (FloatTensor) obj;

      if (!getShapeList()
          .equals(other.getShapeList())) return false;
      if (!getTensorList()
          .equals(other.getTensorList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getShapeCount() > 0) {
        hash = (37 * hash) + SHAPE_FIELD_NUMBER;
        hash = (53 * hash) + getShapeList().hashCode();
      }
      if (getTensorCount() > 0) {
        hash = (37 * hash) + TENSOR_FIELD_NUMBER;
        hash = (53 * hash) + getTensorList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static FloatTensor parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static FloatTensor parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static FloatTensor parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static FloatTensor parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static FloatTensor parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static FloatTensor parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static FloatTensor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static FloatTensor 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 FloatTensor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static FloatTensor 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 FloatTensor parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static FloatTensor parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(FloatTensor prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code FloatTensor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:FloatTensor)
        FloatTensorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_FloatTensor_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_FloatTensor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                FloatTensor.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.FloatTensor.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        shape_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        tensor_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_FloatTensor_descriptor;
      }

      @Override
      public FloatTensor getDefaultInstanceForType() {
        return FloatTensor.getDefaultInstance();
      }

      @Override
      public FloatTensor build() {
        FloatTensor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public FloatTensor buildPartial() {
        FloatTensor result = new FloatTensor(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          shape_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.shape_ = shape_;
        if (((bitField0_ & 0x00000002) != 0)) {
          tensor_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.tensor_ = tensor_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof FloatTensor) {
          return mergeFrom((FloatTensor)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(FloatTensor other) {
        if (other == FloatTensor.getDefaultInstance()) return this;
        if (!other.shape_.isEmpty()) {
          if (shape_.isEmpty()) {
            shape_ = other.shape_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureShapeIsMutable();
            shape_.addAll(other.shape_);
          }
          onChanged();
        }
        if (!other.tensor_.isEmpty()) {
          if (tensor_.isEmpty()) {
            tensor_ = other.tensor_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTensorIsMutable();
            tensor_.addAll(other.tensor_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        FloatTensor parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (FloatTensor) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList shape_ = emptyIntList();
      private void ensureShapeIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          shape_ = mutableCopy(shape_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @return A list containing the shape.
       */
      public java.util.List<Integer>
          getShapeList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(shape_) : shape_;
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @return The count of shape.
       */
      public int getShapeCount() {
        return shape_.size();
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @param index The index of the element to return.
       * @return The shape at the given index.
       */
      public int getShape(int index) {
        return shape_.getInt(index);
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @param index The index to set the value at.
       * @param value The shape to set.
       * @return This builder for chaining.
       */
      public Builder setShape(
          int index, int value) {
        ensureShapeIsMutable();
        shape_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @param value The shape to add.
       * @return This builder for chaining.
       */
      public Builder addShape(int value) {
        ensureShapeIsMutable();
        shape_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @param values The shape to add.
       * @return This builder for chaining.
       */
      public Builder addAllShape(
          Iterable<? extends Integer> values) {
        ensureShapeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, shape_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 shape = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearShape() {
        shape_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList tensor_ = emptyFloatList();
      private void ensureTensorIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          tensor_ = mutableCopy(tensor_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @return A list containing the tensor.
       */
      public java.util.List<Float>
          getTensorList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(tensor_) : tensor_;
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @return The count of tensor.
       */
      public int getTensorCount() {
        return tensor_.size();
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @param index The index of the element to return.
       * @return The tensor at the given index.
       */
      public float getTensor(int index) {
        return tensor_.getFloat(index);
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @param index The index to set the value at.
       * @param value The tensor to set.
       * @return This builder for chaining.
       */
      public Builder setTensor(
          int index, float value) {
        ensureTensorIsMutable();
        tensor_.setFloat(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @param value The tensor to add.
       * @return This builder for chaining.
       */
      public Builder addTensor(float value) {
        ensureTensorIsMutable();
        tensor_.addFloat(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @param values The tensor to add.
       * @return This builder for chaining.
       */
      public Builder addAllTensor(
          Iterable<? extends Float> values) {
        ensureTensorIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tensor_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float tensor = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTensor() {
        tensor_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:FloatTensor)
    }

    // @@protoc_insertion_point(class_scope:FloatTensor)
    private static final FloatTensor DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FloatTensor();
    }

    public static FloatTensor getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public FloatTensor getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Table)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return Whether the metaData field is set.
     */
    boolean hasMetaData();
    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return The metaData.
     */
    TableMetaData getMetaData();
    /**
     * <code>.TableMetaData metaData = 1;</code>
     */
    TableMetaDataOrBuilder getMetaDataOrBuilder();

    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */
    int getTableCount();
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */
    boolean containsTable(
        String key);
    /**
     * Use {@link #getTableMap()} instead.
     */
    @Deprecated
    java.util.Map<String, FloatTensor>
    getTable();
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */
    java.util.Map<String, FloatTensor>
    getTableMap();
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */

    FloatTensor getTableOrDefault(
        String key,
        FloatTensor defaultValue);
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */

    FloatTensor getTableOrThrow(
        String key);
  }
  /**
   * <pre>
   * </pre>
   *
   * Protobuf type {@code Table}
   */
  public static final class Table extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Table)
      TableOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Table.newBuilder() to construct.
    private Table(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Table() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new Table();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Table(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              TableMetaData.Builder subBuilder = null;
              if (metaData_ != null) {
                subBuilder = metaData_.toBuilder();
              }
              metaData_ = input.readMessage(TableMetaData.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metaData_);
                metaData_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                table_ = com.google.protobuf.MapField.newMapField(
                    TableDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<String, FloatTensor>
              table__ = input.readMessage(
                  TableDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              table_.getMutableMap().put(
                  table__.getKey(), table__.getValue());
              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 FLProto.internal_static_Table_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 2:
          return internalGetTable();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_Table_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Table.class, Builder.class);
    }

    public static final int METADATA_FIELD_NUMBER = 1;
    private TableMetaData metaData_;
    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return Whether the metaData field is set.
     */
    @Override
    public boolean hasMetaData() {
      return metaData_ != null;
    }
    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return The metaData.
     */
    @Override
    public TableMetaData getMetaData() {
      return metaData_ == null ? TableMetaData.getDefaultInstance() : metaData_;
    }
    /**
     * <code>.TableMetaData metaData = 1;</code>
     */
    @Override
    public TableMetaDataOrBuilder getMetaDataOrBuilder() {
      return getMetaData();
    }

    public static final int TABLE_FIELD_NUMBER = 2;
    private static final class TableDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          String, FloatTensor> defaultEntry =
              com.google.protobuf.MapEntry
              .<String, FloatTensor>newDefaultInstance(
                  FLProto.internal_static_Table_TableEntry_descriptor,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  FloatTensor.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        String, FloatTensor> table_;
    private com.google.protobuf.MapField<String, FloatTensor>
    internalGetTable() {
      if (table_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            TableDefaultEntryHolder.defaultEntry);
      }
      return table_;
    }

    public int getTableCount() {
      return internalGetTable().getMap().size();
    }
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */

    @Override
    public boolean containsTable(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      return internalGetTable().getMap().containsKey(key);
    }
    /**
     * Use {@link #getTableMap()} instead.
     */
    @Override
    @Deprecated
    public java.util.Map<String, FloatTensor> getTable() {
      return getTableMap();
    }
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */
    @Override

    public java.util.Map<String, FloatTensor> getTableMap() {
      return internalGetTable().getMap();
    }
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */
    @Override

    public FloatTensor getTableOrDefault(
        String key,
        FloatTensor defaultValue) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, FloatTensor> map =
          internalGetTable().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
     */
    @Override

    public FloatTensor getTableOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, FloatTensor> map =
          internalGetTable().getMap();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (metaData_ != null) {
        output.writeMessage(1, getMetaData());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetTable(),
          TableDefaultEntryHolder.defaultEntry,
          2);
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (metaData_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetaData());
      }
      for (java.util.Map.Entry<String, FloatTensor> entry
           : internalGetTable().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, FloatTensor>
        table__ = TableDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, table__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Table)) {
        return super.equals(obj);
      }
      Table other = (Table) obj;

      if (hasMetaData() != other.hasMetaData()) return false;
      if (hasMetaData()) {
        if (!getMetaData()
            .equals(other.getMetaData())) return false;
      }
      if (!internalGetTable().equals(
          other.internalGetTable())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetaData()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetaData().hashCode();
      }
      if (!internalGetTable().getMap().isEmpty()) {
        hash = (37 * hash) + TABLE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetTable().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Table parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Table parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Table parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Table parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Table parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Table parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Table parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Table 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 Table parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Table 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 Table parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Table parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Table prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code Table}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Table)
        TableOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_Table_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetTable();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableTable();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_Table_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Table.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.Table.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (metaDataBuilder_ == null) {
          metaData_ = null;
        } else {
          metaData_ = null;
          metaDataBuilder_ = null;
        }
        internalGetMutableTable().clear();
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_Table_descriptor;
      }

      @Override
      public Table getDefaultInstanceForType() {
        return Table.getDefaultInstance();
      }

      @Override
      public Table build() {
        Table result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public Table buildPartial() {
        Table result = new Table(this);
        int from_bitField0_ = bitField0_;
        if (metaDataBuilder_ == null) {
          result.metaData_ = metaData_;
        } else {
          result.metaData_ = metaDataBuilder_.build();
        }
        result.table_ = internalGetTable();
        result.table_.makeImmutable();
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Table) {
          return mergeFrom((Table)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Table other) {
        if (other == Table.getDefaultInstance()) return this;
        if (other.hasMetaData()) {
          mergeMetaData(other.getMetaData());
        }
        internalGetMutableTable().mergeFrom(
            other.internalGetTable());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Table parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Table) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private TableMetaData metaData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          TableMetaData, TableMetaData.Builder, TableMetaDataOrBuilder> metaDataBuilder_;
      /**
       * <code>.TableMetaData metaData = 1;</code>
       * @return Whether the metaData field is set.
       */
      public boolean hasMetaData() {
        return metaDataBuilder_ != null || metaData_ != null;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       * @return The metaData.
       */
      public TableMetaData getMetaData() {
        if (metaDataBuilder_ == null) {
          return metaData_ == null ? TableMetaData.getDefaultInstance() : metaData_;
        } else {
          return metaDataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder setMetaData(TableMetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metaData_ = value;
          onChanged();
        } else {
          metaDataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder setMetaData(
          TableMetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          metaData_ = builderForValue.build();
          onChanged();
        } else {
          metaDataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder mergeMetaData(TableMetaData value) {
        if (metaDataBuilder_ == null) {
          if (metaData_ != null) {
            metaData_ =
              TableMetaData.newBuilder(metaData_).mergeFrom(value).buildPartial();
          } else {
            metaData_ = value;
          }
          onChanged();
        } else {
          metaDataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder clearMetaData() {
        if (metaDataBuilder_ == null) {
          metaData_ = null;
          onChanged();
        } else {
          metaData_ = null;
          metaDataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public TableMetaData.Builder getMetaDataBuilder() {
        
        onChanged();
        return getMetaDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public TableMetaDataOrBuilder getMetaDataOrBuilder() {
        if (metaDataBuilder_ != null) {
          return metaDataBuilder_.getMessageOrBuilder();
        } else {
          return metaData_ == null ?
              TableMetaData.getDefaultInstance() : metaData_;
        }
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          TableMetaData, TableMetaData.Builder, TableMetaDataOrBuilder>
          getMetaDataFieldBuilder() {
        if (metaDataBuilder_ == null) {
          metaDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              TableMetaData, TableMetaData.Builder, TableMetaDataOrBuilder>(
                  getMetaData(),
                  getParentForChildren(),
                  isClean());
          metaData_ = null;
        }
        return metaDataBuilder_;
      }

      private com.google.protobuf.MapField<
          String, FloatTensor> table_;
      private com.google.protobuf.MapField<String, FloatTensor>
      internalGetTable() {
        if (table_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              TableDefaultEntryHolder.defaultEntry);
        }
        return table_;
      }
      private com.google.protobuf.MapField<String, FloatTensor>
      internalGetMutableTable() {
        onChanged();;
        if (table_ == null) {
          table_ = com.google.protobuf.MapField.newMapField(
              TableDefaultEntryHolder.defaultEntry);
        }
        if (!table_.isMutable()) {
          table_ = table_.copy();
        }
        return table_;
      }

      public int getTableCount() {
        return internalGetTable().getMap().size();
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */

      @Override
      public boolean containsTable(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetTable().getMap().containsKey(key);
      }
      /**
       * Use {@link #getTableMap()} instead.
       */
      @Override
      @Deprecated
      public java.util.Map<String, FloatTensor> getTable() {
        return getTableMap();
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */
      @Override

      public java.util.Map<String, FloatTensor> getTableMap() {
        return internalGetTable().getMap();
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */
      @Override

      public FloatTensor getTableOrDefault(
          String key,
          FloatTensor defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, FloatTensor> map =
            internalGetTable().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */
      @Override

      public FloatTensor getTableOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, FloatTensor> map =
            internalGetTable().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearTable() {
        internalGetMutableTable().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */

      public Builder removeTable(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        internalGetMutableTable().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @Deprecated
      public java.util.Map<String, FloatTensor>
      getMutableTable() {
        return internalGetMutableTable().getMutableMap();
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */
      public Builder putTable(
          String key,
          FloatTensor value) {
        if (key == null) { throw new NullPointerException(); }
        if (value == null) { throw new NullPointerException(); }
        internalGetMutableTable().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, .FloatTensor&gt; table = 2;</code>
       */

      public Builder putAllTable(
          java.util.Map<String, FloatTensor> values) {
        internalGetMutableTable().getMutableMap()
            .putAll(values);
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Table)
    }

    // @@protoc_insertion_point(class_scope:Table)
    private static final Table DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Table();
    }

    public static Table getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public Table getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TableMetaDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:TableMetaData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    String getName();
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

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

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new TableMetaData();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TableMetaData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 16: {

              version_ = 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 FLProto.internal_static_TableMetaData_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_TableMetaData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              TableMetaData.class, Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @Override
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private int version_;
    /**
     * <code>int32 version = 2;</code>
     * @return The version.
     */
    @Override
    public int getVersion() {
      return version_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (version_ != 0) {
        output.writeInt32(2, version_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, version_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof TableMetaData)) {
        return super.equals(obj);
      }
      TableMetaData other = (TableMetaData) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getVersion()
          != other.getVersion()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static TableMetaData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TableMetaData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TableMetaData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TableMetaData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TableMetaData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TableMetaData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TableMetaData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static TableMetaData 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 TableMetaData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static TableMetaData 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 TableMetaData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static TableMetaData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(TableMetaData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code TableMetaData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:TableMetaData)
        TableMetaDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_TableMetaData_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_TableMetaData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                TableMetaData.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.TableMetaData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        version_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_TableMetaData_descriptor;
      }

      @Override
      public TableMetaData getDefaultInstanceForType() {
        return TableMetaData.getDefaultInstance();
      }

      @Override
      public TableMetaData build() {
        TableMetaData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public TableMetaData buildPartial() {
        TableMetaData result = new TableMetaData(this);
        result.name_ = name_;
        result.version_ = version_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof TableMetaData) {
          return mergeFrom((TableMetaData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(TableMetaData other) {
        if (other == TableMetaData.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        TableMetaData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (TableMetaData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private int version_ ;
      /**
       * <code>int32 version = 2;</code>
       * @return The version.
       */
      @Override
      public int getVersion() {
        return version_;
      }
      /**
       * <code>int32 version = 2;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 version = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:TableMetaData)
    }

    // @@protoc_insertion_point(class_scope:TableMetaData)
    private static final TableMetaData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new TableMetaData();
    }

    public static TableMetaData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public TableMetaData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TreeLeavesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:TreeLeaves)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string treeID = 1;</code>
     * @return The treeID.
     */
    String getTreeID();
    /**
     * <code>string treeID = 1;</code>
     * @return The bytes for treeID.
     */
    com.google.protobuf.ByteString
        getTreeIDBytes();

    /**
     * <code>repeated int32 leafIndex = 2;</code>
     * @return A list containing the leafIndex.
     */
    java.util.List<Integer> getLeafIndexList();
    /**
     * <code>repeated int32 leafIndex = 2;</code>
     * @return The count of leafIndex.
     */
    int getLeafIndexCount();
    /**
     * <code>repeated int32 leafIndex = 2;</code>
     * @param index The index of the element to return.
     * @return The leafIndex at the given index.
     */
    int getLeafIndex(int index);

    /**
     * <code>repeated float leafOutput = 3;</code>
     * @return A list containing the leafOutput.
     */
    java.util.List<Float> getLeafOutputList();
    /**
     * <code>repeated float leafOutput = 3;</code>
     * @return The count of leafOutput.
     */
    int getLeafOutputCount();
    /**
     * <code>repeated float leafOutput = 3;</code>
     * @param index The index of the element to return.
     * @return The leafOutput at the given index.
     */
    float getLeafOutput(int index);
  }
  /**
   * Protobuf type {@code TreeLeaves}
   */
  public static final class TreeLeaves extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:TreeLeaves)
      TreeLeavesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TreeLeaves.newBuilder() to construct.
    private TreeLeaves(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TreeLeaves() {
      treeID_ = "";
      leafIndex_ = emptyIntList();
      leafOutput_ = emptyFloatList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new TreeLeaves();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TreeLeaves(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              treeID_ = s;
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                leafIndex_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              leafIndex_.addInt(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                leafIndex_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                leafIndex_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 29: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                leafOutput_ = newFloatList();
                mutable_bitField0_ |= 0x00000002;
              }
              leafOutput_.addFloat(input.readFloat());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                leafOutput_ = newFloatList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                leafOutput_.addFloat(input.readFloat());
              }
              input.popLimit(limit);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          leafIndex_.makeImmutable(); // C
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          leafOutput_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_TreeLeaves_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_TreeLeaves_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              TreeLeaves.class, Builder.class);
    }

    public static final int TREEID_FIELD_NUMBER = 1;
    private volatile Object treeID_;
    /**
     * <code>string treeID = 1;</code>
     * @return The treeID.
     */
    @Override
    public String getTreeID() {
      Object ref = treeID_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        treeID_ = s;
        return s;
      }
    }
    /**
     * <code>string treeID = 1;</code>
     * @return The bytes for treeID.
     */
    @Override
    public com.google.protobuf.ByteString
        getTreeIDBytes() {
      Object ref = treeID_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        treeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LEAFINDEX_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.IntList leafIndex_;
    /**
     * <code>repeated int32 leafIndex = 2;</code>
     * @return A list containing the leafIndex.
     */
    @Override
    public java.util.List<Integer>
        getLeafIndexList() {
      return leafIndex_;
    }
    /**
     * <code>repeated int32 leafIndex = 2;</code>
     * @return The count of leafIndex.
     */
    public int getLeafIndexCount() {
      return leafIndex_.size();
    }
    /**
     * <code>repeated int32 leafIndex = 2;</code>
     * @param index The index of the element to return.
     * @return The leafIndex at the given index.
     */
    public int getLeafIndex(int index) {
      return leafIndex_.getInt(index);
    }
    private int leafIndexMemoizedSerializedSize = -1;

    public static final int LEAFOUTPUT_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.FloatList leafOutput_;
    /**
     * <code>repeated float leafOutput = 3;</code>
     * @return A list containing the leafOutput.
     */
    @Override
    public java.util.List<Float>
        getLeafOutputList() {
      return leafOutput_;
    }
    /**
     * <code>repeated float leafOutput = 3;</code>
     * @return The count of leafOutput.
     */
    public int getLeafOutputCount() {
      return leafOutput_.size();
    }
    /**
     * <code>repeated float leafOutput = 3;</code>
     * @param index The index of the element to return.
     * @return The leafOutput at the given index.
     */
    public float getLeafOutput(int index) {
      return leafOutput_.getFloat(index);
    }
    private int leafOutputMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!getTreeIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, treeID_);
      }
      if (getLeafIndexList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(leafIndexMemoizedSerializedSize);
      }
      for (int i = 0; i < leafIndex_.size(); i++) {
        output.writeInt32NoTag(leafIndex_.getInt(i));
      }
      if (getLeafOutputList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(leafOutputMemoizedSerializedSize);
      }
      for (int i = 0; i < leafOutput_.size(); i++) {
        output.writeFloatNoTag(leafOutput_.getFloat(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTreeIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, treeID_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < leafIndex_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(leafIndex_.getInt(i));
        }
        size += dataSize;
        if (!getLeafIndexList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        leafIndexMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getLeafOutputList().size();
        size += dataSize;
        if (!getLeafOutputList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        leafOutputMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof TreeLeaves)) {
        return super.equals(obj);
      }
      TreeLeaves other = (TreeLeaves) obj;

      if (!getTreeID()
          .equals(other.getTreeID())) return false;
      if (!getLeafIndexList()
          .equals(other.getLeafIndexList())) return false;
      if (!getLeafOutputList()
          .equals(other.getLeafOutputList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TREEID_FIELD_NUMBER;
      hash = (53 * hash) + getTreeID().hashCode();
      if (getLeafIndexCount() > 0) {
        hash = (37 * hash) + LEAFINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getLeafIndexList().hashCode();
      }
      if (getLeafOutputCount() > 0) {
        hash = (37 * hash) + LEAFOUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getLeafOutputList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static TreeLeaves parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TreeLeaves parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TreeLeaves parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TreeLeaves parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TreeLeaves parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TreeLeaves parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TreeLeaves parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static TreeLeaves 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 TreeLeaves parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static TreeLeaves 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 TreeLeaves parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static TreeLeaves parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(TreeLeaves prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code TreeLeaves}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:TreeLeaves)
        TreeLeavesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_TreeLeaves_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_TreeLeaves_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                TreeLeaves.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.TreeLeaves.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        leafIndex_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        leafOutput_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_TreeLeaves_descriptor;
      }

      @Override
      public TreeLeaves getDefaultInstanceForType() {
        return TreeLeaves.getDefaultInstance();
      }

      @Override
      public TreeLeaves build() {
        TreeLeaves result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public TreeLeaves buildPartial() {
        TreeLeaves result = new TreeLeaves(this);
        int from_bitField0_ = bitField0_;
        result.treeID_ = treeID_;
        if (((bitField0_ & 0x00000001) != 0)) {
          leafIndex_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.leafIndex_ = leafIndex_;
        if (((bitField0_ & 0x00000002) != 0)) {
          leafOutput_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.leafOutput_ = leafOutput_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof TreeLeaves) {
          return mergeFrom((TreeLeaves)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(TreeLeaves other) {
        if (other == TreeLeaves.getDefaultInstance()) return this;
        if (!other.getTreeID().isEmpty()) {
          treeID_ = other.treeID_;
          onChanged();
        }
        if (!other.leafIndex_.isEmpty()) {
          if (leafIndex_.isEmpty()) {
            leafIndex_ = other.leafIndex_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureLeafIndexIsMutable();
            leafIndex_.addAll(other.leafIndex_);
          }
          onChanged();
        }
        if (!other.leafOutput_.isEmpty()) {
          if (leafOutput_.isEmpty()) {
            leafOutput_ = other.leafOutput_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureLeafOutputIsMutable();
            leafOutput_.addAll(other.leafOutput_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        TreeLeaves parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (TreeLeaves) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object treeID_ = "";
      /**
       * <code>string treeID = 1;</code>
       * @return The treeID.
       */
      public String getTreeID() {
        Object ref = treeID_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          treeID_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string treeID = 1;</code>
       * @return The bytes for treeID.
       */
      public com.google.protobuf.ByteString
          getTreeIDBytes() {
        Object ref = treeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          treeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string treeID = 1;</code>
       * @param value The treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        treeID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTreeID() {
        
        treeID_ = getDefaultInstance().getTreeID();
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 1;</code>
       * @param value The bytes for treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        treeID_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList leafIndex_ = emptyIntList();
      private void ensureLeafIndexIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          leafIndex_ = mutableCopy(leafIndex_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @return A list containing the leafIndex.
       */
      public java.util.List<Integer>
          getLeafIndexList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(leafIndex_) : leafIndex_;
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @return The count of leafIndex.
       */
      public int getLeafIndexCount() {
        return leafIndex_.size();
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @param index The index of the element to return.
       * @return The leafIndex at the given index.
       */
      public int getLeafIndex(int index) {
        return leafIndex_.getInt(index);
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @param index The index to set the value at.
       * @param value The leafIndex to set.
       * @return This builder for chaining.
       */
      public Builder setLeafIndex(
          int index, int value) {
        ensureLeafIndexIsMutable();
        leafIndex_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @param value The leafIndex to add.
       * @return This builder for chaining.
       */
      public Builder addLeafIndex(int value) {
        ensureLeafIndexIsMutable();
        leafIndex_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @param values The leafIndex to add.
       * @return This builder for chaining.
       */
      public Builder addAllLeafIndex(
          Iterable<? extends Integer> values) {
        ensureLeafIndexIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, leafIndex_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 leafIndex = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLeafIndex() {
        leafIndex_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList leafOutput_ = emptyFloatList();
      private void ensureLeafOutputIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          leafOutput_ = mutableCopy(leafOutput_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @return A list containing the leafOutput.
       */
      public java.util.List<Float>
          getLeafOutputList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(leafOutput_) : leafOutput_;
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @return The count of leafOutput.
       */
      public int getLeafOutputCount() {
        return leafOutput_.size();
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @param index The index of the element to return.
       * @return The leafOutput at the given index.
       */
      public float getLeafOutput(int index) {
        return leafOutput_.getFloat(index);
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @param index The index to set the value at.
       * @param value The leafOutput to set.
       * @return This builder for chaining.
       */
      public Builder setLeafOutput(
          int index, float value) {
        ensureLeafOutputIsMutable();
        leafOutput_.setFloat(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @param value The leafOutput to add.
       * @return This builder for chaining.
       */
      public Builder addLeafOutput(float value) {
        ensureLeafOutputIsMutable();
        leafOutput_.addFloat(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @param values The leafOutput to add.
       * @return This builder for chaining.
       */
      public Builder addAllLeafOutput(
          Iterable<? extends Float> values) {
        ensureLeafOutputIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, leafOutput_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float leafOutput = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLeafOutput() {
        leafOutput_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:TreeLeaves)
    }

    // @@protoc_insertion_point(class_scope:TreeLeaves)
    private static final TreeLeaves DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new TreeLeaves();
    }

    public static TreeLeaves getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public TreeLeaves getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadTreeLeavesRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadTreeLeavesRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>.TreeLeaves treeLeaves = 2;</code>
     * @return Whether the treeLeaves field is set.
     */
    boolean hasTreeLeaves();
    /**
     * <code>.TreeLeaves treeLeaves = 2;</code>
     * @return The treeLeaves.
     */
    TreeLeaves getTreeLeaves();
    /**
     * <code>.TreeLeaves treeLeaves = 2;</code>
     */
    TreeLeavesOrBuilder getTreeLeavesOrBuilder();
  }
  /**
   * Protobuf type {@code UploadTreeLeavesRequest}
   */
  public static final class UploadTreeLeavesRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:UploadTreeLeavesRequest)
      UploadTreeLeavesRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadTreeLeavesRequest.newBuilder() to construct.
    private UploadTreeLeavesRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadTreeLeavesRequest() {
      clientuuid_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadTreeLeavesRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadTreeLeavesRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              TreeLeaves.Builder subBuilder = null;
              if (treeLeaves_ != null) {
                subBuilder = treeLeaves_.toBuilder();
              }
              treeLeaves_ = input.readMessage(TreeLeaves.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(treeLeaves_);
                treeLeaves_ = subBuilder.buildPartial();
              }

              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 FLProto.internal_static_UploadTreeLeavesRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadTreeLeavesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadTreeLeavesRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TREELEAVES_FIELD_NUMBER = 2;
    private TreeLeaves treeLeaves_;
    /**
     * <code>.TreeLeaves treeLeaves = 2;</code>
     * @return Whether the treeLeaves field is set.
     */
    @Override
    public boolean hasTreeLeaves() {
      return treeLeaves_ != null;
    }
    /**
     * <code>.TreeLeaves treeLeaves = 2;</code>
     * @return The treeLeaves.
     */
    @Override
    public TreeLeaves getTreeLeaves() {
      return treeLeaves_ == null ? TreeLeaves.getDefaultInstance() : treeLeaves_;
    }
    /**
     * <code>.TreeLeaves treeLeaves = 2;</code>
     */
    @Override
    public TreeLeavesOrBuilder getTreeLeavesOrBuilder() {
      return getTreeLeaves();
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (treeLeaves_ != null) {
        output.writeMessage(2, getTreeLeaves());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (treeLeaves_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTreeLeaves());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadTreeLeavesRequest)) {
        return super.equals(obj);
      }
      UploadTreeLeavesRequest other = (UploadTreeLeavesRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (hasTreeLeaves() != other.hasTreeLeaves()) return false;
      if (hasTreeLeaves()) {
        if (!getTreeLeaves()
            .equals(other.getTreeLeaves())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      if (hasTreeLeaves()) {
        hash = (37 * hash) + TREELEAVES_FIELD_NUMBER;
        hash = (53 * hash) + getTreeLeaves().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadTreeLeavesRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadTreeLeavesRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadTreeLeavesRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadTreeLeavesRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadTreeLeavesRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadTreeLeavesRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadTreeLeavesRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadTreeLeavesRequest 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 UploadTreeLeavesRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadTreeLeavesRequest 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 UploadTreeLeavesRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadTreeLeavesRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadTreeLeavesRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadTreeLeavesRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadTreeLeavesRequest)
        UploadTreeLeavesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadTreeLeavesRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadTreeLeavesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadTreeLeavesRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadTreeLeavesRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (treeLeavesBuilder_ == null) {
          treeLeaves_ = null;
        } else {
          treeLeaves_ = null;
          treeLeavesBuilder_ = null;
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadTreeLeavesRequest_descriptor;
      }

      @Override
      public UploadTreeLeavesRequest getDefaultInstanceForType() {
        return UploadTreeLeavesRequest.getDefaultInstance();
      }

      @Override
      public UploadTreeLeavesRequest build() {
        UploadTreeLeavesRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadTreeLeavesRequest buildPartial() {
        UploadTreeLeavesRequest result = new UploadTreeLeavesRequest(this);
        result.clientuuid_ = clientuuid_;
        if (treeLeavesBuilder_ == null) {
          result.treeLeaves_ = treeLeaves_;
        } else {
          result.treeLeaves_ = treeLeavesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadTreeLeavesRequest) {
          return mergeFrom((UploadTreeLeavesRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadTreeLeavesRequest other) {
        if (other == UploadTreeLeavesRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (other.hasTreeLeaves()) {
          mergeTreeLeaves(other.getTreeLeaves());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadTreeLeavesRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadTreeLeavesRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

      private TreeLeaves treeLeaves_;
      private com.google.protobuf.SingleFieldBuilderV3<
          TreeLeaves, TreeLeaves.Builder, TreeLeavesOrBuilder> treeLeavesBuilder_;
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       * @return Whether the treeLeaves field is set.
       */
      public boolean hasTreeLeaves() {
        return treeLeavesBuilder_ != null || treeLeaves_ != null;
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       * @return The treeLeaves.
       */
      public TreeLeaves getTreeLeaves() {
        if (treeLeavesBuilder_ == null) {
          return treeLeaves_ == null ? TreeLeaves.getDefaultInstance() : treeLeaves_;
        } else {
          return treeLeavesBuilder_.getMessage();
        }
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      public Builder setTreeLeaves(TreeLeaves value) {
        if (treeLeavesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          treeLeaves_ = value;
          onChanged();
        } else {
          treeLeavesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      public Builder setTreeLeaves(
          TreeLeaves.Builder builderForValue) {
        if (treeLeavesBuilder_ == null) {
          treeLeaves_ = builderForValue.build();
          onChanged();
        } else {
          treeLeavesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      public Builder mergeTreeLeaves(TreeLeaves value) {
        if (treeLeavesBuilder_ == null) {
          if (treeLeaves_ != null) {
            treeLeaves_ =
              TreeLeaves.newBuilder(treeLeaves_).mergeFrom(value).buildPartial();
          } else {
            treeLeaves_ = value;
          }
          onChanged();
        } else {
          treeLeavesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      public Builder clearTreeLeaves() {
        if (treeLeavesBuilder_ == null) {
          treeLeaves_ = null;
          onChanged();
        } else {
          treeLeaves_ = null;
          treeLeavesBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      public TreeLeaves.Builder getTreeLeavesBuilder() {
        
        onChanged();
        return getTreeLeavesFieldBuilder().getBuilder();
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      public TreeLeavesOrBuilder getTreeLeavesOrBuilder() {
        if (treeLeavesBuilder_ != null) {
          return treeLeavesBuilder_.getMessageOrBuilder();
        } else {
          return treeLeaves_ == null ?
              TreeLeaves.getDefaultInstance() : treeLeaves_;
        }
      }
      /**
       * <code>.TreeLeaves treeLeaves = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          TreeLeaves, TreeLeaves.Builder, TreeLeavesOrBuilder>
          getTreeLeavesFieldBuilder() {
        if (treeLeavesBuilder_ == null) {
          treeLeavesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              TreeLeaves, TreeLeaves.Builder, TreeLeavesOrBuilder>(
                  getTreeLeaves(),
                  getParentForChildren(),
                  isClean());
          treeLeaves_ = null;
        }
        return treeLeavesBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadTreeLeavesRequest)
    }

    // @@protoc_insertion_point(class_scope:UploadTreeLeavesRequest)
    private static final UploadTreeLeavesRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadTreeLeavesRequest();
    }

    public static UploadTreeLeavesRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadTreeLeavesRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DataSplitOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DataSplit)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string treeID = 1;</code>
     * @return The treeID.
     */
    String getTreeID();
    /**
     * <code>string treeID = 1;</code>
     * @return The bytes for treeID.
     */
    com.google.protobuf.ByteString
        getTreeIDBytes();

    /**
     * <code>string nodeID = 2;</code>
     * @return The nodeID.
     */
    String getNodeID();
    /**
     * <code>string nodeID = 2;</code>
     * @return The bytes for nodeID.
     */
    com.google.protobuf.ByteString
        getNodeIDBytes();

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

    /**
     * <code>float splitValue = 4;</code>
     * @return The splitValue.
     */
    float getSplitValue();

    /**
     * <code>float gain = 5;</code>
     * @return The gain.
     */
    float getGain();

    /**
     * <code>int32 setLength = 6;</code>
     * @return The setLength.
     */
    int getSetLength();

    /**
     * <code>repeated int32 itemSet = 7;</code>
     * @return A list containing the itemSet.
     */
    java.util.List<Integer> getItemSetList();
    /**
     * <code>repeated int32 itemSet = 7;</code>
     * @return The count of itemSet.
     */
    int getItemSetCount();
    /**
     * <code>repeated int32 itemSet = 7;</code>
     * @param index The index of the element to return.
     * @return The itemSet at the given index.
     */
    int getItemSet(int index);

    /**
     * <code>string clientUid = 8;</code>
     * @return The clientUid.
     */
    String getClientUid();
    /**
     * <code>string clientUid = 8;</code>
     * @return The bytes for clientUid.
     */
    com.google.protobuf.ByteString
        getClientUidBytes();
  }
  /**
   * Protobuf type {@code DataSplit}
   */
  public static final class DataSplit extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:DataSplit)
      DataSplitOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DataSplit.newBuilder() to construct.
    private DataSplit(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DataSplit() {
      treeID_ = "";
      nodeID_ = "";
      itemSet_ = emptyIntList();
      clientUid_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DataSplit();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DataSplit(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              treeID_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              nodeID_ = s;
              break;
            }
            case 24: {

              featureID_ = input.readInt32();
              break;
            }
            case 37: {

              splitValue_ = input.readFloat();
              break;
            }
            case 45: {

              gain_ = input.readFloat();
              break;
            }
            case 48: {

              setLength_ = input.readInt32();
              break;
            }
            case 56: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                itemSet_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              itemSet_.addInt(input.readInt32());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                itemSet_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                itemSet_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 66: {
              String s = input.readStringRequireUtf8();

              clientUid_ = 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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          itemSet_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_DataSplit_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DataSplit_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DataSplit.class, Builder.class);
    }

    public static final int TREEID_FIELD_NUMBER = 1;
    private volatile Object treeID_;
    /**
     * <code>string treeID = 1;</code>
     * @return The treeID.
     */
    @Override
    public String getTreeID() {
      Object ref = treeID_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        treeID_ = s;
        return s;
      }
    }
    /**
     * <code>string treeID = 1;</code>
     * @return The bytes for treeID.
     */
    @Override
    public com.google.protobuf.ByteString
        getTreeIDBytes() {
      Object ref = treeID_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        treeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODEID_FIELD_NUMBER = 2;
    private volatile Object nodeID_;
    /**
     * <code>string nodeID = 2;</code>
     * @return The nodeID.
     */
    @Override
    public String getNodeID() {
      Object ref = nodeID_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        nodeID_ = s;
        return s;
      }
    }
    /**
     * <code>string nodeID = 2;</code>
     * @return The bytes for nodeID.
     */
    @Override
    public com.google.protobuf.ByteString
        getNodeIDBytes() {
      Object ref = nodeID_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        nodeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FEATUREID_FIELD_NUMBER = 3;
    private int featureID_;
    /**
     * <code>int32 featureID = 3;</code>
     * @return The featureID.
     */
    @Override
    public int getFeatureID() {
      return featureID_;
    }

    public static final int SPLITVALUE_FIELD_NUMBER = 4;
    private float splitValue_;
    /**
     * <code>float splitValue = 4;</code>
     * @return The splitValue.
     */
    @Override
    public float getSplitValue() {
      return splitValue_;
    }

    public static final int GAIN_FIELD_NUMBER = 5;
    private float gain_;
    /**
     * <code>float gain = 5;</code>
     * @return The gain.
     */
    @Override
    public float getGain() {
      return gain_;
    }

    public static final int SETLENGTH_FIELD_NUMBER = 6;
    private int setLength_;
    /**
     * <code>int32 setLength = 6;</code>
     * @return The setLength.
     */
    @Override
    public int getSetLength() {
      return setLength_;
    }

    public static final int ITEMSET_FIELD_NUMBER = 7;
    private com.google.protobuf.Internal.IntList itemSet_;
    /**
     * <code>repeated int32 itemSet = 7;</code>
     * @return A list containing the itemSet.
     */
    @Override
    public java.util.List<Integer>
        getItemSetList() {
      return itemSet_;
    }
    /**
     * <code>repeated int32 itemSet = 7;</code>
     * @return The count of itemSet.
     */
    public int getItemSetCount() {
      return itemSet_.size();
    }
    /**
     * <code>repeated int32 itemSet = 7;</code>
     * @param index The index of the element to return.
     * @return The itemSet at the given index.
     */
    public int getItemSet(int index) {
      return itemSet_.getInt(index);
    }
    private int itemSetMemoizedSerializedSize = -1;

    public static final int CLIENTUID_FIELD_NUMBER = 8;
    private volatile Object clientUid_;
    /**
     * <code>string clientUid = 8;</code>
     * @return The clientUid.
     */
    @Override
    public String getClientUid() {
      Object ref = clientUid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientUid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientUid = 8;</code>
     * @return The bytes for clientUid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientUidBytes() {
      Object ref = clientUid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientUid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!getTreeIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, treeID_);
      }
      if (!getNodeIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nodeID_);
      }
      if (featureID_ != 0) {
        output.writeInt32(3, featureID_);
      }
      if (splitValue_ != 0F) {
        output.writeFloat(4, splitValue_);
      }
      if (gain_ != 0F) {
        output.writeFloat(5, gain_);
      }
      if (setLength_ != 0) {
        output.writeInt32(6, setLength_);
      }
      if (getItemSetList().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(itemSetMemoizedSerializedSize);
      }
      for (int i = 0; i < itemSet_.size(); i++) {
        output.writeInt32NoTag(itemSet_.getInt(i));
      }
      if (!getClientUidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, clientUid_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTreeIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, treeID_);
      }
      if (!getNodeIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nodeID_);
      }
      if (featureID_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, featureID_);
      }
      if (splitValue_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, splitValue_);
      }
      if (gain_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(5, gain_);
      }
      if (setLength_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, setLength_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < itemSet_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(itemSet_.getInt(i));
        }
        size += dataSize;
        if (!getItemSetList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        itemSetMemoizedSerializedSize = dataSize;
      }
      if (!getClientUidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, clientUid_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DataSplit)) {
        return super.equals(obj);
      }
      DataSplit other = (DataSplit) obj;

      if (!getTreeID()
          .equals(other.getTreeID())) return false;
      if (!getNodeID()
          .equals(other.getNodeID())) return false;
      if (getFeatureID()
          != other.getFeatureID()) return false;
      if (Float.floatToIntBits(getSplitValue())
          != Float.floatToIntBits(
              other.getSplitValue())) return false;
      if (Float.floatToIntBits(getGain())
          != Float.floatToIntBits(
              other.getGain())) return false;
      if (getSetLength()
          != other.getSetLength()) return false;
      if (!getItemSetList()
          .equals(other.getItemSetList())) return false;
      if (!getClientUid()
          .equals(other.getClientUid())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TREEID_FIELD_NUMBER;
      hash = (53 * hash) + getTreeID().hashCode();
      hash = (37 * hash) + NODEID_FIELD_NUMBER;
      hash = (53 * hash) + getNodeID().hashCode();
      hash = (37 * hash) + FEATUREID_FIELD_NUMBER;
      hash = (53 * hash) + getFeatureID();
      hash = (37 * hash) + SPLITVALUE_FIELD_NUMBER;
      hash = (53 * hash) + Float.floatToIntBits(
          getSplitValue());
      hash = (37 * hash) + GAIN_FIELD_NUMBER;
      hash = (53 * hash) + Float.floatToIntBits(
          getGain());
      hash = (37 * hash) + SETLENGTH_FIELD_NUMBER;
      hash = (53 * hash) + getSetLength();
      if (getItemSetCount() > 0) {
        hash = (37 * hash) + ITEMSET_FIELD_NUMBER;
        hash = (53 * hash) + getItemSetList().hashCode();
      }
      hash = (37 * hash) + CLIENTUID_FIELD_NUMBER;
      hash = (53 * hash) + getClientUid().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DataSplit parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DataSplit parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DataSplit parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DataSplit parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DataSplit parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DataSplit parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DataSplit parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DataSplit 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 DataSplit parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DataSplit 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 DataSplit parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DataSplit parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DataSplit prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DataSplit}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DataSplit)
        DataSplitOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DataSplit_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DataSplit_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DataSplit.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DataSplit.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        nodeID_ = "";

        featureID_ = 0;

        splitValue_ = 0F;

        gain_ = 0F;

        setLength_ = 0;

        itemSet_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        clientUid_ = "";

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DataSplit_descriptor;
      }

      @Override
      public DataSplit getDefaultInstanceForType() {
        return DataSplit.getDefaultInstance();
      }

      @Override
      public DataSplit build() {
        DataSplit result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DataSplit buildPartial() {
        DataSplit result = new DataSplit(this);
        int from_bitField0_ = bitField0_;
        result.treeID_ = treeID_;
        result.nodeID_ = nodeID_;
        result.featureID_ = featureID_;
        result.splitValue_ = splitValue_;
        result.gain_ = gain_;
        result.setLength_ = setLength_;
        if (((bitField0_ & 0x00000001) != 0)) {
          itemSet_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.itemSet_ = itemSet_;
        result.clientUid_ = clientUid_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DataSplit) {
          return mergeFrom((DataSplit)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DataSplit other) {
        if (other == DataSplit.getDefaultInstance()) return this;
        if (!other.getTreeID().isEmpty()) {
          treeID_ = other.treeID_;
          onChanged();
        }
        if (!other.getNodeID().isEmpty()) {
          nodeID_ = other.nodeID_;
          onChanged();
        }
        if (other.getFeatureID() != 0) {
          setFeatureID(other.getFeatureID());
        }
        if (other.getSplitValue() != 0F) {
          setSplitValue(other.getSplitValue());
        }
        if (other.getGain() != 0F) {
          setGain(other.getGain());
        }
        if (other.getSetLength() != 0) {
          setSetLength(other.getSetLength());
        }
        if (!other.itemSet_.isEmpty()) {
          if (itemSet_.isEmpty()) {
            itemSet_ = other.itemSet_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureItemSetIsMutable();
            itemSet_.addAll(other.itemSet_);
          }
          onChanged();
        }
        if (!other.getClientUid().isEmpty()) {
          clientUid_ = other.clientUid_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DataSplit parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DataSplit) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object treeID_ = "";
      /**
       * <code>string treeID = 1;</code>
       * @return The treeID.
       */
      public String getTreeID() {
        Object ref = treeID_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          treeID_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string treeID = 1;</code>
       * @return The bytes for treeID.
       */
      public com.google.protobuf.ByteString
          getTreeIDBytes() {
        Object ref = treeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          treeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string treeID = 1;</code>
       * @param value The treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        treeID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTreeID() {
        
        treeID_ = getDefaultInstance().getTreeID();
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 1;</code>
       * @param value The bytes for treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        treeID_ = value;
        onChanged();
        return this;
      }

      private Object nodeID_ = "";
      /**
       * <code>string nodeID = 2;</code>
       * @return The nodeID.
       */
      public String getNodeID() {
        Object ref = nodeID_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          nodeID_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string nodeID = 2;</code>
       * @return The bytes for nodeID.
       */
      public com.google.protobuf.ByteString
          getNodeIDBytes() {
        Object ref = nodeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          nodeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string nodeID = 2;</code>
       * @param value The nodeID to set.
       * @return This builder for chaining.
       */
      public Builder setNodeID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        nodeID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string nodeID = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeID() {
        
        nodeID_ = getDefaultInstance().getNodeID();
        onChanged();
        return this;
      }
      /**
       * <code>string nodeID = 2;</code>
       * @param value The bytes for nodeID to set.
       * @return This builder for chaining.
       */
      public Builder setNodeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        nodeID_ = value;
        onChanged();
        return this;
      }

      private int featureID_ ;
      /**
       * <code>int32 featureID = 3;</code>
       * @return The featureID.
       */
      @Override
      public int getFeatureID() {
        return featureID_;
      }
      /**
       * <code>int32 featureID = 3;</code>
       * @param value The featureID to set.
       * @return This builder for chaining.
       */
      public Builder setFeatureID(int value) {
        
        featureID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 featureID = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFeatureID() {
        
        featureID_ = 0;
        onChanged();
        return this;
      }

      private float splitValue_ ;
      /**
       * <code>float splitValue = 4;</code>
       * @return The splitValue.
       */
      @Override
      public float getSplitValue() {
        return splitValue_;
      }
      /**
       * <code>float splitValue = 4;</code>
       * @param value The splitValue to set.
       * @return This builder for chaining.
       */
      public Builder setSplitValue(float value) {
        
        splitValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float splitValue = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSplitValue() {
        
        splitValue_ = 0F;
        onChanged();
        return this;
      }

      private float gain_ ;
      /**
       * <code>float gain = 5;</code>
       * @return The gain.
       */
      @Override
      public float getGain() {
        return gain_;
      }
      /**
       * <code>float gain = 5;</code>
       * @param value The gain to set.
       * @return This builder for chaining.
       */
      public Builder setGain(float value) {
        
        gain_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float gain = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearGain() {
        
        gain_ = 0F;
        onChanged();
        return this;
      }

      private int setLength_ ;
      /**
       * <code>int32 setLength = 6;</code>
       * @return The setLength.
       */
      @Override
      public int getSetLength() {
        return setLength_;
      }
      /**
       * <code>int32 setLength = 6;</code>
       * @param value The setLength to set.
       * @return This builder for chaining.
       */
      public Builder setSetLength(int value) {
        
        setLength_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 setLength = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearSetLength() {
        
        setLength_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList itemSet_ = emptyIntList();
      private void ensureItemSetIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          itemSet_ = mutableCopy(itemSet_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @return A list containing the itemSet.
       */
      public java.util.List<Integer>
          getItemSetList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(itemSet_) : itemSet_;
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @return The count of itemSet.
       */
      public int getItemSetCount() {
        return itemSet_.size();
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @param index The index of the element to return.
       * @return The itemSet at the given index.
       */
      public int getItemSet(int index) {
        return itemSet_.getInt(index);
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @param index The index to set the value at.
       * @param value The itemSet to set.
       * @return This builder for chaining.
       */
      public Builder setItemSet(
          int index, int value) {
        ensureItemSetIsMutable();
        itemSet_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @param value The itemSet to add.
       * @return This builder for chaining.
       */
      public Builder addItemSet(int value) {
        ensureItemSetIsMutable();
        itemSet_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @param values The itemSet to add.
       * @return This builder for chaining.
       */
      public Builder addAllItemSet(
          Iterable<? extends Integer> values) {
        ensureItemSetIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, itemSet_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 itemSet = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearItemSet() {
        itemSet_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private Object clientUid_ = "";
      /**
       * <code>string clientUid = 8;</code>
       * @return The clientUid.
       */
      public String getClientUid() {
        Object ref = clientUid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientUid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientUid = 8;</code>
       * @return The bytes for clientUid.
       */
      public com.google.protobuf.ByteString
          getClientUidBytes() {
        Object ref = clientUid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientUid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientUid = 8;</code>
       * @param value The clientUid to set.
       * @return This builder for chaining.
       */
      public Builder setClientUid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientUid = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientUid() {
        
        clientUid_ = getDefaultInstance().getClientUid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientUid = 8;</code>
       * @param value The bytes for clientUid to set.
       * @return This builder for chaining.
       */
      public Builder setClientUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientUid_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DataSplit)
    }

    // @@protoc_insertion_point(class_scope:DataSplit)
    private static final DataSplit DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DataSplit();
    }

    public static DataSplit getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DataSplit getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TreePredictOrBuilder extends
      // @@protoc_insertion_point(interface_extends:TreePredict)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string treeID = 1;</code>
     * @return The treeID.
     */
    String getTreeID();
    /**
     * <code>string treeID = 1;</code>
     * @return The bytes for treeID.
     */
    com.google.protobuf.ByteString
        getTreeIDBytes();

    /**
     * <code>repeated bool predicts = 2;</code>
     * @return A list containing the predicts.
     */
    java.util.List<Boolean> getPredictsList();
    /**
     * <code>repeated bool predicts = 2;</code>
     * @return The count of predicts.
     */
    int getPredictsCount();
    /**
     * <code>repeated bool predicts = 2;</code>
     * @param index The index of the element to return.
     * @return The predicts at the given index.
     */
    boolean getPredicts(int index);
  }
  /**
   * Protobuf type {@code TreePredict}
   */
  public static final class TreePredict extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:TreePredict)
      TreePredictOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TreePredict.newBuilder() to construct.
    private TreePredict(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TreePredict() {
      treeID_ = "";
      predicts_ = emptyBooleanList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new TreePredict();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TreePredict(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              treeID_ = s;
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                predicts_ = newBooleanList();
                mutable_bitField0_ |= 0x00000001;
              }
              predicts_.addBoolean(input.readBool());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                predicts_ = newBooleanList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                predicts_.addBoolean(input.readBool());
              }
              input.popLimit(limit);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          predicts_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_TreePredict_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_TreePredict_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              TreePredict.class, Builder.class);
    }

    public static final int TREEID_FIELD_NUMBER = 1;
    private volatile Object treeID_;
    /**
     * <code>string treeID = 1;</code>
     * @return The treeID.
     */
    @Override
    public String getTreeID() {
      Object ref = treeID_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        treeID_ = s;
        return s;
      }
    }
    /**
     * <code>string treeID = 1;</code>
     * @return The bytes for treeID.
     */
    @Override
    public com.google.protobuf.ByteString
        getTreeIDBytes() {
      Object ref = treeID_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        treeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PREDICTS_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.BooleanList predicts_;
    /**
     * <code>repeated bool predicts = 2;</code>
     * @return A list containing the predicts.
     */
    @Override
    public java.util.List<Boolean>
        getPredictsList() {
      return predicts_;
    }
    /**
     * <code>repeated bool predicts = 2;</code>
     * @return The count of predicts.
     */
    public int getPredictsCount() {
      return predicts_.size();
    }
    /**
     * <code>repeated bool predicts = 2;</code>
     * @param index The index of the element to return.
     * @return The predicts at the given index.
     */
    public boolean getPredicts(int index) {
      return predicts_.getBoolean(index);
    }
    private int predictsMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!getTreeIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, treeID_);
      }
      if (getPredictsList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(predictsMemoizedSerializedSize);
      }
      for (int i = 0; i < predicts_.size(); i++) {
        output.writeBoolNoTag(predicts_.getBoolean(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTreeIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, treeID_);
      }
      {
        int dataSize = 0;
        dataSize = 1 * getPredictsList().size();
        size += dataSize;
        if (!getPredictsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        predictsMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof TreePredict)) {
        return super.equals(obj);
      }
      TreePredict other = (TreePredict) obj;

      if (!getTreeID()
          .equals(other.getTreeID())) return false;
      if (!getPredictsList()
          .equals(other.getPredictsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TREEID_FIELD_NUMBER;
      hash = (53 * hash) + getTreeID().hashCode();
      if (getPredictsCount() > 0) {
        hash = (37 * hash) + PREDICTS_FIELD_NUMBER;
        hash = (53 * hash) + getPredictsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static TreePredict parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TreePredict parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TreePredict parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TreePredict parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TreePredict parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static TreePredict parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static TreePredict parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static TreePredict 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 TreePredict parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static TreePredict 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 TreePredict parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static TreePredict parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(TreePredict prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code TreePredict}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:TreePredict)
        TreePredictOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_TreePredict_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_TreePredict_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                TreePredict.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.TreePredict.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        predicts_ = emptyBooleanList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_TreePredict_descriptor;
      }

      @Override
      public TreePredict getDefaultInstanceForType() {
        return TreePredict.getDefaultInstance();
      }

      @Override
      public TreePredict build() {
        TreePredict result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public TreePredict buildPartial() {
        TreePredict result = new TreePredict(this);
        int from_bitField0_ = bitField0_;
        result.treeID_ = treeID_;
        if (((bitField0_ & 0x00000001) != 0)) {
          predicts_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.predicts_ = predicts_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof TreePredict) {
          return mergeFrom((TreePredict)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(TreePredict other) {
        if (other == TreePredict.getDefaultInstance()) return this;
        if (!other.getTreeID().isEmpty()) {
          treeID_ = other.treeID_;
          onChanged();
        }
        if (!other.predicts_.isEmpty()) {
          if (predicts_.isEmpty()) {
            predicts_ = other.predicts_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensurePredictsIsMutable();
            predicts_.addAll(other.predicts_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        TreePredict parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (TreePredict) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object treeID_ = "";
      /**
       * <code>string treeID = 1;</code>
       * @return The treeID.
       */
      public String getTreeID() {
        Object ref = treeID_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          treeID_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string treeID = 1;</code>
       * @return The bytes for treeID.
       */
      public com.google.protobuf.ByteString
          getTreeIDBytes() {
        Object ref = treeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          treeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string treeID = 1;</code>
       * @param value The treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        treeID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTreeID() {
        
        treeID_ = getDefaultInstance().getTreeID();
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 1;</code>
       * @param value The bytes for treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        treeID_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList predicts_ = emptyBooleanList();
      private void ensurePredictsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          predicts_ = mutableCopy(predicts_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @return A list containing the predicts.
       */
      public java.util.List<Boolean>
          getPredictsList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(predicts_) : predicts_;
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @return The count of predicts.
       */
      public int getPredictsCount() {
        return predicts_.size();
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @param index The index of the element to return.
       * @return The predicts at the given index.
       */
      public boolean getPredicts(int index) {
        return predicts_.getBoolean(index);
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @param index The index to set the value at.
       * @param value The predicts to set.
       * @return This builder for chaining.
       */
      public Builder setPredicts(
          int index, boolean value) {
        ensurePredictsIsMutable();
        predicts_.setBoolean(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @param value The predicts to add.
       * @return This builder for chaining.
       */
      public Builder addPredicts(boolean value) {
        ensurePredictsIsMutable();
        predicts_.addBoolean(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @param values The predicts to add.
       * @return This builder for chaining.
       */
      public Builder addAllPredicts(
          Iterable<? extends Boolean> values) {
        ensurePredictsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, predicts_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool predicts = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPredicts() {
        predicts_ = emptyBooleanList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:TreePredict)
    }

    // @@protoc_insertion_point(class_scope:TreePredict)
    private static final TreePredict DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new TreePredict();
    }

    public static TreePredict getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public TreePredict getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoostPredictOrBuilder extends
      // @@protoc_insertion_point(interface_extends:BoostPredict)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    java.util.List<TreePredict>
        getPredictsList();
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    TreePredict getPredicts(int index);
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    int getPredictsCount();
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    java.util.List<? extends TreePredictOrBuilder>
        getPredictsOrBuilderList();
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    TreePredictOrBuilder getPredictsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code BoostPredict}
   */
  public static final class BoostPredict extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:BoostPredict)
      BoostPredictOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoostPredict.newBuilder() to construct.
    private BoostPredict(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoostPredict() {
      predicts_ = java.util.Collections.emptyList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoostPredict();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoostPredict(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                predicts_ = new java.util.ArrayList<TreePredict>();
                mutable_bitField0_ |= 0x00000001;
              }
              predicts_.add(
                  input.readMessage(TreePredict.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          predicts_ = java.util.Collections.unmodifiableList(predicts_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_BoostPredict_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_BoostPredict_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              BoostPredict.class, Builder.class);
    }

    public static final int PREDICTS_FIELD_NUMBER = 1;
    private java.util.List<TreePredict> predicts_;
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    @Override
    public java.util.List<TreePredict> getPredictsList() {
      return predicts_;
    }
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    @Override
    public java.util.List<? extends TreePredictOrBuilder>
        getPredictsOrBuilderList() {
      return predicts_;
    }
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    @Override
    public int getPredictsCount() {
      return predicts_.size();
    }
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    @Override
    public TreePredict getPredicts(int index) {
      return predicts_.get(index);
    }
    /**
     * <code>repeated .TreePredict predicts = 1;</code>
     */
    @Override
    public TreePredictOrBuilder getPredictsOrBuilder(
        int index) {
      return predicts_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < predicts_.size(); i++) {
        output.writeMessage(1, predicts_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < predicts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, predicts_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof BoostPredict)) {
        return super.equals(obj);
      }
      BoostPredict other = (BoostPredict) obj;

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

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPredictsCount() > 0) {
        hash = (37 * hash) + PREDICTS_FIELD_NUMBER;
        hash = (53 * hash) + getPredictsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static BoostPredict parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static BoostPredict parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static BoostPredict parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static BoostPredict parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static BoostPredict parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static BoostPredict parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static BoostPredict parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static BoostPredict 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 BoostPredict parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static BoostPredict 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 BoostPredict parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static BoostPredict parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(BoostPredict prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BoostPredict}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:BoostPredict)
        BoostPredictOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_BoostPredict_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_BoostPredict_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                BoostPredict.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.BoostPredict.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPredictsFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (predictsBuilder_ == null) {
          predicts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          predictsBuilder_.clear();
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_BoostPredict_descriptor;
      }

      @Override
      public BoostPredict getDefaultInstanceForType() {
        return BoostPredict.getDefaultInstance();
      }

      @Override
      public BoostPredict build() {
        BoostPredict result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public BoostPredict buildPartial() {
        BoostPredict result = new BoostPredict(this);
        int from_bitField0_ = bitField0_;
        if (predictsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            predicts_ = java.util.Collections.unmodifiableList(predicts_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.predicts_ = predicts_;
        } else {
          result.predicts_ = predictsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof BoostPredict) {
          return mergeFrom((BoostPredict)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(BoostPredict other) {
        if (other == BoostPredict.getDefaultInstance()) return this;
        if (predictsBuilder_ == null) {
          if (!other.predicts_.isEmpty()) {
            if (predicts_.isEmpty()) {
              predicts_ = other.predicts_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePredictsIsMutable();
              predicts_.addAll(other.predicts_);
            }
            onChanged();
          }
        } else {
          if (!other.predicts_.isEmpty()) {
            if (predictsBuilder_.isEmpty()) {
              predictsBuilder_.dispose();
              predictsBuilder_ = null;
              predicts_ = other.predicts_;
              bitField0_ = (bitField0_ & ~0x00000001);
              predictsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPredictsFieldBuilder() : null;
            } else {
              predictsBuilder_.addAllMessages(other.predicts_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        BoostPredict parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (BoostPredict) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<TreePredict> predicts_ =
        java.util.Collections.emptyList();
      private void ensurePredictsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          predicts_ = new java.util.ArrayList<TreePredict>(predicts_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          TreePredict, TreePredict.Builder, TreePredictOrBuilder> predictsBuilder_;

      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public java.util.List<TreePredict> getPredictsList() {
        if (predictsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(predicts_);
        } else {
          return predictsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public int getPredictsCount() {
        if (predictsBuilder_ == null) {
          return predicts_.size();
        } else {
          return predictsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public TreePredict getPredicts(int index) {
        if (predictsBuilder_ == null) {
          return predicts_.get(index);
        } else {
          return predictsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder setPredicts(
          int index, TreePredict value) {
        if (predictsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredictsIsMutable();
          predicts_.set(index, value);
          onChanged();
        } else {
          predictsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder setPredicts(
          int index, TreePredict.Builder builderForValue) {
        if (predictsBuilder_ == null) {
          ensurePredictsIsMutable();
          predicts_.set(index, builderForValue.build());
          onChanged();
        } else {
          predictsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder addPredicts(TreePredict value) {
        if (predictsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredictsIsMutable();
          predicts_.add(value);
          onChanged();
        } else {
          predictsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder addPredicts(
          int index, TreePredict value) {
        if (predictsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredictsIsMutable();
          predicts_.add(index, value);
          onChanged();
        } else {
          predictsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder addPredicts(
          TreePredict.Builder builderForValue) {
        if (predictsBuilder_ == null) {
          ensurePredictsIsMutable();
          predicts_.add(builderForValue.build());
          onChanged();
        } else {
          predictsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder addPredicts(
          int index, TreePredict.Builder builderForValue) {
        if (predictsBuilder_ == null) {
          ensurePredictsIsMutable();
          predicts_.add(index, builderForValue.build());
          onChanged();
        } else {
          predictsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder addAllPredicts(
          Iterable<? extends TreePredict> values) {
        if (predictsBuilder_ == null) {
          ensurePredictsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, predicts_);
          onChanged();
        } else {
          predictsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder clearPredicts() {
        if (predictsBuilder_ == null) {
          predicts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          predictsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public Builder removePredicts(int index) {
        if (predictsBuilder_ == null) {
          ensurePredictsIsMutable();
          predicts_.remove(index);
          onChanged();
        } else {
          predictsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public TreePredict.Builder getPredictsBuilder(
          int index) {
        return getPredictsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public TreePredictOrBuilder getPredictsOrBuilder(
          int index) {
        if (predictsBuilder_ == null) {
          return predicts_.get(index);  } else {
          return predictsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public java.util.List<? extends TreePredictOrBuilder>
           getPredictsOrBuilderList() {
        if (predictsBuilder_ != null) {
          return predictsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(predicts_);
        }
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public TreePredict.Builder addPredictsBuilder() {
        return getPredictsFieldBuilder().addBuilder(
            TreePredict.getDefaultInstance());
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public TreePredict.Builder addPredictsBuilder(
          int index) {
        return getPredictsFieldBuilder().addBuilder(
            index, TreePredict.getDefaultInstance());
      }
      /**
       * <code>repeated .TreePredict predicts = 1;</code>
       */
      public java.util.List<TreePredict.Builder>
           getPredictsBuilderList() {
        return getPredictsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          TreePredict, TreePredict.Builder, TreePredictOrBuilder>
          getPredictsFieldBuilder() {
        if (predictsBuilder_ == null) {
          predictsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              TreePredict, TreePredict.Builder, TreePredictOrBuilder>(
                  predicts_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          predicts_ = null;
        }
        return predictsBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:BoostPredict)
    }

    // @@protoc_insertion_point(class_scope:BoostPredict)
    private static final BoostPredict DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new BoostPredict();
    }

    public static BoostPredict getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public BoostPredict getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoostEvalOrBuilder extends
      // @@protoc_insertion_point(interface_extends:BoostEval)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    java.util.List<TreePredict>
        getEvaluatesList();
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    TreePredict getEvaluates(int index);
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    int getEvaluatesCount();
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    java.util.List<? extends TreePredictOrBuilder>
        getEvaluatesOrBuilderList();
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    TreePredictOrBuilder getEvaluatesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code BoostEval}
   */
  public static final class BoostEval extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:BoostEval)
      BoostEvalOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoostEval.newBuilder() to construct.
    private BoostEval(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoostEval() {
      evaluates_ = java.util.Collections.emptyList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoostEval();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoostEval(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                evaluates_ = new java.util.ArrayList<TreePredict>();
                mutable_bitField0_ |= 0x00000001;
              }
              evaluates_.add(
                  input.readMessage(TreePredict.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          evaluates_ = java.util.Collections.unmodifiableList(evaluates_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_BoostEval_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_BoostEval_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              BoostEval.class, Builder.class);
    }

    public static final int EVALUATES_FIELD_NUMBER = 1;
    private java.util.List<TreePredict> evaluates_;
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    @Override
    public java.util.List<TreePredict> getEvaluatesList() {
      return evaluates_;
    }
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    @Override
    public java.util.List<? extends TreePredictOrBuilder>
        getEvaluatesOrBuilderList() {
      return evaluates_;
    }
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    @Override
    public int getEvaluatesCount() {
      return evaluates_.size();
    }
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    @Override
    public TreePredict getEvaluates(int index) {
      return evaluates_.get(index);
    }
    /**
     * <code>repeated .TreePredict evaluates = 1;</code>
     */
    @Override
    public TreePredictOrBuilder getEvaluatesOrBuilder(
        int index) {
      return evaluates_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < evaluates_.size(); i++) {
        output.writeMessage(1, evaluates_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < evaluates_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, evaluates_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof BoostEval)) {
        return super.equals(obj);
      }
      BoostEval other = (BoostEval) obj;

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

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getEvaluatesCount() > 0) {
        hash = (37 * hash) + EVALUATES_FIELD_NUMBER;
        hash = (53 * hash) + getEvaluatesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static BoostEval parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static BoostEval parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static BoostEval parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static BoostEval parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static BoostEval parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static BoostEval parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static BoostEval parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static BoostEval 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 BoostEval parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static BoostEval 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 BoostEval parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static BoostEval parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(BoostEval prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BoostEval}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:BoostEval)
        BoostEvalOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_BoostEval_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_BoostEval_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                BoostEval.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.BoostEval.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getEvaluatesFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (evaluatesBuilder_ == null) {
          evaluates_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          evaluatesBuilder_.clear();
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_BoostEval_descriptor;
      }

      @Override
      public BoostEval getDefaultInstanceForType() {
        return BoostEval.getDefaultInstance();
      }

      @Override
      public BoostEval build() {
        BoostEval result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public BoostEval buildPartial() {
        BoostEval result = new BoostEval(this);
        int from_bitField0_ = bitField0_;
        if (evaluatesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            evaluates_ = java.util.Collections.unmodifiableList(evaluates_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.evaluates_ = evaluates_;
        } else {
          result.evaluates_ = evaluatesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof BoostEval) {
          return mergeFrom((BoostEval)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(BoostEval other) {
        if (other == BoostEval.getDefaultInstance()) return this;
        if (evaluatesBuilder_ == null) {
          if (!other.evaluates_.isEmpty()) {
            if (evaluates_.isEmpty()) {
              evaluates_ = other.evaluates_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEvaluatesIsMutable();
              evaluates_.addAll(other.evaluates_);
            }
            onChanged();
          }
        } else {
          if (!other.evaluates_.isEmpty()) {
            if (evaluatesBuilder_.isEmpty()) {
              evaluatesBuilder_.dispose();
              evaluatesBuilder_ = null;
              evaluates_ = other.evaluates_;
              bitField0_ = (bitField0_ & ~0x00000001);
              evaluatesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEvaluatesFieldBuilder() : null;
            } else {
              evaluatesBuilder_.addAllMessages(other.evaluates_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        BoostEval parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (BoostEval) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<TreePredict> evaluates_ =
        java.util.Collections.emptyList();
      private void ensureEvaluatesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          evaluates_ = new java.util.ArrayList<TreePredict>(evaluates_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          TreePredict, TreePredict.Builder, TreePredictOrBuilder> evaluatesBuilder_;

      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public java.util.List<TreePredict> getEvaluatesList() {
        if (evaluatesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(evaluates_);
        } else {
          return evaluatesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public int getEvaluatesCount() {
        if (evaluatesBuilder_ == null) {
          return evaluates_.size();
        } else {
          return evaluatesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public TreePredict getEvaluates(int index) {
        if (evaluatesBuilder_ == null) {
          return evaluates_.get(index);
        } else {
          return evaluatesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder setEvaluates(
          int index, TreePredict value) {
        if (evaluatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEvaluatesIsMutable();
          evaluates_.set(index, value);
          onChanged();
        } else {
          evaluatesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder setEvaluates(
          int index, TreePredict.Builder builderForValue) {
        if (evaluatesBuilder_ == null) {
          ensureEvaluatesIsMutable();
          evaluates_.set(index, builderForValue.build());
          onChanged();
        } else {
          evaluatesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder addEvaluates(TreePredict value) {
        if (evaluatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEvaluatesIsMutable();
          evaluates_.add(value);
          onChanged();
        } else {
          evaluatesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder addEvaluates(
          int index, TreePredict value) {
        if (evaluatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEvaluatesIsMutable();
          evaluates_.add(index, value);
          onChanged();
        } else {
          evaluatesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder addEvaluates(
          TreePredict.Builder builderForValue) {
        if (evaluatesBuilder_ == null) {
          ensureEvaluatesIsMutable();
          evaluates_.add(builderForValue.build());
          onChanged();
        } else {
          evaluatesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder addEvaluates(
          int index, TreePredict.Builder builderForValue) {
        if (evaluatesBuilder_ == null) {
          ensureEvaluatesIsMutable();
          evaluates_.add(index, builderForValue.build());
          onChanged();
        } else {
          evaluatesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder addAllEvaluates(
          Iterable<? extends TreePredict> values) {
        if (evaluatesBuilder_ == null) {
          ensureEvaluatesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, evaluates_);
          onChanged();
        } else {
          evaluatesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder clearEvaluates() {
        if (evaluatesBuilder_ == null) {
          evaluates_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          evaluatesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public Builder removeEvaluates(int index) {
        if (evaluatesBuilder_ == null) {
          ensureEvaluatesIsMutable();
          evaluates_.remove(index);
          onChanged();
        } else {
          evaluatesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public TreePredict.Builder getEvaluatesBuilder(
          int index) {
        return getEvaluatesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public TreePredictOrBuilder getEvaluatesOrBuilder(
          int index) {
        if (evaluatesBuilder_ == null) {
          return evaluates_.get(index);  } else {
          return evaluatesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public java.util.List<? extends TreePredictOrBuilder>
           getEvaluatesOrBuilderList() {
        if (evaluatesBuilder_ != null) {
          return evaluatesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(evaluates_);
        }
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public TreePredict.Builder addEvaluatesBuilder() {
        return getEvaluatesFieldBuilder().addBuilder(
            TreePredict.getDefaultInstance());
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public TreePredict.Builder addEvaluatesBuilder(
          int index) {
        return getEvaluatesFieldBuilder().addBuilder(
            index, TreePredict.getDefaultInstance());
      }
      /**
       * <code>repeated .TreePredict evaluates = 1;</code>
       */
      public java.util.List<TreePredict.Builder>
           getEvaluatesBuilderList() {
        return getEvaluatesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          TreePredict, TreePredict.Builder, TreePredictOrBuilder>
          getEvaluatesFieldBuilder() {
        if (evaluatesBuilder_ == null) {
          evaluatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              TreePredict, TreePredict.Builder, TreePredictOrBuilder>(
                  evaluates_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          evaluates_ = null;
        }
        return evaluatesBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:BoostEval)
    }

    // @@protoc_insertion_point(class_scope:BoostEval)
    private static final BoostEval DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new BoostEval();
    }

    public static BoostEval getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public BoostEval getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DownloadRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return Whether the metaData field is set.
     */
    boolean hasMetaData();
    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return The metaData.
     */
    TableMetaData getMetaData();
    /**
     * <code>.TableMetaData metaData = 1;</code>
     */
    TableMetaDataOrBuilder getMetaDataOrBuilder();
  }
  /**
   * Protobuf type {@code DownloadRequest}
   */
  public static final class DownloadRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:DownloadRequest)
      DownloadRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DownloadRequest.newBuilder() to construct.
    private DownloadRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DownloadRequest() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DownloadRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DownloadRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              TableMetaData.Builder subBuilder = null;
              if (metaData_ != null) {
                subBuilder = metaData_.toBuilder();
              }
              metaData_ = input.readMessage(TableMetaData.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metaData_);
                metaData_ = subBuilder.buildPartial();
              }

              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 FLProto.internal_static_DownloadRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DownloadRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DownloadRequest.class, Builder.class);
    }

    public static final int METADATA_FIELD_NUMBER = 1;
    private TableMetaData metaData_;
    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return Whether the metaData field is set.
     */
    @Override
    public boolean hasMetaData() {
      return metaData_ != null;
    }
    /**
     * <code>.TableMetaData metaData = 1;</code>
     * @return The metaData.
     */
    @Override
    public TableMetaData getMetaData() {
      return metaData_ == null ? TableMetaData.getDefaultInstance() : metaData_;
    }
    /**
     * <code>.TableMetaData metaData = 1;</code>
     */
    @Override
    public TableMetaDataOrBuilder getMetaDataOrBuilder() {
      return getMetaData();
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (metaData_ != null) {
        output.writeMessage(1, getMetaData());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (metaData_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetaData());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DownloadRequest)) {
        return super.equals(obj);
      }
      DownloadRequest other = (DownloadRequest) obj;

      if (hasMetaData() != other.hasMetaData()) return false;
      if (hasMetaData()) {
        if (!getMetaData()
            .equals(other.getMetaData())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetaData()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetaData().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DownloadRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadRequest 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 DownloadRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DownloadRequest 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 DownloadRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DownloadRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DownloadRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DownloadRequest)
        DownloadRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DownloadRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DownloadRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DownloadRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DownloadRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (metaDataBuilder_ == null) {
          metaData_ = null;
        } else {
          metaData_ = null;
          metaDataBuilder_ = null;
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DownloadRequest_descriptor;
      }

      @Override
      public DownloadRequest getDefaultInstanceForType() {
        return DownloadRequest.getDefaultInstance();
      }

      @Override
      public DownloadRequest build() {
        DownloadRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DownloadRequest buildPartial() {
        DownloadRequest result = new DownloadRequest(this);
        if (metaDataBuilder_ == null) {
          result.metaData_ = metaData_;
        } else {
          result.metaData_ = metaDataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DownloadRequest) {
          return mergeFrom((DownloadRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DownloadRequest other) {
        if (other == DownloadRequest.getDefaultInstance()) return this;
        if (other.hasMetaData()) {
          mergeMetaData(other.getMetaData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DownloadRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DownloadRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private TableMetaData metaData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          TableMetaData, TableMetaData.Builder, TableMetaDataOrBuilder> metaDataBuilder_;
      /**
       * <code>.TableMetaData metaData = 1;</code>
       * @return Whether the metaData field is set.
       */
      public boolean hasMetaData() {
        return metaDataBuilder_ != null || metaData_ != null;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       * @return The metaData.
       */
      public TableMetaData getMetaData() {
        if (metaDataBuilder_ == null) {
          return metaData_ == null ? TableMetaData.getDefaultInstance() : metaData_;
        } else {
          return metaDataBuilder_.getMessage();
        }
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder setMetaData(TableMetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metaData_ = value;
          onChanged();
        } else {
          metaDataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder setMetaData(
          TableMetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          metaData_ = builderForValue.build();
          onChanged();
        } else {
          metaDataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder mergeMetaData(TableMetaData value) {
        if (metaDataBuilder_ == null) {
          if (metaData_ != null) {
            metaData_ =
              TableMetaData.newBuilder(metaData_).mergeFrom(value).buildPartial();
          } else {
            metaData_ = value;
          }
          onChanged();
        } else {
          metaDataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public Builder clearMetaData() {
        if (metaDataBuilder_ == null) {
          metaData_ = null;
          onChanged();
        } else {
          metaData_ = null;
          metaDataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public TableMetaData.Builder getMetaDataBuilder() {
        
        onChanged();
        return getMetaDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      public TableMetaDataOrBuilder getMetaDataOrBuilder() {
        if (metaDataBuilder_ != null) {
          return metaDataBuilder_.getMessageOrBuilder();
        } else {
          return metaData_ == null ?
              TableMetaData.getDefaultInstance() : metaData_;
        }
      }
      /**
       * <code>.TableMetaData metaData = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          TableMetaData, TableMetaData.Builder, TableMetaDataOrBuilder>
          getMetaDataFieldBuilder() {
        if (metaDataBuilder_ == null) {
          metaDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              TableMetaData, TableMetaData.Builder, TableMetaDataOrBuilder>(
                  getMetaData(),
                  getParentForChildren(),
                  isClean());
          metaData_ = null;
        }
        return metaDataBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DownloadRequest)
    }

    // @@protoc_insertion_point(class_scope:DownloadRequest)
    private static final DownloadRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DownloadRequest();
    }

    public static DownloadRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DownloadRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DownloadResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Table data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.Table data = 1;</code>
     * @return The data.
     */
    Table getData();
    /**
     * <code>.Table data = 1;</code>
     */
    TableOrBuilder getDataOrBuilder();

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

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

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DownloadResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DownloadResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              Table.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(Table.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              response_ = s;
              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 FLProto.internal_static_DownloadResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DownloadResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DownloadResponse.class, Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private Table data_;
    /**
     * <code>.Table data = 1;</code>
     * @return Whether the data field is set.
     */
    @Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.Table data = 1;</code>
     * @return The data.
     */
    @Override
    public Table getData() {
      return data_ == null ? Table.getDefaultInstance() : data_;
    }
    /**
     * <code>.Table data = 1;</code>
     */
    @Override
    public TableOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int RESPONSE_FIELD_NUMBER = 2;
    private volatile Object response_;
    /**
     * <code>string response = 2;</code>
     * @return The response.
     */
    @Override
    public String getResponse() {
      Object ref = response_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        response_ = s;
        return s;
      }
    }
    /**
     * <code>string response = 2;</code>
     * @return The bytes for response.
     */
    @Override
    public com.google.protobuf.ByteString
        getResponseBytes() {
      Object ref = response_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        response_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (data_ != null) {
        output.writeMessage(1, getData());
      }
      if (!getResponseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, response_);
      }
      if (code_ != 0) {
        output.writeInt32(3, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      if (!getResponseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, response_);
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, code_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DownloadResponse)) {
        return super.equals(obj);
      }
      DownloadResponse other = (DownloadResponse) obj;

      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + getResponse().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DownloadResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadResponse 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 DownloadResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DownloadResponse 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 DownloadResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DownloadResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DownloadResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DownloadResponse)
        DownloadResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DownloadResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DownloadResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DownloadResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DownloadResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        code_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DownloadResponse_descriptor;
      }

      @Override
      public DownloadResponse getDefaultInstanceForType() {
        return DownloadResponse.getDefaultInstance();
      }

      @Override
      public DownloadResponse build() {
        DownloadResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DownloadResponse buildPartial() {
        DownloadResponse result = new DownloadResponse(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.response_ = response_;
        result.code_ = code_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DownloadResponse) {
          return mergeFrom((DownloadResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DownloadResponse other) {
        if (other == DownloadResponse.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DownloadResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DownloadResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Table data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder> dataBuilder_;
      /**
       * <code>.Table data = 1;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.Table data = 1;</code>
       * @return The data.
       */
      public Table getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? Table.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Builder setData(Table value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Builder setData(
          Table.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Builder mergeData(Table value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              Table.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

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

        return this;
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Table.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public TableOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              Table.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.Table data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder>
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Table, Table.Builder, TableOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private Object response_ = "";
      /**
       * <code>string response = 2;</code>
       * @return The response.
       */
      public String getResponse() {
        Object ref = response_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string response = 2;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          response_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string response = 2;</code>
       * @param value The response to set.
       * @return This builder for chaining.
       */
      public Builder setResponse(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string response = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponse() {
        
        response_ = getDefaultInstance().getResponse();
        onChanged();
        return this;
      }
      /**
       * <code>string response = 2;</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 int code_ ;
      /**
       * <code>int32 code = 3;</code>
       * @return The code.
       */
      @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;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DownloadResponse)
    }

    // @@protoc_insertion_point(class_scope:DownloadResponse)
    private static final DownloadResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DownloadResponse();
    }

    public static DownloadResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DownloadResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>.Table data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.Table data = 2;</code>
     * @return The data.
     */
    Table getData();
    /**
     * <code>.Table data = 2;</code>
     */
    TableOrBuilder getDataOrBuilder();
  }
  /**
   * Protobuf type {@code UploadRequest}
   */
  public static final class UploadRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:UploadRequest)
      UploadRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadRequest.newBuilder() to construct.
    private UploadRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadRequest() {
      clientuuid_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              Table.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(Table.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              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 FLProto.internal_static_UploadRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private Table data_;
    /**
     * <code>.Table data = 2;</code>
     * @return Whether the data field is set.
     */
    @Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.Table data = 2;</code>
     * @return The data.
     */
    @Override
    public Table getData() {
      return data_ == null ? Table.getDefaultInstance() : data_;
    }
    /**
     * <code>.Table data = 2;</code>
     */
    @Override
    public TableOrBuilder getDataOrBuilder() {
      return getData();
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadRequest)) {
        return super.equals(obj);
      }
      UploadRequest other = (UploadRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadRequest 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 UploadRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadRequest 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 UploadRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadRequest)
        UploadRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadRequest_descriptor;
      }

      @Override
      public UploadRequest getDefaultInstanceForType() {
        return UploadRequest.getDefaultInstance();
      }

      @Override
      public UploadRequest build() {
        UploadRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadRequest buildPartial() {
        UploadRequest result = new UploadRequest(this);
        result.clientuuid_ = clientuuid_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadRequest) {
          return mergeFrom((UploadRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadRequest other) {
        if (other == UploadRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

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

        return this;
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public Builder setData(
          Table.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public Builder mergeData(Table value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              Table.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

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

        return this;
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public Table.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public TableOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              Table.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.Table data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder>
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Table, Table.Builder, TableOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadRequest)
    }

    // @@protoc_insertion_point(class_scope:UploadRequest)
    private static final UploadRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadRequest();
    }

    public static UploadRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadResponse)
      com.google.protobuf.MessageOrBuilder {

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

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

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              response_ = 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 FLProto.internal_static_UploadResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadResponse.class, Builder.class);
    }

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

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @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 (code_ != 0) {
        output.writeInt32(2, code_);
      }
      unknownFields.writeTo(output);
    }

    @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 (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, code_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadResponse)) {
        return super.equals(obj);
      }
      UploadResponse other = (UploadResponse) obj;

      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadResponse 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 UploadResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadResponse 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 UploadResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadResponse)
        UploadResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        code_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadResponse_descriptor;
      }

      @Override
      public UploadResponse getDefaultInstanceForType() {
        return UploadResponse.getDefaultInstance();
      }

      @Override
      public UploadResponse build() {
        UploadResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadResponse buildPartial() {
        UploadResponse result = new UploadResponse(this);
        result.response_ = response_;
        result.code_ = code_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadResponse) {
          return mergeFrom((UploadResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadResponse other) {
        if (other == UploadResponse.getDefaultInstance()) return this;
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object response_ = "";
      /**
       * <code>string response = 1;</code>
       * @return The response.
       */
      public String getResponse() {
        Object ref = response_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (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(
          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 int code_ ;
      /**
       * <code>int32 code = 2;</code>
       * @return The code.
       */
      @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;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadResponse)
    }

    // @@protoc_insertion_point(class_scope:UploadResponse)
    private static final UploadResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadResponse();
    }

    public static UploadResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RegisterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:RegisterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>string token = 2;</code>
     * @return The token.
     */
    String getToken();
    /**
     * <code>string token = 2;</code>
     * @return The bytes for token.
     */
    com.google.protobuf.ByteString
        getTokenBytes();
  }
  /**
   * Protobuf type {@code RegisterRequest}
   */
  public static final class RegisterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:RegisterRequest)
      RegisterRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RegisterRequest.newBuilder() to construct.
    private RegisterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RegisterRequest() {
      clientuuid_ = "";
      token_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new RegisterRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RegisterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              token_ = 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 FLProto.internal_static_RegisterRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_RegisterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              RegisterRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TOKEN_FIELD_NUMBER = 2;
    private volatile Object token_;
    /**
     * <code>string token = 2;</code>
     * @return The token.
     */
    @Override
    public String getToken() {
      Object ref = token_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        token_ = s;
        return s;
      }
    }
    /**
     * <code>string token = 2;</code>
     * @return The bytes for token.
     */
    @Override
    public com.google.protobuf.ByteString
        getTokenBytes() {
      Object ref = token_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        token_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (!getTokenBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, token_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (!getTokenBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, token_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof RegisterRequest)) {
        return super.equals(obj);
      }
      RegisterRequest other = (RegisterRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (!getToken()
          .equals(other.getToken())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      hash = (37 * hash) + TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getToken().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static RegisterRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static RegisterRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static RegisterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static RegisterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static RegisterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static RegisterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static RegisterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static RegisterRequest 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 RegisterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static RegisterRequest 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 RegisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static RegisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(RegisterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code RegisterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:RegisterRequest)
        RegisterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_RegisterRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_RegisterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                RegisterRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.RegisterRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        token_ = "";

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_RegisterRequest_descriptor;
      }

      @Override
      public RegisterRequest getDefaultInstanceForType() {
        return RegisterRequest.getDefaultInstance();
      }

      @Override
      public RegisterRequest build() {
        RegisterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public RegisterRequest buildPartial() {
        RegisterRequest result = new RegisterRequest(this);
        result.clientuuid_ = clientuuid_;
        result.token_ = token_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof RegisterRequest) {
          return mergeFrom((RegisterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(RegisterRequest other) {
        if (other == RegisterRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (!other.getToken().isEmpty()) {
          token_ = other.token_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        RegisterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (RegisterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

      private Object token_ = "";
      /**
       * <code>string token = 2;</code>
       * @return The token.
       */
      public String getToken() {
        Object ref = token_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          token_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string token = 2;</code>
       * @return The bytes for token.
       */
      public com.google.protobuf.ByteString
          getTokenBytes() {
        Object ref = token_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          token_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string token = 2;</code>
       * @param value The token to set.
       * @return This builder for chaining.
       */
      public Builder setToken(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        token_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string token = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearToken() {
        
        token_ = getDefaultInstance().getToken();
        onChanged();
        return this;
      }
      /**
       * <code>string token = 2;</code>
       * @param value The bytes for token to set.
       * @return This builder for chaining.
       */
      public Builder setTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        token_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:RegisterRequest)
    }

    // @@protoc_insertion_point(class_scope:RegisterRequest)
    private static final RegisterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new RegisterRequest();
    }

    public static RegisterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public RegisterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RegisterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:RegisterResponse)
      com.google.protobuf.MessageOrBuilder {

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

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

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new RegisterResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RegisterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              response_ = 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 FLProto.internal_static_RegisterResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_RegisterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              RegisterResponse.class, Builder.class);
    }

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

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @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 (code_ != 0) {
        output.writeInt32(2, code_);
      }
      unknownFields.writeTo(output);
    }

    @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 (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, code_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof RegisterResponse)) {
        return super.equals(obj);
      }
      RegisterResponse other = (RegisterResponse) obj;

      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static RegisterResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static RegisterResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static RegisterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static RegisterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static RegisterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static RegisterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static RegisterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static RegisterResponse 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 RegisterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static RegisterResponse 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 RegisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static RegisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(RegisterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code RegisterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:RegisterResponse)
        RegisterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_RegisterResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_RegisterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                RegisterResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.RegisterResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        code_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_RegisterResponse_descriptor;
      }

      @Override
      public RegisterResponse getDefaultInstanceForType() {
        return RegisterResponse.getDefaultInstance();
      }

      @Override
      public RegisterResponse build() {
        RegisterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public RegisterResponse buildPartial() {
        RegisterResponse result = new RegisterResponse(this);
        result.response_ = response_;
        result.code_ = code_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof RegisterResponse) {
          return mergeFrom((RegisterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(RegisterResponse other) {
        if (other == RegisterResponse.getDefaultInstance()) return this;
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        RegisterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (RegisterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object response_ = "";
      /**
       * <code>string response = 1;</code>
       * @return The response.
       */
      public String getResponse() {
        Object ref = response_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string response = 1;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (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(
          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 int code_ ;
      /**
       * <code>int32 code = 2;</code>
       * @return The code.
       */
      @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;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:RegisterResponse)
    }

    // @@protoc_insertion_point(class_scope:RegisterResponse)
    private static final RegisterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new RegisterResponse();
    }

    public static RegisterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public RegisterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>.Table data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.Table data = 2;</code>
     * @return The data.
     */
    Table getData();
    /**
     * <code>.Table data = 2;</code>
     */
    TableOrBuilder getDataOrBuilder();

    /**
     * <code>bool last = 3;</code>
     * @return The last.
     */
    boolean getLast();
  }
  /**
   * Protobuf type {@code EvaluateRequest}
   */
  public static final class EvaluateRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements: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() {
      clientuuid_ = "";
    }

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

    @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 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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              Table.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(Table.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              last_ = 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 FLProto.internal_static_EvaluateRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_EvaluateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              EvaluateRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private Table data_;
    /**
     * <code>.Table data = 2;</code>
     * @return Whether the data field is set.
     */
    @Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.Table data = 2;</code>
     * @return The data.
     */
    @Override
    public Table getData() {
      return data_ == null ? Table.getDefaultInstance() : data_;
    }
    /**
     * <code>.Table data = 2;</code>
     */
    @Override
    public TableOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int LAST_FIELD_NUMBER = 3;
    private boolean last_;
    /**
     * <code>bool last = 3;</code>
     * @return The last.
     */
    @Override
    public boolean getLast() {
      return last_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (data_ != null) {
        output.writeMessage(2, getData());
      }
      if (last_ != false) {
        output.writeBool(3, last_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getData());
      }
      if (last_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, last_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof EvaluateRequest)) {
        return super.equals(obj);
      }
      EvaluateRequest other = (EvaluateRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (getLast()
          != other.getLast()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + LAST_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getLast());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static EvaluateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static EvaluateRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static EvaluateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static EvaluateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static EvaluateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static EvaluateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static EvaluateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static 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 EvaluateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static 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 EvaluateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static 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);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(EvaluateRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code EvaluateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:EvaluateRequest)
        EvaluateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_EvaluateRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_EvaluateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                EvaluateRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.EvaluateRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        last_ = false;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_EvaluateRequest_descriptor;
      }

      @Override
      public EvaluateRequest getDefaultInstanceForType() {
        return EvaluateRequest.getDefaultInstance();
      }

      @Override
      public EvaluateRequest build() {
        EvaluateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public EvaluateRequest buildPartial() {
        EvaluateRequest result = new EvaluateRequest(this);
        result.clientuuid_ = clientuuid_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.last_ = last_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof EvaluateRequest) {
          return mergeFrom((EvaluateRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(EvaluateRequest other) {
        if (other == EvaluateRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (other.getLast() != false) {
          setLast(other.getLast());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        EvaluateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (EvaluateRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

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

        return this;
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public Builder setData(
          Table.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public Builder mergeData(Table value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              Table.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

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

        return this;
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public Table.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.Table data = 2;</code>
       */
      public TableOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              Table.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.Table data = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder>
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Table, Table.Builder, TableOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private boolean last_ ;
      /**
       * <code>bool last = 3;</code>
       * @return The last.
       */
      @Override
      public boolean getLast() {
        return last_;
      }
      /**
       * <code>bool last = 3;</code>
       * @param value The last to set.
       * @return This builder for chaining.
       */
      public Builder setLast(boolean value) {
        
        last_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool last = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLast() {
        
        last_ = false;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:EvaluateRequest)
    }

    // @@protoc_insertion_point(class_scope:EvaluateRequest)
    private static final EvaluateRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new EvaluateRequest();
    }

    public static EvaluateRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EvaluateRequest>
        PARSER = new com.google.protobuf.AbstractParser<EvaluateRequest>() {
      @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;
    }

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

    @Override
    public EvaluateRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <code>.Table data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>.Table data = 1;</code>
     * @return The data.
     */
    Table getData();
    /**
     * <code>.Table data = 1;</code>
     */
    TableOrBuilder getDataOrBuilder();

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

    /**
     * <code>int32 code = 3;</code>
     * @return The code.
     */
    int getCode();
  }
  /**
   * Protobuf type {@code EvaluateResponse}
   */
  public static final class EvaluateResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements: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_ = "";
    }

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

    @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 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: {
              Table.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(Table.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              response_ = s;
              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 FLProto.internal_static_EvaluateResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_EvaluateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              EvaluateResponse.class, Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private Table data_;
    /**
     * <code>.Table data = 1;</code>
     * @return Whether the data field is set.
     */
    @Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.Table data = 1;</code>
     * @return The data.
     */
    @Override
    public Table getData() {
      return data_ == null ? Table.getDefaultInstance() : data_;
    }
    /**
     * <code>.Table data = 1;</code>
     */
    @Override
    public TableOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int RESPONSE_FIELD_NUMBER = 2;
    private volatile Object response_;
    /**
     * <code>string response = 2;</code>
     * @return The response.
     */
    @Override
    public String getResponse() {
      Object ref = response_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        response_ = s;
        return s;
      }
    }
    /**
     * <code>string response = 2;</code>
     * @return The bytes for response.
     */
    @Override
    public com.google.protobuf.ByteString
        getResponseBytes() {
      Object ref = response_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        response_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (data_ != null) {
        output.writeMessage(1, getData());
      }
      if (!getResponseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, response_);
      }
      if (code_ != 0) {
        output.writeInt32(3, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      if (!getResponseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, response_);
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, code_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof EvaluateResponse)) {
        return super.equals(obj);
      }
      EvaluateResponse other = (EvaluateResponse) obj;

      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + getResponse().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static EvaluateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static EvaluateResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static EvaluateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static EvaluateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static EvaluateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static EvaluateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static EvaluateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static 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 EvaluateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static 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 EvaluateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static 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);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(EvaluateResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code EvaluateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:EvaluateResponse)
        EvaluateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_EvaluateResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_EvaluateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                EvaluateResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.EvaluateResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        code_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_EvaluateResponse_descriptor;
      }

      @Override
      public EvaluateResponse getDefaultInstanceForType() {
        return EvaluateResponse.getDefaultInstance();
      }

      @Override
      public EvaluateResponse build() {
        EvaluateResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public EvaluateResponse buildPartial() {
        EvaluateResponse result = new EvaluateResponse(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.response_ = response_;
        result.code_ = code_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof EvaluateResponse) {
          return mergeFrom((EvaluateResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(EvaluateResponse other) {
        if (other == EvaluateResponse.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        EvaluateResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (EvaluateResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Table data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder> dataBuilder_;
      /**
       * <code>.Table data = 1;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.Table data = 1;</code>
       * @return The data.
       */
      public Table getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? Table.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Builder setData(Table value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Builder setData(
          Table.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Builder mergeData(Table value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              Table.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

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

        return this;
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public Table.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.Table data = 1;</code>
       */
      public TableOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              Table.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.Table data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder>
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Table, Table.Builder, TableOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private Object response_ = "";
      /**
       * <code>string response = 2;</code>
       * @return The response.
       */
      public String getResponse() {
        Object ref = response_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string response = 2;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          response_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string response = 2;</code>
       * @param value The response to set.
       * @return This builder for chaining.
       */
      public Builder setResponse(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string response = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponse() {
        
        response_ = getDefaultInstance().getResponse();
        onChanged();
        return this;
      }
      /**
       * <code>string response = 2;</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 int code_ ;
      /**
       * <code>int32 code = 3;</code>
       * @return The code.
       */
      @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;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:EvaluateResponse)
    }

    // @@protoc_insertion_point(class_scope:EvaluateResponse)
    private static final EvaluateResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new EvaluateResponse();
    }

    public static EvaluateResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EvaluateResponse>
        PARSER = new com.google.protobuf.AbstractParser<EvaluateResponse>() {
      @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;
    }

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

    @Override
    public EvaluateResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadTreeEvalRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadTreeEvalRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>int32 version = 2;</code>
     * @return The version.
     */
    int getVersion();

    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    java.util.List<BoostEval>
        getTreeEvalList();
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    BoostEval getTreeEval(int index);
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    int getTreeEvalCount();
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    java.util.List<? extends BoostEvalOrBuilder>
        getTreeEvalOrBuilderList();
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    BoostEvalOrBuilder getTreeEvalOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code UploadTreeEvalRequest}
   */
  public static final class UploadTreeEvalRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:UploadTreeEvalRequest)
      UploadTreeEvalRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadTreeEvalRequest.newBuilder() to construct.
    private UploadTreeEvalRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadTreeEvalRequest() {
      clientuuid_ = "";
      treeEval_ = java.util.Collections.emptyList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadTreeEvalRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadTreeEvalRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 16: {

              version_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                treeEval_ = new java.util.ArrayList<BoostEval>();
                mutable_bitField0_ |= 0x00000001;
              }
              treeEval_.add(
                  input.readMessage(BoostEval.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          treeEval_ = java.util.Collections.unmodifiableList(treeEval_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_UploadTreeEvalRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadTreeEvalRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadTreeEvalRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private int version_;
    /**
     * <code>int32 version = 2;</code>
     * @return The version.
     */
    @Override
    public int getVersion() {
      return version_;
    }

    public static final int TREEEVAL_FIELD_NUMBER = 3;
    private java.util.List<BoostEval> treeEval_;
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    @Override
    public java.util.List<BoostEval> getTreeEvalList() {
      return treeEval_;
    }
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    @Override
    public java.util.List<? extends BoostEvalOrBuilder>
        getTreeEvalOrBuilderList() {
      return treeEval_;
    }
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    @Override
    public int getTreeEvalCount() {
      return treeEval_.size();
    }
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    @Override
    public BoostEval getTreeEval(int index) {
      return treeEval_.get(index);
    }
    /**
     * <code>repeated .BoostEval treeEval = 3;</code>
     */
    @Override
    public BoostEvalOrBuilder getTreeEvalOrBuilder(
        int index) {
      return treeEval_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (version_ != 0) {
        output.writeInt32(2, version_);
      }
      for (int i = 0; i < treeEval_.size(); i++) {
        output.writeMessage(3, treeEval_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, version_);
      }
      for (int i = 0; i < treeEval_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, treeEval_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadTreeEvalRequest)) {
        return super.equals(obj);
      }
      UploadTreeEvalRequest other = (UploadTreeEvalRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (getVersion()
          != other.getVersion()) return false;
      if (!getTreeEvalList()
          .equals(other.getTreeEvalList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion();
      if (getTreeEvalCount() > 0) {
        hash = (37 * hash) + TREEEVAL_FIELD_NUMBER;
        hash = (53 * hash) + getTreeEvalList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadTreeEvalRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadTreeEvalRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadTreeEvalRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadTreeEvalRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadTreeEvalRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadTreeEvalRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadTreeEvalRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadTreeEvalRequest 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 UploadTreeEvalRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadTreeEvalRequest 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 UploadTreeEvalRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadTreeEvalRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadTreeEvalRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadTreeEvalRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadTreeEvalRequest)
        UploadTreeEvalRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadTreeEvalRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadTreeEvalRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadTreeEvalRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadTreeEvalRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        version_ = 0;

        if (treeEvalBuilder_ == null) {
          treeEval_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          treeEvalBuilder_.clear();
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadTreeEvalRequest_descriptor;
      }

      @Override
      public UploadTreeEvalRequest getDefaultInstanceForType() {
        return UploadTreeEvalRequest.getDefaultInstance();
      }

      @Override
      public UploadTreeEvalRequest build() {
        UploadTreeEvalRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadTreeEvalRequest buildPartial() {
        UploadTreeEvalRequest result = new UploadTreeEvalRequest(this);
        int from_bitField0_ = bitField0_;
        result.clientuuid_ = clientuuid_;
        result.version_ = version_;
        if (treeEvalBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            treeEval_ = java.util.Collections.unmodifiableList(treeEval_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.treeEval_ = treeEval_;
        } else {
          result.treeEval_ = treeEvalBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadTreeEvalRequest) {
          return mergeFrom((UploadTreeEvalRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadTreeEvalRequest other) {
        if (other == UploadTreeEvalRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (treeEvalBuilder_ == null) {
          if (!other.treeEval_.isEmpty()) {
            if (treeEval_.isEmpty()) {
              treeEval_ = other.treeEval_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTreeEvalIsMutable();
              treeEval_.addAll(other.treeEval_);
            }
            onChanged();
          }
        } else {
          if (!other.treeEval_.isEmpty()) {
            if (treeEvalBuilder_.isEmpty()) {
              treeEvalBuilder_.dispose();
              treeEvalBuilder_ = null;
              treeEval_ = other.treeEval_;
              bitField0_ = (bitField0_ & ~0x00000001);
              treeEvalBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTreeEvalFieldBuilder() : null;
            } else {
              treeEvalBuilder_.addAllMessages(other.treeEval_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadTreeEvalRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadTreeEvalRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

      private int version_ ;
      /**
       * <code>int32 version = 2;</code>
       * @return The version.
       */
      @Override
      public int getVersion() {
        return version_;
      }
      /**
       * <code>int32 version = 2;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 version = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<BoostEval> treeEval_ =
        java.util.Collections.emptyList();
      private void ensureTreeEvalIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          treeEval_ = new java.util.ArrayList<BoostEval>(treeEval_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          BoostEval, BoostEval.Builder, BoostEvalOrBuilder> treeEvalBuilder_;

      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public java.util.List<BoostEval> getTreeEvalList() {
        if (treeEvalBuilder_ == null) {
          return java.util.Collections.unmodifiableList(treeEval_);
        } else {
          return treeEvalBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public int getTreeEvalCount() {
        if (treeEvalBuilder_ == null) {
          return treeEval_.size();
        } else {
          return treeEvalBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public BoostEval getTreeEval(int index) {
        if (treeEvalBuilder_ == null) {
          return treeEval_.get(index);
        } else {
          return treeEvalBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder setTreeEval(
          int index, BoostEval value) {
        if (treeEvalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreeEvalIsMutable();
          treeEval_.set(index, value);
          onChanged();
        } else {
          treeEvalBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder setTreeEval(
          int index, BoostEval.Builder builderForValue) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.set(index, builderForValue.build());
          onChanged();
        } else {
          treeEvalBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder addTreeEval(BoostEval value) {
        if (treeEvalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreeEvalIsMutable();
          treeEval_.add(value);
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder addTreeEval(
          int index, BoostEval value) {
        if (treeEvalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreeEvalIsMutable();
          treeEval_.add(index, value);
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder addTreeEval(
          BoostEval.Builder builderForValue) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.add(builderForValue.build());
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder addTreeEval(
          int index, BoostEval.Builder builderForValue) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.add(index, builderForValue.build());
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder addAllTreeEval(
          Iterable<? extends BoostEval> values) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, treeEval_);
          onChanged();
        } else {
          treeEvalBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder clearTreeEval() {
        if (treeEvalBuilder_ == null) {
          treeEval_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          treeEvalBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public Builder removeTreeEval(int index) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.remove(index);
          onChanged();
        } else {
          treeEvalBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public BoostEval.Builder getTreeEvalBuilder(
          int index) {
        return getTreeEvalFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public BoostEvalOrBuilder getTreeEvalOrBuilder(
          int index) {
        if (treeEvalBuilder_ == null) {
          return treeEval_.get(index);  } else {
          return treeEvalBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public java.util.List<? extends BoostEvalOrBuilder>
           getTreeEvalOrBuilderList() {
        if (treeEvalBuilder_ != null) {
          return treeEvalBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(treeEval_);
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public BoostEval.Builder addTreeEvalBuilder() {
        return getTreeEvalFieldBuilder().addBuilder(
            BoostEval.getDefaultInstance());
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public BoostEval.Builder addTreeEvalBuilder(
          int index) {
        return getTreeEvalFieldBuilder().addBuilder(
            index, BoostEval.getDefaultInstance());
      }
      /**
       * <code>repeated .BoostEval treeEval = 3;</code>
       */
      public java.util.List<BoostEval.Builder>
           getTreeEvalBuilderList() {
        return getTreeEvalFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          BoostEval, BoostEval.Builder, BoostEvalOrBuilder>
          getTreeEvalFieldBuilder() {
        if (treeEvalBuilder_ == null) {
          treeEvalBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              BoostEval, BoostEval.Builder, BoostEvalOrBuilder>(
                  treeEval_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          treeEval_ = null;
        }
        return treeEvalBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadTreeEvalRequest)
    }

    // @@protoc_insertion_point(class_scope:UploadTreeEvalRequest)
    private static final UploadTreeEvalRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadTreeEvalRequest();
    }

    public static UploadTreeEvalRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadTreeEvalRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UploadSplitRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:UploadSplitRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>.DataSplit split = 2;</code>
     * @return Whether the split field is set.
     */
    boolean hasSplit();
    /**
     * <code>.DataSplit split = 2;</code>
     * @return The split.
     */
    DataSplit getSplit();
    /**
     * <code>.DataSplit split = 2;</code>
     */
    DataSplitOrBuilder getSplitOrBuilder();
  }
  /**
   * Protobuf type {@code UploadSplitRequest}
   */
  public static final class UploadSplitRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:UploadSplitRequest)
      UploadSplitRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UploadSplitRequest.newBuilder() to construct.
    private UploadSplitRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UploadSplitRequest() {
      clientuuid_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new UploadSplitRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UploadSplitRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              DataSplit.Builder subBuilder = null;
              if (split_ != null) {
                subBuilder = split_.toBuilder();
              }
              split_ = input.readMessage(DataSplit.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(split_);
                split_ = subBuilder.buildPartial();
              }

              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 FLProto.internal_static_UploadSplitRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_UploadSplitRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              UploadSplitRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPLIT_FIELD_NUMBER = 2;
    private DataSplit split_;
    /**
     * <code>.DataSplit split = 2;</code>
     * @return Whether the split field is set.
     */
    @Override
    public boolean hasSplit() {
      return split_ != null;
    }
    /**
     * <code>.DataSplit split = 2;</code>
     * @return The split.
     */
    @Override
    public DataSplit getSplit() {
      return split_ == null ? DataSplit.getDefaultInstance() : split_;
    }
    /**
     * <code>.DataSplit split = 2;</code>
     */
    @Override
    public DataSplitOrBuilder getSplitOrBuilder() {
      return getSplit();
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (split_ != null) {
        output.writeMessage(2, getSplit());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (split_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSplit());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof UploadSplitRequest)) {
        return super.equals(obj);
      }
      UploadSplitRequest other = (UploadSplitRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (hasSplit() != other.hasSplit()) return false;
      if (hasSplit()) {
        if (!getSplit()
            .equals(other.getSplit())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      if (hasSplit()) {
        hash = (37 * hash) + SPLIT_FIELD_NUMBER;
        hash = (53 * hash) + getSplit().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static UploadSplitRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSplitRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSplitRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSplitRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSplitRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static UploadSplitRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static UploadSplitRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadSplitRequest 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 UploadSplitRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static UploadSplitRequest 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 UploadSplitRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static UploadSplitRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(UploadSplitRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UploadSplitRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:UploadSplitRequest)
        UploadSplitRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_UploadSplitRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_UploadSplitRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UploadSplitRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.UploadSplitRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (splitBuilder_ == null) {
          split_ = null;
        } else {
          split_ = null;
          splitBuilder_ = null;
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_UploadSplitRequest_descriptor;
      }

      @Override
      public UploadSplitRequest getDefaultInstanceForType() {
        return UploadSplitRequest.getDefaultInstance();
      }

      @Override
      public UploadSplitRequest build() {
        UploadSplitRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public UploadSplitRequest buildPartial() {
        UploadSplitRequest result = new UploadSplitRequest(this);
        result.clientuuid_ = clientuuid_;
        if (splitBuilder_ == null) {
          result.split_ = split_;
        } else {
          result.split_ = splitBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof UploadSplitRequest) {
          return mergeFrom((UploadSplitRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(UploadSplitRequest other) {
        if (other == UploadSplitRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (other.hasSplit()) {
          mergeSplit(other.getSplit());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        UploadSplitRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (UploadSplitRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

      private DataSplit split_;
      private com.google.protobuf.SingleFieldBuilderV3<
          DataSplit, DataSplit.Builder, DataSplitOrBuilder> splitBuilder_;
      /**
       * <code>.DataSplit split = 2;</code>
       * @return Whether the split field is set.
       */
      public boolean hasSplit() {
        return splitBuilder_ != null || split_ != null;
      }
      /**
       * <code>.DataSplit split = 2;</code>
       * @return The split.
       */
      public DataSplit getSplit() {
        if (splitBuilder_ == null) {
          return split_ == null ? DataSplit.getDefaultInstance() : split_;
        } else {
          return splitBuilder_.getMessage();
        }
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      public Builder setSplit(DataSplit value) {
        if (splitBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          split_ = value;
          onChanged();
        } else {
          splitBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      public Builder setSplit(
          DataSplit.Builder builderForValue) {
        if (splitBuilder_ == null) {
          split_ = builderForValue.build();
          onChanged();
        } else {
          splitBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      public Builder mergeSplit(DataSplit value) {
        if (splitBuilder_ == null) {
          if (split_ != null) {
            split_ =
              DataSplit.newBuilder(split_).mergeFrom(value).buildPartial();
          } else {
            split_ = value;
          }
          onChanged();
        } else {
          splitBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      public Builder clearSplit() {
        if (splitBuilder_ == null) {
          split_ = null;
          onChanged();
        } else {
          split_ = null;
          splitBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      public DataSplit.Builder getSplitBuilder() {
        
        onChanged();
        return getSplitFieldBuilder().getBuilder();
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      public DataSplitOrBuilder getSplitOrBuilder() {
        if (splitBuilder_ != null) {
          return splitBuilder_.getMessageOrBuilder();
        } else {
          return split_ == null ?
              DataSplit.getDefaultInstance() : split_;
        }
      }
      /**
       * <code>.DataSplit split = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          DataSplit, DataSplit.Builder, DataSplitOrBuilder>
          getSplitFieldBuilder() {
        if (splitBuilder_ == null) {
          splitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              DataSplit, DataSplit.Builder, DataSplitOrBuilder>(
                  getSplit(),
                  getParentForChildren(),
                  isClean());
          split_ = null;
        }
        return splitBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:UploadSplitRequest)
    }

    // @@protoc_insertion_point(class_scope:UploadSplitRequest)
    private static final UploadSplitRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UploadSplitRequest();
    }

    public static UploadSplitRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public UploadSplitRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PredictTreeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PredictTreeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    java.util.List<BoostEval>
        getTreeEvalList();
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    BoostEval getTreeEval(int index);
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    int getTreeEvalCount();
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    java.util.List<? extends BoostEvalOrBuilder>
        getTreeEvalOrBuilderList();
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    BoostEvalOrBuilder getTreeEvalOrBuilder(
        int index);

    /**
     * <code>int32 bsVersion = 3;</code>
     * @return The bsVersion.
     */
    int getBsVersion();
  }
  /**
   * Protobuf type {@code PredictTreeRequest}
   */
  public static final class PredictTreeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PredictTreeRequest)
      PredictTreeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PredictTreeRequest.newBuilder() to construct.
    private PredictTreeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PredictTreeRequest() {
      clientuuid_ = "";
      treeEval_ = java.util.Collections.emptyList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new PredictTreeRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PredictTreeRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                treeEval_ = new java.util.ArrayList<BoostEval>();
                mutable_bitField0_ |= 0x00000001;
              }
              treeEval_.add(
                  input.readMessage(BoostEval.parser(), extensionRegistry));
              break;
            }
            case 24: {

              bsVersion_ = 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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          treeEval_ = java.util.Collections.unmodifiableList(treeEval_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return FLProto.internal_static_PredictTreeRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_PredictTreeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PredictTreeRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TREEEVAL_FIELD_NUMBER = 2;
    private java.util.List<BoostEval> treeEval_;
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    @Override
    public java.util.List<BoostEval> getTreeEvalList() {
      return treeEval_;
    }
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    @Override
    public java.util.List<? extends BoostEvalOrBuilder>
        getTreeEvalOrBuilderList() {
      return treeEval_;
    }
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    @Override
    public int getTreeEvalCount() {
      return treeEval_.size();
    }
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    @Override
    public BoostEval getTreeEval(int index) {
      return treeEval_.get(index);
    }
    /**
     * <code>repeated .BoostEval treeEval = 2;</code>
     */
    @Override
    public BoostEvalOrBuilder getTreeEvalOrBuilder(
        int index) {
      return treeEval_.get(index);
    }

    public static final int BSVERSION_FIELD_NUMBER = 3;
    private int bsVersion_;
    /**
     * <code>int32 bsVersion = 3;</code>
     * @return The bsVersion.
     */
    @Override
    public int getBsVersion() {
      return bsVersion_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      for (int i = 0; i < treeEval_.size(); i++) {
        output.writeMessage(2, treeEval_.get(i));
      }
      if (bsVersion_ != 0) {
        output.writeInt32(3, bsVersion_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      for (int i = 0; i < treeEval_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, treeEval_.get(i));
      }
      if (bsVersion_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, bsVersion_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof PredictTreeRequest)) {
        return super.equals(obj);
      }
      PredictTreeRequest other = (PredictTreeRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (!getTreeEvalList()
          .equals(other.getTreeEvalList())) return false;
      if (getBsVersion()
          != other.getBsVersion()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      if (getTreeEvalCount() > 0) {
        hash = (37 * hash) + TREEEVAL_FIELD_NUMBER;
        hash = (53 * hash) + getTreeEvalList().hashCode();
      }
      hash = (37 * hash) + BSVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getBsVersion();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static PredictTreeRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PredictTreeRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PredictTreeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PredictTreeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PredictTreeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PredictTreeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PredictTreeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PredictTreeRequest 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 PredictTreeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static PredictTreeRequest 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 PredictTreeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PredictTreeRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(PredictTreeRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PredictTreeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:PredictTreeRequest)
        PredictTreeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_PredictTreeRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_PredictTreeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                PredictTreeRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.PredictTreeRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (treeEvalBuilder_ == null) {
          treeEval_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          treeEvalBuilder_.clear();
        }
        bsVersion_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_PredictTreeRequest_descriptor;
      }

      @Override
      public PredictTreeRequest getDefaultInstanceForType() {
        return PredictTreeRequest.getDefaultInstance();
      }

      @Override
      public PredictTreeRequest build() {
        PredictTreeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public PredictTreeRequest buildPartial() {
        PredictTreeRequest result = new PredictTreeRequest(this);
        int from_bitField0_ = bitField0_;
        result.clientuuid_ = clientuuid_;
        if (treeEvalBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            treeEval_ = java.util.Collections.unmodifiableList(treeEval_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.treeEval_ = treeEval_;
        } else {
          result.treeEval_ = treeEvalBuilder_.build();
        }
        result.bsVersion_ = bsVersion_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof PredictTreeRequest) {
          return mergeFrom((PredictTreeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(PredictTreeRequest other) {
        if (other == PredictTreeRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (treeEvalBuilder_ == null) {
          if (!other.treeEval_.isEmpty()) {
            if (treeEval_.isEmpty()) {
              treeEval_ = other.treeEval_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTreeEvalIsMutable();
              treeEval_.addAll(other.treeEval_);
            }
            onChanged();
          }
        } else {
          if (!other.treeEval_.isEmpty()) {
            if (treeEvalBuilder_.isEmpty()) {
              treeEvalBuilder_.dispose();
              treeEvalBuilder_ = null;
              treeEval_ = other.treeEval_;
              bitField0_ = (bitField0_ & ~0x00000001);
              treeEvalBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTreeEvalFieldBuilder() : null;
            } else {
              treeEvalBuilder_.addAllMessages(other.treeEval_);
            }
          }
        }
        if (other.getBsVersion() != 0) {
          setBsVersion(other.getBsVersion());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        PredictTreeRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (PredictTreeRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

      private java.util.List<BoostEval> treeEval_ =
        java.util.Collections.emptyList();
      private void ensureTreeEvalIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          treeEval_ = new java.util.ArrayList<BoostEval>(treeEval_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          BoostEval, BoostEval.Builder, BoostEvalOrBuilder> treeEvalBuilder_;

      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public java.util.List<BoostEval> getTreeEvalList() {
        if (treeEvalBuilder_ == null) {
          return java.util.Collections.unmodifiableList(treeEval_);
        } else {
          return treeEvalBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public int getTreeEvalCount() {
        if (treeEvalBuilder_ == null) {
          return treeEval_.size();
        } else {
          return treeEvalBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public BoostEval getTreeEval(int index) {
        if (treeEvalBuilder_ == null) {
          return treeEval_.get(index);
        } else {
          return treeEvalBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder setTreeEval(
          int index, BoostEval value) {
        if (treeEvalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreeEvalIsMutable();
          treeEval_.set(index, value);
          onChanged();
        } else {
          treeEvalBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder setTreeEval(
          int index, BoostEval.Builder builderForValue) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.set(index, builderForValue.build());
          onChanged();
        } else {
          treeEvalBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder addTreeEval(BoostEval value) {
        if (treeEvalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreeEvalIsMutable();
          treeEval_.add(value);
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder addTreeEval(
          int index, BoostEval value) {
        if (treeEvalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreeEvalIsMutable();
          treeEval_.add(index, value);
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder addTreeEval(
          BoostEval.Builder builderForValue) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.add(builderForValue.build());
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder addTreeEval(
          int index, BoostEval.Builder builderForValue) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.add(index, builderForValue.build());
          onChanged();
        } else {
          treeEvalBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder addAllTreeEval(
          Iterable<? extends BoostEval> values) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, treeEval_);
          onChanged();
        } else {
          treeEvalBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder clearTreeEval() {
        if (treeEvalBuilder_ == null) {
          treeEval_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          treeEvalBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public Builder removeTreeEval(int index) {
        if (treeEvalBuilder_ == null) {
          ensureTreeEvalIsMutable();
          treeEval_.remove(index);
          onChanged();
        } else {
          treeEvalBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public BoostEval.Builder getTreeEvalBuilder(
          int index) {
        return getTreeEvalFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public BoostEvalOrBuilder getTreeEvalOrBuilder(
          int index) {
        if (treeEvalBuilder_ == null) {
          return treeEval_.get(index);  } else {
          return treeEvalBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public java.util.List<? extends BoostEvalOrBuilder>
           getTreeEvalOrBuilderList() {
        if (treeEvalBuilder_ != null) {
          return treeEvalBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(treeEval_);
        }
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public BoostEval.Builder addTreeEvalBuilder() {
        return getTreeEvalFieldBuilder().addBuilder(
            BoostEval.getDefaultInstance());
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public BoostEval.Builder addTreeEvalBuilder(
          int index) {
        return getTreeEvalFieldBuilder().addBuilder(
            index, BoostEval.getDefaultInstance());
      }
      /**
       * <code>repeated .BoostEval treeEval = 2;</code>
       */
      public java.util.List<BoostEval.Builder>
           getTreeEvalBuilderList() {
        return getTreeEvalFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          BoostEval, BoostEval.Builder, BoostEvalOrBuilder>
          getTreeEvalFieldBuilder() {
        if (treeEvalBuilder_ == null) {
          treeEvalBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              BoostEval, BoostEval.Builder, BoostEvalOrBuilder>(
                  treeEval_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          treeEval_ = null;
        }
        return treeEvalBuilder_;
      }

      private int bsVersion_ ;
      /**
       * <code>int32 bsVersion = 3;</code>
       * @return The bsVersion.
       */
      @Override
      public int getBsVersion() {
        return bsVersion_;
      }
      /**
       * <code>int32 bsVersion = 3;</code>
       * @param value The bsVersion to set.
       * @return This builder for chaining.
       */
      public Builder setBsVersion(int value) {
        
        bsVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 bsVersion = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearBsVersion() {
        
        bsVersion_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:PredictTreeRequest)
    }

    // @@protoc_insertion_point(class_scope:PredictTreeRequest)
    private static final PredictTreeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new PredictTreeRequest();
    }

    public static PredictTreeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public PredictTreeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PredictTreeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PredictTreeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Table result = 1;</code>
     * @return Whether the result field is set.
     */
    boolean hasResult();
    /**
     * <code>.Table result = 1;</code>
     * @return The result.
     */
    Table getResult();
    /**
     * <code>.Table result = 1;</code>
     */
    TableOrBuilder getResultOrBuilder();
  }
  /**
   * Protobuf type {@code PredictTreeResponse}
   */
  public static final class PredictTreeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PredictTreeResponse)
      PredictTreeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PredictTreeResponse.newBuilder() to construct.
    private PredictTreeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PredictTreeResponse() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new PredictTreeResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PredictTreeResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              Table.Builder subBuilder = null;
              if (result_ != null) {
                subBuilder = result_.toBuilder();
              }
              result_ = input.readMessage(Table.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(result_);
                result_ = subBuilder.buildPartial();
              }

              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 FLProto.internal_static_PredictTreeResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_PredictTreeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PredictTreeResponse.class, Builder.class);
    }

    public static final int RESULT_FIELD_NUMBER = 1;
    private Table result_;
    /**
     * <code>.Table result = 1;</code>
     * @return Whether the result field is set.
     */
    @Override
    public boolean hasResult() {
      return result_ != null;
    }
    /**
     * <code>.Table result = 1;</code>
     * @return The result.
     */
    @Override
    public Table getResult() {
      return result_ == null ? Table.getDefaultInstance() : result_;
    }
    /**
     * <code>.Table result = 1;</code>
     */
    @Override
    public TableOrBuilder getResultOrBuilder() {
      return getResult();
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (result_ != null) {
        output.writeMessage(1, getResult());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (result_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getResult());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof PredictTreeResponse)) {
        return super.equals(obj);
      }
      PredictTreeResponse other = (PredictTreeResponse) obj;

      if (hasResult() != other.hasResult()) return false;
      if (hasResult()) {
        if (!getResult()
            .equals(other.getResult())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasResult()) {
        hash = (37 * hash) + RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getResult().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static PredictTreeResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PredictTreeResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PredictTreeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PredictTreeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PredictTreeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PredictTreeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PredictTreeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PredictTreeResponse 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 PredictTreeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static PredictTreeResponse 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 PredictTreeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PredictTreeResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(PredictTreeResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PredictTreeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:PredictTreeResponse)
        PredictTreeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_PredictTreeResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_PredictTreeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                PredictTreeResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.PredictTreeResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (resultBuilder_ == null) {
          result_ = null;
        } else {
          result_ = null;
          resultBuilder_ = null;
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_PredictTreeResponse_descriptor;
      }

      @Override
      public PredictTreeResponse getDefaultInstanceForType() {
        return PredictTreeResponse.getDefaultInstance();
      }

      @Override
      public PredictTreeResponse build() {
        PredictTreeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public PredictTreeResponse buildPartial() {
        PredictTreeResponse result = new PredictTreeResponse(this);
        if (resultBuilder_ == null) {
          result.result_ = result_;
        } else {
          result.result_ = resultBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof PredictTreeResponse) {
          return mergeFrom((PredictTreeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(PredictTreeResponse other) {
        if (other == PredictTreeResponse.getDefaultInstance()) return this;
        if (other.hasResult()) {
          mergeResult(other.getResult());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        PredictTreeResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (PredictTreeResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Table result_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder> resultBuilder_;
      /**
       * <code>.Table result = 1;</code>
       * @return Whether the result field is set.
       */
      public boolean hasResult() {
        return resultBuilder_ != null || result_ != null;
      }
      /**
       * <code>.Table result = 1;</code>
       * @return The result.
       */
      public Table getResult() {
        if (resultBuilder_ == null) {
          return result_ == null ? Table.getDefaultInstance() : result_;
        } else {
          return resultBuilder_.getMessage();
        }
      }
      /**
       * <code>.Table result = 1;</code>
       */
      public Builder setResult(Table value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          result_ = value;
          onChanged();
        } else {
          resultBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Table result = 1;</code>
       */
      public Builder setResult(
          Table.Builder builderForValue) {
        if (resultBuilder_ == null) {
          result_ = builderForValue.build();
          onChanged();
        } else {
          resultBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Table result = 1;</code>
       */
      public Builder mergeResult(Table value) {
        if (resultBuilder_ == null) {
          if (result_ != null) {
            result_ =
              Table.newBuilder(result_).mergeFrom(value).buildPartial();
          } else {
            result_ = value;
          }
          onChanged();
        } else {
          resultBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Table result = 1;</code>
       */
      public Builder clearResult() {
        if (resultBuilder_ == null) {
          result_ = null;
          onChanged();
        } else {
          result_ = null;
          resultBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Table result = 1;</code>
       */
      public Table.Builder getResultBuilder() {
        
        onChanged();
        return getResultFieldBuilder().getBuilder();
      }
      /**
       * <code>.Table result = 1;</code>
       */
      public TableOrBuilder getResultOrBuilder() {
        if (resultBuilder_ != null) {
          return resultBuilder_.getMessageOrBuilder();
        } else {
          return result_ == null ?
              Table.getDefaultInstance() : result_;
        }
      }
      /**
       * <code>.Table result = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Table, Table.Builder, TableOrBuilder>
          getResultFieldBuilder() {
        if (resultBuilder_ == null) {
          resultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Table, Table.Builder, TableOrBuilder>(
                  getResult(),
                  getParentForChildren(),
                  isClean());
          result_ = null;
        }
        return resultBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:PredictTreeResponse)
    }

    // @@protoc_insertion_point(class_scope:PredictTreeResponse)
    private static final PredictTreeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new PredictTreeResponse();
    }

    public static PredictTreeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public PredictTreeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadSplitRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DownloadSplitRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    String getClientuuid();
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    com.google.protobuf.ByteString
        getClientuuidBytes();

    /**
     * <code>string treeID = 2;</code>
     * @return The treeID.
     */
    String getTreeID();
    /**
     * <code>string treeID = 2;</code>
     * @return The bytes for treeID.
     */
    com.google.protobuf.ByteString
        getTreeIDBytes();

    /**
     * <code>string nodeID = 3;</code>
     * @return The nodeID.
     */
    String getNodeID();
    /**
     * <code>string nodeID = 3;</code>
     * @return The bytes for nodeID.
     */
    com.google.protobuf.ByteString
        getNodeIDBytes();
  }
  /**
   * Protobuf type {@code DownloadSplitRequest}
   */
  public static final class DownloadSplitRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:DownloadSplitRequest)
      DownloadSplitRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DownloadSplitRequest.newBuilder() to construct.
    private DownloadSplitRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DownloadSplitRequest() {
      clientuuid_ = "";
      treeID_ = "";
      nodeID_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DownloadSplitRequest();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DownloadSplitRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              String s = input.readStringRequireUtf8();

              clientuuid_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

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

              nodeID_ = 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 FLProto.internal_static_DownloadSplitRequest_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DownloadSplitRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DownloadSplitRequest.class, Builder.class);
    }

    public static final int CLIENTUUID_FIELD_NUMBER = 1;
    private volatile Object clientuuid_;
    /**
     * <code>string clientuuid = 1;</code>
     * @return The clientuuid.
     */
    @Override
    public String getClientuuid() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        clientuuid_ = s;
        return s;
      }
    }
    /**
     * <code>string clientuuid = 1;</code>
     * @return The bytes for clientuuid.
     */
    @Override
    public com.google.protobuf.ByteString
        getClientuuidBytes() {
      Object ref = clientuuid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        clientuuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TREEID_FIELD_NUMBER = 2;
    private volatile Object treeID_;
    /**
     * <code>string treeID = 2;</code>
     * @return The treeID.
     */
    @Override
    public String getTreeID() {
      Object ref = treeID_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        treeID_ = s;
        return s;
      }
    }
    /**
     * <code>string treeID = 2;</code>
     * @return The bytes for treeID.
     */
    @Override
    public com.google.protobuf.ByteString
        getTreeIDBytes() {
      Object ref = treeID_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        treeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODEID_FIELD_NUMBER = 3;
    private volatile Object nodeID_;
    /**
     * <code>string nodeID = 3;</code>
     * @return The nodeID.
     */
    @Override
    public String getNodeID() {
      Object ref = nodeID_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        nodeID_ = s;
        return s;
      }
    }
    /**
     * <code>string nodeID = 3;</code>
     * @return The bytes for nodeID.
     */
    @Override
    public com.google.protobuf.ByteString
        getNodeIDBytes() {
      Object ref = nodeID_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        nodeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClientuuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientuuid_);
      }
      if (!getTreeIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, treeID_);
      }
      if (!getNodeIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, nodeID_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getClientuuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientuuid_);
      }
      if (!getTreeIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, treeID_);
      }
      if (!getNodeIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, nodeID_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DownloadSplitRequest)) {
        return super.equals(obj);
      }
      DownloadSplitRequest other = (DownloadSplitRequest) obj;

      if (!getClientuuid()
          .equals(other.getClientuuid())) return false;
      if (!getTreeID()
          .equals(other.getTreeID())) return false;
      if (!getNodeID()
          .equals(other.getNodeID())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @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().hashCode();
      hash = (37 * hash) + TREEID_FIELD_NUMBER;
      hash = (53 * hash) + getTreeID().hashCode();
      hash = (37 * hash) + NODEID_FIELD_NUMBER;
      hash = (53 * hash) + getNodeID().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DownloadSplitRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadSplitRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadSplitRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadSplitRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadSplitRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadSplitRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadSplitRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadSplitRequest 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 DownloadSplitRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DownloadSplitRequest 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 DownloadSplitRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadSplitRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DownloadSplitRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DownloadSplitRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DownloadSplitRequest)
        DownloadSplitRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DownloadSplitRequest_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DownloadSplitRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DownloadSplitRequest.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DownloadSplitRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        treeID_ = "";

        nodeID_ = "";

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DownloadSplitRequest_descriptor;
      }

      @Override
      public DownloadSplitRequest getDefaultInstanceForType() {
        return DownloadSplitRequest.getDefaultInstance();
      }

      @Override
      public DownloadSplitRequest build() {
        DownloadSplitRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DownloadSplitRequest buildPartial() {
        DownloadSplitRequest result = new DownloadSplitRequest(this);
        result.clientuuid_ = clientuuid_;
        result.treeID_ = treeID_;
        result.nodeID_ = nodeID_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DownloadSplitRequest) {
          return mergeFrom((DownloadSplitRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DownloadSplitRequest other) {
        if (other == DownloadSplitRequest.getDefaultInstance()) return this;
        if (!other.getClientuuid().isEmpty()) {
          clientuuid_ = other.clientuuid_;
          onChanged();
        }
        if (!other.getTreeID().isEmpty()) {
          treeID_ = other.treeID_;
          onChanged();
        }
        if (!other.getNodeID().isEmpty()) {
          nodeID_ = other.nodeID_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DownloadSplitRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DownloadSplitRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object clientuuid_ = "";
      /**
       * <code>string clientuuid = 1;</code>
       * @return The clientuuid.
       */
      public String getClientuuid() {
        Object ref = clientuuid_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          clientuuid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return The bytes for clientuuid.
       */
      public com.google.protobuf.ByteString
          getClientuuidBytes() {
        Object ref = clientuuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          clientuuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuid(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        clientuuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClientuuid() {
        
        clientuuid_ = getDefaultInstance().getClientuuid();
        onChanged();
        return this;
      }
      /**
       * <code>string clientuuid = 1;</code>
       * @param value The bytes for clientuuid to set.
       * @return This builder for chaining.
       */
      public Builder setClientuuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        clientuuid_ = value;
        onChanged();
        return this;
      }

      private Object treeID_ = "";
      /**
       * <code>string treeID = 2;</code>
       * @return The treeID.
       */
      public String getTreeID() {
        Object ref = treeID_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          treeID_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string treeID = 2;</code>
       * @return The bytes for treeID.
       */
      public com.google.protobuf.ByteString
          getTreeIDBytes() {
        Object ref = treeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          treeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string treeID = 2;</code>
       * @param value The treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        treeID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTreeID() {
        
        treeID_ = getDefaultInstance().getTreeID();
        onChanged();
        return this;
      }
      /**
       * <code>string treeID = 2;</code>
       * @param value The bytes for treeID to set.
       * @return This builder for chaining.
       */
      public Builder setTreeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        treeID_ = value;
        onChanged();
        return this;
      }

      private Object nodeID_ = "";
      /**
       * <code>string nodeID = 3;</code>
       * @return The nodeID.
       */
      public String getNodeID() {
        Object ref = nodeID_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          nodeID_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string nodeID = 3;</code>
       * @return The bytes for nodeID.
       */
      public com.google.protobuf.ByteString
          getNodeIDBytes() {
        Object ref = nodeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          nodeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string nodeID = 3;</code>
       * @param value The nodeID to set.
       * @return This builder for chaining.
       */
      public Builder setNodeID(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        nodeID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string nodeID = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeID() {
        
        nodeID_ = getDefaultInstance().getNodeID();
        onChanged();
        return this;
      }
      /**
       * <code>string nodeID = 3;</code>
       * @param value The bytes for nodeID to set.
       * @return This builder for chaining.
       */
      public Builder setNodeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        nodeID_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DownloadSplitRequest)
    }

    // @@protoc_insertion_point(class_scope:DownloadSplitRequest)
    private static final DownloadSplitRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DownloadSplitRequest();
    }

    public static DownloadSplitRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DownloadSplitRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadSplitResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DownloadSplitResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.DataSplit split = 1;</code>
     * @return Whether the split field is set.
     */
    boolean hasSplit();
    /**
     * <code>.DataSplit split = 1;</code>
     * @return The split.
     */
    DataSplit getSplit();
    /**
     * <code>.DataSplit split = 1;</code>
     */
    DataSplitOrBuilder getSplitOrBuilder();

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

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

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new DownloadSplitResponse();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DownloadSplitResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new 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: {
              DataSplit.Builder subBuilder = null;
              if (split_ != null) {
                subBuilder = split_.toBuilder();
              }
              split_ = input.readMessage(DataSplit.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(split_);
                split_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              response_ = s;
              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 FLProto.internal_static_DownloadSplitResponse_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return FLProto.internal_static_DownloadSplitResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DownloadSplitResponse.class, Builder.class);
    }

    public static final int SPLIT_FIELD_NUMBER = 1;
    private DataSplit split_;
    /**
     * <code>.DataSplit split = 1;</code>
     * @return Whether the split field is set.
     */
    @Override
    public boolean hasSplit() {
      return split_ != null;
    }
    /**
     * <code>.DataSplit split = 1;</code>
     * @return The split.
     */
    @Override
    public DataSplit getSplit() {
      return split_ == null ? DataSplit.getDefaultInstance() : split_;
    }
    /**
     * <code>.DataSplit split = 1;</code>
     */
    @Override
    public DataSplitOrBuilder getSplitOrBuilder() {
      return getSplit();
    }

    public static final int RESPONSE_FIELD_NUMBER = 2;
    private volatile Object response_;
    /**
     * <code>string response = 2;</code>
     * @return The response.
     */
    @Override
    public String getResponse() {
      Object ref = response_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        response_ = s;
        return s;
      }
    }
    /**
     * <code>string response = 2;</code>
     * @return The bytes for response.
     */
    @Override
    public com.google.protobuf.ByteString
        getResponseBytes() {
      Object ref = response_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        response_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (split_ != null) {
        output.writeMessage(1, getSplit());
      }
      if (!getResponseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, response_);
      }
      if (code_ != 0) {
        output.writeInt32(3, code_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (split_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSplit());
      }
      if (!getResponseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, response_);
      }
      if (code_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, code_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DownloadSplitResponse)) {
        return super.equals(obj);
      }
      DownloadSplitResponse other = (DownloadSplitResponse) obj;

      if (hasSplit() != other.hasSplit()) return false;
      if (hasSplit()) {
        if (!getSplit()
            .equals(other.getSplit())) return false;
      }
      if (!getResponse()
          .equals(other.getResponse())) return false;
      if (getCode()
          != other.getCode()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSplit()) {
        hash = (37 * hash) + SPLIT_FIELD_NUMBER;
        hash = (53 * hash) + getSplit().hashCode();
      }
      hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + getResponse().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DownloadSplitResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadSplitResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadSplitResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadSplitResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadSplitResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DownloadSplitResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DownloadSplitResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadSplitResponse 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 DownloadSplitResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DownloadSplitResponse 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 DownloadSplitResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DownloadSplitResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DownloadSplitResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DownloadSplitResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:DownloadSplitResponse)
        DownloadSplitResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return FLProto.internal_static_DownloadSplitResponse_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return FLProto.internal_static_DownloadSplitResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DownloadSplitResponse.class, Builder.class);
      }

      // Construct using com.intel.analytics.zoo.ppml.generated.FLProto.DownloadSplitResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        code_ = 0;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return FLProto.internal_static_DownloadSplitResponse_descriptor;
      }

      @Override
      public DownloadSplitResponse getDefaultInstanceForType() {
        return DownloadSplitResponse.getDefaultInstance();
      }

      @Override
      public DownloadSplitResponse build() {
        DownloadSplitResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DownloadSplitResponse buildPartial() {
        DownloadSplitResponse result = new DownloadSplitResponse(this);
        if (splitBuilder_ == null) {
          result.split_ = split_;
        } else {
          result.split_ = splitBuilder_.build();
        }
        result.response_ = response_;
        result.code_ = code_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DownloadSplitResponse) {
          return mergeFrom((DownloadSplitResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DownloadSplitResponse other) {
        if (other == DownloadSplitResponse.getDefaultInstance()) return this;
        if (other.hasSplit()) {
          mergeSplit(other.getSplit());
        }
        if (!other.getResponse().isEmpty()) {
          response_ = other.response_;
          onChanged();
        }
        if (other.getCode() != 0) {
          setCode(other.getCode());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DownloadSplitResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DownloadSplitResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private DataSplit split_;
      private com.google.protobuf.SingleFieldBuilderV3<
          DataSplit, DataSplit.Builder, DataSplitOrBuilder> splitBuilder_;
      /**
       * <code>.DataSplit split = 1;</code>
       * @return Whether the split field is set.
       */
      public boolean hasSplit() {
        return splitBuilder_ != null || split_ != null;
      }
      /**
       * <code>.DataSplit split = 1;</code>
       * @return The split.
       */
      public DataSplit getSplit() {
        if (splitBuilder_ == null) {
          return split_ == null ? DataSplit.getDefaultInstance() : split_;
        } else {
          return splitBuilder_.getMessage();
        }
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      public Builder setSplit(DataSplit value) {
        if (splitBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          split_ = value;
          onChanged();
        } else {
          splitBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      public Builder setSplit(
          DataSplit.Builder builderForValue) {
        if (splitBuilder_ == null) {
          split_ = builderForValue.build();
          onChanged();
        } else {
          splitBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      public Builder mergeSplit(DataSplit value) {
        if (splitBuilder_ == null) {
          if (split_ != null) {
            split_ =
              DataSplit.newBuilder(split_).mergeFrom(value).buildPartial();
          } else {
            split_ = value;
          }
          onChanged();
        } else {
          splitBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      public Builder clearSplit() {
        if (splitBuilder_ == null) {
          split_ = null;
          onChanged();
        } else {
          split_ = null;
          splitBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      public DataSplit.Builder getSplitBuilder() {
        
        onChanged();
        return getSplitFieldBuilder().getBuilder();
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      public DataSplitOrBuilder getSplitOrBuilder() {
        if (splitBuilder_ != null) {
          return splitBuilder_.getMessageOrBuilder();
        } else {
          return split_ == null ?
              DataSplit.getDefaultInstance() : split_;
        }
      }
      /**
       * <code>.DataSplit split = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          DataSplit, DataSplit.Builder, DataSplitOrBuilder>
          getSplitFieldBuilder() {
        if (splitBuilder_ == null) {
          splitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              DataSplit, DataSplit.Builder, DataSplitOrBuilder>(
                  getSplit(),
                  getParentForChildren(),
                  isClean());
          split_ = null;
        }
        return splitBuilder_;
      }

      private Object response_ = "";
      /**
       * <code>string response = 2;</code>
       * @return The response.
       */
      public String getResponse() {
        Object ref = response_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          response_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string response = 2;</code>
       * @return The bytes for response.
       */
      public com.google.protobuf.ByteString
          getResponseBytes() {
        Object ref = response_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          response_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string response = 2;</code>
       * @param value The response to set.
       * @return This builder for chaining.
       */
      public Builder setResponse(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string response = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponse() {
        
        response_ = getDefaultInstance().getResponse();
        onChanged();
        return this;
      }
      /**
       * <code>string response = 2;</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 int code_ ;
      /**
       * <code>int32 code = 3;</code>
       * @return The code.
       */
      @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;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:DownloadSplitResponse)
    }

    // @@protoc_insertion_point(class_scope:DownloadSplitResponse)
    private static final DownloadSplitResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DownloadSplitResponse();
    }

    public static DownloadSplitResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public DownloadSplitResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SaltRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_SaltRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SaltReply_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_SaltReply_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadSetRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadSetRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadSetResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadSetResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DownloadIntersectionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DownloadIntersectionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DownloadIntersectionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DownloadIntersectionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FloatTensor_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_FloatTensor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Table_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Table_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Table_TableEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Table_TableEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_TableMetaData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_TableMetaData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_TreeLeaves_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_TreeLeaves_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadTreeLeavesRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadTreeLeavesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DataSplit_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DataSplit_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_TreePredict_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_TreePredict_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_BoostPredict_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_BoostPredict_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_BoostEval_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_BoostEval_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DownloadRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DownloadRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DownloadResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DownloadResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_RegisterRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_RegisterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_RegisterResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_RegisterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_EvaluateRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_EvaluateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_EvaluateResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_EvaluateResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadTreeEvalRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadTreeEvalRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_UploadSplitRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_UploadSplitRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PredictTreeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PredictTreeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PredictTreeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PredictTreeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DownloadSplitRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DownloadSplitRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DownloadSplitResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DownloadSplitResponse_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\rFLProto.proto\"G\n\013SaltRequest\022\017\n\007task_i" +
      "d\030\001 \001(\t\022\022\n\nclient_num\030\002 \001(\005\022\023\n\013secure_co" +
      "de\030\003 \001(\t\"\037\n\tSaltReply\022\022\n\nsalt_reply\030\001 \001(" +
      "\t\"\226\001\n\020UploadSetRequest\022\017\n\007task_id\030\001 \001(\t\022" +
      "\021\n\tclient_id\030\002 \001(\t\022\r\n\005split\030\003 \001(\005\022\021\n\tnum" +
      "_split\030\004 \001(\005\022\024\n\014split_length\030\005 \001(\005\022\024\n\014to" +
      "tal_length\030\006 \001(\005\022\020\n\010hashedID\030\007 \003(\t\"=\n\021Up" +
      "loadSetResponse\022\017\n\007task_id\030\001 \001(\t\022\027\n\006stat" +
      "us\030\002 \001(\0162\007.SIGNAL\"=\n\033DownloadIntersectio" +
      "nRequest\022\017\n\007task_id\030\001 \001(\t\022\r\n\005split\030\002 \001(\005" +
      "\"\254\001\n\034DownloadIntersectionResponse\022\017\n\007tas" +
      "k_id\030\001 \001(\t\022\027\n\006status\030\002 \001(\0162\007.SIGNAL\022\r\n\005s" +
      "plit\030\003 \001(\005\022\021\n\tnum_split\030\004 \001(\005\022\024\n\014split_l" +
      "ength\030\005 \001(\005\022\024\n\014total_length\030\006 \001(\005\022\024\n\014int" +
      "ersection\030\007 \003(\t\",\n\013FloatTensor\022\r\n\005shape\030" +
      "\001 \003(\005\022\016\n\006tensor\030\002 \003(\002\"\207\001\n\005Table\022 \n\010metaD" +
      "ata\030\001 \001(\0132\016.TableMetaData\022 \n\005table\030\002 \003(\013" +
      "2\021.Table.TableEntry\032:\n\nTableEntry\022\013\n\003key" +
      "\030\001 \001(\t\022\033\n\005value\030\002 \001(\0132\014.FloatTensor:\0028\001\"" +
      ".\n\rTableMetaData\022\014\n\004name\030\001 \001(\t\022\017\n\007versio" +
      "n\030\002 \001(\005\"C\n\nTreeLeaves\022\016\n\006treeID\030\001 \001(\t\022\021\n" +
      "\tleafIndex\030\002 \003(\005\022\022\n\nleafOutput\030\003 \003(\002\"N\n\027" +
      "UploadTreeLeavesRequest\022\022\n\nclientuuid\030\001 " +
      "\001(\t\022\037\n\ntreeLeaves\030\002 \001(\0132\013.TreeLeaves\"\227\001\n" +
      "\tDataSplit\022\016\n\006treeID\030\001 \001(\t\022\016\n\006nodeID\030\002 \001" +
      "(\t\022\021\n\tfeatureID\030\003 \001(\005\022\022\n\nsplitValue\030\004 \001(" +
      "\002\022\014\n\004gain\030\005 \001(\002\022\021\n\tsetLength\030\006 \001(\005\022\017\n\007it" +
      "emSet\030\007 \003(\005\022\021\n\tclientUid\030\010 \001(\t\"/\n\013TreePr" +
      "edict\022\016\n\006treeID\030\001 \001(\t\022\020\n\010predicts\030\002 \003(\010\"" +
      ".\n\014BoostPredict\022\036\n\010predicts\030\001 \003(\0132\014.Tree" +
      "Predict\",\n\tBoostEval\022\037\n\tevaluates\030\001 \003(\0132" +
      "\014.TreePredict\"3\n\017DownloadRequest\022 \n\010meta" +
      "Data\030\001 \001(\0132\016.TableMetaData\"H\n\020DownloadRe" +
      "sponse\022\024\n\004data\030\001 \001(\0132\006.Table\022\020\n\010response" +
      "\030\002 \001(\t\022\014\n\004code\030\003 \001(\005\"9\n\rUploadRequest\022\022\n" +
      "\nclientuuid\030\001 \001(\t\022\024\n\004data\030\002 \001(\0132\006.Table\"" +
      "0\n\016UploadResponse\022\020\n\010response\030\001 \001(\t\022\014\n\004c" +
      "ode\030\002 \001(\005\"4\n\017RegisterRequest\022\022\n\nclientuu" +
      "id\030\001 \001(\t\022\r\n\005token\030\002 \001(\t\"2\n\020RegisterRespo" +
      "nse\022\020\n\010response\030\001 \001(\t\022\014\n\004code\030\002 \001(\005\"I\n\017E" +
      "valuateRequest\022\022\n\nclientuuid\030\001 \001(\t\022\024\n\004da" +
      "ta\030\002 \001(\0132\006.Table\022\014\n\004last\030\003 \001(\010\"H\n\020Evalua" +
      "teResponse\022\024\n\004data\030\001 \001(\0132\006.Table\022\020\n\010resp" +
      "onse\030\002 \001(\t\022\014\n\004code\030\003 \001(\005\"Z\n\025UploadTreeEv" +
      "alRequest\022\022\n\nclientuuid\030\001 \001(\t\022\017\n\007version" +
      "\030\002 \001(\005\022\034\n\010treeEval\030\003 \003(\0132\n.BoostEval\"C\n\022" +
      "UploadSplitRequest\022\022\n\nclientuuid\030\001 \001(\t\022\031" +
      "\n\005split\030\002 \001(\0132\n.DataSplit\"Y\n\022PredictTree" +
      "Request\022\022\n\nclientuuid\030\001 \001(\t\022\034\n\010treeEval\030" +
      "\002 \003(\0132\n.BoostEval\022\021\n\tbsVersion\030\003 \001(\005\"-\n\023" +
      "PredictTreeResponse\022\026\n\006result\030\001 \001(\0132\006.Ta" +
      "ble\"J\n\024DownloadSplitRequest\022\022\n\nclientuui" +
      "d\030\001 \001(\t\022\016\n\006treeID\030\002 \001(\t\022\016\n\006nodeID\030\003 \001(\t\"" +
      "R\n\025DownloadSplitResponse\022\031\n\005split\030\001 \001(\0132" +
      "\n.DataSplit\022\020\n\010response\030\002 \001(\t\022\014\n\004code\030\003 " +
      "\001(\005*H\n\006SIGNAL\022\013\n\007SUCCESS\020\000\022\010\n\004WAIT\020\001\022\013\n\007" +
      "TIMEOUT\020\002\022\017\n\013EMPTY_INPUT\020\003\022\t\n\005ERROR\020\0042\300\001" +
      "\n\nPSIService\022%\n\007getSalt\022\014.SaltRequest\032\n." +
      "SaltReply\"\000\0224\n\tuploadSet\022\021.UploadSetRequ" +
      "est\032\022.UploadSetResponse\"\000\022U\n\024downloadInt" +
      "ersection\022\034.DownloadIntersectionRequest\032" +
      "\035.DownloadIntersectionResponse\"\0002\253\004\n\026Par" +
      "ameterServerService\0220\n\013UploadTrain\022\016.Upl" +
      "oadRequest\032\017.UploadResponse\"\000\0226\n\rDownloa" +
      "dTrain\022\020.DownloadRequest\032\021.DownloadRespo" +
      "nse\"\000\0227\n\016UploadEvaluate\022\020.EvaluateReques" +
      "t\032\021.EvaluateResponse\"\000\022:\n\020UploadSplitTra" +
      "in\022\023.UploadSplitRequest\032\017.UploadResponse" +
      "\"\000\022E\n\022DownloadSplitTrain\022\025.DownloadSplit" +
      "Request\032\026.DownloadSplitResponse\"\000\0221\n\010Reg" +
      "ister\022\020.RegisterRequest\032\021.RegisterRespon" +
      "se\"\000\022;\n\016UploadTreeEval\022\026.UploadTreeEvalR" +
      "equest\032\017.UploadResponse\"\000\022?\n\020UploadTreeL" +
      "eaves\022\030.UploadTreeLeavesRequest\032\017.Upload" +
      "Response\"\000\022:\n\013PredictTree\022\023.PredictTreeR" +
      "equest\032\024.PredictTreeResponse\"\000B1\n&com.in" +
      "tel.analytics.zoo.ppml.generatedB\007FLProt" +
      "ob\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_SaltRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_SaltRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_SaltRequest_descriptor,
        new String[] { "TaskId", "ClientNum", "SecureCode", });
    internal_static_SaltReply_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_SaltReply_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_SaltReply_descriptor,
        new String[] { "SaltReply", });
    internal_static_UploadSetRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_UploadSetRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadSetRequest_descriptor,
        new String[] { "TaskId", "ClientId", "Split", "NumSplit", "SplitLength", "TotalLength", "HashedID", });
    internal_static_UploadSetResponse_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_UploadSetResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadSetResponse_descriptor,
        new String[] { "TaskId", "Status", });
    internal_static_DownloadIntersectionRequest_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_DownloadIntersectionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DownloadIntersectionRequest_descriptor,
        new String[] { "TaskId", "Split", });
    internal_static_DownloadIntersectionResponse_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_DownloadIntersectionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DownloadIntersectionResponse_descriptor,
        new String[] { "TaskId", "Status", "Split", "NumSplit", "SplitLength", "TotalLength", "Intersection", });
    internal_static_FloatTensor_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_FloatTensor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_FloatTensor_descriptor,
        new String[] { "Shape", "Tensor", });
    internal_static_Table_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_Table_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Table_descriptor,
        new String[] { "MetaData", "Table", });
    internal_static_Table_TableEntry_descriptor =
      internal_static_Table_descriptor.getNestedTypes().get(0);
    internal_static_Table_TableEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Table_TableEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_TableMetaData_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_TableMetaData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_TableMetaData_descriptor,
        new String[] { "Name", "Version", });
    internal_static_TreeLeaves_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_TreeLeaves_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_TreeLeaves_descriptor,
        new String[] { "TreeID", "LeafIndex", "LeafOutput", });
    internal_static_UploadTreeLeavesRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_UploadTreeLeavesRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadTreeLeavesRequest_descriptor,
        new String[] { "Clientuuid", "TreeLeaves", });
    internal_static_DataSplit_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_DataSplit_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DataSplit_descriptor,
        new String[] { "TreeID", "NodeID", "FeatureID", "SplitValue", "Gain", "SetLength", "ItemSet", "ClientUid", });
    internal_static_TreePredict_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_TreePredict_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_TreePredict_descriptor,
        new String[] { "TreeID", "Predicts", });
    internal_static_BoostPredict_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_BoostPredict_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_BoostPredict_descriptor,
        new String[] { "Predicts", });
    internal_static_BoostEval_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_BoostEval_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_BoostEval_descriptor,
        new String[] { "Evaluates", });
    internal_static_DownloadRequest_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_DownloadRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DownloadRequest_descriptor,
        new String[] { "MetaData", });
    internal_static_DownloadResponse_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_DownloadResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DownloadResponse_descriptor,
        new String[] { "Data", "Response", "Code", });
    internal_static_UploadRequest_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_UploadRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadRequest_descriptor,
        new String[] { "Clientuuid", "Data", });
    internal_static_UploadResponse_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_UploadResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadResponse_descriptor,
        new String[] { "Response", "Code", });
    internal_static_RegisterRequest_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_RegisterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_RegisterRequest_descriptor,
        new String[] { "Clientuuid", "Token", });
    internal_static_RegisterResponse_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_RegisterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_RegisterResponse_descriptor,
        new String[] { "Response", "Code", });
    internal_static_EvaluateRequest_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_EvaluateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_EvaluateRequest_descriptor,
        new String[] { "Clientuuid", "Data", "Last", });
    internal_static_EvaluateResponse_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_EvaluateResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_EvaluateResponse_descriptor,
        new String[] { "Data", "Response", "Code", });
    internal_static_UploadTreeEvalRequest_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_UploadTreeEvalRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadTreeEvalRequest_descriptor,
        new String[] { "Clientuuid", "Version", "TreeEval", });
    internal_static_UploadSplitRequest_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_UploadSplitRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_UploadSplitRequest_descriptor,
        new String[] { "Clientuuid", "Split", });
    internal_static_PredictTreeRequest_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_PredictTreeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PredictTreeRequest_descriptor,
        new String[] { "Clientuuid", "TreeEval", "BsVersion", });
    internal_static_PredictTreeResponse_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_PredictTreeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PredictTreeResponse_descriptor,
        new String[] { "Result", });
    internal_static_DownloadSplitRequest_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_DownloadSplitRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DownloadSplitRequest_descriptor,
        new String[] { "Clientuuid", "TreeID", "NodeID", });
    internal_static_DownloadSplitResponse_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_DownloadSplitResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DownloadSplitResponse_descriptor,
        new String[] { "Split", "Response", "Code", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
