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

package pb.xiugou.x1.protobuf.ministruct;

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

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

    /**
     * <pre>
     *物品标识
     * </pre>
     *
     * <code>int32 identity = 1;</code>
     * @return The identity.
     */
    int getIdentity();

    /**
     * <pre>
     *数量，小于0则标识扣减
     * </pre>
     *
     * <code>int64 num = 2;</code>
     * @return The num.
     */
    long getNum();

    /**
     * <pre>
     *扩展数据，根据道具配置的逻辑类型进行解析
     * </pre>
     *
     * <code>bytes data = 3;</code>
     * @return The data.
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * <pre>
   *物品，包含道具、资源、英雄、装备
   * </pre>
   *
   * Protobuf type {@code pb.PbThing}
   */
  public  static final class PbThing extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbThing)
      PbThingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbThing.newBuilder() to construct.
    private PbThing(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbThing() {
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

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

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

              identity_ = input.readInt32();
              break;
            }
            case 16: {

              num_ = input.readInt64();
              break;
            }
            case 26: {

              data_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThing_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThing_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder.class);
    }

    public static final int IDENTITY_FIELD_NUMBER = 1;
    private int identity_;
    /**
     * <pre>
     *物品标识
     * </pre>
     *
     * <code>int32 identity = 1;</code>
     * @return The identity.
     */
    public int getIdentity() {
      return identity_;
    }

    public static final int NUM_FIELD_NUMBER = 2;
    private long num_;
    /**
     * <pre>
     *数量，小于0则标识扣减
     * </pre>
     *
     * <code>int64 num = 2;</code>
     * @return The num.
     */
    public long getNum() {
      return num_;
    }

    public static final int DATA_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString data_;
    /**
     * <pre>
     *扩展数据，根据道具配置的逻辑类型进行解析
     * </pre>
     *
     * <code>bytes data = 3;</code>
     * @return The data.
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (identity_ != 0) {
        output.writeInt32(1, identity_);
      }
      if (num_ != 0L) {
        output.writeInt64(2, num_);
      }
      if (!data_.isEmpty()) {
        output.writeBytes(3, data_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (identity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, identity_);
      }
      if (num_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, num_);
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, data_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing) obj;

      if (getIdentity()
          != other.getIdentity()) return false;
      if (getNum()
          != other.getNum()) return false;
      if (!getData()
          .equals(other.getData())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getIdentity();
      hash = (37 * hash) + NUM_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNum());
      hash = (37 * hash) + DATA_FIELD_NUMBER;
      hash = (53 * hash) + getData().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *物品，包含道具、资源、英雄、装备
     * </pre>
     *
     * Protobuf type {@code pb.PbThing}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbThing)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThing_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThing_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        num_ = 0L;

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

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThing_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing(this);
        result.identity_ = identity_;
        result.num_ = num_;
        result.data_ = data_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.getDefaultInstance()) return this;
        if (other.getIdentity() != 0) {
          setIdentity(other.getIdentity());
        }
        if (other.getNum() != 0L) {
          setNum(other.getNum());
        }
        if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int identity_ ;
      /**
       * <pre>
       *物品标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @return The identity.
       */
      public int getIdentity() {
        return identity_;
      }
      /**
       * <pre>
       *物品标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @param value The identity to set.
       * @return This builder for chaining.
       */
      public Builder setIdentity(int value) {
        
        identity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *物品标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentity() {
        
        identity_ = 0;
        onChanged();
        return this;
      }

      private long num_ ;
      /**
       * <pre>
       *数量，小于0则标识扣减
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @return The num.
       */
      public long getNum() {
        return num_;
      }
      /**
       * <pre>
       *数量，小于0则标识扣减
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @param value The num to set.
       * @return This builder for chaining.
       */
      public Builder setNum(long value) {
        
        num_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *数量，小于0则标识扣减
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNum() {
        
        num_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *扩展数据，根据道具配置的逻辑类型进行解析
       * </pre>
       *
       * <code>bytes data = 3;</code>
       * @return The data.
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <pre>
       *扩展数据，根据道具配置的逻辑类型进行解析
       * </pre>
       *
       * <code>bytes data = 3;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *扩展数据，根据道具配置的逻辑类型进行解析
       * </pre>
       *
       * <code>bytes data = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbThing)
    }

    // @@protoc_insertion_point(class_scope:pb.PbThing)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbThingReceiptOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbThingReceipt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> 
        getThingsList();
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getThings(int index);
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    int getThingsCount();
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
        getThingsOrBuilderList();
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder getThingsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code pb.PbThingReceipt}
   */
  public  static final class PbThingReceipt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbThingReceipt)
      PbThingReceiptOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbThingReceipt.newBuilder() to construct.
    private PbThingReceipt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbThingReceipt() {
      things_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbThingReceipt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.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)) {
                things_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing>();
                mutable_bitField0_ |= 0x00000001;
              }
              things_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.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)) {
          things_ = java.util.Collections.unmodifiableList(things_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThingReceipt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThingReceipt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.Builder.class);
    }

    public static final int THINGS_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> things_;
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> getThingsList() {
      return things_;
    }
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
        getThingsOrBuilderList() {
      return things_;
    }
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    public int getThingsCount() {
      return things_.size();
    }
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getThings(int index) {
      return things_.get(index);
    }
    /**
     * <pre>
     * </pre>
     *
     * <code>repeated .pb.PbThing things = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder getThingsOrBuilder(
        int index) {
      return things_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getThingsCount() > 0) {
        hash = (37 * hash) + THINGS_FIELD_NUMBER;
        hash = (53 * hash) + getThingsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbThingReceipt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbThingReceipt)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceiptOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThingReceipt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThingReceipt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbThingReceipt_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt(this);
        int from_bitField0_ = bitField0_;
        if (thingsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            things_ = java.util.Collections.unmodifiableList(things_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.things_ = things_;
        } else {
          result.things_ = thingsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt.getDefaultInstance()) return this;
        if (thingsBuilder_ == null) {
          if (!other.things_.isEmpty()) {
            if (things_.isEmpty()) {
              things_ = other.things_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureThingsIsMutable();
              things_.addAll(other.things_);
            }
            onChanged();
          }
        } else {
          if (!other.things_.isEmpty()) {
            if (thingsBuilder_.isEmpty()) {
              thingsBuilder_.dispose();
              thingsBuilder_ = null;
              things_ = other.things_;
              bitField0_ = (bitField0_ & ~0x00000001);
              thingsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getThingsFieldBuilder() : null;
            } else {
              thingsBuilder_.addAllMessages(other.things_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> things_ =
        java.util.Collections.emptyList();
      private void ensureThingsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          things_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing>(things_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> thingsBuilder_;

      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> getThingsList() {
        if (thingsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(things_);
        } else {
          return thingsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public int getThingsCount() {
        if (thingsBuilder_ == null) {
          return things_.size();
        } else {
          return thingsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getThings(int index) {
        if (thingsBuilder_ == null) {
          return things_.get(index);
        } else {
          return thingsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder setThings(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing value) {
        if (thingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureThingsIsMutable();
          things_.set(index, value);
          onChanged();
        } else {
          thingsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder setThings(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder builderForValue) {
        if (thingsBuilder_ == null) {
          ensureThingsIsMutable();
          things_.set(index, builderForValue.build());
          onChanged();
        } else {
          thingsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder addThings(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing value) {
        if (thingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureThingsIsMutable();
          things_.add(value);
          onChanged();
        } else {
          thingsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder addThings(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing value) {
        if (thingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureThingsIsMutable();
          things_.add(index, value);
          onChanged();
        } else {
          thingsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder addThings(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder builderForValue) {
        if (thingsBuilder_ == null) {
          ensureThingsIsMutable();
          things_.add(builderForValue.build());
          onChanged();
        } else {
          thingsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder addThings(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder builderForValue) {
        if (thingsBuilder_ == null) {
          ensureThingsIsMutable();
          things_.add(index, builderForValue.build());
          onChanged();
        } else {
          thingsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder addAllThings(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> values) {
        if (thingsBuilder_ == null) {
          ensureThingsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, things_);
          onChanged();
        } else {
          thingsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder clearThings() {
        if (thingsBuilder_ == null) {
          things_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          thingsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public Builder removeThings(int index) {
        if (thingsBuilder_ == null) {
          ensureThingsIsMutable();
          things_.remove(index);
          onChanged();
        } else {
          thingsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder getThingsBuilder(
          int index) {
        return getThingsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder getThingsOrBuilder(
          int index) {
        if (thingsBuilder_ == null) {
          return things_.get(index);  } else {
          return thingsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
           getThingsOrBuilderList() {
        if (thingsBuilder_ != null) {
          return thingsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(things_);
        }
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder addThingsBuilder() {
        return getThingsFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.getDefaultInstance());
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder addThingsBuilder(
          int index) {
        return getThingsFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.getDefaultInstance());
      }
      /**
       * <pre>
       * </pre>
       *
       * <code>repeated .pb.PbThing things = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder> 
           getThingsBuilderList() {
        return getThingsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
          getThingsFieldBuilder() {
        if (thingsBuilder_ == null) {
          thingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder>(
                  things_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          things_ = null;
        }
        return thingsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbThingReceipt)
    }

    // @@protoc_insertion_point(class_scope:pb.PbThingReceipt)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingReceipt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbItemOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbItem)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *道具ID
     * </pre>
     *
     * <code>int32 item = 1;</code>
     * @return The item.
     */
    int getItem();

    /**
     * <pre>
     *数量
     * </pre>
     *
     * <code>int64 num = 2;</code>
     * @return The num.
     */
    long getNum();
  }
  /**
   * Protobuf type {@code pb.PbItem}
   */
  public  static final class PbItem extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbItem)
      PbItemOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbItem.newBuilder() to construct.
    private PbItem(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbItem() {
    }

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

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

              item_ = input.readInt32();
              break;
            }
            case 16: {

              num_ = input.readInt64();
              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 pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbItem_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbItem_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder.class);
    }

    public static final int ITEM_FIELD_NUMBER = 1;
    private int item_;
    /**
     * <pre>
     *道具ID
     * </pre>
     *
     * <code>int32 item = 1;</code>
     * @return The item.
     */
    public int getItem() {
      return item_;
    }

    public static final int NUM_FIELD_NUMBER = 2;
    private long num_;
    /**
     * <pre>
     *数量
     * </pre>
     *
     * <code>int64 num = 2;</code>
     * @return The num.
     */
    public long getNum() {
      return num_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (item_ != 0) {
        output.writeInt32(1, item_);
      }
      if (num_ != 0L) {
        output.writeInt64(2, num_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (item_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, item_);
      }
      if (num_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, num_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem) obj;

      if (getItem()
          != other.getItem()) return false;
      if (getNum()
          != other.getNum()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ITEM_FIELD_NUMBER;
      hash = (53 * hash) + getItem();
      hash = (37 * hash) + NUM_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNum());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbItem}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbItem)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbItem_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbItem_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        num_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbItem_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem(this);
        result.item_ = item_;
        result.num_ = num_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance()) return this;
        if (other.getItem() != 0) {
          setItem(other.getItem());
        }
        if (other.getNum() != 0L) {
          setNum(other.getNum());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int item_ ;
      /**
       * <pre>
       *道具ID
       * </pre>
       *
       * <code>int32 item = 1;</code>
       * @return The item.
       */
      public int getItem() {
        return item_;
      }
      /**
       * <pre>
       *道具ID
       * </pre>
       *
       * <code>int32 item = 1;</code>
       * @param value The item to set.
       * @return This builder for chaining.
       */
      public Builder setItem(int value) {
        
        item_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *道具ID
       * </pre>
       *
       * <code>int32 item = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearItem() {
        
        item_ = 0;
        onChanged();
        return this;
      }

      private long num_ ;
      /**
       * <pre>
       *数量
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @return The num.
       */
      public long getNum() {
        return num_;
      }
      /**
       * <pre>
       *数量
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @param value The num to set.
       * @return This builder for chaining.
       */
      public Builder setNum(long value) {
        
        num_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *数量
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNum() {
        
        num_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbItem)
    }

    // @@protoc_insertion_point(class_scope:pb.PbItem)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbTaskOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbTask)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *任务ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     *任务进度
     * </pre>
     *
     * <code>int64 progress = 2;</code>
     * @return The progress.
     */
    long getProgress();

    /**
     * <pre>
     *任务状态，0未完成，1已完成，2已领取奖励
     * </pre>
     *
     * <code>int32 status = 3;</code>
     * @return The status.
     */
    int getStatus();
  }
  /**
   * Protobuf type {@code pb.PbTask}
   */
  public  static final class PbTask extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbTask)
      PbTaskOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbTask.newBuilder() to construct.
    private PbTask(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbTask() {
    }

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

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

              id_ = input.readInt32();
              break;
            }
            case 16: {

              progress_ = input.readInt64();
              break;
            }
            case 24: {

              status_ = 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 pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbTask_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbTask_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <pre>
     *任务ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    public int getId() {
      return id_;
    }

    public static final int PROGRESS_FIELD_NUMBER = 2;
    private long progress_;
    /**
     * <pre>
     *任务进度
     * </pre>
     *
     * <code>int64 progress = 2;</code>
     * @return The progress.
     */
    public long getProgress() {
      return progress_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private int status_;
    /**
     * <pre>
     *任务状态，0未完成，1已完成，2已领取奖励
     * </pre>
     *
     * <code>int32 status = 3;</code>
     * @return The status.
     */
    public int getStatus() {
      return status_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0) {
        output.writeInt32(1, id_);
      }
      if (progress_ != 0L) {
        output.writeInt64(2, progress_);
      }
      if (status_ != 0) {
        output.writeInt32(3, status_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (progress_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, progress_);
      }
      if (status_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, status_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask) obj;

      if (getId()
          != other.getId()) return false;
      if (getProgress()
          != other.getProgress()) return false;
      if (getStatus()
          != other.getStatus()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProgress());
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getStatus();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbTask}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbTask)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTaskOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbTask_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbTask_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        progress_ = 0L;

        status_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbTask_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask(this);
        result.id_ = id_;
        result.progress_ = progress_;
        result.status_ = status_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        if (other.getProgress() != 0L) {
          setProgress(other.getProgress());
        }
        if (other.getStatus() != 0) {
          setStatus(other.getStatus());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int id_ ;
      /**
       * <pre>
       *任务ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return The id.
       */
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       *任务ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *任务ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0;
        onChanged();
        return this;
      }

      private long progress_ ;
      /**
       * <pre>
       *任务进度
       * </pre>
       *
       * <code>int64 progress = 2;</code>
       * @return The progress.
       */
      public long getProgress() {
        return progress_;
      }
      /**
       * <pre>
       *任务进度
       * </pre>
       *
       * <code>int64 progress = 2;</code>
       * @param value The progress to set.
       * @return This builder for chaining.
       */
      public Builder setProgress(long value) {
        
        progress_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *任务进度
       * </pre>
       *
       * <code>int64 progress = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearProgress() {
        
        progress_ = 0L;
        onChanged();
        return this;
      }

      private int status_ ;
      /**
       * <pre>
       *任务状态，0未完成，1已完成，2已领取奖励
       * </pre>
       *
       * <code>int32 status = 3;</code>
       * @return The status.
       */
      public int getStatus() {
        return status_;
      }
      /**
       * <pre>
       *任务状态，0未完成，1已完成，2已领取奖励
       * </pre>
       *
       * <code>int32 status = 3;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *任务状态，0未完成，1已完成，2已领取奖励
       * </pre>
       *
       * <code>int32 status = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbTask)
    }

    // @@protoc_insertion_point(class_scope:pb.PbTask)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbTask getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbPlayerExpOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbPlayerExp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 old_level = 1;</code>
     * @return The oldLevel.
     */
    int getOldLevel();

    /**
     * <code>int32 new_level = 2;</code>
     * @return The newLevel.
     */
    int getNewLevel();

    /**
     * <code>repeated int32 open_functions = 3;</code>
     * @return A list containing the openFunctions.
     */
    java.util.List<java.lang.Integer> getOpenFunctionsList();
    /**
     * <code>repeated int32 open_functions = 3;</code>
     * @return The count of openFunctions.
     */
    int getOpenFunctionsCount();
    /**
     * <code>repeated int32 open_functions = 3;</code>
     * @param index The index of the element to return.
     * @return The openFunctions at the given index.
     */
    int getOpenFunctions(int index);

    /**
     * <code>int64 curr_exp = 4;</code>
     * @return The currExp.
     */
    long getCurrExp();
  }
  /**
   * <pre>
   *PbThing.identity是角色经验的时候，data数据的反序列化就是PbPlayerExp，需要判断PbThing.data是否为空
   * </pre>
   *
   * Protobuf type {@code pb.PbPlayerExp}
   */
  public  static final class PbPlayerExp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbPlayerExp)
      PbPlayerExpOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbPlayerExp.newBuilder() to construct.
    private PbPlayerExp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbPlayerExp() {
      openFunctions_ = emptyIntList();
    }

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

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

              oldLevel_ = input.readInt32();
              break;
            }
            case 16: {

              newLevel_ = input.readInt32();
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                openFunctions_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              openFunctions_.addInt(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                openFunctions_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                openFunctions_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 32: {

              currExp_ = input.readInt64();
              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)) {
          openFunctions_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerExp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerExp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.Builder.class);
    }

    public static final int OLD_LEVEL_FIELD_NUMBER = 1;
    private int oldLevel_;
    /**
     * <code>int32 old_level = 1;</code>
     * @return The oldLevel.
     */
    public int getOldLevel() {
      return oldLevel_;
    }

    public static final int NEW_LEVEL_FIELD_NUMBER = 2;
    private int newLevel_;
    /**
     * <code>int32 new_level = 2;</code>
     * @return The newLevel.
     */
    public int getNewLevel() {
      return newLevel_;
    }

    public static final int OPEN_FUNCTIONS_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.IntList openFunctions_;
    /**
     * <code>repeated int32 open_functions = 3;</code>
     * @return A list containing the openFunctions.
     */
    public java.util.List<java.lang.Integer>
        getOpenFunctionsList() {
      return openFunctions_;
    }
    /**
     * <code>repeated int32 open_functions = 3;</code>
     * @return The count of openFunctions.
     */
    public int getOpenFunctionsCount() {
      return openFunctions_.size();
    }
    /**
     * <code>repeated int32 open_functions = 3;</code>
     * @param index The index of the element to return.
     * @return The openFunctions at the given index.
     */
    public int getOpenFunctions(int index) {
      return openFunctions_.getInt(index);
    }
    private int openFunctionsMemoizedSerializedSize = -1;

    public static final int CURR_EXP_FIELD_NUMBER = 4;
    private long currExp_;
    /**
     * <code>int64 curr_exp = 4;</code>
     * @return The currExp.
     */
    public long getCurrExp() {
      return currExp_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (oldLevel_ != 0) {
        output.writeInt32(1, oldLevel_);
      }
      if (newLevel_ != 0) {
        output.writeInt32(2, newLevel_);
      }
      if (getOpenFunctionsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(openFunctionsMemoizedSerializedSize);
      }
      for (int i = 0; i < openFunctions_.size(); i++) {
        output.writeInt32NoTag(openFunctions_.getInt(i));
      }
      if (currExp_ != 0L) {
        output.writeInt64(4, currExp_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (oldLevel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, oldLevel_);
      }
      if (newLevel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, newLevel_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < openFunctions_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(openFunctions_.getInt(i));
        }
        size += dataSize;
        if (!getOpenFunctionsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        openFunctionsMemoizedSerializedSize = dataSize;
      }
      if (currExp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, currExp_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp) obj;

      if (getOldLevel()
          != other.getOldLevel()) return false;
      if (getNewLevel()
          != other.getNewLevel()) return false;
      if (!getOpenFunctionsList()
          .equals(other.getOpenFunctionsList())) return false;
      if (getCurrExp()
          != other.getCurrExp()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OLD_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getOldLevel();
      hash = (37 * hash) + NEW_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getNewLevel();
      if (getOpenFunctionsCount() > 0) {
        hash = (37 * hash) + OPEN_FUNCTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOpenFunctionsList().hashCode();
      }
      hash = (37 * hash) + CURR_EXP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCurrExp());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *PbThing.identity是角色经验的时候，data数据的反序列化就是PbPlayerExp，需要判断PbThing.data是否为空
     * </pre>
     *
     * Protobuf type {@code pb.PbPlayerExp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbPlayerExp)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerExp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerExp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        newLevel_ = 0;

        openFunctions_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        currExp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerExp_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp(this);
        int from_bitField0_ = bitField0_;
        result.oldLevel_ = oldLevel_;
        result.newLevel_ = newLevel_;
        if (((bitField0_ & 0x00000001) != 0)) {
          openFunctions_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.openFunctions_ = openFunctions_;
        result.currExp_ = currExp_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp.getDefaultInstance()) return this;
        if (other.getOldLevel() != 0) {
          setOldLevel(other.getOldLevel());
        }
        if (other.getNewLevel() != 0) {
          setNewLevel(other.getNewLevel());
        }
        if (!other.openFunctions_.isEmpty()) {
          if (openFunctions_.isEmpty()) {
            openFunctions_ = other.openFunctions_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureOpenFunctionsIsMutable();
            openFunctions_.addAll(other.openFunctions_);
          }
          onChanged();
        }
        if (other.getCurrExp() != 0L) {
          setCurrExp(other.getCurrExp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int oldLevel_ ;
      /**
       * <code>int32 old_level = 1;</code>
       * @return The oldLevel.
       */
      public int getOldLevel() {
        return oldLevel_;
      }
      /**
       * <code>int32 old_level = 1;</code>
       * @param value The oldLevel to set.
       * @return This builder for chaining.
       */
      public Builder setOldLevel(int value) {
        
        oldLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 old_level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOldLevel() {
        
        oldLevel_ = 0;
        onChanged();
        return this;
      }

      private int newLevel_ ;
      /**
       * <code>int32 new_level = 2;</code>
       * @return The newLevel.
       */
      public int getNewLevel() {
        return newLevel_;
      }
      /**
       * <code>int32 new_level = 2;</code>
       * @param value The newLevel to set.
       * @return This builder for chaining.
       */
      public Builder setNewLevel(int value) {
        
        newLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 new_level = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNewLevel() {
        
        newLevel_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList openFunctions_ = emptyIntList();
      private void ensureOpenFunctionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          openFunctions_ = mutableCopy(openFunctions_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @return A list containing the openFunctions.
       */
      public java.util.List<java.lang.Integer>
          getOpenFunctionsList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(openFunctions_) : openFunctions_;
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @return The count of openFunctions.
       */
      public int getOpenFunctionsCount() {
        return openFunctions_.size();
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @param index The index of the element to return.
       * @return The openFunctions at the given index.
       */
      public int getOpenFunctions(int index) {
        return openFunctions_.getInt(index);
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @param index The index to set the value at.
       * @param value The openFunctions to set.
       * @return This builder for chaining.
       */
      public Builder setOpenFunctions(
          int index, int value) {
        ensureOpenFunctionsIsMutable();
        openFunctions_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @param value The openFunctions to add.
       * @return This builder for chaining.
       */
      public Builder addOpenFunctions(int value) {
        ensureOpenFunctionsIsMutable();
        openFunctions_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @param values The openFunctions to add.
       * @return This builder for chaining.
       */
      public Builder addAllOpenFunctions(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureOpenFunctionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, openFunctions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 open_functions = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearOpenFunctions() {
        openFunctions_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private long currExp_ ;
      /**
       * <code>int64 curr_exp = 4;</code>
       * @return The currExp.
       */
      public long getCurrExp() {
        return currExp_;
      }
      /**
       * <code>int64 curr_exp = 4;</code>
       * @param value The currExp to set.
       * @return This builder for chaining.
       */
      public Builder setCurrExp(long value) {
        
        currExp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 curr_exp = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCurrExp() {
        
        currExp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbPlayerExp)
    }

    // @@protoc_insertion_point(class_scope:pb.PbPlayerExp)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerExp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbPlayerVipExpOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbPlayerVipExp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 old_level = 1;</code>
     * @return The oldLevel.
     */
    int getOldLevel();

    /**
     * <code>int32 new_level = 2;</code>
     * @return The newLevel.
     */
    int getNewLevel();

    /**
     * <code>int64 curr_exp = 3;</code>
     * @return The currExp.
     */
    long getCurrExp();
  }
  /**
   * <pre>
   *PbThing.identity是角色vip经验的时候，data数据的反序列化就是PbPlayervipExp，需要判断PbThing.data是否为空
   * </pre>
   *
   * Protobuf type {@code pb.PbPlayerVipExp}
   */
  public  static final class PbPlayerVipExp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbPlayerVipExp)
      PbPlayerVipExpOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbPlayerVipExp.newBuilder() to construct.
    private PbPlayerVipExp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbPlayerVipExp() {
    }

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

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

              oldLevel_ = input.readInt32();
              break;
            }
            case 16: {

              newLevel_ = input.readInt32();
              break;
            }
            case 24: {

              currExp_ = input.readInt64();
              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 pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerVipExp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerVipExp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.Builder.class);
    }

    public static final int OLD_LEVEL_FIELD_NUMBER = 1;
    private int oldLevel_;
    /**
     * <code>int32 old_level = 1;</code>
     * @return The oldLevel.
     */
    public int getOldLevel() {
      return oldLevel_;
    }

    public static final int NEW_LEVEL_FIELD_NUMBER = 2;
    private int newLevel_;
    /**
     * <code>int32 new_level = 2;</code>
     * @return The newLevel.
     */
    public int getNewLevel() {
      return newLevel_;
    }

    public static final int CURR_EXP_FIELD_NUMBER = 3;
    private long currExp_;
    /**
     * <code>int64 curr_exp = 3;</code>
     * @return The currExp.
     */
    public long getCurrExp() {
      return currExp_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (oldLevel_ != 0) {
        output.writeInt32(1, oldLevel_);
      }
      if (newLevel_ != 0) {
        output.writeInt32(2, newLevel_);
      }
      if (currExp_ != 0L) {
        output.writeInt64(3, currExp_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (oldLevel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, oldLevel_);
      }
      if (newLevel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, newLevel_);
      }
      if (currExp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, currExp_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp) obj;

      if (getOldLevel()
          != other.getOldLevel()) return false;
      if (getNewLevel()
          != other.getNewLevel()) return false;
      if (getCurrExp()
          != other.getCurrExp()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OLD_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getOldLevel();
      hash = (37 * hash) + NEW_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getNewLevel();
      hash = (37 * hash) + CURR_EXP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCurrExp());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *PbThing.identity是角色vip经验的时候，data数据的反序列化就是PbPlayervipExp，需要判断PbThing.data是否为空
     * </pre>
     *
     * Protobuf type {@code pb.PbPlayerVipExp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbPlayerVipExp)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerVipExp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerVipExp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        newLevel_ = 0;

        currExp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbPlayerVipExp_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp(this);
        result.oldLevel_ = oldLevel_;
        result.newLevel_ = newLevel_;
        result.currExp_ = currExp_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp.getDefaultInstance()) return this;
        if (other.getOldLevel() != 0) {
          setOldLevel(other.getOldLevel());
        }
        if (other.getNewLevel() != 0) {
          setNewLevel(other.getNewLevel());
        }
        if (other.getCurrExp() != 0L) {
          setCurrExp(other.getCurrExp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int oldLevel_ ;
      /**
       * <code>int32 old_level = 1;</code>
       * @return The oldLevel.
       */
      public int getOldLevel() {
        return oldLevel_;
      }
      /**
       * <code>int32 old_level = 1;</code>
       * @param value The oldLevel to set.
       * @return This builder for chaining.
       */
      public Builder setOldLevel(int value) {
        
        oldLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 old_level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOldLevel() {
        
        oldLevel_ = 0;
        onChanged();
        return this;
      }

      private int newLevel_ ;
      /**
       * <code>int32 new_level = 2;</code>
       * @return The newLevel.
       */
      public int getNewLevel() {
        return newLevel_;
      }
      /**
       * <code>int32 new_level = 2;</code>
       * @param value The newLevel to set.
       * @return This builder for chaining.
       */
      public Builder setNewLevel(int value) {
        
        newLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 new_level = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNewLevel() {
        
        newLevel_ = 0;
        onChanged();
        return this;
      }

      private long currExp_ ;
      /**
       * <code>int64 curr_exp = 3;</code>
       * @return The currExp.
       */
      public long getCurrExp() {
        return currExp_;
      }
      /**
       * <code>int64 curr_exp = 3;</code>
       * @param value The currExp to set.
       * @return This builder for chaining.
       */
      public Builder setCurrExp(long value) {
        
        currExp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 curr_exp = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCurrExp() {
        
        currExp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbPlayerVipExp)
    }

    // @@protoc_insertion_point(class_scope:pb.PbPlayerVipExp)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbPlayerVipExp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbSceneOpeningOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbSceneOpening)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *对应配置ID， 根据不同业务系统读取不同配置
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> 
        getPayList();
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getPay(int index);
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    int getPayCount();
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
        getPayOrBuilderList();
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getPayOrBuilder(
        int index);
  }
  /**
   * <pre>
   *各种开启功能的结构数据
   * </pre>
   *
   * Protobuf type {@code pb.PbSceneOpening}
   */
  public  static final class PbSceneOpening extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbSceneOpening)
      PbSceneOpeningOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbSceneOpening.newBuilder() to construct.
    private PbSceneOpening(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbSceneOpening() {
      pay_ = java.util.Collections.emptyList();
    }

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

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

              id_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                pay_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem>();
                mutable_bitField0_ |= 0x00000001;
              }
              pay_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.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)) {
          pay_ = java.util.Collections.unmodifiableList(pay_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbSceneOpening_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbSceneOpening_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <pre>
     *对应配置ID， 根据不同业务系统读取不同配置
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    public int getId() {
      return id_;
    }

    public static final int PAY_FIELD_NUMBER = 2;
    private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> pay_;
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> getPayList() {
      return pay_;
    }
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
        getPayOrBuilderList() {
      return pay_;
    }
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    public int getPayCount() {
      return pay_.size();
    }
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getPay(int index) {
      return pay_.get(index);
    }
    /**
     * <pre>
     *已经缴纳的资源与数量
     * </pre>
     *
     * <code>repeated .pb.PbItem pay = 2;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getPayOrBuilder(
        int index) {
      return pay_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      for (int i = 0; i < pay_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, pay_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening) obj;

      if (getId()
          != other.getId()) return false;
      if (!getPayList()
          .equals(other.getPayList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      if (getPayCount() > 0) {
        hash = (37 * hash) + PAY_FIELD_NUMBER;
        hash = (53 * hash) + getPayList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *各种开启功能的结构数据
     * </pre>
     *
     * Protobuf type {@code pb.PbSceneOpening}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbSceneOpening)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpeningOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbSceneOpening_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbSceneOpening_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (payBuilder_ == null) {
          pay_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          payBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbSceneOpening_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening(this);
        int from_bitField0_ = bitField0_;
        result.id_ = id_;
        if (payBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            pay_ = java.util.Collections.unmodifiableList(pay_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.pay_ = pay_;
        } else {
          result.pay_ = payBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        if (payBuilder_ == null) {
          if (!other.pay_.isEmpty()) {
            if (pay_.isEmpty()) {
              pay_ = other.pay_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePayIsMutable();
              pay_.addAll(other.pay_);
            }
            onChanged();
          }
        } else {
          if (!other.pay_.isEmpty()) {
            if (payBuilder_.isEmpty()) {
              payBuilder_.dispose();
              payBuilder_ = null;
              pay_ = other.pay_;
              bitField0_ = (bitField0_ & ~0x00000001);
              payBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPayFieldBuilder() : null;
            } else {
              payBuilder_.addAllMessages(other.pay_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int id_ ;
      /**
       * <pre>
       *对应配置ID， 根据不同业务系统读取不同配置
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return The id.
       */
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       *对应配置ID， 根据不同业务系统读取不同配置
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对应配置ID， 根据不同业务系统读取不同配置
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> pay_ =
        java.util.Collections.emptyList();
      private void ensurePayIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          pay_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem>(pay_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> payBuilder_;

      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> getPayList() {
        if (payBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pay_);
        } else {
          return payBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public int getPayCount() {
        if (payBuilder_ == null) {
          return pay_.size();
        } else {
          return payBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getPay(int index) {
        if (payBuilder_ == null) {
          return pay_.get(index);
        } else {
          return payBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder setPay(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (payBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePayIsMutable();
          pay_.set(index, value);
          onChanged();
        } else {
          payBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder setPay(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (payBuilder_ == null) {
          ensurePayIsMutable();
          pay_.set(index, builderForValue.build());
          onChanged();
        } else {
          payBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder addPay(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (payBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePayIsMutable();
          pay_.add(value);
          onChanged();
        } else {
          payBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder addPay(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (payBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePayIsMutable();
          pay_.add(index, value);
          onChanged();
        } else {
          payBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder addPay(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (payBuilder_ == null) {
          ensurePayIsMutable();
          pay_.add(builderForValue.build());
          onChanged();
        } else {
          payBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder addPay(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (payBuilder_ == null) {
          ensurePayIsMutable();
          pay_.add(index, builderForValue.build());
          onChanged();
        } else {
          payBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder addAllPay(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> values) {
        if (payBuilder_ == null) {
          ensurePayIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, pay_);
          onChanged();
        } else {
          payBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder clearPay() {
        if (payBuilder_ == null) {
          pay_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          payBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public Builder removePay(int index) {
        if (payBuilder_ == null) {
          ensurePayIsMutable();
          pay_.remove(index);
          onChanged();
        } else {
          payBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder getPayBuilder(
          int index) {
        return getPayFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getPayOrBuilder(
          int index) {
        if (payBuilder_ == null) {
          return pay_.get(index);  } else {
          return payBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
           getPayOrBuilderList() {
        if (payBuilder_ != null) {
          return payBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pay_);
        }
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder addPayBuilder() {
        return getPayFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance());
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder addPayBuilder(
          int index) {
        return getPayFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance());
      }
      /**
       * <pre>
       *已经缴纳的资源与数量
       * </pre>
       *
       * <code>repeated .pb.PbItem pay = 2;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder> 
           getPayBuilderList() {
        return getPayFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
          getPayFieldBuilder() {
        if (payBuilder_ == null) {
          payBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder>(
                  pay_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          pay_ = null;
        }
        return payBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbSceneOpening)
    }

    // @@protoc_insertion_point(class_scope:pb.PbSceneOpening)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbSceneOpening getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbKeyVOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbKeyV)
      com.google.protobuf.MessageOrBuilder {

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

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

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

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

              key_ = input.readInt32();
              break;
            }
            case 16: {

              value_ = 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 pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbKeyV_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbKeyV_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    private int key_;
    /**
     * <code>int32 key = 1;</code>
     * @return The key.
     */
    public int getKey() {
      return key_;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private int value_;
    /**
     * <code>int32 value = 2;</code>
     * @return The value.
     */
    public int getValue() {
      return value_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (key_ != 0) {
        output.writeInt32(1, key_);
      }
      if (value_ != 0) {
        output.writeInt32(2, value_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (key_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, key_);
      }
      if (value_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV) obj;

      if (getKey()
          != other.getKey()) return false;
      if (getValue()
          != other.getValue()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + KEY_FIELD_NUMBER;
      hash = (53 * hash) + getKey();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getValue();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbKeyV}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbKeyV)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbKeyV_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbKeyV_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        value_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbKeyV_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV(this);
        result.key_ = key_;
        result.value_ = value_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.getDefaultInstance()) return this;
        if (other.getKey() != 0) {
          setKey(other.getKey());
        }
        if (other.getValue() != 0) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int key_ ;
      /**
       * <code>int32 key = 1;</code>
       * @return The key.
       */
      public int getKey() {
        return key_;
      }
      /**
       * <code>int32 key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(int value) {
        
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        
        key_ = 0;
        onChanged();
        return this;
      }

      private int value_ ;
      /**
       * <code>int32 value = 2;</code>
       * @return The value.
       */
      public int getValue() {
        return value_;
      }
      /**
       * <code>int32 value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(int value) {
        
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        
        value_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbKeyV)
    }

    // @@protoc_insertion_point(class_scope:pb.PbKeyV)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbAttrOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbAttr)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>int64 value = 2;</code>
     * @return The value.
     */
    long getValue();
  }
  /**
   * Protobuf type {@code pb.PbAttr}
   */
  public  static final class PbAttr extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbAttr)
      PbAttrOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbAttr.newBuilder() to construct.
    private PbAttr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbAttr() {
    }

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

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

              attrId_ = input.readInt32();
              break;
            }
            case 16: {

              value_ = input.readInt64();
              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 pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbAttr_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbAttr_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder.class);
    }

    public static final int ATTRID_FIELD_NUMBER = 1;
    private int attrId_;
    /**
     * <code>int32 attrId = 1;</code>
     * @return The attrId.
     */
    public int getAttrId() {
      return attrId_;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private long value_;
    /**
     * <code>int64 value = 2;</code>
     * @return The value.
     */
    public long getValue() {
      return value_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (attrId_ != 0) {
        output.writeInt32(1, attrId_);
      }
      if (value_ != 0L) {
        output.writeInt64(2, value_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (attrId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, attrId_);
      }
      if (value_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr other = (pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr) obj;

      if (getAttrId()
          != other.getAttrId()) return false;
      if (getValue()
          != other.getValue()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ATTRID_FIELD_NUMBER;
      hash = (53 * hash) + getAttrId();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getValue());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbAttr}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbAttr)
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbAttr_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbAttr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.class, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        value_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.internal_static_pb_PbAttr_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr build() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr buildPartial() {
        pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr result = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr(this);
        result.attrId_ = attrId_;
        result.value_ = value_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr other) {
        if (other == pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance()) return this;
        if (other.getAttrId() != 0) {
          setAttrId(other.getAttrId());
        }
        if (other.getValue() != 0L) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int attrId_ ;
      /**
       * <code>int32 attrId = 1;</code>
       * @return The attrId.
       */
      public int getAttrId() {
        return attrId_;
      }
      /**
       * <code>int32 attrId = 1;</code>
       * @param value The attrId to set.
       * @return This builder for chaining.
       */
      public Builder setAttrId(int value) {
        
        attrId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 attrId = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAttrId() {
        
        attrId_ = 0;
        onChanged();
        return this;
      }

      private long value_ ;
      /**
       * <code>int64 value = 2;</code>
       * @return The value.
       */
      public long getValue() {
        return value_;
      }
      /**
       * <code>int64 value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(long value) {
        
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        
        value_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbAttr)
    }

    // @@protoc_insertion_point(class_scope:pb.PbAttr)
    private static final pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr();
    }

    public static pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbThing_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbThing_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbThingReceipt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbThingReceipt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbItem_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbItem_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbTask_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbTask_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbPlayerExp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbPlayerExp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbPlayerVipExp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbPlayerVipExp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbSceneOpening_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbSceneOpening_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbKeyV_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbKeyV_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbAttr_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbAttr_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\020MiniStruct.proto\022\002pb\"6\n\007PbThing\022\020\n\010ide" +
      "ntity\030\001 \001(\005\022\013\n\003num\030\002 \001(\003\022\014\n\004data\030\003 \001(\014\"-" +
      "\n\016PbThingReceipt\022\033\n\006things\030\001 \003(\0132\013.pb.Pb" +
      "Thing\"#\n\006PbItem\022\014\n\004item\030\001 \001(\005\022\013\n\003num\030\002 \001" +
      "(\003\"6\n\006PbTask\022\n\n\002id\030\001 \001(\005\022\020\n\010progress\030\002 \001" +
      "(\003\022\016\n\006status\030\003 \001(\005\"]\n\013PbPlayerExp\022\021\n\told" +
      "_level\030\001 \001(\005\022\021\n\tnew_level\030\002 \001(\005\022\026\n\016open_" +
      "functions\030\003 \003(\005\022\020\n\010curr_exp\030\004 \001(\003\"H\n\016PbP" +
      "layerVipExp\022\021\n\told_level\030\001 \001(\005\022\021\n\tnew_le" +
      "vel\030\002 \001(\005\022\020\n\010curr_exp\030\003 \001(\003\"5\n\016PbSceneOp" +
      "ening\022\n\n\002id\030\001 \001(\005\022\027\n\003pay\030\002 \003(\0132\n.pb.PbIt" +
      "em\"$\n\006PbKeyV\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\005" +
      "\"\'\n\006PbAttr\022\016\n\006attrId\030\001 \001(\005\022\r\n\005value\030\002 \001(" +
      "\003B:\n pb.xiugou.x1.protobuf.ministruct\252\002\025" +
      "pb.xiugou.x1.protobufb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_pb_PbThing_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_pb_PbThing_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbThing_descriptor,
        new java.lang.String[] { "Identity", "Num", "Data", });
    internal_static_pb_PbThingReceipt_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_pb_PbThingReceipt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbThingReceipt_descriptor,
        new java.lang.String[] { "Things", });
    internal_static_pb_PbItem_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_pb_PbItem_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbItem_descriptor,
        new java.lang.String[] { "Item", "Num", });
    internal_static_pb_PbTask_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_pb_PbTask_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbTask_descriptor,
        new java.lang.String[] { "Id", "Progress", "Status", });
    internal_static_pb_PbPlayerExp_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_pb_PbPlayerExp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbPlayerExp_descriptor,
        new java.lang.String[] { "OldLevel", "NewLevel", "OpenFunctions", "CurrExp", });
    internal_static_pb_PbPlayerVipExp_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_pb_PbPlayerVipExp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbPlayerVipExp_descriptor,
        new java.lang.String[] { "OldLevel", "NewLevel", "CurrExp", });
    internal_static_pb_PbSceneOpening_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_pb_PbSceneOpening_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbSceneOpening_descriptor,
        new java.lang.String[] { "Id", "Pay", });
    internal_static_pb_PbKeyV_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_pb_PbKeyV_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbKeyV_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_pb_PbAttr_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_pb_PbAttr_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbAttr_descriptor,
        new java.lang.String[] { "AttrId", "Value", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
